Michal Čihař - Blog Archives for Czech

Zmatení z Czech Open Source

Když jsem dneska viděl anketu na rootu , na první pohled jsem si myslel, že se někdo zbláznil a dostaly se tam dva projekty na kterých dělám - Wammu a phpMyAdmin . Po bližším zkoumání se ukázalo, že tam mám jenom jeden a phpMinAdmin opravdu není phpMyAdmin, jak si zabudovaná oprava překlepů v mozku původně domyslela.

Když si vzpomenu, kolik open source projektů muselo změnit jméno kvůli podobností názvu s nějakým komerčním produktem, tak si říkám, jak by to dopadlo tady (ne že bych měl něco takového v plánu). Ale stejně by mě zajímalo kolik lidí si to splete a bude si myslet, že hlasují pro phpMyAdmina :-).

PS: Jinak samozřejmě hlasujte pro Wammu, ať taky něco vyhraju (i když vůbec netuším co že tam projekty mají vyhrát :-)).

Summer of code 2008 s phpMyAdminem

Přestože phpMyAdmin nebyl vybrán mezi projekty účastnící se Google Summer of Code , díky kolegům z MySQL se projekty na vylepšení phpMyAdmina mohou této akce zúčastnit. Pokud tedy studujete a chcete si přes léto přivydělat peníze pomocí phpMyAdminovi, můžete inspiraci čerpat z  našich nápadů na vylepšení , nebo přijít z vlastním nápadem. Nabídka od MySQL přišla na poslední chvíli, tak se rozmýšlejte rychle, poslední šance na odeslání přihlášek do Googlu je 7. dubna.

phpMyAdmin se přihlásil do Hackontestu

Tým phpMyAdmina by se rád zúčastnil programátorské soutěže Hackontest , která se koná koncem září v Curichu. Během 24 hodin budou tři týmy vybrané komisí implementovat vlastnost, kterou si uživatelé budou nejvíce přát. Pokud chcete pomoci phpMyAdminovi se účastnit na této soutěži, navrhujte nebo hlasujte pro nové vlastnosti phpMyAdmina na http://www.hackontest.org .

Aktualizována kniha o phpMyAdminovi

Anglická kniha o phpMyAdminovi byla aktualizována pro současnou řadu phpMyAdmina – 2.11. Pokud vládnete angličtinou, tak pro vás může být ideálním zdrojem informací. Zakoupením této knihy přispíváte i přímo projektu phpMyAdmin! Více informací o novém vydání naleznete na stránkách vydavatelství .

Import dat

Občas do databáze potřebujeme také nahrát data získaná v jiných programech. I pro tuto možnost phpMyAdmin nabízí podporu ve svém rozhraní, ale pokud budete potřebovat pracovat s většími objemy dat, je lepší použít některé nástroje pro příkazovou řádku.

Množství formátů pro import není ani zdaleka tak rozsáhlé jako u možností pro export  – phpMyAdmin podporuje import jen pro CSV, SQL a DocSQL soubory. Stejně tak jako u exportu ale máte možnost si napsat vlastní modul pro práci s vaším souborovým formátem, rozhraní pro moduly je podobné jako u  exportních modulů .

Omezení

Protože zpracování dat dochází na straně web serveru a data jsou přenášena přes HTTP, může u velkých objemů dat dojít k vypršení různých časových limitů. Limit běhu PHP (pokud to nastavení PHP umožňuje, například v safe mode to není možné) můžete nastavit pomocí proměnné $cfg['ExecTimeLimit'] . Nastavením na nulu omezení doby času běhu PHP odstraníme úplně. Nicméně pořád ještě může vypršet časový limit HTTP přenosu, který nemůžeme nijak ovlivnit.

Další omezení je velikost nahraného souboru. Toto upravují parametry upload_max_filesize a post_max_size v nastaveních PHP (soubor php.ini nebo případně .htaccess s lokálním nastavením pro některé adresáře). Oba tyto parametry omezují maximální velikost souboru, který lze na server nahrát. Vše výše zmíněné předpokládá povolení nahrávání souborů pomocí direktivy file_uploads .

Poslední omezení na které můžeme narazit je velikosti použité paměti. To je možné opět nastavit v phpMyAdminovi pomocí proměnné $cfg['MemoryLimit'] .

Jak zpracovat velké soubory

Pokud přes phpMyAdmina potřebujeme pracovat s velkými soubory, máme přes popsaná omezení několik možností.

Nejpohodlnější je nahrát soubor na server jinou cestou a v phpMyAdminovi povolit načítání souborů pro import ze serveru:

 
  $cfg['UploadDir'] = './upload';
 

Nyní nám phpMyAdmin nabídne na stránce pro import i soubory uložené v tomto adresáři a tímto se vyhneme problémům s HTTP přenosem. Ale pořád zůstávají omezení na spotřebovanou paměť a dobu běhu PHP.

Tyto omezení můžeme obejít částečným importováním souboru dokud ho nezpracujeme celý. Pokud je povolen částečný import phpMyAdmin se snaží předem detekovat situaci kdy by došlo k dosažení těchto limitů a pokud toto hrozí import se přeruší. Opětovným odesláním formuláře bude import pokračovat od poslední zpracované pozice. V případě že jsme soubor nahrávali přes HTTP musíme však soubor nahrát znovu.

Formáty dat

Pro všechny formáty je možné vybrat znakovou sadu, ve které je soubor a phpMyAdmin automaticky rozezná případnou kompresi souborů (gzip, bzip2 a zip, ale záleží na tom co vaše PHP podporuje).

SQL

SQL export asi není třeba rozebírat, jen je možné nastavit režim kompatibility, v jakém se bude dotaz provávět.

CSV

Do jednotlivých tabulek je možné nahrávat data z CSV souborů (tento import tedy funguje jen pro jednotlivé tabulky a ne pro celou databázi). U CSV importu je možné nastavit řadu parametrů určující jak je soubor formátován (oddělovače sloupců, řádků a podobně). Pokud to MySQL server povoluje, je možné také kromě parseru v phpMyAdminovi použít příkaz MySQL LOAD DATA . Tato volba je obvykle rychlejší, ale nenabízí tolik možností ovlivnění běhu a v některých konfiguracích MySQL serveru ji nelze použít.

DocSQL

Toto je dnes již poměrně historický formát pro popis tabulek a phpMyAdmin umí podle tohoto popisu tabulky vytvořit. Protože se jedná o vytváření tabulek, tento import je dostupný jen pro databázi.

Informace o stavu MySQL serveru podruhé - další informace

Před týdnem jsme se podívali na stránku zobrazující stav serveru, ale to zdaleka není jediná možnost jak se podívat co se na serveru děje.

Probíhající SQL dotazy a jejich historie

Pokud je MySQL server hodně zatížen, může být snadné identifikovat viníka ze seznamu běžících dotazů . Pro každý dotaz zde vidíme jak dlouho běží, který uživatel ho spustil a můžeme ho také ukončit.

MySQL server uchovává historii dotazů, které nějak měnily (nebo mohly změnit) data na serveru. Tento log si můžete prohlédnout na stránce s  binárními logy . Prohledávání tohoto seznamu však může být poměrně časově náročné.

Podporovaná úložiště a jejich stav

Další zajímavou stránkou může být seznam podporovaných úložišť . Kromě jejich přehledu se zde po kliknutí na ně dozvíme i informace o jejich stavu a případně o proměnných ovlivňujících jejich chování. Nejvíce informací je v současné době dostupné pro InnoDB.

Znakové sady a porovnání

MySQL server v současné době podporuje mnoho znakových sad a pro většinu z nich i více možností porovnávání. Podrobnější informace na toto téma již přinesl článek o  problémech s češtinou . Seznam znakových sad, které podporuje váš MySQL server, naleznete na samostatné stránce . Zvýrazněná porovnání jsou výchozí pro danou znakovou sadu.

Proměnné a nastavení serveru

Proměnné a nastavení serveru je poslední část kterou si dnes projdeme. Jsou na ní vypsány všechny proměnné MySQL serveru a jejich hodnoty. Pokud se nastavení aktuálního připojení liší od globálního nastavení, je tato proměnná zvýrazněna a jsou vypsány obě hodnoty.

A nyní již můžete pomocí phpMyAdmina zjistit vše co se na vašem MySQL serveru děje a jaké možnosti má zakompilovány.

Informace o stavu MySQL serveru poprvé - stav serveru

Kromě správy MySQL serveru vám phpMyAdmin nabízí i možnosti jak se dozvědět zajímavé informace o jeho stavu. Sledováním těchto informací můžete optimalizovat běh vašeho MySQL serveru.

Než se pustím do rozebírání jednotlivých informací, musím upozornit, že v MySQL u vašeho provozovatele nemusíte mít oprávnění vidět všechny tyto stránky. Veškeré tyto informace jsou obvykle dostupné jen správci serveru.

Stav serveru

Pokud chceme zjistit stav serveru, celkem logicky se podíváme na záložku nazvanou stav serveru a phpMyAdmin nás zahltí informacemi, které získal od MySQL serveru. Jak se v nich ale vyznat?

V následujících několika odstavcích si popíšeme jednotlivé položky, ale nejdříve několik obecných informací. phpMyAdmin se snaží poznat, které hodnoty jsou vyloženě špatné nebo dobré a ty barevně zvýraznit. Červené hodnoty tedy stojí za prozkoumání a ze zelených můžete mít radost, jak dobře máte MySQL server nastavený. Toto hodnocení ale vychází z průměrného používání MySQL serveru a nemusí přesně odpovídat vašemu nastavení, takže není potřeba se děsit červených čísel. Na ukázkovém serveru například najdete mnoho takových položek a to převážně z důvodu minimalizace paměťové náročnosti MySQL serveru, který tak nemůže udržovat v paměti dostatečné množství dat.

V horní části jsou souhrnné informace – celkový přenos dat a počty připojení. Tyto čísla může být zajímavé vidět, ale obvykle se zde nic zásadnějšího nedozvíme.

Hned dále je zobrazena statistika dotazů. Z té již můžeme vysledovat například převážné používání serveru. Na produkčním serveru obvykle převažují dotazy typu select , ale pravděpodobně zde najdete i vysoká čísla pro vkládání nových záznamů ( insert ), protože mnoho publikačních systémů si ukládá nějaké statistiky o přístupu uživatelů. Větší četnost jiných typů dotazů může stát za prozkoumání, jestli některá aplikace není špatně nakonfigurována.

Další tabulka obsahuje některé souhrnné statistiky SQL dotazů a pokud máme vysokou hodnotu u Slow_queries , pravděpodobně některá aplikace příliš zatěžuje MySQL server neoptimálními dotazy. O jaké dotazy se jednalo můžete zjistit zapnutím logování pomalých dotazů v konfiguraci MySQL ( log_slow_queries ).

V dalších částech najdete vypsaný stav jednotlivých subsystémů MySQL serveru a pokud najdete červená čísla, můžete si ve vedlejším sloupci přečíst doporučení, jak tuto hodnotu vylepšit. Kromě přehledu naleznete na konci některých tabulek i akce, které je možné se souvisejícím subsystémem provést, například vyprázdnit vyrovnávací paměť dotazů nebo zobrazit podřízené servery.

Při zkoumání vlivu jednotlivých aplikací na statistiky může být užitečné tyto statistiky občas vynulovat, k tomu vám pomůže odkaz v horní části stránky nebo případně odkazy pod jednotlivými sekcemi.

phpMyAdmin používá mootools

Ve vývojové verzi phpMyAdmin se stále více využívá JavaScript a proto se už dlouho uvažovalo o použití nějakého frameworku, který by usnadnil psaní rozšířených funkcí a do budoucna i podporu pro AJAX. Jak se můžete v současném SVN přesvědčit, momentálně se zkouší používání frameworku mootools .

Prozatím se JavaScript používá na schovávání některých informací databází a tabulek , ale do budoucna se určitě dočkáte i pokročilých funkcí využívajících AJAX.

Na co vůbec je SSL a podepisování?

Když dnes kolegovi přišel nepodepsaný email od UPC s žádostí o posílání peněz na jiný účet, tak jsme se začali zabývat jak to vlastně v Česku funguje s elektronickým podepisováním. Napsat mezitím email všem klientům UPC s žádostí, aby peníze posílali na můj účet, je lákavá možnost :-).

Po asi pěti minutách člověk zjistí, že i jinde se jaksi na zabezpečení moc nehraje. Chcete vědět jak nainstalovat certifikát certifikační autority, kterým je podepsaný certifikát elektronického bankovnictví? Stačí si přečíst návod na stránkách banky :

Certifikát lze stáhnout a nainstalovat zde: http://www.ica.cz/RootCERT_NewSica.cer a následně jej nainstalovat dvojklikem.

Prostě nic nezkoumejte, všechno odklikejte a bude to. Ale třeba to má ona certifikační autorita popsané lépe, tak se podíváme na její stránky. Omyl, instalaci certifikátu nám provede jakýsi program pro Windows , který vše automaticky bez jakékoliv možnosti ovlivnění uživatelem provede.

U České spořitelny je certifikát pro bankovnictví podepsán Verisignem, takže aspoň má člověk celkem slušnou jistotu, že už tuto certifikační autoritu má ověřenu. Ovšem emaily jimi posílané už jsou podepsané certifikáty od jejich vlastní certifikační autority a přes veškerou snahu se mi nepodařilo najít jak by si její certifikát podle banky měl člověk nainstalovat. Nicméně po přepsání URL z http na https má člověk možnost získat tento certifikát celkem bezpečnou cestou.

Další instituce se mi už ani nechtělo zkoumat...

Jak na debianí balíčky?

Tak jsem se nechal přemluvit k napsaní seriálu o tvorbě balíčků pro Debian. Protože je přeci jen dělám už nějaký ten pátek, tak už jsem asi zapomněl na některé věci, na které jsem v začátcích narazil. A proto jsem se rozhodl napsat tento zápisek :-). Pokud jste měli (nebo máte) s něčím problémy při vytváření balíčku pro Debian, napište to do diskuze, za odměnu se vám pokusím nabídnout co nejlepší odpověď ve vznikajícím seriálu.

PS: Když mi Robert poprvé napsal, tak jsem moc netušil co psát. Teď už se blížím třinácti dílům, takže si myslím, že se máte na co těšit :-).