<
Som nævnt i sidste omgang nyhedsbrev er der agurketid i Danmark, hvilke tydeligst afspejles i nyhederne, hvor der i bedste sendetid medtages indslag om kanodart. Vi i ANUG ligger ikke under for agurketiden og således blev der i onsdags afholdt endnu et møde i gruppen, dog med et reduceret antal deltagere som forventet.
Emnet: Pro Tools. Målet: At dele ud af hinandens værktøjskasser til det fælles bedste. Resultat: Flere værktøjer end vi kunne nå at komme igennem på en enkelt aften.
20 detlagere mødte op til mødet i Verticas kontorer, hvor vi som bekendt havde besluttet at lege lidt med formatet og benytte os af open space princippet, hvor deltagerne selv sætter agendaen indefor den ramme, som er givet på forhånd. Mødet var givtigt dog ikke helt på den måde, som jeg på forhånd havde forestillte. Det er dog det smukke ved open space: Man forventer et resultat, men får et andet langt mere resultat.
Med mødet i kassen er det tydeligt at emnet er et, som folk føler meget kraftigt for. Der var således virkelig god deltagelse fra alle deltagerne. Meningerne var mange og deltagerne gik virkelig op i at overbevise os om at netop deres tool var det bedste til opgaven.
Visual Studio tips og tricks
Vi lagde ud med tips og tricks i alles favorit IDE: Visual Studio. Vi kom bl.a. igennem et hav af tastatur genveje, for mange til at liste her. Dog vil jeg understrege en pointe: Vigtigheden af at lære de indbyggede tastaturgenveje i Visual Studio, da netop denne evne vil gøre dig mere effektiv i din hverdag og øge glæden ved at udvikle.
Morten "guidmaster" Jokumsen viste os lidt rundt i VB og snippets, som er ganske omfattende i forhold til hvad man har til rådighed i C#.
Jeg selv viste hvordan man ændrer code page i en tekstfil, hvis man har problemer med at indholdet bliver vist forkert i forhold til specialtegn.
Yderligere kiggede vi lidt på pre/post build events (C#/VB), som er en mekanisme til at afvikle kommandoer før og efter ens løsning bygges.
Sidst men ikke mindst kiggede vi på XML kommentarer og hvordan man konfigurerer sit projekt til at generere warnings ved build, hvis de mangler.
Visual SVN og Subversion
Subversion er et versionsstyringsværktøj som Team Foundation Server og Visual Source "Safe", som er ganske gratis at benytte. Brian fra kernegruppen viste os Subversion og Visual SVN, som giver Subversion integration i Visual Studio, som man er vant til det fra TFS og Source Safe. Det er værd at bemærke at Visual SVN koster $49 at benytte.
Desværre viste det sig at Visual SVN client integrerer sig med Visual Studio uden om den indbyggede support hvorfor "Pending Changes" vinduet i VS ikke opdateres. Denne information findes i et helt andet vindue. Lidt ærgerligt.
Brian viste også kort TortoiseSVN, som er en anden klient til Subversion, som integerer sig dirkete i Windows Explorer. Jeg foretrækker selv denne klient til Subversion, da den giver mig mulighed for en langt større grad af kontrol over, hvad der ryger under source control og hvad der ikke gør. Fordi TortoiseSVN integrerer med filsystemet i stedet for Visual Studio, behøver jeg ikke have alt med i min solution fil, som jeg gerne vil have under source control.
Som Subversion server viste Brian os Visual SVN Server, som er en pakke, der gør det utroligt nemt at få en Subversion server op og køre. Det tager ca. 3 min fra man starter installationen til man er oppe og køre.
Sidst men ikke mindst blev AnkhSVN nævnt som et gratis alternativ til Visual SVN af undertegnede. AnkhSVN er kommet under Collabnets vinge og har dermed modtaget penge til at videreudvikle open source produktet. Collabnet er i øvrigt det firmat, som oprindeligt stod bag udvilklingen af Subversion. Produktet er interessat fordi det i version 2.0 integrer sig som en SCC pakke i stedet for blot som et addin, hvilket betyder at det ikke lider under samme begrænsning som Visual SVN, som ikke baserer sig på Visual Studio SSC modellen.
Podcasts
Her er et eksempel på en vinkel på aftenen, som jeg ikke havde set komme. Jeg havde regnet med at aftenen skulle stå i softwarens tegn, men Klaus Hebsgaard ville det anderledes med sit forslag om at inkludere podcasts på agendaen. I retrospekt er jeg helt enig i at de skulle med og vi fik da også nogle rigtig gode podcasts luftet med udgangspunkt i Klaus' post med de podcasts, han selv lytter til.
Konsensus er at man bør lytte til Hanselminutes og .NET Rocks! uden diskussion. Hanselminutes, hvis man kun har tid til at lytte til en enkelt.
Selv fik jeg anbefalet Stackoverflow podcasten med selveste Jett Attwood og Joel Spolsky, som jeg gennem ferien har lyttet til og fundet ganske interessant. Det blev påpeget at der er for meget "snak" i den; det er dog netop dette element, jeg synes er så godt.
Polymorphic Podcast blev fremhævet som værende god, men dog af noget svingende kvalitet. Jeg har selv tidligere lyttet til den, men fordi den ikke blev frigivet med jævne intervaller holdt jeg op. Det skal dog siges, at jeg nød den, da jeg lyttede til den; særligt episoden Object Thinking, som handler om objekt orienteret teori står som en fremragende episode, som klart kan anbefales.
Min egen liste over podcasts findes på min blog.
Red Gate SQL Compare
SQL Compare er et værktøj, som bør være ikke alle udvikleres værktøjskasse. Det handler i bund og grund om at lave database sammenligninger og danne SQL change scrips baseret på forskellene.
Med SQL Compare i værktøjskassen er det en leg at lægge database ændringer i produktion. Man kører simpelthen bare værkstøjet og får genereret et change script, som afvikles i produktion. Microsoft har et lignende værktøj i form af og hold nu fast: Visual Studio Team System for Database Professionals. Desværre er der bare den hage, at det er en del af Team System og er dermed ikke gratis at anskaffe for udviklere. Red Gate produktet er forholdsvist kostbart, men set i forhold til Team System og i særdeleshed i forhold til de udviklertimer, man sparer på at lave change scripts i hånden, er det småpenge, vi taler om.
Red Gate har et hav af værdifulde værktøjer til SQL Serveren. Ud over SQL Compare blev SQL Data Compare nævnt, som sammenligner data i stedet for skema mellem databaser. Utroligt nyttigt, hvis man har en masse metadata at lægge i produktion.
Desuden kiggede vi på SQL Prompt, som giver intellisense i SQL Server Management Studio. En feature, som i øvrigt kommer som en del af SQL Server 2008, så vent med at gå ud og skyde kassen efter SQL Prompt.
ReSharper
Ak inden udvikler softwareliste er komplet uden min personlige favorit: ReSharper fra Jetbrains. Dog endte fremvisningen mest som en sammenligning af, hvor meget af ReSharpers funktionalitet, der er tilgængelig som standard i Visual Studio. Det er længe siden jeg har benyttet mig af en "clean" udgave af Visual Studio, så derfor er det efterhånden vanskeligt at vide, hvad 2005 og 2008 har bragt til bordet af features og dermed også vanskeligt at fremvise en killer feature, som ReSharper har frem for Visual Studio.
ReSharper er god til at vise, hvilke funktioner, der er tilgængelig på et givet tidspunkt gennem dens Context Action menu. Menuen er en lille rød pære, som dukker op på den linie, man redigerer, hvis ReSharper har noget at byde ind med.
Ligeledes kan man få en liste over tilgængelig refactorings, ReSharper byder på langt flere end Visual Studio, som er tilgængelig på det pågældende sted. En rigtig rar ting, når man er ny med ReSharper, men bestemt også brugbart på længere sigt, idet man aldrig misser en mulighed for at benytte værktøjet.
For mig gør ReSharper to ting, som jeg har svært ved at undvære: 1) den letter kodenavigering og dermed den overhead, som jeg skal bruge på at komme frem til mit mål. Det er yderste sjældent at jeg benytter musen, når jeg sidder med Visual Studio.
ReSharper tillader bl.a. hurtig navigering i nedarvningshierarkier, at finde en type (CTRL + T), at finde en fil (CTRL + SHIFT + T), at finde klasser, som implementerer et interface.
Efter at have brugt ReSharper i mange år, er min kodestil blevet tilpasset de features, som værktøjer giver til at genere kode on til fly. Jeg kalder dette at "kode fremad". Når man udvikler kode, trækkes man ofte ud af sin kontekst, fordi man skal erklære en ny variabel, indføre en parameter eller property for at kunne løse opgaven. Med ReSharper er dette ikke et problem, fordi den har en række kommandoer til at indføre disse konstruktioner uden at flytte sig ud af den kontekst, man er i. Man benytter simpelthen bare sin nye parameter og lader dernæst ReSharper genere den for sig. Denne teknik er yderst velegnet til test driven development.
Vi kiggede yderligere på ReSharpers Live Templates, som er code snippets på steroider. Det er utroligt nemt at lave en ny Live Template og man kan vælge, hvor stort scope, den skal have: Solution, global i Visual Studio. Ikke noget med at fedte rundt med XML filer og Windows Explorer, da der er et lækkert UI til at opbygge sin templates med en fin lille macro edtor, så man altid ved, hvad man har at gøre godt med fra toolets side.
Hvis du vil vide endnu mere om ReSharper, kan du læse min anmeldese af produktet. Bemærk at anmeldelse er af version 3.0 og at nyeste version af ReSharper er 4.0.
TestDriven.NET
Et add-in til Visual Studio, som gør det muligt at køre unit tests i forskellige unit test frameworks. Alle de store et understøttede. TestDriven.NET blev fremhævet specifikt fordi det giver mulighed for at højreklikke på en reference i Visual Studio og vælge "Go to Reflector". Herefter åbnes Reflector med den pågældende assembly loadet. Man slipper dermed for at fedte rundt i filsystemet for at finde den rigtige assembly. Man slipper endda for overhovedet at installere Reflector, da TestDriven.NET selv henter den ned, hvis den ikke allerede findes på maskinen.
LINQPad
Vi diskuterede muligheden for at skrive .NET kode uden for Visual Studio. I mange scenarier er det ganske nyttigt at man hurtigt kan teste noget isoleret kode uden at skulle starte en ny Visual Studio instans op. Hertil findes flere tools, bl.a. kan nævnes Snippet Compiler, men ét af de nyere skud på stammen er værktøjet LINQPad, som udover at kunne skrive og eksekvere C# 3.0 eller VB 9 kode også tilbyder at eksekvere LINQ forespørgsler mod f.eks. en SQL database. Værktøjet er gratis og kan downloades på www.linqpad.net.
Alt det vi ikke nåede
NClass - UML designer
TeamCity - build server
Reflector - object explorer. Se kildekode i assemblies
Macro Objects Word 2 CHM - skab hjælpefiler fra Word dokumenter
Launchy - hurtig start af programmet fra startmenuen. Se mere
BeyondCompare - diff/merge af filer. Koster penge
WinMerge - diff/merge af filer. Gratis
SourceGear Diff - diff/merge af filer
Umbraco - dansk open source CMS med Niels Hartvig ved roret
DoFactory - GoF design patterns, AJAX design patterns
Virtual PC
TimeSnapper - løbende screenshots af din desktop gennem dagen
BrowserShots.org - hvordan ser din webside ud i 40 forskellige browsere?
CodeRush - produktivitetsbooster til Visual Studio. ReSharper konkurrent
Refactor Pro - refoctoring tool fra gutterne bag CodeRush
NCover - open source code coverage tool
NDepend - analyse af afhængigheder i dine løsninger
UltraMon - enhver udvikler har flere skærme, enhver udvikler har brug for UltraMon
Mobiler - remote desktop til din Windows Mobile telefon
Opera Mobile 9.5 - iPhone-agtig browser til Windows Mobile