tomajov blog blogov

alebo OFCA Free Command analyzer je najpokrokovejší jazyk vo svojej kategórií grammar insensitive jazykov :-) Konečne sa OFCA dostala na github - OFCA na githube. Odporúčam pozrieť popis priamo tam, keďže tento jazyk nie je len tak obyčajný.
Dnes 29.4 sa uskutočnila ďalšia prezentácia v rámci cyklu MONOGRAM Tech Monday :-) Hovorili sme o tom ako sa za posledné roky posunul vývoj webového frontendu primárne na poli HTML a CSS.
Tu je moja prezentácia:
Pred nedávnom som si kúpil Kindle Paperwhite a po presťahovaní MONOGRAM-u do mlynskej doliny som ho začal veľmi aktívne využívať, pretože som nútený stráviť v MHD viac ako 10min denne. Založil som si preto nový blog – Tomaj číta, kde je možné nájsť moje krátke poznámky k veciam čo ma zaujali.
Pred pár dňami mi viacero udalostí pripomenulo minuloročný čas, kedysom končil školu a dokončoval diplomovku. Okrem samotnej diplomovky som sa vtedy s mojom prácou zúčastnil aj študentskej konferencie IITSRC 2011, súťaže ACM SPY o najlepšiu diplomovku a rovnako som spolu s mojím vedúcim napísal článok, ktorý bol prijatý na konferenciu SOFSEM a uverejnený vydavateľstvomSpringer.
Vo svojej diplomovke som sa venoval mikroblogu Twitter. Navrhol som metódu pre ohodnotenie stránok, na ktoré odkazujú tweety. Vyhodnotil som váhu používateľov, ktorú som následne prenášal na ich tweety a tiež som do výpočtu zakomponoval aj špecifické vlastnosti Twitteru ako napríklad re-tweetovanie.
Spätne hodnotím túto diplomovku ako pre mňa veľmi zaujímavú a obohacujúcu. A to či už z pohľadu technologického, kde som sa naučil pracovať s rôznymi technológiami, ako napríklad Hadoop a rovnako aj z pohľadu analytického, kde som sa dlhodobo venoval jednej veci a pravidelne po iteráciách sa posúval ďalej, či už v študovaní problematiky, alebo pri návrhu a vývoji vlastného hodnotiaceho algoritmu. Všetko toto sa mi samozrejme podarilo vďaka skvelému vedúcemu.
Celú diplomovku, ako som ju odovzdal je možné nájsť tu. Avšak ako najväčší úspech je asi uverejnenie článku z konferencie SOFSEM. Danej konferencie som sa nezúčastnil, avšak môj vedúci naše výsledky odprezentoval:
Knižnica MONOGRAM EPayment poskytuje rozhranie pre prácu s platbami na internete cez Slovenské banky. Táto knižnica pri použití s PHP 5.3 generovanla rôzne deprecat ed warningy. Na Github som nahodil novú verziu knižnice, ktorá opravuje tieto warmingy. Do knižnice som pridal aj csska z Bootstrapu aby tie testovacie formuláre nevyzerali tak obyčajne (serverová C# čast je stále pôvodná).
Knižnicu je možné nájsť na tejto linke.
Včera sa uskutočnilo ďalšie stretnutie MONOGRAM Tech Monoday, kde som mal možnosť podeliť sa o skúsenosti so spracovaním veľkých dát.
Často v práci riešime rôzne veci a rôzne technológie a keďže nás pomerne rýchlo pribúda a ľudí začína byť viac, rozhodli sme sa barové debaty o nových technológiách trochu zatraktívniť pre všetkých v MONOGRAMe. A tak vznikol MONOGRAM Tech Monday, kde sa dnes predstavili 2 nové technológie. Jednou z nich bola NoSQL databáza Redis a druhou bol verzionovací systém GIT, ku ktorému prechovávam veľkú náklonnosť a ktorý som mal česť predstaviť. Celú prezentáciu je možné nájsť v príspevku tohto blogpostu. Prezentáciu o Redise je možné nájsť nablogu kolegu Ľuba.
Upgrade Ubuntu z 10 na 11 ma mierne nahneval. Celé ubuntu sa spomalilo asi trojnásobne a naozaj sa s ním nedalo pracovať. Mal som v MONOGRAMe k dispozícii jeden desktop (ktorý som začal používať namiesto nefunkčného notebooku s ubuntu), tak som si
tam nahodil potrebné veci, aby som mohol aj niečo robiť, pretože s tým ubuntu sa už naozaj nedalo. Unity som vypol asi po hodine, ale nepomohlo to, stále to šlo extrémne pomaly. Pod 64 bitovým Windowsom som natrafil na menší problém. Po inštalácii Apache servera a PHP som potreboval memcache. Operácia vo väčšine linuxových distribúcií vskutku triviálna sa stala pohromou. Všetky dllka php_memcache.dll slúžiace pre prácu s memcache serverom v php boli skompilované pre 32 bitový systém. Čo mne, samozrejme, nefungovalo, hoci server opticky nabehol korektne. Vyskúšal som viaceré verzie a furt nič. Vzhľadom na to, že daný problém riešilo už viacero ľudí u nás v MONOGRAMe, som sa rozhodol napísať krátky blogpost. Popis inštalácie memcache servera je možné nájsť napríkladtu. Na internete ich je ale hŕba :-) Netreba však použiť dllku, na ktorú sa daný návod odkazuje, ale je treba stiahnuť verziu z tejto stránky. S týmto mi to už funguje ako má :-)

Pri vytváraní komplexných a zložitých aplikácií sa môže veľmi často hodiť nástroj, pomocou ktorého je možné identifikovať časti, ktoré využívajú veľa systémových prostriedkov, alebo sa vykonávajú príliš dlho. Tieto úlohy dokáže riešiť práve profiler.
Pri programovaní väčšinou ľudia rozmýšľajú nad problémom, ktorý riešia. Preto často nastáva situácia, že vzniknutý modul alebo jeho časť nefunguje dostatočne rýchlo a je nutné ho optimalizovať. Samozrejme, dá sa na namietať, že programátor, ktorý modul naprogramoval neefektívne, nie je dobrý programátor. Nemyslím si však, že to musí byť vždy pravda. Často je možné naprogramovať veľmi pekné riešenie problému, ktoré rieši daný problém veľmi elegantne a pomerne priamočiaro, avšak vzhľadom na implementáciu PHP alebo ďalších pridruženým technológiám, to nie je v praxi použiteľné. Preto treba vždy hľadať vhodný kompromis medzi optimalizáciou a “priamočiarosťou” a “eleganciou” riešenia problému.
Dnes už existuje viacero PHP Profilerov. Je možné použiť XDebug a následne jeho výstupy analyzovať pomocou niektorého z viacerých dostupných nástrojov (napríklad KCacheGrind). Doteraz sa mne osobne najviac pozdával profiler, ktorý bol súčasťou Zend Servera. Fungoval pomerne jednoducho, avšak nefungoval mi na veľkých projektov dobre. Flash aplikácia pri veľkých dátach a hlbokých vnoreniach funkcií prestávala fungovať a padala na použití pamäte a iných limitoch. Ďalšou nevýhodou je, že tento profiler nie je zadarmo a je v platenej verzii Zend Servera. Takže som hľadal alternatívu a našiel som profiler, ktorý mi vyhovuje a poskytuje informácie, ktoré ma zaujímajú. Ide o profiler vytvorený vo Facebooku, ktorý sa voláXHProf.
Profiler XHProf je v podstate jednoduchým modulom do PHP spolu s ďalšími PHP skriptami pre zobrazovanie výsledkov. Stačí ho stiahnuť a zapnúť. Následne sa všetko profilovanie deje v rámci aplikácie a plne pod jej kontrolou. Profiler je možné v aplikácií kedykoľvek zapnúť a kedykoľvek vypnúť. Profiler ako taký generuje na konci výstup ktorý, je možné analyzovať a zobrazovať priamo skriptami, ktoré sú pridružené v balíčku s profilerom, alebo je možné si naprogramovať aj nejaké vlastné zobrazovacie skripty, ktoré sa môžu zameriavať na špecifické veci podľa potreby.
Celým výstupom profileru je dá sa povedať tabuľka s funkciami. V tejto tabuľke je možné sledovať základne ukazovatele:
Podľa týchto hodnôt je možné dané funkcie zoraďovať, čiže veľmi ľahko je možné identifikovať, ktoré funkcie sú tie, ktoré požierajú najviac času a systémových prostriedkov. Pri profilovaní je možné vypnúť profilovanie natívnych php funkcii, čo umožní sústrediť sa na funkcie v danej aplikácií.
Využitie profilera sa mi osvedčilo hlavne na serveroch. Vzhľadom na to, že ho je možné integrovať priamo do aplikácie, je možné nastaviť proces profilovania tak, že po pridaní špeciálneho getového parametra alebo po nastavení špeciálnej cookie v prehliadači sa aktuálny beh stránky zbehne profilerom. Odkaz na tieto výsledky sa následne vloží na stránku a takto sa zabezpečí bezproblémové profilovanie aktuálne bežiacej aplikácie. Akonáhle sa vyskytne nejaký problém, alebo niečo beží dlhšie ako by malo, stačí pridať prepínač a v pohodlí prehliadača sa pozrieť na to, čo sa vo vnútri na serveri deje.
Profiler XHProf má asi iba jednu nevýhodu a tou je, že beží len pod 64 bitovým linuxom, čo je dá sa povedať štandard pre všetky veci vyvíjané vo Facebooku (ako napr. aj HipHop, ktorý ide tiež len pod 64 bit linuxom). Inak je to naozaj veľmi dobrý pomocník a pri vhodnom nastavení na serveroch, kde sa testujú aplikácie alebo aj reálne bežia je užitočnou pomôckou, ktorá dokáže ušetriť veľa času.
Modul pre vkladanie Google Analytics javascriptového kodu do stránok v cms TYPO3.
Základné vlastnosti modulu:
Použitie modulu je naozaj veľmi jednoduché. Samozrejme treba ho najprv stiahnuť, importnuť do projektu a zapnúť cez Extension Manager. Nastavenie celého modulu prebieha v typoscript šablóne danej stránky. Odporúčam nastaviť pre hlavnú šablónu na stránke, čo v prípade, že máme len jednu šablónu v projekte zaručí, že GA kód bude vo všetkých podstránkach. Jednoduchá konfigurácia môže vyzerať napríklad takto
Vlastnosť ga_type špecifikuje typ GA kódu(1 => default, starý kódurchin.js; 2=> nový kód ga.js). Vlastnosť ga_code je povinná, bez špecifikovania tejto vlastnosti sa kód nevygeneruje. Je potrebné nastaviť špecifický kód, ktorý GA vygeneroval v danom formáte. Po nastavení je potrebné tento kód vložiť niekam do stránky. Odporúčam úplne na koniec stránky, napríklad takto do objektu page:
page.1000 < plugin.tx_monoga_pi1
Samozrejme je potrebné predtým objekt page vytvoriť. Odporúčam tento riadok umiestniť úplne na koniec typoscript šablóny.
Ďalšie veci, ktoré sa dajú nastaviť vysvetlím na zložitejšom príklade ako je napríklad tento:
V tomto príklade je už nastavená hlavná doména webu a tiež sú pridané vyhľadávače, z ktorých chceme sledovať návštevnosť našej stránky.
Detailnejší popis nastavení a oficiálna dokumentácia sa dá najsť tu (oficiálna dokumentácia). Stiahnúť tento modul je možné z oficiálneho TYPO3 repozitára priamo v Ext. Manazeri, alebo samozrejme aj cez web rozhranie na TYPO3 stránke (mono_ga.t3x)