MyEgo.cz - Radek Hulán webzine

MyEgo.cz

home foto blogy mywindows.cz kontakt

Atom a RSS - jak je zobrazit v prohlížeči a ETag

Technologie 09.06.2004

To, že RSS feedy (verze 0.9x, 1.0 a 2.0) a Atom 0.3 umí RSS a Atom čtečky je jasné. Nicméně, není od věci linkovat těmto zdrojům i CSS stylesheet, a umožnit jejich zobrazení v normálním prohlížeči (a v stylesheety podporujících čtečkách).

V případě moderního Atom 0.3 feedu včetně informace pro uživatele, které jej informuje o faktu, že tento zdroj není primárně určen pro prohlížeč, ale pro čtečku.

Jak ale na zobrazení v browseru? Prvním problémem je samozřejmě fakt, že MSIE 6.0 SP1 nezvládá MIME typ application/xhtml+xml. Podporuje jen text/html. Různými pokusy jsem dospěl k tomu, že jediný MIME typ, na kterém se prohlížeče shodnou, a který podporují i čtečky, je pro RSS a Atom: text/xml!

Tento MIME typ posílám jako:

header('Content-Type: text/xml') 

… pro MSIE 6.0, Operu 7.50 i Firefox 0.8, i pro čtečky, a vypadá to, že vše funguje jak má.

Ještě jedna zajímavá věc tu je, pokud pošlu:

 header('Content-Type: text/xml;  charset=iso-8859-2');	

… tak to MSIE 6.0 nezvládne a nedělá nic. Opera a Firefox fungují. Pokud oddělám charset, a dám jej jako první deklaraci v XML, tedy:

<?xml version="1.0" encoding="iso-8859-2" standalone="yes"?>

… tak je vše v pořádku, včetně kódování, ve všech testovaných browserech a RSS / Atom čtečkách.

Šikovný žluťoučký kůň úpěl překrásné ódy

Technologie 08.06.2004

TrackBack je API, které umožňuje propojit jinak nezávislé články na různých webech. Například Arthur Dent napíše článek o pozitivní diskriminaci, já na to napíšu svůj názor, a za pomocí API TrackBacku jej "linkuji" s tím článkem Arthurovým. Vše se děje zcela automaticky, stačí jen zadat URL pro TrackBack, v případě AutoDiscovery dokonce i bez něj.

Nicméně, TrackBack je neuvěřitelně blbě navržené API původem od Movable Type. Ping se posílá jako HTTP POST, s tím, že kompletní data jsou v urlencoded. Šílenost. Navíc tam chybí znaková sada.

S Arthurem jsem si vyměnil pár emailů, a přidal jsem se k dohodě, kdy bloguje.cz, bloguje.sk, pooh.cz, blog.sk a Nucles XE používá pro TrackBack znakovou sadu UTF-8. Taky jsem do TrackBacku udělal pár úprav ohledně NP_Cache, a automatického promazávání cache, v případě přijetí či smazání Trackbacku.

Po otestování tento TrackBack zpřístupním na fóru.

Jak na Atom 0.3 feed - konkrétní návod

Technologie 07.06.2004

Atom 0.3 feed do budoucna zcela jistě nahradí RSS. RSS, které máme dnes ve verzích 0.90, 0.91, 0.92, 0.93, 0.94, 0.95 draft, 1.0 a 2.0, 2.01, a snad i nějakých dalších verzích. RSS 0.9x řeší přidávání nových funkcí desetinkovým verzováním. To je šílenost. RSS 1.0 je vlastně RDF API. RSS 2.0 je pro změnu podobné návrhu RSS 0.93 a vyšší. Prostě zmatek.

Tento zmatek se snaží řešit a zlepšit Atom 0.3 feed. Ten, na rozdíl od RSS, umožňuje definovat vlastní namespaces, a podporuje nejenom API pro čtení, ale i zápis a měl by být skutečně zpětně kompatibilní (novější verze se staršími).

Jak připravit Atom 0.3 feed pro Váš web? Zde je návod.

Hlavička Atom 0.3 feedu:

<?xml version="1.0" encoding="iso-8859-2"?>
<?xml-stylesheet type="text/css" href="atom.css"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#">

Titulek feedu, link na web, a údaje o redakčním systému (je možno vynechat):

<title>název Vašeho webu</title>
<link rel="alternate" 
      type="text/html" 
      href="URL Vašeho webu" />
<generator url="http://hulan.cz/">BLOG:CMS</generator>

SuperStar a pozitivní diskriminace bělochů

gypsy

Arthut Dent píše článek, který má sice v názvu jinak zakázané slovo SuperStar (to je ten výbornej licencovanej business nápad TV Nova, jak z pár jinak bezvýznamých lidiček, zpěváckých „rychlokvašek“, a trošku té omáčky kolem vytřískat pro sebe spoustu peněz, díky dobře řízené davové hysterii pubertálních dívek a hochů), ale jinak je celý o pozitivní diskriminaci.

Poslouchal jsem to včera na jednom anglicky mluvícím českém rádiu. Mluvili tam zcela vážně o tom, že nějaká Martina Balogová vypadla v nějakém kole SuperStar prý proto, že je to romka. Martinu jsem zpívat slyšel a viděl. Bylo to ok, ale srdce mi to nervalo. Že je cikánka nevím, ale vím, že je tlustá, má podivný obličej, a celkově je tak jaksi bez charisma. Prostě, být pubertálním mladíkem, hlas jí rozhodně nepošlu.

Nicméně, podle moderátorů toho (pro mě jinak oblíbeného) rádia, je to, že Martina vypadla těsně před finále jasný znak xenofobie a rasismu Čechů. Ti prý prostě nesnesou, aby špičková cikánka vyhrála!

TrackBack 1.5 a AutoDiscovery pro Nucleus XE

Webdesign, CMS 03.06.2004

TeRaxEX a Admun připravili update pluginu NP_TrackBack, včetně plně automatické AutoTrackBack funkce (vkládá do článků RDF kód, který podporující systémy použijí pro automatické vytvoření TrackBacku; není tedy již nutné ručně "pingat"). Takto automaticky vytvořený TrackBack se samozřejmě nepublikuje ihned, ale až po Vašem schválení. Toto schválení je možné provádět při editaci článku.

Připravil jsem úpravu NP_TrackBack verze 1.5 pro češtinu (zejména automatické rozpoznání kódování pingu), a dodělal taky pár dalších změn.

Použití? V šabloně "hlavička článku" uveďte následující kód pro vložení AutoTrackBack kódu:

<%TrackBack(tbcode)%>

Dále v patičce článku uveďte následující pro výpis aktuálních TrackBacků:

<%TrackBack(list)%>

Používat můžete i následující parametry pro zobrazení formuláře pro manuální ping a pro manuální přidání (třeba omylem smazaného) TrackBacku:

<%TrackBack(pingformlink)%>
a
<%TrackBack(manualpingformlink)%>

Soubor ke stažení: NP_TrackBack.php.

(Mozilla) Firefox je špatně použitelný browser

Technologie 03.06.2004

To nejlepší pro web je jednoznačně Opera 7.51. Ve 3.5MB kódu skvělý browser, RSS čtečka, email klient se SPAM filterem (denně jich u mě filtruje desítky!), IRC chat (nutnost), a rovněž 100% customizace, podpora CSS 2.0 a vyššího a mraky dalších věcí. Stabilní, bezpečný systém. Utratit za tento "operační systém pro internet" $39 je pro profesionála v podstatě nutností.

Konkurence pro Operu 7.51 neexistuje. Nikdo jiný podobný "operační systém" nenabízí.

Nicméně, vyzkoušel jsem, opět Firefox 0.8. Ale asi po 10 minutách mě přestal bavit. Proč?

  • I na mém P-IV/HT/3.3GHz s 1GB Dual-Channel DDR400 RAM se jedná o pomalý a nabobtnalý kus kódu, který ke všemu skoro nic neumí...
  • Aby Firefox začal něco umět, musím si z extensionroom.mozdev.org stáhnout tak 20 různých rozšíření, instalovat je, nastavit, a i potom má Firefox, a to je stále jen browser, méně funkcí než 5x menší Opera 7.51.
  • Firefox je browser, který má nechutné chyby. Jeho renderovací jádro nesnese i byť jen mírně složitější layouty, obrazovka se Vám rozpadá pod rukama, a pokud neskrolujete nahoru či dolů, kusy webu prostě chybí, nejsou zobrazeny. Narazil jsem na to na desítkách stránek.
  • Firefox je to browser, co se hodně špatně konfiguruje.

NP_Cache v1.2 - mix static and dynamic content

Webdesign, CMS 02.06.2004
ferrari

I have upgraded my "Plugin-Of-The-Year Winner" (as moraes denoted it), aka NP_Cache, to fully support partial caching. This gives you the ability to cache (statically) most of your page, while still allowing dynamic content plugins like NP_WIE, NP_Views, comment form, and few others to work as they should.

And not only this! Partial cache subscribes to pre-edit / delete / add item and comment events, add / delete category events, and blog events, and clears the item, index, and archive pages as necessary.

NP_Cache is a plugin that creates static pages on request, and it does it fully automatically. What does this mean? If page, or part of it, is requested for the first time, it will capture the output, save it into a static XHTML file, and when it is requested for the second time, it will output this static page in microseconds, without doing tens of SQL queries. It will speed-up your system 10 to 500-times.

NP_Cache allows you to specify which pages should be completely static (i.e. they will be completely saved, with no dynamic content, and refreshed only after a specified cache lifeTime, or, of course, after an event is triggered, like adding an item or a comment), or use special keywords to cache parts of pages that will be cached.

Kuřák? A to jako proč zabíjíte?

cigareta

<not-really-a-flame>

V Thajsku zakázali před rokem kouření ve všech veřejných prostorách, restauracích, barech, diskotékách, a to pod pokutou 2.000 bahtů. Všude. A 24 hodin denně. Tedy pořád.

Kuřáci chvíli argumentovali tím, že prý mají jakési právo kouřit, tedy omezovat ostatní, ó jaká to zhovadilost! Nemají! Nemají právo ničit nekuřákům zdraví, nekuřáci si to opravdu nepřejí (nechtějí aby celá polovina z nich na kouření umřela). Nemají právo šířit smrt. Nemají právo šířit kolem sebe smrad. Kuřte daleko ode mě! Pokud jste dost stupidní na to, abyste kouřili, páchejte tuto sebevraždu jinde než stojím, sedím, či pracuji já. Děkuji ;) (nechce se mi pořád brát antioxidanty, stačí, že bydlím v Praze)

Jak zrychlit Váš web 10x? (konkrétní návod)

PHP 31.05.2004

Uvedené řešení předpokládá, že Váš web je generován dynamicky, v tomto případě docílíte skutečně cca 10-ti násobného zrychlení Vašeho webu, nicméně, díky zde uvedeným algoritmům je zrychlení 3-4 násobné i po statické XHTML stránky.

V čem spočívá tento algoritmus? Nejdříve, proveďte kompresi Vašeho CSS a JavaScriptu, jak píšu v předchozím článku.

Následně přistoupíme ke kompresi online generovaných PHP stránek, a k vytváření XHTML statických variant stránek, a to plně automaticky.

Pro 10x rychlejší web Vám potom postačí, když na začátku Vaší stránky uvedete následující:

<?php
$statickeXHTML = new Cache();
$statickeXHTML->start();
?>

A na konci následující:

<?php 
$statickeXHTML->finish();
?> 

Jednoduché, ne?

Jak zmenšit CSS a JavaScript soubory o 75%?

Technologie 31.05.2004

Řešení je velice prosté, pokud Váš server podporuje PHP, postačí přejmenovat Váš soubor místo stylesheet.CSS na stylesheet.PHP a na začátku tohoto souboru zapnout GZip kompresi. Třeba následovně:

<?php 
if (function_exists('ob_get_level') && (ob_get_level() > 0)) 
  ob_start("ob_gzhandler");
header("Content-type: text/css");
header("Cache-Control: must-revalidate");
header("Expires: ".gmdate("D, d M Y H:i:s",
        time() + 60*60*24*2)." GMT");
?>

následuje CSS stylesheet:

body{...}