TDD etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
TDD etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

5 Mart 2014 Çarşamba

MVC dunyasinda ilerlemek

Gecen seferki yazimda bahsettigim video serisini bastan sonra seyrettim, notlar aldim, programci arkadaslarla konuyu tartistim ve nihayet ilk projeyi gelistirme asamasina geldigimi hissediyorum. Kendimi bilgi seviyesi olarak baslangica gore cok daha ileride goruyorum. (Uzmanliktan cok uzak ama ana hatlari kavramis)

Bir hayli not aldim. Bu video serisi inanilmaz faydali. isinize yarayacak hemen hemen her yere dokunuyor. Ruby kursunda bile canli olmasina ragmen konular bu kadar iyi anlatilmamisti . Sonucta video derslerin TDD (Test Driven Development) konusuna girmesi de cok yerinde bir yaklasim oldu.

Simdi su konularin ne oldugu nasil ve nerede kullanilacagini anladim

  • Razor
  • MVC
    • Model
    • View
      • bundling
      • layout
      • partial view
    • Controller
      • Ajax
      • Data connection
  • Entity Framework
  • Tests
  • Cache
  • OpenID
  • Authorization / Authentication 

Bu ogrendiklerimi simdi sicagi sicagina bir projede kullanarak pekistirmem gerekiyor. Elimde .NET Form View ile yapmaya calistigim ama yarim kalmis bir proje var. Bu projeyi bastan MVC ile yazmayla baslayabilirim. Sonucta zaman sikintisi olmayan bir konu oldugundan daha rahat davranabilirim. Biraz da sans ile sanirim is yerinde de bir tane baslanmis ama gelistirilmeyi bekleyen MVC projesi devraldim.

Birden soguk suya atlamak bazen en iyi ogrenme sekli. Sadece bu sular cok soguk oldugu icin onceden biraz isinma hareketi yapmakta fayda var. O yuzden mutlaka konsepti tam anlamiyla cozmek sart.

Simdi biraz kapanip is yapma zamani.
Kullanacagim versiyonlar

JQuery 1.8.2
MVC 5.1
.NET 4.5

27 Şubat 2014 Perşembe

MVC dunyasina gec bir giris

Uzun zamandir uzerinde calistigim, bakim yaptigim tum projelerin web-forms tabanli olmasindan dolayi erteleyip durdugum MVC dunyasina artik girme zamani gelmisti. Kendime bu sene icin cizdigim rotanin bir parcasi olarak izleyecegim yolun adimlari buradan geciyor.

Bu sene icin kendimi zamani yakalamaya adadim diyebiliriz. Sene sonuna kadar extreme programming konusunu tam anlami ile uygulamaya gecirmis olmak istiyorum.  Ama bu konuya klasik konvansiyonel yontemlerden direk olarak dalinca duvara tosladim. Onun icin kendime gecisli bir plan hazirladim. VB.NET ile ASP.NET uzerinde web-forms kullanan birisinin her ne kadar klasik ASP gecmisi olsa da baliklama Ruby'e girmesi (en azindan benim yasimda) husran olabiliyor.

Dolayisiyla bildigim ortamdan yola cikarak gecisler yapa yapa hedefe ulasacagim bir rota belirledim. Bu rota;

  1. GIT
  2. C#
  3. MVC
  4. Entitiy Framework
  5. TDD
  6. BDD
  7. S.O.L.I.D.
  8. Ubuntu
  9. Ruby
  10. Ruby on Rails
  11. Cucumber
  12. MongoDB
Hepsini sirayla yapmak biraz zor. cunku ic ice gecmis yapilar da var. Dolayisiyla ilk 6 maddeye ayni anda girmek durumunda kaldim. Bu gecis en azindan kavramlarin oturmasi icin yararli oluyor.

Bir suru kitap indirdim, okudum, makalelere daldim ve en sonunda super bir video kurs ile tanistim. ilk 6 madde icindeki 4 konuyu kapsayan bu kursu eminim arayinca siz de bulabilirsiniz ama kolaylik olsun diye bir kez de ben yazmak istedim.

ya da buradan direk ulasabilirsiniz 

Kaynak kodlarina da buradan ulasabiliyorsunuz 

Altyazi secenegi ile ingilizce veya Turkce altyazi acabiliyorsunuz ama uyarayim Turkce google translate Turkcesi. Yani birsey anlasilmiyor. ama ingilizce altyazi ile konusmada anlayamadiginiz bolumleri yaklalamak daha kolay olabiliyor. 




17 Ocak 2014 Cuma

Specflow ile .NET uzerinde BDD

Bir muddettir kendi kabugumda kalip surekli uretim yapmak yuzunden herseyden cok geri kalmisim. Simdi acigi kapatma zamani. Cok konu var yakalamam gereken birden tamamen farkli bir ortama bakinca birseyleri anlamak cok da kolay olmuyor. O yuzden gecisi su sekilde planladim.

Once bildigim ortamda ortak olan konulari ogrenmeye calisacagim. Dolayisiyla beynimi once ortama alistirmak icin .NET uzerinde MVC yapisina uyum saglayip, testleri burada yazacagim. Sonra yapiya uyum sagladigimda geriye sadece isletim sistemi ile dil kalmis olacak.

Bu yuzden halihazirda kendim icin yazdigim ama henuz bitirmedigim programi yeni yapilar ile yazmaya karar verdim. Normalde VB.NET kullanmama ragmen C# a da asinayim dogal olarak. Ancak simdiye kadar sadece bakim yaptim yani hic yeni proje gelistirmedim.
git bash

Catiyi su sekilde kuruyorum.
DilC#
OrtamMVC4
Yazilim ortamiVisual Studio 2010
Data baglantisiEntitiy Framework
BDDSpecflow
Unit TestMsTest.2010
Versiyon Kontrolgit ve bitbucket.com

Simdi adim adim ne yaptigima gelince

  • Bende zaten kurulu oldugu icin Visual Studio 2010 kullanacagim
  • www.bitbucket.com da bir hesap actim. (isterseniz github.com dan da acabilirsiniz)
  • git-bash veya git for windows'u indirip kurdum
  • http://www.asp.net/mvc/mvc4 adresinden MVC 4 u indirip kurdum 
    • (Bu arada MVC 5.1 cikti tabi http://www.asp.net/mvc/overview/releases/mvc51-release-notes)
    • Install-Package Microsoft.AspNet.Mvc -Version 5.1.0
  • http://visualstudiogallery.msdn.microsoft.com/9915524d-7fb0-43c3-bb3c-a8a14fbd40ee adresinden specflow'u indirip kurdum.
  • Diskte proje icin bir klasor actim
  • bitbucket'e login olup "create repository" ile bir repo actim
  • Git bash'a girip, Proje klasorune gectim. (cd ile eski usul :)) 
  • sirayla su komutlari calistirdim
  • git init
  • git remote add origin https://username@bitbucket.org/user/repo.git 
  • yukaridaki kirmizi alani kendi  bilgilerinizle degistirin. 
  • Visual Studio acip yeni bir proje actim. Visual C# / Web / ASP.NET MVC 4 Application 'u sectim ve klasor olarak yukaridaki actigim klasoru sectim. 
  • Sonraki ekranda Select a Template bolumunde "Internet Application", View Engine'e "Razor", Create a unit test project bolumune bir isim verdim ve OK'e bastim
  • Razor'u secmemdeki temel etmen internette aradigimda TDD icin uygun olmasiydi
  • Visual studio icinden Tools/Library Package Manager / Package Manager Console  acip icinde "install-Package SpecFlow -ProjectName RM.Specs" yazip enter'a basarak yukledim. RM benim projemin adi bu arada 
  • sirayla sonra sunlari calistirdim
  • Install-Package SpecFlow.NUnit
    Install-Package SpecRun.SpecFlow
  • Test projesinin icinde Features diye bir klasor actim.
  • klasore sag tiklayarak add new item -> SpecFlow Feature File secerek Restaurant diye bir feature ekledim
  • Test projesinin icinde Steps diye bir klasor actim
  • Restaurant.feature dosyasi icinde herhangi birseyi henuz degistirmeden sag tiklayip acilan menude  "Generate Step Definition" i sectim. ve dosyayi Steps klasorune kaydettim
  • test projesindeki App.Config dosyasinda su degisikligi yaptim 
  • <specFlow>
        <!-- <unitTestProvider name="MsTest" /> -->
      <unitTestProvider name="MsTest.2010" /> 
    </specFlow>
  • Restaurant.feature dosyasi acikken visuaal studio'da  sag tiklayip Run Specflow Scenarios u secerek testlerin calismasini sagladim. 
  •  Test'ler Pending durumunda oldugu icin calismadilar ama Specflow Step'leri calisti. Yani bu asamaya kadar hersey dogru. 
Calisma ortamimiz hazir olduguna gore bu haliyle git'e atabilirim.
git bash ile proje klasorunun icindeyken 

git add .
git commit 
(mesajinimizi yaziyoruz) 
git push origin master 

Gelismeleri paylasacagim.