Prskavčí blog

Jen další blog o všem možné, teď od Prskavců.

Angular Meetup v Praze

AngularJS Meetup proběhl v Praze

Dne 4.5.2012 16-21h proběhl meetup přiznivců AngularJS v Hub Praha na Smíchově. Po New Yorku a Mountain View byla Praha doufám třetí na světě kde se něco takového konalo. Angular tým Misko Hevery, Igor Minar, Vojta Jína nám dělali podporu a to Vojta dokonce osobně v Praze. Přes hangout jsme pozdravili i zbytek týmu.

Pár fotek z mobilu z akce je k dispozici.

Celá akce byla postavená na dotazech a společné práci nad vlastními projekty nebo nad ukázkovou aplikací angular-phonecat. K dipozici byl bar s občerstvením a celá doba uběhla velmi rychle. S probíraných věcí mi asi nejvíce utkvěli informace o dirtycheckingu co nám Vojta vyložil.

Každopádně celá akce byla super a doufám, že ji zoopakujeme někdy brzo znovu a nemusíme se zaměřovat jen na AngularJS, ale na programování v Javascriptu obecně.

Napište do komentářů kam by jste chtěli, aby se meetupy ubírali.

AngularJS v Praze

AngularJS je MVC javascriptový framework, opensource, podporovaný firmou Google. Jeden z hlavních vývojářů je Vojta Jína, který v dubnu/květnu bude v Praze a potřebujeme zjistit zda by byl zájem o něco více než jenom přednášku co bude v rámci.

2.5. Vojta Jina - Google Mountain View USA. Introduction to Angular. Vojta is a developer in Google actively developing a Javascript architecture Angular. eClubu

4.5. hacking party sponzored by Google - meetup

Díky všem za vyplnění a bude vás informovat, sledujte @abtris a @vojtajina na twitteru a dozvíte se vše.

Jak snadno pracovat s CSS sprites

CSS spirty představují způsob, jak snížit počet HTTP požadavků, které klient vyšle k získání prvků obsažených na stránce. Obrázky se sloučí do jednoho většího a umístí se na určených X,Y souřadnicích. Pak pomocí CSS atributu background-position můžeme nastavit vzniklý obrázek na pozadí různým elementům stránky a pomocí dalších CSS vlastností umístíme pozadí tak, aby požadovaný jednotlivý obrázek padl do viditelné oblasti elementu na stránce.

Poslouchal jsem podcast s Vaškem Vančurou, kde popisuje svoji práci s LESS a sprites pomocí software TexturePacker.

Zkoušel jsem Vaška přemluvit, aby něco napsal:

@vancura Me se to libilo, taky jsem si zavzpominal. Ale o tom jak pouzivas LESS a sprites nechces o tom neco napsat s nejakym prikladem?
@abtris Kdyby byl cas…

Ale nemá čas, tak jsem se rozhodl to udělat sám.

Zvolil jsem jednoduchou ukázku, stáhnul jsem sadu icon a potom jsem zvolit v Texturepackeru data format css a přidal jsem adresář s iconami. Program automaticky vytvoří pomocí publish sprite.png a sprite.css.

Výsledek můžete vidět zde:

a css kód:

(sprite.css) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
/* ----------------------------------------------------
   created with http://www.texturepacker.com 
   ----------------------------------------------------
   $TexturePacker:SmartUpdate:83a9321cb66d0d62791f1fdda5367522$
   ----------------------------------------------------

   usage: <span class="{-spritename-} sprite"></span>

   replace {-spritename-} with the sprite you like to use

*/

.sprite {display:inline-block; overflow:hidden; background-repeat: no-repeat;background-image:url(sprite.png);}

.accepted_48 {width:48px; height:48px; background-position: -52px -752px}
.add_16 {width:16px; height:16px; background-position: -38px -1002px}
.add_48 {width:48px; height:48px; background-position: -52px -702px}
.app_48 {width:48px; height:48px; background-position: -52px -652px}
.arrow_down_48 {width:48px; height:48px; background-position: -52px -602px}
.arrow_down_green_48 {width:48px; height:48px; background-position: -52px -552px}
.arrow_left_48 {width:48px; height:48px; background-position: -2px -952px}
.arrow_left_green_48 {width:48px; height:48px; background-position: -2px -902px}
.arrow_right_48 {width:48px; height:48px; background-position: -2px -852px}
.arrow_right_green_48 {width:48px; height:48px; background-position: -2px -802px}
.arrow_up_48 {width:48px; height:48px; background-position: -2px -752px}
.arrow_up_green_48 {width:48px; height:48px; background-position: -2px -702px}
.beer_48 {width:48px; height:48px; background-position: -2px -652px}
.blinklist_48 {width:48px; height:48px; background-position: -2px -602px}
.blue_speech_bubble_48 {width:48px; height:48px; background-position: -2px -552px}
.book_48 {width:48px; height:48px; background-position: -452px -502px}
.box_48 {width:48px; height:48px; background-position: -402px -502px}
.box_download_48 {width:48px; height:48px; background-position: -352px -502px}
.box_upload_48 {width:48px; height:48px; background-position: -302px -502px}
.camera_48 {width:48px; height:48px; background-position: -252px -502px}
.camera_add_48 {width:48px; height:48px; background-position: -202px -502px}
.camera_delete_48 {width:48px; height:48px; background-position: -152px -502px}
.camera_noflash_48 {width:48px; height:48px; background-position: -102px -502px}
.camera_noflash_add_48 {width:48px; height:48px; background-position: -52px -502px}
.camera_noflash_delete_48 {width:48px; height:48px; background-position: -2px -502px}
.camera_noflash_warning_48 {width:48px; height:48px; background-position: -452px -452px}
.camera_warning_48 {width:48px; height:48px; background-position: -402px -452px}
.cancel_16 {width:16px; height:16px; background-position: -20px -1002px}
.cancel_48 {width:48px; height:48px; background-position: -352px -452px}
.cd_48 {width:48px; height:48px; background-position: -302px -452px}
.circle_blue {width:48px; height:48px; background-position: -252px -452px}
.circle_green {width:48px; height:48px; background-position: -202px -452px}
.circle_orange {width:48px; height:48px; background-position: -152px -452px}
.circle_red {width:48px; height:48px; background-position: -102px -452px}
.clock_48 {width:48px; height:48px; background-position: -52px -452px}
.coffee_48 {width:48px; height:48px; background-position: -2px -452px}
.coffee_mug {width:48px; height:48px; background-position: -452px -402px}
.comment_48 {width:48px; height:48px; background-position: -402px -402px}
.comment_add_48 {width:48px; height:48px; background-position: -352px -402px}
.comment_remove_48 {width:48px; height:48px; background-position: -302px -402px}
.comment_warning_48 {width:48px; height:48px; background-position: -252px -402px}
.computer_48 {width:48px; height:48px; background-position: -202px -402px}
.creditcard_american_express {width:48px; height:48px; background-position: -152px -402px}
.creditcard_cirrus {width:48px; height:48px; background-position: -102px -402px}
.creditcard_mastercard {width:48px; height:48px; background-position: -52px -402px}
.creditcard_paypal {width:48px; height:48px; background-position: -2px -402px}
.creditcard_solo {width:48px; height:48px; background-position: -452px -352px}
.creditcard_switch {width:48px; height:48px; background-position: -402px -352px}
.creditcard_visa {width:48px; height:48px; background-position: -352px -352px}
.cross_48 {width:48px; height:48px; background-position: -302px -352px}
.database_48 {width:48px; height:48px; background-position: -252px -352px}
.database_add_48 {width:48px; height:48px; background-position: -202px -352px}
.database_remove_48 {width:48px; height:48px; background-position: -152px -352px}
.database_warning_48 {width:48px; height:48px; background-position: -102px -352px}
.delicious_48 {width:48px; height:48px; background-position: -52px -352px}
.designfloat_48 {width:48px; height:48px; background-position: -2px -352px}
.digg_48 {width:48px; height:48px; background-position: -452px -302px}
.feedburner_48 {width:48px; height:48px; background-position: -402px -302px}
.flickr_48 {width:48px; height:48px; background-position: -352px -302px}
.floppy_disk_48 {width:48px; height:48px; background-position: -302px -302px}
.folder_48 {width:48px; height:48px; background-position: -252px -302px}
.folder_add_48 {width:48px; height:48px; background-position: -202px -302px}
.folder_delete_48 {width:48px; height:48px; background-position: -152px -302px}
.folder_warning_48 {width:48px; height:48px; background-position: -102px -302px}
.furl_48 {width:48px; height:48px; background-position: -52px -302px}
.globe_48 {width:48px; height:48px; background-position: -2px -302px}
.google_48 {width:48px; height:48px; background-position: -452px -252px}
.heart_48 {width:48px; height:48px; background-position: -402px -252px}
.home_48 {width:48px; height:48px; background-position: -352px -252px}
.image_48 {width:48px; height:48px; background-position: -302px -252px}
.image_add_48 {width:48px; height:48px; background-position: -252px -252px}
.image_delete_48 {width:48px; height:48px; background-position: -202px -252px}
.image_warning_48 {width:48px; height:48px; background-position: -152px -252px}
.lightbulb_48 {width:48px; height:48px; background-position: -102px -252px}
.lock_48 {width:48px; height:48px; background-position: -52px -252px}
.lock_open_48 {width:48px; height:48px; background-position: -2px -252px}
.mail_48 {width:48px; height:48px; background-position: -452px -202px}
.mail_add_48 {width:48px; height:48px; background-position: -402px -202px}
.mail_delete_48 {width:48px; height:48px; background-position: -352px -202px}
.mail_forward_48 {width:48px; height:48px; background-position: -302px -202px}
.mail_reply_48 {width:48px; height:48px; background-position: -252px -202px}
.mail_spam_48 {width:48px; height:48px; background-position: -202px -202px}
.mail_write_48 {width:48px; height:48px; background-position: -152px -202px}
.mixx_48 {width:48px; height:48px; background-position: -102px -202px}
.mouse_48 {width:48px; height:48px; background-position: -52px -202px}
.navigate_48 {width:48px; height:48px; background-position: -2px -202px}
.newspaper_48 {width:48px; height:48px; background-position: -452px -152px}
.paper&pencil_48 {width:48px; height:48px; background-position: -402px -152px}
.paper_48 {width:48px; height:48px; background-position: -352px -152px}
.paper_content_48 {width:48px; height:48px; background-position: -302px -152px}
.paper_content_chart_48 {width:48px; height:48px; background-position: -252px -152px}
.paper_content_pencil_48 {width:48px; height:48px; background-position: -202px -152px}
.pencil_48 {width:48px; height:48px; background-position: -152px -152px}
.pie_chart_48 {width:48px; height:48px; background-position: -102px -152px}
.printer_48 {width:48px; height:48px; background-position: -52px -152px}
.questionmark_48 {width:48px; height:48px; background-position: -2px -152px}
.reddit_48 {width:48px; height:48px; background-position: -452px -102px}
.refresh_48 {width:48px; height:48px; background-position: -402px -102px}
.rss_48 {width:45px; height:45px; background-position: -52px -802px}
.search_48 {width:48px; height:48px; background-position: -352px -102px}
.smile_grin_48 {width:48px; height:48px; background-position: -302px -102px}
.smile_sad_48 {width:48px; height:48px; background-position: -252px -102px}
.spanner_48 {width:48px; height:48px; background-position: -202px -102px}
.speech_bubble_48 {width:48px; height:48px; background-position: -152px -102px}
.star_48 {width:48px; height:48px; background-position: -102px -102px}
.star_half_48 {width:48px; height:48px; background-position: -52px -102px}
.star_off_48 {width:48px; height:48px; background-position: -2px -102px}
.sumbleupon_48 {width:48px; height:48px; background-position: -452px -52px}
.table_48 {width:48px; height:48px; background-position: -402px -52px}
.table_green_48 {width:48px; height:48px; background-position: -352px -52px}
.tabs_48 {width:48px; height:48px; background-position: -302px -52px}
.technorati_48 {width:48px; height:48px; background-position: -252px -52px}
.thumbs_down_48 {width:48px; height:48px; background-position: -202px -52px}
.thumbs_up_48 {width:48px; height:48px; background-position: -152px -52px}
.twitter_48 {width:48px; height:48px; background-position: -102px -52px}
.twitter_boxed_48 {width:48px; height:48px; background-position: -52px -52px}
.usb_48 {width:48px; height:48px; background-position: -2px -52px}
.user_48 {width:48px; height:48px; background-position: -452px -2px}
.user_add_48 {width:48px; height:48px; background-position: -402px -2px}
.user_delete_48 {width:48px; height:48px; background-position: -352px -2px}
.user_two_delete_48 {width:48px; height:48px; background-position: -302px -2px}
.user_warning_48 {width:48px; height:48px; background-position: -252px -2px}
.users_two_48 {width:48px; height:48px; background-position: -202px -2px}
.users_two_add_48 {width:48px; height:48px; background-position: -152px -2px}
.users_two_warning_48 {width:48px; height:48px; background-position: -102px -2px}
.warning_16 {width:16px; height:16px; background-position: -2px -1002px}
.warning_48 {width:48px; height:48px; background-position: -52px -2px}
.yahoo_48 {width:48px; height:48px; background-position: -2px -2px}

Shrnutí

Je to jen ukázka jak může tento program usnadnit práci, kterou jsem viděl obvykle dělat kodéry ve Photoshopu a pracně ručně nastavovat v CSS.

Barcamp Vsetín 2012 - Budou učebnice v budoucnosti jen elektronické?

Barcamp Vsetín 2012

Letos jsem se poprvé dostal na Vsetínský Barcamp a spousta přednášek mi přišla zajímavá a z těch co jsem viděl mi nejlepší přišli Olga Biernátová - Jak se uvádí bestseller na český trh a Filip Doušek - Hejno bez ptáků: Od 1500 myšlenek k románu. Zaujala mě iniciativa proti hernám http://www.mapyhazardu.cz/, kde dělají v Brnění, o.s. užasnou práci.

Moje přednáška byla večer na střeše a sešla se nám malá skupina, kterou to zajímalo a hodně se diskutovalo a to mám na Barcampech rád.

Budou učebnice 
v budoucnosti jen elektronické?

Elektronické knihy procházejí změnami, všichni si pamatují čtení v palm pilotech a jak to změnil Kindle, když přišel s prvním velkým obchodem s knihami. Sám jsem si tehdy Kindle 2 koupil a na beletrii neznám nic lepšího. Ale řešil jsem problém, že mám manuály a další odborné knihy převážně v PDF a to se na tom Kindlu nedalo moc dobře číst. Potom přišel iPad a iBook od Apple, tam se dají dobře číst i PDF, ale jinak to je stejné jako u kindle s nevýhodou toho, že to není elektronický inkoust.

iBooks2

Dne 19.2.2012 ohlásil, že vymysleli jak dělat učebnice jinak a lépe. Pokud jste viděli ukázky z knihy Life Of Earth zjistíte, že knihy mohou být úžasně inteaktivní. Přidali podporu videa, fotogalerie, 3D obrázků, HTML5 widgetů a dalších věcí, které ty knihy oživí. Pro beletrii to moc význam nemá, ale jistě se najdou autoři, kteří to využijí. Pro učebnice a odborné knihy to je ovšem úžasné. Na konci každé kapitoli, můžete přidat Review, kde vyzkoušíte čtenáře zda pochopil obsah kapitoli a on získá zpětnou vazbu, která mu při pasivním čtení chybí. Do knih si můžete dělat poznámky a zvýrazňovat zajímavé pasáže což mnozí studenti rádi využijí.

iBooks Author

Kromě iBooks2 aplikace, ale největší přínos je v tom, že Apple vydal aplikaci v které si zdarma takovou knihu můžete vytvořit. Na Mac je tato aplikace prostě úžasná, zcela ve stylu nástrojů iWork a každý průměrný uživatel si lehce vytvoří co chce.

Já jsem si více hrál s HTML5 widgety, pomocí, kterých se dájí možnosti rozšiřovat a také jsem řešil jak sázet matematiku. Matematiku dostanete do iBooks Author podobně jako do iWork například pomocí MathType nebo LaTeXiT.

HTML5 widgety můžete vyrobit sami nebo pomocí nějakého nástroje:

další zajímavé widgety můžete najít na internetu, například jsem našel na panoramatické prohlížení fotek.

Widgety mají omezení, nemohou přistupovat na disk a k internetu.

iBookstore

Pokud projedete celou výrobou knihy je potřeba ji dostat do iBookstore. Nejdříve se musíte zaregistrovat jako autor a potom si můžete stáhnout program iTunes Producer, pomocí, kterého můžete dílo uploadnout do iBookstore.

Jak je vidět na obrázku musíte vyplňit povinné údaje. Ve výběru jazyka není čeština k dispozici. Ale napište cze a kniha v češtině projde. Screenshoty ke knize udělejte přímo na iPadu, aby měli správné rozlišení a exportujte je jako JPG.

Po tom co nahrajete knihu pres iTunes producer a Apple ji schválí (cca 1 týden), můžete přes iTunes Connect sledovat statistiky jak se kniha stahuje po celém světě.

Jako asi první česká kniha ve formátu iBooks2 stažená více jak 15 kusů je vlastně bestseller jak říkala ve své přednášce Olga.

Závěr

Určitě chci doporučit pokud chcete knihu vydat sami, tohle je cesta. Sice je omezené na iBookstore a případně můžete v PDF si to vydat někde jinde, ale přidaná hodnota interaktivní učebnice určitě stojí za to. Pro beletrii bych asi volil stále osvěčenou metodu klasického formátu pro více zařízení, ale můžete to vylepšit i tam asi závisí na autorovy. Knihu můžete formátovat na výšku a na šířku a může vypadat pokaždé úplně jinak. Pokud budete mít typy na widgety, zkuste je uvést v komentářích. Mě napadlo, že by bylo dobré udělat widget na zdrojové kódy, kde by šlo prohlížet prsty, byla by zvýrazněná syntaxe atd.

Celý Barcamp ve Vsetíně byl skvělá akce a děkuji organizátorům za letošní ročník.

Video z přednášky

Ladislav Prskavec from Michal Berg on Vimeo.

Jenkins – použití Continuous Integration engine pro PHP

Vyvíjíte větší PHP projekt a potřebujete zlepšit koordinaci vašeho týmu a vaše softwarové procesy? Přístup Continuous Integration a nástroj Jenkins, který jej umožňuje implementovat, vám pomohou. Dozvíte se, jak Jenkins nainstalovat, jak ověřovat kvalitu softwarového produktu, jak řešit spouštění automatických testů, jak testovat coding standard, jaké si stanovovat softwarové metriky či jak kontinuálně deployovat vaše průběžné výsledky.

Všechno ukazuji na praktických příkladech s pomocí Ubuntu a virtualizace (VirtualBox) a za použití nástroje Vagrant.

Osnova školení pro WebExpo Academy

  • Automatizace buildu
  • Instalace Jenkins
  • Continuous Integration
  • Continuous Inspection
    • API dokumentace
    • Softwarove metriky
    • Duplicitni kod
    • Coding standard
    • Agregace vysledku
  • Automatizace automatizace
  • Continuous Delivery

Informace o školení

Termín: pátek 16. 12. 2011 10:00 – 18:00

Cena 4 490,- Kč. V prosinci jen za 2 290,- Kč!

Kapacita: Zbývají 2 místa.

Objednávky: academy@webexpo.net, +420 775 477 457

Školení se konají v Praze v prostoru WebHub, adresa: Kafkova 16, Praha 6, dvě minuty pěšky od metra Dejvická.

Související články

Průřez historií verzovacích systémů

Na videu je vidět průřez časovou osou jak čas běžel a jaké verzovací systémy nám postupně vznikali a vznikají.

Verzovací systémy jsou tu od roku 1972. Source Code Control System (SCCS) byl první verzovací systém, který položil základ všem verzovacím systémům až po dodnes. Dnes jsou nejznámější systémy: Subversion, Git a Mercurial. Ale každý měl nějaké předchůdce a vznikl protože ty předchozí nevyhovovali.

SCCS byl komerční a nahradil ho později Revision Control System (RCS), který byl open source náhradou za SCCS, na jeho základech byl v roce 1990 vytvořen Concurrent Versions System (CVS), který většina vývojářů už zná. Mezi jeho hlavní nevýhody jsem vždy považoval nemožnost přejmenování adresářů a správu jednotlivých souborů. Subversion v roce 2000 přišel s novinkou ve verzovaní celého stromu adresářů. Atomicita operací se rozšířila na celé adresáře ne jen na soubory jako v CVS. Subversion podporuje attributy, které se přidávání k souborů a s těmito metadaty dále pracuje.

SCCS ale kromě verzovacích systémů, které mají architekturu klient server byl také předchůdcem distribuovaných verzovacích systémů. První distribuovaný verzovací systém byl v roce 1996 Sun WorkShop TeamWare. Larry McVoy, který navrhl TeamWare vytvořil později BitKeeper, který se používal do roku 2005 pro vývoj jádra linuxu. V roce 2005 po sporu mezi společností BitKeeper a komunitou, přestali poskytovat zdarma BitKeeper a tak se Linus Torvalds rozhodl začít s vlastním verzovacím systémem Git. Na stejnou věc reagoval i Matt Mackall, když o měsíc později po Gitu uvedl Mercurial.

Verzovacích systémů je samozřejmě desítky, stále vznikají nové a spousta jich žije i když je asi dost lidí ani nezná. Nedají se vyzkoušet všechny. Osobně mám nejvíce zkušeností s tím čím jsem si prošel v práci a to je CVS, SVN a Git. Za ty roky co s nimi pracuji si myslím, že jsem si vždy polepšil a uvidíme co bude dál. Dnes považuji Git za naprosto dostačující k mé práci, jediné co bych mu vytknul je verze pro windows, kde často řeším problémy, které na linuxu ani neexistují.

Motivace a Verzovací systémy

Proč bychom potřebovali verzovací systém?

Toto je častá otázka, kterou slyším. Spousta lidí používá sdílené adresáře pro práci s dokumenty. Přejmenovávají soubory a adresáře. Pokud znáte dokumenty typu Projekt-Final-Update!!.doc apod. tak víte o čem mluvím.

Každý programátor pracuje v jiné podadresáři?

Tak to trochu může lidem připadat, ale programátoři používají verzovací systém, který dokumentovou databází, která sleduje změny a pomůže v mnoha věcech.

Záloha a Obnova

Soubory, které ukládáme do verzovacího systému si nesou infomaci o času uložení a není problém skočit v čase co existuje repozitář kam chcete třeba co jste dělali 29.7.2009? Není problém.

Synchronizace

Pokud si verzujete například konfiguraci nastavení linuxu. Příklady najdete na githubu v repositářích nazvaných dotfiles. Tak si pomocí verzovacího systému lehce udržujete konfiguraci na všech počítačích, které používáte. Obdobně není problém to dělat s jakýmikoliv dokumenty.

Jednoduché Undo

Modifikujete soubor a nefunguje to a potřebujete vrátit změny zpět. Není problém obnovit poslední dobrou verzi. Maličkost.

Undo

Kdykoliv máte k dispozici undo, pokud například najdete chybu, kterou jste udělali před rokem není problém se vrátit zpět a podívat se jaké změny jste dělali a proč.

Sledování změn

Soubory jsem změněny, ale verzovací systém uchovává také zprávu, kde se často vysvětluje proč změna byla udělaná, dost často obsahuje například odkaz do bug trackeru apod. To jsou věci, které se často ze samotných souborů vyčíst nedají.

Sledování vlastníka

Každá změna je podepsaná a můžete kdykoliv zjistit, kdo který řádek modifikoval. To se hodí pokud potřebujete zjistit kdo změnu udělal.

Pískoviště (sandbox)

Výhoda verzovacích systémů je právě, že můžete pracovat na velkých změnách v izolované oblasti bez toho aby jste se báli, že ovlivníte celek.

Větve a merge

Větve slouží jako velké pískoviště, můžete mít desítky větví, které mohou po dlouhou dobu fungovat izolovaně a později pokud budete chtít spojíte (merge) je kam potřebujete.

Závěr

Sdílené adresáře jsou rychlé a jednoduché, ale rozhodně tyto vlastnosti verzovacích systémů jsou něco co je o dost lepší.

Verzovacích systémů jsou desítky, od SCCS (1972), přes CVS (1990), Subversion (2000) k distribuovaným jako je Darcs (2002), Git (2005) nebo Mercurial (2005). K nejnovějším přírůstkům patří Verocity (2011), které přidává například přímo podporu SCRUMu.

Volbu nechám na vás u mě od roku 2009 vítězí Git a ani za 2 roky se v tom nic nezměnilo.

Google Developer Day 2011

GDD již tradičně v Clarionu, registrace se dneska pěkně protáhla pokud jste nepřišli včas a nevyužili některé jiné fronty než té první.

Reportáž online:

Keynote

9:09 Sedíme na keynote a uvidíme co se chystá ….

Video na začátku a potom Filip pokračuje v Keynote.

9:19 Brad Abrams - Google Plus Platform Zatím se probíráme od roku 1990 do součastnosti naší minulostí a přesouváme se k mobile a cloud. Aktivace telefonů s Androidem mezi únorem 2010 (60k) až k 550k v červenci 2011. 300k aplikací v Android Marketu.

9:35 Petr Nálevka - Sleep as anDroid, ukázka aplikace. Budík - umí měřit spánkové cykly. Umí nahrávat spánkovou aktivitu i zvuky, chrápání apod. Statistiky o spaní a návyky. Captcha pro budík, aby jste to snad nezamáčkli. Celé snímání je přes akcelerometr. Aplikace se dá snadno rozšiřovat. 330k aktivních uživatelů a 60k prodaných kusů.

9:43 AdMob - 910 miliard reklam už bylo zobrazeno.

9:45 Chrome a HTML5, Chrome Webstore

9:51 Ilmari Heikkinen - WebGL demo, tree.js, flux slider transgallery, asteroids. Pěkné demo na Developers tools v Chrome, zvláště pretty print funkce pro javascript je hodně pěkná.

10:00 WebM Video, Web Audio Api, HTML5 s WebIntents, Native Client (C, CPP v sandboxu), JS a DOM. HTML5 aplikace lehce najdete přes Chrome Web Store a zítra HTML5 Hackathon zítra a jedou na Google IO.

10:05 Video, YouTube 3D - trailer na novou Dobu ledovou ve 3D

10:10 Mano Marks a Jarda Bengl - Google Maps První Google Maps Mashup - http://housingmaps.com. Google Fusion Tables - demo s populací evropy. WebGL v mapách, klikněte vlevo dole vyzkoušet něco nového a mapy se přepnou do WebGL. Úžasné celé vektorové mapy místo obrázků a 3D budovy v normálních mapách provázání s satelitní mapou (ukázky New York, Rome, Venice).

Ukázka Venice, kde je vidět vektory a 3D domy.

Při zoomu jsou některé budovy vidět v náhledu 45 stupňů.

A dá se s nimi i otáčet.

10:24 Cloud, webová verze Angry Birds používá (GWT, HTML5, Google Plus, App Engine). Mobilní hry často App Engine používání na backendu (např. TapZoo). App Engine pro Google Doodles (ukázka, záznamy za 2 dny nahráli uživatelé několik let záznamů.

Google Cloud Storage, Google Prediction API jdou do provozu z Labs.

Google Cloud SQL uvádějí jako novinku. Iein Valdez uvedl demo. Použije se JDBC driver pro Google Cloud SQL (GCSQL). Ukázka na App Engine byla v Javě a PHP.

10:40 Google Plus s Circles, Hangouts, Mobile. Novinky přidávájí stále a během 90 dnů od spuštění přidali přes 100 novinek. Teď mají kolem 40M uživatelů a 3,4 mld. fotek. Plugins (+1 button), anotace pro vaše výsledky hledání. APIs (RESTful, JSON, OAuth2) a knihovny pro všechny běžné jazyky (Google Apis Explorer.

10:50 Jonathan Beri - Hangouts demo, přijde mi to jako Google Wave v nové verzi zaměřené více na to co lidé chtějí. Více o Google platform na https://developers.google.com/+/.

Keynote končí.

Ilmari Heikkinen - Tohle nejsou weby, které hledáte: Moderní webové aplikace v HTML5

Definuje moderní webovou aplikaci jako desktop UI s cloud backendem (příklad DJBreakPoint aplikace).

MVC Frameworks (Sproutcore, BackboneJS, ExtJS 4). Css Frameworks (Less, Sass). Divné, že nezmínil AngularJS, který Google přímo podporuje a vyvíjí. Responsive layout pro notebooky, mobily a tablety.

Ukázka webkitdirectory a drag and drop pro práci se soubory v Chrome. Ukázka ukládání na filesystem. Application cache pro ukládání.

<html manifest='cache.appcache'>
  • LawnChair - simple json storage
  • x-webkit-speech attribute například pro input.
  • desktop notifikace - webkitNotifications
  • performance tips - http://bit.ly/rizNVE

Old browsers

  • Chrome Frame
  • HTML5 Boiler Plate
  • Modernizr
  • jQuery

Chrome Web store

  • $5 poplatek za registraci
  • možnost monetizace HTML5 aplikací
  • AppMator umí udělat manifest file

Slidy http://bit.ly/nrjLs7.

Reportáž skončila.

Shodnocení GDD 2011

Později jsem se vrátil na GDD bohužel až na Ignite, ale ty rozhodně stály za to. Přišlo mi to jako skvělý závěr GDD2011 a co bych chtěl ocenit je i přes menší rozpočet spousta věcí zaujala. Ocenil bych více advanced přednášek, kde přednášející mi řekne něco co nevím, ale to je hodně individuální.

Jinak celkem dobrá organizace, trochu registrace vázla, když člověk přišel později. Celkově jsem potkal spoustu lidí, které vidím jen tady.

Za mě jediné přání do dalšího roku, líbil by se mi například Vojta Jína nebo někdo s týmu AngularJS a nějaký workshop s nimi ať na GDD nebo mimo.

Update 24.10.2011

K dispozici jsou všechny videa. Úžasné!

Update blog na Octopress

V předchozím příspěvku jsem psal jak jsem migroval na Jekyll. Základní verze Jekyllu je hodně omezená a dá dost práce vylepšit ho podle představ. Mě šlo hlavně o čitelnost nějaké drobnosti, které jsem si na tom udělal, ale nebyl jsem zcela spokojený. Když jsem hledal dále ve svět Jekyllu a stránek pro pages na githubu narazil jsem na Octopress, který je dokonalý blogovací framework. Brandon Mathis vytvořil krasný a funkční template, který má tyto vlastnosti:

  • má HTML5 template
  • mobile friendly
  • podpora pro Twitter, Google Plus One, Disqus Comments, Pinboard, Delicious, and Google Analytics
  • jednoduchý deployment (rake deploy)
  • zvýrazňování zdrojové kódu (Solarized)
  • jednoduchá změna vzhledu pomocí Compass a Sass

a další pluginy, které jsou přesně co vývojář potřebuje. Pro mě jsou nejdůležitější

  • Gist
  • jsFiddle
  • Include Code

Doufám, že pokud se vám líbí Jekyll tak Octopress je ještě trochu lepší a na stejném základě.

Subversion 1.7

Dlouhé čekání na nový Subversion

Myslím, že vetšina lidí si shlédnutí roadmapy Subversion a čekaní 2 roky na změny, které potřebují migrovala na jiný verzovací systém. Ale celosvětově je Subversion stále velice používaný verzovací systém.

Novinky ve verzi 1.7

Byla opraveny spousty chyb což jistě všichni uživatelé ocení. A přidáno několik novinek, ty nejvýznamější zmínim dále.

WC-NG

Za dlouho očekávanou novou verzí pracovní kopie (WC, working copy) je centralizace adresářů .svn do jednoho podobně jako to mají jiné verzovací systémy. Používá se nějaká forma SQLite, ale autoři upozorňují, že není bezpečné přistupovat k souboru s metadaty běžnými nástroji pro SQLite.

HTTPv2

Nový jednoduší HTTP protokol má samozřejmě hlavně zvýšit výkon SVN, kdy operace se serverem jsou největší zátěží uživatelů. Zatím, ale nemám k dispozici žádné porovnání rychlosti, kde by to bylo reálně vidět.

svnrdump

Příkaz svnrdump umožňuje to samé jako svnadmin dump na serveru i vzdáleně. Pokud jste ve staré verzi chtěli zálohovat pomocí svnadmin, museli jste mít přístup přímo k file systému, kde byl svn server. To teď odpadá.

svn patch

svn patch složí jako systémový příkaz patch k aplikací diffů (patchů).

Distribuce

Postupně se objevují binární balíčky s Subversion 1.7

Závěr

Nic převratného se nestalo, Subversion postupuje dále správným směrem a doufám, že další plánované změny budou probíhat trochu rychleji. Pokud Subversion nepoužíváte a chcete můžete se dozvědět více na mém školení, nejbližší je 20-21.10.2011.