Bognár Tibi bácsi: Saját képek Gyurcsány Ferencről a Zuschlag-perben

Papi Gergely főhadnagy rágalmazás miatt feljelentette Hermán Pétert

Havrilla István: FRISS: A bíróságon megfegyelmezett ÁVÓS története

Szinte ingyen. Hány gyerek ebédelhetne belőle egy évig? (Rebisz adatközlés - október 23)

Hermán Péter: Az ÁVH nak ki kell adni a videófelvételeket július 4-ről

Gőbl Gyuri levele az ÁVH-nak okt. 23-ról

Hermán Péter: Kupleráj az ÁVH-nál - 8 hónap nem elég március 15 kivizsgálásához

programozas bejegyzései

Más emberek ideje

Az áldást sodika küldte 2009. december 9., szerda - 22:46-kor
Címkék: programozas vallalkozas webshop
42 komment

Mielőtt egy profi szoftverfejlesztő cég piacra dob egy terméket, nem ritkán főállású tesztelőket foglalkoztat kemény pénzért. Ezek aztán minden technikai tudásukat latba vetik annak érdekében, hogy ha van bármilyen hiányossága az adott terméknek, akkor az felszínre kerüljön.

Ami engem illet, sziklaszilárdan hiszem, hogy ez valahol pénzkidobás, legalábbis az én pozíciómban mindenképpen. Jelen blognak köszönhetően ugyanis van annyi haragosom és ellenségem, hogy kérés nélkül is bevetnek mindent az általam elkészített megoldások tesztelésekor, csak hogy rúghassanak belém egyet.

Robert T. Kiyosaki, a Gazdag papa, szegény papa című könyv szerzője nem győzi eléggé hangsúlyozni, hogy az igazán profi vállalkozó akkor emelkedik a magasba, ha megtanulja használni az üzleti élet két legeredményesebb hatástöbbszöröző erejét: a Más Emberek Idejét, és a Más Emberek Pénzét.

Ma úgy döntöttem, hogy megadom az Index fórumos zsiványoknak és ballibeknek a kegyet, és egy napra alkalmazottaim közé fogadom őket. Ráeresztettem tehát a kígyófészket a készülő webshopomra, és figyeltem, mi történik.

A programkód néhány egészen apró elgépelésén túl (új felhasználó regisztrálásakor a felhasználói név /nicknev/ helyett véletlenül egy másik mezőt, konkrétan a polgári nevet /nev/ ellenőrizte a rendszer, így többen is tudtak sodiként regisztrálni) felszínre került több előremutató ötlet a weblap ergonómiai kialakításával kapcsolatban is. Az Indexesek rosszindulata így végül - a folyamatosan egyre korszerűbbé váló rendszeren keresztül - konkrét forintokhoz juttat majd engem.

Így kell ingyen foglalkoztatni egy rakás embert, akik ráadásul önzetlenül, és lelkesen teszik a dolgukat. :)

By SoDI

Ui.: Azt viszont egy életre megtanultam, hogy adminisztrátori felületre még viccből se eresszünk rá ellenőrizetlenül tömegeket, mert ellened fordítják a szándékos jópofaságodat, és erre hivatkozva megpróbálnak lejáratni téged.


 
 
0 (0)
Jelentkezz be a szavazáshoz!

Infó projekt 16 évesen

Az áldást sodika küldte 2009. november 28., szombat - 17:02-kor
Címkék: adatbazis dbase informatika programozas
91 komment

Lehet, hogy némelyeknek már unalmas, hogy napok óta ősrégi dokumentumokkal traktálom a drága olvasóközönséget, de ha egyszer minden egyes napra jut valami kincs, hát nincs mit tenni. (Kivéve a tegnapi napot, amikor tropára ment a monitorom, és ezért nem tudtam blogolni, mert a laptopomat is éppen kölcsön adtam valakinek. Monitorom továbbra sincs, de távoli asztal kapcsolattal ma már prímán be tudok jelentkezni a laptopomnál jóval erősebb asztali gépemre, így gond nélkül dolgozgatok, és az asztali gépről mount-olt meghajtóról még DVD-t is nézhetek.)

Na de térjünk rá a mai ősdokumentumra...


Nos, rólam tudni kell, hogy én már középiskolás koromban is informatika tanulmányokat folytattam a gimi mellett egy külsős, fizetős helyen. Ezzel kapcsolatban akadt most a kezembe egy 11 éve, 1998. januárjában, éppen 16 évesen készített, dBase III-ban fejlesztett beadandó adatbázisom dokumentációja.

Ezt most meg is tudom mutatni nektek.

Egyébként, miután ekkor még nem volt gépem, a cuccot ügyvéd édesanyám irodai gépén készítettem el.

Ha mindehhez hozzáveszem, hogy a beadandó készítésekor már két éve jártam erre a szakmai tanfolyamra, valamint ha azt is figyelembe vesszük, hogy most hány éves vagyok, akkor megkapjuk, hogy én bizony a szó legszorosabb értelmében a fél életemen át informatikát tanultam.

Érettségi előtt évekig, érettségi és egyetem között 3 éven át, majd pedig egyetemen immár 6 éve.

Azért ez szerintem így elég szép. :)

By SoDI

Kapcsolódó:


 
 
5 (1)
Jelentkezz be a szavazáshoz!

Béla bemutatkozik

Az áldást sodika küldte 2009. november 14., szombat - 4:23-kor
Címkék: bela google wave java programozas robot
56 komment

Ismerjétek meg Bélát!

BélaBéla egy kis manó, aki a nap 24 órájában a gép előtt ül, és figyel. Betéve ismeri a hazai zsidó közéleti szereplők nevét. Elég sokat olvasgatta a Magyar Metapedia ezzel kapcsolatos szócikkét.

Béla éber. Amikor jelenlétében egy zsidó kerül szóba, a miheztartás végett rögtön felvilágosítja erről a beszélgetőpartnereit. Béla soha sem téveszt, és soha nem fárad el. Ha egy zsidó, akiről a beszélgetés folyik, fent van a Metapedian, ő biztosan szól erről.

Bélát Google Wave alatt a [email protected] címen tudjátok felvenni a kapcsolati listátokba. Nyugodtan legyetek Béla barátai, mert Béla nagyon barátságos!

Béla keresése

Ha ez sikerült, rögtön megjelenik a kapcsolataitok között Béla, a Náci Manó.

Béla az ismerősöd

Ezek után nincs más dolgunk, mint odahúzni őkelmét a megfelelő hullám szereplői közé.

Béla a hullámban

Ha ez megtörtént, Béla kisvártatva illedelmesen bemutatkozik.

Béla bemutatkozik

Ezt követően Béla csendben marad, és figyel. Nem szólal meg egészen addig, amíg észre nem veszi, hogy egy általa ismert zsidó került szóba. Akkor viszont felkiált, és elmeséli, hogy az illető zsidó.

Béla felismeri a zsidót.

Béla egyébként nagyon okos. Legtöbbször ragozott alakban, és ékezetek nélkül leírva is felismeri, ha valaki zsidó.

Béla nagyon hasznos segítség lehet a jövőbeli Google Wave-en folytatott közéleti vitáknál, mert nem hagyja, hogy bárki akár egy pillanatra is megfeledkezzen róla: pontosan kikről folyik az eszmecsere.

By SoDI



Ui.
: Béla egyébként a legelső Java nyelvű program, amit egyetemen kívül írtam. Az első idióta, aki beírja, hogy ezért aztán érdemes egyetemre járni, kap egy csokit. :)

Hogy miként tudtok Ti is ilyen okos Google Wave robotokat készíteni, az itt elolvasható.


 
 
2,3 (3)
Jelentkezz be a szavazáshoz!

Elmebeteg kontinens

Az áldást sodika küldte 2009. november 11., szerda - 17:43-kor
Címkék: elmebeteg eu programozas
21 komment

Most olvasom a hírt, hogy az EU be akarja tiltani a sütik használatát. Az első akadályokon már túljutott a törvényjavaslat, és a tagállamoknak 2011. áprilisáig kell ratifikálniuk azt. A törvény állítólag adatvédelmi megfontolásból, és a személyiségi jogok védelme érdekében született meg.

A módosítás értelmében a weblapoknak a továbbiakban előzetes engedélyt kell kérniük a felhasználóktól, mielőtt sütiket helyeznek el a gépeiken. Ez alól csak az olyan szolgáltatások a kivételek, melyek működéséhez feltétlenül szükséges a sütik használata (ilyenek például a webáruházak kosarai).

A tervezett változtatás rengeteg olyan európai vállalkozást taszíthat csődbe, melyek erre a technikára építették az üzleti modelljüket. Ilyenek például a célzott üzeneteket használó reklám-kiszolgálók, akik mostantól kénytelenek lesznek EU-n kívüli ország szervereire költözni.

Az igazat megvallva ez a legnagyobb baromság, amit csak el lehet képzelni. Mert mégis milyen alapon tiltanak be egy olyan programozási technikát, mely a web születése óta elterjedt megoldás, és amelyet emellett a világon még sehol senki nem korlátozott?

Ne küldj spamet, ne indítsd DoS-támadást, és ne terjessz vírust, ugyanis mindhárommal más rendszerét terheled feleslegesen, valamint anyagi károkat okozol. Ez teljesen érthető. De mégis hogy a francba képzelik ezek, hogy az embernek megtiltják egy olyan elérhető technológia használatát, amely

  • nem tömíti el senki postaládáját
  • nem terheli le senki szerverét
  • nem okoz adatvesztést sehol,

ráadásul amely egy alapvető funkcionalitás minden webböngészőben, amióta világ a világ?

Az rendben van, hogy a hazai reklámtörvény igyekszik korlátozni a spamek terjedését. Még az is elnézhető volt nekik, hogy emiatt néhány hónapig olyan elmebeteg szabályozás volt érvényben itthon, mely az email-feliratkozóktól a lakcímük megadását is megkövetelte (bár ennek megkerülésére volt egy olyan kiskapu, melyet annak idején itt a blogon is részletesen ismertettem). Tévedtek a törvényhozó urak, és kiküszöbölték a csorbát.

Az viszont már számomra is teljesen érthetetlen, hogy idén tavasztól miért van betiltva itthon a weblapunk továbbajánlására felszólító automatizált felület („add meg 5 barátod e-mail címét”). Amíg olyan amerikai óriások, mint a Facebook teljesen törvényesen élhetnek ezzel a megoldással, addig itthon ugyanennek a tiltása egészen konkrét versenyhátrányba hozza a vállalkozókat.

Alternatív megoldásként az ember amerikai szerverre rakhatja a hírlevél-rendszerét, hogy utána egy delaware-i offsore cég nevében promózza az itthoni termékeit is. Én legalábbis biztos ezt fogom tenni, ha úgy érzem, hogy a hazai szabályozás konkrétan is forintosítható hátrányba hoz engem az amerikai versenytársakkal szemben. Az ilyesfajta kiszervezés minden további nélkül működő megoldás, mert a sütiknél maradva gondoljunk csak bele: az amerikai Google Analytics használata nyilván nem lehet illegális, márpedig az annak ellenére rak a parasztok gépeire sütiket, hogy a webstatisztika szigorúan véve nem szerves része egyetlen weblapnak sem.

Elmebeteg ez a kontinens, komolyan mondom.

Én mindenesetre továbbra is használni fogom a sütiket. Nekem csak ne mondja meg senki, hogyan programozzak!

By SoDI


 
 
0 (0)
Jelentkezz be a szavazáshoz!

Így jár, aki figyelmetlen

Az áldást sodika küldte 2009. augusztus 22., szombat - 0:40-kor
Címkék: garda programozas sodi
10 komment

Ejj, de megszívtam én az előbb. ;P

Megdöbbenve láttam a térképen, hogy a holnapi Gárda-avatás helyszíne legalább egy órányi járásra van a HÉV végállomásától. Na mondom, akkor vajon hogyan jutnak oda az emberek?

Valahogy ezt meg kellene szervezni. Mindenki elmondja, mikor indul az autójával, és honnan, majd ezek után csatlakoznának hozzá a hazafiak.

Első gondolatom a Bombagyár túraszervezőjének használata volt, de ott láttam, hogy ugyanarra a helyszínre nem tudnak a látogatók külön-külön saját autót regisztrálni, legalábbis elég hülyén nézne ki a többi, már meglévő esemény között, ha több tucatnyi autós ajánlat jelenne meg külön csak a holnapi avatáshoz.

A következő gondolatom eme hiányosságot pótolandó egy saját rendszer leprogramozása volt. Nosza, neki is álltam, és az elmúlt egy órát ezzel töltöttem, kódolgatva, tervezgetve...

SoDI gárdásat fejleszt...

Aztán amikor teaszünetet tartottam, botlottam bele az alábbi információba:

A BKV-val érkezők számára a HÉV végállomásától ingyenes buszjáratok állnak az érdeklődők rendelkezésére.

/ forrás /

Vagyis hiába szarakodtam egy órán át, semmi értelme nem volt.

Abba is hagytam az egészet.

Mindegy, legalább elvoltam. :)

By SoDI


 
 
0 (0)
Jelentkezz be a szavazáshoz!

Profi, mégis szar

Az áldást sodika küldte 2009. május 11., hétfő - 21:31-kor
Címkék: php programozas szamitogep
23 komment

Programozásról lesz szó.

Ha ez téged nem érdekel, ugord át a bejegyzést. :)


Egyik haverom éppen mostanában fáradozik egy bizonyos vállalkozási célra megvásárolt PHP alapú rendszer beüzemelésével, azonban szomorúan volt kénytelen konstatálni, hogy a drága pénzen beszerzett cucc bár a várakozásait túlszárnyalva valósítja meg az általa igényelt funkciókat, akad benne néhány zavaró hiba.

Anélkül, hogy a Magyarországon úttörőnek számító megoldásról idő előtt kényes részleteket árulnék el, annyit elmondhatok, hogy az adott AJAX alapú cucc a látogatókat versenyezteti bizonyos szempontok szerint, majd pedig a gyorsaságuk alapján rendezi őket sorba.

A rendszer a képernyő egy külön területén jelzi ki, hogy melyik felhasználó vezet, valamint egy másik területen, hogy korábban miként alakult a sorrend. Ez a két képernyőterület (a lista és az azt vezető felhasználó kiírása) az esetek többségében tökéletes szinkronban van, azonban ha egyszerre többen is kattintanak, akkor néha elcsúsznak egymáshoz képest az adatok, és az egész cucc egy olyan hibás állapotba ragad be, mely kijelentkezés után is megmarad.

Haverom engem kért meg, hogy járjak utána, mi lehet a gond, mert ő nem ért hozzá.

Oké, mondom, nézzünk rá. Van egy gomb, meghív egy JavaScript függvényt. Rendben, hol van az a függvény? Négy különböző .js fájlt is behív a fejléc. Nézzük csak meg, melyikben definiálják a kérdéses függvényt. Ez is megvan, öröm, boldogság. Függvényünk létrehoz egy AJAX  (XMLHttpRequest) objektumot, amit ráereszt egy bizonyos PHP-ra. Na, itt kezdtem el jegyzetelni, hogy ne zavarodjak bele a hierarchiába. :) Szóval van az Ajax objektum által meghívott PHP rengeteg egymásba ágyazott feltételfüggő (if {}) résszel. Ha egyszerre hatszáz dolog összeáll, akkor ez lefuttat egymás után egy csomó frissítő meg hozzáfűző MySQL lekérdezést.

Na, itt kezdtem el vakarni a fejem.

Vajon mi a ványadt fenéért írja be a cucc egyszerre ugyanazt több táblába is? Mi értelme van külön tárolni a listát vezető felhasználó adatait és magát a listát? Van-e valami konkrét funkció, ami indokolja ezt a redundanciát? Végül arra jutottam, hogy nincs itt semmi mélyebb megfontolás, egyszerűen egy koncepciótlan láma a fejlesztő.

A koncepció hiánya már abban is világosan megmutatkozott, hogy látva az egymás alatt sorban meghívott lekérdezéseket még nekem is az volt a legelső kérdésem, hogy mindez szép és jó, de vajon mi történik, ha egyszerre többen kattintanak a folyamatot elindító gombra a weblapon, vagyis ezáltal egy időben többen is lefuttatják az azt kiszolgáló PHP kódot? Ebben az esetben nyilván az történik, hogy az egyes meghívásokban szereplő SQL utasítások jó eséllyel összekeverednek. Az első fele az első felhasználó adataival hajtódik végre, a második fele a második felhasználóéval, végeredményként pedig  megkapjuk a hibát: nem lesz szinkronban a lista és az azt vezető felhasználót tároló adatrekord.

Innentől a jelenség kijavítása természetesen egyszerű ujjgyakorlat. A szóban forgó lekérdezésekkel érintett táblákat átalakítottam MyISAM formátumból tranzakció-biztos InnoDb formátumba, a különálló SQL utasításokat pedig egységbe foglaltam, vagyis BEGIN WORK és COMMIT utasítások közé helyeztem őket.

Láss csodát: volt hiba, nincs hiba.

Hogy miért írok erről külön bejegyzést?

Azért, mert ezzel most érdekes felfedezésre jutottam. A szóban forgó rendszer ugyanis a maga több ezer soros kódjával bár kétség kívül egy szorgos munkával összerakott projekt, amely egy darab felhasználóval tesztelve a professzionális kivitelezés látszatát kelti, de ennek ellenére olyan, a fentiekhez hasonló szarvashibáktól hemzseg, melyeket magam azért nem követnék el soha az életben, mert már a kezdetekben alapvető evidenciaként tanultam meg, hogy ügyelni kell ezekre a részletekre, ha nagyobb tömeget is ki akarunk szolgálni.

Akárki is készítette ezt a rendszert, legfeljebb kódolni tanult, de programozni soha.

Hasonló ez ahhoz a szituációhoz, mint amikor egy bizonyos, a webfejlesztés alapelveivel a jelek szerint szintén csak a saját tévhite szerint tisztában lévő kopasz blogger több felhasználói visszajelzés alapján eredetileg olyan blogrendszert fejlesztett a közössége számára, mely a bejelentkezett felhasználók jelszavait mindenféle titkosítás nélkül rakta ki sütibe (cookie). Már az is kiröhögni való megoldás, ha valaki teljességgel mellőzi a jelszavak hash-elését, de hogy ezt oda-vissza küldözgesse a felhasználó között, és még sütibe is írja, már tényleg a technikai kabaré netovábbja.

Mégis, a most általam kijavított PHP alapú rendszer fejlesztője akár több hónap kitartó munkájával összehozott valamit, melyhez nekem nem biztos, hogy lenne megfelelő türelmem, és ügyes üzleti érzékkel sikeresen áruba is bocsátotta.

Ami igazán meglepő számomra, hogy én, aki mindig is következetesen tartózkodtam attól, hogy úgymond informatikusnak nevezzem magam (csupán azt írtam le, hogy több megszerzett végzettségem elnevezésében benne van ez a szó, valamint hogy a folyamatban lévő egyetemi szakjaim többségének nevében úgyszintén szerepel) rendszeresen olyan megoldásokkal és megnyilvánulásokkal találkozom magukat magabiztosan informatikusnak és szoftverfejlesztőnek tituláló, de a valóságban szakmailag a nyomomba se érő emberek részéről, melyeket én soha nem követnék el, illetve amelyek láttán csak a fejemet fogom kínomban.

A lelkes amatőrök magabiztossága ennyit számítana az érvényesülés szempontjából? Mert ha igen, akár én magam is felhagyhatnék az eddigi tudatosan sugárzott szerénységgel, és istencsászárként pozícionálhatnám magam. xD

Mér' is ne, baszáj? Ennyi erővel. ;P

By SoDI


 
 
0 (0)
Jelentkezz be a szavazáshoz!

szísárp

Az áldást sodika küldte 2008. június 6., péntek - 14:19-kor
Címkék: corvinus dolgozat egyetem programozas
32 komment

C#Na, ma ismét megerősítést nyert az életigazság, miszerint aki lusta, az megszenvedi ennek az árát.

Az egyik Corvinus-os tárgynál, ahol C#-ot töltenek a fejekbe, úgy döntöttem, hogy ha nem muszáj, hát inkább nem ülnék bent, elvégre tanultam én már ilyet az ELTÉ-n. Ha elég csak a szemeszter végi vizsgára bemászni, mert nincs a gyakorlatokon jelenléti mustra, akkor minek koptassa az ember a cipője talpát, ugye.

Igen ám, csak éppen most, a vizsgaidőszak közepén döbbentem rá (bár szerencsére ezzel nem voltam egyedül), hogy a vizsgaeredmény egy dolog, de kéne még a jegyszerzéshez néhány beadandó is.  Tök jó ám ezt ilyenkor megtudni, jó egy hónappal a formális beadási határidő után. :)

Úgyhogy pánikban .NET Express felnyomása a gépre, és villámtempóban megszületett a két (szerencsére rémegyszerű) beadandó. Ezt most jobb híján megkapjátok, hogy legyen valami blogtartalom mára is, mint ahogy az ilyesmit eddig is be szoktam pakolni a dolgozat címke alá.

Vazz... Utálom az sulit. Az összeset. XD 

By SoDI 


 
 
0 (0)
Jelentkezz be a szavazáshoz!

RSS csatorna a blogunkon

Az áldást sodika küldte 2008. február 20., szerda - 21:30-kor
Kategóriák: Tutorial
Címkék: blog php programozas rss tutorial
53 komment

Tegnap valaki megkérdezte tőlem, hogy miként lehet RSS hírcsatornát megjeleníteni egy blogon, úgy, ahogyan nálam az SF blogja, illetve a SoDI egyéb blogjai doboz is működik.

Nos, mi sem egyszerűbb ennél. Használhatunk ehhez ingyenesen elérhető PHP-s RSS értelmezőket, (ilyen például a MagpieRSS, vagy a Last RSS), de dönthetünk úgy is, hogy saját magunk írjuk meg a megjelenítő kódot.

Szerencsére, ha ezt az utat választjuk, akkor sem kell bonyolult reguláris kifejezésekkel (egyfajta szövegszűrő maszkokkal, vagyis olyan kódokkal, melyekkel megadható, hogy egy bizonyos szövegből milyen speciális részeket akarunk kinyerni) szarakodnunk, ugyanis már a PHP 4 is tartalmazza azokat az XML értelmező függvényeket, amiket így szimplán meg kell hívnunk a munkához.  Ezeket a beépített függvényeket onnan ismerjük meg, hogy mindegyik úgy kezdődik, hogy xml_ (ikszemelaláhúzás :))

És hogy miért pont XML elemző kell nekünk? Hát azért, mert az RSS fájlok egyben XML fájlok is (jéééééé :DDD)

  • Egy XML fájl nagyon leegyszerüsítve olyan, mint egy HTML fájl, csak magunk határozhatjuk meg a cimkéket. Például:
    <?xml version="1.0">
    <MENHELY>
       <KUTYA>
          <SZIN="
    barna" />
          <NEV>
    Morzsi</NEV>
       </KUTYA>
       <KUTYA>
          <SZIN="
    fekete" />
          <NEV>
    Buksi</NEV>
       </KUTYA>
    </MENHELY>
    Így saját magunk is létrehozhatunk egyedi formátumokat. Az RSS is egy ilyen XML formátum, csak éppen annyival több egy házi készítésű formátumnál, hogy nemzetközileg elfogadott W3C szabvány.

Na akkor kezdjük is. Egyben megírjuk SF blogjának a hírdobozát. :) 

Annyit érdemes tudni, hogy PHP-ban a változókat $ jellel kezdjük.

$xml_elemzo = xml_parser_create();

Akármilyen meglepő, a fenti sorban annyi történik, hogy létrehoztunk egy XML elemzőt, melynek fantáziadúsan az xml_elemzo nevet adtuk.

Ez egy beépített PHP objektum. Úgy kell elképzelni, mint egy intelligens „virtuális lényt”, aki nem tud semmit, csak XML-t olvasni, de azt nagyon. Be van „idomítva” néhány ehhez kapcsolódó képességre (ezeket a dolgokat hívjuk metódusnak), és nekünk csak az ezekhez tartozó „parancsszavakat” kell ismernünk ahhoz, hogy megmondhassuk, „pontosan hova üljön a kutya”. :)

Na de menjünk is tovább...

xml_set_element_handler($xml_elemzo, "elemEleje", "elemVege");

Most megmondtuk a PHP-nek, hogy milyen függvényekkel akarjuk kezelni az XML elemzőnk által feldolgozni kívánt XML fájl kezdő- illetve záró címkéit (tag-jeit). Azt mondtuk neki, hogy az adott XML tag-ek kezdő címkéit az elemEleje, a végüket pedig a elemVege nevű függvényünk kezelje.

  • A saját magunk által megírandó PHP függvényekről most annyit érdemes tudnunk, hogy ezek (nagyon leegyszerűsítve) saját névvel azonosított kódrészek, melyek paraméterként fogadhatnak néhány, adatokat tartalmazó változót, ezen paraméterek segítségével csinálhatnak valamit, majd dolguk végeztével esetleg az eredményt is visszaadják.

Az imént említett függvényeket majd később megírjuk.

xml_set_character_data_handler($xml_elemzo, "karakterAdat");

Most megadtuk, hogy az XML elemzőnk a feldolgozni kívánt XML fájlunk szöveges adatainak elemzését melyik függvénnyel végezze el. A karakterAdat nevű függvényt választottuk ki ehhez. Ezt majd szintén később írjuk meg.

$fajl = fopen("http://reakcio.blogspot.com/feeds/posts/default?alt=rss","r")
   ...

Ehun ni most megnyitottuk SF blogjának az RSS feed-jét, olvasásra (a végén ezt jelöli az r, mint read). A megnyitott fájlt fajl néven nyitjuk meg. :)

...
or die
("Hiba az RSS olvasása közben.");

Ha viszont valamiért nem tudtuk megnyitni, akkor sírjunk be. ;)

while ($adat = fread($fajl, 4096))
   ...

Amíg a fájl végére nem érünk (vagyis amíg kerül onnan adat az adat nevű változóba), olvassuk be a megnyitott RSS fájl újabb és újabb 4 Kb-os darabjait.

Az itteni ciklusmagon belül történik maga az XML elemzés.

xml_parse($xml_elemzo, $adat, feof($fajl))
   ...

Itt azt mondjuk, hogy elemezze ki a korábban létrehozott elemzőnk (xml_elemzo) segítségével az imént beolvasott adatot, ha pedig a fájl végére értünk (feof - eof - End Of File), akkor belőle a végéig még hátralévő darabot.

or die(sprintf("XML hiba: %s ebben a sorban: %d"
   ...

Ha viszont hibát találtunk, akkor haljunk meg :-)), vagyis írjuk ki, hogy milyen hiba ez, és hogy hányadik sorban akadtunk rá. Ebben segít nekünk a speciális kiírásokat végző sprintf nevű kiíró függvény. Ez első paraméterként egy idézőjelek között lévő szöveget vár, melyet tetszőleges helyen %s illetve %d szövegekkel tarkíthatunk. A %s szöveges információt, míg a %d tetszőleges számot jelöl. Ezeknek a jelöléseknek a helyére a sprintf függvénynek a legelső után következő paramétereit helyettesíti be a PHP.

  • Például a $mondat = sprintf ("A nevem %s.","Sodika");
    PHP utasítás végrehajtása után a mondat változóba ez a szöveg kerül:
    A nevem Sodika.

Nézzük csak, mi kerül az RSS-olvasó programunkban a % jelek helyére...

...
xml_error_string
(xml_get_error_code($xml_elemzo)),

Lekérjük a keletkezett hiba kódját (error code), majd pedig az annak megfelelő szöveges hibaüzenetet (error string). Mivel ez a sprintf függvény második (az első utániak között a legelső) paramétere, így a visszakapott hibaüzenet az eredeti szövegben az elsőként szereplő %s jelölés helyére kerül.

xml_get_current_line_number($xml_elemzo)));

Mivel a mostani kódrész végrehajtására akkor kerül sor, ha hibát találtunk, ez a hiba nyilván azon a helyen van, ahol aktuálisan állunk. Ezt a helyet lekérjük egy számként. Mivel az sprintf függvény utolsó paramétere, így az eredmény az utolsó helyettesítő jelölés, vagyis a %d helyére kerül be.

fclose($fajl);

Miután végeztünk az RSS csatorna feldolgozásával, zárjuk be a fájlt.

xml_parser_free($xml_elemzo);

Legvégül megszüntetjük az eddig használt XML elemzőnket, ugyanis a továbbiakban már nincs szükségünk rá.

Ez mind nagyon szép, mind nagyon jó, mindennel nagyon meg vagyunk elégedve, akárcsak Ferencjóska, úgyhogy már csak azokat a függvényeket kell megírnunk, amiket az imént hozzárendeltünk az XML elemzőnkhöz. Ugye három ilyen függvény van elemEleje, elemVege, és karakterAdat névvel.

Haladjunk sorban.

function elemEleje($elemzo, $nev, $attributumok) {

... 

}

Az elemEleje függvény három paramétert vár. (Ezeket az xml_set_element_handler kezelő küldi neki, mivel ott határoztuk meg ezt a függvényt).

A három paraméter:

  1. Hivatkozás egy XML elemzőre (itt elemzo néven)
  2. Az aktuális XML elem (tag) nevét (itt nev néven)
  3. És egy asszociatív tömböt, ahol az attribútumok vannak. (Itt attributumok néven. Ebben a kulcsok az egyes XML attribútumok nevei lesznek, míg az értékek az attribútomok értékeivel egyeznek meg.)
  • A tömb olyan adatszerkezet, melyben adott típusú adatok sorozatát tárolhatjuk. Ezekre az adatokra a tömbön belüli indexükkel (sorszámukkal) hivatkozhatunk. Az asszociatív tömb pedig olyan tömb, ahol az egyes adatokat azonosító egyedi indexek nem számok, hanem szövegek.

Vegyük például az alábbi XML tag-et:

<kutya szin="piros" />

Az asszociatív tömb kulcsmezője itt a szin lesz, az aktuális elem értéke pedig az, hogy "piros".

Ezt az attributumok paramétert különben élesben nem fogjuk használni, ugyanis kizárólag a xml_set_element_handler megkötései miatt voltunk kénytelenek berakni a függvényünk paraméterlistájába.

Menjünk tovább... :)

global $elemenBelul, $tag, $cim, $leiras, $hivatkozas;

Meghatározunk néhány globális változót. Ezek attól globálisak, hogy a PHP fájlunk minden részében tetszés szerint használhatjuk őket; függvényeken belül és kívül egyaránt.

Hogy pontosan megérthessük, melyik változóra miért van szükség, elemezzük egy kicsit, hogyan néz ki az RSS kódben egy átlagos elem (hír) leírása.

 <item>
   <title>A hír címe</title>
  
<link>A hír URL-je (Internetes webcíme)</link>
   <punDate>
A hír URL készítésének időpontja</PubDate>  
   <description>A leírása (szövege)</description> 
 </item>

Egy konkrét Index hírnél például ez így néz ki:

<item>
   <title><![CDATA[Lőfegyvereket találtak Tolnában]]></title>
   <link>http://index.hu/politika/bulvar/bulvarhirek/343294</link>
   <pubDate>Tue, 19 Feb 2008 21:54:00 +0100</pubDate>
   <description><![CDATA[Autóban és lakásban is találtak lőszert és fegyvert a rendőrök.]]></description>
</item>

Itt a <![CDATA[szöveg]]> jelölés egy szöveges tartalmat azonosít. Enélkül nem lesz szabványos (másnéven valid) a kód, vagyis a legtöbb RSS olvasó nem tudná helyesen értelmezni.

Nos, visszatérve a globális változóinkra...

  • az elemenBelul logikai (true/false, igaz/hamis) változó azt jelzi, hogy egy item elemen belül járunk-e. A logikai változót úgy tudjuk elképzelni, mint egy érmét, amit leteszünk az asztalra. Lehet felül a fej (igaz érték), vagy az írás (hamis érték).
  • a tag elem azt jelzi, hogy pontosan melyik XML (RSS) tag-nél járunk
  • A cím az adott elem címét jelöli (TITLE tag)
  • A leiras az adott elem tartalmát jelöli (DESCRIPTION tag)
  • A hivatkozas pedig az elem Internetcímét jelöli (LINK tag)

Na folytassuk az elemEleje függvényünk megírását...

 if ($elemenBelul) {
      $tag = $nev;
 } elseif ($nev == "ITEM") {
      $elemenBelul = true;
 }

Ha egy elemen belül (vagyis ITEM tag-en belül) járunk, akkor a tag változó legyen egyenlő az aktuális XML tag nevével (vagyis azzal, ahol éppen állunk, más szóval, amit éppen olvasunk). Ha viszont nem ilyen ITEM tag-en belül járunk, de az aktuális nyitó tag éppen egy ITEM, akkor az elemenBelul globális változónk igazra állításával jegyezzük fel ezt a tényt.

Egyszerűbben: ha feldolgozás közben éppen most lépünk az RSS feed egy hírének leírásába (ITEM tag-jába), akkor ezt jelezzük az elemenBelul változó igazra állításával, egyébként pedig, ha már egy ilyen híren belül járunk, akkor a tag nevű változó jelölje azt, hogy a hír leírásának melyik részét olvassuk éppen (a linkjét, az időpontját, vagy esetleg valami mást?).

Na, ezzel az elemEleje függvényt ki is veséztük.

Következzen a elemVege függvény, ami a záró XML elemek (tag-ek) feldolgozását végzi.

function elemVege($elemzo, $nev) {
   ...
}

Mint láthatjuk, ez a függvény két paramétert vár. Egyrészt kéri az XML elemzőnket, másrészt pedig annak a XML elemnek (tag-nek) a nevét, melyből éppen kilépünk.

if ($nev == "ITEM") {
   ...
}

Az előző sor jelentése: Ha éppen egy ITEM elemből, vagy egy önálló hír leírásából léptünk ki... ...

...
printf
("<b><a href='%s' target='_blank'>%s</a></b>",
   trim($hivatkozas),htmlspecialchars(trim($cim)));

A printf függvény ugyaúgy működik, mint a korábban már ismertetett sprintf függvény, annyi különbséggel, hogy míg az előbbi a képernyőre, addig az utóbbi egy szöveges változóba tölti az eredményét. Vagyis, mint ahogy már láttuk a sprintf függvény ismertetésénél, az idézőjelek között lévő két %s karakter behelyettesítésre kerül az első paraméter után következő két paraméterrel (itt: szöveges információval).

Az első %s helyére az éppen olvasott (feldolgozott) hír URL-je (linkje, hivatkozása) kerül, míg a második %s helyére annak címe.

A trim PHP függvényről azt érdemes tudni, hogy kiszedi a szöveg elejéről és végéről a felesleges szóközöket. Mint láthatjuk, a href HTML tag-ba beírandó hivatkozással (linkkel), és az aktuálisan feldolgozandó cikk (éppen olvasott RSS hír) címével is elvégezzük ezt a műveletet.

A htmlspecialchars függvény pedig egyes speciális karaktereket alakít át olyan módon, hogy ne zavarják meg a HTML kódot. Így a & jelet arra alakítja át, hogy, &amp;, a " jelet pedig arra, hogy &quot;, satöbbi. Ezek csak a lap forráskódjában (HTML kódjában) változnak meg, a felhasználó számára már eredeti alakjukban látszanak.

Ha ez a két karakterkezelő függvény egymásba van ágyazva (htmlspecialchars(trim(szöveg))), akkor egyszerre mindkét művelet, vagyis az üres helyek, és a speciális HTML karakterek kiszűrése is megtörténik. 

  ...
   $cim = "";
   $leiras = "";
   $hivatkozas = "";
   $elemenBelul = false;
}

Mivel az elemVege függvényünk, amiben vagyunk (pontosabban az ahhoz tartozó, if-fel kezdődő, feltételfüggő kódrészünk) azt az esetet kezeli, ha éppen kiléptünk egy ITEM tag (RSS hír) vizsgálatából, annak feldolgozása (vagyis kiírása) után érdemes lenullázni a rá vonatkozó adatokat, és így azt is jelezni, hogy már nem elemen belül (adott hír RSS-leírásán belül) járunk.

Egyszerűbben: Ha már elolvastunk egy hírt, és ki is írtuk, akkor tök mindegy, milyen adatok vonatkoztak rá, ezeket nyugodtan törölhetjük.

No már csak a karakterAdat függvényünk van hátra.

function karakterAdat($elemzo, $adat) {
   global $elemenBelul, $tag, $cim, $leiras, $hivatkozas;
   ...
}

Ez a függvény, mint már írtam, az XML feldolgozás közben a karakteres adatok kezelését végzi. Ehhez előszöris meg kell kapnia paraméterként az XML elemzőnket, valamint azt a szöveges adatot, amit az elemzőnk éppen olvas.

Egyben jeleznünk kell, hogy használni kívánjuk azokat a globális változókat, melyekben az XML (RSS) feldogozása közben a köztes adatokat jegyeztük fel (global ... rész).

Most pedig nézzük a függvény belső részét... 

if ($elemenBelul) {
   switch ($tag) {
      case "TITLE":
         $cim .= $adat;
      break;
      case "DESCRIPTION":
         $leiras .= $adat;
      break;
      case "LINK":
         $hivatkozas .= $adat;
      break;
   }
}

Mint látjuk, az egész kódrész csak akkor hajtódik végre, ha éppen egy elemen belül (egy adott RSS hírleíráson belül) vagyunk. ( if (feltétel) { utasítások} )

A switch ($tag) résszel fejezzük ki azt, hogy attól függően, éppen melyik XML tag-et olvassuk, más és más kódot szeretnénk végrehajtani (esetszétválasztás).

A .= operátor pedig egy szöveges változó végéhez fűz hozzá egy másik szöveget.

Például
$kutya .= "Buksi
";
$kutya .= "ka
";
echo $kutya;

Utasítássor azt írja ki, hogy Buksika.

De nézzük csak meg, konkrétan milyen eseteket vizsgálunk itt:

  • Ha a TITLE tag-ben járunk, akkor a cim változó végére fűzzük hozzá az éppen kiolvasott adatot.
  • Ha a DESCRIPTION tag-ben járunk, akkor a leiras változó végére jegyezzük fel ugyanezt.
  • Ha pedig a LINK tag-ben járunk, akkor a hivatkozás változó tartalmához kell hozzáfűzni ezt az adatot.

Azt, amit itt feljegyeztünk címként, leírásként, és hivatkozásként, értelemszerűen majd az elemVege függvényben fogjuk felhasználni, amint az RSS feldolgozás közben egy adott ITEM tag végére, vagyis adott RSS hírleírás végére értünk.

Ezzel készen is volnánk.

<html>
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>PHP alapú RSS értelmező</title>
</head>
<body>
<?php
$elemenBelul = false;
$tag = "";
$cim = "";
$leiras = "";
$hivatkozas = "";
function elemEleje($elemzo, $nev, $attributumok) { 
   global $elemenBelul, $tag, $cim, $leiras, $hivatkozas;
    if ($elemenBelul) {
       $tag = $nev;
    } elseif ($nev == "ITEM") {
       $elemenBelul = true;
   }
}
function elemVege($elemzo, $nev) {
   global $elemenBelul, $tag, $cim, $leiras, $hivatkozas;
   if ($nev == "ITEM") {
      printf("<b><a href='%s' target='_blank'>%s</a></b>",
      trim($hivatkozas),htmlspecialchars(trim($cim))); 
      $cim = "";
      $leiras = "";
      $hivatkozas = "";
      $elemenBelul = false;
   }
}
function karakterAdat($elemzo, $adat) {
   global $elemenBelul, $tag, $cim, $leiras, $hivatkozas;
   if ($elemenBelul) {
      switch ($tag) {
         case "TITLE":
            $cim .= $adat;
         break;
         case "DESCRIPTION":
            $leiras .= $adat;
         break;
         case "LINK":
            $hivatkozas .= $adat;
         break;
      }
   }
}

$xml_elemzo = xml_parser_create();
xml_set_element_handler($xml_elemzo, "elemEleje", "elemVege");
xml_set_character_data_handler($xml_elemzo, "karakterAdat");
$fajl = fopen("http://reakcio.blogspot.com/feeds/posts/default?alt=rss","r")
   or die("Hiba az RSS olvasása közben.");
while ($adat = fread($fajl, 4096))
     xml_parse($xml_elemzo, $adat, feof($fajl))
        or die(sprintf("XML hiba: %s ebben a sorban: %d"
             xml_error_string(xml_get_error_code($xml_elemzo)),
             xml_get_current_line_number($xml_elemzo)));
fclose($fajl);
xml_parser_free($xml_elemzo);
?>

</body>
</html>

A fenti kódot bárhol tudjuk használni, ahol van PHP 4-5 támogatás, és engedélyezve van a külső fájlok megnyitása (több helyen, például az extra.hu oldalain ez sajnos le van tiltva).

  • A fenti kód futás közben megtekinthető ide kattintva.
  • A forráskód letölthető innen (zip).

Ha pedig arra vagyunk kíváncsiak, hogy ezt a végeredményt hogyan tudjuk olyan módon berakni a blogunkba, mint ahogy én is megjelenítem az egyes RSS dobozokat ezen a blogon, akkor kattintsunk ide, mert nem is olyan régen ehhez is készítettem egy hasonlóan részletes tutorialt. 

By SoDI


Kapcsolódó anyagok:


 
 
0 (0)
Jelentkezz be a szavazáshoz!

Flash player 10

Az áldást sodika küldte 2007. november 6., kedd - 2:45-kor
Címkék: adobe flash programozas
22 komment

Hát a hosszú szünet átka, hogy közvetlenül utána az embernek nincs kedve és ereje blogolni se, mert sokkért éri, hogy hirtelen nem lehet délig aludni. ;)

Ezért van az, hogy tegnap itt sem jelent meg semmi új tartalom. Suliban voltam, és aludtam. Ennyi volt a nap. :) Most egy csepp tech rovatot tartunk, hogy ne bolonduljunk bele a politikába.

Nem tudom, hogy érdekel-e valakit, hogy milyen újdonságokat tartogat az Astro néven várható Flash Player 10, engem mindenesetre alaposan felvillanyozott az alábbi videó. Mondjuk főként azért, mert régóta próbálok lépést tartani a platform fejlődésével, elvégre ha van valami, amihez értek, akkor az a Flash Actionscript fejlesztés.

 

Ez a Hydra külön mókás technológiának ígérkezik, ezért fel is nyomtam magamnak az Adobe Labs AIF Toolkit-jét (Adobe Image Foundation), melynek segítségével már most el lehet kezdeni ismerkedni vele.

Itt lényegében arról van szó, hogy szabadon írhatunk futásidőben változó, pixelszintű szűrőket, melynek segítségével olyan grafikai távlatok nyílnak meg, melyek eddig többnyire csak Java alatt voltak elérhetőek.

Ezzel szerintem sokak álma válik valóra. Néhány példa, részletes magyarázatokkal az Adobe-s Kevin Goldsmith blogján érhető el hozzá.

Majd megpróbálok játszani a nyelvvel, és megosztom veletek a eredményt. :)

By SoDI


 
 
0 (0)
Jelentkezz be a szavazáshoz!

Progmód beadandók

Az áldást sodika küldte 2007. szeptember 22., szombat - 21:25-kor
Címkék: dolgozat egyetem elte programozas sodi
47 komment

ELTE TTK Campus

Fröcsögő mocskok aljas szemétkedése legtöbbször arra sem méltó, hogy az ember szót vesztegessen rá, de most az egyszer kivételt teszek. 

Miután egy korábbi bejegyzés kommentjei között néhány idióta elkezdte kitalálni, hogy nekem még a Progmód tárgynak sincs meg a négy féléve, most a korábbiak mellé feltöltöttem az utolsó két beadandót is.

  • ELTE, Programozás módszertan 3
    Szöveg-átalakítás
    Letöltés (1 Mb ZIP, program, forráskód + doksi)
  • ELTE, Programozás módszertan 4
    Kutyaverseny
    Letöltés (728 Kb ZIP, program, forráskód + doksi)

Nesztek.

By SoDI


 
 
0 (0)
Jelentkezz be a szavazáshoz!

RSS olvasók aktiválása

Az áldást sodika küldte 2007. augusztus 19., vasárnap - 13:55-kor
Kategóriák: Tutorial
Címkék: programozas rss tutorial
2 komment

Hogyan kell szabályosan hozzácsatolni egy oldalhoz az RSS feed-eket?

Innen láthatjuk IE7 alatt, hogy van-e RSS feed az aktuális oldalonAz Internet Explorer 7 beépített RSS olvasója automatikusan kijelzi, ha az éppen böngészett oldalhoz tartozik RSS feed. A jobb felső sarokban található eszköztáron rögtön látható. Ha nincs, akkor az RSS ikon sötétszürke marad, ha van, akkor pedig szép narancssárgává válik.

Ahhoz, hogy ezt érzékelje az RSS olvasó, nem elég simán kilinkelni az RSS csatornánkat, hanem a HTML fejlécben (a HEAD tag-ben) is jelezni kell őket, a következő kódon:

<link rel="alternate" type="application/rss+xml"
title="
{az RSS feed neve}" href="{RSS feed helye}
" />


Vagyis a konkrét példa kedvéért ez a Tüntetés Nyilvántartásomnál így néz ki:


<link rel="alternate" type="application/rss+xml"
title="
Tüntetés Fejlesztői Blog" href="rss.php" />

Na, mára is megvolt a tutorial rovat. :) 

By SoDI


 
 
0 (0)
Jelentkezz be a szavazáshoz!

SoDI programoz

Az áldást sodika küldte 2007. augusztus 16., csütörtök - 20:14-kor
Címkék: programozas
23 komment

SoDI látva azt, hogy ha hülyeségekre pazarolja az idejét (filmek, animék nézegetése, pszichológiai könyvek olvasgatása, miegymás), akkor csigalassan halad az olyan dolgokkal, melyeknek közvetlen hasznuk is lenne, úgy döntött, hogy a mai estét, és az éjjelt a programozgatásnak rendeli alá.

Ennek megfelelően mára háttérbe szorítja szárnyaló elméjét, és átmegy befelé forduló kockába. ;) Izgalmas blogpost tehát holnapig nem lesz.

Ha valakit érdekel, hogy pontosan mit csinálok, az nyomon tudja követni az egyéb blogjaim legfrissebb bejegyzéseit mutató dobozban. Sárga háttérrel az jelenik meg, amit az utolsó 24 órában írtam.

Bocsika, de kicsit haladni akarok a cuccokkal. 

By SoDI


 
 
0 (0)
Jelentkezz be a szavazáshoz!

MySQL DateTime RSS formátumba alakítása

Az áldást sodika küldte 2007. augusztus 8., szerda - 14:19-kor
Kategóriák: Tutorial
Címkék: mysql php programozas rss
28 komment

Hogyan alakítsuk át PHP-ban az MySQL datatime adatokat RSS 2.0-ához szükséges RFC 822 formátumúvá?

Azt hiszem, hasznos lehet, ha szerepel erre itt egy használható megoldás, mert sehol sincs normálisan leírva, pedig gyakori feladat, hogy valaki RSS kimenetet szeretne kódolni. (Én most konkrétan az Országos Tüntetés Nyilvántartás fejlesztői blogjánál ütköztem bele ebbe a problémába).

Ugye a MySQL datatime formátumban tárolva így néz ki egy dátum:

2007-08-07 22:03:44

Az RSS 2.0-ához viszont RFC 822 formátum kell, ami így néz ki:

Tue, 07 Aug 2007 22:03:44 +0200

Nos, ennek a nagyobbik részét könnyűszerrel előállíthatjuk a MySQL formátum megfelelő szövegrészeinek pakolgatásával, azonban ott van az elején az a hülye hárombetűs jelzés, ami azt mutatja, hogy ez éppen a hét melyik napjára esik. Ilyet viszont az eredeti adatban nem találunk.

Nos, tudnunk kell, hogy a PHP az 1970 január 1. éjfél óta eltelt másodpercekben kezeli a dátumadatokat (ez a fenti példánál egészen pontosan 1186517024). Ezt hívjuk időbélyegnek, és az éppen aktuális időpontra vonatkozóan a time() paraméter nélküli PHP függvénnyel kérdezhetjük le.

Ezt az időbélyeget aztán könnyűszerrel alakíthatjuk RSS-hez szükséges formátumúvá (vagyis a hét napját is tartalmazó alakúvá) a date() beépített PHP függvény segítségével.

date (r, time() );

Ahol az r betű jelenti azt, hogy a választ RCF 822 (RSS) formátumban kérjük.

Igen ám, csakhogy mi most nem a pontos időnek, hanem egy adatbázisból kiolvasott dátumnak az időbélyegére vagyunk kíváncsiak. Szerencsére erre is van a kezünkben beépített PHP függvény mktime() néven, amelyik 6 különböző paramétert vár, ebben a sorrendben:

  1. óra
  2. perc
  3. másodperc
  4. hónap
  5. hónap napja
  6. év

Ha megfigyeljük, ezek közül már mindegyik adatot ki tudjuk hámozni a MySQL datatime formátumából. Erre szolgál a szövegrészletek kinyerését végző substr() nevű függvény. Ez első paraméterként az eredeti szöveget várja, második paraméterként azt, hogy melyik indexű karaktertől szeretnénk elvágni a szöveget, a harmadik, opcionális paraméterként pedig azt, hogy hány karakter hosszú szövegrészt kérünk.

Így például ennek, hogy

substr ('Szálasi Ferenc jó ember volt.', 8,7);

az a kimenete, hogy Ferenc.

Készen is vagyunk, ezek alapján meg is írhatjuk a függvényünket.

Megkapjuk a MySQL datatime értéket, előállítjuk belőle az időbélyeget, végül pedig ebből az RSS-nek megfelelő formátumot.

function rssDatum ($datetime)
{
     $ev = substr($datetime,0,4);
     $honap = substr($datetime,5,2);
     $nap = substr($datetime,8,2);
     $ora = substr($datetime,11,2);
     $perc = substr($datetime,14,2);
     $masodperc = substr($datetime,17,2);
     $idoBelyeg = mktime( $ora, $perc, $masodperc, $honap, $nap, $ev);
     $rssIdo = date(r, $idoBelyeg);
     return $rssIdo;
};

Ha ezt meghívjuk kiírásra:

echo rssDatum('2007-08-07 22:03:44');

Megkapjuk válaszként az RSS-kompatibilis kimenetet:

Tue, 07 Aug 2007 22:03:44 +0200

Ennyi.

By SoDI 


 
 
0 (0)
Jelentkezz be a szavazáshoz!

Dokumentáció

Az áldást sodika küldte 2007. augusztus 6., hétfő - 10:12-kor
Kategóriák: Vállalkozás
Címkék: blog ingatlantura programozas sodi
4 komment

Elég lusta, és trehány ember vagyok, ami gyakran abban mutatkozik meg, hogy ha kvázi saját célra kezdek el fejleszteni valamit, előszeretettel hagyom ki az alapos dokumentálás fázisát.

Ez rendszerint abban mutatkozik meg, hogy amikor leülök egynémely pihentetett projekt elé, akkor csak nézek ki a fejemből, és korábbi önmagamat átkozva konstatálom, hogy ezen a szeméthalmon lehetetlen kiigazodni, és hogy szigorúbb tanároknál ez a tervezettség kevés lenne a ketteshez. :)

Így voltam ezzel ma reggel is, amikor egy hosszabb kihagyás után leültem az ingatlanos megoldásom elé, hogy na most aztán jön továbbfejlesztem. Hát nem fejlesztettem. Mi ez a sok tábla? Mi ez a sok php fájl? Mi ez a sok könyvtár? Mire valóak ezek? :)

Úgyhogy az elmúlt órám azzal telt, hogy megpróbáltam saját magam számára, egy házi logika mentén felépített leírást készíteni arról, hol érdemes egyáltalán elkezdeni.

SoDI dokumentál

És ez még "csak" maga az oldal. Elborzadok, ha belegondolok, hogy a panorámabejárás Flash Actionscript kódja milyen disznóól lehet. :) 

Hát igen. Aki lusta, kétszer fárad.

"Gyerekek, ha tüsszentünk, a szánk elé tesszük a kezünket, és ha fejlesztünk, akkor mindent ledokumentálunk, mint egy kisangyal!"

És nem fejben tervezünk, vazz, mert még nem mi vagyunk az Isten. :)

By SoDI


 
 
0 (0)
Jelentkezz be a szavazáshoz!

A legjobb Naruto AMV

Az áldást sodika küldte 2007. augusztus 5., vasárnap - 11:27-kor
Kategóriák: Anime - Japán rajzfilmek
Címkék: anime naruto programozas video
4 komment

Na hát, azt hiszem, ez az egyik legjobb YouTube-os Naruto AMV. :)

Ezt is megtaláltam. :)

(Bár azért annyit hozzá lehet tenni, hogy ha valaki már energiát áldoz egy ilyen elkészítésére, akkor illene RAW (felirat nélküli) verzióval dolgoznia.)

Az ilyen stílusú zene különben azért nagyon jó, mert - mivel agyatlan liberális drogosoknak szánják ösztön-vonagláshoz - remekül lehet alatta programozni, hiszen nem köt le egy szemernyi intellektuális kapacitást sem. :)

By SoDI


 
 
1 (1)
Jelentkezz be a szavazáshoz!

Szabványdísz

Az áldást sodika küldte 2007. augusztus 1., szerda - 23:55-kor
Címkék: egyetem grespik programozas
44 komment

ALERT!  

Kockarovat. Aki nem kocka, annak talán uncsi lehet. ;)

Így nyáron, amikor van időm olyan mélységben is beleásni magam egyes technológiákba, mely már jócskán túlmutat egy elfogadható egyetemi gyakorlati jegy követelményein, kezdek egyre inkább ráébredni arra, hogy egyes, központilag meghatározott szabványok sokszor csupán elméleti irányjelzőként működnek.

Amikor Grespik Lászlót a jogi kamara fegyelmi eljárás alá vonta, amiért meg merte kérdezni egy bírótól, nem-e zsidó (akkor ugyanis elfogultnak számított volna a konkrét perben), azzal a tanulsággal zárult az ügy, hogy az etikai kódex csupán fából vaskarika. A webfejlesztésben sokszor ugyanez a helyzet a hivatalos W3C specifikációk témájában.

Az, hogy rengeteg CSS megoldást nem lehet Internet Explorer alatt alkalmazni (bár ez IE7 alatt sokat javult), és sokszor még a Firefox működése sem felel meg a specifikáció követelményeinek, közismert. Nincs mese, az ember jobban teszi, ha olyan nyelvi elemek használatára szorítkozik, melyek működése a legtöbb böngészőben hasonló végeredményt produkál, vagy legalábbis úgy építi fel az oldalmegjelenítést, hogy a W3C ajánláshoz közelebb álló funkciók csupán alternatív extraként, parasztvakító csiliviliként legyenek jelen.

Az viszont, hogy milyen szarakodás megy a JavaScript nyelv körül, már tényleg röhejes. Olyan, hogy valamelyik böngésző értelmezője pontosan megfeleljen az ECMA-262 leírásnak, nem létezik. Mindenki ehhez igazítja a saját megoldását, de mindenki másként nevezi el. A Microsoft például, amióta ki lett tiltva az alapértelmezetten telepített Java a Windows XP-ből, úgy utálja a Sun-t, mint a szart, így a saját terminológiájában még véletlenül sem használ konkurens technikákra utaló kifejezést (java). Nála tehát jscript-ről beszélünk.

Persze szép és jó lenne az életünk, ha csupán az elnevezésben lennének ilyen különcségek, de nincs ilyen szerencsénk. Amikor valamelyik csoportnál (akár a Microsoft-nál, akár a Mozilla együttműködő fejlesztőinél) megfogalmazódik egy új ötlet, beleépítik a saját verziójukba, és meghirdetik, hogy hű, milyen jó ez így. Ezt pedig látja a konkurencia is, ezért ő is megírja ugyanazt a saját rendszere alá, amely így, bár közel azonosan működik, de néhány metódusban különbözik, nehogy valaki lopással vádolhassa őket.

Csak akkor működik mindenhol, ha sokat szarakodsz veleA webfejlesztők szempontjából ez a sok "apró" eltérés úgy jelenik meg, hogy a munka nagy része nem egy adott böngésző alatti működőképességre koncentrálódik, hanem a lassan könyvtárnyi terjedelmet elfoglaló, teljesen értelmetlen különbözőségek menedzselésére. Így egy széleskörűen működőképes kód úgy néz ki, hogy egy rakás try - catch blokk, illetve egyéb hibakezelési megoldások vannak egymásba ágyazva, abban a reményben, hogy akármilyen egzotikus dzsunga böngészőt is használ a júzer, a sokadik kivételkezelés után csak lesz egy pont, ahol nála is hajlandó működni a cucc.

A slusszpoén ebből egyenesen következik. Mivel a verzióháború manuális kezelgetése erősem a produktivitás rovására megy, amely ("rohanó világunkban, ahol az idő pénz, bla bla bla") jelentős hátrányt jelent a fejlesztőcégeknek, így az igazi megoldást ilyenkor az olyan, előre megírt függvénykönyvtárak használata jelenti, mint amilyen például a Script.aculo.us.

Az egyetlen probléma ezzel, hogy ekkor nem központi ajánlások minél pontosabb követésére fordítod az időt, hanem helyette egy házi keretrendszer készítőinek belső logikája mentén építed fel a kódodat, mely így mindennél távolabb vezet a W3C és ECMA leírások közvetlen használatától.

Ha élni akarsz, akkor nem ragadhatsz le az etikai kódexnél - mondja Grespik. És ugyanígy a központi webajánlásoknál se. Mert a gyakorlatban mindkettő csak dísz.

By SoDI


 
 
0 (0)
Jelentkezz be a szavazáshoz!

Örökös béta

Az áldást sodika küldte 2007. július 30., hétfő - 11:14-kor
Kategóriák: Vállalkozás
Címkék: ingatlantura programozas sodi
6 komment

Ez most amolyan hangos elmélkedés lesz a saját vállalkozásomról.

Akit nem érdekel, ugorjon tovább. :)

  • Tökéletesség 

Azt hiszem, ahogy vizsgálom mások megoldásait, egyre inkább kezdek rájönni, hogy hatalmas akadály a valódi produktivitás előtt, ha valaki a tökéletesség bűvkörében él, és évekig pepecsel egyetlen projekten anélkül, hogy kidobná a nyilvánosság elé.

  • Soha nem lesz kész? Nem is kell!

A Web 2.0 koncepciója pont arról szól, hogy mindig minden béta, és örökké az is marad. A szolgáltatási szemlélet tükrében ez nem hogy hátrány, hanem éppen hogy hatalmas előny!

Egy szolgáltatás akkor igazán kiváló, ha érződik rajta az ügyfél-orientáltság. Vagyis ha a fejlesztők és a felhasználók kölcsönös visszajelzések útján folyamatosan segítik egymás munkáját. Úgy lehet valami igazán képes arra, hogy valós igényeket szolgáljon ki, és valódi értéket nyújtson széles tömegeknek, ha folyamatos változásban van, és hozzáigazodik az újabb és újabb tapasztalatokhoz.

  • Sok apró szemét helyett egy nagy kincsesláda!

Az, hogy a párhuzamosan fejlesztett 5-6 projekt milyen hatalmas erőpocsékolás, arra kiváló példa, hogy egyszerre van a tulajdonomban többek között az autozona.hu, mlmcenter.hu, webmilliomos.hu, videolevel.hu, ingatlanceg.hu, marketingmix.hu, agrarhalo.hu domain, és még jónéhány, itt fel nem sorolt, egyenként 5-10%-os készültségi fokban lévő megoldás, aminek természetesen semmi értelme, hiszen ennyi erővel már régen felállíthattam volna egy olyan tökéletes rendszert, mely után mindenki megnyalná mind a 10 ujját.

(Az igazsághoz persze hozzátartozik, hogy ezek csak a saját személyes projektjeim. Azokat, melyeket valakivel társulva készítek, pl. az angol piacra szánt egyik alkalmazást - melyről részleteiben még korai írnom itt a blogon - egytől egyig a társaim elvárásainak megfelelően, közel kész állapotba juttattam már, vagyis másokkal közel sem vagyok olyan link, mint saját magammal szemben. :-))

Szóval az egymás mellett vezetett személyes projektek koncepciójával egyszer és mindenkorra leálltam, ami azt jelenti, hogy elhatároztam , hogy addig nem kezdek bele új megoldás fejlesztésébe, míg az előző piacképes állapotba nem jut.

Az önmotiváció pedig ott jelenik meg, hogy a piaci bevezetés jutalma, hogy megengedem magamnak egy-egy új szál elindítását. :)

  • Amint használható - rögtön START!

Ez az, ami a legfontosabb. Ez az egész gondolatmenet, a hatékony energiafelhasználás sarokpontja. Nem kell rögtön az elején minden apró ötletet belezsúfolni a megoldásba.

Amint elérkezik az a szint, hogy a piac számára minimálisan már elfogadható a cucc, azonnal el kell indulni! Az extra szolgáltatások pedig jöhetnek utólag, folyamatosan.

Ha belegondolunk, ez a legjobb megoldás, mert ahelyett, hogy a bőség zavarával bizonytalanítanám el a leendő ügyfeleket, egy olyan rendszert kínálok fel nekik, mely a folyamatos megújulás, és gyarapodás jeleit mutatja. Ez pedig mindennél jobban képes megalapozni a bizalmukat, és azt az érzést, hogy jól választottak.

Szóval most a fentiek alapján elhatároztam, hogy záros határidőn belül kiszabadítom magam a tökéletesség-mániából, hogy már a piaci bevezetés konkrét, és meglépett szakaszairól számolhassak be itt a blogon. :)

By SoDI


 
 
0 (0)
Jelentkezz be a szavazáshoz!

I hate C++

Az áldást sodika küldte 2007. május 23., szerda - 22:14-kor
Címkék: c dolgozat egyetem elte programozas
6 komment

Sokan vannak, akik kárhoztatják az olyan belső, "házi" nyelveket, mint amilyen például a Microsoft Visual Basic. Mert hogy beszűkíti a lehetőségeket, megnehezíti az adaptálást más rendszerek alá, a gonoszkapitalisták huncutsága, bla bla bla...

Ehhez képest itt van ez a C++, melyhez, ahány cég foglalkozik vele, annyi féle fordító érhető el. Készített ilyet a Borland, a Microsoft sem maradhatott ki a Visual Studio-val, plusz még ezernyi lelkes csapat gányolja a maga egyéni megoldását. Ezekben az az igazán vicces, hogy - mint ahogy a mai napon volt alkalmam megtapasztalni - sokszor még véletlenül sem adnak azonos kimenetet ugyanarra a kódra.

Ez egy gráf. Bizony.Na mindegy, délután megutáltam az egész szart, ahogy van.

Itt van eredményként ez a cucc, amiről fogalmam sincs, mit szólnának hozzá különböző linux-os fejlesztőeszközök, de pont le is szarom, miután a Windows-os Dev-C++ 4.9.9.2 nevű cucc hajlandó volt rendesen összelinkelni.

Egy csúcsmátrixban ábrázolt gráfnak adja meg az egyik feszítőfáját szélességi bejárás alapján.

És hogy ez mire jó? Arra, hogy legyen gyakjegyem. :)

ELTE Programozási nyelvek 2
C++ beadandó - Feszítőfa szélességi bejárás alapján.

Forráskód (cpp, 11 Kb) + Dokumentáció (pdf, 242 Kb)

By SoDI

Ui.: Pusztuljon az egész, én akkor is a Macromedia belterjes nyelveire fogok fejleszteni, és kész. :) A kockák meg görbüljenek.


 
 
0 (0)
Jelentkezz be a szavazáshoz!

Elfoglaltság

Az áldást sodika küldte 2007. május 20., vasárnap - 16:24-kor
Címkék: corvinus dolgozat egyetem elte programozas
12 komment

CorvinusELTEMint mindig, amikor nincs időm új dolgokat alkotni, mégsem akarom tartalom nélkül hagyni a blogot, most is néhány régebbi cucc lesz közszemlére téve.

 

Megint kaptok egyetemi beadandókat, csak úgy...

  • ELTE, Programozási nyelvek I. - PROLOG beadandó
    (forráskód és dokumentáció: zip)
  • Corvinus, Vezetés és szervezés - Vezetői szerepek áttekintése
    (véleményleíró áttekintés: pdf)
  • ELTE, Programozás módszertan II. - Benzinkút szimuláció
    (forráskód és dokumentáció: zip)

Na akkor most megyek vissza megint egy ilyen baromságot csinálni.

 

By SoDI


 
 
0 (0)
Jelentkezz be a szavazáshoz!

Nyomorult Assembly!

Az áldást sodika küldte 2007. március 28., szerda - 15:59-kor
Címkék: assembly dolgozat egyetem elte programozas
2 komment

jaz eszembly azonnal monnyon le!Mint minden végletekig lusta diákot, engem is gyötör a kérdés, mi a retkes francért kell olyan dolgokat megtanulni, melyet soha a rohadt életben nem fogunk használni. Tanárnak készülök, nem kockafejű fejlesztőnek, innentől pedig tök feleslegesnek tűnik ilyen őrültségek elsajátítása, mint az assembly nyelv.

A hivatalos magyarázat szerint egy informatikatanártól elvárható, legyen fogalma arról, hogy nem csak magas szintű nyelvek léteznek. Oké, akkor meséld el, és elhiszem, vazz. :)

Tudom, a Recognita is ebben íródott, mert így jól meg tudták optimalizálni a cuccot, azonban néhány nagyon specifikus területtől eltekintve a pénzügyi prosperitással megy szembe, ha valaki manapság nem követi azt a trendet, mely a fejlesztési időt teszi elsődleges szemponttá. Pont afelé haladunk, hogy egyre kevesebbet kelljen törődni rutinfeladatokkal, ne fásuljon bele senki a kódoló rabszolgaságba, és így a hasznos munkaidő minél nagyobb hányada álljon kreatív fejlesztőmunkából. Na hát alacsony szintű nyelveknél pont ezek hiányoznak.

Persze hajrában lévő leendő pedagógusként tisztában vagyok vele; itt arról van szó, hogy minden képzés nagy részt készségeket fejleszt, melyre a közvetlenül alkalmazható tudás ezután önállóan tud a későbbiekben ráépülni, de akkor is szívesebben tanul érdekes dolgokat az ember, ha közben kicsit sem fejlődik, nem? :)

Igen kevés motivációval vetettem tehát bele magam a nyelv rejtelmeibe. Mindenesetre a kényszer nagy úr, vasárnap határidő volt, így nyögvenyelősen azért összehoztam a beadandó feladatot, mely két szám legnagyobb közös osztóját keresi meg.

Ide kattintva letölthető az .asm kiterjesztésű forrás.

A fordításhoz és összelinkeléshez a Borland Turbo Assembler and Tools (TASM) ajánlható, mely innen szedhető le. Két utasítás a BIN mappában és fut: tasm oszto.asm, majd tlink oszto.obj, és így kapsz egy oszto.exe-t.

Jó sűrűn tele van kommentezve, de ha valakit érdekel a téma, mégsem ért valamit, tessék kérdezni, szívesen válaszolok. Úgyis át kell néznem mindent, mert holnap reggel írok ZH-t a nyelvből. :)

By SoDI


 
 
0 (0)
Jelentkezz be a szavazáshoz!