Iga lahendus tekitab uusi probleeme ehk alati võib leida veel ühe bugi.

Eesti blogid

Lingid, mida külastan

Rahvusvahelised blogid

Muud

Hetkel lugemisel:

Külastajate kaardid:

Lehe külastajate asukohad

Lugejad:

Hetkel lehel:

hit counters

Toetaja:

jaanuar 2008 - Posts

Väljakutse: Mõista, Mõista, mis on vastus?

Huvitav väljakutse (või ülesanne) teile, mida jagas minuga Henn Sarv just hetk tagasi.

Mis te arvate, mis on vastuseks all paikneva koodi käivitamisel?

int i = 1;
i += i++;
Console.WriteLine(i);

Annan vihje, vastuseks saab olla kas 2, 3 või 4? Ärge piiluge ega petke - mõelge ja arvake kõigepealt ise :)

Ja kui olete omaarvates õigele tulemusele jõudnud, siis käivitage näiteks konsooli rakenduses ja vaadake, mis saate :)

Kes arvas õigesti, võiks kommentaaris näpu püsti ka visata. Hiljem kas kommenteerin ise, miks see nii on või kommenteerib Henn (eks vaatab). Olge kannatlikud, annan teile aega :)

Kui keegi teab vastust ise, siis võiks ka end tagasi hoida. Las olla natukene põnev :)

Posted: jaan 30 2008, 11:55 PL by melborp | with 3 comment(s)
Filed under: ,
Microsoft Koodi Galerii nüüd kättesaadav

Ma olen oodanud seda hetke, millal lubatakse avalikustada uudis Microsoft Code Gallery kohta - see hetk ón käes :) Ja nüüd kõigest lähemalt ...

Selleks, et paremini mõista mis on Microsofti koodi galerii ja miks see loodi, tuleks kõigepealt anda ülevaade olemasolevatest võimalustest. Microsoftil on olemas mitmed keskkonnad ja viisid jagada informatsiooni kommuuniga või võimaldada kommuunil informatsiooni jagada kommuuni sees. Nendeks on:

  • MSDN Wiki - on mõeldud rohkem pisikeste ja keskmiste koodisnippetite, dokumentatsiooni, kommentaaride lisamiseks. Hea on kui koodi dokumentatsiooni juures on lisainfot ja nippe.
  • Codeplex - Codeplex on projekti arendamist toetav keskkond koos koodihalduse, wiki, issue/bugi tracking jne toega. Igaüks saab seal oma projekti keskkonna luua, arendust hallata, koodi hoida jne.
  • MS Downloads - on ametlike toetatud tarkvara toodete välja laskmiseks
  • Blogid (MSDN, Technet, ...) - on olemas mitmed blogi keskkonnad, kus Microsofti inimesed aktiivselt teadmisi, kogemusi, seiklusi jagavad. Sealhulgas ka erinevaid võtteid, trikke, koodijuppe jne, aga päris projekti arendamist nad oma blogis ei tee.

Nüüd on kommuunil veel üks võimalus ja keskkond, mille kaudu jagada kasulikke ressursse, näiteid, koodijuppe. Sinna on võimalik lisada suurt variatsiooni erinevaid andmeid. Koodi galerii aga ei oma tarkvara projekti arendamist toetavaid vahendeid, seega kui teil on nutikas koodijupp, mida soovite edasi arendada ja võibolla kaasata teisi inimesi, siis on õigem kasutada codeplexi.
Antud keskkond sai loodud selleks, et teil oleks mugavam jagada erinevaid kasulikke ressursse (koodijupid, näited, dokumendid, .... ) ning see koguneks ühte suurde hoidlasse, kust on informatsiooni jälle lihtne üles leida. Ükski üleval pool mainitutest ei ole otseselt antud suunitlusega.
Lisaks mõelge sellele, mis on teie esmane tegevus, kui kasutate või õpite tundma uut tehnoloogiat? Loete dokumentatsiooni ja otsite erinevaid nutikaid koodinäiteid. Kui sait käima läheb, siis loodetavasti pole vaja alati enam kaugemalt otsida :) Effektiivsem töötamine :)

Seega MS koodi galerii on keskkond, kuhu on võimalik lisada erinevaid kasulikke ressursse, mida soovite jagada teistega kommuunis.

Viited:

PS! Tegu on minu arvamusega, miks antud sait loodi.

Posted: jaan 30 2008, 12:00 EL by melborp | with no comments
Filed under: , ,
Kasulikud viited: LINQ, Spotlight

LINQ to SQL -i näidete ressurss

Leidsin LINQ to SQL -i group by lause näiteid otsides väga vinge ressursi, kus oli palju erinevaid LINQ to SQL -i näiteid. Kahjuks on antud näited kirjutatud VB.NET -s, aga põhimõtteliselt ei tohiks see häirida - LINQ on ikka sama :) C# -i jaoks näiteid ei leidnud.

Technet Spotlight

Microsoft organiseerib aastas palju prestiižeid ja suuri üritusi nagu TechEd, IT Forum, SOA & Buisness Process Conference jne. Nüüd juba mitmed kuud on kättesaadav kõigile keskkond nimega Technet Spotlight, kuhu pannakse üles erinevate ürituste videod ning neid võib igaüks vaadata. Antud vihje sain tänasel Andmekaeve ja ärianalüütika seminaril - tänud Rafal Lukawieckile.

 

Edu LINQ -i ja videotega!

Hea abivahend presenteerimisel - ZoomIt

Igakord kui olen esinenud, on vaja midagi (teksti, pilti, linki, ....) näidata lähedalt (ehk suuremalt, kui kirjas on ehk zoomida). Slaidid on küll õiges suuruses, aga näiteks koodi näitamisel tekib lähedalt näitamise vajadus küll ja siis otsid shrifti suurendamise kohta jne (ajanõudlik tegevus, isegi kui tead, kust otsida). 

Praegu osalen andmekaeve ja äriintelligenti seminaril, mida annab Rafal Lukawiecki (kes on muideks super hea esineja - ma olen temalt erinevaid sessioone kuulnud aastast 2003 ja pole kordagi pettunud) ning esinemise käigus ta tihti peale zoomib sisse tekstidesse või kohtadesse, mida inimene keskmises reas või tagareas, ei näe. Küsisin temalt vahendi kohta infot, mida kasutab ja proovisin ka ise järgi selle järgi ning nüüd jagaksin teiega.

Väga lihtne ja nutikas vahend loodud Mark Russinovich -i poolt ning nimeks sellel ZoomIt. Loogiline nimi, sest just seda antud vahend teebki.

image

Alla saate tõmmata siit. Miskit keerukat kasutamises ei ole.

Üks märkus siiski juurde (hea teada): Sel ajal, kui olete zoomitud vaates, pilti ei refershita.

Täiendus: Usercontrollid Sharepointi arenduses

Kunagi kirjutasin postituse, kus demonstreerisin kui kasulikud võivad olla Sharepointi juures ASP.NET -i UserControl -d.

Täiendaks antud postitust pisukeste kommentaaridega.

Nimelt demos laen ma UserControl -i Webpart -i sisse ning kasutan Webparti oma lehel. See aga ei pea nii olema. UserControl -i võib kasutada ka otse lehel registreerides selle lehe alguses (tüüpiline usercontrol -de kasutamine .aspx lehel reaga<%@ Register TagPrefix="uc1" TagName="links" Src="WebUserControl1.ascx" %> ja seejärel paigutamine lehel).

Webpart -i kasutamine on vajalik ainult juhul, kui soovite loodud webparti Sharepointis Webpartide raamistiku abil hallata. Webpartide raamistik võimaldab näiteks lehe jooksvat ülesehituse muutmist ning disainimist, mida Sharepoint ära kasutab - saate oma lehel olevaid osasid ümber tõsta ja neid hallata. Usercontrol, mis on registreeritud lehel, on staatiliselt paigas ja jooksvalt ümber paigutada ei saa (ka ei ole muid webpartide hüvesid).

On olemas niisugune webpart Sharepointile nimega Smartpart, mis oskab Usercontrol -e sisse laadida. See väldib webparti koodi loomise oma features ja võimaldab Sharepointist hallata, mis Usercontrol on nähtav ning, kuna smartpart on webpart, siis kõik muud webpartide raamistiku hüved on ka kättesaadavad.

Ehk siis võtmeks antud postitusel on:

  • Kasutage Usercontrol -e, et vältida staatilise disaini koodi kirjutamist (nagu webpart tihtipeale nõuab).
  • Laadige Usercontrol webparti juhul kui soovite/vajate webparti raamistiku hüvesid. Muul juhul on võimalik usercontroli ka niisama aspx lehel kasutada.
  • Smartpart võib olla kasulik nii mõneski olukorras :)
Sharepointi ressurss: WSS demo

Leidsin ühe väga hea Windows Sharepoint Services ressursi nimega WSS Demo.

Antud lehel on näiteks MOSS -i lõppkasutaja treening üleval, viited suurele hulgale Sharepointi blogidele ja stsadmin -i käsud. Muidugi on kas autoril endal blogi ja nii mõnegi huvitava postitusega.

.Net Clipboard, võimalikud probleemid ja GUID -i genereerimine

Olete te kunagi soovinud lisada midagi Clipboardi programmiliselt ehk siis kopeerida midagi mällu, et hiljem kuskil jälle välja pasteerida? Minul tekkis niisugune soov.

Selle realiseerimine ei tohiks olla keerukas. Windows Forms -l (.Net 2.0 -s) on olemas niisugune klass nagu Clipboard (System.Windows.Forms.Clipboard). Sellel klassil on erinev hulk meetodeid, mille abil saab kas objekte mälust leida või siis neid sinna panna ja arendajal jääb üle vaid neid kasutada. On ainult üks nõue - Clipboard objekti tuleb kasutada single-thread (STAT) kontekstis. Täiesti toimiv lähenemine ning valmiskood teksti panemiseks Clipboardi näeb välja niisugune:

class Program
{
    [STAThread]
    static void Main(string[] args)
    {
        System.Windows.Forms.Clipboard.Clear();

        Guid newGuid = Guid.NewGuid();
        DataObject dataObject = new DataObject(DataFormats.Text, newGuid.ToString());
        System.Windows.Forms.Clipboard.SetDataObject(dataObject, true);
        Console.WriteLine(newGuid.ToString());
    }
}

Antud kood lisab Guid -i süsteemi mällu, nii et hiljem saab pasteerida selle kuhugi.

Lihtne onju? Tavaliselt see nii ongi, aga on mõned erijuhtumid, kus see ei pruugi toimida.

Erijuhtum 1 - ASP.NET

Te soovite süsteemi mällu kopeerida andmeid ASP.NET -i rakendusest. Kuna ASP.NET -i lõim (ehk thread) ei ole ühe-lõime keskkond (ehk STAT), siis selleks, et Clipboardi kasutada tuleb luua eraldi lõim, milles Clipboardi andmeid pannakse. Antud tegevus on kirjeldatud all asuval urlil, aga koodi toon ka siia.

    protected void MingiSyndmus(object sender, EventArgs args)
    {
        System.Windows.Forms.Clipboard.Clear();
        Thread thread = new Thread(new ThreadStart(CopyToClipboard));
        thread.SetApartmentState(ApartmentState.STA);
        thread.Start();
        thread.Join();
    }

    [STAThread]
    public static void CopyToClipboard()
    {
        Guid newGuid = Guid.NewGuid();
        DataObject dataObject = new DataObject(DataFormats.Text, newGuid.ToString());
        System.Windows.Forms.Clipboard.SetDataObject(dataObject, true);
        Console.WriteLine(newGuid.ToString());
    }

Voila, ja toimiv lahendus (peaks olema).

Erijuhtum 2 - VPC

Kuna VPC jooksutab jagatud Clipboard teenust (et VPC ja väline OS saaks kopeeritud asju jagada), siis enamus proove kasutada System.Windows.Forms.Clipbaord objecti edukalt oma koods VPC alt ebaõnnestub. Viga, mis te saate on all oleval pildi ja see ütleb teile üldiselt väga vähe.

image

Head viited lahendustele asuvad siin. Kokkuvõtvalt on olemas kaks varianti - loota, et teil õnnestub siiski Clipboard objekti kasutada mitmeid kordi proovides või siis välja lülitada teenus, mis Clipboardi jagamist võimaldab VPC ja välise süsteemi vahel. Kusjuures minul eraldi Threadis Clipboardi kasutamine kord töötas ja teinekord jälle ei töötanud.

Kasutades .Net 3.0 -i Clipboard klassi, saab vähemalt tagasi veidi parema teate:

COMException:
"OpenClipboard Failed (Exception from HRESULT: 0x800401D0 (CLIPBRD_E_CANT_OPEN))"

Vähemalt olete nüüd teadlikud niisugustest seiklustest, kui peaksite Clipboardi kasutada soovida.

Lõpetuseks: Miks Guid -i näide?

Ma soovisin GUID -e genereerida, nii et ei peaks neid kopeerima kuskilt vaid käivitan konsooli rakenduse shortcut -i abil ning seejärel pasten tulemuse juba. Kahjuks soovisin seda VPC -s teha.

Nüüd, ma tean, et on olemas valmis GUID -de generaator - ma ei teadnud sel hetkel, kus ta asub, kuna VS2008 ega VS2005 vaikimisi õigesse kohta ei viidanud (ei tea miks). Sellest tulenevalt otsustasin, et kiirem on kirjutada oma (mis see Clipboardi kasutamine siis ära ei ole), aga vot sattusin hoopis sellise leiutise otsa.

Kes on samas olukorras, nagu mina olin ning ei tea, kus asub GUID -de generaatori utiliit, siis teaks et see on kaasas Windows SDK -ga (asukoha järgi järeldan seda) ja asub "C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\guidgen.exe". Antud utiliit on ka väärt kasutamist, vaadake all asuvat pilti :)

image

Te saate antud utiliidi lisada Visual Studio External Tool -de hulka ning seejärel käivitada sarnase kombinatsiooniga nagu Alt + T + G :) (defaultina see seal asubki)

Edu!

Huvitavad viited 27.01.2008

Pärast mõningast kaalumist, kas kirjutada iga lingi kohta eraldi postitus või jagada neid lugejatega ühes postituses, tegin otsuse. Otsuseks kirjutada kõik ühes postituses, iga lingi kohta eraldi mul nii pikka juttu ei ole (ega soovi kirjutada), et eraldi postitust väärt oleksid, samas on need viited kasulikud mulle ja loodetavasti põnevad teile :)

Alustagem siis,

Concept programming ehk põhimõtete programmeerimine

Tuleb välja, et maailmas on olemas niisugune lähenemine arendamisele, mille nimeks on concept programming ehk põhimõtete või arusaamade vms programmeerimine. Selle aluseks on uskumine, et praegused progemiskeeled ei võimalda põhimõtteid korralikult või  kirjeldamine praegustes keeltes on keerukas ja mitteproduktiivne tegevus ning tegelikkuses on kuristik koodi ja põhimõtete kirjapanekute vahel. Hetke programmeerimiskeeled nagu C# või java võimaldavad põhimõtteid kirja panna piiratult (ainult objektide, meetodite .... abil) või muundatud kujul.

Põhimõtete kergemaks kirjapanekuks koodi kujul on loodud keel nimega XL - Extensible Language, millel siis niisuguseid piiranguid ei oleks.

Huvitav ja arendav lähenemine. Täpsemalt leiate infot siit slaididest ja lehelt.
Lisaks on kirjutis InfoQ -s ja looja veeb.

WCF -i veebi programmeerimise mudeli ressursid

Niisugused ressursid leiate all järgnevalt lingilt:

Eesti keelne ülevaade BizTalk Serverist

Jaan, Vita arendaja kirjutas mõnusa eesti keelse ülevaate BizTalk Serverist, mille leiate järgnevalt veebiaadressilt:

Miks eelistada tarkvara disaini oskustega arendajaid?

Martin Fowler kirjutas huvitava postituse teemal, miks ThoughtWorksis eelistatakse pigem arendajaid, kes tunnevad lahenduse disainimispõhimõtteid, arendusmustreid ning parimaid praktikaid ja järgivad ning on huvitatud nendest, neile kes tunnevad super hästi platvormi.

Analüüs XML -il põhinevate dokumentide formaatide kohta

Burton Group on avalikustanud huvitava analüüsi erinevate XML -l põhinevate dokumendi formaatide kohta, millel nimeks "What's Up, .DOC? ODF, OOXML, and the Revolutionary Implications of XML in Productivity Applications". Selles puudutatakse formaate ja tehnoloogiaid nagu ODF, OOXML (ehk OpenXML), PDF, UOF ja W3C XML -i standardid. Dokument spekuleerib erinevate formaatide tuleviku osas ning lisaks sisaldab hulganisti viiteid lisalugemiste jaoks :). Minu jaoks oli see põnev.

Modifiability: Or is there Design in Agility

QCon -l toimunud arutelu ThoughtWorksi arhitektide poolt Martin Fowleri modereerimisel teemal, kuidas disainida lahendusi, mis on pidevas muutumises (ehk agiilne arendus, evolutsiooniline disainimine ja kas ning kuidas on see võimalik).

Uurimuse tulemus: Testil põhinev arendus (ehk TDD) muudab arendaja produktiivsemaks

Välja on tulnud huvitav uurimus, milles jõuti tulemusele, et TDD kasutanud arendajad olid palju produktiivsemad, kui need, kes ei kasutanud testil põhinevat arendust.

Hea ülevaade on kirjas Phil Haack -i poolt.

More Posts Next page »