29 Tem 2013

Team Foundation Server (TFS) - Changeset ve Shelveset

Shelving workspace'de bekleyen değişikliklerin server'a atılmasını ve istek dahilinde workspace'den silinmesine olanak tanır. Oluşturulan shelveset serverdan gerekli yetkiye sahip herhangi bir kullanıcının workspace'ine geri alınabilir.      

Changeset ve Shelveset Arasındaki Farklar
Changeset notlar, commentler, ve linklerden oluşan bir grup kaynak kodları revizyonları grubudur. Shelveset de aynı şekildedir fakat versiyonlanmış bir şekilde tutmaz. Her ikisi de TFS üzerinden tutulur, ve yetkisi olan herhangi bir kullanıcı workspace'ine çekebilir.

shelveset değiştirildiğinde eskisine erişilemez, silinebilir.

Bekleyen değişikliklerin server'a atılmaya hazır olmadığı veya atılmaması gerektiği durumlarda kullanılabilir. Kullanımı için 5 senaryosu vardır.

 - Başka göreve geçilip yarıda bırakılan çalışmanın server'da tutulması.
 - Server'a check'in edilmeden önce grup üyeleri ile paylaşma.
 - Server'a check'in edilmeden önce gözden geçirme amaçlı.
 - Tamamlanmayan çalışmanın yedeğinin alınması.
 - Tamamlanmayan çalışmanın başka bir grup üyesi tarafından tamamlanması.

Kaynak: MSDN

16 Kas 2012

Linq To XML Örneği

XML



CLASS

public class INPUT
{
    public string GGUID { get; set; }
    public string TABLE { get; set; }
    public string NAME { get; set; }
    public string VALUE { get; set; }
}

INSERT

public void InsertItem(INPUT _item)
{
XDocument doc = XDocument.Load(HttpContext.Current.Server.MapPath("~/App_Data/Data/INPUT.xml"));                      

    doc.Element("NAV").Add(new XElement("INPUT",
                 new XElement("TABLE", _item.TABLE),
                 new XElement("VALUE", _item.VALUE),
                 new XElement("NAME", _item.NAME),
                 new XElement("GGUID", _item.GGUID)
             ));
    doc.Save(HttpContext.Current.Server.MapPath("~/App_Data/Data/INPUT.xml"));
}

DELETE

public void DeleteItem(string GGUID)
{
    XDocument doc = XDocument.Load(HttpContext.Current.Server.MapPath("~/App_Data/Data/INPUT.xml"));
    doc.Elements("NAV").Elements("INPUT").Where(s => s.Element("GGUID").Value == GGUID).Remove();

    doc.Save(HttpContext.Current.Server.MapPath("~/App_Data/Data/INPUT.xml"));
}

17 Eyl 2011

Jquery İle input İçeriğini Temizleme onfocus, onblur ( Asp.net MVC )

var clearMePrevious = '';
        // focus'da içeriği temizle
        function focusFunc(strInputName) {
            if ($('#' + strInputName).val() == $('#' + strInputName).attr('title')) {
                clearMePrevious = $('#' + strInputName).val();
                $('#' + strInputName).val('');
            }
        }
       
        // Blur'da eski içeriği döndür
        function blurFunc(strInputName) {
            if ($('#' + strInputName).val('')) {
                $('#' + strInputName).val(clearMePrevious);
            }
        }
<input type="text" onblur="blurFunc('query');" onfocus="focusFunc('query');" id="query" name="query" title="Aranacak kelimeyi giriniz" value="<%= Request.QueryString["query"] ?? "Aranacak kelimeyi giriniz" %>" />

12 Eyl 2011

C# .Net Reflection Kullanım Örneği

Örneğin test namespace'i ile oluşturulan projenin dll'ini ele alalım.

[C#]
namespace Test 
public class Calculator 
 {
public Calculator() { ... } 
private double _number; 
public double Number { get { ... } set { ... } } 
public void Clear() { ... }         private void DoClear() { ... } 
public double Add(double number) { ... } 
public static double Pi { ... } 
public static double GetPi() { ... }
 } 
}  



[C#]
// dynamically load assembly from file Test.dll 
Assembly testAssembly = Assembly.LoadFile(@"c:\Test.dll");

// get type of class Calculator from just loaded assembly 
Type calcType = testAssembly.GetType("Test.Calculator");

// create instance of class Calculator                                                                                    
 object calcInstance = Activator.CreateInstance(calcType); 

// get info about property: public double Number                                                                  
PropertyInfo numberPropertyInfo = calcType.GetProperty("Number"); 

// get value of property: public double Number                                                                       
double value = (double)numberPropertyInfo.GetValue(calcInstance, null); 

// set value of property: public double Number                                                                       numberPropertyInfo.SetValue(calcInstance, 10.0, null); 

// get info about static property: public static double Pi       
PropertyInfo piPropertyInfo = calcType.GetProperty("Pi"); 

// get value of static property: public static double Pi                                                           
double piValue = (double)piPropertyInfo.GetValue(null, null); 

// invoke public instance method: public void Clear()                                                           
calcType.InvokeMember("Clear",     BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.Public,     null, calcInstance, null); 

// invoke private instance method: private void DoClear()
calcType.InvokeMember("DoClear",     BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.NonPublic,     null, calcInstance, null); 

// invoke public instance method: public double Add(double number)                                 
double value = (double)calcType.InvokeMember("Add",     BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.Public,     null, calcInstance, new object[] { 20.0 }); 

// invoke public static method: public static double GetPi()                                                 
double piValue = (double)calcType.InvokeMember("GetPi",     BindingFlags.InvokeMethod | BindingFlags.Static | BindingFlags.Public,     null, null, null); 

// get value of private field: private double _number                                                            
double value = (double)calcType.InvokeMember("_number",     BindingFlags.GetField | BindingFlags.Instance | BindingFlags.NonPublic,     null, calcInstance, null);





KAYNAK:  http://www.csharp-examples.net/reflection-examples/

Reflection ile Execute Edilen Metod'un Namespace, Class Adı, ve Metod adını alma

protected string CurrentName
  {
    get
    {
      StackTrace st = new StackTrace(true);
      MethodBase mb = st.GetFrame(1).GetMethod();
      return mb.ReflectedType.Namespace + "." + mb.ReflectedType.Name + "." + mb.Name;
    }
  }

25 Ağu 2011

MVC Bind Prefix Kullanımı (View içerisinden model'e bind etme)

Prefix ile yani view içerisindeki elemanların isimlerinden model'e bind etmek için aşağıdaki örneğe bakabilirsiniz.
Mvc view page (.aspx) sayfası içerisinde tanımlanan elemanlardan bind etmek istediklerinizin isimlerini aşağıdaki örnekteki gibi ön-ek (prefix) ile birlikte vermelisiniz.
<select name="k.isim"> </select>
<input type="text" name="k.soyisim" />
istediğiniz ön-ek'e sahip elemanları bind edip metod paramatresi olarak aşağıdaki şekilde metod'a verebilirisiniz.
public ActionResult KullaniciKaydet([Bind(Prefix="k")]Kullanici objKullanici){}
Eğer birden çok elemanı controller tarafında bir nesnenin field'ları olarak atamak istiyorsanız bu yöntem sizin için çok kullanışlı olacaktır. Tek satır kod ile nesnenin tüm field'larını doldurabileceksiniz.
Kullanıcı tarafından kesinlikle dolmasını istemediğiniz nesne field'ını "exclude" ile belirleyebilirsiniz. Bu nesnenin "KullanıcıId" field'ı bind edilmeyecektir.
 public ActionResult KullaniciKaydet([Bind(Prefix="k", Exclude="KullanıcıId")]Kullanici objKullanici){}

23 Ağu 2011

ASP.NET C# Klasörden Alınan Dosyaları Oluşturulma Tarihine Göre Sıralama

objPicture = Directory.GetFiles(Server.MapPath("/image/t/")).ToList
                   
//Dosyaları oluşturulma tarihine göre sırala
 var di = new DirectoryInfo(Server.MapPath("/image/t/"));
 FileSystemInfo[] files = di.GetFileSystemInfos();
 var ObjOrderedPictures = files.OrderByDescending(i => i.CreationTime);
                   

   foreach (var thumnpic in ObjOrderedPictures) { 
       string strTemp = thumnpic.FullName.Split('\\');                          
   }

4 Ağu 2011

Web Adresinin Öncelikli Olarak Bakılacağı İp’yi Belirleme

Host dosyası içerisine girdiğiniz web adresinin öncelikli olarak bakılacağı ip'yi girebilirsiniz.
"C:\Windows\System32\drivers\etc" yolunda bulunan host dosyasını text editörü ile açıp sonun istediğiniz adresi ip'si ile birlikte aşağıdaki şekilde girip kaydetmelisiniz.

127.0.0.1       localhost127.0.0.1       localhost
192.168.1.234 www.google.com

artık bilgisayarınızdan www.google.com adresine gittiğinizde sisteminiz öncelikle 192.168.1.234 ip adresine bakacaktır..



28 Tem 2011

SQL 2008 CLR Aktif Etme

SQL 2008 'de CLR 'ı aktif etmek için aşağıdaki queryi yazıp çalıştırmanız yeterlidir.
EXEC sp_configure 'clr enabled' , '1' ;
reconfigure;

27 Tem 2011

IIS 7.0 (Win server 2008) Üzerinde Çalışan Wordpress Resim Upload Problemi

Bu sorunun 2 nedeni var
1- Eğer resimleri türkçe karakter ile yüklüyorsanız isimlerdeki karakterler bozulduğu için resimler bulunamamakta. Türkçe karakter kullanmadan yüklenirse sorun ortadan kalkabilir.
2- Eğer sorun Türkçe karakter'den kaynaklanmıyorsa büyük ihtimalle klasör yazma izninden kaynaklanıyordur. Normal olarak herhangi bir işlem yapmadığınızda upload ettiğiniz resimler "wp-content\uploads" içerisine yüklenmektedir. Bu klasöre yükleme yapabilmek için (IIS tarafından otomatik oluşturulan) IIS_USRS kullanıcısı için full yetki verilmeli, fakat full yetki de verilse Wordpress (ya da IIS üzerinde çalışıtırılan herhangi bir PHP site) IIS server üzerinde çalışan sitede upload sorunu oluşmakta.
 
Sorunun çözümü ise gayet basit;
              
           Application Pools –> (wordpress'inizin application pool'u) –>Advanced Settings –> Process Model –> Identity –> Built-in Service –> Network Service Olarak seçilmeli
           Sites  –> (wordpress siteniz) –> Authentication –> Anonymous Authentication –> Sağ click –Edit –> "Application pool identity" seçilmeli.
Artık resimlerinizi Windows 2008 IIS üzerinde çalışan Wordpress sitenize rahatlıkla yükleyebilirsiniz.
(Çalışmazsa bir de bu linke bakınız)

25 Tem 2011

ASP.NET: [System.Diagnostics.DebuggerNonUserCodeAttribute()] Hatası

.aspx veya .ascx uzantılı sayfalarımıza yazdığımız c# kodları bilindiği üzere <%%> tagları arasına yazılmakta. Bu sayfalardaki kod yoğunğu çok fazla olduğu zamanlarda sayfa içerisindeki parantezler karışabiliyor. Bu parantezlerin birine tıklayarak nerede kapandığını görebiliyoruz fakat gözden kaçırdığımız bir tanesi derleme esnasında olmasa da debug anında hata ortaya çıkmakta. Eğer bütün parantezleri teker teker kontrol edip hepsinin başlangıç ve bitiş yerlerini görüp eksiksiz olduğuna emin olursanız bu hata ortadan kalkacaktır.

12 Tem 2011

Wordpress Anketi Yan Menüde Yayına Alma

Anketler bölümünden anket oluşturulduktan sonra eğer ana sayfada yan menüde göstermek istiyorsanız  anketin kodunu ( anketlerin listelendiği bölümden yayınlama istediğiniz anketin üzerine gelerek "Embed & Link" linkini tıklayıp " WordPress Shortcode" kısmından "[polldaddy poll=5220000]" şeklindeki kodu kopyalayailirsiniz)  Görünüm  - > Bileşenler sekmesinden "Metin" bileşenini sürükleyip yan menü içerisine bırakarak içierisine bu kodu yapıştırıp kaydetmelisiniz.

Dikkat edilmesi gereken bir nokta eger widget (metin kutusu) olarak yan menuye anket koymaniz durumunda ayni anketi post olarak yayınlamamak gerekmesi. Böyle bir çakışma olduğunda sorun oluşabiliyormuş.

28 Haz 2011

Vshell FTP Ayarları

- User database açılmalı (Common > Advanced) altından ve txt db yolu seçilip açılmalı (txt dosyasının izinlerini inherit(miras) almamalı ve sadace system ile administrator'a açık olmalı)


User database e kullanıcılar eklenmeli


- "Access Control" dan erişime açılacak kullanıcılar seçilmeli. 
(default gelen "Everyone" kullanıcısı için sadece Logon Allow yapılmalı)


- Seçilen kullanıcılar için sadece SFTP ve Logonlar Allow yapılmalı (sadece SFTP'ye erişebilmeleri ve logon olabilmeleri için).


- Virtual roots'dan site yolu seçilip allow(erişim izinli) ve deny(yasaklı) kullanıclar seçilmeli.


- Virtual roots'da default tanımlı kullanıcılara açık ise kapatılmalı (Everyone kullanıcısı dahil edilmiş ise kaldırılmalı). (çünkü root içerisindeki diğer klasörlere ve root a erişimi sağlıyor)



27 Haz 2011

Asp.Net Outputcache Webconfig Ayarları

Asp.Net TARAFI
[OutputCache(CacheProfile = "MyCacheProfile", VaryByParam = "strContentName", VaryByCustom = "userName")]
public ActionResult Detail() //Controller
{
}
[OutputCache(CacheProfile = "MyCacheProfile", VaryByParam = "None", VaryByCustom = "userName")]
public ActionResult Detail() //Controller
{
}
-------------------------------------
WEBCONFIG TARAFI
<!--caching-->
<caching>
    <outputCacheSettings>
        <outputCacheProfiles>
            <add name="MyCacheProfile" duration="600" location="Server" enabled="true"/>
        </outputCacheProfiles>
    </outputCacheSettings>
</caching>
<!--caching-->
-------------------------------------
şeklinde bir arada kullanılabilir

ASP.NET MVC de checkboxların döndürdüğü değer

Asp.net mvc de checkboxların hangi değeri döndürdüğü resimde gözüktüğü gibi belirlenebilir.
Checkbox tik'li ise (yani true ise) değer olarak boşluk string ("") değer döndürür.

Checkbox tik'li değil ise (yani false ise) değer olarak boş (null) değer döndürür.