Reportaz z MS Festu - cast 2

25.10.2007 14:30 | y

Druha cast o MS Fest-e v Prahe. V prvej casti som popisal hlavne priebeh akcie, tato cast bude o informaciach z prednasok, ktore som navstivil.

Powershell

powershell logoZacnem tym, co vas pravdepodobne najviac zaujima. Powershell je dalsim stupnom shellov vo Windows s pristupom k programovaniu davkovych skriptov blizkym skor k bash-u ako k cmd.exe (napr. pouziva klasicky pipe "|"). Premenne su oznacene $ a ako je to v dnesnej dobe zvykom, vsetko je objekt. Tym vsetko sa mysli uplne vsetko, teda aj aliasy su potomkom triedy Alias (s nazvom si nie som uplne isty) v hlavnej hierarchii (podobne je to s metodami). Pistup k objektom je cez bodku - objektom su napr. aj priamo zadane stringy, takze mozete zavolat napr.

PS> "hello, world!".ToUpper()

Powershell sa snazi niektore veci, ktore nie su v bash-i az tak prijemne, robit inac. Ako zaklad by som povedal, ze velmi prijemne je, ze parametre su zosuladene - vsetko sa zapisuje stale rovnakym sposobom. Napr. funkciu na odstrananie niecoho mozeme nazvat delete, remove alebo podobne. Powershell podla prednasky by mal mat tieto veci ustalene. To vidim ako celkom dobru vec, oproti pozeraniu manualovych stranok pre lubovolnu utilitu. Na lubovolny objekt mozete zavolat metodu getMember (opat si nie som uplne isty menom), ta by vam mala vratit zoznam metod, ktore mozete na dany objekt pouzit. Dalsou, myslim, ze sa to da nazvat vyhodou, je to, ze "programy", resp. metody bezia ako jeden proces - teda nie volanie programu - vlastny proces, avsak vsetko stoji na nejakom jadre PowerShellu.

Achilovou patou MS produktov byva bezpecnost. Tu sa v MS asi dlho zamysleli, a spravili taketo riesenie, ze davkove skripty (predtym napr. .bat) sa po dvojkliku nepustia priamo na interpretaciu, ale v notepade :-). Administrator moze nastavovat pravidla spustania tychto skriptov, pricom ma na vyber z nejakych 4 urovni, ked je zakazane vsetko (ako so spominal, prave v tejto bezi PS na zaciatku), potom rozne formy digitalneho podpisu az po nejaku unrestricked mod. Tento pristup je aspon trochu lepsi ako v minulosti. Bezpecnostnych opatreni je asi viac, dalsie si uz velmi z prednasky nepametam :-). Zaujimavy je v tejto suvislosti parameter -WhatIf, ktory by mal byt dostupny vsade. Ide o to, ze pri tomto parametri, skript nebude robit nic, iba vypisovat co by urobil :-).

Zaciatok prednasky bol trosku pokazeny zbytocnym marketingom pri porovnavani nejakeho skritpu v bash-i a v powershell-i. Myslim, ze nikto z vas by pravdepodobne nemazal priecinky v adresari sposobom

ls -l | grep ^d | awk { print "rm $9"} | sh

...ak by teda samozrejme nechcel ukazat co najhlupejsiu moznost (dokonca s vyuzitim awk-u! :-)). Esteze autor skriptu sa neodvazil pouzit sed...

Navzdory tomu, Powershell vyzera celkom slusne. Nebolo by podla mna vobec zle, mat shell o sile aku pozname s unix-like systemov aj pre Windows. Tym by celkom dobre mohla fungovat automaticka sprava uzivatelov a podobne veci. Ako sa Powershell uplatni v praxi uvidime, ma vsak celkom dobre predpoklady. Urcite bude pritomny v Windows Server 2008 a este aj niektorych dalsich, kompletny zoznam najdete na Wikipedii.

Odkazy k Powershellu

Microsoft Expressions

Motivacia k vytvoreniu Expressions bola, ze GUI programov, ktore sa tvoria, je prilis obmedzena. Ako priklad je uvedena tvorba stranok - rozrezat si dizajnerov navrh, vytvorit kod v CSS a dizajn je na svete. Urobit nieco podobne pri programovani desktopovych aplikacii bola relativne dost narocna praca. Expressions su program podobny Photoshopu. Teda, presne by som mal zacat tak, ze Expressions obsahuje v zasade samostatne nastroje - Blend, Web, Designer a este nejake dalsie. Microsoft mal silny pocit, ze ako nastroj prevazne urceny pre designerov by sa mohol nejako lisit a preto je GUI v programe prevazne tmave, az cierne :-). Vyzera to podla mna trochu cudne, avsak v zasade sa v tom da pracovat. Chlapik z ceskeho MS, ktory tuto prednasku viedol, vytvoril za hodinku celkom zaujimave rozvrhnutie - nejde ani tak o dizajn, ten nebol zase extra zaujimavy :-), podstatne bolo, ze to slo vytvorit dost jednoducho, aspon sa to tak zda (zatial som sam Expression Blend netestoval, v blizkej dobe sa vsak chystam).

Ako to funguje? Mozno presnejsie by sme mohli tento nastroj prirovnat k Dreamweaveru (pre neznalych - pravdepodobne najlepsi wysiwyg editor na tvorbu www stranok) ako k Photoshopu. Sucasne, ako vytvarate dizajn, sa vam tvori XAML kod. XAML vseobecne je znackovaci jazyk zalozeny na XML, ktory je dost podstatny v .NET 3.5 - viete pomocou neho vytvarat uzivatelske rozhranie. Samozrejme, nedokaze to vsetko, hlavne "vypoctove" casti programu stale pisete vo svojom oblubenom .NET jazyku. Podobne, XAML v Expressions Blend vytvara nejake mriezky na rozvrhnutie, ma nejake objekty, ako napr. tlacitka a pod., ktorym moze byt priradeny konkretny vzhlad. Neviem v sucasnosti o nicom, k comu by sa dalo Expressions prirovnat.

Odkazy k Expressions

Silverlight

O Silverlight-e pisal uz aj lowec, v sucasnosti je vo verzii 1.0. Pravepodobne viete, ze ide o technologiu MS, ktora by mala byt niecim ako konkurentom Flashu - to vsak MS jemne popiera. Tak ci onak, ide o tvorbu vectorovej grafiky pre web. Tato verzia podporuje programovanie aplikacii v Javascripte (a samozrejme XAML). V dalsej verzii by mala pribudnut podpora .NET jazykov, spominane boli samozrejme C#, ale aj Python, Ruby, Visual Basic, ci PHP. Opat si v XAML vytvorite (napr. v spominanom Expression Blend-e) nejake rozvrhnutie, ktoreho animacie, ovladanie buttonov, budete ovladat zvolenym programovacim jazykom. XAML sam podporuje nejake zakladne transformacie - teda tie jednoduchsie veci zvladnete len s nim.

So spominanych zaujimavych vlastnosti by som uviedol vlastny storage pre udaje, ktory mozu aplikacie vyuzivat. Tento priestor by mal byt oddeleny od filesystemu. Silverlight by mal mat moznosti pracovat so suborami na disku - avsak vzdy by to malo ist len cez OpenFileDialog - teda klasicke okno "otvorit subor".

Podpora v Linuxe

Silverlight by mal bezat aj pod Linuxom, a to cez v podstate oficialny port Moonlight. Na svedomi ho ma Novell, teda presnejsie ludia, ktori stoja aj za portom .NETu Mono. Podpora vyzera zatial celkom nadejne - viacere aplikacie spravene pre Silverlight 1.1 bezia aj v Moonlight-e. Podla toho, co zaznelo v otazkach a odpovediach po prednaske, tak by pod linuxom mohla fungovat aj podpora multimedii - kodeky vsak MS pravdepodobne da iba Novellu, aby ich mohol do Moonlightu zakomponovat. Z podhladu FSF nic moc, avsak myslim, ze to nebude horsie ako napr. so spominanym Flashom. Este mala perlicka - prednasajuci boli zjavne pripraveni na to, ze prave o tuto cast bude dost podstatny zaujem - tiez to vypoveda o tom, ze ani na MFF, ani na FEL nie je UNIX nejaka okrajova zalezitost a MS si to dobre uvedomuje.

Odkazy k Silverlightu

Vyvoj webu v Visual Studiu 2008

Visual Studio 2005 a starsie nebolo vhodne na pisanie pre web. To sa zjavne v MS rozhodli zmenit. Pribudol novy Designer (no nie tak uplne novy, predtym uz pouzity v Expression Web-e), podobne boli rozsirene moznosti na pracu s CSS vseobecne a bolo pridane debuggovanie Javascriptu, spolu s InteliSense pre Javascript.

Ked sa pozrieme na vlastnosti ohladne HTML a CSS, tak samozrejmosti (ktore predtym v neslavne znamych nastrojoch na tvorbu stranok od MS neboli) ako generovanie cisteho XHTML, class-based css (teda nie pouzivanie inline stylov) su sucastou a vyzeraju celkom pouzitelne. Nepredpokladam, ze by Visual Studio prekonalo Dreamweaver, pripadne ine na to zamerane profesialne nastoroje (ja teda ani wysiwyg sposobom stranky netvorim, takze o to viac je moj nazor v tomto subjektivny); myslim vsak, ze to je dostatocne. Zaujimave vlastnosti v praci s CSS su, ze ak nastavite elementu styl rovnaky, aky uz existuje, tak sa nevytvori novy styl, ale priradi uz existujuci - taka vec, ako by ste to robili rucne. Tiez vidite, na ktore elementy bol dany styl aplikovany a kde sa prekryvaju, pricom vam je povedane, ktor vlastnost v style bol prekryta a teda nie je aplikovana.

Velmi casto omielana podpora Javascriptu je sucastou uz aj sucasnej verzie (beta 2). Kedze InteliSense musi poznat, ktore subory budu spolu nainkludovane v html a Javascript na to prostriedky nema, boli vymyslene specialne direktivy pre visual studio (v podobe standardnych komentarov).

/// <reference path="JScript.js">
//v tomto momente funguje intelisense na funkcie v js v subore JScript.js

Je tu aj generovanie nejakej dokumentacie pre Javascript, opat podobny zapis cez komentare. Trochu nemotorne je, ze komentar musi byt vnutri funkcie:

function foo(parameter) {
//<summary>Popis metoft</summary>
//<parameter name="parameter">to je parameter</parameter>
}

Z konkurencnych nastrojov prednasajuci zjavne nepoznal Firebug, ktory jednak veci na pracu z CSS (napr. prekryvanie stylov) a tiez debuggovanie Javascriptu podporuje. Bohuzial, iba vo Firefoxe, casto to vsak staci. Na moju otazku, ci vo Visual Studiu sa da nastavit aj iny prehliadac na debuggovanie Javascriptu prednasajuci nevedel s urcitostou odpovedat.

V tejto prednaske zaznelo aj celkom dost informacii ohladne ASP.NET 2.0 - hned zakladnou informaciou bolo, ze nie je uplne vhodne na generovanie html, pretoze je generovany dost nepekny table kod, inline styly a pod. Toto vieme vyriesit pomocou Control Adapters - a to tak, ze zdedime specialnu triedu pre dany control a upravime metodu Render. Upravit vsetko by vsak cloveku trvalo neunosne dlho - preto myslim, ze odkaz na asp.net 2.0 css friendly adapters toolkit je velmi cenny - potom aj ASP.NET generuje pekny css kod, zalozeny na class a v zasade semantickom html. Dalsou vecou v prednaske bol vyvoj Ajaxu a Control Extendery, ktore rozsiruju funkcionalitu WebControls.