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

Další možnosti generování dokumentace phpMyAdminem

Před týdnem jsme se dozvěděli jak získat PDF s popisem databáze, dnes se podíváme jaké jsou další možnosti generování dokumentace v phpMyAdminovi.

Datový slovník

Dalším užitečným výstupem, je datový slovník, se kterým jsme se již potkali v PDF výstupu. Nalezneme ho opět na stránce se základními informacemi o databázi . Jeho výstupem je HTML stránka se stručným přehledem tabulky , kterou můžeme případně zkopírovat do naší dokumentace.

Exporty

Pro začlenění struktury tabulky do dalších dokumentů ale může být vhodnější použít exportní funkce . Pokud zvolíme možnost exportovat jen strukturu tabulek, dostaneme v požadovaném formátu dokumentaci vybraných tabulek z databáze. Z formátů pro export si snad vybere každý ten svůj oblíbený – LaTeX, OpenDocument, Microsoft Office nebo třeba PDF.

Další možnosti

Kromě těchto možností má většina stránek možnost přepnutí do náhledu pro tisk, který také může být vhodný pro začlenění do dokumentace. Tak můžeme třeba získat přehled o  celé databázi nebo tabulce popřípadě z libovolného SQL dotazu. Přehled o vybraných tabulkách z databáze získáme na stránce s  přehledem databáze zaškrtnutím požadovaných tabulek a vybráním funkce „Náhled pro tisk“.

Downtime 15 hours

Finally happened the thing which I expected to happen since I left to Japan. My server (currently being few thousands kilometers away) crashed and exactly followed Murphy's law to break in time when it would caused largest possible downtime. Anyway it's now back and I hope all services are correctly running.

And no, I have no idea what caused power led to blink and make the computer unresponsive for anything except plugging it out of power and then pugging it back. Hopefully it will not repeat, at least not until I'll be back in Prague :-).

Gammu test version 1.15.90

New Gammu testing versions 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 detection of first free memory location if memory is empty (bug #434).
  • Fixed mysql.h include path (bug #441).
  • Fixed decoding of one char SMS (bug #442).
  • Detect Nokia 3109c (thanks to David Meier).
  • Automatically find MinGW compiler and allow overrides (bug #438).
  • Fixed parsing of some memory entries (bug #450).
  • Fixed decoding of some corner case SMS (bug #447).
  • Phones capable of switching to OBEX mode from AT have it now automatically enabled. Please report problems with this.

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

Zobrazení relací v PDF

Minulý týden jsme se naučili vytvořit vztahy mezi tabulkami a jak je používat při práci s tabulkami. Když už ale tyto údaje máme zadané, můžeme je použít i na další užitečné věci. Dnes se podíváme na různé možnosti dokumentace databáze pomocí phpMyAdmina.

V dnešním díle budeme hojně využívat ukázkovou databázi MySQL – sakila . Tu si můžete stáhnout a objevovat na ní možnosti MySQL a případně i phpMyAdmina. Pokud na ukázkovém serveru databáze není, pravděpodobně jí někdo z uživatelů poškodil a do 20 minut by měla být automaticky obnovena.

V dokumentaci je vhodné mít schéma databáze. Proč toto schéma vytvářet ručně, když všechny podstatné informace již jsou v databázi? phpMyAdmin nám tyto informace dovolí použít a vytvořit z databáze schéma ve formě PDF souboru. Ukázku, jak může PDF výstup vypadat naleznete jako přílohu článku, ale nebudeme předbíhat, vytvořit takovýto dokument je jednoduché. Odkaz pro úpravu stránek PDF se tísní úplně dole na stránce úpravy databáze .

Po kliknutí na odkaz se nám zobrazí stránka pro editaci PDF . Kromě existujících stránek (pokud nějaké existují) můžeme vytvořit nové. Poměrně užitečná je možnost automatického rozložení, kdy phpMyAdmin automaticky navrhne rozložení všech tabulek. Jak se u této ukázkové databáze můžete přesvědčit, automatické rozložení není vždy optimální, tak můžete využít editace umístění tabulek přímo na této stránce. Buďto můžeme přímo zadat souřadnice, kde budou jednotlivé tabulky zobrazeny, nebo zapnout grafický návrh a polohu jednotlivých tabulek upravit myší. Kromě tohoto rozhraní, kde nejsou vidět relace mezi tabulkami, můžeme použít i  návrháře , který umí import a export souřadnic z PDF stránek.

Poté co jsme s náhledem spokojeni, můžeme vygenerovat PDF dokument s grafem se závislostmi. Na první pokud asi budeme u rozsáhlejší zklamáni a bude potřeba pozice tabulek trochu poupravit, ale tuto operaci provádíme jen jednou. PDF dokument můžeme vygenerovat jak na stránce, kde PDF upravujeme, tak v
úpravách databáze . Možnosti nastavení výstupu snad nepotřebují podrobnější popis. Dnes jsme se naučili vytvořit PDF a za týden se podíváme na další možnosti výstupu.

Přílohy:

Too lazy to manually upload to PPA

As I wrote before, I tried to use Ubuntu Personal Package Archive for distributing up to date Gammu, python-gammu and Wammu packages. For first time I failed because I expected it to behave more like OpenSUSE build service than like Debian archives, but I was wrong, so I have to upload different version to each Ubuntu suite.

Well that sounds like a work which should be automated. So I hacked a little shell script, which takes current version from unstable, updates changelog and injects it into my PPA. The hacky script is called deb2ppa. It requires dput to be configured for ppa same way as I have it and maybe has some other tricky dependencies which I do not realize right now.

Anyway you can now use current Wammu/Gammu versions even on older Ubuntu releases if you wish :-). (Well you have to wait till it is rebuild, but I hope it will not take much time.)

Binary packages for Gammu, Wammu and python-gammu

When Ubuntu announced public availability of Personal Package Archives, I thought it might be good to use it to provide up to date Gammu related packages. After successful registration I uploaded Gammu package and no reaction so far, so I'll wait.

However this memorised me that I wanted to use OpenSUSE Build Service for same purpose some time ago. I filled in registration and as I didn't receive any email about being accepted, I absolutely forgot about that. Now just tried to log in and it works. So you can now have access to latest Gammu, python-gammu and Wammu packages for most recent RPM distributions (Fedora 7, Fedora 8, Mandriva 2006, Mandriva 2007, openSUSE 10.2, openSUSE 10.3, openSUSE Factory, SLES 9 and SLE 10). I could not test them so any feedback is welcome :-). You can find all packages on overview page or directly in download folders.

Playing with spec files after long time was quite painful, but I got to it after I managed the hardest thing - how to make build dependencies which will work on all these distros.

I hope I will be able to announce similar service for Ubuntu users using PPA, but now I have to wait for some reaction on my source uploads.

Relace aneb ušetřete si práci

Relace jsou mocným nástrojem ve světě databází, které nám umožní udržovat konzistentní tabulky, které na sebe navzájem odkazují. MySQL podporu pro relace má jen pro některá úložiště a pokud používáme výchozí MyISAM, tak jsme o tuto možnost ochuzeni. Nicméně phpMyAdmin přesto umožní relace mezi tabulkami používat díky vlastnímu zpracování relací.

Pokud nepoužíváte úložiště podporující relace, je potřeba pro používání internách relací mít v phpMyAdminovi nastaveno používání rozšířených možností . Pokud relace vaše úložiště přímo podporuje (například InnoDB), můžete bez obav tuto část pro tuto chvíli přeskočit, ale přijdete o jiné zajímavé funkce, které jsou na relace navázány a o kterých budu psát v některém dalším článku.

Relace určuje vztah mezi dvěma sloupci v tabulkách. phpMyAdmin stejně tak jako většina relačních databází podporuje přímo jen relace 1:N, relace N:N musí být prováděny přes pomocnou mapovací tabulku.

Vytváření relací je velmi jednoduché – stačí na vlastnostech tabulky kliknout na odkaz Zobrazit relace a dostaneme se na jednoduchou stránku, která nám umožní relace upravit . V horní části můžeme definovat vztahy mezi sloupci, v dolní potom sloupec, který phpMyAdmin zobrazí, pokud budete procházet tabulku, která odkazuje na nějaký řádek z aktuální tabulky. Pro klasické tabulky obsahující identifikátor (na který bude druhá tabulka odkazovat) a například jméno tedy logicky vybereme jméno.

V čem nám zadání relací usnadní práci? Při vkládání nové položky máme na výběr z hodnot v odkazované tabulce, při procházení si můžeme rovnou otevřít odkazovaný řádek a v neposlední řadě nám na stránce s operacemi přibyde odkaz na kontrolu integrity. To je bohužel také nevýhoda interních relací, phpMyAdmin nemůže vynucovat korektní editaci databáze a proto může dojít k vytvoření odkazů na neexistující položky.

Tento problém je možné vyřešit jen podporou na úrovni MySQL serveru, tedy použitím úložiště, které toto přímo podporuje, například InnoDB. Ta nám nabídne kromě možnosti výběru sloupce i operace, které se mají provést při vymazání a aktualizaci sloupce, ostatně podívejte se sami . Tím MySQL bude vynucovat integritu všech tabulek a budeme mít o starost méně.

Nativní relace v MySQL jsou podporovány na stejné úrovni jako ty interní phpMyAdmina, takže veškeré funkce můžete používat při obou možnostech. Kromě pomocí při editaci a procházení nám správně nadefinované relace můžou usnadnit i generování dokumentace, ale o tom až někdy příště.

I hate this system

My girlfriend has to use Windows, because university she studies does not give her another option. Now she got some crap on which she should do some statistics. This crap is being called SAS. I have not yet seen how does it look like, but I already enjoyed funny hours with it's installer. As I'm currently on the other side of world, I have to do all remotely...

The basic problem is simple: I do not have much space on C: drive and it does not provide option to install on another drive. First she tried to install it herself, the setup fucked up so much, that it deleted NTLDR and friends from root folder, so Windows didn't boot up again. Fortunately there is also Debian on that machine, so she booted to it, I installed ntfs-3g and restored needed files from Windows XP installation CD (the recovery console did not work, don't ask me why). So great, after about one hour we have back working Windows!

Now I still did not have idea what is the problem. However the failure appeared when the crap was trying to install some special JRE it has included. When I started the installer for this JRE manually, it showed that there is not enough space. Why the hell did not the original installer show this? Well I did some cleanup on the disk and I got 1GB of free space. Hope that it will be enough.

No. Somewhere near 58% installation is fucked up again with error -2147483648. Wow nice number! Looking at disk space, it's down to few kilobytes. So again the same problem! Okay, let's clean it up more and hopefully installer will resume. But I should not hope for anything good from this installer. The only option it now gives me is to reboot.

Reboot, start again installer and let's see what will break this time. Now it found out that some Microsofts runtime is missing. Why it was not missing last time? Okay, let's install it and (of course) we need another reboot. System started up, installer launched and it seems to go on quite well, only the last few percents are taking incredibly long, but the crap seems to finally installed and it even runs!

Few questions: Why they do not check for required space in installer? Why do they force me to disable anti virus during installation? Why does not remote desktop from Windows work? Why is there such mess in Windows, especially in Windows folder? Why are temporary files located all over the disk?

As last but not least thing I would like to thanks everybody who made ntfs-3g and VNC work, I would never fix this without these tools.