Archive for November, 2008

Nov 24 2008

Tech-Ed’i märkmed III

Panen kirja, mis veel Tech-Ed’ist peas meeles, edasi tuleb juba välismälu kasutama hakata.

Arendusprotsess

Roy Osherove rääkis huvitavalt sellest, kuidas kirjutada hästi (automaat)testitavat koodi.

Miks automaattestimine hea on, seda teavad ehk kõik, aga kordamiseks:

  • Regressioonide vältimine (ehk parandame üht asja ja teine läheb katki)
  • Varajane vigade avastamine (väga oluline tarkvaratootmise põhiteoreemi seisukohalt)
  • Nõuete parem mõistmine
  • API dokumentatsioon (kui keegi peab seda APIt ka kohe kasutama, kasvõi testide otstarbeks, saab dokumentatsioon palju parem)

Koodi testitavust saab hinnata selle alusel, kui lihtne on meil:

  • Tekitada suvalise objekti instantsi (sest tihti on seal sada erinevat sõltuvust).
  •  Saada samale testile alati samu tulemusi
  • Testida ainult üht komponenti korraga, ilma teisi puutumata
  • Kontrollida komponendi sisendeid ja väljundeid
  • Isoleerida komponenti tema sõltuvustest ja liidestest

Mitmesugused isoleerimisvajadused on sageli lahendatavad dependency injectionitega, mille kohta leiab veebist juba põhjalikumat lugemist.

Targo märkus: See kõik ei tähenda muidugi, et kogu kood peab alati automaattestidega kaetud olema ja kõik kohad dependency injectioneid täis. Igal projektil on oma iseärasused, vahel ei anna automaattestiimine mingit võitu, vahel aga on see projekti õnnestumiseks möödapääsmatu.

SharePoint veel kord

Südantsoojendav oli kuulda Ishai Sagi ettekannet SharePointi custom field type’idest. Seda seetõttu, et olen ise ühe päris radikaalse custom field type’i projekti realiseerinud (Business Data field type MOSS 2007-s) ja kui on mingi tehnoloogia, kus ma ilmselt maailma top 100 eksperdi seas olen, siis on selleks SharePointi fieldide customiseerimine :P

Edasi, SharePointiga tegelemiseks üks huvitav gadget on Content Query Web Part:

  • Laseb sooritada päringuid üle mitme listi (mitte küll SQLi stiilis joine)
  • Väga hea jõudlusega, cache’ib asju intelligentselt
  • XSLi põhine customiseerimine

http://blogs.msdn.com/ecm/archive/2006/10/25/configuring-and-customizing-the-content-query-web-part.aspx

http://office.microsoft.com/en-us/sharepointdesigner/HA101741341033.aspx

Abivahendid veel

Tess Fernandez pidas ühe parima debugimise ettekande, mida ma kunagi kuulnud olen, demonstreerides mitmesuguseid vahendeid, nii neid, mida ma juba teadsin, kui ka uusi.

Minu isiklikuks lemmikvahendiks on kindlasti SOS, mis on mitmel korral lasknud mul keerulises olukorras kangelast mängida. Ja samuti on mul iga kord hea meel, et me elame managed koodi ajastul, kus meil on võimalik nt kogu heap mälu läbi käia ja vaadata, mis objekte sealt seest leiab. Yum.

Kellele Tessi mainitud vahendid võõrad on, saab downloadida ka demo, kus üksikasjalikud instruktsioonid sees.

Järgmine TechEd EMEA on juba Berliinis, mis pole novembrikuus ilmselt enam nii hea variant kui Barcelona. Aga samas ka ehk mitte nii hull kui Tartu.

No responses yet

Nov 22 2008

Tech-Ed’i märkmed II

Published by Targo under SharePoint, Tehnoloogia

Jätkan Tech-Edi asjade kirja panekut.

Äri

Ikka ja jälle üleskerkivaiks teemadeks mitmetes ettekannetes olid SOA, Cloud, SaaS, Azure jne.

Põhiideedeks siis, et tulevikus:

  • Me kirjutame rakendusi teenustest, mida me ise ei loonud
  • Paigaldame neid masinatele, mis pole meie omad
  • Liigutame neid “pilves” ühest datacenterist teise, kruvides lihtsalt mingit graafilist mudelit

Jutu moraal tarkvaraarendajatele:

  • Muuta oma tarkvara kasutatavaks (veebi)teenuste kaudu
  • Tarkvara võiks koosneda protsessikesksetest taaskasutatavatest komponentidest
  • Algoritmid opereerivad järjest rohkem ärimudelitel ja DSLil
  • Uurida võimalusi, kuidas klassikalised rakendused saaks ära kasutada “pilve” teenuseid

Azure

Azure’i puudutavatel teemadel oli mitu ettekannet päevas. Põhiideed siinkohal:

  • Virtualiseeritus. Vastavalt oludele ja vajadusele tekitatakse Windows Serveri instantse.
  • Kettaruum (storage). Vastupidav, skaleeruv, kättesaadav ja sisaldab harjumuspäraseid abstraktsioone
  • Hooldus. Teenuseid tekitatakse ja nende elutsüklit majandatakse automaatselt

Iga uus arenduskontseptsioon algab Hello Worldist. Azure’i Hello Worldi saab näha siin. Põhiline müügiargument asja juures muidugi see, et asi töötab täpselt nagu tavaline ASP.Neti arendus. Azure annab aga automaatselt:

  • Keskkonna, kus kood jookseb
  • Riistvara (mingis anonüümses konteineris ja data centeris)
  • Võrguühenduse
  • Paigalduse ja konfigurerimise
  • Isolatsiooni
  • Koormuse balansseerimise

Ja nagu ülalolevalt diagrammilt näha, pole Azure mitte ainult inimeste enda koodi hoidmiseks, vaid seal on muuhulgas võimalik kasutada ka SQLi (sh nii andmete hoidmiseks kui ka klient<->pilv sünkimiseks, pluss tavalised andmekaevanduse, andmepuhastuse ja -transformatsiooni jm ülesanded, pluss mitmesugused “entsüklopeedilised” andmekogud ehk reference data), SharePointi, Dynamicsit jms asju.

Sharepoint veel

Commerce Serveri järgmine väljalase, koodnimega “Mojave” sisaldab muuhulgas olulist SharePointi integratsiooni. Ehk siis näiteks Commerce Serveri shopping cart, arve näitamine, kataloogiotsing jpt asjad on kasutatavad SharePointi web partidena.

Samuti on Commerce Serveri kasutajad integreeritud SharePointi User Profile’idega, saab kasutada sama autentimist (forms authentication) jne.

Mojave peaks kättesaadav olema 2009 kevadest.

SharePointi osas oli veel suur tung üritustele, kus räägiti featurede ja solutionite loomisest. Ilmselt on tegemist asjaga, mis inimestes segadust tekitab, kordan seepärast põhiideed üle:

  • SharePointi customization on see, kui sa muudad mingit konkreetset saiti.
  • SharePointi solution on taaskasutatav põhjade ja komponentide hulk, millega sarnast customizationit mitmes saidis luua. Solution on see, mille sa tavaliselt SP serverisse paigaldad ja solutioneid saab luua Visual Studios.
  • Solution koosneb featuredest. Feature võib sisaldada menüüsid, linke, listipõhju, listiinstantse, event handlereid (ehk siis põhimõtteliselt igasugust SP peale ehitatud koodi) jmt elemente. Saidil on võimalik featuresid sisse ja välja lülitada.

Vt. lähemat infot siit: http://sharepoint.microsoft.com/blogs/mike/Lists/Posts/Post.aspx?ID=7

Ja siin on hulk väga lahedaid inimeste poolt valmis tehtud featuresid, mida oma saidile lisada: http://www.codeplex.com/features

Solutionite ja featurede loomiseks ja paigaldamiseks on mitmesuguseid lahedaid abivahendeid, mainiksin siin:

WSPBuilder (http://www.codeplex.com/wspbuilder) – vahend SharePointi solutionite automaatseks genereerimiseks. SharePointi custom koodi deploy toimub tavaliselt „solutionite“ abil, mis sisaldavad XML faile, kus paigaldatav kraam kirjeldatud on. WSPBuilder automatiseerib nende failide genereerimise.

STSDEV – (http://www.codeplex.com/stsdev) – genereerib Visual Studio solutioneid, mis omakorda sisaldavad põhjasid tüüpiliste SharePointi ülesannete lahendamiseks (nt kuidas lisada ja deployda uut lehekülge).

Andmebaasidest veel

Koolis õppisime klassikalist andmebaaside teooriat, mis on kenasti kolmandal normaalkujul, neil on konkreetne schema, transaktsioonid toimivad, kõik on mustvalge.

Uutes süsteemides on nii palju andmeid ja neid hoitakse laiali nii paljudes arvutites, et andmete kvaliteedi ja tähenduse mõisted muutuvad häguseks.

  • Rangelt defineeritud välisvõtmete ja andmebaasiseoste asemel on sõnmid, documendid, lingid, vormid
  • Konkreetsele schemale vastavate tabelite asemel on laiendatavad, erineva või üldse tundmatu semantikaga andmeallikad
  • Piiritletud andmehoidla asemel on kusagilt streamitavad andmevood
  • Range lukustamise ja transaktsioonide asemel on OK, kui mina muudan andmeid ja sina muudad andmeid ja pärast pannakse asjad korda.
  • Täpsete vastuste asemel on meil pidevalt muutuvad andmed ja selleks ajaks kui arvutus tehtud saab, võib vastus juba vale olla

Ühesõnaga, me ei ela enam ilusa, puhta DDLiga kirjeldatud maailmas.

Tüüpiliseks näiteks on siin Amazoni veebipood, kus klassikalisi transaktsioone eriti ei rakendatagi. Laos võib olla viimane eksemplar mingist raamatust ja sina ja mina ostame mõlemad selle ära. Tekkinud tõrge parandatakse hiljem ja ühele meist saadetakse vabandus. Amazonil on ladusid paljudes erinevates geograafilistest paikades, seal muutuvad seisud pidevalt, samuti tellivad miljonid kasutajad kogu aeg mingeid asju. Kui me tahaks sellele süsteemile rakendada rangeid transaktsioone, siis:

  • Tsentraalse andmebaasi puhul ei piisaks meile ka maailma suurimast ja kiireimast arvutist, et seda süsteemi töös hoida.
  • Hajusandmebaasi puhul võtaks andmete korrektsuse kontrollimine nii palju aega, et kasutaja ei jõuaks seda ära oodata. Samuti võib juhtuda nii palju erinevat sorti tõrkeid, et ta saaks arvestatava tõenäosusega mingi vea, kuigi tegelikult on kõik korras.

Ühesõnaga, süsteemi 100% kättesaadavus on palju olulisem kui andmete 100% korrektsus ja vigu on võimalik hiljem parandada – tees, mis vana aja andmebaasiteoreetikutes ilmselt külmavärinaid tekitab.

Abivahendid

Kui keegi veel ei tea, siis Fiddler (http://www.fiddlertool.com/fiddler/) on veebiprogrammeerija ning eriti AJAXi programmeerija parim sõber. Kogu veebitrafficu jälgimine, filtreerimine, breakpointide seadmine, omatahtsi pakettide modifitseerimine… ‘nuf said.

Jätkub veel…

2 responses so far

Nov 16 2008

Tech-Ed’i märkmed I

Published by Targo under Hea kood, Maad ja rahvad, SharePoint

Saabusin just tagasi Barcelonast Tech-Ed EMEA Developers konverentsilt, mis nägi välja umbes nagu ülaltoodud pilt. Barcelona kohta võib öelda nii palju, et homseks saadakse ka selle hotelli internetiühendus ilmselt korda, kus ma peatusin (lubati ju!), ja et mis iganes härra Gaudit mõjutas, oli tegemist millegi väga potentsega.

Aga nüüd teemast. Mitmetes ettekannetes oli muidugi ka asju, mida ennegi siit-sealt nähtud ja kuuldud, aga organiseeritud kujul info edastamine on alati abiks.

Järgnevalt minu memory dump sellest, mis mulle päev hiljem veel meelde jäänud:

Arendusprotsess

Stephanie Saad, kes on muidu ka überlahe tädi, rääkis agile developmentist Visual Studio kontekstis. Me kõik teame üht-teist agile developmentist ja Visual Studio uutest võimalustest, aga paljud neist on omavahel üksüheses vastavuses, ehk VS featured on ehitatud spetsiifiliselt agile metoodikate toetamiseks.

Siin pildil on peamiste agile põhimõtete ülevaade:

VS toetab neid näiteks järgmiselt:

Andmebaasid

Noppeid SQL 2008 uute võimaluste teemal:

  • Intellisense ja parem debugimise support.
  • MERGE käsk, mis töötab vastavalt vajadusele nagu INSERT, UPDATE või DELETE
  • Tabelitüüpi parameetrid
  • Change tracking – tabelitel ja ridadel oleks nüüd nagu versiooninumbrid
  • Suurema täpsusega date/time andmetüübid
  • HierarchyId andmetüüp hierarhiliste andmete hoidmiseks
  • Andmetüübid geograafiliste ja geomeetriliste andmete hoidmiseks (spatial data)

SharePoint

MOSS 2007 SP2 tuleb välja 2009 kevadeks. Minu jaoks üks olulisemaid parandusi on automaatne SQLi indeksite rebuildimine, mis aita ära hoida SP saitide “hapuks minekut”, kus kestva töö järel SP päringute jõudlus degradeeruma kipub. Olen seda situatsiooni ise ka mitme kliendi juures täheldanud. Täpsemat infot siit: http://blogs.msdn.com/sharepoint/archive/2008/10/24/prepare-for-the-upcoming-office-sharepoint-server-2007-and-windows-sharepoint-services-3-0-service-pack-2.aspx

Juba praegu on olemas Visual Studio extensions for SharePoint (http://www.microsoft.com/downloads/details.aspx?FamilyID=3E1DCCCD-1CCA-433A-BB4D-97B96BF7AB63&displaylang=en). Järgmises Visual Studios (VS 2010) on juba sisse ehitatud vahendid SharePointi serveritega töötamiseks – samamoodi nagu praegu on VSil sisseehitatud vahnedid SQL Serveriga integratsiooniks.

Põhiliseks tulevikusuunaks on siiski SharePoint online, mis toetab pea kõiki võimalusi, mis kohapeal paigaldatud SharePoint: http://www.microsoft.com/online/sharepoint-online.mspx 

Muuseas, abiks ressurss nii algajale kui ka kogenud SP arendajale on http://www.microsoft.com/click/SharePointDeveloper/

Jätkub…

No responses yet

Nov 01 2008

Projektide alustamine

Published by Targo under Ettekanded, Projektijuhtimine

beginning.jpg

Pidasin hiljuti Webmedias ettekande sellest, mida tuleks teha tarkvaraprojekti alguses, enne kui me tegelikult ridagi koodi kirjutame.

Panen oma materjalid siia ka, ehk on kellelegi abiks. PowerPointi formaadis slaidid on siin.

Slide1.gif

Slide2.gif

Slide3.gif

Slide4.gif

Slide5.gif

Slide6.gif

Slide7.gif

Slide8.gif

Slide9.gif

Slide10.gif

Slide11.gif

Slide12.gif

Slide13.gif

Slide14.gif

Slide15.gif

Slide16.gif

Slide17.gif

Slide18.gif

Slide19.gif

Slide20.gif

Slide21.gif

Slide22.gif

Slide23.gif

Slide24.gif

Slide25.gif

Slide26.gif

Slide27.gif

Slide28.gif

Slide29.gif

Slide30.gif

Slide31.GIF

Slide32.GIF

5 responses so far