Pro koho je určeno proc.linux.cz?

2008-07-01 14:18 napsal Lukáš Havrlant

Minule jsme dělali užitečné věci, tak dneska budeme kafrat.

Chvilkově koketuji s myšlenkou nasadit na počítač Linux. Nakonec jsem to skoro vždycky vzdal a šel jsem dělat něco zajímavého a prospěšného na Windowsech :-). Ale dneska jsem si řekl – musím se nějak donutit zkusti ten Linux. Přečtu si tedy důvody, proč bych měl Linux vyzkoušet. Heh, chuť instalovat Linux mě zase na pár okamžiků přešla. Přečtěte si to sami: Výhody operačního systému Linux. Docela by mě zajímalo, pro koho je tento seznam určen. Projdeme si to:

Moderní operační systém: Linux je moderní operační systém (OS), jehož ovládání je stejně přívětivé jako u jiných systémů a který obsahuje velké množství ovladačů pro nejrůznější standardizovaný hardware.

WinVista je také moderní operační systém, tento bod je tedy zbytečný.

Bezpečný – bez virů a spywaru: Na Linuxu není zpravidla nutné používat žádný komplikovaný zabezpečovací nebo antivirový systém.

Zde se autoři textu pravděpodobně obracejí na ty lidi, kteří zpravidla otevírají všechny přílohy v emailech, denně navštěvují hory porna (ale s příchodem redtube.com už vlastně ani na pornostránkách viry nechytnete ;-)) nebo mají počítač plný cracklých programů. Jinak nevím, kdo by ještě dnes mohl chytit vira. Za dva roky jsem na dvou počítačích (desktop a notebook) chytil pouze jednoho trojana na kolejní síti, jinak nic. Na XP používám firewall, na Vistě nepoužívám ani firewall ani antivir. Pokud bude uživatel alespoň trochu uvědomělý, jsou viry minulostí i na Windowsech (od Visty už člověk navíc defaultně nepracuje jako administrátor). Ze svého okolí vím, že problém se zabezpečením počítače mají akorát lidi, kteří mají nelegální cracklé Okna, nota bene bez SP2 a bez aktualizací. Sedm let neaktualizovaný systém a ještě se diví, že jim to blbne :-). Tento bod tedy bude stále více bezvýznamný.

Zcela ovladatelný: Linux neodesílá žádné citlivé informace bez vašeho vědomí. V naprosté většině případů systém nevyžaduje restart k projevení změn.

Koho vlastně tohle zajímá? Ani nevím, jestli mi Windows odesílá nějaké informace bez mého vědomí. Firewall na XP mi nikdy nic nezahlásil. Změny bez restartu jsou fajné, ale že by to měla být natolik zásadní výhoda, aby v tomto seznamu musela být…?

Kancelářské nástroje (Office): Mezi aplikacemi každé větší linuxové distribuce najdete kancelářský balík, tzv. office.

Na Windowsech defaultně žádný kancelářský balík není, to je pravda. Lze ale snadno doinstalovat. Tedy opět detail. Nezkušenému uživateli počítač zařizuje někdo jiný a zkušený si to tam umí doinstalovat.

Velké množství aplikací: V každé linuxové distribuci naleznete velké množství nejrůznějších aplikací – Prohlížeče internetu, přehrávače multimédií, kancelářský software, poštovní klienty, nejrůznější editory (včetně grafických i 3D), programovací nástroje (IDE, kompilátory), komunikační nástroje (ICQ, Jabber apod.), hry a další – které jsou schopny uspokojit všechny běžné potřeby při práci s počítačem. Přesto vás ale neomezuje pouze na tyto jako jediné možné, ale umožňuje vám vybrat si ty, které vám nejvíce vyhovují. Naprostá většina těchto aplikací je k dispozici zcela zdarma.

Je hezké, že nás autoři ubezpečili, že instalací Linuxu získám to, co jsem měl i na Windows. Opět nechápu, pro koho je tento bod určen. Například kterého běžného uživatele zajímá, že tam bude mít kompilátory? (Pomiňme fakt, že nikdo z nich ani neví, co to je.) Kdo kompilátor potřebuje, ví že tam je.

Variabilní a přizpůsobitelný: Linux lze výkonově i vzhledově přizpůsobit každému požadavku. Linux je možné používat na velkém množství zařízení od PDA, přes notebooky, stolní počítače až po specializované servery.

Opět další bezvýznamné chlubení. Koho by to mělo zaujmout? Pokud chci zkusit Linux na desktopu, opravdu mě nezajímá, že lze Linux použít i na serverech. Nehledě na to, že všechno z toho zvládá i Windows.

Víceuživatelský a víceúlohový: Nemusíte se přihlašovat a odhlašovat při administraci systému. Pracovat může i několik lidí najednou. Na Linuxu může existovat a pracovat velké množství uživatelů, a to i zároveň. Uživatelé mohou sdílet stejnou plochu, stejně tak jako mít svoji plochu zcela oddělenou. Při administraci systému není třeba se odhlašovat a znovu přihlašovat, i když běžně nepracujete jako administrátor. Na Linuxu může běžet zároveň velké množství aplikací od různých uživatelů.

Při vší vůli jsem vlastně nepochopil, co je tímhle bodem míněno. Pojmům „víceuživatelský“ a „víceúlohový“ příliš nerozumím. Zajímalo by mě, jak tento bod chápou lidi, kteří ví o IT ještě méně než já :-).

Vzdálená správa a použití: Na Linuxu je možné pracovat vzdáleně, a to mnoha různými způsoby.

To zní docela zajímavě. Je nějaký zásadní rozdíl mezi tímto a třeba připojením na vzdálenou plochu ve Windows?

Dostupný v češtině: Většina aplikací na vás bude mluvit česky.

No nevím, co jsem viděl Linuxy, tak většinou nebyly přeloženy úplně celé a byly tam dost chyby. U staršího Ubuntu určitě, nové jsem měl pouze anglicky, takže nevím. Každopádně Windowsy jsou v češtině celé.

Pro všechny zdarma: V podstatě všechny linuxové distribuce jsou k dispozici zdarma.

Ano, to je výhoda.

Osobně mě tento seznam spíše odradil, protože pokud bych se měl držet jen tohoto seznamu, tak jsem si zcela jistý, že bych Linuxem absolutně nic nezískal, mohl bych jenom ztratit. V podstatě mě zaujal jen ten poslední bod, a to jsem už dávno věděl. V tomto seznamu se opravdu vyskytují pouze body, které buď zájemce ubezpečují, že Linuxu má zhruba tytéž schopnosti jako Windows, ale žádný bod neupozorňuje na něco (zásadního), co by měl Linux a Windows ne. Celé mi to připomíná tu story s Aero a Berylem. Beryl existuje pod Linuxem už jistě nějaký ten čas. Ale kdy se o tom dověděl svět? Samozřejmě až ve chvíli, kdy Microsoft vyrazil s Aerem. To pak bylo na světě plno článků typu „ale to my máme už dávno a lepší!“ A zcela samozřejmě zase pozdě. Proč ty články nevznikly dřív? Stejné je to s tou stránkou proc.linux.cz.

To je na tom Linux opravdu tak špatně nebo jen nemá schopné textaře?

Komentáře [22]

Minirozšíření jdem.cz

2008-06-15 23:28 napsal Lukáš Havrlant

Docela jsem si oblíbil český web jdem.cz provozovaný Arthurem Dentem. Jen mě tak nějak vždycky na Opeře štvalo, že to pro neexistuje nějaké pohodlné rozšíření. Jakožto uživatel mám k dispozici pouze obecný bookmarklet, kterýžto má ale jednu zásadní vadu: po kliknutí se javascriptem otevře okénko, z kterého musím ručně zkopírovat odkaz a následně toto okno ještě zavřít. To mi přišlo takové neohrabané, respektive zdlouhavé. O něco lepší je rozšíření pro Firefox, ale tam mě zase nebavilo klikat na nástroje → jdem.cz → odkaz z aktuální adresy. Hmm, věčně nespokojený Lukáš :-).

A z oné mé nespokojenosti vzešel nápad udělat si vlastní jednoduché rozšíření pro jdem.cz; když už má jdem.cz přímo napsané API, tak proč ho nevyužít. Mimochodem za to API opravdu díky, respektive hlavně díky za ukázkový kód v PHP, předtím jsem tu adresu lovil přes file_get_contents, ale to nesežralo identifikátor za kanálkem #. No jo, já a PHP.

Tak tedy představuji další bookmarklet pro jdem.cz:

Zkrátit!

A teď v čem je to jiné – po kliknutí na bookmarklet se otevře stránka, kde se zavolá jdem.cz, které zkrátí adresu. Následně se tato adresa přes flash (spolehlivé javascript only řešení jsem nenašel) přímo nakopíruje do schránky a okno se navíc ještě zavře. Zde jsem ještě musel dát krátkou prodlevu, protože když jsem okno zavřel hned, prohlížeče s tím měly problémy. Čert ví proč. Bookmarklet je stejný jako originál, jen jsem změnil adresu. Možná by stálo za to to okénko ještě zmenšit. Funguje mi to v Opeře 9.50 i ve FF3; jinde netestováno.

A aby toho nebylo málo, napsal jsem si ještě uživatelský skript, který toto okénko zavolá při stisknutí klávesové zkratky. Zde je:

onkeydown=function()
{
        kldown(event.keyCode);
}

onkeyup=function()
{
        klup(event.keyCode);
}

var klshift=0;
var klalt=0;
var kla=0;

function kldown(k) {
        if(k==16) klshift=1;
        else if(k==18) klalt=1;
        else if(k==88) kla=1;
        if(klshift && klalt && kla) {
                // alert('Stisknuta kombinace ALT+SHIFT+X');
                x99=window.open('http://nastroje.havrlant.net/jdem/?q='+encodeURIComponent(document.location.href),'Jdem.cz','modal=1,status=0,scrollbars=1,toolbar=0,resizable=1,height=100,width=200,left='+(screen.width-785)/2+',top='+(screen.height-550)/2);
                setTimeout('x99.focus()',1000);
                klshift=0;
                klalt=0;
                kla=0;
        }
}

function klup(k) {
        if(k==16) klshift=0;
        else if(k==18) klalt=0;
        else if(k==88) kla=0;
}

Po stisknutí shift + alt + x se zobrazí stejné okno a do schránky se uloží zkrácená verze URL, na které zrovna jste. Původně psáno pro Operu, tu opici pro Javascript na Firefoxu nemám, takže jsem to nezkoušel. Pokud někdo chce jinou klávesovou kombinaci, nechť si skript přepíše, není to zase tak těžké.

Anebo editujte přímo soubor standard_keybo­ard.ini v profilu Opery, což je hafo jednodušší :-). Viz komentáře.

Líbí? Užívejte si to! Nelíbí? Hmm. :-)


Ještě jsem zapomněl poděkovat Měsíčkovi za pomoc při hledání spolehlivého řešení pro kopírování do schránky a DJ Mikymu, který mi nechtě pomohl s klávesovou zkratkou v Javascriptu.

Komentáře [12]

Potřebuje programátor vysokou školu?

2008-04-20 21:40 napsal Lukáš Havrlant

Nedávno jsme se zase na diskusi chytli, jakou vysokou školu pro programátora a samozřejmě jsme sklouzli i k tomu, jestli má vůbec VŠ smysl. Takže jak to je?

Já sám studuji první ročník aplikované informatiky na UPOLu. Loni jsem studoval první ročník informatiky na téže škole, ale bylo tam na můj vkus až moc detailní matematiky. Zkrátka mi stačil jeden semestr algebry a analýzy a věděl jsem, že tenhle obor nebude to pravé ořechové. Od hodně lidí už jsem slyšel, že VŠ člověka nenaučí programovat. Student získá patřičný rozhled, přičuchne k věcem, ke kterým by se jinak možná ani nedostal, ale programovat se prý nenaučí. Tímto vysílám otázku na ty, kteří už nějakou VŠ obor informatika mají za sebou – myslíte si, že vás škola naučila programovat?

Já sám si myslím, že mě škola učí programovat. Alespoň ta má. Hned na začátek tady vlepím seznam všech povinných a většiny volitelných předmětů, které mě za tři roky na bakalářském studiu potkají.

1. semetr:
– Algoritmická matematika (metody třídění)
– Informatická propedeutika (takové ty obecné znalosti – co je to http, připojení na vzdálenou plochu, ssh, základy linuxu, …)
– Paradigmata programování (funkcionální programování)
– Softwarová laboratoř (základy C)
– Úvod do informatiky (matika)

2. semestr:
– Matematika (algebra)
– Algoritmická matematika (metody vyhledávání)
– Paradigmata programování (OOP)
– Softwarová laboratoř (pokročilejší věci v C)
– Struktura počítačů (dvojková soustava, ASCII, Procesory, …)
(a jeden dobrý béčkový)
– Software pro matematiky (MatLab nebo Maple)

3. semestr:
– Matematika (analýza)
– Algoritmická matematika (teorie grafu)
– Formální jazyky a automaty
– Informatická propedeutika (TeX)
– Paradigmata programování (asi makra nebo dál OOP)
– Projektový seminář (samostatný projekt, kód)
– Softwarová laboratoř (C++ OOP)

4. semestr
– Matematika (analytika)
– Operační systémy (assembler)
– Projektový seminář (GUI)
– Softwarová laboratoř (dál C++)
(zde uvedu i béčkové předměty, je jich dost a jsou celkem zajímavé)
– Algoritmická matematika (dál teorie grafu)
– Matematická logika
– Paradigmata programování (paralelní programování)
– Jazyk C# (prostě cé kanál v .NET)

5. semestr
– Databázové systémy
– Informatická propedeutika (teoretická příprava na bakalářku, aneb jak ji napsat tak, aby se z toho pan docent nepozvracel)
– Operační systémy (pokračování)
– Počítačové sítě
– Projektový seminář (bakalářka)
– Vyčíslitelnost a složitost (náročnost algoritmů)
(výběr zajímavých béčkových předmětů)
– Metody vývoje softwaru („Předmět Metody vývoje softwaru se věnuje implementaci a nasazení informačních systémů ve větších společnostech, kde se klade důraz na přenostitelnost, interoperabilitu a integrovatelnost. Cílem je přiblížit architektury stávajících systémů založených na platformách Java, J2EE a SOA a připravit studenty do praxe v oboru.“)
– Programování v Common Lispu
– Platforma .NET
– Úvod do informačních technologií („Předmět uvádí do problematiky vytváření a provozu informačních systémů. Přibližuje dovednosti a činnosti nezbytné pro úspěšné vytvoření a dlouhodobě efektivní provozování informačního systému s vysokou přidanou hodnotou. Předmět je určen zejména posluchačům bakalářského oboru Informatika. Výuka bude vedena odbornými lektory firmy IBM.“)

6. semestr
– Bakalářská práce
– Informační systémy (XHTML, XML, CSS, PHP, apache, …)
– Projektový seminář (bakalářka)
– Algoritmizace a programování („Datové struktury, algoritmy (třídění, vyhledávání, grafové algoritmy), paradigmata programování (procedurální, funkcionální, logické, objektové, paralelní).“ – tenhle předmět nechápu, možná to má být opáčko)
– Informační technologie („Databázové a informační systémy, softwarové inženýrství, počítačové sítě, softwarové inženýrství, základy počítačů.“)
– Matematické metody („Algebra, lineární algebra, geometrie, matematická analýza, numerické metody, pravděpodobnost a statistika.“ – taky opakování)
– Teoretické základy informatiky
(všechny béčkové)
– Lineární programování
– Grafové algoritmy
– Počítačová geometrie
– Softwarové inženýrství („Předmět je úvodem do softwarového inženýrství. Jeho záměrem je seznámit posluchače s postupy a technikami, které se používají při tvorbě a údržbě softwarových aplikací.“)
– Softwarová praxe („Cílem předmětu Softwarová praxe je předvést instalaci a práci s operačním systémem a uživatelskými i serverovými aplikacemi na bázi svobodného softwaru. Studenti budou seznámeni se strukturou a možnostmi operačního systému Linux, jeho konfigurací, nastavením sítě, síťovými službami (http, ftp, DHCP, DNS, CUPS, Samba, LDAP, SQL,…) i uživatelským prostředím. Absolvent předmětu by měl získat přehled o problematice správy Linuxu a v něm nejčastěji používaných služeb.“)
– Extrémní programování

Tak, to je všechno. Teď zkusím shrnout, kde všude se střetnu s programováním.

Hned v prvním semestru máme tři předměty, ve kterých programujeme. V softlabu se učíme C; prakticky výhradně syntax s občasnými zmíňkami o tom, jak by céčkový kód měl vypadat, aby se tomu dalo říkat céčkový kód. V algoritmice potom programujeme algoritmy třídění – bubblesort, quicksort,… Asi nic extra užitečného, ale zase se u toho docela naučíme myslet. Ono přepsat quicksort nebo heapsort z teoretického zadání ve skriptech do C není zase tak jednoduché. Nejzajímavější předmět jsou potom Paradigmata programování. Tady se vyloženě „učíme programovat“. Výuka v prvním semestru probíhá ve Schemu, což je dialekt Lispu a je to více méně funkcionální jazyk. A je strašně pěkný :-). Sice v něm nic moc praktického nevytvoříte, ale má jednoduchou syntaxi a je to zkrátka nejlepší programovací jazyk na výuku, jaký jsem zatím viděl. V tomhle předmětu do nás rvou obecné zásady programování a kromě toho se seznámíme s funkcionálním paradigma, což taky není k zahození.

Druhý semestr probíhá podobně, v softlabu bereme dál C, v algoritmice binární, AVL a B stromy (to je taky hezké procvičení programování) a v Paradigmatech už máme OOP v Lispu. Ono je možná trochu zvláštní, učit se OOP v jazyku, který se skoro nepoužívá, ale má to své nesporné výhody. Lisp má strašně jednoduchou syntax a tak se málokdy stává, že přemýšlíte, jak to či ono napsat. Když máme cvičení z PP, tak zkrátka vyloženě řeším OOP věci. Kdybychom se základy OOP učili třeba v C++, strávím polovinu času nad pointrama a výuka OOP jde do háje. Bývalá spolužačka (která nikdy předtím neprogramovala) třeba měla na výšce Pascal a asi po pěti týdnech začali brát OOP. Jen co se rozkoukali, tak už do nich házeli objekty a spolužačka se mezitím ztrácela v samotné syntaxi. Nepřijde mi to jako šťastné řešení.

Další ročníky už tak neznám, protože jsem je ještě neabsolvoval :-). Ale z doslechu od druháků/třeťáků: V Softwarové laboratoři se začne brát OOP prakticky v C++, v paradigmatech myslím makra. Důležitější je ale projekt – přes celý druhák máme rozplánovaný projekt, což je nějaký větší program typu šachy nebo dáma. První semestr se řeší samotný kód a druhý semestr GUI. Dobré na těhle projektech je, že nejste vázání jazykem – můžete si zvolit jaký jazyk chcete. Takže kromě obligátních C++, C#, Javy apod. tam můžete najít i projekty v Ruby nebo v Lispu. Jediné omezení je, že „výuka“ probíhá z části formou konzultací, takže byste si měli zvolit takový jazyk, který alespoň někdo z katedry ovládá. Já sám jsem třeba uvažoval o Lispu, protože to je opravdu hezký jazyk, ale do budoucna bude lepší, když to udělám v nějakém normálním jazyce.

Třetí ročník už je v podstatě obdoba druhého, akorát místo projektu děláte bakalářskou práci. Takže pokud to vemu kolem a koukolem, programováním strávím na VŠ opravdu hodně času; nemám zrovna pocit, že by mě tam neučili programovat. Za sebe mohu říci, že vyučující u nás jsou skvělí a neučí nás nějaké kraviny. Kromě toho i ostatní „neprogramátorské“ předměty mi přijdou docela zajímavé. Prakticky všechny předměty, které na aplikované informatice máme, jsou zábavnější než algebry a matalýzy… :-)

Nemyslím si, že by škola byla na prd, mně třeba dává docela dost. I samotní vyučující říkají, že absolventi naši univerzity vždy najdou do pár týdnů uplatnění, takže ta škola nebude úplně na nic. Nehledě na to, že se na VŠ učí věci, které bych se sám ze skript učit nechtěl (teorie grafu, například). Ale samozřejmě nijak nepopírám, že za pomoci moudrých knih a moře pokusů se lze naučit programovat stejně dobře či lépe.

Já hlasuji pro VŠ – už z toho důvodu, že sám bych se programovat nedonutil naučit. A i když jsem se donutil, tak to dopadlo špatně. Jaj, kolikrát já jsem se začal učit OOP… :-) Programátor VŠ nepotřebuje, ale hodí se.

Komentáře [30]

Typová kontrola atributů českého validátoru

2008-01-16 00:06 napsal Lukáš Havrlant

Vzpomínáte ještě na článek o chybujícím validátoru W3C? Ve zmíněném článku popisuji chyby, která standardní validátor není schopen odhalit. Jednou z těch chyb jsou právě atributy, které mají ve specifikaci určeny hodnoty, jež smí obsahovat. Ovšem standardní validátor toto není schopný reflektovat. Český validátor to již od desátého ledna umí.

Pochopitelně se nezobrazí chyba, ale pouze varování. Dokument s takovýmto kódem je stále validní, protože i se všemi těmi nesmysly (<img src="stojící medvěd" alt="Lední Medvěd">) je stále validní, vo tom žádná. Stručný přehled změn si demonstrujeme na následujícícm příkladu:

<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="cz">
<head>
<title>Titulek</title>
</head>
<body>
<p>

<a href="Stín Katedrál.mp3"
target="1. rám"
style="color: red"
onclick="return false"
class=""
id="kotva"
name="kotvička">Príma hudba</a>

<img src="medved.jpg"
height="stojici medved brtnik"
width="jak krava"
alt="Medved brtník močí za sloupem veřejného osvětlení">

<font color="pekelná modř">while(!asleep()) $sheep++;</font>

</body>
</html>

Validátor tedy hlídá tyto drobnosti:

  • Zda je určen výchozí stylovací a skriptovací jazyk.
  • Jestli máme správnou hodnotu atributu lang. Často se stává, že tam lidi píší cz namísto cs.
  • Kontroluje syntaktickou správnost adresy odkazu, ve které se nesmí vyskytnout mezery či diakritika (obojí lze zapsat pomocí % sekvencí).
  • Kontroluje také platnost hodnoty atributu target, který určitě nesmí začínat číslem a nemá obsahovat diakritiku.
  • Atribut class musí obsahovat alespoň jednu třídu.
  • Použijeme-li v odkazu jak atribut name, tak i id, musí být stejné.
  • Délky a výšky musí být buď pouze číselné hodnoty, nebo zápis číslo a procento.
  • Stejně tak validátor ohlídá, zda skutečně v atributu color používáte barvu nebo nějakou blbost.
  • …a jistě hlídá ještě pár dalších atributů.

Standardní validátor samozřejmě daný kód označí za validní bez žádných dalších varování.

Český validátor opravuje více chyb či nedostatků oproti tomu hlavnímu. Celý výčet změn si můžete přečíst přímo u zdroje. Je toho docela dost ;-).

Komentáře

Vánoční přání Radku Hulánovi

2007-11-28 18:12 napsal Lukáš Havrlant

Protože poslední dobou byl na Radka každý zlý, rozhodl jsem se ho potěšit – mírně předčasným – vánočním přáním.

Takže Radku, šťastné a veselé!

:-)

Komentuj, plantážníku! [16]

Je Opera jen pro web 1.0?

2007-06-04 17:22 napsal Lukáš Havrlant

Operu mám rád. Je to především hezký a elegantní (to je to správné slovo) prohlížeč. Brouzdání s Operou po internetu je radost, alespoň dokud nenarazíte na první web, který v ní nefunguje na sto procent. Dlouho jsem přehlížel, že mi některé stránky v Opeře nefungovaly jak měly, ale postupem času se toho nakupilo až příliš:

  • Spoluzaci.cz → nefunguje wysiwyg editor
  • Gmail → blbne gtalk, občas se to hryzne i jinak
  • Google calendar → celá aplikace je pomalá, pohyby jsou trhané
  • Blog.cz → v administraci nelze psát nové články, opět nefunguje wysiwyg editor
  • Linkuj.cz → po hlasování se nikovská šipka pohybuje sakra trhaným pohybem
  • Google AdSense → občas se po rozkliknutí nějaké skryté položky načte celá stránka znova
  • Travian.cz → i zde se občas vyskytne problém, že Opera místo toho, aby upravila hodnotu inputu, refreshne celou stránku
  • Některé videa na stránkách vložená z youtube.com nejdou přehrát, musím se na něj podívat až přímo na youtube.com.

Zkrátka obecně u jakéhokoliv webu, kde lze očekávat nějaký zvýšený výskyt javascriptu/ajaxu se Operu bojím používat a už ani neočekávám, že by Opera podporovala všechny funkce. Aby toho nebylo málo, stává se mi, že Opera několikrát za den na pár vteřin zamrzne a nejde s ní hnout. Sice to trvá chvilku, ale otravuje to.

Zkrátka k čemu je mi dobré, že Opera načte stránku rychleji než všechny ostatní prohlížeče, když je pak ta stránka nepoužitelná? Opera zaspala dobu, vypadá to, jako by bylo jen pro web 1.0 :-).

Pokud ale někdo víte, jak odstranit kterýkoliv z výše jmenovaných nedostatků, napište, prosím. Nerad bych se přesouval zpět k Firefoxu – ten je zase takový neohrabaný (opak k elegantní).

Komentáře [53]

Rozšiřujeme XHTML o MathML

2007-03-06 15:35 napsal Lukáš Havrlant

Protože XHTML je aplikací XML, můžeme díky jmenným prostorům připojit do našeho XHTML dokumentu další jazyky založené na XML. Ovšem není to tak jednoduché, jak by se mohlo zdát.

Takže problém první: abyste mohli XHTML rozšířit o nějaký ten jazyk, bude nutné stránku poslat jako skutečné XHTML, tedy nejlépe jako application/xhtml+xml, ale jsou pochopitelně možné i další varianty. Pokud pošlete stránku jako obyčejné HTML, tedy text/html, parser to nezpracuje jako X(HT)ML, ale prostě jako HTML a tam pochopitelně jmenné prostory nepozná a bude je ignorovat, respektive vykreslí obsah jednotlivých elementů nezávisle na tom, co v tom jmenném prostoru znamenají.

Ok, pojďme si tedy ukázat nějaký příklad. Vzhledem k tomu, že vedu web o matice, uvažoval jsem dlouho o nasazení MathML. Web v XHTML mám, takže teoreticky žádný problém. MathML do kódu zapojíme jednoduše tak, že na požadované místo vložíme element <math> se jmenným prostorem http://www.w3.org/1998/Math/MathML. Do obsahu tohoto elementu pak už jen prostě vložíte požadovaný MathML kód a prohlížeč ho interpretuje jako matematický zápis. Celý zápis může vypadat takto:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Pracujeme s MathML</title>
  </head>
  <body>
    <h1>Jak to MathML krásně funguje!</h1>

    <math xmlns="http://www.w3.org/1998/Math/MathML">
      <mfrac>
        <mn>2<mo>-</mo><mi>x</mi></mn> <mn>3</mn>
      </mfrac>
      <mo>+</mo>
      <msubsup>
        <mn>X</mn>
        <mrow>
          <mn>i</mn>
        </mrow>
        <mrow>
           <mn>2</mn>
        </mrow>
      </msubsup>
    </math>

    <p>Dobrý, ne?</p>
  </body>
</html>

(živá ukázka, prohlížejte nejlépe ve Firefoxu, Opera MathML nezná)

Funguje to sice hezky, ale má to drobný háček, která nám už předvedla Opera. Pokud totiž prohlížeč zná XHTML, ale nezná MathML, vykreslí prostě obsah elementů za sebou, bez dalšího fyzického formátování (jako by byly například ve spanu). Což – přiznejme si – není to, co bychom od toho zrovna očekávali, do přístupného webu to má daleko. Pokud prohlížeč nezná požadovaný jazyk, neexistuje spolehlivá možnost, jak mu říct, aby nic nevykreslil, případně aby vykreslil alternativní obsah jako v případě obrázku. Takže jak z toho ven?

Můžeme docela snadno využít klasický element <object>, matematický vzorec uložit do externího XML souboru a ten potom skrze tento element nalinkovat. Tedy kód by mohl vypadat nějak takto:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Pracujeme s MathML</title>
  </head>
  <body>
    <h1>Jak to MathML krásně funguje!</h1>

<object data="mathml1.xml" type="application/xml" style="height:2em;">
Váš prohlížeč nepodporuje MathML.
</object>

    <p>Dobrý, ne?</p>
  </body>
</html>

Výsledek bude prakticky identický. Bohužel až příliš identický. MathML totiž nemá přiřazený konkrétní MIME typ a vkládání přes object není tedy moc dobře podporované. Opera zkrátka nepozná, že se pokoušíte vložit něco, co nedokáže vykreslit a namísto zobrazení alternativy, opět zobrazí původní MathML.

Ideální by bylo, kdyby existoval přímo v XML nějaký mechanismus, nejlépe asi nějaký element, jehož obsah by se prostě interpretoval v případě, že by prohlížeč neznal požadovaný jmenný prostor. Vzhledem k tomu, že nic takového neexistuje a řešení přes <object> je nefunkční (jestli jsem něco přehlédl, napište prosím), o nějakém MathML si můžete nechat jen zdát a všechny zlomky se zase budou psát přes tabulky.

A ještě bych se zmínil o výhodách a nevýhodách řešení přes jmenné prostory a přes <object>. Nevýhody už ale sepsal Chamurappi, tak já se pokusím sepsat výhody (Chamurappi si vybral SVG, já si vyberu mé oblíbené MathML):

  • Když jsem psal matematiku, potřeboval jsem občas vložit do stránky nějaký speciální matematický znak, který ale ve jmenném prostoru XHTML není. Zde se vyplatí vložit tento znak pomocí jmenných prostorů, vkládat <object> doprostřed odstavce není zrovna ideální.
  • Pokud už jednou MathML používám, patrně to nebude jednou na stránce a kdybych měl mít na stránce dvacet objectů, nebylo by to příliš efektivní z hlediska http požadavků.
  • Když mám na stránce dvacet matematických zápisů aplikovaných pomocí <object>, bude správa takového webu docela šílená, kdo má ty externí XML soubory pořád hledat. Když to mám přímo v kódu, vidím to hned a případně mohu kód i upravit.

To jsou výhody, na které jsem natrefil, když jsem se MathML pokoušel zavést. Bohužel, díky okolnostem je to prakticky nemožné. Takže bych si přál, aby mi Ježíšek tenhle rok přinesl nějakou lepší podporu zjišťování, zda ten a ten prohlížeč zvládá MathML či nezvládá (respektive obecně zda ten a ten prohlížeč zvládá tu a tu technologii). Možná pak to snažení W3C vážně k něčemu bude.

Komentáře [24]

Linkujte se a množte se

2007-01-01 17:47 napsal Lukáš Havrlant

Pryč jsou ty doby, kdy jsme psali majitelům tématických webů, zda bychom třeba nevyměnili vzájemně odkazy, že by to jako bylo dobré pro uživatele a taky trochu pro to SEO. Dnes již nefrčí výměna odkazů, ale linkování. A to doslova.

Pokud totiž chcete dát o svém webu vědět, není nic jednoduššího, než se dvakrát zaregistrovat na linkuj.cz a zalinkovat si své články. Stačí dva účty, pokud máte totiž pouze jeden hlas, nenacházíte se ještě v žebříčku a jste dohledatelní jen pod „novými“ odkazy. Samozřejmě pokud chcete být více hard-core, můžete si zaregistrovat více účtů a dostat se klidně někde na první příčky. Pokud naopak chcete být konzervativní a takříkajíc „na hraně zákona“, ukecejte nějakého kámoše a navzájem si linkujte články. Není nic snažšího a jakýs takýs efekt to mít bude, nebojte.

V praxi si to samozřejmě můžete prohlédnout přímo online. Tyto tři články (Myanmar (2000), Nový Zéland (1998), Usměvavé Thajsko, aneb krátké představení země) linknuté uživatelem Asmat doprovodil svým klikem také uživatel TZ71 (v tuto chvíli pouze tento uživatel). O kus dále se poflakují dva odkazy (Mých 10 webů roku 2006, Mých 10 aplikací roku 2006) od TZ71, které jsou pro změnu doprovázeny (v tuto chvíli) pouze klikem od Asmata. Náhoda? Úmysl? Promyšlený tah? Kdo ví.

Sice takovéto linkování nepřinese nijak extra velký užitek, i když několik uživatelů asi ano, ale z dlouhodobého hlediska to nemá prakticky význam. Tedy pokud tuto praktiku nehodlají provozovat nějak extra dlouhodobě :-). Hlavně to ale otravuje uživatele, protože pokud to čtenáři nelinkují sami od sebe, asi na těch odkazech není nic extra zajímavého.

Komentáře [23]

Vánoční dárek webzdarma

2006-12-24 15:11 napsal Lukáš Havrlant

Jeden z nejlepších českých freehostingům připravil svým uživatelům velice hezké překvapení. Pokud si totiž necháte v googlu vyhledat nějakou stránka sídlící na webzdarma, po kliknutí na odkaz se dočkáte milého přesměrování na nějaké to porno. Evidentně to funguje jenom pokud kliknete na odkaz na googlu, ostatní mnou zkoušené odkazy fungují bez problému, takže asi pánové sledují referery. Nuže, vyzkoušejte si to. (anebo to radši nezkoušejte, jsou tam jakési svinstva, takže vám to možná trošku rozháže počítač…)

akturalizace 17:05 už to nejspíš opravili, takže máte po srandě, kdo jste to nestihli.

Šťastné a veselé :-)

(a ještě péefko, jedno už jsem kreslil, takže ho jen hodím i sem ;-)).

pf2007

Komentáře [21]

Hrátky s vykreslovacími režimy v MSIE

2006-12-19 20:51 napsal Lukáš Havrlant

Microsoftí prohlížeč zná v zásadě dva vykreslovací módy, konkrétně zpětně kompatibilní quirk a dále standardní mód, který se více snaží dodržovat standardy. K přepínání těchto módů se běžně používá <!doctype>, což je sice krutě nestandardní (například nepočítáme-li mailing listy, na w3c se ani slovo quirk či quirks téměř nevyskytuje), ale za to je to velice funkční. Velice přehlednou tabulku můžeme nalézt u Pixyho.

Ovšem MSIE se přeci jen chová ještě trošičku specifičtěji. Takže hezky popořadě. Pokud zvolíme HTML doctype bez adresy, jsme v quirku (pro testování jsem použil mírně upravenou javascriptovou metodu document.compatMode, nic lepšího jsem nevygooglil):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

Chceme-li zůstat u přechodné verze a přitom se dostat do standardního módu, přidáme adresu:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

A nyní už začínají lehká kouzla. Explorer totiž nereaguje jen na tuto konkrétní adresu, anóbrž na jakoukoliv adresu. Tedy pokud tam napíši svůj web, budu taky ve standardu:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://havrlant.net">

Z předchozího bodu lze usoudit, že pokud místo adresy do doctypu zadám normální text, budu v quirku. A taky že jo:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "nějaká ta beďovina">

Ovšem zajímavé je, jak MSIE určuje, zda se jedná o adresu. Žádné složitosti, prostě hledá, zda se tam vyskytuje řetězec „http://“. Tedy i s tímto doctypem dosáhnete standardního módu:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "nějaká ta beďovina, ale s http://">

Takže teď už jen zbývá doufat, že w3c nezačne používat namísto http protokolu protokol ftp:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "ftp://www.w3.org/TR/html4/loose.dtd">

To by byl docela průšvih.

Zdroj: Having fun with IE – part 3: doctype switching

Reagujte! [7]