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>
SuperStar a pozitivní diskriminace bělochů

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

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.