munka #2

dev Comments Off
Jul 162012

Mivel hozzátartozik még a történethez megemlítem, hogy a munkához írt újabb programocska jól szerepelt, és az is kiderült, hogy érdemes volt az extra dolgokkal vacakolni, mivel nem pont olyan formában küldték, ahogy vártam…

Úgyhogy mivel a megfelelő adatok feltöltése több időt vett el, minthogy azt a még 1-2 szükséges sort végül beírjam a programba a feldolgozáshoz, és mivel bizonyos formai kötöttségek keretein belül így már csupán gombnyomás a feldolgozás, ezért újfent bizonyítva látom, hogy érdemes ilyen scriptelt eszközökkel vacakolni, mert jóval megkönnyítik a munkamenetet.

munka

dev Comments Off
Jun 212012

Új post, mert van dev megint. A munka helyen adódott programozási feladat, mert egy cég, akik küldenek nekünk adatokat csak excelben tudják szolgáltatni azokat, míg nekünk az OEP által használt text formátum lenne a megfelelő.

A körülményeket mellőzöm,  a lényeg, hogy így excel táblából kell fix szélességű sorokat (rekordokat) tartalmazó textet csinálnom, ami nem túl bonyolult feladat, ha van megfelelő excel olvasó modul. Már pedig korábban már találtam egy xlrd nevű modult, amikor az OEP által küldött excel file-okból adatokat kellett kinyernem, úgyhogy a mostani feladat alapjai már ismertek voltak előttem.

Az extra feladatot az jelentette, hogy mivel még nem kaptuk meg az excel táblázat végleges felépítését, ezért olyan módon kellett megírnom a programot, hogy komoly strukturális átalakítást a végleges forma megérkezésekor se kelljen már tennem, így egy egyszerűbb, az adatokat sorban konvertáló program helyett class-ként írtam meg a sor feldolgozó elemet, amely járulékos haszna, hogy mivel 1-2 feltételes formázás is lesz a textben, így ezeket a class-on kívül, az alap rekord-építő kódtól függetlenül lehet megírni.

Habár elsőre mindez feleslegesen bonyolultnak tűnhet még írás közben is, a korábbi, favágásnál magasabb szintűre gondolt programjaimnál tapasztaltam, hogy néha bizony tényleg felmerül olyan probléma, amit az extra funkciók segítségével úgy oldhatok meg, hogy alig vagy csak minimális szinten kell belenyúlnom magába a programba, úgyhogy végül is megéri – vagy ha másért nem is, csak hogy tanuljak belőle. :)

Még nincs kész teljesen, de kb. 1 és 5-e között már használni fogjuk remélhetőleg.

ú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.

python gondolatok

dev Comments Off
Oct 202011

Pár beszélgetés miatt újra elgondolkoztam azon miért tetszik a python, és arra jutottam, hogy valójában nem is annyira az ilyen-olyan szintaktikai vagy valami felületi tulajdonságai tetszenek, hanem leginkább az, hogy gyakran arra ösztönöz, hogy absztraktabb és kezelhetőbb kódot írjak – anélkül, hogy akármilyen paradigmát is explicit módon rám erőltetne.

Például sokszor már alapból listákba rendezek adatokat, amiket  már könnyű iterálni pythonban, másrészt gyakorlatban is látom, hogy milyen könnyű prototípus kódot írni, ha odafigyelsz 1-2 dologra. Az utóbbi pár prototípus függvényemben szó szerint elég volt csak (a már előre is látható)  konstansokat paraméterekre cserélnem, hogy más module-okba importálható függvényeket kapjak.

Persze nem lesz azért lisp-absztrakt, de ezek  - kiegészítve a speciális eljárásnevekkel, amikkel, mint valami custom interface-szel könnyen tudsz saját osztályt a python nyelvi stílusához igazítani  - olyan dolgok, amik más nyelvben való programozáskor is segítenek azzal, hogy más szemszögből világítanak meg egy adott problémát.

web serving

dev Comments Off
Oct 022011

Az előző bejegyzés kissé félrevezető lehetett, mert igazából a legtöbb cherrypy-s problémám nem abból adódik, hogy ezt vagy azt mennyire lehet megcsinálni, hanem hogy a dokumentációjukban elég nehezen találom meg az infót.

Mindemellett most már eljutottam oda, hogy az eddigi, a különböző bejegyzésekben említett kisebb programok egybefűzve, webservice-ként üzemelhetnek tovább, kezdve a bejövő adatok beolvasásától egészen egy AJAX-os felületig egy belső hálózaton. Azért mégis csak haladtam valamennyit. :)

A matplotlib-nek amúgy elég meredek az import ideje, a cherrypy-t is üti pl., de service-ként futva a cherrypy-vel együtt ez csak indulásnál jelent plusz időt. Csak elgondolkoztató, hogy mennyi mindent használhat (pl. tk?) miközben relatíve egyszerűbb dolgokra kell csak, egy sima outputtal.

Mindenesetre most működik a dolog – igaz, még mindig csak alpha – úgyhogy következőnek a lekérdezést bővítem ki, és utána jöhet a többi feature. :)

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.

régi progi

dev Comments Off
Aug 172011

Amikor bent melóhelyen dolgoztam, visszakerestem valami miatt az évekkel ezelőtt írt programom kódjában valamit, és eléggé rácsodálkoztam, hogy hogyan van megírva. :) Jó, akkor tanultam még csak a pythont, de pl. csomó dolog úgy néz ki, hogy elég feleslegesen szerepel függvényként.

Persze ok, hogy a megfelelő függvényneveket használva a main()-ben jól olvasható lesz a logika, de azért most már nem hiszem, hogy csak ilyen megfontolásból ennyire funkcionális programozást használnék… főleg úgy, hogy ezek a függvények néha annyira speciális paramétereket kérnek, hogy nem is lehet nagyon ezen a programon kívülről hívni őket.

Mindettől függetlenül évek óta használom is folyamatosan ezt a programot, szóval egyáltalán nem arról van szó, hogy hú-de-használhatatlan, csak épp amíg régen ezt egy hónap alatt írtam meg ha jól emlékszem, most egy hónap alatt tanultam – és utána használtam – sqlite-ot, feldolgoztam vagy 3 file formátumot (nem pedig 1-et), és kerestem webservert.

Most pedig majd neki állok relax ng-t tanulni, de mindezt csak azért mondom, mert úgy látszik ez a programozás is valóban egy ilyen gyakorlati dolog – és az igazat megvallva úgy érzem, hogy az elmúlt hónapban nem is haladtam annyira, mint ahogy szerettem volna. :)

cherrypy

dev Comments Off
Aug 092011

Az eddigi webserver keresgélés a munkahelyi alkalmazásomhoz most egy időre befejeződik, és az nginx-re sem lesz szükségem még, mert a cherrypy nevű python module/webserver csomó mindent tud, amivel egyelőre tovább haladhatok, és önmagában vagy robusztusabb webserverrel együtt is működik.

Ezért szeretem amúgy az ilyen nyelveket, mert könnyen lehet új ötleteket megfogalmazni bennük – több mindent kipróbálni azért, hogy lásd, neked melyik a legmegfelelőbb épp. Másrészt a cherrypy-féle hello world (ld. az oldalukon) szerintem jól mutatja, hogy lehet objektum-orientált kódot eredetien használni. :)

sqlite #2

dev Comments Off
Jul 312011

Hogy a munkámról is írjak annak, akit érdekel, per pillanat azon gondolkozom, hogy az sqlite adatbázis adatait milyen arányban kéne python-ban illetve sql-ben bűvészkedni. Nevezetesen hogy inkább sql scriptet generáljak, és azt futtassam le az adatbázison, vagy inkább csak kellő mennyiségű select utasítással kérjem le az adatokat, és utána pythonnal végezzem el az egyéb szükségem műveleteket.

De ez inkább gyakorlati probléma számomra, hiszen amit lehet, valószínű hasznosabb sql scriptként megírni, viszont a későbbiekben webes felületet kell írnom ehhez, és úgy érzem python objecteket könnyebben fogok tudni interface-elni, mint közvetve sql struktúrákat. :)

© 2011 zero or more Suffusion theme by Sayontan Sinha