Zkřížili jsme dinosaura s raketou

Když se účastníte nějaké konference zaměřené na on-line marketing, programování a podobná témata, nabudete dojmu, že programátoři používají nejnovější vychytávky, využívají těch nejlepších služeb, … Prostě IT na nejvyšším levelu.
Jenže pak se vrátíte domů zpět do reality.

Pokračování textu Zkřížili jsme dinosaura s raketou

Jaký byl #barcampcz ve Zlíně?

Jako každý rok byl letošní vsetínský zlínský BarCamp super. Těžko říct, jestli byl ten nejlepší, na kterých jsem byl. Rozhodně byl pro mě ale hodně přínosný. Odnesl jsem si spoustu nápadů, a  tak to má být 🙂 Zaznělo hodně věcí, které teď třeba ve firmě řešíme, a jsem rád, že jsem si potvrdil, že jdeme správnou cestou.

Pokračování textu Jaký byl #barcampcz ve Zlíně?

Zonerama PHP API

Chtěl jsem na web přidat nějaké fotky ze Zonerama, ale nenašel jsem pro to žádný widget ani API. Ze Zoneru mi napsali, že nic podobného v nejbližší době nechystají a tak jsem si potřebné napsal sám 🙂

Pomocí skriptu můžete jen zobrazovat veřejná alba a fotky z uživatelovi galerie, což by ale mělo stačit 🙂

Použití

Stačí naincludovat soubor zonerama.api.php a nastavit vaše uživatelské jméno. Uživatelské jméno najdete například v adrese – http://*vase-jmeno*.zonerama.com/

include "./zonerama.api.php";
$zonerama = new Zonerama;
$zonerama->userName = "[[UŽIVATELSKÉ JMÉNO NA ZONERAMA]]";

Veřejná alba

Funkce publicAlbums() vrátí pole veřejných alb daného uživatele. Má volitelný parametr $json (true/false), kterým si můžete výsledek nechat vypsat ve formátu JSON, jinak vrací pole.

$publicAlbums = $zonerama->publicAlbums();

Fotky v albu

Funkce $albumPhotos vrací pole fotek v daném albu. Má povinný parametr $album pro ID alba a volitelný $json pro vrácení výsledku jako JSON, jinak vrací pole.

$albumPhotos = $zonerama->albumPhotos([[ID ALBA]]);

Další informace a stažení

Součástí balíčku je i ukázkový skript. Více info na Zonerama PHP API na GitHubu.

STÁHNOUT

Facebook komentáře na Blogger

Máte blog na Blogger.com a chtěli by jste používat komentáře od Facebooku? Je to jednoduché, stačí malá úprava ve zdrojovém kódu šablony.

Nejdříve si ale nastavte, aby se původní komentáře neozobrazovaly – bylo by zbytečné mít na webu dva formuláře. Komentáře zakážete v Nastavení » Komentáře » Skrýt a Uložte nastavení.

Vložení Facebook kódu

Otevřete si úpravy HTML šablony v nabídce Design » Upravit HTML, zaškrtněte políčko Rozbalit šablony pomůcek.

Facebook komentáře na Blogger.com

Teď si v kódu najděte vhodné místo pro vložení komentářů (já je vložil na konec DIV s třídou post-footer<div class="post-footer">) a vložte následující kód:

1. <script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script>
2. <b:if cond='data:blog.url == data:post.url'>
3. <h3 id='komentare'>Komentáře</h3>
4. <div id='fb-root'/>
5. <fb:comments expr:href='data:post.url' expr:num_posts='10' expr:width='500'/>
6. <b:else/>
7. <p><a expr:href='data:post.url + &quot;#komentare&quot;'>Komentáře (<fb:comments-count expr:href='data:post.url'/>)</a></p>
8. </b:if>

Popis kódu:

  • 1. řádek – vložení JavaScriptu od Facebooku
  • 2., 6. a 7. řádek – podmínky v jazyce bloggeru – pokud je adresa (data:blog.url) rovna adresa příspěvku (data:post.url), …
  • 3. nadpis pro komentáře, atribut ID je vyplněn kvůli kotvě, na kterou povede odkaz z výpisu příspěvků
  • 5. Facebook kód, šířku komentářů, nebo další nastavení si zvolte sami
  • 7. odkaz na komentáře ve výpisu příspěvků – zobrazuje i počet komentářů

Pár tipů pro bezpečnější databázi

No, jsou to spíš takové nápady, co mě kdysi napadly a nikam jsem je nezapsal. Neberte to jako fungující všehospásu vaší aplikace, spíše jako takový doplňek k větší bezpečnosti.

Práva databáze

Myslím si, že pro chod běžné aplikace postačí MySQL příkazy SELECT, INSERT, UPDATE, DELETE. Proč by tedy uživatel (aplikace) měl mít povoleny všechny ostatní? Pokud vás bude útočník chtít napadnout, určitě vyzkouší příkazy SHOW TABLES, TRUNCATE, DELETE *, apod. Když ale nebude mít aplikace k těmto příkazům práva, nebude je mít ani útočník. Vytvořte si proto nového uživatele s omezenými právy a plná používejte pouze pro správu databáze.

Různé názvy tabulek

Dřív jsem si říkal, že je zbytečné dávat názvy tabulek do proměnné – stejně budou mít všechny instalace aplikace stejné tabulky a budu se v tom lépe orientovat. Chyba. Útočník bude zřejmě zkoušet klasické názvy tabulek jako je users, user, zakaznik, atp. Když navíc zjistí, že stejných aplikací je více, může útok rozšířit.

Napadlo mě tedy pojmenovávat tabulky úplně šíleně a pro každou instalaci jinak. Třeba tabulka users by se jmenovala ufhj88jki; při správě by se v tom ale ani prase nevyznalo. Řešením je ale alespoň nesmyslný prefix – název tabulky bude při správě jasně identifikovatelný, ale pro útočníka nelehký k uhádnutí. V jedné aplikaci se tabulka users bude jmenovat 87479_users, v další 74ughjl8_users. Také bych doporučil v rámci jedné databáze nepoužívat stejný prefix. Ve stejné databázi tak budou třeba tabulky: 87ufhjk_zakaznici, 6ghbdsk_objednavky (Aby jste měli stejné abecední pořadí tabulek, můžete prefix udělat s posloupností).

Počty hledání v Našeptávači Seznamu

Nedávno jsem chtěl zjistit počty hledání klíčového slova na Seznamu, který je už ale nějakou dobu nezobrazuje (asi tři roky). Stačilo použít uživatelský styl od Marka Prokopa, ten už ale nefunguje (Seznam změnil HTML kód), tak jsem vytvořil vlastní, třeba se bude někomu hodit.

Nedávno jsem chtěl zjistit počty hledání klíčového slova na Seznamu, který je už ale nějakou dobu nezobrazuje (asi tři roky). Stačilo použít uživatelský styl od Marka Prokopa, ten už ale nefunguje (Seznam změnil HTML kód), tak jsem vytvořil vlastní, třeba se bude někomu hodit.

Styl si můžete stáhnout na stránce userstyles.org: Našeptávač Seznam.cz

.suggest .content .item .relevance {
visibility: visible !important;
}

Instalace

Dříve jsem tu uváděl kompletní návod pro různé prohlížeče – ten ale nebyl aktuální. Věřím, že pro vás nebude složité si správné rozšíření do vašeho prohlížeče najít. Hledejte na Google dotaz “userstyles”.

Není м jako М

Ačkoliv není na první pohled mezi těmito písmeny žádný rozdíl, opak je pravdou. Zatímco první je písmenem latinky, druhé je písmenem cyrilice. Tenhle nepatrný rozdíl ale může způsobit nemalé komplikace.

Když jsem se poprvé dozvěděl o podobnosti těchto znaků, nepřikládal jsem tomu žádnou váhu ale později jsem přišel na další věc, jak je možno záměnu zneužít. Ale abych nepředbíhal, tak to vezmu pěkně popořadě.

Řadíme podle abecedy

Hledal jsem chybu na webu, protože se mi názvy ruských měst na jednom webu, vybrané z MySQL databáze, řadili tak nějak divně. Příčinou bylo právě to, že je občas někdo uložil s počátečním písmenem M (latinka) a někdy s М (cyrilice). Abych se přiznal, tak jsem problém zatím neměl čas pořádně řešit. Funkčním řešením by ale mohlo být převést kódování na Windows CP1250, což mi jako ideální řešení rozhodně nepřipadá, takže pokud někdo víte, jak na to, budu rád za každou informaci.

Jednoduchý podvrh

Zatímco předchozí problém nebyl “životu” nebezpečný, tady tomu je jinak. Vezměte si například dvě internetové adresy: microsoft.com a мicrosoft.com. Počáteční písmeno je sice trochu jiné, ale napadne vás to v první chvíli? V dnešní době, kdy lze registrovat domény i z mezinárodních znaků, lze takový web využít k podvržení stránky, nebo k získání citlivých dat (v uvedeném příkladu, мicrosoft.com, například pro získání jména a hesla do hotmailu).

Cyrilice má ještě několik podobných, nebo stejně vypadajících znaků, takže tu jakési nebezpečí zneužití je. Proto si raději u pochybných webů ještě zkontrolujte, zda se nejedná o podvrh., třeba zadáním adresy do Google (není vám divné, že nebyl nalezen web Microsoftu?)

Jak se připojit na localhost s Windows Mobile

Dnes jsem přemýšlel, jak nejlíp testovat mobilní verze webu. Nejlepším řešením je psát web klasicky na localhostu a k němu se připojit přes mobilní zařízení. Ale jak?

Myslel jsem že bude potřeba nějaká utilitka, ale opak je pravdou. Je to totiž až podezřele jednoduché:

  • Připojte vaše WM zařízení k PC pomocí ActiveSync (Centrum Synchronizace)
  • Spusťe příkazový řádek a zjistětě si IP adresu vašeho PC pomocí příkazu ipconfig /all
  • Adresu IPv4 zadejte do prohlížeče na WM zařízení.

jak-se-pripojit-na-localhost-s-windows-mobile-1

Aktualizace: Pokud máte domácí Wi-fi síť, nemusíte nic připojovat. Stačí zadat adresu vašeho počítače v síti.

Jak vytvořit subdoménu na localhostu

Pokud jste si někdy potřebovaly vytvořit na localhostu subdoménu, například ve tvaruhttp://subdomena.localhost/, tak je tento článek právě pro vás.

Tento návod funguje na XAMPP 1.6.6a (Apache 2.2.8) ve Windows Vista Home Premium, ale mělo by to fungovat na jakémkoliv sestavení. XAMPP je nainstalován v rootu na disku C (C:xampp) pro subdomény budu využívat složku C:/xampp/htdocs_sub (je ve stejné složce jako htdocs aby se mi to zbytečně nemíchalo).

httpd.conf

Otevřete soubor C:/xampp/apache/conf/httpd.conf a odkomentujte (odstraněním #) následující řádek, soubor potom uložte:

Include conf/extra/httpd-vhosts.conf

httpd-vhosts.conf

Otevřete soubor C:/xampp/apache/conf/extra/httpd-vhosts.conf a nakonec přidejte:

#1
NameVirtualHost 127.0.0.1
#2
Order Deny,Allow
Allow from all
#3
DocumentRoot "C:/xampp/htdocs_subdomena"
ServerName subdomena.localhost
#4
DocumentRoot "C:/xampp/htdocs"
ServerName localhost
  1. pojmenování virtuálního hosta
  2. pro Apache 2.2 je nutné nastavit složce se subdoménami práva
  3. nastavení cesty a názvu subdomény
  4. aby nám fungoval i klasický localhost, musíme z něj také udělat virtuálního hosta

hosts

Teď už jenom musíme domluvit Windows, aby tomu pochopily.

Otevřeme soubor C:/Windows/System32/drivers/etc/hosts a přidáme naši novou subdoménu. Konec souboru potom vypadá takto:

127.0.0.1       localhost
127.0.0.1       subdomena.localhost
::1             localhost

A je hotovo! Teď už stačí jenom restartovat Apache a subdoména funguje. Nezapomeňte samozřejmě vytvořit složku C:/xampp/htdocs_subdomena 🙂

Jak nastavit TortoiseSVN a Assembla

Předpokládám, že pokud vás tento článek zajímá, tak o subversion něco víte. Pokud ne, zkuste si něco přečíst třeba na Wikipedii

My ostatní se pustíme do nastavení klienta Tortoise SVN se serverem Assembla.com, který nabízí (zdarma, nebo v placené verzi) nástroje a služby pro správu subversions.

Instalace TortoiseSVN a registrace na assembla.com

  • Stáhněte a nainstalujte si klienta TortoiseSVN, pokračujte dle pokynů v instalačním programu. Po instalaci je vyžadován restart počítače, aby se klient mohl integrovat to systému.
  • Zaregistrujte se na stránkách Assembla. Já se registroval už dříve, takže postup vám neprozradím (už si nepamatuju), ale neměl by to být žádný problém.

Vytvoření prostoru

  • V neplacené verzi máme na projekt “pouze” 200MB
  • Na stránce Home zvolíme Create New Space
  • Zvolíme první balíček Software development – Subversion Hosting with Integrated Tickets
  • Vybereme Select Free Public (nebo placenou verzi Private/Profesional)
  • Vyplníme formulář a poté klikneme na Create The Space
    • Space Name – Název prostoru (např. Můj projekt)
    • URL name – URL adresa (např. muj-projekt)
    • Description – popis
    • Tags – štítky, popisky, které charakterizují váš projekt (např. cms, administrace, …)
    • Security – Nastavení bezpečnosti, aneb jaké možnosti mají veřejní uživatelé (prohlížení/editace) a členové týmu projektu (ptohlížení/editace)

Napojení TortoiseSVN

  • Přejdeme na záložku Source/SVN, kde zkopírujeme odkaz SVN Url (např.http://subversion.assembla.com/svn/muj-projekt)
  • Najdeme si složku s projektem na našem pevném disku, klikneme na ni pravým tlačítkem a z nabídky vybereme SVN Checkout
  • Do pole URL of Repository vložíme adresu SVN (http://subversion.assembla.com/svn/muj-projekt), v Checkout Directory bude cesta ke složce s projektem (např. C:Projektymuj-projekt)
  • Potvrdíme tlačítkem OK, program nám oznámí, že složka není prázdná (pokud v ní něco máte) a zeptá se, jestli chcete improtovat/exportovat soubory, zvolíme Ano
  • Vyskočí okno s informacemi, poslední řádek by měl být Completed At revision: 0
  • Repozitář je vytvořen a nastaven

Upload souborů

  • Opět klikneme na složku pravým tlačítkem, ale tentokrát vybereme z nabídky položku SVN Commit… (aneb nahrát soubory do repozitáře)
  • Vybereme všechny soubory (Select / deselect all) a potvrdíme OK, ještě si k uploadu můžeme přidat poznámku (Message)
  • Vyplníme jméno a heslo, které jsme zadali při registraci do Assembly
    Zobrazí se okno s uploadem souborů, po nahrátí souborů máme vytvořenou první verzi (na posledním řádku bude Compledet At Revision: 1).

Práce s projektem

  • Určitě jste si všimli, že u složky s vaším projektem a u souborů v ní se navíc zobrazují nějaké ikony.
  • Zelená šipka znamená, že soubory ve složce jsou aktuální s posledním záznamem z repozitáře (od posledního update nenastala žádná změna).
  • Červený vykřičník znamená, že soubory byly od posledního update změněny. Můžeme provést nový upload na server

Práce s repozitářem

  • Klikněte na složku projektu a zvolte z nabídky SVN Update, čímž dojde k aktualizaci souborůna vašem pevném disku ze serveru s repozitářem.
  • Poté, co provedete nějaké změny, opět klikněte na složku pravým tlačítkem, ale tentokrát vyberte SVN Commit…

Kolize

Pokud na projektu pracuje více lidí, nebo na něm pracujete na různých místech (např. na počítači doma a na jiném počítači v práci), tak se setkáte s tím, že například vy i váš kolega změníte soubor a budete tak muset rozhodnout, jak bude nakonec vypadat. To znamená, že se tyto dvě verze souboru spojí v jeden. Další možností je, že v souboru upravíte třeba stejný řádek a vznikne tak kolize, kterou budete muset vyřešit. Bohužel zatím nemám možnost to nějak rozumě otestovat, takže s tímto si budete muset poradit sami 🙁