Resource fájlok eclipse plugin extension-ben

Aki fejlesztett már Eclipse PDE felett, az talán találkozott a lehetőséggel, hogy egy extension point tulajdonság típusa lehet “resource” is. Ez annyit tesz, hogy a kiterjesztésben megadhatunk egy, a plugin-nel csomagolt fájlt. De a másik oldalon, az extension point beolvasásakor hogyan is olvassuk ezt be? Hiszen fogalmunk sincs honnan jött, melyik plugin adja az extension-t, és hol keressük a fájlt. A megoldás nem triviális, és kell egy kis kutatást végezni, hogy rájöjjünk. Én ezt megtettem, és igyekszem közérthető formában továbbadni.

Aki fejlesztett már Eclipse PDE felett, az talán találkozott a lehetőséggel, hogy egy extension point tulajdonság típusa lehet “resource” is. Ez annyit tesz, hogy a kiterjesztésben megadhatunk egy, a plugin-nel csomagolt fájlt. De a másik oldalon, az extension point beolvasásakor hogyan is olvassuk ezt be? Hiszen fogalmunk sincs honnan jött, melyik plugin adja az extension-t, és hol keressük a fájlt. A megoldás nem triviális, és kell egy kis kutatást végezni, hogy rájöjjünk. Én ezt megtettem, és igyekszem közérthető formában továbbadni.

A probléma, kicsit formálisabban: adott egy extension point, melyen egyik attributúma resource típusú. Mikor egy plugin extension-t csatol ehhez a ponthoz, az adott attríbutúmnak úgy ad értéket, hogy a programozó kiválaszt egy fájlt, amit a pluginnel együtt csomagolva ad. Az extension point-ot adó plugin pedig az ilyen módon regisztrált fájlokat szeretné beolvasni.

Amikor beolvassuk ezt az értéket az extension-ből, a fájl relatív elérési útvonalát kapjuk meg a plugin csomagjában. Első feladatunk tehát, megtalálni a plugin csomagot ([[http://www.osgi.org/javadoc/r4v41/org/osgi/framework/Bundle.html|Bundle]]), ahonnan az extension jött, hiszen abban kell keresni a fájlt is. Ha megvan a csomag, kérhetünk tőle egy URL-t a fájlhoz. A kapott URL azonban nem szokványos, “bundleresource:” előtaggal rendelkezik. Korábban létezett egy asLocalUrl() függvény, ami az ilyen jellegű URL-t hivatott átalakítani abszolút “file:” URL-é. Azonban ez a függvény a 3.2-es verzióban @Deprecated megjegyzést kapott, tehát ez nem a megfelelő mód a megnyitásra. Szerencsére azonban az ilyen URL-ekhez implementálták az URL.openStream() metódust, ami nyit egy megfelelő adatfolyamot a számunkra. Kicsit egyszerűsítve a kód valahogy így néz ki:


//Listázzuk az extension point-hoz csatolt extension-öket:
IExtensionRegistry registry = Platform.getExtensionRegistry();
IExtensionPoint point = registry.getExtensionPoint("ExtensionPointID");
for (IExtension extension : point.getExtensions()){
//Így kell lekérni az extension-t adó plugin csomagot:
Bundle bundle = Platform.getBundle(extension.getNamespaceIdentifier());
for (IConfigurationElement element : extension.getConfigurationElements()){
//A csomagon belüli relatív elérési út:
String path = element.getAtribute("resourceAttrib");
URL url = bundle.getResource(path);
InputStream is = url.openStream();
//...Olvasás...
}
}

PdfLatex – eps fájlok kezelése 2. felvonás

Lassan be kell adni a diplomatervet, szóval ideje megírni a hiányzó részeket. Ok, kicsit csalok a dolog kapcsán, hogy én az őszi TDK-mat bővítem ki/írom át diplomatervvé. Ezért még olyan nagyon nem vagyok elkésve.

A korábbi tapasztalatok alapján nekiálltam, hogy először is frissítsek egy keveset a munkakörnyezetemen. Komoly probléma volt a TDK beadás környékén, hogy egy-egy fordítás egy-két percig tartott. Amikor trial and error módon próbálja az ember a hibákat javítani, akkor hasznos, ha ennél gyorsabb.

Némi kutatás, illetve intelligencia után előkerült a probléma: régebben már itt is leírtam, akkor az eps fájlokból generált fájlokat átmásoltam a temp mappába, mondván, ott jó helyük van. A helyzet az, hogy hála ennek a sornak, a későbbi fordításokkor is mindig újra kellett generálni a pdf fájlokat, nem vette észre, hogy megvannak, és nem változtak.

Most kihagytam ezt a kimeneti mappa beállítást, és így már nincs szükség erre az újrafordításra.

Sőt, sikerült még tovább egyszerűsítenem a képbeillesztési folyamatot: nincs szükség a .eps kiterjesztés megadására a \includegraphics{csp} hívásnál – a program megfelelően kitalálja. Az epstopdf csomagra attól még szükség van!

És ami még szebb: lehet definiálni egy alapértelmezett mappát a képek kereséséhez, hogy ne kelljen a „../img/csp” jellegű módon hivatkozni minden egyes képre:

\graphicspath{{../img/}}

Fontos! Az itt megadott útvonal végére kell a “/” jel, ugyanis egyszerű stringkonkatenáció történik a háttérben. El lehet kezdeni keresni a hibát, ha az ember ezt nem tudja.

Hogy muzsikál ez az új rendszer SVNnel párosítva? Majd az idő eldönti. De a gyorsított fordítás sokat ér a trial and error fázisban. 😀

Projektbemutató videóval

Úgy néz ki, egyelőre Balage Debug Visualisation projektje még fut egy darabig, nem ért véget azzal, hogy megkapta rá a jegyét. Nemrég volt egy újabb release, most pedig én egy régi ígéretemnek tettem eleget, és készítettem hozzá egy bemutató videót.

A videó nagyon egyszerű: megmutatom, hogy egy komplex debug eljárás esetén (hiszen egy másik Eclipse példányban futtatott plugin projektet tesztelek vele) hogyan használható ez a plugin.

Mindenesetre jöjjön a lényeg:

Úgy néz ki, egyelőre Balage Debug Visualisation projektje még fut egy darabig, nem ért véget azzal, hogy megkapta rá a jegyét. Nemrég volt egy újabb release, most pedig én egy régi ígéretemnek tettem eleget, és készítettem hozzá egy bemutató videót.

A videó nagyon egyszerű: megmutatom, hogy egy komplex debug eljárás esetén (hiszen egy másik Eclipse példányban futtatott plugin projektet tesztelek vele) hogyan használható ez a plugin.

Mindenesetre jöjjön a lényeg:

Megfelelő igény esetén esetleg arról is fogok beszélni, hogy hogyan készült a videó – most csak annyit mondanék róla, hogy teljesen nyílt szoftverek felhasználásával készült – eltekintve a youtube felületén hozzáadott annotációktól.

Ami viszont vicces volt, hogy feltölteni macerás: a fájl lassan töltődik fel, és időnként megszakadt közben a net – ebben az esetben pedig az AJAX-os feltöltő script végtelen ciklusba került, és nem töltött fel semmit, de nem is vette észre, hogy vége a dalnak. Talán majd egyszer ezt is javítják (vagy nekem javul meg a netem 😀 ).

Oktatók és hallgatók

Teljesen kiakadtam. Lehet, hogy teljesen feleslegesen, és túlreagálom a helyzetet, de teljesen felháborított a dolog. Egész pontosan arról van szó, hogy valamelyik kollega hogyan minősítette az oktatást hőn szeretett egyetemünkhöz: http://bash.hu/67045

Nem másolom be, hogy mit írt, ugyanis teljesen felháborítónak tartom. Mi is a problémám vele? Több is van.

Teljesen kiakadtam. Lehet, hogy teljesen feleslegesen, és túlreagálom a helyzetet, de teljesen felháborított a dolog. Egész pontosan arról van szó, hogy valamelyik kollega hogyan minősítette az oktatást hőn szeretett egyetemünkhöz: http://bash.hu/67045

Nem másolom be, hogy mit írt, ugyanis teljesen felháborítónak tartom. Mi is a problémám vele? Több is van.

Ezek közül a legelső az, hogy a tapasztalataim alapján teljesen alaptalan a helyzet: az előző öt évben összesen egyszer kerültem olyan helyzetbe, amit lehetne úgy értelmezni, hogy valaki a katedra túloldaláról visszaélt volna a hatalmával velem szemben. Jó, ez önmagában még nem jelent sokat – én a „szociális helyzetem” miatt (értsd: sok a tanár a családban) könnyen átérzem a túloldal problémáit. Igen, én még a karon sokat szidott CS tanszék kapcsán sem jutottam negatív tapasztalathoz. Lehet, hogy szerencsém volt, de nem tudom.

Egy másik nagyon súlyos problémának érzem, hogy a kollega durván és sértő módon általánosítva a teljes doktoranduszi karról mond véleményt. Erősen negatív véleményt. Ráadásul, ahogy kiolvasható (jó, ez szubjektív), ezt a kar „népszerűsítésének” céljából tehette. Pedig sokkal jobb lenne, ha az esetleg meglevő ilyen embereket ki lehetne cserélni nyitottabb, kooperatívabb emberekkel, amihez arra lenne szükség, hogy a doktoranduszi helyhez szükséges feltételt minél többen teljesítsék. Ehhez viszont a jó képességű embereket inkább ide kéne csábítani, mint elriasztani. Márpedig a tanári kar ilyen szintű leminősítése inkább elriasztja az embereket.

És amit a legrosszabbnak tartok: a bejegyzés 107+ minősítést ért el a hivatkozott oldalon (és ebből 8+ az előző másfél órában bukkant fel, amióta megjelent a poen levelezőlistán). Az egy dolog, hogy valaki tesz egy efféle megjegyzést; magáról állít ki szegénységi bizonyítványt, de az, hogy ezt sokan biztatják, pozitívan értékelik, az egészen más helyzetet állít elő. (Megjegyzem, a bash.hu elég sok bejegyzés hasonlóan sérti az én konzervatív felfogásomat, de most ebbe az irányba nem kívánok elmenni.)

Nem tudom, más hogy van az itt felsorolt panaszaimmal, de nagyon szívesen meghallgatnám mások véleményét. Más találkozott olyan esettel, hogy valaki a tanári oldalról visszaélt volna a hatalmával? Más nem gondolja ezt a helyzetet felháborítónak? Minden kapcsolódó véleményt szívesen hallgatok, hátha valaki felnyitja a szememet, hogy miért reagálom én túl a helyzetet.

Miért nem olvas a magyar?

Aki bedőlt a hatásvadász címemnek, elnézést – ezt a kérdést nyilvánvalóan nem fogom megválaszolni. De hogy nem olvas, az tény – én személy szerint olyan nemrég érettségizettet is ismerek, aki saját bevallása szerint semmit sem olvas, még a kötelezőket sem.

De hogy miért is írok erről a témáról? A hétvégén volt szerencsém összehasonlítani John Grisham egyik könyvének magyar és angol változatát. Úgy gondolom, a problémámat a következő képpel egyszerűen szemléltethetem.

Aki bedőlt a hatásvadász címemnek, elnézést – ezt a kérdést nyilvánvalóan nem fogom megválaszolni. De hogy nem olvas, az tény – én személy szerint olyan nemrég érettségizettet is ismerek, aki saját bevallása szerint semmit sem olvas, még a kötelezőket sem.

De hogy miért is írok erről a témáról? A hétvégén volt szerencsém összehasonlítani John Grisham egyik könyvének magyar és angol változatát. Úgy gondolom, a problémámat a következő képpel egyszerűen szemléltethetem.

The Client angolul és magyarul

Aki esetleg nem látja: kétszer akkora egy lap területe, és a magyar változat emellett észrevehetően vastagabb (500 oldal -> 600 oldal).

Hogy ez miért is rossz? Egy: a könyv túl nagy, nem túl kényelmes kézbe venni. Kettő: a folyó szöveg betűtípusa akkora, hogy a gyorsolvasókat (akik közé sorolom magamat is) visszafogja, egyszerűen nem tudja átlátni. Három: kicsit „fenyegető” a mérete, különösen annak, aki nincs hozzászokva a rendszeres olvasáshoz. Négy: nem is beszélve arról a szempontról, hogy hány fát kellett ezért kivágni, illetve mennyivel emeli ez a lappazarlás a könyvek árát.

És ebben a viszonylatban más könyv kapcsán láttam olyat, hogy az angol nyelvű kiadás olcsóbb volt, mint a magyar… No comment.