Klávesové zkratky na tomto webu - rozšířené Na obsah stránky

Apel na hostéry: chceme PHP 5.3!

PHP

Drazí provozovatelé hostingů, už je to tady. Před bezmála půl rokem vyšlo PHP 5.3.0. Přirozený nástupce řady 5.2 bez zpětně nekompatibilních změn. Víme, že jste s nasazením čekali, než se objeví následující setinková verze. Dnes se tak stalo, PHP 5.3.1 je venku.

Trojková řada přináší velké množství vylepšení, na které my, krásní a bohatí programátoři, toužebně čekáme. Neotálejte proto více a novou verzi PHP nám dopřejte. Když budete chtít, stihnete ji nasadit ještě dnes v noci! Stejně v televizi nedávají nic zajímavého. Děkujeme!

(tipy na hostingy, které už novou verzi mají, můžete posílat do komentářů)

clock 19. 11. 2009 pencil PHP comments Komentáře: 28


NETTE!!! OSTRAVA!!!

Mam novinu jak cyp! Tak 11.11. v 11.11 ho­din (by si to zapamatovaly i babky z Ludgeřovic) zfarame na 3 hodiny na Bani (Vysoke škole pro štajgery). Esli nas nezavali, řeknu vam o vyvoji webových aplikací v PHP a Nette Framework. Bude to tu v baraku RV101.

Fajne logo jak od Najbrtu

Zfarat možu fšeci, kere zajima vyvoj webovych aplikaci, ať už dělaji jakesik programovaci jazyky nebo maji framework co o něm neslyšela ani svačinařka z NHKG. Jo! A je to zadara!

Řekneme a ukažem si:

  • jake je fajne používat frameworky
  • základy Nette Framework co je to AJAX, DRY, KISSMVC
  • ukážu, jak s využitím Nette Frameworku vývoj aplikací zjednodušit, urychlit a eliminovat bezpečnostní rizika
  • zkusíme si něco naprogramovat

Jako esli bude aj ohňostroj jak na odpustu v Kravařu to nevim, ale aji tak to bude fajne, takže dovalte na faračku! (Je to taky na xichtbuku).

clock 29. 10. 2009 pencil Nette comments Komentáře: 24


Čistý Programátorský Experiment

Dovolte mi malý experiment. Týká se všech programátorů, které baví návrh aplikací a OOP. Zadám vám velmi jednoduchý úkol, který má mnoho možných řešení. A spíš než konkrétní kód mě zajímá způsob uvažování. Budu rád, když se zapojí programátoři používající různé jazyky. Proto také zadání zapíši v pseudokódu.

Mějme třídu WebPage, které zadáme URL a ona načte stránku a vrátí jeji obsah, hlavičky a dokonce i náhled v podobě obrázku. Příklad použití:

page = new WebPage
page.url = 'http://phpfashion.com'
echo page.url
echo page.body
echo page.headers
echo page.thumbnail

Chápejme url, body, headers a thumbnail jako vlastnosti (properties, accessors) třídy WebPage. Je asi zřejmé z logiky věci a principu zapouzdření, že zatímco url umožňuje zápis i čtení, ostatní vlastnosti lze pouze číst.

Protože funkčnost třídy WebPage je výkonnostně i časově náročná, je vhodné jednou získaná data ukládat do databáze. Jak to ale implementovat? Sice nejsnadnější by bylo rovnou upravit kód třídy WebPage, jenže takový postup je špinavý. Proč by třída s jednou srozumitelnou funkcionalitou měla navíc ještě komunikovat s databází? Pověříme tím tedy třídu WebPageStorage. Ta nám bude, mimo jiné, schopna dodat objekt WebPage rovnou z databáze:

page = WebPageStorage.load('http://phpfashion.com')
echo page.url
echo page.body
echo page.headers
echo page.thumbnail

Otázka zní: jak to naprogramovat?

Zopakuji, že se pídíme po nejčistším řešení. Jak docílit toho, aby metoda load mohla vytvořit objekt a nastavit mu read-only vlastnosti body, headers a thumbnail na hodnoty načtené z databáze? Vytvořením setterů nebo zpřístupněním vnitřních proměnných by se porušil princip zapouzdření. Navrhli byste redesign třídy WebPage? Jaký? Navrhli byste redesign WebPageStorage? A co když úkol zkomplikujeme tím, že thumbnail se z databáze načte až při vyžádání?

Věřím tomu, že pro řadu čtenářů je zadání naprosto triviální. Přesto se zkuste zamyslet nad nejčistším řešením a vysvětlete jej v komentářích. Klidně obšírně. Díky!

clock 28. 10. 2009 pencil PHP comments Komentáře: 84


Ukázkový příklad z WebExpa 2009

Na WebExpu jsem měl přednášku nazvanou RIA jednoduše – JavaScript + AJAX + PHP + Nette Framework. Pokusil jsem se ukázat, jak snadno lze psát AJAXové aplikace za použití Nette Framework a jQuery. Během přednášky vznikl jednoduchý příklad, který vám nyní dávám ke stažení.

Protože přednáška byla zaměřená na začátečníky a posluchače, kteří Nette Framework zatím neznají, začal jsem na zelené louce stažením frameworku z webu a poté psal celý kód naživo. Doufal jsem, že divák spíš odpustí různá zaškobrtnutí, která k živému programování patří, než abych z rukávu vycopy&pastoval předpřipravené kusy kódu a posluchače připravil o niť. Ale sebekriticky přiznávám, že nervozita zapracovala a těch zaškobrtnutí mělo být mnohem méně :-)

Ovocný příklad si můžete vyzkoušet on-line – ovoce a zeleninu můžete přetahovat po ploše, přičemž jejich polohu si server pamatuje v session a tak zůstane zachována i po obnovení stránky. Dále lze plody matky Země přetahovat do modrého nákupního košíku.

Kód jsem ještě doplnil o pár komentářů, aby byl srozumitelnější, a vy si jej můžete stáhnout:

WebExpo2009.de­mo.zip

Video z přednášky zatím není k dispozici, ale mělo by se objevit na StreamHostingu.

clock 21. 10. 2009 pencil Nette comments Komentáře: 16


Jak zazálohovat všechny své twíty

Pokud máte dojem, že ty 140 znakové kravinky, co píšete na Twitter, je nutné zálohovat pro příští generace, ať už z důvodu, že Twitter má občas výpadky doprovázené ztrátou dat, nebo vám někdo může účet ukrást a smazat, nebo se blížíte k limitu 3200 štěbetnutí, po kterém se (prý) nejstarší kusy odmazávají, nebo prostě chcete mít vše na disku kvůli lepšímu vyhledávání, je tento článek pro vás.

Protože jsme na blogu o PHP, nebudu zde popisovat online služby určené k zálohování, ale rovnou vypustím z klávesnice kus kvalitního objektového kódu ;)

Nejprve si stáhněte knihovničku Twitter for PHP (verzi 1.2) od stejnojmenného autora s autorem blogu. A pak si vytvořte zálohovač twitter-backup.php:

<?php
set_time_limit(0);

require 'twitter.class.php';

$twitter = new Twitter('davidgrudl', '......'); // zde dejte své přihlašovací údaje

// naráz lze načíst maximálně 200 twittů, tož budeme stránkovat
$page = 1;
do {
        try {
                $channel = $twitter->load(Twitter::ME, 200, $page);
                if (empty($channel->status)) { // prázdný výstup? narazili jsme na konec
                        break;
                }
                file_put_contents("twitter-backup.$page.xml", $channel->asXml());
                echo "Uložena stránka č.$page<br>";
                $page++;

        } catch (TwitterException $e) {
                echo 'Error: ', $e->getMessage();
                exit;
        }
} while (TRUE);

Po spuštění se vytvoří soubory twitter-backup.1.xml, twitter-backup.2.xml atd., podle toho, jak jste aktivní štěbetal. XML obsahuje skutečně vše, včetně informací, na koho zpráva reaguje, z jakého zařízení byla poslána nebo jaké máte barvičky v profilu.

clock 12. 9. 2009 pencil PHP comments Komentáře: 9


phpFashion © 2004, 2010 David Grudlo webu

Pokud není uvedeno jinak, podléhá obsah těchto stránek licenci Creative Commons BY-NC-ND Creative Commons License BY-NC-ND

Ukázky zdrojových kódů smíte používat s uvedením autora a URL tohoto webu bez dalších omezení.