új bejegyzés!

dev Comments Off
Apr 162012

Hát igen. A dev bloggal az a baj, hogyha nincs dev nincs blog sem. Úgyhogy különféle okokból szünetelt a fejlesztés, a munkahelyen is más dolgok kerültek előtérbe, és a game engine-hez se fogok soha animátort találni. Amúgy is többet gitároztam mostanában és inkább azzal voltam elfoglalva.

Nem rég azonban kicsit belenyúltam a munkahelyi pdf generátor eszközömbe, ami ugye a reportlab-et használja, és a pdf író alaprésze elég procedurális. Sikerült egy kis hackeléssel megoldanom, amit szerettem volna, de már túl sok helyen van feltételes elágazás a formázó részben… és bizony így megint oda jutok, hogyha komolyabb dolgot szeretnék csinálni ezzel, akkor a saját formázó jelöléseimhez egy normális tokenizert kéne írnom. Persze lehet, hogy csak elég lenne a reportlab high-level felületét megtanulni – de ez lényegesen kevésbé lenne kocka megoldás. 8)

A game engine-hez is eszembe jutott egy új dolog, de nem tudom mikor fogom megcsinálni, és azt se tudom mennyire működne, de ha meglesz, akkor legalább lesz indokom blogolni még egyet.

webpdf

dev Comments Off
Sep 172011

Az utóbbi időben nem sok új dolgot néztem dev téren. Inkább azzal foglalkozok most, hogy az eddig megnézett részeket egységes keretbe foglaljam végre, és az első lépéseket meg is tettem ez irányba a cherrypy és a reportlab segítségével. Természetesen nem volt nagy erőfeszítés, mivel a megfelelően függvényekbe szedett dolgokat könnyű kívülről hívni, csak paraméterezned kell 1-2 kezdeti értéket. A cherrypy pedig elég python barát ilyen téren, mert kb. tényleg csak a return részeket kell jól megírnod, és szinte olyan így, mint amikor egy standard print-tel írnál cgi-t.

A másik lehetőség, amit használtam én is, hogy a cherrypy-s függvényeket iterátorként írod meg yield-del, és habár ez még mindig nem ugyanaz, mint egy sok print-es megoldás, egy megfelelően megszerkesztett template függvény segítségével áttekinthető marad az egész, és a sima cgi-hez képest lesz kb. +1 logikai szint.

Összességében egyszerű volt egy directory list-ből különbözően paraméterezett linkeket generálni, amik aztán a pdf generátoromat hívták ezen paraméterekkel, és utána csak a megfelelő helyre írtam a pdf-eket. Az egyetlen bökkenő az volt a végén, hogy egy standard redirect-tel akartam ezt visszaadni a kliens felé, de localhost-hoz máshogyan kell az url-t szerkeszteni, mint egy nem local domainhez. De most már remélem egy serveren fogom folytatni majd.

graphs

dev Comments Off
Aug 272011

Remélem sikerül majd az összes dolgot, amit megnézek egy felület alá hoznom, mindenesetre a munkahelyi adatok feldolgozásához eszembe jutott, hogy jó lenne keresni valamiféle grafikon lib-et is.

Érdekes módon az a reportlab is tartalmaz ilyen egyszerű ábrákhoz eszközöket, amit végül pdf generálásra is használtam pythonból. Nagyon jó lib amúgy, csak kicsit túl nagy, szóval nem 1-2 sor amíg generálsz valamit, de nagyon sok mindent lehet benne és elég profi.

A másik alternatíva pdf-től függetlenül a matptlotlib, ami valami olyasminek néz ki, amivel Zoli generálná a grafikonjait… :) Na jó, igazából ezt nem tudom, de egy normális graph lib-nek néz ki, többféle módon menthető grafikonokkal, szóval valószínű valamilyen ezzel előállított bitmap outputot fogok a kiszolgált weblapokba integrálni.

Viszont egy régi p4-esen olyan lassú az import – legalábbis gondolom, hogy az import – hogy gondolkozom azon, hogy külön localhoston futó service-ként fusson-e ez a grafikon generáló progi, párhuzamosan a majdani webservice-szel. Majd elválik.

debug

dev Comments Off
Jul 242011

Tegnap egész nap újfent karakter kódolásokkal vacakoltam python 2-ben, mert mint említettem a pdf reader részben volt egy nem triviális hack, amiről azt hittem, hogy problémát okoz. Hát a hack az valóban hack volt, de nem okozott problémát. :)

Először is a pdf nem adatcserére való. Ez persze mindenki számára nyilvánvaló, aki kicsit is ért a dolgokhoz… mennyivel egyszerűbb lenne, ha xml-ből kéne xml-t csinálnom. :) Na de ezt küldik, ezzel kell kezdeni valamit, és amúgy is, azt hiszem ami xml-t küld az oep, annak is iso-8859-2 a kódolása! Nem utf-8 – abszurd lenne! – és még csak nem is windows-1250! :)

Szóval a tegnapi napom azzal ment el kb., hogy próbáltam megtalálni a hiba okát, – extra szóközök az adatfolyamban – és ezért átnéztem a python 2 és 3 dokumentációját, néztem egyszerű pdf 1.3 syntaxt, számtalan debug print-et csináltam a programból, mire rájöttem a következőkre:

  1. Windows alatt a c-python alapból 16bites unicode-ba kódol, linux alatt 32bites belső kódolás a default.
  2. A pdf syntax-ot olvasva kiderült, hogy kb. úgy működik, ahogy gondoltam, és a kód, ahogy átírtam a readert olyan, amilyennek lennie kell.
  3. És így az extra karakterek nem szóközök, hanem null karakterek az adott unicode környezet byte-számától függően.
  4. Szóval a hacket kitöröltem, minden létező string-et átírtam pythonban unicode stringre – bár ezt inkább csak a következetesség kedvéért – és próbáltam keresni egy karakter encodert, ami normálisan olvassa az adatot unicode-ból.
  5. De valójában a kódolás is mindegy, hiszen ha bármit is írok, az a python ‘belső magánügye’, hogy hány biten tárolja, szóval nekem nem kéne látnom annyi extra null karakter, amit látok.
  6. Tehát valahol mégis csak van egy alap ascii konverzió valamelyik függvénynél, amit használok, (ami megpróbálja 8-bites stringként kezelni a több bites unicode byte stream-et,) annak ellenére, hogy már minden stringem unicode string.
  7. Szóval próbáltam átírni 1-2 függvényt saját implementációra, és amikor olvastam a dokumentációt, akkor láttam, hogy valóban, az egyik module (StringIO) c implementációja nem támogatja a unicode-ot, csak a python implementáció.

Szóval kitöröltem minden debug szemetet meg a hack-et is… kitöröltem a kódból EGY karaktert, és minden szép és jó azóta. True story.

Aztán hogy a munkahelyi környezetben mi lesz, az egy más kérdés, de ha rajtam múlik persze mindenhol unicode/utf-8. :) Mindenesetre poén, hogy nem eldobja a unicode inputot az ezt nem támogató class… hanem itt-ott tök más helyeken látsz unicode meg ascii errort. A programozás szépségei – még jó, hogy szeretem csinálni. :)

© 2011 zero or more Suffusion theme by Sayontan Sinha