TFS Undo Command Promt

by Suat TUNCER 30. Kasım 2011 19:51

Bugün, geliştirdiğimiz projede TFS ile ilgili beklenmedik bir sorunla karşılaştık. Bir kaç ay önce projedeki geliştiricilerden biri, bir dosya üzerinde çalışmak için check-out yapmış ve daha sonra chek-in yapmadan bırakmış. TFS üzerinde multiple check-out kapalı olduğu içinde şimdi bu dosya ile çalışmak isteyen diğer bir gelşitirici check-out yapamıyordu. Bunda ne var dosya kimde görünüyorsa o dosyayı bıraksın, diye bilirsiniz fakat dosyanın göründüğü kişi işten ayrılmış ve Active Directory hesabı da silinmiş ise bu malesef mümkün olmuyor.

Yapılması gereken, bir geliştiricide kilitli kalan dosyanın TFS üzerinde undo yapılması bu sayede dosya serbet kalmış olacak. Bunun için aşağıdaki kodu komut satırında çalıştırmanız yeterli olacaktır.

KOMUT:

tf undo /workspace:kullanici_calisma_alani; kullanici_adi /server:sunucu/projet_collection dosyayolu /noprompt

ÖRNEK:

tf undo /workspace:SUATTUNCER;HIGHCODE\suat.tuncer /server:http://HighCodeTFS:8080/Comas $/Proje/KilitliDosya.cs /noprompt

 

 

 

Tags: , , , ,

TFS (Team Foundation Server)

Bilmezlik

by Suat TUNCER 12. Temmuz 2011 20:34

Bilenler biliyor yaklaşık 3 aydır askerdeyim, işimle ilgili bir görev verilmedi, zaten önemli de değil fakat bulunduğum odada kayıt işlemleri için kullanılan bir bilgisayar ile yan yana bulunmakta iyi geldi açıkcası. Bilgisayarda .Net Framework yüklü dolduğunu görünce oldukça sevindim. Notpad ile küçük uygulamalar gelşitiriyordum ve yazdığım uygulamları csc (c# derleyicisi ) ile derleyip biraz eğleniyordum. Gelin görünki bu iş düne kadar böyleydi. Bunu görüp ürken "komutan" bilgisayara dokunmamı yasakladı. Bilmezlik, öğrenmeye kapalılık, sorgulamamak ve düşünmemek karşısında diyecek söz bulamadım.

 

Bitse de gelsem.

Tags:

Personal

Çocuk Aklı

by Suat TUNCER 2. Kasım 2010 23:38

Geçtiğimiz hafta sonu biraz hastaydım. Hastayım dediysem soğuk algınlığı. Yiğenlerim bizdeydi, amca doktorculuk oynalalım mı dediler, ben de tamam dedim. Hawin doktor oldu, önce boğazıma baktı, sonra sırtımı dinledi ve ;

-hımm üşütmüşsün.
-ne yapacağız doktur,
-bir iğne yapacız.

kardeşine dönüp "amcayı yatıralım" dedi, sonra iğnemi yaptı ve "biraz dinlen dedi". Ben de gözlerimi kapattım. Bu sırada Diyar (küçük olan) ablasına dönüp;

-Hawin bayıldı hadi organlarını çalalım dedi.

Hawinse numaradan çıkıştı;

-Hayırr olmaz! Biz doktoruz hırsız değiliz.

Bense nasıl bir tezgaha düştüğümü bile anlamadım olanları seyrediyordum, çete gibiydiler. Laughing

Buda bana yazdıkları reçete. İlaç isimlerini nereden öğrenmiş artık bimiyorum

 

 

Tags:

Personal

Best Practice for Session Keys

by Suat TUNCER 8. Temmuz 2010 11:37

Merhabalar,
Geliştirdiği projelerinin ölçeği büyüyen ve yönetilebilmesi daha kolay uygulamalar geliştirmek isteyen arkadaşlara yardımcı olacağını düşündüğüm ve geliştirdiğim projelerde uyguladığım genel yaklaşımları vakit buldukça paylaşmayı düşünüyorum. Bunun için ilk “Best Practice”imi aşağıda bulabilirsiniz :)


Web uygulamaları ile çalışırken, çoğunlukta web mimarisinden kaynaklı bazı sıkıntılar yaşarız. Özellikle nesnelerin durum bilgilerini saklamak, içerikler arasında veri paylaşmak ciddi bir problemdir. Bu gibi işler için session state, query string, application state gibi key-value yapısıyla çalışan nesneleri kullanırız. Bu nesneler aslında web uygulamalarında yönetilmesi en sıkıntılı kısımlardan biridir. Uygulamadaki tüm içeriklerin application state içerisinde bir nesneye, kullanıcı oturumundaki tüm içeriklerden aynı session statede bulunan nesneye erişmek isteriz. Hele ki birden fazla developer ile uygulama geliştirdiğimizde kullanacağımız keyler çok daha dikkatli seçilmelidir. Bir içerikte oluşturulan "liste" adında genel bir ismin başka bir içerikte yine tanımlanma ihtimali yüksektir.   
Geliştiriciye düşen en büyük sorumluluk ise uygulamanın tamamında kullanılan session nesnelerinin nerede oluşturulduğunu ve isimlerinin neler olduğunu takip etmesi.  Bu yüzde işi şansa bırakmak yerine uygulamada tüm anahtarlar için sabitler tanımlamak çok daha akıllıca olacaktır.  Session yönetimi için aşağıdaki örnek incelenebilir.  Session yönetimini kolaylaştırmak için ilk yapılması gereken bir SessionKeys sınıfının tanımlanması olacaktır.

/// <summary>
/// internal tanımlanma sebebi,
/// tanımlandığı assembly dışında erişilmesini engellemektir.
/// eğer uygulamanın core yapısı farklı bir assemblyde yer alacaksa
/// public tanımlamak gerekecektir.
/// seald tanımlanma sebebi inherit edilmesini engellemektir.
/// </summary>
internal sealed class SessionKeys {

    // inctance alınması engelleniyor.
    private SessionKeys() { }
     
    /// <summary>
    /// oturum açmış kullanıcı'nın ID bilgisi
    /// </summary>
    public const string USER_ID = "BD9E5B0E";

    /// <summary>
    /// Kullanıcının tercih ettiği arayüz dili.
    /// Oturum açmış veya açmamış kullanıcı için de kullanılabilir.
    /// </summary>
    public const string CURRENT_LANGUAGE = "F00EA524";

}




Herhangi bir içerikte, session nesnelerine kullanmak için yapılması gereken;

// değer atamak için
Session[SessionKeys.USER_ID]=123;

// değer okumak için
object value = Session[SessionKeys.USER_ID];

 


Görüldüğü gibi tüm session anahtarları SessionKeys üzerinde tanımlandığında, projedeki tüm içeriklerde sessiona bir nesne atılacağında ve ve/veya bir nesneye erişilmek istendiğinde SessioKeys sınıfında tanımlı anahtarlar kullanılacaktır. Bu sayede aynı session anahtarı farklı yerde, farklı bir amaç için kullanılmasının önüne kısmen de olsa geçmiş olduk. Diğer bir örnekte query stringler için olacaktır. Web uygulamalarında en çok kullanılan yapılardan biri de query stringlerdir, en azından MVC dışındaki yaklaşımlarda bu böyledir. Burada yine bir QueryStringKeys sınıfı tanımlamak işimizi kolaylaştıracaktır. Query String gönderirken ve erişilirken kafamız rahat edecektir.


Bu yaklaşım sadece Asp.Net için değil farklı platformlarda geliştirilmiş tüm web applicationlar için uygulanabilir.

Tags: , ,

Best Practices

Eski Blog

by Suat TUNCER 3. Temmuz 2010 11:39

Merhaba,

Daha önce şurada belirttiğim gibi, eski blogtaki yazıların tamamını buraya taşıdım. Tüm isteklerime rağmen blogcu.com ne yazıkki yazıları aktarım için bir eklendi sunmadı. Bu yüzden eski blogta yer alan yorumları taşıyamadığım için, silmek zorunda kaldım. Yazılarımın altında yorumları bulunan herkesten özür diliyorum. Giriş seviyesindeki yazıları güncel bilgilere göre düzenledikten sonra tekrar yayınlayacağım. Yeni blog açacak arkadaşlara tavsiyem, oluşturduğunuz blogda, BlogML veya OPML gibi bir veri aktarım teknolojisinin olduğundan emin olunuz.

Tags:

Personal

Hakkımda

Suat TUNCER, Yazılım tutkunu.

Reklam Alanı

Twitter


 

Month List

Widget Poll not found.

The file '/widgets/Poll/widget.ascx' does not exist.X