Nette: handle (signál)

Předpokládejme že máme TODO list ve kterém budeme chtít vybraný úkol nastavit jako splněný.

Na takový úkon je vhodný signál:

Signál v šabloně zavoláme jednoduše:

 

Grunt – task pro automatický release nové verze

Dělám na několika doplňcích pro WordPress. Kámen úrazu je verzování. S vydáním nové verze jsem musel přepisovat verzi ve zdrojovém kódu, vytvořit nový tag v Gitu a tuto změnu commitnout a pushnout. Ale protože jsem lajdák vždy jsem na něco zapoměl…

Při vydání nové verze dělám:

  • nastavit novou verzi ve zdrojových souborech ( Version: 0.0.1 => Version: 0.0.2 )
  • coomitnout tuto změnu
  • vytvořit nový tag ( 0.0.2 )
  • pushnout tyto změny

To jsem dělal ručně do doby než jsem poznal Grunt. Nyní mám tento proces automatizovaný a tuto nudnou opičí práci za mne udělá Grunt.

Pojďme si ukázat jak. Předpokládejme nainstalovaný Grunt (o instalaci Gruntu zase někdy jindy).

Vytvoříme soubor package.json:

Nainstalujeme grunt-version:

Vytvoříme soubor Gruntfile.js:

Příkazem grunt release nastavíme v souboru my-file.php novou verzi uvedenou v package.json:

Version:           0.0.1 se změní na verzi zadanou v souboru package.json

To je solidní základ 🙂 Ale mne to nestačí. Verzi kterou chci vydat musím zapsat do souboru package.json a příliš práce to za mne neudělá…

Dělám různé releasy:

  • patch (1.2.X)
  • minor (1.X.0)
  • major (X.0.0)

Pojďmě si napsat script který bude automaticky zvyšovat verzi v souboru package.json v závislosti na vydávané verzi. Vužijeme modul grunt-update-json

Použijeme tento kód:

To už je lepší. Můžeme použít následující příkaz:

  • grunt release:patch
  • grunt release:minor
  • grunt release:major

K dokonalosti chybí pouze commit, vytvořit tag s novou verzí a push. K tomu využijeme grunt-git

Do souboru package.json přidáme následující kód:

Celý kód nakonec vypadá takto:

 

 

Nette + Texy

Pokud si zájemce o web přeje základní formátování textů, vetšinou nejprve sáhnu po Texy. Nemám rád weby které vypadají jako omalovánky (ano, tomu kdo dá tu práci aby každé písmenko ve slově mělo jinou barvu se to moc líbí ale spoustu návštěvníků to odradí). Texy je jednoduchý nástroj kterým můžete bez odborných znalostí psát HTML kód. Příklad si ukážeme na jednoduchém formuláři, jehož odesláním naformátujeme zadaný text přes Texy.

 

Pojďme si ukázat jak zprovoznit  Nette společně s Texy!

Ukázka je na poslední verzi Nette (2.2.6) a poslední verzi Texy (2.6).

Instalace Nette

Stáhneme Nette sandbox (přes composer):

příkazem se vytvoří složka nette-texy do které se nahraje Nette + sandbox. Document root pro virtualhost nasměrujeme do nette-texy/www/

Instalace Texy

nainstalujeme samozřejmě přes composer :

 

Zprovoznění Texy

Uděláme si pořádek na hřišti. Nahradíme obsah šablony pro titulní stránku: app/templates/Homepage/default.latte:

 Vytvoření formuláře

app/presenters/HomepagePresenter.php:

Máme formulář který při odeslání odešle do šablony (proměnná $text ) zadaný text.

Zapnutí Texy

Nejprve je nutné přidat Texy do neon.config aby o Nette o Texy vědělo:

app/config/config.neon:

 

 

V souboru app/presenters/BasePresenter.php je nutné vytvořit helper, který bude fomárovat text přes Texy.

V nové verzi Nette (>=2.4) se helper (filtr) registruje takto, metodu createTemplate můžete úplně vynechat):

Nejlepší cesta

Kvůli bezpečnosti, doporučuji tento způsob použití, ve kterém filtr vrací Nette\Utils\Html, který nemusíme nonescapovat. Registrujeme filter klasicky v beforeRender:

A pak již pouze v šabloně vypíšeme:

 

Integrace Bitbucket + Pivotal tracker

Zalíbíl se mi verzovací hosting Bitbucket. Oproti GitHubu nabízí neomezené množství privátních repozitářů.

Poohlížím se po trackovacím nástroji a zalíbíl se mi Pivotal tracket který je možné integrovat s Bitbucketem. Jak na to?

 

Pivotal Tracker

  • přejděte do sekce: Profile -> API token

Bitbucket

  • zvolte repozitář který si přejete propojit s Pivotal trackerem
  • Settings -> Integrations -> Hooks
  • Vyberte hook “Pivotal Tracker” a zadejte API token z Pivotal trackeru

Nyní když v commit zprávě uvedete id tiketu z Pivotal trackeru, bude commit a task propojen. V Pivotal trackeru u tasku uvitíte jednotivé commity.

Commit se s taskem propojí identifikátorem: [#123456] kde 123456 je ID Pivotal tasku

Znáte lepší trackovací nástroj, který je zdarma?

Tip liga – ročník 2014/2015

Znáte Tip ligu? Sportovní nadšenci a sázkaři určitě ano. Jedná se o Facebookovou aplikaci, která je v provozu většinou od září do července. Na každý den je vypsán 1 zápas a uživatelé tipují jeho výsledek (výhra domácích, remíza, výhra hostů). Za každý správný tip získá uživatel 1 bod. Podle počtu bodů se vypočítá pořadí. Za nesprávný tip se body nestrhávají.

tip-liga

Bylo to v roce 2012 kdy chtěl ZdendaKoran utrati jeho nechtěné dítě jménem Tip liga (s kým si ho udělal mi nikdy neřekl – asi je to tak lepší 🙂 ).  Již neměl chuť tuto hru dále rozvíjet a proto jsem se jí s radostí zhostil a začal dělat adoptivního otce. V tu dobu jsem začínal koketovat s Nette. Přepsal jsem Tip ligu do Nette + MySQL a začal se učit Facebook API. Uf, byla to fuška ale zvládl jsem to.

Od té doby uplynulo hodně času a Tip liga začínala fungovat bez chyb a se správně zadanými výsledky. Celý proces zadávání nových zápasů + zadávání výsledků jsem si maximálně ulehčil a zautomatizoval. Prakticky nemusím vůbec psát a pouze klikám. Zadávání výsledků mám rovněž v lite verzi a není problém odkliknout správný výsledek přes telefon odkudkoliv. Tím mám solidní přehled o sportovním dění 🙂

Jenomže 30.dubna 2015 ukončí Facebook podporu api v1.0 ve kterém Tip liga fungovala. Spuštění ročníku 2014/2015 jsem naplánoval na 1.9.2014 a nasadil rovnou api v 2.1 které má být funkční do 7.8.2016. Z nového api jsem trochu zmatený. U tipů proto zatím není možné sdílet tipovaný výsledek zápasu na zdi, ani není možné vidět pořadí mezi přáteli. Pokusím se tyto vlastnosti co nejrychleji zapracovat aby Tip liga neztratila žádnou funkčnost a přibývali spokojení hráči.

V ročníku 2014/2015 přeji hráčům hodně správně tipnutých výsledků a co nejlepší možné umístění.

Nette – jak vytvořit REST API – json

Co to je REST

REST neboli Representational state transfer je způsob jak jednoduše číst (GET), editovat (PUT), mazat (DELETE) a vytvářet (POST) obsah na serveru pomocí HTTP volání.

REST je vhodný pro jednotný a snadný přístup ke zdrojům. Na rozdíl od SOAP či XML-RPC je REST orientován datově, nikoli procedurálně. Všechny REST zdroje mají jednoznačný identifikátor (URL)

Jak na to v Nette?

Zapomeňte na nějaké složité generování v šabloně. Dokonce nebudete potřebovat ani funkci json-encode. V Nette uděláte JSON výstup velice jednoduše.

Ukázka vygenerování JSONu:

Důležité je, že response je možné vygenerovat pouze metodou sendResponse které předhodíte response

TIP: pokud budete chtít posílat i kódování, provedete to následujícím způsobem:

 

Odeslání historie linuxových příkazů na email

Linuxovým administrátorům se často stává, že jejich kolega potřebuje pomoct s konfigurací v příkazové řádce. Pokud chcete mít rychlý přehled o tom co se dělo v příkazové řádce, odešlete si její historii do emailu.

#cd /tmp
#vim hist.sh

do kterého přidejte následující kód:
#!/bin/bash
NOW=$(date)
mail -s “Log $HOSTNAME @ $NOW” balusreekanth@gmail.com <$HOME/.bash_history

vim ukončíte zadáním příkazu: wq a nastavte oprávnění pro spuštění:
#chmod -x hist.sh

Nyní je script připraven a můžete jej spustit:
#./hist.sh

 

Jaký byl Brněnský Barcamp 2014?

Poslední květnovou sobotu se v Brně konal Barcamp. Brno mám trochu z ruky ale po povedeném Plzeňském Barcampu jsem tuto výzvu s radostí přijal.

Na akci bylo přihlášeno 1800 lidí! Kapacitu přednáškových místností jsem přibližně spočítal na 1000 míst. Vejdeme se?
@eshopkonzultant vytáhl auto. V Písku jsme nabrali Milana a hurá do Brna. Oblíbená D1 byla průjezdná bez kolon a my vpohodě stihli warmup párty.

Brněnský dobrodruh @zburival domluvil warmup v příjemné restauraci U Richarda kde točí vlastní pivo Richard. Šmakózní záležitost. V průběhu večera dorazili Pekaři z Plzně a zahřátí na sobotu bylo odstartováno.

Sobota začala nejlépe jak mohla – snídaní u švédských stolů 🙂 Taky proto jsme do areálu FIT dorazili až v 9:05. U vchodu nás čekala dlouhá fronta.
BCBRNO2014

Ve frontě jsme se naštěstí rychle posouvali. Ve finále fronty stačilo uvést své jméno, email a twitter. Kdyby u vstupu pořadatelé hledali a odšrtávali jednotlivé návštěvníky, byli bychom ve frontě ještě teď. Palec na horu.

Oběd
Oběd byla jediná piha na kráse celého víkendu.
Jelikož u 3 opic bylo plno a 1 servírka na celou hospodu, zkusili jsme štěstí jinde. Nevím zda to bylo tím že nás vedl @eshopkonzultant ale došli jsme do hospody jejíž jméno znělo hodně SEO magicky: H3
Do hospody jsme dorazili jako jedni z prvních, spokojeně si objednali a těšili se na nové chuťové požitky. Zanedlouho se hospoda celá zaplnila. Mnoho návštěvníků nevydrželo a oběd vzdalo když se dozvěděli, že jídlo dostanou nejdříve za 2 hodiny. My natěšeně očekávali jídlo. Po hodině čekání začali někteří hosté dostávat jídlo. Co to je?! Oni přišli až hodně dlouho po nás a až mají jídlo? Asi dostali polévku, uklidňoval jsem kolegu. Za chvíli musí přinést to naše jídlo. Pomyslná sklenka přetekla když všichni okolo jedli. To teda ne! Jdeme za paní provozní. Přišli jsme jako první a ještě jsme nebyli obslouženi! Paní vrchní nám sdělila že nejprve sepsala všechny objednávky, které pak předala do kuchyně a tam se začaly náhodně připravovat. WTF? To teda ne! Ještě že nejsme sprostý, jinak bychom ji poslali do prdele ☺

Díky obědu jsem nestihl polštářovou válku ani první přednášku po obědě.Škoda.

Všechny přednášky které jsem navštívil měly koule. Nejvíce se mi líbil Nodě.js a GA pro startup. Daly mi velkou inspiraci a několik nápadů.

After party
After party sponzorovala firma Kentico a stála za to! Odehrávala se v perfektních prostorech a cattering byl dokonalý. Dokonce byly i hamburgery, které jsme k obědu nedostali. Příště snad jen na exkurzi do Kentica ☺

2. WordPress konference – Hluboká nad Vltavou

Druhá WordPress konference je za námi. Povedla se!

Celý program probíhal v hotelu Záviš z Falkenštejna kde o celou akci(přibližně 80 lidí) bylo perfektně postaráno. Přednášky vycházely z konceptu Komunitní výzvy („Podpoř ostatní tím, co umíš“) a byly bez nároku na honorář. Celá akce byla štědře sponzorována firmou WEDOS s možností prohlídky datacentra.

Celá konference navíc měla i sociálně-lidský rozměr díky tweetu od @jakubloudat: „Kdo mi sežral kuře“.

Přednášky na sebe příjemně navazovaly a měly koule. U žádné jsem se nenudil.

Pro ty které se nemohli zúčastnit přidávám záznam.

Radek Kučera – Základní zabezpečení WordPressu – video
Jakub Klapka – Jak zrychlit WP pomocí cachovacích pluginů – video
David Biňovec – Principy cachování ve WordPressu – video
Tomáš Andrlík – WordPress a členské sekce – video
Daniel Dubravec (Wedos) – Nejčastější problémy s WordPress, které řeší zákaznická podpora – video
Vladislav Musílek – Tvorba pluginů – video
Petr Bechyně – Google analytics pro vývojáře a designéry – video
Zdeněk Dvořák –  Jak získávat a udržovat odkazy s WordPressem – video
Michal Kubíček – Jak proměnit WordPress ve stroj na peníze – video

Mne osobně nejvíce potěšil Vladislav Musílek s tvorbou pluginů. Petr Bechyně jako vždy nezklamal.

Největší překvapení pro mne byla diskuse u večeře ( řízek jsem dostal 😀 ). Několik spolusedících vůbec neznalo ceny WEDOSu a divilo se jak nízké ceny má.

Děkuji naswp.cz a WEDOS za uspořádání této skvělé akce a budu se těšit příště.

Nejlevnější webhosting

Jak nainstalovat WINDOWS 7 na základní desku s UEFI BIOSem?

Důležité: je notné instalovat WINDOWS 7 se SERVICPACK1!

UEFI BIOS obsahuje SECURE BOOT, který na který jsou připravené WINDOWS 8 a bez problémů si sním poradí. SECURE BOOT je funkce, která hlídá zda jsou při bootování načteny prověřené a digitálně podepsané soubory OS.
S instalací WINDOWS 7 je problém při bootování nainstalovaného OS.

Při instalaci W7 je potřeba využít následující fintu

  • Advanced – Boot Configurations – Fast Boot : [Disabled]
  • Advanced – Boot Configurations – CSM : [Enabled]
  • Security – Secure Boot Configuration – Secure Boot Option : [Disabled]

Po uložení a rebootu již nic nebrání úspěšné instalaci WINDOWS 7