webdesign / development + awesome
archivovaný archívny archív
Čítam si zápisky zo SXSW a Silicon Valley a hovorím si džízs, dúfam, že sa to dá aj inak. Že toto nie je to, o čom všetci snívate. Že toto nie je to, o čom sníva chlapec, čo spravil "Dostaňte ma do Silicon Valley" stránku.
"Ak startup nema v popise medzi prvymi slovami mobile, nikoho nezaujima. Ak vsak ma social, vsetkych odpudzuje"
Hňeď prvá veta a už je to na facku.
Predpokladám, že pár mesiacov dozadu nikoho nezaujímal, ak tam nemal 'social'. A to aktuálne 'mobile' bude pozajtra rovnako pasé. Fráza nahradená frázou a takto donekonečna. Žiadna nemá váhu. Ak sú všetky zameniteľné a za týždeň zamenené budú, sú zbytočné.
"Vas projekt musi mat potencial byt za par rokov predatelny za minimalne 10-tky milionov dolarov, ale najlepsie za 100m. To su tu startupy." ... "Ak nemate aspon 20% rast mesacne, ste nezaujimavi."
Nikoho vlastne nezaujíma čo robíte, ak mu zarobíte. Veľa.
"Gamification je povazovany za cervenu zastavu. Pomaly sa potlaca gamification a nahradza sa geoknowledge informaciami. Viral, social, web je out."
A čo je in? Wait, nič mi nehovor.
Všetky tieto buzzwords sú nahraditeľné a nahradené budú. Nemajú žiaden reálny dopad na produkt, nehovoria nič o jeho kvalite a teda by nikoho nemali zaujímať. "Aká návnada funguje na investorov tento týždeň?" To je celé..
Zbúchal som stránku: yablko.sk
Za posledný rok a pol som v rámci seriálov Nauč sa jQuery, Nauč sa CodeIgniter a
Yablkov TurboTip nahral viac ako 60 videocastov. Plus nejaké na tejto stránke, prístupné tiež cez YouTube. Dokopy to dáva približne veľa hodín materiálu.
Za ten čas zopár ľudí prejavilo záujem podporiť ma.
Videá robím, pretože ma to baví. Pretože z toho mám dobrý pocit. Pocit, že pomáham. Že môj web-dizajnérsko-developerský skill pochybnej hodnoty používam k niečomu menej pochybnému, ako je hrabanie peniazov. Avšak človek sa predsa len potrebuje najesť. Čas od času. A je pravda, že zbúchať také video trvá niekoľkonásobne dlhšie, ako video samotné. A veľa hodín × niekoľkonásobne viac hodín = uff času.
Takže pre každého, kto mi chce pomôcť konečne našporiť na nový sáčik cestovín: yablko.sk - paypal donate button, číslo účtu alebo odkaz na amazon whishlist :)
Ak to teda nájdete vo svojom srdci (a keď hovorím srdce, myslím peňaženku), hoďte po mne zopár grajciarov a ja možno vaším smerom vypľujem ešte zopár videí:)
Vďaka:)
Update 1:
Bez vás by som to nedokázal.
A teraz poďme ďalej, treska a 3 rožky!
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_INCREMENT
ovací).
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é.
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.
Hovoríte, že máte príliš veľa voľného času? Že RSSká pri sraní už nie sú to pravé? Že by sa zišla nejaká poriadna závislosť? Tak to ste na správnom mieste. Nechajte si poradiť od odborníkov na zabíjanie času.
Aby som nespomínal to, čo už všetci poznáme (Angry Birds), pozrieme sa na pár menej známych tipov.
Ešte dobre, že táto hra nevyšla v ére arkádových automatov lebo by zbavila svet všetkých drobných. Čo by bolo vlastne fajn, aj tak sú mince otravné. Anyway. Základom je otrepaná myšlienka zbierať krabice, z čoho si robí srandu už samotný názov. Čo robí tento koncept čerstvým, je náhodná zbraň v každej zobranej krabici. Vďaka tomu odpadá potreba sledovať množstvo nábojov a rozýšlanie nad tým ktorú zbraň použiť v danej situácii. Musíte sa brániť stále niečím iným proti zástupom nepriateľov, ktorí sa donekonečna spawnujú z hora.
Ako správna arkádová plošinovka, je aj SCB ťažké jak sviňa a ide hlavne o najvyšší počet bodov. Kráča však s modernými trendami a rôzne úlohy a počty nazbieraných krabíc odomykajú ďalšie levely, postavy a herné módy. Najzávisláckejší komponent je jednoznačne systém používania zbraní a solídne ovládanie. To poskytuje kopec priestoru na zdokonaľovanie sa. Dáte viac ako 101? ;)
Stiahnete z App store (1.60€) alebo dokonca zadarmo na PC a Mac
Sťahuj:
:: sublimetext.com/2 - stabilná verzia
:: sublimetext.com/dev - dev build
Čí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.
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.
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.