Tag-Archive for » development «

csütörtök, szeptember 02nd, 2010 | Author: Vagabond

Az iPhone-Android háborúban mindeddig semleges voltam, ma azonban megjött a céges Desire (na jó, ez az én döntésem, választhattam volna iPhone-t is) úh. kvázi elköteleztem magam az Android mellett. Persze ez nem jelenti azt, hogy utálnám az iPhone-t. Épp ellenkezőleg, nagyon jó telefonnak tartom (bár még soha nem volt) és nagyon örülök, hogy oligopol piaci verseny van, mert az szerintem nagyon jót tesz a termékeknek, de a cégek se járnak rosszul.

Mindenesetre, neki fogok állni megtanulni az androidos fejlesztést.

péntek, augusztus 13th, 2010 | Author: Vagabond

Minap hallottam pár informatikust beszélgetni az utcán. Az egyik mondott egy olyan mondatot, amivel csodálatosan le lehet írni egy csomó régi projektet:
“Persze ezt a változtatást alaposan le kell tesztelni. Hálistennek ott van az az állandó tesztrendszerünk, amit élesnek hívunk…”

Azért ez egyre ritkább. Jó irányba halad a szakma.

Category: Szakmai  | Tags:  | One Comment
csütörtök, július 29th, 2010 | Author: Vagabond

Ma egy nagyon erdekes, gyakorlatilag elkerulhetetlen hibaba futottam bele. Persze, elkerulheto, de ahhoz mar paranoiasnak kell lenni.

A lenyeg: harom, egymastol fuggetlen resz osszejatszasabol adodott a dolog:

  • Van egy checkbox, amit alapbol ugy hozunk letre, hogy be van kattintva
  • Van egy vizsgalat a kodban, ami megnezi, hogy a checkbox be van-e kattintva, es ha igen, kigyomlal par elemet a listabol
  • Es van egy olyan kepernyo, ahol ezt a checkboxot elrejtjuk

Az eredmeny: azon a kepernyon a listaban nem jelenik meg par elem.

Egy ilyen hibaba nagyon konnyu belefutni. Ha latjuk a harom dolgot egyszerre, akkor konnyu kiszurni, hogy hol a hiba a logikai lancban, de ha pl. az egyik programozo megcsinalja az elso ket dolgot, majd nehany honappal kesobb egy masik programozo egy hibajavitas alkalmaval beleteszi a kodba a harmadik reszt, akkor maris kesz a hiba, pedig kulonosebben nagyot senki nem vetett. Azt pedig szerintem lehetetlen elvarni, hogy egy fejleszto vagja az egesz kodot – meg ha az is lenne az idealis eset.

Mindenesetre a tanulsag: Ha egy feluleti elemet vizsgalsz, ne felejtsd el megnezni, hogy egyaltalan lathato-e az elem. Mert ha nem, akkor konnyen belefuthatsz hasonlo hibakba.

Category: Szakmai  | Tags: ,  | Leave a Comment
kedd, július 13th, 2010 | Author: Vagabond

A Google kiadta az Androidhoz az App Inventort. A szoftver lenyege, hogy az alkalmazasodat nem “programozod”, hanem epitoelemekbol illeszted ossze. A reakciok meglehetosen vegyesek voltak, sokan amiatt aggodnak, h elarasztja az app store-t a gagyi, 12 evesek altal osszetakoltak kisalkalmazasok tomege, mig masok orultek a lehetosegnek.

A blokkokbol epitkezes nagyon regi otlet a szoftverfejlesztesben. Amikor 13 eve a foiskolan tanultam rola, mar akkor is tortenelmi multu gondolatnak szamitott, ambar akkor meg a gepek kepessegei joval alatta maradtak annak, amire ma kepesek, gondolok itt elsosorban a grafikus UI-ra. Azonban szamtalan okbol eddig mindig meghiusult az, hogy ebbol olyan termek legyen, amit nem programozok is kepesek hatekonyan hasznalni. En a palyam soran nemegyszer belefutottam ezekbe az alkalmazasokba, es nehanyat volt is szerencsem hasznalni munkam soran – ergo nem csak az otthoni kiprobalas jellegu jatszadozasok alapjan van tapasztalatom veluk. Az App Inventort meg nem probaltam ki, de ki fogom mindenkeppen. Egyelore csak az altalanos gondolataimat irom le, aztan ha lesz konkret tapasztalatom, akkor majd azt is.

A programozas alapallapotban ugy mukodik, hogy a programozo ismeri a nyelv alapveto konstrukcioit: ertekadas, felteteles elagazas, ciklus, stb. Ehhez hozzacsapodnak a keretrendszer elemek: Az objektumok, pl. a String, azok fuggvenyei. Az alkalmazas UI elemei is ilyenek. Ezekbol a programozo ossze tud rakni egy programreszletet, ami megcsinal valamit, amire neki szuksege van: pl. hatulrol elkezd bejarni egy listat, es osszeszed ot elemet, ami megfelel egy adott feltetelnek. Ezt egy atlagos felhasznalo azert nem tudja megtenni, mert nem ismeri az alapelemeket, nem ismeri a keretrendszer elemeket es nincs birtokaban a programozashoz szukseges gondolkozasi strukturaknak, azaz meg ha ismerne az elemeket, akkor sem tudna oket megfeleloen sorba tenni.

A vizualis kodepites egyik alapveto problemaja a kodgranualitas eltalalasa: A legegyszerubb epitoelemeket adjam oda a felhasznalonak, vagy valamivel bonyolultabbakat, vagy egeszen osszetett epitoelemeket, amiket csak konfiguralnia kell, vagy valami vegyesfelvagottat a fentiekbol? Mindegyiknek megvan a maga problemaja: Ha nagyon egyszeru elemeket adok, a felhasznalonak gyakorlatilag ugyanugy programoznia kell, csak nem gepelessel, hanem dobozokat osszehuzva. Raadasul igy mindent maganak kell megirnia. Ha csokkentem a granualitast, es haladok az osszetettebb elemek fele, akkor a usability-be futok bele: adok peldaul egy blokkot, amivel be lehet egy listat jarni, de akkor a felhasznalo azt akarja majd, hogy hatulrol elore, vagy csak minden masodikat, vagy eppen hatulrol elore minden masodikat…  Ez hasonlo ahhoz a problemahoz, amibe belefutottam a MindGraph kapcsan mult heten, amikor egy apro valtoztatas miatt at kellett irni egy egesz osztalyt, csakhogy erre altalaban nincs lehetoseg. Persze megtehetjuk azt is, hogy csak egy blokkot adunk a felhasznalonak, amirol tudja, hogy ez egy ciklus, am a belsejet neki kell leprogramoznia scriptnyelven. Ezzel persze gyakorlatilag semmit nem haladtunk elore a sima programozashoz kepest, a felhasznalonak meg kell tanulnia, hogyan kell egy programot osszerakni. Ha egesz nagy blokkokat akarunk hasznalni, pl. “Beleptetes”, “Vasarlolista”, “Fizetes”, akkor abban a szituban leszunk, hogy barki ket perc alatt ossze tud rakni egy webshopot az elemeinkbol, de Solitaire-t soha nem fog csinalni vele. Persze megprobalhatunk mindenre adni egy ilyen blokkot, de ez kvazi lehetetlen. A hibrid megoldasok gyakran azt eredmenyezik, hogy mindket megoldas problemai megjelennek, am emellett meg az is jelentkezik, hogy tulzsufolt lesz az elemkeszlet. En pl. a Visio-val vagyok mindig igy: borzaszto jo tool lenne, ha tudnam, hol a feneben van az az elem, amit hasznalni szeretnek.. ha van egyaltalan.

A masik, egyaltalan nem megoldhatatlan feladat, amivel megis problema szokott lenni, az a kod ujrahasznalas. Ez reszben kapcsolodik a kod attekinthetosegehez is. Konnyu belatni, hogy egy alkalmazas diagramja nagyon osszetett lehet. Van benne egy udvozlokepernyo, ami pl a fomenu, egy “about” kepernyo, egy toltes kepernyo, ahol kivalaszthatjuk, hogy melyik mentett dokumentumunkat akarjuk megnyitni, egy hasonlo a menteshez, plusz az osszes koztes kepernyo. Ha mar csak azt felrajzoljuk, hogy melyik kepernyorol melyikre lehet eljutni es milyen modon (ha van aktualisan szerkesztett dokumentum, akkor load elott ajanlja fel a mentest..) mar az onmagaban atlathatatlan. Azonban mi most arrol is beszelunk, hogy a kepernyon beluli kodot is vizualisan megalkotjuk.

Nyilvanvalo a megoldas, hogy akkor a kepernyokhoz csatlakozo kodokat szeparaljuk el kulon, csak adott kepernyonel lathato diagramra. Am itt jon a kepbe a scope: Mi van akkor, ha a kod egy resze olyan logikat valosit meg, amit szeretnek ujrahasznositani? Atnyulhatok az egyik kepernyorol a masikba? Vagy kirakhatom egy kulonallo valamibe, ami nem kepernyo? De egyaltalan, hogyan azonositom, hogy en oda akarok most menni, ezzel-es-ezzel az adattal, es utana ide akarok visszajonni? Egy mondatban: hogyan rajzolok publikus fuggvenyeket es hogyan hivom meg oket?

A megoldas itt nyilvan az lenne, hogy ezek az altalam irt publikus fuggvenyek is uj epitoelemkent jelennek meg, valamint az alkalmazasom elszeparalt reszei (kepernyok) is megjelennek epitoelemekkent – pontosabban azon reszeik, amiket publikusan kiajanlok. Innen persze a felhasznalonak ertenie kell a scope kifejezest is.

A scope kapcsan nyilvan megemlithetnem itt a valtozok atadasat is: hogy oldom meg azt, hogy a kepernyom at tudjon passzolni ertekeket a kovetkezo kepernyonek, aki aztan majd felhasznalja? Valamint pl. hogy oldom meg azt, hogy ha a felhasznalo a vissza gombot nyomja meg, ki legyen toltve a form, mig ha a tovabbi elemek hozzaadasa akciot valasztotta, akkor ne? Ezek mind olyan kerdesek es problemak, amivel egy vizualis tervezo keszitesenel talalkozunk, es a megoldasra olyasmit kell kitalalnunk, amivel a programozni nem tudo, alapvetoen egeret hasznalo felhasznalo boldogul, es amitol nem lesz olyan erzese, hogy ez most rocket science.

Gyakorlo programozokent az az erzesem, hogy a programozasnak ez az aga vagy zsakutca, vagy egy olyannyira limitalt lehetoseg, amivel nincs ertelme foglalkozni addig, amig nincsenek mesterseges intelligenciak, akik az egyszeru abra moge, amit te lerajzolsz, kepesek maguktol kitalalni a tartalmat. Maskulonben, akarmilyen jo is az eszkozunk, elobb-utobb vagy olyan problemaba fut bele a felhasznalo, amit nem lehet benne megoldani, vagy programoznia kell.

Tovabbiakat majd akkor, ha kiprobaltam az App Inventort.

Category: Hobbi, Szakmai  | Tags: , ,  | One Comment
csütörtök, július 01st, 2010 | Author: Vagabond

A legutóbbi:

Cimkék és Igazítás

Category: Hobbi  | Tags: ,  | 3 Comments
csütörtök, július 01st, 2010 | Author: Vagabond

Az elmult napokban egy csomoszor dicsertem a MindGraph-et, meg irogattam rola itt a blogon, de azt meg nem magyaraztam el – ha jol emlexem – hogy mi is ez tulajdonkeppen.

Az alapotlet a Mind Mapping technika tovabbgondolasa. A Mind Mapping lenyege, hogy vizualizaljuk az otleteinket egy fastruktura szerint. Egy alapotletbol indulunk es szepen bontjuk lefele kisebb reszekre, leagazasokat huzva belole. Ket trivialis problema van ezzel a modszerrel:

  • Az otletek mindig egy alapotletbol szarmaznak le, ezert annak meglehetosen altalanosnak kell lennie, ha mondjuk tobb, nem nagyon erosen kapcsolodo otletet szeretnenk kombinalni.
  • Nem lehet kapcsolatot tobbszorozni az agak kozott, ezert ha egy dologra tobb helyen is hivatkozunk, duplikalnunk kell.

A mindgraph lenyege, hogy az egesz kapcsolatot graf alapokra helyezi, ezaltal egy demokratikus, tobbszorosen ide-oda kapcsolt otlethalmazt hozva letre.

A technikai reszletek utan nezzuk, hogy mire es hogyan tudjuk ezt hasznalni: Elsosorban a gondolataink gyors felvazolasa a cel. Lerakunk egy gondolatot, beleirjuk, hogy mi ez, majd hozzakotjuk a mar letezo gondolatokhoz, akar azt is specifikalva, hogy a kapcsolat micsoda. Ha mar rajzoltunk egy jo nagy terkepet, termeszetesen nem akarjuk azt sem elveszteni, szoval menthetunk es visszatolthetunk majd, illetve kepet is exportalhatunk. Ha egy otletet jobban ki akarunk fejteni, nehany verzio mulva arra is lesz lehetosegunk, hogy kifejto grafot rajzoljunk – ezt ugy kepzeljuk el, hogy rakattintunk egy dobozra, es felnyilik egy benne levo diagram.

Konkret alkalmazasok? Akarmi. En a programozassal kapcsolatos otleteimet szoktam ilyen modon lerajzolni, de siman el tudom kepzelni, hogy valaki csinal egy terkep alapu bevasarlolistat, es behuzogtja a kovetendo utat, vagy egy regeny cselekmenyet vazolja fel ilyen modon. A lenyeg ketretu: reszben az ihletett pillanat megragadasa, amikor elozonlenek bennunket a gondolatok, es hirtelen mindent le akarunk irni, masreszt az otletek/adatok es kapcsolataik vizualizalasa.

A design ennek megfeleloen nem a csicsara, hanem a nagyon egyszeru es gyors kezelhetosegre helyezi a hangsulyt. Emiatt helyenkent kenytelen vagyok elszakadni a gyakran optimalisnak tekintett windows-os kontrolloktol (a Mac-eseket meg nem is ismerem, szoval eselytelen, hogy kozel keruljek hozzajuk) es egyszerusiteni a dolgokat, peldaul a mar korabban emlitett torlesi problema: Az alap megoldas az lenne, hogy kijeloljuk es toroljuk, am a MindGraph-ben ez ugy fog tortenni, hogy fole visszuk az egeret (nem kattintunk) es megnyomjuk a torles gombot. Kesobb meg el fogok gondolkozni a csoportos kijeloles megvalositasan is, mert azert egy nagyobb szekciot egyessevel torolni keptelenseg.

Szoval ez a tool van most a satupadon. Ahogy reszelgetem, postolok majd meg kepeket.

Category: Hobbi  | Tags: ,  | 2 Comments
szerda, június 09th, 2010 | Author: Vagabond

Szeretnem, ha az Eclipse IDE kovetkezo verziojat Twilight-nak neveznek..

hétfő, június 07th, 2010 | Author: Vagabond

.. es kevesebbet programozni. A “whhyyyy” szora azt hittem, datumformatum.

Category: Hobbi, Személyes  | Tags:  | One Comment
szerda, június 02nd, 2010 | Author: Vagabond

A: From the version control log: Resolved by Mike and Brian
Who is Brian?
B: Brain, just mistyped
A: LOL
Looking at the code I was wondering which part of his body he was using.

Category: Személyes  | Tags: ,  | Leave a Comment
szerda, május 19th, 2010 | Author: Vagabond

Ma harom tipikus programozasi hibaba is beleszaladtam, alljon itt egy memento roluk:

  1. Factory keszitette ojjektum: Ha egy objektumot Factory-val vagy Factory metodussal keszitesz, az nem ekvivalens a new Objektumneve() hivassal, ugyanis lehet null, anelkul, hogy hibat dobna. Az ilyen modon elkeszitett objektumokat erdemes ellenorizni, hogy ne valahol a hivaslista melyen kapjunk egy nullpointer exceptiont. (vagy az adott nyelvi megfelelojet). Ez kulonosen igaz, ha a Factory-t egy kulso file-bol inicializaltuk.
  2. Nem szamlalo alapu ciklusban (pl. while, foreach) szamlalot hasznalni oke. A szamlalot az elejen megnovelni, majd a vegen egy feltetelvizsgalat eseten (valami nem kovetkezett be) csokkenteni nem oke. Csak a legritkabb esetben nem lehetseges a szamlalot magasabb ertekrol inditani, es forditott feltetelvizsgalattal novelni a ciklus vegen. Konnyebben kovetheto logika es kevesebb hibalehetoseg az eredmeny.
  3. Egy ciklusban ugyanazt a erteket tobbszor kiszamolni gaz. Ha ezt raadasul rosszul teszed (pl. copy paste hiba miatt) akkor meg nehezen kinyomozhato programhibat is okozol.
Category: Szakmai  | Tags:  | 2 Comments