Vrhnul jsem se do offline businessu …

První opravdový online kšeft jsem vyřídil v sedmnácti letech. Ke dnešku je to sedm let. Moje práce se sice s rutinou moc nespojuje, ale občas si člověk musí trochu orazit. Proč ne třeba zcela jiným businessem, než na který je člověk zvyklý? 🙂

Před rokem a půl (končilo zrovna léto) jsme s kolegou vymysleli skvělý produkt. Budu fér, a přiznám, že jsme se inspirovali stejným produktem fungujícím v zahraničí. U nás se do stejného konceptu zatím nikdo nepustil, vycítíli jsme příležitost.

Produktem byla (je) tištěná publikace: golfový průvodce po hřištích v Česku a okolí (aka “Průvodce toulavého golfisty”) s vouchery pro hru zdarma. Ty vouchery jsou v knize nejdůležitější. Pro každé hřiště jsou přiloženy vouchery pro slevu 1+1 zdarma z golfového Fee. Pokud by byl někdo hyperkativní a chtěl využit všechny vouchery, které kniha obsahuje, ušetřil by neco přes 100k, slušný. Když se do nečeho pouštím, musím tomu hlavně věřit. Věřit že je to dobrý produkt a bude mít úspěch.

Vrátím se o ten rok a půl zpátky. Řekli jsme si, že bychom to chtěli stihnout do Vánoc – ideální čas na distribuci takovéhotoh produktu. Oslovil jsem grafika a za 14 dní (10 dní z toho se řešily moje připomínky, jsem hroznej detailista) jsme měli hotový design dílčích stránek. Fajn, zbývalo to již jen naplnit daty. No a to byl kámen úrazu…

První co mně napadlo (moje profesní deformaci je dost zřetelná):

  • Udělám elektronický systém, kde mohou partněři vyplnit podrobné informace o svém hřišti, kontaktní údaje, polohu, nahrát fotky a logo.
  • Systém jim sám vygeneruje smlouvu, my je jen obešleme zvacím mailem s přístupy a vše se to zvládne čistě a hravě.
  • … tohle bohužel v reálném světe nefunguje.

Nakonec kolega musel sjezdit 3x křížem krážem celou ČR. Se všema jednat osobně, zadávat to do systému sám ručně. Museli jsme vyměnit grafika, najmout si externí projektovou manažerku (naše časové vytížení nedovolovalo věnovat se projektu na potřebné úrovni), na poslední chvíli jsme změnili tiskárnu, řešili promo plakáty …

Původně jsem si myslel, že vytištěné publikace budu skladovat u mě doma ve sklepě, pak jsem si díkybohu spočítal, že toho budou celkem skoro dvě tuny a začal řešit skladové prostory.

Před týdnem jsem držel v ruce první výtisk naší vyčerpávající práce. Ten pocit byl impozantní a samým vzrušením se mi chvěly ruce. Máme krátce před vánocemi .. ale skoro rok a půl od chvíle, kdyz jsme všechno vymysleli.

Až díky tomuto jsem si uvědomil, jak perfektní a pohodovou práci mám. Ale i tak jsem vděčný za hromadu nového know-how ze zcela jiného oboru. A již plánujeme projekt další .. opět z oblasti printu 🙂

SQL injection a jiná zvěrstva

Obrátil se na mne klient s prosbou o pomoc při dokončení a rozjetí jejich fungl nového informačního webu. Web jim komerčně (to je v tomto kontextu důležité) programoval nějaký, pravděpodobně nezávislý, vývojář. Web je dokončený (prezenční i administrační část) a požadavkem byla pomoc při revizi současného řešení, optimalizaci, správě reklamních pozic a podobné rutinní záležitosti. Původní vývojář prý totiž ke konci projevoval jistou neochotu a nespolehlivost při řešení poptávaných zadání.

Nutno podotknout, že klient je v tomto směru pole neorané. Jeho představa, že si zaplatí vytvoření webu a je prakticky vše hotovo byla roztomile naivní. Abych rozvedl tu představu: klient si myslel, že lidi tam přijdou sami, že obsah webu se snese z nebe a celé to bude samo od sebe generovat velké zisky. I když na tom posledním něco  je: web ještě není produkční, ale reklamní pozice josu již do jedné rozprodány.

S tímto vědomím jsem vstupoval v jednání, vyžádal si podrobnější informace o projektu a podíval se dané aplikaci na zoubek.

A nyní přijde pointa:

  • do administrace jsem se přihlásil nejprimitivnější formou SQL INJECTION, tedy: ‘ OR 1=1 —
  • laborováním s číselnými paramertry v URL jsem dokázal na straně databáze provádět parádní kouzla
  • při chybě v SQL dotazu se tento i s popisem chyby od mysql serveru naférovku vypsal
  • pri testování XSS a vložení kusu JavaScriptu do kontaktního formuláře jsem rozhodil celou administraci
  • hesla adminů v administraci se vypisovala čistě plaintextově
  • … o tom, že v HTML byla hromada chyb a web nesplňoval ani základní SEO praktiky se asi nemá pod tíhou skutečností výše cenu zmiňovat …

Nutno říct, že uvedené problémy byly jen první čtyři checky, jenž mě z fleku napadly, a všechny dopadly pozitivně resp. negativně.

Byl jsem silně v šoku. Web na první pohled vypadá profesionálně. Moderní layout, stavba HTML na první pohled nevypadala špatně .. s layoutem administrace (celé se to tváří jako Windows Vista) si někdo taky silně vyhrál. A pak tohle. Já to nechápu. Jak si někdo za takto odvedenou práci může brát peníze? A taky si říkám, jakou roli v tomto ohledu asi hrál fakt, že klient dané problematice rozumí na úrovni nula? Že by prodané pozlátko shnilé uvnitř?

Na závěr dvě poznámky:

  1. Vývojář klientovi za úplatu poskytuje také hostingové služby. Když vidím jak vypadá aplikace, je otázkou, jak je na tom zabezpečení hostingu. Ještě jsem to nezkoušel.
  2. Hledání chyb na cizích webech mně baví 🙂

Dodatek (aneb co mně velmi, velmi pobavilo):

"The requested URL /admin/virtualsecurity.php was not found on this server."

Zádrhel u DNSSEC s vlastním NSSETem

V polovině února tohoto roku jsem si u active24 zaregistroval doménu mujpro.cz (golfový trenér). Ihned po registraci jsem (tak jako u všech ostatních) přenastavil u domény NSSET na naše nska. Aktualizoval jsem konfiguraci bindu, otočil a za pár hodin vše vesele fungovalo.

Po měsící vývoje jsem zveřejnil betu vyvíjené aplikace úzké skupině testovacích uživatelů. Jako feedback se ke mě dostala informace o částečné nedostupnosti aplikace. V některých případech se uživatel vůbec nedostal na obsah dané prezentace, v jiných se mu nezobrazila žádná grafika (veškerou grafiku umisťuju na doménu třetího řádu) a v těch ostatních vše fungovalo korektně.

Z počátku jsem tomuto problému nepřikládal velkou váhu. Neměl jsem žádné known issue které by s touto nedostupností korespondovalo.  Jiné domény se zcela stejným nastavením mi fungovaly korektně. Testoval jsem korektní dostupnost prezentace z několika strojů (i s pomocí jiných uživatelů a lokalit). A také jsem se nechal ovlivnit faktem, že popsaný feedback přišel ze strany více či méne BFU.

Na záležitost jsem skoro zapoměl, když jsem jednoho dne prezentoval web na veřejné WIFI v kavárně Savoy jednomu z klientů. A ejhle. O reálné existenci problému jsem se přesvedčil osobně.

Problém byl v překladu DNSka. Ping byl zcela mrtvý – nepodařilo se mu přeložit hostname. Zjištění pro mě šokující. Hlavně jsem v první chvíli nechápal, proč se toto dějě selektivně jen na straně určitých providerů. Obrátil jsem se tedy na registrátora (active24) s podrobným popisem problému.

Reakce byla vysvětlující a poučná:

Problémy může způsobovat aktivní KEYSet na doméně. Ve chvíli kdy jste doménu převáděl na vlastní DNS již byla podepsána naším KEYSetem a ten na ní zůstal aktivní. Ve chvíli kdy je na doméně aktivní zabezpečení DNSSEC a zároveň na autoritativních nameserverech není příslušný klíč, budou nameservery poskytovatelů, kteří se k této technologii chovají korektně, považovat DNS odpovědi za podstrčené a komunikaci přeruší.

Pomocí autorizovaného požadavku jsem nechal z domény odstranit KEYSet a vše již funguje jak má. Solved.

Seznamka a SEO

Již velmi dlouho jsem se díky nedostatku času (lamentování nad aplikačním vývojem, manažerské strasti nad novými projekty) nedostal k poctivé optimalizační výzvě. Však to znáte, máte zavedený web plný obsahu, návštěvnící jsou, ale nikoliv v požadované míře a na důležitá klíčová slova se umisťujete v nekonkrétní hloubce.

Tak a je to tu. Web, který se chystám optimalizovat je klasická textová seznamka. Seznamek (větších či menších) jsou tuny. Těch významných je jenom několik. Ona taková seznamka je na trafficu docela závislá. Když si zadáte inzerát, logicky očekáváte, že se Vám v nejbližší době dostane co nejvíce relevantních odpovědí. K tomu je však potřeba hodně návštěvníků.

Předmětný web měl co do korektní SEO optimalizace špatně mnoho věcí, především:

  • nelogická doména třetího řádu
  • shodný titulek napříč celým webem
  • crawler se neměl šanci dostat na dílčí textové obsahy
  • zbytečné linky pro vyhledávače (aplikace rel=nofollow)

Jak je vidět, jsou to všechno pouze onpage faktory. Předtím než se ve velké míře vrhnu na ty offpage, chci tomu dát chvíli na revitalizaci. Zajimá mě, do jaké míry stačí robotům pouze správně sestavený obsah.

V současné době je jich všechno upravené a zoptimalizované. Udělal jsem si graf denních hitů z výsledků vyhledávačů. Uvidíme, jak to dopadlo …

Dogmata, absolventi a kvalita výuky

V profesním světě mám několik dogmat. Rád je barvitě sděluji svému okolí, které se mně často ptá na rady jak toto či tamto. Víceméně se jimi i řídím, od toho je v podstatě mám. Jaká jsou to dogmata? Tak tedy:

  • Nikdy (nikdy!) se nespoléhat  na neověřené zdroje a nezadávat jim důležitou práci
  • Nic nedělat ad hoc – plánovat, analyzovat, projektovat (dobře, toto moc neplatí na soukromé projekty …)
  • Vždy počítat s dostatečným časem na testování a ladění (z praxe to se vším všudy bývá plus polovina vývojového času)
  • Vytvářet bezpečné a funkční aplikace
  • Využívat framework(y) a nepsat duplicitní bloky kódu

Teorie hezká. V praxi se občas nebere zcela vážně (kovářova kobyla), ale má své místo. Nicméně jsem si nedávno nad nedodržením výše uvedeného pěkně rozbil tlamu. Začalo to prvními dvěma body, ostatní se k tomu pěkně přisypaly.

Tvořil jsem projekt (soukromý, u jiného bych si to pochopitelně netroufl) na který bylo extrémně málo času (obecně, já na to neměl čas vůbec). Odzkoušený (známý) grafik dodal návrhy, ty se schválily a já řešil co dál. Muselo to být rychle, já neměl čas, všichni vývojáři v mém okolí neměli špetku času. Grafik se nabídl s tím, že má kamaráda (spolubydlícího) který studuje ČVUT a byl by schopný to převést z obrázku na web. Postupem jsme to rozšířili také o oživení kompletního webu plus primitivní CMS. Výhodou bylo, že si to ti dva šmoulové mohli vyřešit pěkně spolu (spolubydlící) a já měl dostat hotový produkt bez námahy a složitého domlouvání (kodér vždy nadává na grafika kvůli tomu, že nepočítá se všemi možnostmi a programátor na kodéra …).

Takový byl plán. Z počátku to mělo dobrý tón, HTML šablony spolu s relativně komplexním JS fungovaly (do kódu jsem raději moc nekoukal, byl ostudný) ale budiž, tam cílovka koukat nebude.

Vše se začalo komplikovat s prvními verzemi oživeného webu. Pomyslná kudla mi prořezala kapsu skrz na skrz. Vygradovalo to ve chvíli, kdy jsem mailem dostal hotovou verzi v zipu. Co bylo v dodané outsorcované práci tak špatně?

  • Ještě nikdy jsem neviděl odpornější kód.
  • Žádný framework, žádná DB třída, html vypisované pomocí echo, české názvy proměnných (někdy i ve skloňovaných variantách).
  • Url klasickým odstrašujícím způsobem: “page=sekce” a nasledně include(xxx/sekce.php) (bez ochrany!).
  • V každém modulu (page=) zvlášť (!) připojení do databáze (i přes použití centrálního nastavení konstant pro DB připojení stejně na několika místech natvrdo).
  • Přibližně 60% duplikovaného kódu
  • Pro jazykovou mutaci je nutné vytvořit paralelně kopii skriptu (page) s veškerým funkčním kódem a HTML

A jako třešnička:

  • Používání session proměnných stylem register_globals=on

To poslední mi pěkně zamotalo hlavu. Dělal jsem na webu vlastnoručně úpravu (potřeboval jsem z DB získat do skriptu o jeden sloupeček více) a vedlejším efektem bylo, že se každý návštěvník “automaticky” přihlásil (přepsání globální proměnné) rovnou s administrátorskými právy. Fajn.

Asi není třeba příliš poukazovat na efekt, že jsem s tím měl nakonec mnohem více práce, než kdybych si to vyřešil sám (a to beze srandy). Následující dva týdny jsem denně přicházel na špeky a disfunkce, které jsem pečlivě reportoval a den co den instaloval nové dodané verze. Navíc to vůči partnerům bylo silně neprofesionální. Přijít na prezentaci aplikace na to, že funguje silně náladově, není zrovna ideální. Vyčerpávající.

Mám z toho všeho dva dojmy. Za prvé: už nikdy nezadám práci neověřenému externistovi (jasně, to už tu bylo). Za druhé (a to je hlavní): jsem v šoku z kvality absolventů. Jistě, člověk může argumentovat, že z jedné špatné zkušenosti nelze soudit. Faktem je, že mám ve svém okolí hned několik známých, kteří zmíněnou školu a konkrétně mě profesně známé obory studují. Častokrát jsem jim pomáhal řešit úlohy do školy. Když jsem ale na vlastní oči (a zkušenost) viděl (zažil) co je tam učí za pakárny, bylo mi mdlo.

Vyučující totiž nedbají na žádný styl. Neznají coding style. Sami někdy ani nerozumí probírané problematice. Oblíbenou formou výuky je funkční rozšíření předané základní verze aplikace (vytvořené vyučujícím). Tato aplikace však v mnoha případech ani nefungovala (když už, tak nikdy ne zcela korektně) a nesla všechny příznaky popsané v bodech výše.

Achjo. Chápu, že profík který si díky své profesionalitě dokáže slušně vydělat nepůjde učit za almužnu. Ale ti, co předávají znalosti by měli mít alespoň nějakou úroveň. Jsem v tomto ohledu rád, že jsem se v tomto oborou nějaké VŠ vyhnul, a veškeré své aktuální know how jsem si nabyl metodou pokus/omyl sám, nebo od profesně zdatnějších kolegů z oboru. To je totiž ta nejlepší škola.

ifarma slaví první narozeniny

Už jsem se dlouho nechválil, a nezapíjel mnohé úspěchy. To vše na úkor dalšího a dalšího hnaní za dalšími a dalšími vytyčenými cíly.

Tentokrát se však přeci jen s jedním úspěchem podělím. Je to právě rok, co jsme spolu se sveekem vdechli život projektu ifarma.cz. A jaká tedy je vůbec bilance tohoto projektu po roce zdárného fungování?

Prvním měřítkem je tento sympatický graf měsíční návštěvnosti:

ifarma, graf návštevnosti

Graf je to jistě pěkný, ale bez měřítka nepříliš vypovídající. Druhým měřítkem budiž hranice denních unikátních návštěvníků překročená včera. Tato hranice jest 16.500 UV.

Pomyslné nádoby cílů byly naplněny, a věřím, že budou ještě velice dlouho přetékat :).

Tak tu máme novou Operu

Nikdy jsem nezastíral, že Opera je mou bezkonkurenční jedničkou. Rozebírat proč, klady a výhody nebudu. Člověk na ty věci musí přijít sám, blafům potulných bloggerů stejně jen tak neuvěří, a spíše ho podobné kecy odradí 🙂

Tak jako tak, hip hip, máme tu verzi 9.26. Žádné drastické změny, spíše tucet drobných a zajímavých vylepšení. Za zmínku rozhodně stojí funkce Označit při posunu výchozí pozici. Pravdou je, že při scrollování dlouhé stránky a potřeby se vrátit zpět (třeba do rozečteného odstavce) jsem míval často problémy a chvíli jsem hledal. Funkce tedy originální, nicméně si na její použitíje třeba si nejdříve pár dní zvykat, abyste se naopak neztráceli ještě více :).

Tolik k Opeře, v poslední dnech mně zaujaly také tyto články:

Už se nebojím výletů na úřady

Před třemi měsíci jsem se přestěhoval do novýho. Nebudu se zde rozepisovat, zda je nový byt v novostavbě lepší než starý v panelovém domě, protože bych k tomuto tématu rád řekl mnoho, možná někdy příště.

Nová adresa ssebou po nějaké době nese i nutné zlo. Změnu trvalého bydliště. Této akci jsem se velice dlouho bránil, sídli ve mne totiž silná averze vůči jakémukolvi zařizování na úřadech. Spousta lidí, nepříjemní úřednicí … však to znáte.

Ono se totiž nejedná jen o občanku, ale: zdravotní pojišťovna, finančák, řidičák, 2 banky, úvěry … hrůza!!

O to větší  pro mně bylo překvapení, z velmi velmi velké vstřícnosi ze strany úředníků, většinou tedy úřednic. Sice jsem zatím navštívil jen dvě instituce z výše jmenovaných (smích) ale překvapen jsem byl dost. Ona to totiž nebyla jen vstřícnost … z pracovníků státu totiž zářil upřímný úsměv (nebo byly dost nadané herečky) a reálně se snažili pomoct tolik, kolik bylo v jejich silách.

Tak jako tak, výletu za novým řidičákem se vyloženě štítím 🙂

Chyby, chybky a chybičky

Určitě to znáte. Vytvoříte funkční systém (jasně, že až po několika měsících ladění) a tento systém bez jediného problému běží třeba rok, dva i více. A po tomto bezproblémovém období nastává ta chvíle…

Z nenadání se objeví chyba.

Naprosto nelogická, bez žádného externího přičinění. Nutno říci, že takovéto problémy mají velmi zapeklitý charakter a špatně se hledají.

Pokud pominu otravnost těchto chyb, hodiny nervy drásání při jejich hledání a peněz které tímto přijdou nazmar (ano, občas se tyto chyby týkají i reklamních systémů…) mají něco do sebe.

Ony tyto chyby jsou obvykle velmi důsledné a vzniknou shodou velmi zajímavých náhod. Při jejich zkoumání se člově také více ponoří do daného systému a lépe pochopí dosud nepochopené. A někdy objeví i takové věci, které rozhodně nečekal :-).

Začnu si tyto “kousky” sbírat a podělím se s tím, co jsem nasbíral. Už čekám, odkud na mne opět nějaká vykoukne.