PHP Bytekit

Bytekit

Bytekit je nová extenze pro PHP, která umožňuje analyzovat PHP kód na úrovni opcodes, které generuje compiler v PHP. Také nám umožňuje pomocí disassembleru sledovat jak probíhá program na úrovni compileru. Je to další z nástrojů, které umožní zlepšit kvalitu kódu a určitě přinese řadu další analytických nástrojů. Autorem je Stefan Esser, kterého jistě každý zná. Jeho blog a příspěvky k bezpečnosti PHP jsou známy.

Bytekit-cli

Samotná extenze, ale není všechno. Abychom mohli ji dobře využít tak Sebastian Bergmann vytvořil bytekit-cli, které nám umožní ho využít.
V článku od SB jsou pěkné příklady, které doporučuji vyzkoušet. Bytekit zatím není dostupné přes PECL tak ho musíte zkompilovat ze zdrojového kódu, známým postupem (phpize, configure, make, make install) a zkompilovanou extenzi přidat do konfigurace PHP. Potom si z githubu můžete stáhnout aktuální verzi bitekit-cli a můžete si hrát.

Například otestuji jak je na tom s přímým výstupem Zend Framework.

abtris@ubuntu# bytekit --rule=DirectOutput ZendFramework/

 - Direct output of variable $message
    in ZendFramework/demos/Zend/Gdata/YouTubeVideoApp/operations.php:1094

  - Direct output of variable $playlistEntries
    in ZendFramework/demos/Zend/Gdata/YouTubeVideoApp/operations.php:906

  - Direct output of variable $message
    in ZendFramework/demos/Zend/Gdata/YouTubeVideoApp/operations.php:270

  - Direct output of variable $message
    in ZendFramework/demos/Zend/Gdata/YouTubeVideoApp/operations.php:276

  - Direct output of variable $user
    in ZendFramework/demos/Zend/Gdata/Photos.php:796

  - Direct output of variable $albumId
    in ZendFramework/demos/Zend/Gdata/Photos.php:797

  - Direct output of variable $photoId
    in ZendFramework/demos/Zend/Gdata/Photos.php:798

  - Direct output of variable $user
    in ZendFramework/demos/Zend/Gdata/Photos.php:825

  - Direct output of variable $albumId
    in ZendFramework/demos/Zend/Gdata/Photos.php:826

  - Direct output of variable $photoId
    in ZendFramework/demos/Zend/Gdata/Photos.php:827

  - Direct output of variable $user
    in ZendFramework/demos/Zend/Gdata/Photos.php:741

  - Direct output of variable $albumId
    in ZendFramework/demos/Zend/Gdata/Photos.php:742

  - Direct output of variable $user
    in ZendFramework/demos/Zend/Gdata/Photos.php:688

  - Direct output of variable $type
    in ZendFramework/demos/Zend/WebServices/Amazon/amazon-search.php:153

  - Direct output of variable $type
    in ZendFramework/demos/Zend/WebServices/Amazon/amazon-search.php:157

  - Direct output of variable $keywords
    in ZendFramework/demos/Zend/WebServices/Flickr/flickr-composite.php:92

  - Direct output of variable $form
    in ZendFramework/demos/Zend/ProgressBar/ZendForm.php:209

  - Direct output of variable $ret
    in ZendFramework/demos/Zend/OpenId/test_server.php:264

  - Direct output of variable $id
    in ZendFramework/demos/Zend/OpenId/test_consumer.php:115

  - Direct output of variable $response
    in ZendFramework/library/Zend/Rest/Server.php:277

  - Direct output of variable $output
    in ZendFramework/library/Zend/Cache/Frontend/Class.php:226

  - Direct output of variable $data
    in ZendFramework/library/Zend/Cache/Frontend/Page.php:280

  - Direct output of variable $data
    in ZendFramework/library/Zend/Cache/Frontend/Output.php:101

  - Direct output of variable $data
    in ZendFramework/library/Zend/Cache/Frontend/Output.php:65

  - Direct output of variable $output
    in ZendFramework/library/Zend/Cache/Frontend/Function.php:107

  - Direct output of variable $response
    in ZendFramework/library/Zend/Json/Server.php:198

  - Direct output of variable $data
    in ZendFramework/library/Zend/ProgressBar/Adapter/JsPull.php:111

  - Direct output of variable $output
    in ZendFramework/library/Zend/Debug.php:102

  - Direct output of variable $exceptions
    in ZendFramework/library/Zend/Controller/Response/Abstract.php:734

  - Direct output of variable $content
    in ZendFramework/library/Zend/Controller/Response/Abstract.php:546

  - Direct output of variable $output
    in ZendFramework/library/Zend/Tool/Framework/Client/Console.php:194

Používá Zend Framework někde EVAL?

abtris@ubuntu#bytekit --rule=DisallowedOpcodes:EVAL ZendFramework/
 - Disallowed opcode "EVAL"
    in ZendFramework/demos/Zend/Gdata/Health.php:92

  - Disallowed opcode "EVAL"
    in ZendFramework/demos/Zend/Gdata/Health.php:99

  - Disallowed opcode "EVAL"
    in ZendFramework/demos/Zend/Gdata/Health.php:126

  - Disallowed opcode "EVAL"
    in ZendFramework/demos/Zend/Gdata/Health.php:129

  - Disallowed opcode "EVAL"
    in ZendFramework/demos/Zend/Gdata/Health.php:159

  - Disallowed opcode "EVAL"
    in ZendFramework/demos/Zend/Gdata/Health.php:164

  - Disallowed opcode "EVAL"
    in ZendFramework/demos/Zend/Gdata/Health.php:195

  - Disallowed opcode "EVAL"
    in ZendFramework/demos/Zend/Gdata/Health.php:200

  - Disallowed opcode "EVAL"
    in ZendFramework/demos/Zend/Gdata/Health.php:223

  - Disallowed opcode "EVAL"
    in ZendFramework/demos/Zend/Gdata/Health.php:230

  - Disallowed opcode "EVAL"
    in ZendFramework/demos/Zend/Gdata/Health.php:271

Závěr

Stefan Esser ve své přednášce o bezpečnosti Zend Frameworku se zmiňuje o možnosti například kontrolovat EVAL v pre-commitu tasku, obdobně jako například dnes kontroluji syntaxi php.

Koncem září se budu věnovat porovnání PHP Frameworků z hlediska nástrojů pro QA, které jsem dělal v článku pDepend a php frameworky, uvidíme jak jednotlivé frameworky za tu dobu pokročili a také si budu všímat frameworků pomocí dalších nástrojů mezi které bytekit jistě zahrnu.

Nesmím opomenout připomenout také, že je venku PHP 5.3, na které se čekalo poměrně dlouho a doufám jen, že nebude tolik plné chyb jako jeho přechůdci 5.2 a 5.1. Uvidíme zda na příchod PHP 5.3 jsou připraveny i jiné frameworky než Nette.

php, qa

GTD a Android

01.07.2009

O GTD většina vás asi slyšela, pokud ne doporučuji si tuto knihu o timemanagmentu přečíst, dokáže všem zaměstnaným lidem pomoci zvládat svoji práci lépe a efektivně a vyšetřit čas i na další věci, které nestíháte. České vydání knihy David Allen: Mít vše Hotovo, vydal Jan Melvin Publishing a současně spustili webové stránky, které se této problematice věnují, o různých platformách byla řeč a já přidám malé info o Androidu. Na Marketu najdete tyto aplikace, které se dají pro GTD použít, ja jsem ještě přidal aspekt propojení s RTM, které používám.

Seznam testovaných programů pro Android

Screenshoty z aplikací najdete na v galerii.

ActionComplete 1.3.0

Tento program se mi docela líbí, má pěkné ovládání. Dobrá a jednoduchá navigace, nevychází tolik přímo z GTD v pojmenování, ale vše potřebné je tu dostupné. Zálohovat data lze na kartu, bohužel chybí jakákoliv synchronizace s online systémem. Zatím na stránkách je naznačeno, že budou další produkty, které to budou řešit. Ale já nechci mít něco dalšího a dalšího.

Shuffle 1.1.1

Shuffle mi přijde jako nejlepší GTD aplikace pro Android, má jednoduché příjemné ovládání. Dobře se s ní pracuje, ale zásadní nevýhoda je v absence zálohování a synchronizace dat.

NextAction 0.8.3

Jednoduchá a dobře nastavitelná aplikace pro GTD, bohužel také bez synchronizace, ale má zálohování aspoň lokální.

Astrid 2.8.6

Astrid je velmi propracovaná aplikace, která disponuje synchronizací s RTM. Umí úkoly zadávat také do kalendáře což se hodí. V synchronizaci není podpora pro Contexty, SmartFolders a Listy. Vše je maximálně realizováno přes tagy. Dobrý správce úkolů, ale méně se hodí pro GTD, ale stejně asi nejlepší aplikace pro Android.

RTM tasks (v 2009-02-28)

Tato aplikace je geniálně jednoduchá a sám ji mám jako zálohu, pokud se TooDo nedaří synchronizace nebo chci jen rychle přidat úkol do Inboxu. Jak název napoví je určená k práci s úkoly v RTM. Umí jen vybírat list a přidávat, upravovat jednotlivé úkoly a nejde nastavit kontexty ani SmartFolders. Synchronizace fungovala mi bez problémů, ale má méně funkcí což může být pro mobilní zařízení přínos. Nejvíc mi asi vadí, že nejdou přidat poznámky.

TooDo 2.4.3

TooDo mi přijde jako nejpropracovanější aplikace, která implementovala s funkčností dostupných na webových portálech RTM a Toodledo zatím pro Android maximum. Bohužel občas mi nefunguje plně dobře synchronizace mezi programem a webem. Občas se zasekne a nevíte zda to proběhlo jak mělo, případně neoznámí, že synchronizaci vůbec dokončil. Další problém vidím, že se description nesynchronizuje s poznámkami v RTM a vyžaduje být online.

gTasx 1.0.0

gTasx poskytuje jen rozhraní ke službě Google Tasks, kterou lze také použít na GTD. Je to jednoduchý správce úkolů, který nemá moc funkcí.

Zavěr

Náčrt původního článku jsem měl hotový asi před měsícem, proto mohou být někde zastaralejší verze programů. Zvláště Astrid se z 2.6 přehoupl do 2.8 a jeho vývoj dobře pokračuje a doufám, že se dočkáme české verze, pokud máte čas a chuť přiložte také ruku k dílu. V posledních verzích se vylepšila synchronizace s RTM a jediné co mi chybí je podpora List view a ta je planovaná do verze 3.0, které se doufám do konce roku třeba dočkáme pokud vývoj půjde podobným tempem jako doposud.

Pro mě je teď primární aplikaci pro GTD na mobilu Astrid, využívám hlavně toho, že můžu zadat úkoly i když jsem offline a potom je synchronizovat až když se dostanu někam kde je signál. Pokud máte s zkušenosti na Adroidu s dalšími aplikacemi určitě je uveďte do komentářů.

android , ,

Vi a integrace s IDE

23.06.2009

Jak jsem přešel na Ubuntu oblíbil jsem si editor Vim, který v terminálu používám primárně a i když ho neumím využít jistě zatím naplno, hodně věcí mi ulehčuje a dobře se v něm pracuje. Hlavně jsem si oblíbil vyhledávání.

Pokud chcete Vim využívat naplno chce to pracovat v něm co nejvíce a proto jsem se podíval zda některé IDE podporují Vim a jak jsou na tom.

Podporu jsem otestoval v těchto IDE:

Eclipse pluginy

http://www.viplugin.com/viplugin/ – placený, licence stojí 15 EUR

http://www.vimplugin.org/ – nefunguje moc dobře, je zastaralý a nepodporuje přímo stavovou řádku Vi

Netbeans jvi plugin

http://www.netbeans.org/kb/55/vi-integration.html – popis instalace do Netbeans

Závěr

V těchto IDE je podpora velmi slušná a dá se s tím Vi pěkně pracovat. U Eclipse musíte dokoupit plugin, což je jediná nevýhoda. Pokud víte o dalších pluginech pro IDE tak to prosím napište do komentářů.

ide , ,

9 a půl týdne s Androidem dokončení

01.06.2009

V minulém článku jsem se věnoval praktickému použití telefonu s Androidem, ale nechtěl jsem tam uvádět moc svoje subjektivní hodnocení. Problém je, že hodnotíte G1 jako telefon nebo hodnotíte Android jako platformu?

Řekl bych, že většina záporů, které vůči G1 mám jde na vrub výrobci telefonu HTC a ne Googlu, který vytvořil Android. Ale přece jenom si občas nejsem jistý zda 100% viny lze házet na HTC.

Mezi hlavní zápory vidím:

  • Malá výdrž baterie, při provozu (čtu emaily, v MHD RSS a zadávám schůzky, tasky během dne) jsem rád když vydrží půl dne.
  • Občas mám problém s dotykovým displayem, jeho citlivost není nic moc. Už se mi párkrát stalo, že jsem volal někam kam nechci apod.
  • Občasná pomalost telefonu, připadá mi že RAM je velmi málo a bez Task manageru a pravidelného čištění paměti se občas zpomaluje neskutečně.
  • Fotoaparát je sice 3.2 Mpx, ale stačí rychlejší pohyb nebo trochu méně světla a je to celkem nepoužitelné. Snapphoto to může trochu vylepšit, ale blesk nepřidá. Dnes bych čekal trochu lepší kvalitu i v mobilu.

Závěr

Celkově ale myslím, že platforma Android má celkem budoucnost. Některé aplikace, které dodává Google by se mohli vylepšit. Chybí mi přímo v systému správce souborů a taskmanager. Mohla by časem přijít podpora pro další Google aplikace.

Něco na konec

Jedna vzpomínka na dětství

sketch1

a dobu před revolucí.

nupagagi1

android

9 a půl týdne s Androidem

Hledal jsem delší dobu nový telefon na který jsem měl několik požadavků:

  1. musí bez problémů fungovat na linuxu
  2. musí mít wifi
  3. měl by mít GPS
  4. musí umět s emaily (Gmail, imaps)
  5. podpora pro ical (Gmail)
  6. něco na úkoly (RTM)

Těch telefonů co splňovali tyto podmínky moc není, poohlížel jsem se po Iphone, ale tam mi vadilo, že pro všechnu činnost potřebuji iTunes, které pod linux nejsou a v dohledné době peníze na Maca nemám. A jako vývojáři se mi moc nelíbí politika Apple na jejich Appstoru.

Pro Android rozhodlo také to, že jsem měl možnost si ho vyzkoušet a také SDK a emulátor založený na Eclipse, přes který jsem si mohl ozkoušet práci se svým Gmail účtem a programy, které jsem našel na internetu.

Telefon, ale kromě samotné platformy dělají hlavně aplikace, až za čas se ukáže jak kvalitní aplikace vznikají. Rozdělil jsem aplikace do několika oblastí a uvedu ty, které jsem si zatím oblíbil a něco mi přinesli.

Telefonování

  • StarContact – nahradí hledání v kontaktech, pomocí T9 a také umí prohledávat položky jako je Notes, Company apod. což často potřebuji
  • Birthday reminder – aplikace, která přidá připomenutí narozenin, ukládá se to jako poznámka do kontaktů a proto se to synchronizuje s google kontakty
  • Profiles – přepínání profilů Outboor, Normal, Vibrace, Silent jako u běžného mobilu. Bohužel nejdou přesně konfigurovat i notifikace aplikací jako je email v jednotlivých profilech. Asi bych chtěl moc.
  • Phonalyzr – analyzátor hovorů, kolik komu voláte, jak dlouho apod.

Widgets

  • Quick Calendar – kalendář do notification bar doplněný widgetem na plochu, který zabírá 3 icony.
  • tCalendar – widget, který mám hned vedle Quickcalendar, který doplní informaci o datumu a dnu v týdnu

SMS a MMS

  • SMS Popup – doplní defaultní aplikaci pro SMS, která mi vyhovuje o okno když SMS přijde.

Mapy

  • My Tracks – aplikace, která dělá záznam cesty, který umožňuje odeslat např. do MyMaps na Google
  • My Maps Editor – editor MyMaps na Googlu
  • GPS status 2 – ukazuje nastavení GPS, počet satelitů, polohu atd.
  • Sky Map – úžasná aplikace pro amatérské astronomy, ukážete na telefonem na planetu nebo hvězdu v noci a telefon vám řekne jak se jmenuje, ukáže navažující souhvězdí

TODO - Remember the milk je slušná aplikace na správu úkolů, v které můžete dobře uplatnit i GTD.

  • RTM tasks – klient pro RTM, jednoduchý, neumí tagy, kontexty ani poznámky, ale funguje celkem spolehlivě, používám ho na rychlé zadání úkolu do Inboxu
  • Astrid – pokročilý správce úkolů, RTM synchronizace, umožňuje přidávat tagy, 1 poznámku, opakující se úkoly. Občasné problémy se synchronizací, nezná smart listy.

Ještě si tu trochu povzdechnu, mám rád GTD metodiku a snažím se si tím ušetřit čas. Bohužel pro Android zatím neexistuje aplikace, která by se uměla dobře synchronizovat s RTM a přitom také implementovala všechny výborné vlastnosti co RTM umí (lokace, smart listy, kontexty, tagy). Ale vývoj aplikací jde dopředu a doufám, že do konce roku bude slušná aplikace na světě.

IM + Social

  • Meebo IM – IM klient pro všechno (ICQ, MSN, Jabber, Gtalk, vše v jednom)
  • Skype – skype client
  • Twidroid – Twitter klient
  • Greed – RSS čtečka s napojením na Google Reader

Tools

Hry – pár těch co teď mám v telefonu, jsou další dobré jako Bonsai Blast, Pacman, atd.

  • Solitaire – klasické karty
  • Robot Defense – klasické defense tower, asi nejzábavnější hra zatím na Androidu
  • Abduction – pro neúnavné milovníky skákajících zvířat

Pokud máte nějakou aplikaci bez které se neobejdete dejte mi vědět v komentářích, třeba se mi bude hodit také.

android