2008-07-01 13: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]
2008-06-15 22: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:
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_keyboard.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]
2008-04-20 20: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]
2008-01-15 23: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:
lang. Často se
stává, že tam lidi píší cz namísto cs.target, který
určitě nesmí začínat číslem a nemá obsahovat diakritiku.name, tak i
id, musí být stejné.color používáte barvu nebo nějakou blbost.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 ;-).
2007-11-28 17: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é!
:-)
2007-06-04 16: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š:
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]
2007-03-06 14: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):
<object> doprostřed odstavce není zrovna ideální.<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]
2007-01-01 16: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]
2006-12-24 14: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 ;-)).

Komentáře [21]
2006-12-19 19: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]