Michal Čihař - Archive for Jan. 1, 2007

Rozšířené možnosti phpMyAdmina

phpMyAdmin zpřístupňuje nejen funkce MySQL, ale nabízí i mnoho funkcí vlastní. Pro některé z nich je potřebná konfigurace a tu si dnes ukážeme.

Pokud žádné rozšířené funkce nemáme nastavené, phpMyAdmin nás varuje, jak můžete vidět na této stránce dole .

Po kliknutí na dotaz se dozvíme, že není v pořádku databáze pro ukládání těchto dat. phpMyAdmin používá pro ukládání nastavení pro některé funkce (například návrhář tabulek, relace mezi tabulkami, komentáře ke sloupcům, vytváření PDF souborů se strukturou databází a MIME transformace sloupců) vlastní databázi s několika tabulkami.

V případě že připravujeme instalaci pro více uživatelů není vhodné aby k těmto údajům měli přístup všichni uživatelé používající daný MySQL server. Proto vytvoříme nejdříve uživatele, který bude mít k příslušným údajům přístup. Pokud jsme jediným uživatelem, je možné tento krok vynechat. Přihlásíme se do phpMyAdmina jako root a vytvoříme uživatele pma, který bude mít přístup do příslušných tabulek, doporučuji použít SQL příkazy z dokumentace (pro starší verze MySQL je potřeba použít jiné příkazy, ty jsou také uvedeny v dokumentaci):

 
  GRANT USAGE ON mysql.* TO 'pma'@'localhost' IDENTIFIED BY 'heslo';
GRANT SELECT (
    Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv,
    Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv,
    File_priv, Grant_priv, References_priv, Index_priv, Alter_priv,
    Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv,
    Execute_priv, Repl_slave_priv, Repl_client_priv
    ) ON mysql.user TO 'pma'@'localhost';
GRANT SELECT ON mysql.db TO 'pma'@'localhost';
GRANT SELECT ON mysql.host TO 'pma'@'localhost';
GRANT SELECT (Host, Db, User, Table_name, Table_priv, Column_priv)
    ON mysql.tables_priv TO 'pma'@'localhost';
GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost';
 

Jméno a heslo vytvořeného uživatele uvedeme v konfiguračním souboru:

 
  $cfg['Servers'][$i]['controluser']   = 'pma';
$cfg['Servers'][$i]['controlpass']   = 'heslo';
 

Pro další funkce je potřeba někde ukládat data. Tyto jsou ukládány do tabulek jejichž jména musíme uvést v konfiguraci, pokud nám vyhovují názvy vybrané vývojáři (tabulky jsou vytvořeny v databázi phpmyadmin, uživatel se jmenuje pma), můžeme použít pro jejich vytvoření připravený skript scripts/create_ta­bles.sql (nebo scripts/create_ta­bles_mysql 4 _1_2+­.sql pro MySQL 4.1.2 a vyšší, v phpMyAdminovi 3.0 je jen create_tables.sql, který je pro všechny podporované verze MySQL). Přihlásíme se jako uživatel root, otevřeme stránku pro import , na ní zadáme jméno souboru a provedeme import. O těchto nově vytvořených tabulkách dáme phpMyAdminovi vědět v konfiguračním souboru:

 
  $cfg['Servers'][$i]['pmadb']         = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
$cfg['Servers'][$i]['relation']      = 'pma_relation';
$cfg['Servers'][$i]['table_info']    = 'pma_table_info';
$cfg['Servers'][$i]['table_coords']  = 'pma_table_coords';
$cfg['Servers'][$i]['pdf_pages']     = 'pma_pdf_pages';
$cfg['Servers'][$i]['column_info']   = 'pma_column_info';
$cfg['Servers'][$i]['history']       = 'pma_history';
 

Nyní by již mělo varování zmizet a můžeme používat mnoho dalších funkcí. Podrobnosti o nich budou rozebrány někdy příště.

Gammu test version 1.13.95

I just released new version of Gammu. I expected to have stable release at this time, but some important bugs appeared which forced me to change API. And while I did break this, I also did other API changes which I had longer in my mind. Besides there are lot of fixes in OBEX/IrMC code. Full list of changes:

  • Fixes OBEX crash (Debian bug #446923).
  • Correctly check various return values (bug #409).
  • Fixed several bugs in vCard decoder.
  • Removed UCS decoding heuristics, it can not work in all cases.
  • Provide at least some basic information from dumb AT phones.
  • SMSD now logs also error descriptions.
  • SMSD can be configured not to check for security status.
  • Correctly handle hard deletes on IrMC (bug #414).
  • GSM_ReadConfig now returns GSM_Error instead of just bool.
  • Many functions now use size_t for passing size values.
  • Backups API now rather accepts format than guessing by filename.
  • Increased soname due to API/ABI changes

Richard Stallman v Nagoji

Dnes jsme se náhodou na poslední chvíli dozvědeli o přednášce Richarda Stallmana a samozřejmě jsme na ní nemohli chybět. Protože naše informace o programu byly poněkud skoupé, tak jsme stihli i předchozí přednášku v japonštině o historii svobodného softwaru v Japonsku. Z toho mála co jsem porozuměl jsem měl pocit, že by mě to nebavilo ani anglicky :-).

Pak už přišel Stallman a začal poutavě vyprávět výhody svobodného software, chvíli se obouval do Microsoftu, jindy zase do Apple nebo do Bushe. Na závěr se převtělil v božstvo Emacsu, ale uklidnil nás, že používáním Vi se nedopouštíme hříchu.

PHP 4 je mrtvé

Nebo by alespoň mělo být. To je přesně poselství iniciativy GoPHP5 . Ta má za cíl donutit poskytovatele služeb nabízet PHP 5 svým zákazníkům. Způsob jakým by toho mělo být dosaženo je poměrně jednoduchý - 5. února 2008 přestanou projekty podepsané pod touto iniciativou podporovat PHP 4. Projektů je pod touto iniciativou podepsáno už požehnaně , namátkou vyberu pár co znám: Gallery, Drupal, Midgard, phpPgAdmin, Typo3 a samozřejmě phpMyAdmin . Začleněním mnoha známých projektů by se snad i mohlo dosáhnout požadovaného efektu, ale uvidíme. Když už se začalo řešit vyhazování kódu pro staré PHP, padlo za oběť i staré MySQL. Takže nová verze 3.0, která vyjde někdy po 5. únoru 2008, bude podporovat už jen PHP 5.2.0 a MySQL 5.0 a novější. Tím se otevřela cesta pro velký úklid kódu, který zajišťoval kompatibilitu s dnes již historickými verzemi obou produktů a také snadnější podpora pro nové funkce. Zároveň se tímto zbavíme jazykových souborů, které nejsou v utf-8, protože ty byly opravdu nutné jen pro starší verze MySQL, které nepodporovaly kódování. Po nějakou dobu bude ještě udržována současná vývojová větev 2.11, která bude podporovat i starší verze, ale nedočká se žádných zásadnějších změn, budou jenom opravovány bezpečnostní a jiné zásadní problémy.

Debugging not working USB automounting in GNOME

Some day, this thing stopped to work for me. I was not aware of doing anything what could break it, even any related package was not updated. Time went on and I still did not find time to learn how to debug this udev/hal/dbus/gnome-volume-manager machinery.

Today, after some googling I found short debugging guide on Ubuntu wiki, which quickly revealed me that "volume.ignore set to true on /org/freedesktop/Hal/devices/volume_uuid_4717_5407, not mounting". Well I didn't configure anything to be ignored, so let's dig deeper in this.

As I had no idea where this thing could be set, I again started to google and /etc/hal and /usr/share/hal seem to be the right place where to start grep. Nothing related in /etc, but too much entries in /usr. However most of them were selective for some special USB disks or partitions. But there was one which did this unconditionally - it was file /usr/share/hal/fdi/policy/gparted-disable-automount.fdi, what crap from gparted. Now I remember that I used this for formatting and partitioning something on USB and after doing all job, it crashed. So it left this piece of HAL hack inside /usr/share/hal and it was cause of anything not mounting.

Seems to be worth of reporting as a bug... Wait a moment, it's already known and some patch for it exists. Hopefully we will see this soon in unstable.

DRM is here just to upset people?

Being in Japan has also one great feature - even if you are in same DVD region as in EU, you are still unable to play your DVDs, maybe because of PAL/SECAM issue, I don't know. I think it must have been intentionally designed this way.

The hardware player I have here at my room just tells me: Disc Error, Playback feature may not be available on this Disc. I have no idea what this error actually means, but I somehow expected I'll be able to play my region 2 DVDs in region 2 DVD player. Good luck that I still have my laptop with illegal dvdcss library, where I can play whatever DVD I put into it.

I know this is not real DRM at all, but this has also started as a technology to limit copying or whatever....

I should review better what I upload

Well I somehow expected it will happen to me when I started to use Debian experimental distribution, but now it really happened. I noticed that last Gammu upload went to unstable instead of experimental just when today updating my other development machine and I was surprised that Gammu is going to be updated. Well the version is not that bad, but it is far from being stable.

Anyway it is good for something - unstable users will do much more testing than experimental ones ;-).

Gammu test version 1.13.94

I just released new version of Gammu. It just adds compatibility with some Motorola phones (but still not enough to fully support them) and fixes some bugs. Full list of changes:

  • Fixed crash in wrong config handling (Debian bug #446781).
  • Initial support for Motorola SMS implementation (bug #408).

I expect this to be last release before next stable one - 1.14.0, so please give it some testing so that we can have a good release.

Instalace a zabezpečení

Nainstalovat phpMyAdmina je poměrně jednoduché, ale na co mnoho lidí zapomíná je řádné zabezpečení. Stačí chvíli používat Google a najdete mnoho nezabezpečených instalací phpMyAdmina spoléhajících se na to, že nikdo toto URL neuhodne. Chyba, časem se provalí jakékoliv URL.

Požadavky

Předpokládám, že již máte funkční webový server s podporou php (minimálně verze 4.2.0) a databázi MySQL (minimálně 3.23.32), jejich nastavení zde nebudu rozebírat.

Instalace

Začneme samozřejmě stáhnutím ze stránek projektu a jeho rozbalením nebo instalací balíčku ve vaší distribuci. V případě balíčku z distribuce již pravděpodobně bude phpMyAdmin částečně nastaven. Dále již přistoupíme k modifikaci konfiguračního souboru.

Konfigurační soubor obsahuje několik částí: na začátku je několik základních nastavení, po nich následuje konfigurace serverů a pak mnoho dalších konfiguračních voleb, umožňujících nastavit téměř veškeré chování. Nejdříve upravíme seznam serverů, abychom mohli phpMyAdmina začít používat a pak se budeme věnovat podrobnějším nastavením. Vždy budou uvedeny jen relevantní části konfiguračního souboru, které jsou potřeba pro funkčnost probíraného tématu, v případě nastavovaní serveru je potřeba údaje zadávat do správné části (pro začátek vše k prvnímu serveru), protože phpMyAdmin umožňuje připojit se k více serverům.

Zabezpečení

Jako první věc musíme rozhodnout, jak se budeme k phpMyAdminovi přihlašovat, jestli ho budeme využívat sami nebo i další uživatelé a jestli bude přístupný z více míst.

Pokud se jedná o instalaci na pracovní stanici, můžeme zvolit zadání jména a hesla do konfiguračního souboru:

 
  $cfg['Servers'][$i]['auth_type']     = 'config';
$cfg['Servers'][$i]['user']          = 'uzivatel';
$cfg['Servers'][$i]['password']      = 'heslo';
 

A omezením přístupu pouze z lokálního počítače. Toto je asi nejlepší nastavit přímo ve webového serveru, ale vystačíme si i s phpMyAdminem:

 
  $cfg['Servers'][$i]['AllowDeny']['order'] = 'explicit';
$cfg['Servers'][$i]['AllowDeny']['rules'] =
             array('allow uzivatel from 127.0.0.1');
 

V případě přístupu více uživatelů využijeme autentizaci MySQL a zvolíme odpovídající metodu v phpMyAdminovi. Lze si vybrat mezi autentizací pomocí koláčků nebo s využitím HTTP autentizace. Ta má několik nevýhod, například kvůli návrhu HTTP neumožňuje odhlášení. Autentizace pomocí cookies navíc umožňuje (po příslušném nastavení) i přihlášení k libovolnému MySQL serveru. Proto budou ukázky používat autentizaci pomocí koláčků. Konfigurace pro obě metody se liší jen minimálně. Pro HTTP musíme nastavit jen typ autentizace:

 
  $cfg['Servers'][$i]['auth_type']     = 'http';
 

Pro koláčky samozřejmě také typ:

 
  $cfg['Servers'][$i]['auth_type']     = 'cookie';
 

A ještě heslo které bude použito pro šifrování koláčků:

 
  $cfg['blowfish_secret'] = 'tajne_heslo';
 

Toto heslo nebudeme muset nikde zadávat, je proto možné použít naprosto náhodný řetězec (pokud použijete balíček z distribuce, pravděpodobně toto heslo bylo vygenerováno už při instalaci, například Debian a SUSE toto heslo vygenerují).

Nyní by mělo být možné se do phpMyAdmina přihlásit, po zadání jména a hesla uživatele v MySQL se přihlásíme na úvodní obrazovku, kde již s programem můžeme pracovat.

Nagoya Festival 2007

Tento víkend se v Nagoji konal festival u příležitosti založení města. Sice to není kulaté výročí (400 let budou slavit až v roce 2010), ale přesto to byla velkolepá akce. Po oba dva po městě chodily průvody, sobotní byl v podstatě jen menší variantou toho nedělního. Kromě toho bylo v parku a Oasis 21 spousta doprovodných akcí, které jsme skoro žádné nestihli.

Dnešní průvod zahájily svým příjezdem historické vozy Dashi s loutkami. Na křižovatce před radnicí museli zahnout, což u tohto vozidla znamená zvednout a otočit do správného směru. Někteří účinkující se už zde předváděli a místo otočky o 90 stupňů předvedli obrat o 270, čímž si vysloužili aplaus od početného publika. Jiní se zase zvedáním nezatěžovali a prostě vůz otočili i za cenu nesmazatelné stopy na silnici. Vozy se poté srovnaly před tribunu s místní honorací a starosta slavnostně průvod zahájil vypuštěním hejna bílých holubic.

Každý vůz (resp. jeho vedoucí) byl obdarován lahví saké a pak již následovalo hudební a loutkové představení v podání osazenstva každého z vozů. V komentáři jsme se dozvěděli z jaké části Nagoji ten který vůz je a jak je starý (nejstarší je z roku 1658, nejnovější z roku 1952). Po představení se vozy opět otočily do směru jízdy (tentokrát je někteří nesli ještě déle) a vydaly se na další pouť do města.

Další částí průvodu byla vozítka pro Kaguru, což je starý hudební a taneční styl. Následovalo další předání lahví saké a krátké hudební představení. Možná bylo i taneční, ale to jsem neviděl :-). Vozítka pak následovala své předchůdce na cestě do města a po cestě se děti střídaly ve hře na bubínky.

Následovala krátká přestávka, kterou jsem využil k přesunu na druhou stranu, která byla volnější. Cestou jsem potkal cyklisty připravující se na představení, které ještě uvidíte. Mezitím začaly chodit dětské průvody, které nesly nejrůznější modely, třeba takovýto dům z plechovek od piva nebo hadrový šinkanzen.

Po dětech přišly mažoretky s městkými hudebníky. Ti zahráli nějaký místní hit na podporu obnovy části hradu zničené za druhé světové války a jeden z nich pak převzal prapor města a za doprovodu ostatní odpochodoval směr Sakae.

Následovala trochu oficiálnější část průvodu, kdy se předvedli oficiální představitelé partnerských měst, většinou v pěkně nablýskaných veteránech. Nyní již přišla řada na cyklisty, které už jsem jednou potkal a až na jeden pád se jejich představení obešlo bez komplikací. Tímto začala část průvodu, ve kterém se předváděly místní školy.

Zbytek průvodu už byl stejný jaký jsme viděli v sobotu, ale přecijen jsem měl o trochu lepší místo, tak jsem zhlédl více představení. První část byly květinové vozy s tanečníky a hudebníky, ale po nich již přišel zlatý hřeb celého průvodu - průvod tří feuduálních panovníků. Bohužel vám nejsem schopný říct který je který :-). Nicméně panovníci nám spolu se svým doprovodem předvedli několik bojových ukázek, při kterých nebyla nouze o kouřové efekty a hromady mrtvol. Celé to bylo proloženo hudebníky a princeznami (pokud chcete některou z nich pokat, stačí zajít do místního obchodního domu, který je všechny dodal :-)).

A ihned po odejití posledních účastníků a diváků průvodu byla připravena uklízecí četa uklidit cokoliv co by snad po průvodu mohlo zbýt.

PS: Pokud by vám tento výběr fotek nestačil, můžete si prohlédnout kompletní album.