Jaký bude AngularJS 1.2?

Pokud sledujete dění kolem frameworku AngularJS tak jste jistě zaznamenali, že se pracuje na nové verzi 1.2, která je teď blízko k dokončení. V masteru mají dnes verzi pojmenovanou jako verzi 1.1.8 a brzy se snad dočkáme finální verze. Zkusím zde popsat nejdůležitější věci z prezentace na meetupu 11.6. co prezentovali Igor Minár a Brad Green.

ng-animate

Deklarativní animace pro aplikace v Angularu. Podpora pro CSS animace a přechody s možností fallbacku pomocí JS. Pro vlastní animace je dobré použít některou s knihoven pro CSS animace (Greensock.js, Animate.css, Custom CSS3 Keyframes). Direktiva se stará o práci s DOMem, nastavuje potřebné třídy a timing, také zabraňuje vnořeným animacím.

$http

Měla by být přidána podpora pro blob a authentication (metoda withCredentials). Budete si moci více nastavit XSRF header a názvy cookie. Přidá se podpora pro zrušení requestů a podpora pro around interceptors.

Around interceptors se dají dobře využít například při authentication, asynchronní zpracování request/response a práci s chybami. Například chcete provést request a server vrátí, že vypršela session a pomocí interceptoru vyvoláte přihlášení a potom pokračuje původní request.

$resource

Více konfiguračních nastavení (hlavičky, url), api bude vylepšené o podporu promise a měli by být k dispozici i interceptory.

$route a ngView

Separátní moduly, rozšíření o možnost zachycení všech parametrů a přidána podpora pro animace.

    when('/users/:userId/params/*params/'

ngRepeat

V této snad nejpotřebnější direktivě je přidána podpora pro animace, potom je možnost opakovat sadu elementů (multi-element repeater) pomocí ng-repeat-start a ng-repeat-end a v neposlední řadě podpora track by paramteru, kdy se dá kontrolovat asociace mezi modelem a DOMem.

Controller as

Tato konstrukce nám umožní jednoduší zápis a není potřeba používat v controlleru $scope (samozřejmě pokud ho nepotřebujete např. při $watch()).

    <body ng-controller="DemoController as demo">
    <tr ng-repeat="student in demo.students">
        <td></td>
    </tr>
    </body>

    function DemoController() {
        this.students = [ ... ]
    }

ng-if

Tato direktiva přejatá z projektu AngularUI umožňuje udělat podmínku na kompilaci části šablony a reší některé problémy, které se nadali zvládnout pomocí ngShow a ngHide.

Expressions

Podpora pro nové operátory: ===, !==, ? Konečně lze napsat:

    ng-class="loggedIn ? 'user': 'anonym'"

ngTouch

Podpora pro touch eventy v ngClick a ngSwipe.

Shrnutí

Přibude jestě několik vylepšení pro bezpečnost (CSP) a vylepší error hlášky, také by se měla zlepšit dokumentace a bude interaktivní tutorial. Dema a detaily najdete také ve videu na youtube.

NodeJS Hosting

Mám několik webů, které jsou na NodeJS. Spousta lidí zná moje weby o javascriptu PragueJS, které běží na NodeJS a je napsaný ExpressJS. Web je napsaný v coffee-scriptu. Nic extra, ale řešil jsem kde web hostovat.

Heroku

Jako první jsem zvolil Heroku, kde musíte upravit a lehce nastavení v package.json, aby Heroku vědělo jakou verzi NodeJS a NPM má pro kompilaci použít.

package.json

...
"main" : "app.coffee",
"scripts": {
    "start": "NODE_ENV=production coffee app.coffee"
},
"engines": {
    "node": "0.8.x",
    "npm":  "1.2.x"
},
...

Nastavit environment properties na production

heroku config:set NODE_ENV=production

a nastavení portu na kterém to na Heroku běží (PORT).

app.set 'port', process.env.PORT or 5000
app.listen app.settings.port

Pro spuštění je potřeba nastavit Procfile, kde je co se má pouštět.

Procfile

web: coffee app.coffee

Kompletní dokumentaci najdete přímo na stránkách Heroku.

OpenShift

Pro zálohu jsem využil RedHat PaaS Openshift, kde musíte využít jejich vlastní nástroj na vytvoření základ aplikace.

V .openshift adresáři se nastaví všechno včetně kompilace různé verze NodeJS.

.openshift/action_hooks/pre_start_nodejs-0.6

export NODE_ENV=production
export PATH=$PATH:~/app-root/repo/node_modules/coffee-script/bin

Web běží za proxy a narozdíl od Heroku je potřeba nastavit kromě portu (OPENSHIFT_NODEJS_PORT) i interní IP adresu (OPENSHIFT_INTERNAL_IP).

  app.set 'port', process.env.OPENSHIFT_NODEJS_PORT || 8080;
  app.set 'ipaddress', process.env.OPENSHIFT_INTERNAL_IP

Musel upravit package.json, aby šel přímo pustit coffee-script, protože ho OpenShift ho zatím v době implementace nepodporoval.

...
"main" : "app.coffee",
  "scripts": {
    "start": "~/app-root/repo/node_modules/coffee-script/bin/coffee app.coffee"
},    
...

Další hostingy

Na webu najdete zajímavé srovnání z pohledu podpory WebSockets. V tomhle ohledu je problém hlavně v nejvíce používanému Heroku, kde je podpora velmi špatná.

Další hostingy jako jsou Nodejitsu, AWS Elastic Beanstalk, Modulus a AppFog jsou podobné a služby poskytují. Nejlepší podporu pro Websockety má Nodejitsu a Modulus, které jsou placené. Na Openshiftu jsem websockety nezkoušel podpora byt tam měla být.

Všechy moje zdrojáky jsou k dispoci na Githubu, Heroku na masteru a Openshift.

RailsGirls v Praze

V Praze 14-15. 12. 2012 se uskutečnil jedinečný projekt v rámci mezinárodní komunity, která se zaměřuje na to dostat do technice ženy a dívky.

Our aim is to give tools and a community for women to understand technology and to build their ideas. We do this by providing a great experience on building things and by making technology more approachable.

Já jsem se celé akce zúčastnil jako jeden z organizátorů a také jsem trochu přispěl jako kouč. Osobně se mi nápad celé akce velmi líbí a jsem rád, že jsem se toho účastnil. Do Prahy celou akci přivedla Cristina Santamarina, která organizuje RailsGirls Berlin.

Celá organizace nebyla složitá a protože se mě dost lidí ptalo co a jak uvedu zde některá fakta jak příprava celé akce probíhala.

  • 30.8.2012 – Cristina Santamarina poslal email do konference rubyonrails.cz, kde Karel Minařík a další se ozvali, že to podpoří a rádi se zúčastní.
  • 11.10.2012 – Karel se mnou mluvil o RailsGirls na PragueJS, a tak jsem se rozhodl se zapojit do organizace
  • 7.11.2012 – V rámci tradiční “První středy”, kdy se schází Ruby komunita ve Fraktal baru na Letné jsme získali první kouče.
  • 17.11.2012 – Celý organizační tým (Cristina Santamarina, Eliška Hutníková a Ladislav Prskavec) se setkal s několika kouči na RuPy a doladily jsme detaily, které jsme řešili jen online
  • 5.12.2012 – Na další první středě jsme získali další kouče
  • 11.12.2012 – Po příjezdu Cristine do Prahy jsme měli koordinační oběd organizátorů, kde se řešili poslední detaily
  • 14-15.12.2012 – první RailsGirls v Praze, v Locusu ve Slezské

Chci tady poděkovat všem co se akce zúčastnili.

Organizační tým:

Cristina Santamarina, Eliška Hutníková a Ladislav Prskavec

Koučové:

Karel Minařík, Ladislav Prskavec, Jana Dvořáková, Jiří Kubíček, Adam Kliment, Vojtěch Hýža, Jiří Kratochvíl, Zlatka Šubrová, Filip Zrůst, Patrik Jíra, Pavel Dušánek

Program

Pátek

  • 18:00-19:00 – Install party, účastnicím jsme pomohli s instalací Ruby a RubyOnRails
  • dorazilo 21 účastníků
  • řešili jsme problém s nestabilním internetem

Sobota

  • v sobotu nás překvapilo náledí ale přesto dorazilo 27 účastníků
  • začalo se úvodem do programování od Karla Minaříka "RailsGirls - úvodní přednáška"
  • po přestávce na skvělé kafe od Virtualmaster si všichni zkoušeli základy Ruby pomocí TryRuby nebo IRB (Interactive Ruby Shell).
  • po obědě jsme se vrhli na tutorial, Karel celý tutorial ukázal a potom jsme v jednotlivých týmech projeli tutorial podrobně znovu. "RailsGirls - coding"
  • kdo byl dříve hotov tak potom mohl tutorial vylepšovat, obarvovat apod.

RailsGirls v číslech

  • 11 koučů
  • 7 partnerů
  • 52 přihlašených
  • 21 dorazilo v pátek (install party)
  • 27 dorazilo v sobotu (vlastní akce)
  • 10 znalo HTML a CSS
  • 4 měli nějaké základy programovaní

Napsali o nás

Fotky

Další RailsGirls

S ostatními co jsme se shodli, že pokračování bude. Dostali jsme pozitivní zpětnou vazbu ode všech kdo se účastnili a za to jsme rádi. Chtěli bychom mít lepší prostor, se spolehlivým internetem. Vylepšit rozdělení do skupin, přidat další věci kolem.

PragueJS pořádá s GoodData přednášku o Ember.js. Přednáší autoři frameworku Yehuda Katz a Tom Dale.

Ve čtvrtek 11.10. proběhne javascriptový meetup v Node5 s tématem Ember.js. GoodData přivezou do Prahy hlavní vývojáře tohoto frameworku.

Oba představitelé pracuji pro startup Tilde.io, který společně založili, jehož hlavní náplní je dodávat kompletní řešení pro prostředí moderního webu.

Yehuda Katz je hlavní vývojář mnoha projektů, včetně Ruby on Rails, jQuery a Ember.js.

Tom Dale je Ember.js maintainer a dříve člen Sproutcore týmu. Je to bývalý zaměstnanec Apple, který pracoval na MobileMe a iCloud aplikacích. Takže o témata k diskuzi by neměla být vůbec nouze.

Začátek v 18h v prostorách Node5 v Praze. Přihlásit se můžete na srazy.info nebo na facebooku.

Více infomací na praguejs.cz.