úterý, května 20, 2008

KDevelop vs. databáze SQLite

V poslední době jsem řešil problém, jakým způsobem jednoduše zahrnout do KDE aplikace vytvořené v KDevelopu výše zmíněnou databázi. Řešení se nakonec ukázalo jako docela jednoduché. Protože jsem tvor zapomětlivý a téměř jistě tento postup časem zapomenu, raději ho sepisuji a třeba se nakonec bude hodit i někomu jinému.

Proč jsem se vydal cestou vlastní kompilace ze zdrojových kódů SQLite a nenechal vše na vlastních ovladačích knihovny QT ? Protože aktualizace zdrojových kódů databáze je docela častá a knihovna QT je nereflektuje dostatečně včas a ve verzi QT knihovny 3.3 se mi povedlo otevřít pouze databázové soubory SQLite verze 2 (aktuální je SQLite formát verze 3). Možná byla chyba na mojí straně – nevím, dále jsem to do podrobností nezkoumal.

Celý postup je otestován na distribuci Fedora Core 9 (Sulphur) a použitá verze KDevelopu byla 3.5.1. Vše je ukázáno na jednoduché aplikaci pojmenované SQLiteTest, která v konečném stavu umí pouze otevřít a uzavřít testovací databázi. Další funkce by již neměl být problém doimplementovat, stačí prozkoumat soubory sqlitedb.h a sqlitedb.cpp, které tvoří wrapper nad samotnou knihovnou databáze a taktéž obsahují všechny funkce potřebné k běžným operacím nad databází.

  1. Stáhneme zdrojové kódy databáze SQLite ze stránek projektu (http://www.sqlite.org). Já použil ZIP archív, ve kterém jsou uloženy jenom čisté zdrojové kódy bez konfiguračních skriptů.
  2. Vytvoříme nový projekt v KDevelopu: menu Project -> New project..., zvolíme C++ -> KDE -> Simple KDE Application a projekt pojmenujeme SQLiteTest.
  3. Zobrazíme záložku AutoMake Manageru (pravá část okna KDevelopu). V hořením stromě označíme složku src, klikneme na ní pravým tlačítkem a zvolíme Add new subproject... a nazveme jej sqlite_source.
  4. Do nově vzniklé složky sqlite_source v adresářové struktuře našeho projektu nakopírujeme céčkovské i hlavičkové soubory zdrojových kódů databáze SQLite (POZOR ! - bez souboru tclsqlite.c - POHOV !).
  5. V Automake manageru v horním stromě označíme složku sqlite_source, klikneme na ní pravým tlačítkem a zvolíme Add target...
  6. V zobrazeném dialogovém okně nastavíme volbu Primary na Library, Prefix na lib, vyplníme File name hodnotou libsqlite.so a stiskneme tlačítko OK
  7. V Automake manageru v dolním stromě klikneme pravým tlačítkem na libsqlite.so.a a zvolíme Add Existing files...
  8. V zobrazeném dialogovém okně v levé části vybereme všechny *.c a *.h soubory, stiskneme tlačítko Add selected a stiskneme OK.
  9. V Automake manageru v horním stromě označíme složku src, poté v dolním stromě vybereme sqlitetest, stiskneme na něm pravé tlačítko myši a zvolíme Options, přejdeme do záložky Libraries a v sekci Link convenience libraries inside project (LDADD) zaškrtneme knihovnu src/sqlite_source/libsqlite.so.a a potvrdíme stiskem tlačítka OK. Může nastat problém s komentáři ve zdrojových kódech vlastní databáze - tzn. vyhodit ze zdrojáků všechny řádky začínající '//' (komentáře).
  10. Následuje přidání wrapperu nad databází SQLite do naší aplikace. Já jsem si vypůjčil jeden z projektu SQLiteBrowser. Do src složky aplikace nakopírujeme soubory sqlitedb.cpp, sqlitedb.h, sqlbrowser_util.cpp a sqlbrowser_util.h. V honím stromě Automake manageru si označíme složku src a v dolním stromě poté pravým tlačítkem klikneme na složku sqliteexp a zvolíme volbu Add existing files... Poté v dialogovém okně označíme sqlitedb.cpp, sqlitedb.h, sqlbrowser_util.cpp, sqlbrowser_util.h, stiskneme Add selected a potvrdíme tlačítkem OK.
  11. Poté již stačí poupravit sqliteexp.cpp (nezapomenout na #include "sqlitedb.h" )
  12. Zvolíme Build project v menu Build a je to...
Celá ukázková aplikace je připravena ke stažení zde - SQLiteTest.tar.gz. Ve složce src je uložena i testovací databáze testik.db.

That's all, folks !


neděle, září 30, 2007

Český Dub - 650 let městských práv

Dne 28.září město Český Dub oslavilo již 650 let od udělení městských práv císařem Karlem IV. Roku 1357 navštívil tehdejší Světlou (nynější Český Dub) císař se svojí družinou a povýšil ji na město Český Dub. Více o městě či jeho historii se můžete dozvědět zde nebo zde.

I přes nepříznivé počasí se oslavy vyvedly za hojné účasti návštěvníků. Součástí programu byl i slavnostní průvod císaře Karla IV. i s jeho družinou, Svatováclavská veselice a v podvečer se zde konal koncert podještědských kapel a muzikantů (současných i těch z minulého století ;-). Zájemci mohou shlédnou rozsáhlou fotogalerii.

Oslavy tímto dnem neskončily - dne 30. listopadu a 1. prosince 2007 se koná ekumenická bohoslužba v johanitské komendě, koncert a mimořádně bude vystaven též románský ostatkový kříž.



čtvrtek, září 27, 2007

Kompilace databáze SQLite ve Visual Studiu 2005

Tento příspěvek je jakýmsi jednoduchým popisem (How-To), jakým způsobem zkompilovat a slinkovat databázi SQLite ze zdrojových kódů pomocí MS Visual Studia 2005 (dále jen VS 2005), pro následné použití v jiné aplikaci. K napsání mě vedl fakt, že sám jsem měl s kompilací problémy a některá nastavení preprocesoru či kompilátoru nemusí být na první pohled úplně zřejmá.
Veškeré postupy se týkají databázového stroje verze 3.4.2, která je v době psaní tohoto návodu poslední stabilní, ale tento postup by měl fungovat i na starších verzích.

Stažení potřebných souborů
Začneme stažením zdrojových kódů databáze SQLite. Pro kompilaci stáhneme tzv. „preprocessed C code“, dále pak (kvůli def souboru) i zkompilovanou verzi databáze.


Na disku vytvoříme adresář SQLite, v něm podadresář SQLite_src a do tohoto podadresáře dekomprimujeme stažený ZIP soubor sqlite-source-3_4_2.zip.

Vytvoření projektu
Spustíme VS 2005 a vytvoříme nový projekt – menu File->New->Project… a následně nastavíme projekt dle obrázku 1.

Obrázek 1


Stiskneme tlačítko OK a v dalším okně tlačítko Next a dokončíme vytvoření projektu s volbami, které jsou na obrázku 2.

Obrázek 2

Stiskneme Finish a projekt je vytvořen.

Nastavení a kompilace projektu
Do adresáře s tímto projektem (v našem případě „\SQLite\SQLite_src\SQLite_src” zkopírujeme soubor sqlite3.def ze staženého sqlitedll-3_4_2.zip.
Nyní přidáme do projektu zdrojové soubory. Menu Project->Add Existing Item…, označíme všechny hlavičkové a C soubory - mimo tclsqlite.c a shell.c (kompilujeme bez podpory TCL a bez podpory shellu) a potvrdíme tlačítkem Add. Přidáme také DEF soubor , který by měl být nakopírován v podadresáři SQLite_src.

Nyní je třeba nastavit vlastní projekt. Menu Project->Properties, v combu Configuration vybereme volbu All configurations a preprocesor nastavíme podle obrázku 3 (NO_TCL;SQLITE_CORE).

Obrázek 3


Dále následuje nastavení Runtime library dle obrázku 4 (Multi-threaded DLL).

Obrázek 4


Posledním krokem je nastavení linkeru dle obrázku 5 (sqlite3.def).

Obrázek 5


Také chci ovlivnit název výsledné DLL knihovny, takže nastavím Linker->General->OutputFile na $(OutDir)\sqlite3.dll.

Vše potvrdíme tlačítkem OK a jdeme na kompilaci. Během ní nám vyskáče necelých 300 warningů, které můžeme v tichosti ignorovat. Po úspěšné kompilaci vzniknou 2 soubory, které budeme potřebovat při začlenění SQLite enginu do naší aplikace – sqlite3.dll a sqlite3.lib.

Případné dotazy rád zodpovím v diskuzi pod příspěvkem.

neděle, února 18, 2007

Výlet na Čertovu zeď

Dnes ráno bylo nádherné počasí a skvělá viditelnost, proto jsem se rozhodl udělat pár fotek z přírodní památky, která se nachází nedaleko mého bydliště - z Čertovy zdi. Nachází se zhruba 5 kilometrů severozápadním směrem od Českého Dubu, na rozhraní obcí Kotel a Smržov. Přesnější poloha je zde.
Podle pověsti se vsadil sedlák z nedalekého Zábrdí s čertem o svoji duši, že během noci postaví zeď od Ještědu až po Bezděz. Když už bylo téměř jisté, že sedlák prohraje a čert svoji robotu dokoná, hodinu před kuropěním zakokrhal kohout. A po poraženém pekelníkovi zde zůstala právě Čertova zeď.
Realita je však trochu jiná. Během třetihor nastalo mohutné zemětřesení, které vytvořilo puklinu mezi Ještědem a Bezdězem a tato puklina se vyplnila žhavou čedičovou lávou, která po ztuhnutí vytvořila podobu hradby. V minulosti však byla podstatně větší. Bohužel na konci 19. století se část této památky použila jako materiál na vznikající silnici. Až od roku 1964 je Čertova zeď chráněný přírodní výtvor.
Po vytěženém čediči zde zůstaly příkopy, na jejichž svislých stěnách se nacházejí pískovce. Největší masiv na vrcholu kopce se jmenuje "Čertův stolec", o 350m směrem na jih leží na čedičové žíle balvan "Čertova hlava" a ještě kousek níže z kopce se nachází "Čertova brána".
Čertova zeď rozhodně stojí za návštěvu, je snadno dostupná i pro malé děti.

pondělí, ledna 01, 2007

Šťastný Nový rok 2007 !

Tak se nám nějak starý rok 2006 přehoupl do nového. Doufám, že bude šťastnější a veselejší než ten předchozí.

Pohlednice města Český Dub - světlotisk, rok 1902Pohlednice města Český Dub - světlotisk, rok 1902