Upgrade CodeIgniteru z verze 2 na 3 – na co si dát pozor?

Dokumentace CodeIgniteru celkem detailně popisuje postup upgradu na této stránce. Kromě inkrementálních upgradů je tam delší článek o upgradu verze 2.2.x na 3.0.x. Vypíchnu sem jen několik věcí, se kterými jsem měl konkrétní problémy:

  • Metody třídy Input, Session a Config v případě neodeslání hodnoty/nenalezení nevrací FALSE jako ve verzi 2, ale nově NULL – dává to větší smysl, ale může být problém, pokud porovnáváte typově a v celém projektu se to dost špatně hledá, je to velká změna.
  • Třídy musí začínat velkým písmenem – může být problém, pokud pracujete na Windows. Git totiž rozlišuje velikosti písmen.
  • Sessions už se neukládají do cookies. Můžete si vybrat, jaký session driver použijete. Nejjednodušší je souborový systém a databáze, my z výkonnostních důvodů použili memcached.
  • V databázovém configu se změnilo dost věcí, ale jedna věc je zásadní – musíte vypnout ‘pconnect’ – persistent connection.
  • Z pravidel třídy Form_validation mizí ‘xss_clean’. XSS by se mělo aplikovat na output, takže ho z validace odstranili.
  • Položka ‘base_url’ v configu nemůže být prázdná. Pokud ji nemůžete nastavit v configu, můžete ji změnit i později v kódu.

5 užitečných vývojářských rozšíření pro Chrome

Ha, nabízím přehled rozšíření, které používám při vývoji webu. Jsou to prakticky jediná rozšíření co používám, kromě AdBlocku. Snažím se jich mít co nejméně.

1. Facebook Pixel Helper

Rozšíření sloužící ke kontrole Facebook pixelů na webu. Můžete pomocí něj okamžitě zkontrolovat, zda vám fungují sledovací pixely a odesílání událostí a v případě že ne, poradí vám, co opravit.

2. Google Tag Assistant

O něco méně povedená obdoba Facebookového rozšíření, tentokrát pro skripty od Googlu (Analytics, Tag Manager, …). Ovládaní by mohlo být trochu lepší, občas je dost velký problém přepnout se mezi. Před použitím je nutno jej povolit na konkrétní stránce a pak provést reload.

3. Page Ruler

Pravítko. Používám ho občas k měření vzdálenosti, ale hlavně ke kontrole, že jsou elementy zarovnané na pixel přesně tak, jak chci.

4. Page load time

Skvělé rozšíření, které jednoduše zobrazí na svém tlačítko dobu načítání stránky. I když mám při vývoji zapnutou Tracy, ta měří pouze dobu exekuce skriptu, toto rozšíření měří celkovou dobu načítání stránky.

5. ColorZilla

Kapátko pro rychlé zjištění použité barvy na webu. Rychlejší než zkoumat element přes development tools a hledat jeho barvu / barvu pozadí.

 

Založil jsem nový eshop – Bastlíme

Založil jsem nový minieshop, nebo jak my v ExitShopu říkáme, jednostránkový eshop, tentokrát zaměřený na Arduino a příslušenství – nese jméno Bastlíme.eu.

Pravidelní čtenáři mého blogu si jistě pamatují článek Bluetooth autíčko s Arduinem a jelikož mi zbyla kopa součástek, tak jsem dokoupil další a založil si tento malý eshop. Prodejní kanály jsem omezil čistě na Heuréku a Zboží.

Beru to jako takový test našich jednostránkových eshopů ExitShop, když svůj hlavní eshop TrueHipster jsem založil jako klasický typ. Ten už nějaké objednávky velmi pomaličku sbírá, uvidíme co bude dělat Bastlíme :)

Skoro hipsterská móda TrueHipster

Zatím jde pouze o trička, která stříkám skrz ručně vyřezanou šablonu nebo maluju. Eshop zatím jen s pár produkty sídlí na adrese truehipster.cz. Po letech programování eshopů si chci vyzkoušet, jaké to je jeden takový rozjet a provozovat. Celkem si s tím hraju, s celým procesem od návrhu k výrobě, žehlení (na to mám naštěstí pomocnice), focení až po prezentaci na eshopu.

Přikládám několik obrázků :) Pořád řeším, jestli má vůbec něco takového naději na úspěch.

Líbí se? Mám spoustu nápadů na rozšíření sortimentu TrueHipstera a nemyslím tím jen trička :) Budu rád za jakýkoliv feedback.

Který prohlížeč je nejlepší?

Ani jeden. Posledních pár měsíců jsem zkoušel místo Chrome jak Firefox, tak i Internet Explorer a Operu a neznám vítěze. Tedy Operu diskvalifikuji kvůli neexistujícím záložkám :)

V současné době používám IE 11 a zdá se mi nejrychlejší (na mém notebooku). Ty rozdíly jsou v dnešní době velice malé. Používat se daly všechny. Výsledkem mého experimentu je bordel v záložkách a zapomenutá hesla na různé stránky.

Pokud chcete něco zachovat, dejte to na freehosting

A to nejlépe na wz.cz nebo ic.cz. Potvrdilo se mi to už několikrát. Vaše hardisky havarují, nedůležité věci mažete, zapomínáte…ale freehostingoví giganti zůstávají. A s nimi i vaše trapné stránky z roku 2006-2007. To mi bylo 14-15 let a dělal jsem takové krásné kousky:

Fascinuje mě to období tvorby takových stránek. Člověk vytvořil web během chvilky – nejčastěji o kapele, hercovi, mobilu atd…, naplnil ho debilními texty a lidé tam skutečně chodili. Jen tak. A pak přišli MFA – nádhera. A pak krize a Facebook :)

Celkově jsem dnes (ok, tohle píšu 1.8. do fronty :D) zavzpomínal na moje staré weby. Na začátky na Webtrhu, kdy pro mě byl nejvyšší cíl přivydělat si 300 Kč měsíčně tvorbou úchylných bannerů a později psaním textů. To bylo ovšem už jiné kafe ty výdělky, pro mladého kluka. Najednou jsem si mohl kupovat co jsem chtěl, samozřejmě v rámci možností a nespoléhat se jen na kapesné. Také (bylo mi 17?) jsem na Webtrhu remcal skutečně do všeho – účetnictví, design, programování (neuměl jsem ani hovno). Nostalgie.

 

SSL certifikát pro více domén na jedné IP/VPS

Chtěl jsem pro svůj eshop Krutý Vohoz a pak ještě pro Steam Kitty zajistit SSL certifikát. Nakonec jsem si koupil Multi cosi pro tři domény (+tento blog :)) na stránkách SSLS.cz za 419 Kč na rok, bylo to levnější než dva samostatné certifikáty pro dvě domény. Problém byl ale s instalací, jak to vyřešit, když mám jeden VPS s jednou IP. Pomohla mi nápověda na jejich webu, a moje řešení bych vám chtěl já, samozvaný UNIX server expert, ukázat. Celé se to dá nastavit v /etc/apache2/sites-available. Budu nastavovat SSL pro domény skoula.cz, krutyvohoz.cz a steamkitty.com. Na serveru budou ale i nezapezpečené domény s klasickým http://. Nejprve vám ukážu soubor s virtual hostem pro běžnou doménu, bez SSL (tedy http://). Je to easy, doména dogpee.net a nastavený DocumentRoot.

<VirtualHost *:80>
    ServerName dogpee.net
    ServerAlias www.dogpee.net
    DocumentRoot /var/www/dogpee.net
</VirtualHost>

Pak tu máme virtualhost pro doménu, kterou sice chceme zabezpečit SSL certifikátem, ale potřebujeme, aby fungovala i bez něj, tedy pod běžným http://. Doména skoula.cz, přesměrujeme ji na https://skoula.cz.

<VirtualHost *:80>
    ServerName skoula.cz
    ServerAlias www.skoula.cz
    RewriteEngine on
    RewriteRule (.*) https://skoula.cz%{REQUEST_URI}
</VirtualHost>

A teďka musíme vyřešit samotné požadavky na https://. Tady už je ale problém, protože (omlouvám se za polopatismus/nepravdy, ale tak si to představuji), na jedné IP nelze provozovat více SSL domén, protože prohlížeč musí nejprve navázat SSL spojení a až pak pozná, o kterou doménu se jedná. Takže: Vytvoříme si soubor s jedním VirtualHostem, který obhospodařuje všechny domény zabezpečené SSL. Ten už je trochu delší. Důležitá je hlavička, kde specifikujeme IP serveru a port 443 (na rozdíl od klasického 80). Pak uvedeme ServerName a ServerAlias, ve kterém vyjmenujeme všechny domény, které chceme zabezpečit SSL, včetně jejich www. variant. Následně uvedeme cestu k certifikátu, intermediate certifikátu a privátnímu klíči, obsah těchto souborů viz nápověda na odkazu výše. A pak už specifikujeme jednotlivé domény a přesměrováváme požadavky do složek s weby, akorát místo DocumentRoot nastavíme přesměrování pomocí RewriteRule. Takže finta je v tom, že máme jeden VirtualHost pro všechny SSL weby a až v něm přesměrováváme požadavky do složek s weby.

<VirtualHost 1.2.3.4:443>
 ServerName www.skoula.cz
 ServerAlias skoula.cz steamkitty.com www.steamkitty.com krutyvohoz.cz www.krutyvohoz.cz 
 SSLEngine on
 SSLProtocol all
 SSLCertificateFile /cesta/k/server.cer 
 SSLCACertificateFile /cesta/k/intermediate.cer 
 SSLCertificateKeyFile /cesta/k/private.key 

 RewriteEngine on

 RewriteCond %{HTTP_HOST} ^(www\.)?skoula\.cz
 RewriteCond %{REQUEST_URI} !^/var/www/skoula.cz
 RewriteRule ^(.*) /var/www/skoula.cz/$1

 RewriteCond %{HTTP_HOST} ^(www\.)?steamkitty\.com
 RewriteCond %{REQUEST_URI} !^/var/www/steamkitty.com
 RewriteRule ^(.*) /var/www/steamkitty.com/$1

 RewriteCond %{HTTP_HOST} ^(www\.)?krutyvohoz\.cz
 RewriteCond %{REQUEST_URI} !^/var/www/krutyvohoz.cz
 RewriteRule ^(.*) /var/www/krutyvohoz.cz/$1
</VirtualHost>

Chtěl bych ještě dodat, že toto řešení není nejlepší, došel jsem na něj metodou pokus/omyl, ale funguje. Každý soubor s VirtualHostem nezapomeňte aktivovat příkazem:

a2ensite soubor

A po každé změně restartovat Apache. Hezký den.