Mono 2.0, open source .NET, je tu

Před několika lety, pokud mne paměť neklame, tak na přelomu let 2003 a 2004, se pokusil Microsoft odpovědět na úspěch firmy SUN Microsystems s platformou Java a vytvořil novou, vlastní platformu .NET. Přestože Microsoft sliboval, že půjde o multiplatformí řešení, respektive řešení nezávislé na operačním systému, jde jen o jakousi nadstavbu nad MS Windows, která má do nezávislosti na operačním systému daleko.

Zobrazit celý článek

První jazyk – Python

Od roku 1986 trávím jistou část svého života vedle počítačů, prvním byl 8 bitový Sinclair ZX-Spectrum, který jsem po pár letech povýšil na Sinclair ZX-Spectrum+128K a po roce 1989 jsem si přes Commodore Amiga proklestil cestu k PC, s nimiž se potýkám dodnes. V éře 8 bitových počítačů mohl člověk hrát hry, nebo dělat první experimenty s programováním, ale internet byla hudba velmi vzdálené budoucnosti.

Zobrazit celý článek

AJAX je perfektní, ale nepříjemný

AJAX není nikterak novou technologií, jak se někteří vývojáři tváří, vždyť bez problémů funguje v MS IE 6, kterýžto prohlížeč lze s klidným svědomím oznažit jako opravdu obskurdně zastaralý. AJAX je jedna ze zajímavých technologií, kterou prohlížeče uměly dlouho, ale přesto ji vývojáři webů nepoužívali. Já jsem se AJAXu donedávna bránil, ne proto, že bych viděl nějakou nepříjemnu komplikaci v programování, ale nepracoval jsem na takové aplikaci, kde bych AJAX dokázal opravdu využít.

Zobrazit celý článek

Bash: převod názvů na verzálky

Občas se potýkám s nějakými detaily, které vznikají při přípravě dat pro weby. Protože mi weby jedou výhradně na Unixových serverech vzniká menší problém s citlivostí na velikost písmen v , který uživatelé systémů na prazákladech CP/M neznají (do tohoto řadím i nejnovější MS Windows (jeho)Vista). Pokud se máme na něčem domluvit, je občas potřeba převést veškeré názvy obrázků, případně jiných souborů, na pouze minusky, nebo verzálky, obvykle směřuji k tomu, čeho je připraveno více.

Pro převod veškerých názvů mi slouží jednoduchý script (pochopitelně malou úpravou lze udělat obrácený postup):

 

Převod na minusky, nebo verzálky v nějakém importním souboru, třeba csv, který vyexportuji z MS Excelu/OpenOffice.org Calcu, je již triviální záležitostí, téměř neznám scriptovací/dynamický jazyk, který by v knihovnách pro zpracování řetězců neměl tyto potřebné funkce.

#!/bin/sh 
 for i in * 
 do 
 j=`echo $i | tr '[a-z]' '[A-Z]'` 
 mv $i $j 
 done

PHP – relativní vs. absolutní cesty

Jedním z drobných úskalí webového vývoje, které ale spolehlivě zamotá hlavu drtivé většině začátečníků je relativní adresace. V menších projektech je ještě reálné pracovat s relativními cestami k souborům, ale ve větších projektech (Kdo z nás chce pořád sbírat jen drobky?) je situace reálně neudržitelná. Já jsem před lety začal používat absolutní cesty a musím přiznat, že mám konečně klid.

Zobrazit celý článek

Nový web – www.aspra.eu

Firma Aspra s.r.o. má nové internetové stránky, které pocházejí dílem z mé dílny (engine) a částečně z dílny Daniela Řezníčka (layout). Bohužel se nepovedlo vyřešit některé problémy se zastaralým, ale přesto ještě používaným prohlížečem Microsoft Internet Explorer 6, tak jsou připraveny 2 vzhledy, jeden pro toto staré IE a další pro novější prohlížeče, které nemají problémy s dodržováním norem W3C.

Stránky ještě podstoupí nějaké opravy, nicméně v této chvíli se již nebude měnit jejich komiksový vzhled.

O hosting se stará můj preferovaný webhoster Klenot.cz.

NetBeans a Mozilla

Nejsem sice bůhvíjak pokročilý vývojář na Java platformě, spíše jsem zůstal na úrovni menších prográmků, které eventuálně používají databázi, poslední dobou jsem si pro tyto účely dost oblíbil JavaDB (je to Derby od Apache). S nástroji jsem překonal před delší dobou jakousi schizofrenii, kdy se mi líbilo něco z Eclipse a něco jiného z NetBeans, doinklinoval jsem k výhradnímu používání NetBeans.

Zobrazit celý článek

PHP – Bufferujeme výstupy

Nebudu na svém blogu suplovat tutoriál k PHP, jenž vyšel na portále LinuxSoft, kam autorsky přispívám, jen občas napíšu několik poznámek k tomu, co se rádo zapomíná a co může způsobit „programátorům“ nejednu bolest hlavy.

Pokud nebudete používat buffering, tj. řídit výstup dat do prohlížeče, setkáte se s chybou, která bude tvrdit, že jste odeslali data před hlavičkami, typickým místem pro tuto chybu je pokus zapsat cookie někde uprostřed scriptu, nebo pokus o přesměrování na jinou stránku při chybě. Příjemným bonusem je možnost pomocí bufferingu zrychlit načítání stránek, protože můžete výstup sbalit do gzipu a přenášená velikost po lince bude nepoměrně menší čas (CSS, Javascripty, či vygenerované HTML jsou hodně děravé soubory a dobře se komprimují), tedy pokud nebude na stránce mnoho obrázků.

Zobrazit celý článek

Prokletí jménem FirebirdSQL a .NET

Již delší dobou se potýkám s databází FirebirdSQL ve spojení s platformou .NET (někteří programátoři se ošklíbnou, ale konkrétně VisualBasic.NET). Ani jedna z jmenovaných komponent není špatná, ale jako celek to občas velmi hodně bolí.

FirebirdSQL je vynikající nástroj, de-fakto nástupce Interbase od Borlandu, a jak jsem četl v učebnici Pavla Císaře, je to nejlépe ukrytý poklad Borlandu. Rychlá a malá databáze s obrovskými možnostmi, která v pohodě běží na MS Woknouz, *BSD i GNU/Linuxu(teda pod Linuxem bylo na jakémkoliv jiném hardware než i386/x86-64 zprovoznění naprosto netriviální operací). Líbí se mi existence klasického serveru (ve dvou architekturách classic server a superserver) a malé vestavné, avšak naprosto plně funkční, vestavné verze.

Doplnění (25. 9. 2007): Zapomeňte, že program se embeded verzí dáte na síťový disk. Embedded FbSQL knihovna se pokusí připojit na plný server, přemýšlí za Vás a pokud tam ten server nainstalovaný není, máte smůlu. Jsem si vědom možnosti poškození dat, ale pro testování bych problém neviděl, připojoval by se jediný člověk, jen mi vadí, že FirebirdSQL přemýšlí za mě.

No FirebirdSQL se mi líbí, je fantasticky rychlý (ve srovnání s mým oblíbeným PostgreSQL) a na rozdíl od jakoby databáze MySQL jde o plnohodnostný nástroj, který umí transakce, stored procedury triggery (vím, že MySQL to umí také, ale jak :-(). Jsem z těch, co PostgreSQL popisují slovy „open source Oracle“, ale pro vlastnosti a schopnosti FirebirdSQL rozumné přirovnání nemám.

Nejsem zastánce Microsoftu, ale jejich koncept .NETu považuji za dost povedený, až na to, že z proklamované multiplatformnosti je multiplatformnost pouze mezi několika verzemi MS Windows, autoři projektu Mono se sice snaží, ale, bohužel, MS jim tu práci docela znesnadňuje. Bytecode, který získáte po překladu programů nad .NETem je mnohem čistší, než ten, který vznikne po překladu pro JVM. Mimochodem, VisualStudio.NET je excelentní nástroj, ale i na něm jsem našel mouchy. Na straně druhé je ještě stále vidět relativní mládí této platformy, což je vidět na zatím relativní chudobě informací na fórech.

Přiznávám, že Java mi přijde mnohem vyzrálejší a profesionálněji pojatá, než-li je tomu u .NET (mládí platformy je mimo jiné vidět i na rychlém vydávání nových verzí, které přidávají další a další vlastnosti). Java ve spojení s databázovým serverem PostgreSQL by byla excelentní kombinace. MŇAM!

Proč to celé píšu? U firmy C.A.C spol. s r. o., pro níž pracuji (přiznávám že velmi rád), dělám na platformě .NET ve spojení s FirebirdSQL. Oba nástroje jsou fajn, ale…

  • Pro FirebirdSQL existuje jedna špičková učebnice, ale tím jaksi informační zdroje končí. Navíc je tato učebnice psána v době FirebirdSQL 1.0 a nepokrývá dnešní možnosti, hlavně v oblasti stored procedur.
  • FirebirdSQL nefunguje v Embedded verzi na sdíleném síťovém disku. Ale opravdu to nefunguje.
  • Přinutit VisualStudio.NET korektně spolupracovat se Subversionem (nástroj pro správu verzí software) není moc pěkný úkol. No zrovna v tomto případě zlaté Delphi, protože ty s klientem TortoiseSVN spolupracují nádherně.
  • Zatím jsem nenašel příjemná rozšíření, jako JediVCL (pro Borlandí produkty), jenž by mi tak citelně vylepšili práci. Podobná rozšíření znám i pro své oblíbené prostředí NetBeans, ale připadá mi, že to pro VisualStudio.NET je v ilegalitě.

Když vezmu pro a proti, ano dělám se zajímavou architekturou a dokážu dotáhnout software do konce, co mě štve je tápání po střípcích informací, které neuvěřitelně zdržuje. Připadám si jako pitomec, jenž pořád dělá miniprojektíky a maže je, protože potřebuje přijít na to, jak co funguje. Jeden příklad za všechny: combobox, ve kterém mám programově předdefinované hodnoty a zároveň má další hodnoty navázány z databáze.

Hledání ideální databáze

Přestože ještě před několika lety (asi tak 8-10) jsem se do práce s databázemi nikterak nehnal, jsou dneska mou hlavní obživou, ať již jako programátora aplikací, které využívají databázový backend, nebo jako člověka, který se snaží jednu velmi zajímavou pokud možno co nejlépe prozkoumat a předat dalším vědomosti o ní. Jsa člověk, který preferuje oss řešení, pouzastavím se v tomto blogspotu u několika rozšířenějších databázových projektů.

MySQL

Pro řadu vývojářu se jedná o první SQL databázi, se kterou se seznámí. Často tomu není pro její kvality a funkce, které jsou v posledních verzích na dobré úrovni, ale pro její snadnost v používání a rozšířenost v učebnicích. Většina učebnic, jednoho z nejrozšířenějších programovacích jazyků, ale i kurzů PHP se opírá právě o tento databázový backend.

Především z řad webových vývojářů je MySQL vnímáno jako rychlé úložiště textů, ještě v dobách nedávných diskvalifikované téměž nemožností používat kódování UTF-8. Do verze 4.1 jsem měl z této databáze podobný pocit. Verze 4.1 vyřešila problém s ukládáním různých kódových stránek a verze 5.0 přidala funkčnost, která server sice mírně zpomalila, ale zato ji přiblížila k těm velikým databázím. Tou funkčností je míněna podpora transakcí, ano, ty staré verze uměly, ale ne na svých nativních souborech, stored procedur a triggerů.

Dnes je MySQL vyspělou datábází, kterou lze bez výrazných problémů nasadit téměř na libovolný systém, jen s mírně komplikovanou licencí. Nový engine Falcon, který píše Jim Starkey, dřívější vývojář Interbase/FirebirdSQL, slibuje výrazný pokrok ve všech směrech.

FirebirdSQL

FbSQL je velmi zajímavým kusem software. Pro spoustu lidí se jedná o databázi, která skvěle funguje pod MS Windows, nicméně, mám ji, k plné spokojenosti, otestovánu i na Linuxu. Bohužel pokud budete chtít tento server kompilovat pro jinou platformu, než je x86, budete mít trochu problémy. Silnou zbraní tohoto serveru je existence embedded verze, kdy nepotřebujete mít instalovaný celý server, ale pouze postačuje knihovna v místě, kde o ní Váš program bude vědět. Databáze je velmi rychlá a stabilní, ale velká slabina je v dostupnosti a kvalitě dokumentace.

PostgreSQL

O této databázi nemám tady moc co napsat. Rychlá, sice při malém zatížení pomalejší než FbSQL, nebo MySQL, stabilní s kvalitní licencí a velmi přesně splňující ANSI SQL. Mezi začátečníky není příliž oblíbená, protože první kroky v ní vyžadují větší použití mozku, než v případě MySQL. Obrovská možnostmi a podporou. Ano přiznávám, že v současnosti bych pro ní, v oss světě, stěží hledal konkurenta. Je to také ta databáze, do které se snažím co nejvíce proniknout a to co vím předat dále.

SQLite

SQLite není úplně opravdovou databází. Nejde o server, ale o malou knihovnu, která plní funkčnost velkých databází. Jedná se o embedded databázi v pravém slova smyslu, umí uložit data, updatovat, vymazat a vybrat, zvládá triggery a pohledy. A to je v podstatě vše :-). Především je malá, rychlá a kvalitní podporou v nejrůznějších programovacích jazycích. Já sám tímto řešením nahrazuji v udržovaných programech, psaných v Borland Delphi, starou a velmi obtížně vyhovující, manipulaci s několika dbf soubory.

SQLite3 má mnoho vylepšení, oproti SQLite2, zejména v lepší práci s Unicode, bohužel třeba PHP5 umí, bez doplnění o PDO, pracovat pouze se starší SQLite2. Všechny data i definice jsou uloženy v jediném souboru, který je pohodlně přenositelný kamkoliv a to dokonce bez ohledu na procesory, které fungují jako big endian, nebo little endian.

Další databáze

Tak a dalšími se tu zabývat nebudu, byť by to bylo zajímavé téma. Chtěl jsem postihnout jen několik apsektů v těch, které se využívají pro běžný vývoj. Tedy BerkleyDB je prý nejrozšířenější databází na světě, ale neznám moc programátorů. kteří by ji používali v zákaznických řešeních.

Poznámka

Tento článek vyšel v delší, upravené, podobě na portále LinuxSoft.cz.