<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>szafranek.net &#187; Site</title>
	<atom:link href="http://www.szafranek.net/blog/category/site/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.szafranek.net</link>
	<description>The homepage of Krzysztof Szafranek, a guy who makes websites</description>
	<lastBuildDate>Sun, 22 Jan 2012 14:28:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>O całowaniu pani Krysi</title>
		<link>http://www.szafranek.net/blog/2005/01/22/o_calowaniu_pani_krysi/</link>
		<comments>http://www.szafranek.net/blog/2005/01/22/o_calowaniu_pani_krysi/#comments</comments>
		<pubDate>Fri, 21 Jan 2005 23:06:12 +0000</pubDate>
		<dc:creator>Szafranek</dc:creator>
				<category><![CDATA[Site]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://szafranek/blog/2005/01/22/o-calowaniu-pani-krysi/</guid>
		<description><![CDATA[Niedawno do mnie dotarło, że chociaż poza pracą i uczelnią cały czas przy czymś dłubię, to link do ostatniej produkcji na stronie głównej ma już blisko dwa lata i prowadzi do poprzedniej wersji szafranek.net i najwyższy czas dodać coś nowego. Wczoraj przyszło mi oddać i obronić projekt z przedmiotu programowanie WWW. Nie ukrywam, że podchodziłem [...]]]></description>
			<content:encoded><![CDATA[<p>Niedawno do mnie dotarło, że chociaż poza pracą i uczelnią cały czas <a href="/works/websites/flexcms/">przy czymś dłubię</a>, to link do ostatniej produkcji na stronie głównej ma już blisko dwa lata i prowadzi do poprzedniej wersji <a href="/works/websites/szafranek/">szafranek.net</a> i najwyższy czas dodać coś nowego.</p>
<p>Wczoraj przyszło mi oddać i obronić <a href="/works/websites/dyplomy/">projekt</a> z przedmiotu <em>programowanie WWW</em>.
Nie ukrywam, że podchodziłem do niego z pewną taką nieśmiałością &#8212; na
szczęście <a href="http://www.prz.rzeszow.pl/we/katedry/zeue/jp/">prowadzący</a> okazał się człowiekiem wyrozumiałym i moja
kompletna ignorancja w tej dziedzinie nie przeszkodziła mi w uzyskaniu
zaliczenia :).</p>
<p>Już po fakcie dowiedziałem się, że mój projekt i tak nie zostanie wdrożony, a zamiast niego będzie funkcjonować <a href="http://www.prz.rzeszow.pl/we/katedry/zeue/dyplomy/">obecna wersja</a>. Jedna z przyczyn: interfejs panelu administracyjnego.</p>
<p>Aplikacja bazuje na Fleksie, a panel administracyjny jest jego
lekko przerobioną wariacją (jest po polsku, a jego wygląd bardziej
komponuje się z, że tak to nazwę, <a href="http://www.prz.rzeszow.pl/we/katedry/zeue/">brandingiem katedry</a>).
Najbardziej przykre w tym wszystkim było to, że faktycznie interfejs Fleksa nie
był testowany na żadnej &#8220;pani Krysi z sekretariatu&#8221;. Mój wykładowca
wytknął mu parę błędów, które można sprowadzić do jednego:
przekombinowanie.</p>
<p>Obecny panel administracyjny tej strony nie wykorzystuje techniki <span lang="en">inner
browsing</span> czy paneli, ale za to ma ikonki i znacznie lepiej niż Flex spełnia
założenia reguły KISS:</p>
<blockquote><p>
<strong>Reguła KISS</strong> (ang. <span lang="en">Keep It Simple, Stupid</span>, czyli <em>to ma być proste,
głupcze</em>)
jest wspominana przy dyskusji architektury lub szczegółów budowy
projektów. Jej istotą jest dążenie do utrzymania eleganckiej i
przejrzystej struktury, bez dodawania nadmiarowych udogodnień.</p>
<cite><a href="http://pl.wikipedia.org/wiki/KISS_%28regu%C5%82a%29">Wikipedia</a></cite>
</blockquote>
<p>Jednym z głównych założeń, z myślą o których projektowałem Fleksa,
była prostota. W praktyce okazuje się, że stworzenie aplikacji, która
jest prosta w obsłudze (bo tego <strong>naprawdę</strong> oczekuje pani Krysia), a z drugiej strony pozwala na przyspieszenie i usprawnienie pracy (bo pani Krysia <strong>mówi</strong>, że tego oczekuje), jest trudne. Ale <a href="http://mozilla.org/products/firefox/">możliwe</a>.</p>
<p>Z ciekawości przejrzałem wczoraj parę innych <a href="http://www.opensourcecms.com/">aplikacji bazujących na WWW</a>. Mam wrażenie, że nie tylko ja mam ten problem &#8212; już widzę, jak nasza bohaterka walczy np. ze (skądinąd zacnym) CMS-em <a href="http://www.opensourcecms.com/index.php?option=content&amp;task=view&amp;id=182">ezPublish</a>.</p>
<p>Jaki więc powinien być interfejs CMS-a? Pewnie wrócę do tematu.
</p>]]></content:encoded>
			<wfw:commentRss>http://www.szafranek.net/blog/2005/01/22/o_calowaniu_pani_krysi/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Opera 8 beta</title>
		<link>http://www.szafranek.net/blog/2005/01/19/opera_8_beta/</link>
		<comments>http://www.szafranek.net/blog/2005/01/19/opera_8_beta/#comments</comments>
		<pubDate>Wed, 19 Jan 2005 03:35:40 +0000</pubDate>
		<dc:creator>Szafranek</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Site]]></category>

		<guid isPermaLink="false">http://szafranek/blog/2005/01/19/opera-8-beta/</guid>
		<description><![CDATA[Programiści Opery sprytnie przeskoczyli numerek i szybko przechrzcili nieoficjalną wersję 7.60 na 8.0. W tej chwili jest ona jeszcze w fazie beta, ale ostatnio się jej przyjrzałem i jestem przyjemnie zaskoczony. Nieprzyjemnych zaskoczeń również nie zabrakło, ale o tym później. Przede wszystkim rzuca się w oczy &#8220;firefoksyzacja&#8221; norweskiej przeglądarki. Asa Dotzler narzekał nie tak dawno, [...]]]></description>
			<content:encoded><![CDATA[<p>Programiści Opery sprytnie przeskoczyli numerek i szybko <a href="http://www.opera.com/windows/changelogs/operabeta/">przechrzcili
nieoficjalną wersję 7.60 na 8.0</a>. W tej chwili jest ona jeszcze w fazie
<a href="http://snapshot.opera.com/">beta</a>, ale ostatnio się jej przyjrzałem i jestem przyjemnie zaskoczony.
Nieprzyjemnych zaskoczeń również nie zabrakło, ale o tym później.</p>
<p>Przede wszystkim rzuca się w oczy &#8220;firefoksyzacja&#8221; norweskiej
przeglądarki. <a href="http://weblogs.mozillazine.org/asa/archives/005479.html">Asa Dotzler narzekał</a> nie tak dawno, że jej interfejs jest
przeładowany i wymaga sporo roboty, aby mógł go bezstresowo używać Joe
Average (w Polsce znany lepiej jako Jan Kowalski). <a href="http://weblogs.mozillazine.org/asa/archives/006909.html">Zmiany pojawiły się
już w wersji 7.60</a>, a obecnie główne menu przypomina to, co znamy z
Firefoksa, tzn. jest proste, przejrzyste i nie przeraża.
</p>
<div class="figure"><a href="/files/news/20050119/opera8b.gif" title="powiększ"><img src="/files/news/20050119/tn-opera8b.gif" alt="Opera 8 beta" class="image" width="200" height="67"/></a><div class="legend">Opera 8 beta</div></div>

<p>Trudno nie oprzeć się wrażeniu, że historia zrobiła małe koło: najpierw
Mozilla “ukradła” Operze panele, a teraz interfejs tej ostatniej
wyraźnie ewoluuje w kierunku Firefoksa. Cóż, moim zdaniem nie ma w tym
nic złego, a nowe oblicze Opery podoba mi się znacznie bardziej niż
kiedyś.</p>
<p>Wypada jeszcze wspomnieć, że Norwegowie lubią Polskę i <a href="http://www.opera.com/buy/poland/">wyrozumiale</a> traktują nasz rynek.</p>
<p>Niestety, jak z kobietami, atrakcyjny interfejs potrafi ukrywać nieciekawe wnętrze. Proba zalogowania się do <a href="/works/websites/flexcms/">Fleksa</a>
zakończyła się uprzejmym komunikatem: &#8220;Wystąpił problem z aplikacją
Opera Internet Browser i zostanie ona zamknięta&#8221;. Trudno dociec co i
jak, ale mam przynajmniej powód do dumy, bo mój kod wysypuje
przeglądarkę ze 100-procentową skutecznością. Żeby było ciekawiej,
wersja 7.54 nie reaguje równie dramatycznie (Flex również w niej nie
działa, ale z zupełnie <a href="/log/archive/2004/10/09/dlaczego_nie_lubie_opery/">innych przyczyn</a>).</p>
<p><del>Ale do napisania tego tekstu skłoniło mnie co innego, tzn. brak obsługi znacznika <a href="http://www.w3.org/TR/html4/interact/forms.html#edef-OPTGROUP">&lt;optgroup&gt;</a>.
Formularz, który zawiera ten znacznik, NIE BĘDZIE działać, o czym
przekonałem się przed chwilką, sprawdzając w nowej Operze swoją ostatnią produkcję. Z Googli można się
dowiedzieć, że <a href="http://www.geek.com/news/geeknews/2001nov/gee20011114008860.htm">przeszkadzało to ludziom już ładnych parę lat temu</a>, więc zastanawia mnie, jak długo jeszcze przyjdzie poczekać na dogonienie przez Norwegów standardu HTML 4.01.</del></p>
<p><ins cite="http://szafranek.net/log/archive/2005/01/19/opera_8_beta/#comment2"><strong>
Aktualizacja</strong>: <a href="http://szafranek.net/log/archive/2005/01/19/opera_8_beta/#comment1">quiris</a>
pomógł ustalić, że jednak nie miałem racji – Opera obsługuje znacznik
&lt;optgroup&gt;, a błąd wynikał z mojej pomyłki w kodzie. Zwracam honor
Norwegom.</ins></p>
<p><del>(Krewkim
fanom wyjaśniam od razu, że nie jestem wrogiem Opery. Zresztą pewnie i
tak przerobię stronę, nad którą teraz siedzę. Po prostu trochę śmieszy
i denerwuje taka rzecz w 2005 roku&#8230;)</del></p>
<p><ins cite="http://szafranek.net/log/archive/2005/01/19/opera_8_beta/#comment2">
<strong>Aktualizacja</strong>: no, to teraz operowcy mnie rozszarpią za tamten tekst :).</ins></p>]]></content:encoded>
			<wfw:commentRss>http://www.szafranek.net/blog/2005/01/19/opera_8_beta/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Nowy artykuł: licencje open source</title>
		<link>http://www.szafranek.net/blog/2005/01/14/nowy_artyku_licencje_open_source/</link>
		<comments>http://www.szafranek.net/blog/2005/01/14/nowy_artyku_licencje_open_source/#comments</comments>
		<pubDate>Fri, 14 Jan 2005 21:56:01 +0000</pubDate>
		<dc:creator>Szafranek</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Site]]></category>
		<category><![CDATA[opensource]]></category>

		<guid isPermaLink="false">http://szafranek/blog/2005/01/14/nowy-artykul-licencje-open-source/</guid>
		<description><![CDATA[W zakończeniu mojej pracy licencjackiej znalazł się taki akapit: Sukces PHP jest także dowodem na skuteczność rozwiązań open source. Upublicznienie kodu źródłowego może okazać się doskonałym sposobem na przyspieszenie rozwoju aplikacji i wzrost jej funkcjonalności. Nie wyklucza to jednak działalności biznesowej i czerpania zysków ze wspierania otwartego oprogramowania, czego dowodem jest firma Zend. Systemy zarządzania [...]]]></description>
			<content:encoded><![CDATA[<p>W zakończeniu mojej pracy licencjackiej znalazł się taki akapit:</p>
<blockquote><p>Sukces PHP jest także dowodem na skuteczność
rozwiązań open source. Upublicznienie kodu źródłowego może okazać się
doskonałym sposobem na przyspieszenie rozwoju aplikacji i wzrost jej
funkcjonalności. Nie wyklucza to jednak działalności biznesowej i czerpania
zysków ze wspierania otwartego oprogramowania, czego dowodem jest firma Zend.
<cite>Systemy zarządzania treścią w języku PHP</cite>
</p></blockquote>
<p>Sformułowanie jest na na tyle ostrożnie, że mogę się pod nim podpisać
nawet dziś. Pamiętam jednak, że wtedy byłem święcie przekonany, że na
wolnym i otwartym oprogramowaniu można JAKOŚ zarobić. Nie bardzo
wiedziałem JAK, ale przecież to niemożliwe, by setki tysięcy
programistów rzucało się za darmo do pracy nad aplikacjami, o których
być może nikt nie usłyszy&#8230;
</p><p>Nieco wcześniej obejrzałem <a href="http://www.revolution-os.com/">Revolution OS</a>, film dokumentalny o
fenomenie Linuksa i open source. Kilkadziesiat osób przez cały film
przekonuje, że można na tym zarobić. Cóż, choć film obejrzałem
dwukrotnie, jakoś nie bardzo te tłumaczenia zrozumiałem. Ale to pewnie
wina mojej słabej znajomości angielskiego.</p>
<p>Ostatnio miałem okazję, by w końcu znaleźć odpowiedź &#8212; na
zaliczenie miałem przygotować krótki referat na wybrany przez siebie
temat z pogranicza prawa (dwuznaczność niezamierzona) i informatyki.
Postanowiłem bliżej przyjrzeć się filozofii GNU i <a href="/works/articles/opensourcelicenses/">licencjonowaniu wolnego i otwartego oprogramowania</a>. W pracy ograniczyłem się do suchego zestawienia głównych licencji Open Source, dywagacje zostawiłem sobie na deser.</p>
<p>Czytając prawie przez cały dzień zasady leżące u podstaw filozofii
Stallmana, nie mogłem oprzeć się wrażeniu, że żyje on w innym świecie.
Lepszym i piękniejszym. Takim, w którym ludzie nie chcą być bogaci,
wystarcza im możliwość rozwoju własnych osobowości i wspaniałego
software&#8217;u.</p>
<p>Czy jednak ktoś, kto chce pracować jako programista i utrzymywać się
z tego, może pisać wyłącznie wolne programy? Oczywiście, są przykłady
firm, które wspierają open source, a przy tym z powodzeniem prowadzą
działalność biznesową, np. wspomniany Zend czy IBM. Jednak otwarte
programy NIE są źródłem ich zysków. Zenda założyli dwaj główni
programiści PHP, ale dziś firma zarabia na sprzedaży jak najbardziej
komercyjnego i zamkniętego oprogramowania. PHP wygląda więc na metodę
stworzenia nowego rynku, na którym można zarabiać w sposób tradycyjny,
odległy od zasad GNU. Zresztą Stallman krytykuje model Zenda i podobne,
gdyż uważa, że WSZYSTKIE programy powinny być wolne.</p>
<p>Ktoś powie, że można zarabiać na wsparciu technicznym do tworzonych
przez siebie wolnych programów. Nie oszukujmy się, naprawdę trudno mi
wyobrazić sobie praktyczne funkcjonowanie takiej firmy. Zresztą
przypuszczam, że ilość zarabianych przez nią pieniędzy byłaby odwrotnie
proporcjonalna do jakości dokumentacji, a ta ostatnia jest przecież
jedną z podstaw powodzenia programu. Poza tym całą brudną robotę
wykonywaliby programiści, ale to nie oni generowaliby przychody, tylko
konsultanci przy telefonach.</p>
<p>Jestem fanem open source. Uważam, że to najskuteczniejsza metoda
tworzenia dobrych programów. Trudno mi się tylko pogodzić z tym, że
programista, inaczej niż administrator, konsultant czy sprzątaczka, nie
ma prawa do utrzymywania się dzięki swojej pracy.</p>
<p>Szukając odpowiedzi na swoje wątpliwości, zadałem nawet <a href="http://www.google.com/search?q=gpl+%22where+is+the+money%22">fundamentalne pytanie</a> Wyroczni. Podsunęła mi <a href="http://news.zdnet.com/2100-9595_22-5137217.html">ciekawy artykuł</a>. Myślę, że jest to najlepsze podsumowanie tego tematu.
</p>]]></content:encoded>
			<wfw:commentRss>http://www.szafranek.net/blog/2005/01/14/nowy_artyku_licencje_open_source/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kanałem do perfekcji: od RSS do XHTML</title>
		<link>http://www.szafranek.net/blog/2004/09/15/kanalem_do_perfekcji_od_rss_do_xhtml/</link>
		<comments>http://www.szafranek.net/blog/2004/09/15/kanalem_do_perfekcji_od_rss_do_xhtml/#comments</comments>
		<pubDate>Wed, 15 Sep 2004 06:42:25 +0000</pubDate>
		<dc:creator>Szafranek</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Site]]></category>
		<category><![CDATA[Webstandards]]></category>

		<guid isPermaLink="false">http://szafranek/blog/2004/09/15/kanalem-do-perfekcji-od-rss-do-xhtml/</guid>
		<description><![CDATA[Ostatnim razem obiecałem, że na stronie wkrótce pojawi się kanał RSS, a dziś dotrzymałem słowa. Posiadacze najnowszych wersji Firefoksa mogą zrobić użytek z Livemarks :). Plik RSS jest generowany dynamicznie przy pomocy PHP i Smarty. Coraz bardziej podoba mi się ten wynalazek &#8211; stworzenie odpowiedniego szablonu, który wyświetli dane otrzymane ze skryptów PHP, jest łatwe [...]]]></description>
			<content:encoded><![CDATA[<p>Ostatnim razem obiecałem, że na stronie wkrótce pojawi się kanał <acronym title="RDF Site Summary">RSS</acronym>, a dziś <a href="/feeds/rss10/">dotrzymałem słowa</a>. Posiadacze najnowszych wersji Firefoksa mogą zrobić użytek z Livemarks :).</p>
<p>Plik RSS jest generowany dynamicznie przy pomocy PHP i <a href="http://smarty.php.net">Smarty</a>.
Coraz bardziej podoba mi się ten wynalazek &#8211; stworzenie odpowiedniego
szablonu, który wyświetli dane otrzymane ze skryptów PHP, jest łatwe i
szybkie. A przede wszystkim: eleganckie. Skrypty zajmują się tylko
odczytaniem danych z bazy i nie są &#8220;zaśmiecane&#8221; kodem XHTML.</p>
<p>Skoro jestem przy elegancji, to jeszcze wspomnę o przyczynie, dla
której stworzenie kanału RSS zajęło mi ponad godzinę, a nie 15 minut.
RSS jest odmianą XML i <a href="http://purl.org/rss/1.0/spec">savoir-vivre wymaga</a>, aby był wysyłany z <a href="http://www.iana.org/assignments/media-types/">typem mime</a> <code>application/xml</code>.
W przeglądarkach, które reagują na typy mime (a więc nie dotyczy to
IE), dokument taki zostanie wyświetlony w postaci drzewa XML, a nie
zwykłego tekstu. Można się o tym przekonać, klikając na <a href="/feeds/rss10/">link do kanału</a> np. w Firefoksie czy Mozilli. Przy pierwszym podejściu przeglądarka wyświetliła mi błąd parsowania:
</p>
<div class="figure"><a href="/files/news/20040915/parseerror.png"><img title="powiększ" alt="Błąd parsowania XML w Firefoksie" src="/files/news/20040915/tn-parseerror.png" class="image" width="200" height="42"/></a>
<div class="legend">Błąd parsowania XML w Firefoksie</div>
</div>

<p>Okazało się, że jeden z moich skryptów PHP drukuje na ekranie spację,
która pojawia się przed prologiem XML. Dobrze uformowany dokument XML
nie ma prawa zawierać w tym miejscu niczego, więc trzeba było namierzyć
błąd w skrypcie. Najpierw podjąłem się przeglądania źródeł wszystkich
skryptów, które są używane na stronie &#8211; ponieważ korzystam ze Smarty i
paru pomocniczych klas, wysiłek byłby naprawdę heroiczny. Tudzież bez
sensu: wystarczy wyłączyć buforowanie wyjścia w <code>php.ini</code>, wywołać w którymś miejscu funkcję <code>header()</code>
i PHP samo pokaże, gdzie jest błąd polegający na przedwczesnym
wysyłaniu tekstu do przeglądarki. I tak właśnie zrobiłem i szybko znalazłem usterkę, ale cała sytuacja daje trochę do myślenia.</p>
<p>Przecież do przeglądarki można wysyłać jako XML nie tylko RSS, ale
także XHTML. Jeśli ktoś korzysta z wersji 1.1 XHTML, jest to nawet <a href="http://www.w3.org/TR/xhtml-media-types/xhtml-media-types.html#application-xhtml-xml">konieczne</a>.
Zalety: satysfakcja z czystego kodu (niewątpliwie jest to
zboczenie, na które jednak cierpi wielu programistów, i którego
pierwsze symptomy zauważam u siebie) oraz szybkie wykrywanie błędów w
kodzie. Jeśli takowy się pojawi, użytkownik zobaczy na ekranie, o ile
oczywiście używa porządnej przeglądarki, komunikat o błędzie
parsowania, zamiast strony. Webmaster dość szybko dowie się więc od
swoich gości, że popełnił błąd, może go zatem poprawić i dalej
napawać się własnym perfekcjonizmem. Takie rozwiązanie stosuje np. <a href="http://simon.incutio.com">Simon Willson</a>
na swoim blogu (swoją drogą, polecam). Nie ma chyba potrzeby tłumaczyć,
że jeśli strona ma charakter komercyjny, lepiej nie eksperymentować w
ten sposób, bo mogłoby się to pewnie okazać szybką i skuteczną drogą do
bankructwa.</p>
<p>Inne wady (hmm&#8230; czyżby zalety gdzieś umknęły?): IE i tak nie
przełknie takiego dania, należy więc dla niego zrobić wyjątek i wysłać
stronę z typem <code>text/html</code>, zamiast <code>application/xhtml+xml</code>.
</p>
<p>Już wspomniałem, że każde odstępstwo od specyfikacji XML zostanie
niemiłosiernie wytknięte przez parsery wbudowane w nowoczesne
przeglądarki. Takim odstępstwem jest spacja na początku strony (patrz
wyżej) czy używanie w kodzie znaku <code>&amp;</code> zamiast odpowiedniej encji. Dochodzą do tego kolejne, bardziej subtelne detale. Np. <a href="http://www.w3.org/TR/xhtml-media-types/xhtml-media-types.html#application-xml">nie wolno</a> wówczas stosować znacznika <code>&lt;meta&gt;</code> z atrybutem <code>http-equiv</code>. Można więc zapomnieć o prostym, powszechnie akceptowanym sposobie deklaracji kodowania:</p>
<pre class="code"><code>&lt;meta http-equiv="content-type
  content="text/html; charset=iso-8859-2" /&gt;
</code></pre>
<p>Zamiast tego, należy zadeklarować kodowanie w prologu XML:</p>
<pre class="code"><code>&lt;?xml version="1.0" encoding="iso-8859-2"?&gt;</code></pre><p>Tak
na marginesie, po napotkaniu go na początku strony IE zaczyna się
zachowywać mało przewidywalnie, więc należy mu zapewnić alternatywę w
postaci <code>&lt;meta /&gt;</code>.</p>
<p>Sporo tych niuansów. Ale to jeszcze nie koniec. Kiedy już wyślemy do
odpowiedniej przeglądarki dokument XHTML z odpowiednim typem mime, może
ona wyświetlić coś takiego:</p>

<div class="figure close-figure"><a href="/files/news/20040915/xmltree.png"><img title="powiększ" alt="Drzewo XML dokumentu XHTML" src="/files/news/20040915/tn-xmltree.png" class="image" width="200" height="75"/></a>
<div class="legend">
Drzewo XML dokumentu XHTML
</div>
</div>

<p>Nie jest to do końca to, czego chciałem.</p>
<blockquote><p>The XML stylesheet <acronym title="Processing Instruction">PI</acronym> SHOULD be used to associate style sheets.
<cite><a href="http://www.w3.org/TR/xhtml-media-types/xhtml-media-types.html#application-xml">XHTML Media Types</a></cite>
</p></blockquote>
<p>Innymi słowy, należy zaimportować pliki CSS zaraz po prologu XML, w sposób zrozumiały dla parserów XML:</p>
<pre class="code"><code>&lt;?xml-stylesheet href="style.css" type="text/css"?&gt;</code></pre>
<p>Podsumujmy. Żeby strona była naprawdę koszerna i zgodna z XHTML 1.1, a
przy tym nie rozlatywała się na ekranach 95% użytkowników należy:
</p>
<ul>
<li>wysłać plik z typem mime <code>application/xhtml+xml</code>, pamiętając by IE serwować <code>text/html</code></li>
<li>umieścić na początku prolog XML i zadeklarować w nim kodowanie; użytkownikom IE (i tylko im) zapewnić alternatywę w postaci <code>&lt;meta /&gt;</code></li>
<li>arkusze stylów zaimportować za pomocą instrukcji przetwarzania XML;
nie wspomniałem o tym, że IE jej nie zrozumie, ale chyba każdy zdążył
się już tego domyśleć?</li>
<li>unikać jak ognia wszelkich błędów i odstępstw od specyfikacji,
ponieważ natychmiast uniemożliwią one wyświetlenie strony w
przeglądarkach poprawnie interpretujących XHTML.</li>
</ul>
<p>I to już wszystko! Wnioski pozostawiam Wam.</p>]]></content:encoded>
			<wfw:commentRss>http://www.szafranek.net/blog/2004/09/15/kanalem_do_perfekcji_od_rss_do_xhtml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nowy artykuł</title>
		<link>http://www.szafranek.net/blog/2004/09/09/nowy_artykul/</link>
		<comments>http://www.szafranek.net/blog/2004/09/09/nowy_artykul/#comments</comments>
		<pubDate>Thu, 09 Sep 2004 19:57:02 +0000</pubDate>
		<dc:creator>Szafranek</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Site]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[Webstandards]]></category>

		<guid isPermaLink="false">http://szafranek/blog/2004/09/09/nowy-artykul/</guid>
		<description><![CDATA[Kilka tygodni temu trafiłem, bodajże na blogu Zeldmana, na link do web standards checklist. To krótkie podsumowanie podstawowych zasad tworzenia DOBRYCH stron WWW, wraz z odnośnikami do zasobów poświęconych każdemu wymienionemu tam zagadnieniu. Jeszcze zanim dostałem zgodę od autora, zabrałem się za przetłumaczenie tekstu i zamieściłem go u siebie. Mi już się przydał &#8211; przy [...]]]></description>
			<content:encoded><![CDATA[<p>Kilka tygodni temu trafiłem, bodajże na blogu <a href="http://zeldman.com">Zeldmana</a>, na link do <a href="http://www.maxdesign.com.au/presentation/checklist.cfm">web standards checklist</a>. To krótkie podsumowanie podstawowych zasad tworzenia DOBRYCH stron WWW, wraz z odnośnikami do zasobów poświęconych każdemu wymienionemu tam zagadnieniu. Jeszcze zanim dostałem zgodę od autora, zabrałem się za przetłumaczenie tekstu i <a href="/works/articles/webstandardschecklist/">zamieściłem go u siebie</a>. Mi już się przydał &#8211; przy okazji tłumaczenia dowiedziałem się paru nowych rzeczy. Mam nadzieję, że przyda się też innym.</p>
<p>Przydałoby się teraz zrobić małe samobiczowanie i wypunktować zasady z tej listy, które są złamane na szafranek.net. Biorąc pod uwagę moje masochistyczne skłonności, taki spis pewnie powstanie.
</p>]]></content:encoded>
			<wfw:commentRss>http://www.szafranek.net/blog/2004/09/09/nowy_artykul/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

