Jak se naučit profesionálně programovat?
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
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
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:
- Atom 0.3: https://myego.cz/extra/atom
- RSS 0.9: https://myego.cz/extra/rss
- RSS 1.0: https://myego.cz/extra/rss1
- RSS 2.0: https://myego.cz/extra/rss2
- RSS komentářů: https://myego.cz/extra/comment
- či třeba log hledaných slov
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
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
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
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
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%?
Ř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
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?
- Feed Demon.
- RSS Point.
- RSS Reeder.
- Feed Reeder (neověřeno, via #lama).
- Abilon (via Jirka Plíštil).
Statické XHTML stránky pro systém Nucleus CMS
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.