Michal Čihař - Archive for 1/2008

One year under my reign

One year ago, I took over Gammu maintenance. I think it time to summarize a bit what happened during that year. There were definitely good and bad releases in that time (especially strictness introduced to SMS parser in 1.13.0 took quite a lot of releases to fix various bugs), but generally I things Gammu is moving in a good way.

What I would definitely call positive:

  • Added build time testing. This helps a lot to catch regressions. However more tests could be done.
  • I cleaned up lot of code parts so that Gammu is now more resistant to bad data and should not crash in these cases.
  • Added lot of API documentation, most API functions are now fully documented.
  • More often testing releases - I try to release every week. Sometimes changes are huge, sometimes just few bugfixes. This makes Gammu occur among most vital projects on freshmeat.net.
  • Quite complete IrMC implementation together with AT/OBEX switching gives support for quite a big range of phones today.
  • SMSD got PostgreSQL support.
  • AT+CMGL support for reading messages gives us support for many phones which were not supported in the past.
  • I started to use OpenSuse Build Service and Ubuntu PPA to provide up to date binaries for many distributions.

There are also some bad things:

  • Nobody cares about build under MSVC. It is broken sometimes and I try to fix issues, but no constant testing of this causes problems.
  • Almost no new features for Nokia phones. I simply lack time to do anything more than bug fixing here.
  • Still bad support for Symbian phones. Some developer interested in this area is definitely needed. But probably OpenSync with SyncML is enough for most people.
  • The changes I made to the SMS parser broke too much things, I should have payed more attention to this change. But now things seem to be worked out.

Some statistics of last year (based on Ohloh):

ValueDec 2006Dec 2007Difference
Code Lines90,540101,687+12%
Comment Lines9,20415,336+67%
Comment Ratio9.2%13.0%+30%

All these changes were made in approximate 1200 commits.

I hope next year will not be worse :-).

Gammu test version 1.17.91

New Gammu testing version is out. Besides fixing there is important feature for people finding proper flags for not supported phones - you can do it now without recompiling Gammu! Full list of changes:

  • Phone features now can be defined in configuration, so there is no need to modify common/gsmphones.c for testing different settings.
  • Config file loading behaves more consistent in lookup. In some cases it can now find different configuration file.

You can download from usual place: http://cihar.com/gammu/.

Good bye Enca

Some days ago I was notified by DEHS that Enca homepage is unreachable. Okay, this happens sometimes. But as the error lasted longer and longer, I decided to ask author about it.

Unfortunately the reply was that this nice software is not maintained anymore and computer which hosted it's homepage is gone. As it would be bad to loose this software completely, I offered place to host downloads for it. No, I'm not going to develop it, I already have enough projects for which I don't have enough time. So my server has just become a download place for Enca.

Hirošima, Miyajima a Himeji

Protože byl v pondělí svátek, naplánovali jsme si s Reném výlet do vzdálenějších končin Japonska - do okolí Hirošimy. Tohle město asi všichni znáte a po pravdě řečeno nebýt atomové bomby, tak tam asi moc turistů nepřijede. Ale po pořádku od sobotního rána.

Vyrazili jsme kupodivu podle plánu na šinkanzen směr Himeji. Tam jsme vylezli ven, zjistili, že dost prší a vrátili se zpět a pokračovali až do Hirošimy. Tam už naštěstí déšť přestal a mohli jsme se tedy vydat na prohlídku města. Začali jsme místním hradem (to samé jako na většině míst v Japonsku - znovu vybetonovaný po válce), kde nás opravdu překvapil dokonalý systém navigace turistů. Od hradu už jsme se vydali k největším atrakcím, ale po cestě jsme ještě náhodou potkali odloženou parní lokomotivu.

Nejzajímavější Hirošimská památka - A-Bomb Dome - je pro Čecha ještě více zajímavá, protože ho navrhl český architekt Jan Letzel. Na nedalekém ostrově se v mírovém parku nachází nespočet pomníků obětem výbuchu. Jen čínské obětí z politických důvodů mají svůj pomník mimo centrum města. V parku se také nachází muzeum, ve kterém se dozvíte všechny okolnosti výbuchu, co mu předcházelo a třeba také to, že Američané si jako svůj první cíl pro atomovou bombu vybrali ještě dlouho před koncem války Japonsko, protože si mysleli, že Japonci by v případě, že bomba nevybuchne, nebyli schopní pochopit jak funguje. V muzeu je také model města, kde můžete porovnat, jak to vypadalo před výbuchem a po výbuchu.

V neděli jsme vyrazili do nedaleké Miyajimy, kde na nás už čekala slavná plovoucí brána. Ale ještě před tím, než jsme k ní došli, stihl René přijít o mapu v souboji s jelenem. Vítěz jí nakonec uhájil i proti ostatním a mohl by si na ní v klidu pochutnat, kdyby mu jí nevytrhl kolemjdoucí Japonec. Kromě slavné brány jsme na ostrově viděli stovky Buddhů a zajímavou podzemní svatyni, ale přeci jen po pár měsících v Japonsku už člověku všechny ty chrámy moc zajímavé nepřijdou. Nakonec jsme ještě prošli místní obchodní uličku, kde v každém druhém domě měli stroj na výrobu místních sušenek. Můžete si vybrat z mnoha náplní, kromě tradiční (a nám nechutnající) fazolové pasty i čokoláda, puding nebo sýr. Pak už jsme nasedli na trajekt a tramvají se vrátili do Hirošimy.

Pondělní ráno jsme už Hirošimu opouštěli a chystali se na druhý pokus návštěvy Himeji. Cestou nás svezl starý šinkanzen, ve kterém si člověk opravdu připadá, že se vrátil o pár let dozadu. Cesta utekla poměrně rychle, přestože tento starý vlak jezdí na místní poměry pomalu.

Himeji bylo plné dívek v kimonech, takže už od nádraží jsme tušili, že se zde něco děje. Co se slavilo nevíme, ale v průvodech nesli šťastné dívky (tak ji pojmenoval jeden z jejích nosičů) a pak slavnostně naráželi sud s rýžovým vínem. Tímto zdržením se nám trochu zkrátil čas plánovaný na návštěvu hradu, ale nakonec jsme za dvě hodiny stihli projít vše od modlitebny v nejvyšším patře po pokoje princezny v západním křídle. Pak už jsme se s hradem rozloučili a vydali se na cestu do Nagojy.

Exportování databází a tabulek

phpMyAdmin už od dávné historie podporuje export do SQL. Když se však nyní podíváte na stránku umožňující export , uvidíte velké množství formátů. Tento nárůst byl do velké části umožněn zavedením možnosti snadno vytvářet pluginy pro export dat. Díky tomu začali uživatelé přispívat kód pro nové a nové formáty. Ale tomu, jak napsat exportní plugin pro vlastní formát, se budeme věnovat až někdy jindy, dnes nás čeká prohlídka stávajících možností jak exportovat.

Nastavení

To jak stránka vypadá, je do velké míry ovlivněno nastaveními – pole $cfg['Export'] určuje výchozí hodnoty pro všechny parametry exportu. Takže například výchozí formát můžeme nastavit takto:

 
  $cfg['Export']['format'] = 'sql';
 

Podrobnější popis možností nastavení najdete v  dokumentaci .

Stahování velkých exportů někdy může trvat dlouho a proto phpMyAdmin také umožňuje ukládat data přímo na server. Abychom této možnosti mohli využít, musíme vytvořit adresář, do kterého bude mít PHP právo zapisovat a cestu k němu pak nastavíme v konfiguračním souboru:

 
  $cfg['SaveDir'] = './save';
 

Všeobecné možnosti

V dolní části stránky umožňující export , nalezneme možnosti používané pro všechny formáty. Ve výchozím nastavení je možné jen nastavit, jestli chceme soubor zobrazit v prohlížeči, nebo aby ho prohlížeč umožnil uložit na disk, jméno takto posílaného souboru a formát komprese. Ve jméně souboru je možné používat i formátovací znaky pro datum, takže například __DB__-%Y%m%d vygeneruje jméno souboru obsahující jméno databáze a aktuální datum.

Po povolení možnosti zapisovat na server (viz přechozí kapitola) zde ještě přibude tato volba a dále po povolení změn kódování i možnost nastavit kódování výstupu.

Formáty

Ja jistě vidíte sami , podporovaných formátů je velké množství.

Codegen

Nový exportní modul v phpMyAdminovi 3.0, umožňující generování kódu pro různé implementace ukládání trvalých objektů. V současné době jsou podporovány jen formáty NHibernate. Více informací viz http://www.hibernate.org/ .

CSV

Textový soubor s daty, ve kterém jsou sloupce oddělené definovanými znaky. Volba CSV pro MS Excel jen přednastaví oddělovače na optimální znaky pro zvolenou verzi Microsoft Excelu.

Microsoft Excel 2000

Exportuje data do formátu Microsoft Excel 2000. Exportováno je do XML formátu, takže starší verze tohoto produktu nejsou schopné tento soubor otevřít.

Microsoft Excel 2000

Exportuje popis struktury a data do formátu Microsoft Word 2000. Exportováno je do XML formátu, takže starší verze tohoto produktu nejsou schopné tento soubor otevřít.

LaTeX

Vygeneruje tabulku s popisem struktury a daty pro LaTeX, která je vhodná pro začlenění do dalšího dokumentu. Pro začlenění potřebujete použít několik balíčků pro LaTeX, jak ostatně můžete vidět na následující ukázce:

 
  \documentclass{article}
\title{phpMyAdmin SQL output}
\author{}
\usepackage{longtable,lscape}
\date{}
\setlength{\parindent}{0pt}
\usepackage[left=2cm,top=2cm,right=2cm,nohead,nofoot]{geometry}
\pdfpagewidth 210mm
\pdfpageheight 297mm
\begin{document}
\maketitle

% sem vložte výstup z phpMyAdmina

\end{document}
 

Sešit OpenDocument

Exportuje data do formátu OpenDocument Spreadsheet.

Text OpenDocument

Exportuje popis struktury a data do formátu OpenDocument Text.

PDF

Vygeneruje PDF s daty tabulky. Může být vhodné pro prezentace nebo tisk dat.

SQL

Podrobnějšímu popisu nastavení SQL bude věnován některý další článek. Pokud však znáte jiné nástroje pro zálohování MySQL, nejsou pro vás dostupné možnosti cizí. Pro základní používání obvykle jen stačí vybrat, zda chceme exportovat data, strukturu nebo obojí.

XML

Vygeneruje XML dokument s daty. Názvy elementů jsou vlastní, ale pro další počítačové zpracování se může jednat o ideální a snadno parsovatelný formát.

YAML

Vygeneruje YAML kód, který se používá pro serializaci dat. Jedná se o výstup, který je jak čitelný člověku, tak strojově zpracovatelný, více informací viz http://www.yaml.org .

Nativní formát MS Excelu

Na závěr jsem si nechal tento formát, který není ve výchozím nastavení přístupný, protože vyžaduje další nastavení. Pomocí něj můžete vytvářet dokumenty ve formátu Microsoft Excel 97, takže pokud používáte tuto starší verzi, může to pro vás být jedna z možností.

Pro použití potřebujete nainstalovat PEAR modul Spreadsheet_Ex­cel_Writer a vytvořit adresář, kam tento modul bude moci vytvářet dočasné soubory (o něm pak dáte phpMyAdminovi vědět pomocí $cfg['TempDir'] ).

Gammu test version 1.17.90

New Gammu testing version is out. This time there are no exciting new features, I still continue in bug fixing mode and cleaning up things. Full list of changes:

  • Fixed crash when there are too many messages (bug #466).
  • Fixed crash when printing messages on Windows (bug #476).
  • Do not ask phone for IMEI so often (bug #480).
  • No need to set LD_LIBRARY_PATH for tests.
  • Properly wait for SMSD child processes (bug #486).

You can download from usual place: http://cihar.com/gammu/.

Ukolovnik 0.9

New version of simple todo manager called Ukolovnik has been just released. Version 0.9 comes with following changes:

  • Fixed double SQL escaping in some cases.
  • New Swedish translation.

České man stránky pro Debian

Dnes jsem se konečně zase do delší době dostal k údržbě mých balíčků v Debianu a kromě drobných oprav (například Enca už bohužel není udržovaná a její stránky pohltili spammeři) jsem si rozhodl přidělat práci a připravil jsem balíček s českými man stránkami . Teď už jenom zbývá počkat, než projde přes frontu nových balíčků . Nedočkavci balíček mezitím najdou v mém repository .

Back in Japan

After two weeks being back in Czech and mostly offline, I got back to Japan this weekend. The travel went quite okay, the only thing I really don't understand is why Japanese customs always want to check my luggage. There must be something special on it or I probably look like drugs smuggler, but he did not answer my question why they always select me for checking things :-).

Anyway I already processed most of email backlog, only about 100 mails remain, I hope to read and reply them during this week.