Kun windows löytyy DDE, ADO sun muuta... Mien linuxsissa saa vastaavia tiedonsiirto operaatioita?
Linux tiedonsiirto ohjelmien välillä?
Miten toteutetaan
11754
0Äänestä
Muut lukivat myös
Odottaa vastausta
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 11
Vanhimmat
Vaikka Unix sockets tai D-Bus.
Minä en ole juurikaan Windows-ohjelmointia tehnyt lukuunottamatta opiskeluun kuulunutta .Net C# kurssia minkä oon suorittanut. Ohjelmointikokemus on enempi Symbian, j2se, j2me ja linux puolelta. Eli en ole hirveän hyvin perillä Windows-tekniikoista ohjelmoijan kannalta. Mutta haetko sä siis jotakin nimenomaan ADO:n ja DDE:n tapasta, vai yleistä IPC (inter process communication) systeemiä?
Siis ADO (ActiveX data Objects) on siis tarkotettu tietokantayhteyksien muodostamiseen ilman, että sovelluksen tarvitsee tietää yksityiskohtia tietokannasta tai miten se on toteutettu. ADO ei siis käsittääkseni ole tarkotettu yleiseen prosessien väliseen kommunikointiin.
DDE (Dynamic Data Exchange), sitähän tässä kai haetaan? on systeemi jossa ohjelmat voi rekisteröityä DDE-systeemiin sovellusnimellä ja sitten muut DDE:tä käyttävät ohjelmat voi kysyä ohjelman nimen ja parin muun pyyntöparametrin avuklla jotain tietoa joltain sovellukselta. Esimerkiksi taulukkolaskentaohhjelman kaaviodata voidaan jakaa tuolla toiselle ohjelmalle. DDE on enimäkseen vanhentunut tekniikka minkä on korvannut OLE ja COM jne teknikkat.
eli ohjelman ajonaikaista tiedonsiirtoa toiselle ohjelmalle. Vähän niin kuin ohjelmien välinen chatti.
Sillon pätee toi mitä sanoin tossa mun "Yleinen IPC"-viestissä. IPC tarkottaa siis ohjelmien, tai prosessien, välistä kommunikaatiota.
Vaihtoehdot on sillon:
-putket
-soketit
-D-Bus
Jos Englanninkieli ei ole sulle ongelma, niin suosittelen sua lukemaan esimerkiksi nämä EVTEK:n erään ohjelmointikurssin matskut läpi:
http://users.evtek.fi/~hannuvl/ke08/reaaliaika_ohj.htm
Noissa ei valitettavasti ole kaikkia esimerkkejä, koska ne on jaettu vain tunneilla. Noi ei myöskään kaikilta osin näy ihan oikein openOfficella, alareunasta voi jäädä pikasen näkymättä joillakin kohdin. Mutta enimmäkseen noista saa hyvän kuvan siitä miten homma toimii.
:-)
Jos haet yleistä IPC (inter process communication) systeemiä, niin yksinkertasin tapa siirtää dataa ohjelmien välillä on putki (pipe). Putkesta on esimerkkinä vaikkapa seuraava
$ la -l | grep 2007
Tuo listaa kaikki hakemistossa olevat tiedostot ja hakemistot, joiden päiväyksessä on vuosi 2007 (tai nimessä on merkkijono 2007). Tuo hyvin yksinkertanen esimerkki käyttää hyväkseen putkea, joka näkyy rivillä | -merkkinä.
Ohjelmoija voi avata omassa ohjelmassaan putken kahden prosessin välille ja sitä voi sitten käyttää tiedonsiirtoon tai vaikkapa prosessein tahdistukseen.
Muita tapoja IPC:n hoitamiseen on esim. soketit. Nykyään hyvin yleisesti käytetty on D-Bus. Lisäksi on olemassa muitakin IPC-kirjastoja.
"$ la -l | grep 2007 "
Tämän piti toki olla:
$ ls -l | grep 2007
Sen perusteella miten olen Windowsin ADO:n (ActiveX Data Objects) ymmärtänyt, niin eräs lähimmistä vastineista ADO:lle on Linuxissa käsittääkseni GDA (Gnome Data Access) ja GDA:n rinnalla käytettävä libgnomedb.
GDA tarjoaa ADO:n tapaan tietokantayhteyden tietokantaan ilman, että ohjelman tarvitsee tietää onko siellä taustalla esim mysql -palvelin tai postgresql-palvelin, sqliteen perustuva toteutus tai käytetäänkö odbc:n kautta jotain muuta palvelinta.
libgnomedb tarjoaa käyttöliittymäkomponentteja GDA-ohjelmile.
Esim jos Gnome-työpöydällä käynnistetään asetusohjelma:
System -> Preferences -> Database Access properties,
niin tuo asetusohjelma liittyy nimenomaan GDA:han.
Esimerkiksi Debianissa tarvittavat kehityskamat voi asentaa näin:
GDA:
Backendit:
# apt-get install libgda3-mysql
# apt-get install libgda3-postgres
# apt-get install libgda3-sqlite
# apt-get install libgda3-odbc
C-kehitykseen:
# apt-get install libgda3-dev
# apt-get install libgda3-doc
C -kehitykseen:
# apt-get install libgdamm3.0-dev
# apt-get install libgdamm3.0-doc
libgnomedb:
Asetusohjelma:
# apt-get install libgnomedb3-bin
Kehityskamat:
# apt-get install libgnomedb3-dev
# apt-get install libgnomedb3-doc
# apt-get install libgnomedb3-glade3
# apt-get install libgnomedb3-glade2
kahden viimeisen tarve riippuu siitä käytetäänkö käyttöliittymän suunnittelussa gladea ja k'äytetäänkö gladen versiota 2 bai 3.
Niin tuo ohje pätee suoraan Debian Lennyyn. Etchissä on GDA2 Lennyn GDA3:n sijasta, myös libgnomedb on vanhempi versio. Mutta Lennylle kamat asennetaan pohjimmiltaan samoin. Synapticilla kun hakee gda:ta ja libgnomedb:tä, niin vastaavat paketit löytyy Etchistäkin.
Niin tuo ohje pätee suoraan Debian Lennyyn. Etchissä on GDA2 Lennyn GDA3:n sijasta, myös libgnomedb on vanhempi versio. Mutta Etchille kamat asennetaan pohjimmiltaan samoin. Synapticilla kun hakee gda:ta ja libgnomedb:tä, niin vastaavat paketit löytyy Etchistäkin.
miten onnistun siirtämään win ohjelmalla talletetut kuvani nyt harjottelemani Linux koneelle? Nuoriman lapseni kotoa muuttaessa hän jätti yli 10v sitten wanhan windows in opin sähköpostin nettipankin jne;kuukausi sitten sain lahjaksi Linux minin,tämä toimii kuin wanha junan vessa,yhtä varma,mutta kuvien siirto win koneen muisti tikuilta siirtoa en osaa,soitin lapsen lapselleni,hänkään ei osannut neuvoa.