Selaimen automatisointi linux ?
Tämä on osoittautunut linuxin suurimmaksi puutteeksi.
Siinä missä tämä on windowsissa helppoa esim. Delphi7:llä, jossa käytetään MS-IE:n ActiveX -komponenttiversiota, joka on impotoitu Delphiin siten, että Delhin kannalta se toimii kuin normaali Delphi -komponentti ( TWebBrowser ), ei linuxissa vastaava onnistu mitenkään FreePascal Lazarus -yhdistelmällä, kuten ei myöskään Kylix3:lla.
Seuraavaksi tuli mieleen, entäpä, jos unohtaisi tuon ratkaisumallin, tekisi ohjelman Delphillä ja yrittäisi ajaa sitä Wine:llä.
Ohjelma toki käynnistyy, mutta moni asia ei sitten toimikaan:
1. Yritys rekisteröidä "Global Keyboard hook" virheilmoittaa seutaavaa:
mika0800@amd2300:~/d7app$ wine BrowseA.exe
fixme:keyboard:RegisterHotKey (0x10026,1,0x00000000,181): stub
eli wine:n "toteutus" sisältää tyhjän proseduurirungon, joka muodollisesti tyydyttää riippuvuuden, muttei tee mitään !
sen lisäksi:
ohjelmani tekemä funktiokutsu:
Browser1.Navigate(WideString(aURL);
toimii kyllä, mutta sen jälkeiset asiat eivät sitten toimikaan.
Ohjelmani nimittäin yrittää hakea viitettä ladatun html -sivun formiin ja edelleen sillä oleviin input -kenttiin sekä formin lähetysnappiin, jotta Delphi -ohjelma voisi täyttää html -formin input -kentät halutulla informaatiolla ja simuloida formin lähetä -painikkeen painalluksen.
Ikävä kyllä näihin toimintoihin tarvittavat ominaisuudet puuttuvat wine:n tarjoamasta ajoympäristöstä, jolloin windows2000:ssa ja Windows98:ssa moitteettomasti toimiva Delphi7:lla tehty ohjelma ei toimi järkevällä tavalla kubuntu 7.10:ssä wine:n alaisuudessa.
Virtuaalikoneestako ratkaisu?
Ikävä kyllä VirtualBox kaatuu usein (siihen asennettuna Windows2000).
Lisäksi yritys käyttää yhteistä leiketaulua windowsissa ja linuxissa (VirtualBox mahdollistaa tämän) sotkee linuxin leiketaulun käyttökelvottomaksi.
Toivatko muut virtuaalioneet kuin VirtualBox yhtään sen paremmin ?
Tai onko olemassa paremmin tehtyä windows -emulaattoria linuxille kuin wine, joka ei käytännössä pysty ajamaan kuin kaikkein yksinkertaisimpia windowsohjelmia.
huom: en onnistunut asentama
Tämä on osoittautunut linuxin suurimmaksi puutteeksi.
Siinä missä tämä on windowsissa helppoa esim. Delphi7:llä, jossa käytetään MS-IE:n ActiveX -komponenttiversiota, joka on impotoitu Delphiin siten, että Delhin kannalta se toimii kuin normaali Delphi -komponentti ( TWebBrowser ), ei linuxissa vastaava onnistu mitenkään FreePascal Lazarus -yhdistelmällä, kuten ei myöskään Kylix3:lla.
Seuraavaksi tuli mieleen, entäpä, jos unohtaisi tuon ratkaisumallin, tekisi ohjelman Delphillä ja yrittäisi ajaa sitä Wine:llä.
Ohjelma toki käynnistyy, mutta moni asia ei sitten toimikaan:
1. Yritys rekisteröidä "Global Keyboard hook" virheilmoittaa seutaavaa:
mika0800@amd2300:~/d7app$ wine BrowseA.exe
fixme:keyboard:RegisterHotKey (0x10026,1,0x00000000,181): stub
eli wine:n "toteutus" sisältää tyhjän proseduurirungon, joka muodollisesti tyydyttää riippuvuuden, muttei tee mitään !
sen lisäksi:
ohjelmani tekemä funktiokutsu:
Browser1.Navigate(WideString(aURL);
toimii kyllä, mutta sen jälkeiset asiat eivät sitten toimikaan.
Ohjelmani nimittäin yrittää hakea viitettä ladatun html -sivun formiin ja edelleen sillä oleviin input -kenttiin sekä formin lähetysnappiin, jotta Delphi -ohjelma voisi täyttää html -formin input -kentät halutulla informaatiolla ja simuloida formin lähetä -painikkeen painalluksen.
Ikävä kyllä näihin toimintoihin tarvittavat ominaisuudet puuttuvat wine:n tarjoamasta ajoympäristöstä, jolloin windows2000:ssa ja Windows98:ssa moitteettomasti toimiva Delphi7:lla tehty ohjelma ei toimi järkevällä tavalla kubuntu 7.10:ssä wine:n alaisuudessa.
Virtuaalikoneestako ratkaisu?
Ikävä kyllä VirtualBox kaatuu usein (siihen asennettuna Windows2000).
Lisäksi yritys käyttää yhteistä leiketaulua windowsissa ja linuxissa (VirtualBox mahdollistaa tämän) sotkee linuxin leiketaulun käyttökelvottomaksi.
Toivatko muut virtuaalioneet kuin VirtualBox yhtään sen paremmin ?
Tai onko olemassa paremmin tehtyä windows -emulaattoria linuxille kuin wine, joka ei käytännössä pysty ajamaan kuin kaikkein yksinkertaisimpia windowsohjelmia.
huom: en onnistunut asentama
Vastaukset 10
Vanhimmat
"Ohjelmani nimittäin yrittää hakea viitettä ladatun html -sivun formiin ja edelleen sillä oleviin input -kenttiin sekä formin lähetysnappiin, jotta Delphi -ohjelma voisi täyttää html -formin input -kentät halutulla informaatiolla ja simuloida formin lähetä -painikkeen painalluksen."
Jes, eli miksi etelän mies yrität tehdä asioita liian vaikeaksi? Selaimen automatisointi kuulostaa juuri niin järjettömältä kuin perus Visual Basic-koodari sen ratkaisee. (Sori, mutta näin se vain tahtoo olla)
http://thedailywtf.com
HTTP-protokollassa on kaksi kutsua GET ja POST joilla molemmilla pystyy välittämään lomakkeiden tiedot. Kullakin sivulla käytettävä kutsu käy ilmi FORM-tagista. Suurimmalle osalle ohjelmointikielistä löytyy valmiit HTTP-protokollan osaavat kirjastot, joilla homma hoituu helposti.
Homman tekee vaikka Bash-skriptillä, wgetillä ja sedillä, jos haluaa päästä oikein helpolla.
Opiskele ensin HTTP-protokolla ja ajattelet sitten ongelmasi uudelleen. Vinkki: Unohda kuinka sivun lataaminen tehdään www-selaimen käyttöliittymässä, ajattele kuinka se menee ohjelman/protokollan tasolla...
http://www.jmarshall.com/easy/http/#toc
"Opiskele ensin HTTP-protokolla ja ajattelet sitten ongelmasi uudelleen. Vinkki: Unohda kuinka sivun lataaminen tehdään www-selaimen käyttöliittymässä, ajattele kuinka se menee ohjelman/protokollan tasolla..."
ja perlillä loput. Mihin v**ttuun siinä selainta tarvitaan?
Kerros muuten mitä yrität saada aikaiseksi, niin ehkä ratkaisu on helpompi kuin luuletkaan...
gambas:ssa ja gambas2:ssa on web-selain elementti jota on helppo ohjata. käyttää konqueroria.
mutta tämä on tietysti aivan liian helppo ratkaisu, kun haluat tehdä aina mahdollisimman sekavan purkkavirityksen :)
Älä mene perse edellä puuhun.
Tee se linux versio ensin, se toimii winkkarissakin.
Vaikka toteutus olisi erittäin simppeli, missään muualla kuin Microsoftilla ei ole edes harkittu ActiveXn kaltaisen pommin virittämistä selaimeen. Sellaista siinä ei yksinkertaisesti SAA OLLA.
"Vaikka toteutus olisi erittäin simppeli, missään muualla kuin Microsoftilla ei ole edes harkittu ActiveXn kaltaisen pommin virittämistä selaimeen. Sellaista siinä ei yksinkertaisesti SAA OLLA."
Tämän kirjoittajalla on ilmeisesti vaikeuksia ymmärtää, mitä eroa on näillä kahdella ActiveX -teknologian käyttötavalla:
1. Selain on ActiveX -isäntä, jossa ajetaan nettisivun siältämä ActiveX -komponentti.
Tässä ratkaisussa tosiaan on tietoturvasyistä syytä miettiä, mille ActiveX:lle annetaan ajo-oikeus (linuxissa tosin normaaleja tiedostojen omistaja/ryhmä/maailma -oikeustasoja voisi hyödyntää ajamalla tämäntapaiset ActiveX:t esim. tunnuksella any_activex, jolla oletuksena ei ole kirjoitusoikeuksia mihinkään, jollei sellaisia ole erikseen myönnetty).
2. Selain on ActiveX -komponentti, isäntänä toimii omatekoinen Delphillä tehty ohjelma.
Tässä tapauksessa: ei se selain ole tietoturvaltaan sen vaarallisempi kuin esim. TMemo tai vaikkapa TFileDialog.
Näillä 2:lla on siis iso ero, koska vain 1. kohdassa ajetaan nettisivun viittaamaa ActiveX:ää, jonka tekijäkin voi olla tuntematon.
kohdassa 2 näin ei ole, vaan esim. Delphin TWebBrowser:in tapauksessa ActiveX -komponentin tekijä on Microsoft.
Teoriassa ongelmaa voisi tosiaan lähestyä myös tekemällä ohjelma suoraan HTTP:tä ja GET / POST -toimintoa tukevaksi.
Valitettavasti tässä on useita vaikeuksia:
1. html -koodi on itse tulkattava, samoin mahd. sivulla oleva esim. JavaScript. Ja nämä voivat muuttua!
2. esim. JavaScriptin muuttuessa palvelinpäässä usein, selainpohjainen ratkaisu on ainoa järkevä, muu johtaa huomattavan isoon työmäärään kerta toisensa jälkeen!
Eli kyllä ActiveX on erittäin pätevä idea, pitivät eräät linuxkoodarit siitä tai eivät!
Tarvittaisiin siis
JOKO:
toimiva wine tai vastaava, joka mahdollistaa saman toiminnallisuuden kuin MS-IE:n ActiveX -komponenttiversio
TAI:
VirtualBoxia luotettavampi vaihtoehto windowsin ajamiseen Linux -koneessa pyörivässä virtuaalikoneessa, tässähän pitäisi Delphi -ohjelmien toimia aivan kuin windowsissakin (poikkeuksena se, että joihinkin laitteisiin, kuten sarjaportit, IR-portit sekä esim. puhelinten USB -datakaapelit, ei välttämättä ole pääsyä virtuaalikoneesta käsin).
linux nyt ei vain sovi ihan kaikenlaisille ihmisille. sinä olet malliesimerkki ihmisestä, kenen ei kannata edes harkita linuxia!
Vaikka tietotekniikka ei olekaan kovin monimutkaista niin ei se näin yksinkertaista kuitenkaan ole.
Aloittelijoille saattaa helposti syntyä käsitys että ActiveXn tapainen tekniikka olisi jotenkin käyttökelpoinen. Jos näin olisi, se olisi jossain muodossa käytössä kaikilla koska toteutustapa on suorastaan triviaali. Muut ovat kuitenkin ymmärtäneet että ihan joka paikassa ei voi oikaista vaikka se tuntuisi kuinka houkuttelevalta.
Suurin puutteeni on, että vaimoni ei ole seksikäs mulatti.
Viini on taas juotavaa eikä mikään windows-riippuvaisten pelastusrengas.