Technologie » MyEgo.cz - Radek Hulán webzine

MyEgo.cz

home foto blogy mywindows.cz kontakt

Jak se naučit profesionálně programovat?

Technologie 11.06.2004
coder

Po napsání článku o mých zkušenostech s programováním jsem emailem, či na ICQ, dostal již desítky dotazů na to, jak vlastně začít.

Vzhledem k tomu, že vůči těm klukům, co se začínají učit programovat dnes, mám více než dvojnásobný věkový rozdíl (je mi 31 let), a tím i obrovské zkušenosti navíc, cítím se cosi jako radící otec, ale.. budiž :)

Takže, pokud chcete vědět, jak se naučit poněkud více než následující příkládek, čtěte dál!

#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
  string jmeno;
  cout << "Napis sve jmeno : ";
  cin >> jmeno;
  cout << "Jmenujes se  " << jmeno;
  system("PAUSE");
  return 0;
}

Autentický záznam jedné relace na ICQ

Technologie 10.06.2004
iTwisteR: ahoj.. hele kde muzu editovat tu hlavni stranku ?
iTwisteR: chcu si tam dat kalendar ale prej musim vlozit nejaky tag na hlavni page ale nevim kde je
iTwisteR: v dokumentaci neni navod
rADo: v dokumentaci je navod, ale anglicky je tam 400kB návodu..
iTwisteR: neni
iTwisteR: snad sem to uz hledal.. a ja ten kalendar chci misto toho MOST KARMA
rADo: http://hulan.cz/forum/ . Dekuji.
iTwisteR: mi nemuzes rict tady :
iTwisteR: nebo to nevis ?
rADo: nedelam podporu na ICQ pro nikoho... na Nucleusu bezi tisice blogu. PS: pokud jsem to naprogramoval, tak to asi vím... A v EN dokumentaci to OPRAVDU je. Je to i na foru. Staci umet anglicky a hledat..
iTwisteR: tak mi najdi to v tech dokumentech ... nebo mi hod link na forum kde to presne je protoze ja to tu nevidim..
iTwisteR: mi staci jenom soubor kde to je vse napsane a kde to muzu editovat.. abych tam pridal kalendar.. musim to napsat do zdroje nebo staci pres admina ?
rADo: jsi normalni clovece? ja pro tebe MUSIM neco delat? To ti nestaci, ze ti davam zdarma STOVKY A STOVKY hodin moji prace??? zacni se trosku ucit sam...
rADo: a kdyz na to nemas, pouzivej neco jednodussiho, pro lamy, neco jineho nez Nucleus XE

Jediné co toho človíčka mírně ospravedlňuje je fakt, že je mu dle ICQ (207346374) 14 let. Tedy.. puberta.

.htaccess a FilesMatch pro SEO URL

Technologie 10.06.2004

Za pomocí .htaccess a FilesMatch se dají velice rychle a efektivně vytvořit SEO URL. Jak takový zápis vypadá pro PHP MIME typ? Například takto:

<FilesMatch "^extra$"> 
 ForceType application/x-httpd-php 
</FilesMatch>  

Za pomocí proměnné $_SERVER['PATH_INFO'] se dostaneme na URL, které následuje za textem ´/extra/'. Jak s tím můžeme dále pracovat? Nejjednodušší je použít explode():

$data = explode("/",serverVar('PATH_INFO'));
$path = $data[1];

S tímto se již dále dá dobře pracovat. Není problém zavolat patřičné třídy, a předat řízení našemu online redakčnímu systému.

Dají se tak velice rychle vytvořit například tyto SEO URL:

Původní URL typu /xml-rss2.php?full=yes samozřejmě zůstávají stále zcela funkční. A není problém těm URL přidat třeba ještě koncovku .XML a vytvořit tak dojem, že se jedná o statické soubory :)

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>

(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.

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{...}

Atom 0.3 - lepší náhrada RSS

Technologie 28.05.2004
Atom

RSS má za sebou několik verzí, 0.91, 0.92, 1.0, a potom i vcelku povedené 2.0 (obsahuje, na rozdíl od 0.9x například i datum publikování příspěvku, kategorie a pár dalších věcí).

Nicméně, RSS je omezeno na čistý text příspěvku. Atom 0.3 tento problém odstraňuje, příspěvky mohou obsahovat klasické XHTML tagy, a možné je linkovat i CSS stylesheet.

V čem je nevýhoda Atom 0.3? Zatím jej moc čteček nepodporuje. Ale, to se změní. Nucleus CMS nyní nabízí Atom 0.3 feed, naleznete jej v menu vpravo dole.

Čtečky podporující RSS a Atom?

Statické XHTML stránky pro systém Nucleus CMS

Technologie 27.05.2004
Ferrari

NP_Cache je nový plugin pro Nucleus CMS, založený na Cache_Lite PHP třídě. NP_Cache zabezpečuje plně automatické generování statických XHTML stránek, a jejich obnovu v případě potřeby (vložení komentáře, článku, a dalších).

Nucleus CMS je tak dobře navržený systém, že pro automatický systém cachování celého webu, včetně reakcí na změny článků a komentářů, postačí cca 8kB kódu v PHP.

NP_Cache cache je funkční pro:

  • titulní stránku .
  • stránky článků .
  • seznam archívů .
  • výpis archívů .
  • stránky členů.
  • RSS a Atom feedy.