Ako na responsive design

napísal , 10 Apr 2012

Responsive design je v poslednej dobe je tak omieľaný trend, že o ňom hovorí pomaly aj moja babka. V zásade ide o fajn koncept. Namiesto kódenia a udržiavania niekoľkých samostatných verzií stránky (normálnej desktopovej verzie a mobilnej verzie) sa spraví jedna s pár dodatočnými informáciami, vďaka ktorým sa stránka prispôsobí akémukoľvek (rozumnému) rozlíšeniu. Od mobilu až po FullHD display.

Otvorte si demo, pohrajte sa so šírkou prehliadača a hneď pochopíte.

Skôr, ako prejdem ku konkrétnemu kódu, by bolo vhodné povedať, prečo uprednostniť responsive design pred starším trendom mobilných verzií.

Nuž. V ideálnom prípade stačí responsive design vytvoriť pridaním pár riadkov CSSka, v horšom aj pár riadkami JavaScriptu (tj. robota na pár hodín). Mobilná verzia je proste iná verzia generovaná serverom. Čiže má samostatné HTML, CSS a zrejme aj JavaScripty. Ak chcete niečo pridať, musíte prepisovať obe verzie.

Ignorantské INSERTy

napísal , 29 Feb 2012

INSERT? Fuck that!
3 malé tipy, s ktorými si ušetríte pár riadkov kódu a budete takí ťažkí frajeri, že sa už nezbavíte ženských (chlapov, v prípade, že to číta nejaká programátorka (do they even exist?:)).

Predstavte si, že vaša životná púť dospeje do situácie, kedy chcete niečo zapísať do MySQL tabuľky, ale nechcete sa zapodievať kontrolami, či daný záznam už existuje. Čo s tým..

1) Chcem vložiť riadok do tabuľky. Ak už existuje, nič sa nebude zapisovať.

INSERT IGNORE INTO vajcia (id, nazov, kaliber)
VALUES(NULL, 'Vajčisko', 'masívny')

Úplne normálny INSERT s tým rozdielom, že keď ak by sa bili primárne kľúče alebo unikátne kľúče (čiže záznam už existuje), query sa odignoruje. Vloženie sa odignoruje alebo riadok sa uloží neočakávaným spôsobom aj ak bude obsahovať iné chyby, na čo si treba dávať pozor.

2) Chcem vložiť riadok do tabuľky. Ak už existuje, chcem update-núť jeho údaje

INSERT INTO checkins (id, id_user, id_venue, count, last_checkin)
VALUES (NULL, 230, 6434, 1, NOW())
ON DUPLICATE KEY UPDATE count = count + 1, last_checkin = NOW()

Príklad ukazuje niečo ako "check in" na 4square. Pri prvom raze sa vloží záznam, že som na nejakom mieste vôbec bol, pri ostatných razoch sa zvýši počítadlo návštev a čas posledného check-in-u sa aktualizuje. Je to v podstate INSERT a UPDATE spojený do jednej query.

3) To isté čo druhý prípad, s malým rozdielom
Ak by som vkladal nejaký dlhý text, musel by som ho v predchádzajúcom spôsobe zopakovať 2x (raz v INSERTE a raz v UPDATE časti). Pri extrémne dlhých textoch by nám to teoreticky mohlo vadiť. Situáciu zachráni REPLACE.

REPLACE INTO poznamka (id, id_projekt, datum, text)
VALUES (NULL, 42, '2012-12-12', 'Všetko som vybavil, môžme spustiť tú apokalypsu... [1MB dalsich kecov]')

Je tu však jedna zradafeature. Ak záznam existuje, vymaže sa a vloží sa nový, čiže sa zmení aj primárny kľúč (ak je AUTO_INCREMENTovací).

Bonus
Prvý prípad s INSERT IGNORE sa dá riešiť trocha lepším, ale divnejším spôsobom, použitím ON DUPLICATE KEY UPDATE, takto:

INSERT INTO vajcia (id, nazov, kaliber)
VALUES(NULL, 'Vajčisko', 'masívny')
ON DUPLICATE KEY UPDATE id = id

Výhoda je, že sa neignorujú žiadne chyby, iba duplicitné kľúče. Nevýhodou je trocha mätúca syntax.

Teraz si už len treba dávať pozor na tie ženské.

Bookmark party!

napísal , 23 Feb 2012

Zopár webových tools, čo mám v bookmarkoch:

Snippety
html-ipsum.com - predvyplnené HTML listy a formy a tak
wp-snippets.com - WordPress snippets
baconipsum.com - BACON!

Text
google.com/webfonts#ChoosePlace:select - Google Web Fonts
fontsquirrel.com/fontface/generator - @font-face generátor
network-science.de/ascii - ASCII generátor
copypastecharacter.com - keď potrebuješ spešl znak

CSS
matthewlein.com/ceaser - pomoc s CSS transitions
border-radius.com
prefixr.com - doplní vendor prefixes ( -moz- -webkit- atď. )
css3please.com - niečo podobné, kind of
necolas.github.com/normalize.css - dobrý štartovný bod pre CSS

Grafika a obrázky
0to255.com - odtiene farieb, pre border a hover a tak
subtlepatterns - patterny pre background
placehold.it - image placeholders
spriteme.org - vytvorí sprite z obrázkov.. hádam
ajaxload.info - generátor AJAX loading gifov

Javascript
picnet.com.au/picnet_table_filter.html - jQuery plugin na filtrovanie HTML tabuliek
fgnass.github.com/spin.js - AJAX loading "obrázky"
rickharrison.github.com/validate.js - form validácia
github.com/bartaz/impress.js - framework na prezentácie

Pieskoviská
jsbin.com
jsfiddle.net
tinkerbin.com
cssdesk.com
css3.mikeplate.com

Feature Detection & Polyfills
modernizr.com - skript zistí, čo prehliadač podporuje
html5please.com - navrhne čo použiť, ak prehliadač danú feature nepodporuje
github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills

Ostatné
dochub.io - instantná dokumentácia pre CSS, jQuery a tak vôbec
chopapp.com - keď chcete zdieľať kód
html5boilerplate.com - v kóde sa dá nájsť kopa fajn trikov
initializr.com - nastav čo chceš od boilerplate
htmlemailboilerplate.com

Niektoré používam často, niektoré občas a niektoré mám odložené na horšie časy. Možno niekomu pomôžu.

Sublime Text 2

napísal , 25 Jan 2012

Sublime Text 2 je lepší ako tvoj editor.

Sťahuj:
:: sublimetext.com/2 - stabilná verzia
:: sublimetext.com/dev - dev build

Je šikovný a nelezie do cesty

  • rýchly, svižný, krásne čistý - ako "jednoduchý" textový editor
  • napriek tomu zvláda IDE fičúry
  • a ako dobre pri tom vyzerá
  • všetko reaguje okamžite, nič netreba zbytočne potvrdzovať [ pozri video ]
  • viac okien v jednom okne, minimapa súboru, full-screen nothing but text mode...

CTRL/CMD + P

  • "go to anything"
  • extrémne rýchle prepínanie / otváranie súborov
  • súbory vyhľadáva naprieč celým projektom - napíšem "Controllers php" a dostanem zoznam všetkých php súborov v Controllers adresári a je jedno, ako hlboko je zahrabaný
  • vyhľadávanie je fuzzy, takže stačí keď sa trafím približne
  • zobrazenie všetkých metód / funkcií v súbore - CTRL + R / CTRL + P + '@'
  • choď na riadok / goto line - CTRL + G / CTRL + P + ':'

CTRL/CMD + SHIFT + P

  • to isté ako CTRL+P, ale pre samotnú aplikáciu
  • instantný prístup ku všetkým položkám v menu aplikácie
  • sweeeeet [ pozri druhé video ]

Čítaj celý článok pre nálož tipov a trikov a linkov a odkazov a cheat sheetov a packagov a druhé video a druhý príchod krista a tak.

Advanced PHP Trickery

napísal , 22 Jan 2012

Viete čo sú v PHPčku anonymné funkcie, closures, ako fungujú statické premenné vo funkciách a načo je register_shutdown_function()? Ak nie, ste na správnom mieste, za 2 minúty to budete vedieť a budú z vás neporaziteľní mágovia PHP. Ak to už viete, môžte sa spokojne potľapkať po chrbte, znamená to, že ste asi s PHP strávili viac času, ako by bolo zdravé :)

Poďme si tieto 4 veci vysvetliť na krátkom príklade "zo života". Predstavte si, že máme triedu na odosielanie SMSiek. Ale predtým než začneme posielať SMSky, sa treba prostredníctvom triedy pripojiť k serveru a po doposielaní všetkých SMS sa treba odhlásiť.

My sa však nechceme zaoberať takými blbinami ako pripájanie a odpájanie. Cheme mať len globálnu funkciu send_sms(). Na to použijeme celkom elegantné riešenie, v ktorom budú obsiahnuté všetky spomínané advanced koncepty.

Statické premenné vo funkciách

function send_sms($number, $text)
{
	static $connection = false;

	if (!$connection)
	{
		require_once('extensions/SMS/connect.php');
		$connection = new SMSConnect();
		if (!$connection->create("login","heslo")) return false;

Statická premenná vo funkcii si zachováva hodnotu v rámci všetkých volaní danej funkcie. Pri prvom spustení bude obsahovať hodnotu false. Podmienka nižšie sa teda vykoná, do premennej $connection strčíme SMSkovú triedu a pripojíme sa k serveru. Pri ďalšom spustení funkcie bude v premennej SMSková trieda a celý tento blok "if" sa preskočí.

V OOP sa zvyknú používať statické premenné vo vnútri tried, každopádne je dobré vedieť, že sa dajú použiť aj vo vnútri funkcií. V manuále nájdete ďalšie príklady využitia.

		$callback = function() use($connection)
		{
			$connection->Logout();
		};

		register_shutdown_function($callback);

Na tomto čudnom kúsku sa nachádzajú zvyšné 3 koncepty. V skratke docielime, že keď dobehne PHP skript, zavolá sa odhlasovacia metóda SMSkovej triedy.

Klávesové skratky pre švárnych junákov

napísal , 17 Jan 2012

Ak ste ako ja, neustále prepínate medzi slovenskou a anglickou klávesnicou, pretože keď sa tvárite, že programujete, tak ste anglický a inak ste slováčisko, pretože "dž" a "ä" a tieto veci. Ak ste ako 81403, programujete na slovenskej, pretože ste divní. Tieto skratky môžu pomôcť:

alt + , <
alt + . >
alt + f [
alt + g ]
alt + b {
alt + n }
alt + p '
alt + 3 ^
alt + q \
alt + w |
alt + e
alt + v @
alt + ô $
alt + - *
Fn + p *
alt + 1 ~
"ô" je to napravo od "L"
"-" je to naľavo od pravého shiftu
"fn + p" nemusí fungovať všade

Ak nefungujú, skúsiť pravý alt :) Alebo ctrl + ľavý alt.
Pretože pravý alt je ctrl + ľavý alt.

Pozn. 81403: situácia je taká, že na starých klávesniciach boli všetky tieto znaky vypísané (okrem ' < > a *), ale v dnešnej dobe by toto mohlo byt aj relatívne užitočné, lebo napríklad ja nemám na klávesnici napísané žiadne ALTové kombinácie... so yeah.

Takže sa učte a dajte vedieť ďalším súcim devám.

Ako vznikalo " Nauč sa písať "

napísal , 13 Jan 2012

Nauč sa písať mal byť pôvodne projekt o niečo väčších rozmerov a plánoval som spolu s jeho uvedením začať sériu článkov, podrobne popisujúcich jeho tvorbu. Chcel som začať prvotnou myšlienkou a skončiť podrobným tutoriálom pre každú z použitých technológií. Medzitým by bola rozobraná "analýza" a "návrh" a videli by sme screenshoty vyvíjajúceho sa dizajnu s okomentovaním každej zmeny a tak vôbec. Prvý článok som písal už počas tvorby stránky, potom som sa na pár mesiacov zasekol, takmer som na celý "projekt" zabudol a neskôr som ho v mierne okresanej verzii predsa len spustil. Články sa mi už samozrejme písať nechcelo, tu je ale ten prvý, v neupravenej podobe. Možno si v ňom niečo nájdete...