GitBash Notlarım

  • Bu işlemler için bilgisayarınızda git-bash yüklü olmalıdır.
  • Projeyi bilgisayarınıza indirmek
    1. İlk olarak Github, Bitbucket ne kullanıyorsanız clone url bulun
    2. Projenin bilgisayarınızda olmasını istediğiniz klasörü açın.
    3. Boş bir alana fare ile sağ tıklayın ve “Git Bash Here” tıklayın. Bu işlerm git bash komut satırını ilgili klasörde açmış olacak, dir yöntemde cd.. cd.. …. ile klasöre kadar gitmelisiniz.
    4. Projeyi çekmek için “git clone <kopyaladığınız proje url>” ve proje bilgisayara indirilmeye başlar.
  • Projeniz için yeni branch açmak
    1. Proje klasöründe mouse ile sağ tık “Git Bash Here” 
    2. git checkout -b “<branch ismi>”
    3. Verdiğiniz isimde branch açılır ve otomatik o branch aktif olur
  • Projedeki tüm branchleri görmek
    1. Proje klasöründe mouse ile sağ tık “Git Bash Here” 
    2. git branch
    3. Branch listesi ekranda listelenir
  • Projede yapılan değişiklikleri görmek
    1. Git bash ekranına “git status -s” yazılır. (-s > kısa bilgi içindir yok uzun uzun ekranda bilgiler yer alır)
    2. Ekranda değişikliklere uramış dosyaların listesi gelir
    3. Her bir dosyanın ismini başında bir harf yada simge yer alır, bunlar dosya üzerindeki durumu ifade eder. Ayrıntılı listesi buradadır.
  • Ve commit, değişiklikler sunucuya yollamaya hazırlayıp, yollamak(push)
    1. “git add -A” ile tüm dosyalar commit dahil edilir
    2. git commit -m”<commit_mesajı>”
    3. git push origin <push_yapılacak_branch_adı>

Peki YA ŞİMDİ?

peki ya şimdi, Peki Ya Şimdi, PEKİ YA ŞİMDİ?

Bu kelimeler uzun zamandır kendime sorduğum, sebebinin mesleki tatminsizlik olduğunu anladığım soruların sadece bir tanesi.

Benim gibi yaklaşık 6 yıldır bu işi severek yapıp bu soruları sormaya başlamış iseniz demek ki artık sıradaki adıma sizinde geçme zamanınız gelmiş demektir.

Peki ya şimdi?…..

Yazılım hayatımda şuan ana kadar bir çok projenin, sorunun, çözümün, mesainin, sinirin, stresin içinde epey bir yol kat etmiştim. Bir çok şey öğrendim, deneyimledim. Kod okudum kod yazdım çözüm geliştirdim google ile, mantık ile, tecrübe ile, başkasının aktardığı tecrübe ile.

Kompleks senaryolar için kompleks çözümler, imkansızlar gerçekleştiriyorsunuz. Yani kod yazıyorsunuz ve sorun ne olursa olsun iyi yada kötü, yeni yada eski teknoloji sonuçta o sorunu çözebileceğinizi biliyorsunuz. Ama bir şey yanlış yada eksik o google dan okuduğum kodlara bakınca vay anasını diyorum adam yapmış arkadaş, ve hep bunu nasıl yapmış acaba dedim aklıma gelen yezen kişinin tecrübesi ve dili çok iyi bilmesinin sonucu olarak düşündüm ki evet bir yere kadar doğru. Aradan zaman geçti daha çok proje daha çok kod ama bu o hayal edilen duruma yaklaşamıyorum yada çok az, yavaş yaklaşıyorum, nirvanaya çıkamıyorum.

Demek ki bu yolun sonuna gelmişsiniz ve o soru PEKİ YA ŞİMDİ?

Ve bingbang, aslında bunun yazılımın temellerinde olan eksiklerden olduğunu fark ettim, kendi mantığımız ve tecrübemiz ile sınırlanmış durumdayız. Yazılımın kendi metodolojileri kendi doğası ile derinlemesine bakamıyoruz.

Buna göre sıradaki adım için etrafımda örnek aldığım yazılımcıları incelemeye başladım farklı olan ne tam olarak. Şimdi bizde ne eksik nasıl gitmeli bu süreç?

Sıradaki adım artık daha derinlere inmek, kod yazmayı, yazılım geliştirmeyi başka boyuttan kavramak, dili değil yazılımı anlamak.

Bu çerçevede

  • Yazılım prensipleri
  • Tasarım Desenleri
  • Kurumsal Yazılım mimarileri
  • Ve hangi dilin uzmanı isek onun için ileri bilgileri öğrenmek

sıradaki adımlarımız oluyor.

Sizin ile kendi yol haritamı paylaşmak istiyorum,  ben oldum olası Microsoft dünyasında yazılım geliştiriciyim ileri eğitim planlamamı da buna göre yaptım, sizde kendi uzman olduğunuz yazılım diline göre planlama yapmalısınız. Aşağıdaki eğitimler benim yol haritam ilk eğitimi almaya başladım ve daha ilk günden beri ufkum açılmaya algım değişmeye başladı. 1 ve 3 nolu eğitiler dil bağımsızdır, yazılım kendi dünyasına aittir.

  1. OOP Principles Design Patterns- Tasarim Kaliplari
  2. İleri C# Uygulamaları
  3. Enterprise Design Patterns & Architectures (Kurumsal Yazılım Mimarileri)

dotTrace Notlarım

Uygulama geliştirme dünyasında yer alan herkezin muhakkat yolunun geçeği sokaktır, uygulama performans analizi, performansı uygulama geliştirme yada uygulamayı daha performanslı hale getirme. Bu yolda ya yazdığınız kodların “best practice” araştırır uygularsınız yada performans analizi uygulamaları ile uygulamanızı(kodunuzu) analiz eder uzun süren yada fazla işlemci yükü oluşturan yerleri tespit edip düzenleme yaparsınız.

İşte bu senaryolarda kullanılan performans analizi uygulamalarından biri de ReSharper geliştiricisi JetBrains tarafından sunulan “dotTrace” uygulamasıdır.

Performans analizi uygulamaları temel olarak, yazdığınız uygulamanın memory, cpu, hangi kod satırı kaç kere işlendi, ne kadar sürdü vs gibi metrik bilgiler çıkararak size sunan yazılımlardır. Hatta bazı uygulamalar yazdığınız kodu analiz edip kodunuzun kısmi bölümlerine best practice kullanımlar önermektedir.

Okumaya devam et dotTrace Notlarım

Thread Safe Random

Online örnek linki. 

Örnek uygulama kodları

AutoMapper Passing Parameter

Online yazdığım örnek linki

Yada direk kodlar aşağıdadır.

Pair Programming

Sabah okuduğum bir makale dizisi ile ofiste bilmeden yaptığımız, inanılmaz derecede faydalı ve verilmi olan (öyle sorunlar çözdük öyle kodlar yazdık ki :)) bir çalışma ritüalinin aslında var olan bir çalışma biçimi “Pair Programming” olduğunu örendim. Bu mükemmel verimli olan yöntemi herkezin bilinçli olarak uygulamasını isterim ve şiddetle öneririm. Aşağıdaki linklerdeki makaleleri okuyarak hızlıca öğrenip yazılım hayatınıza bu yöntemi eklemenizi öneririm.

Kendi deneyimlerime göre bu yöntemi uygulayabilmek için en önemli madde kesinlikle çalıştığınız kişi ile iletişim kurabiliyor olmanız.

Comment yazmalı mı? yazmamalı mı?

Yazılım hayatıma başladığım günden beri yazdığım tüm kodlara kısa da olsa comment yazma alışkanlığım vardı. Ama nasıl comment öle böyle değil genellik kod kısmında fazla olurdu 🙂 İlk çalıştığım şirkette bu durum oldukça normal hatta olması gereken olarak görülürdü. Çünkü yazdığımız uygulama finansal işlemler yaptığı için uygulanan iş kurallarını belirtmek gerekirdi. Mağlum finans sektörünün kendi jargonu, dili, kuralları var öle bakıpta anlaşılacak cinsten olmazdı kodlar. Hatta yazdığınız kodun bu kurala uyabilmek için saçmalama sıfatına bile sahip olması gerekirdi. Comment olmadan bakan yanlış bu sil der, tüm kuralı bozabilirdi.

Sonra gün geldi iş değiştirdim. Tabi ben gene comment yazıyorum böle koca koca bloklar halinde. Bu durum takım liderimin gözüne takıldı ve bana “Comment yazma böyle, kod anlaşılır olsun, dedi” Çok zoruma gitmişti sonuçta o commentleri ben daha sonra okuyan yazılımcı(bende olabilir tabiki ben) küfür etmesin anlasın diye yazıyordum. Ondan sonraki süreçte comment yazmayı braktım tabiki. Ama hep bir tartışma oldu yazmalı mı yazılmamalı mı, yok efendim kod kendini açıklamalı faldı filandı ki buda doğru.

Bu sabah okuduğum bir yazıda şöyle bir cümle okudum “Code Tells You How, Comments Tell You Why” ve bir anda şimşekler çaktı. Evet aslında basit ama bazı şeyleri öyle düz mantık ile yapıyoruz ki, aaa bunu yapmak iyi okuyunca anlıyoruz ozaman yazalım diyip geçiyoruz. Aslında tam olarak neden yazıyoruz bilmiyoruz. İşte bu cümle comment yazmada tam olarak sebebi açıklayan durum oluyor. Comment yazma işine böyle bakmak lazım.

Kodlar size nasıl olduğunu, Yorum Satırları ise neden olduğunu söyler!

Şunuda yazmadan geçemicem, eğer kod’ta, comment’te nasıl sorusunu cevaplıyor ise ozaman “Refactoring” vakti gelmiştir.

IFrame içinden Parent-Page URL bilgisini almak

Üzerinde çalıştığım bir projede farklı bir domain içinde olan formları farklı domainlerdeki sitelerde iframe olarak ekleniyordu. Eklenen bu siteler iframe içinden, iframe yer aldığı sayfanın URL bilgisini almam ve bir hiddenfield içine atmam gerekiyordu ki bu bilgiyi server-side olarak kullanabilmek için.

Doğal olarak bir backend developer olarak önce server side denemeler yaptım ama fark ettim ki en güzel yol bunu javascript olduğunu fark ettim.
İlk olarak “parent.document.location.href” kodunu kullandım. Local testlerde sıkıntı olmadı fakat gerçek ortam testlerine sıra geldiğinde karşıla “Cross-Domain” hatası çıktı tekrardan. Doğal olarak formlar başka yerde gösterim yapılan yer başka.
Ve nihaği çözümü altta yer alan kod ile gerçekleştirdim.
İlk aşamada (try bloğu içinde) parent-page url bilgisi “parent.document.location.href” ile alınmaya çalışılıyor.
Burada, Cross-domain yada parent-page url bilgisi almaya çalışılırken başka bir hata alınırsa (catch bloğu içinde) işlem “document.referrer” ile gerçekleştiriliyor. Gereken bilgi sayfada yer alan hdParentPage id’li hidden içine aktarılmış oluyor.

Olmazsa Olmaz Visual Studio Extension’larım

Aşağıda iş hayatımda kullandığım ve iş süreçlerinize çok çok yardımcı olacak Visual Studio Extension’larım vardır. Emin olun sizinde işinize yarayacak.

Ayrıca genel olarak Visual Studio extensionların siteside aşağıdadır olurda sizde kurcalamak istersiniz;
http://visualstudiogallery.msdn.microsoft.com/