Cumartesi, Mart 28, 2009
I.Y.T.E. Microsoft .NET Webineri
Webinere katılım oldukça yoğundu, az önce de Facebook'a göz attığımda kulüp üyelerinin webineri izlerken çekilmiş fotoğraflarını gördüm ve açık konuşmak gerekirse oldukça hoşuma gitti. İstanbuldan kalkıp İzmir'e gitsek de hemen hemen aynı yoğunlukta bir kitle ile karşılaşıyor olacaktık ancak Microsoft Office Live Meeting'in nimetlerini kullanarak aynı kitleye İstanbul'dan erişme fırsatını buldum ve kısa zamanda hızlı bir şekilde bilgi paylaşımını gerçekleştirmiş olduk, fikri ortaya atan ve İzmir tarafındaki organizasyonu gerçekleştiren Numan'a bir kez daha teşekkür ediyorum, aşağıda da kulüp üyelerinin Webineri izlerken çekilmiş olan fotoğraflarını görüyorsunuz. Tabi NedirTv'nin akşam saatlerindeki webinerleri de bütün hızıyla devam ediyor olacak, bizi izlemeye devam edin :)
Cuma, Mart 27, 2009
Çanakkale On Sekiz Mart Üniversitesi Seminerleri Ardından
Seminerde benimle birlikte Network ve Bilgi Güvenliği Departmanı Birim Müdürü Hayrullah Kolukısaoğlu'da yer aldı, ilk olarak Network ardından da SharePoint seminerini gerçekleştirdik, salonda müthiş samimi bir hava vardı ve bu sebeple seminerlede oldukça eğlenceli geçti, bir saat konuşacağım diye sözlerime başladım ancak bir buçuk saat sonunda zar zor bitti konuşmam. Seminerimin soru cevap bölümü oldukça uzun sürdü, genel anlamda Netron'da ve piyasada ki iş durumu, krizin bilişim sektörü üzerindeki etkileri ve staj programlarımız üzerinde sohbet etme fırsatımız oldu, aslında maksatını biraz aşan ve panel'e kayan bir soru cevap bölümü gerçekleştirmiş olduk.
Resimlerden de anlaşışacağı üzere sevgili dostum Barış Karaağaç'ta bizi yanlız bırakmadı ve Çanakkale'de bize eşlik edip, seminerlerimize katıldı. Ancak Network semineri sırasında çekilmiş olan fotoğraflarda da görüldüğü gibi sanırım seminer sırasında biraz gürültü yapmışız :)
Çanakkale'ye kadar gidilip Abide'ye uğramadan dönmek olmazdı, dönüş yolunda çok az yolumuz kalmasına rağmen biraz zaman ayırıp Abide'yi ve kısıtlı zamanımızı maksimum kullanacak şekilde yol üzerinde tarih kokan bir kaç yeri ziyaret edip İstanbul'a döndük ancak tabi ki pek çok tarihi yeri görmeden dönüyor olmak aklımızın Çanakkale'de kalmasına neden oldu, en kısa zamanda sadece Gelibolu yarımadasını ve Truva'yı turlamak için yeniden Çanakkale yollarında olmayı ümit ediyoruz.
Perşembe, Mart 26, 2009
SharePoint Sitelerinde Anonim Erişime İzin Vermek
MOSS üzerinde güvenlik ayarlamalarını gerçekleştirmek için aşağıdaki resimde görüldüğü gibi Central Administration Site açılıp Application Management bölümünden Authentication Providers bölümüne geçiş yapılıp varsayılan güvenlik sağlayıcısı konfigüre edilebilir.
Authentication Providers bölümü aracılığı ile herhangi bir WebApplication'ının güvenlk ayarları gerçekleştirilebilir bu alanda Güvenlik Tipi ve tipe bağlı diğer ayarlar ile anonim erişime izin verilip verilmeyeceği belirlenebilir. Bu bölümde varsayılan olarak anonim erişime izin verilmediği görülecektir. Aşağıdaki resimde de görüldüğü gibi CheckBox seçili hale getirilip Save tuşuna basıldıktan sonra iligili WebApplication'a anonim kullanıcıların giriş yapması sağlanabilir.
Bu adımdan sonra ilgili WebApplication içerisnde yer alan herhangi bir siteye anonim olarak erişilmeye çalışıldığında istenilenin olmadığı görülecektir çünkü yetkilendirme yani Authorization ayarları henüz gerçekleştirilmemiştir bu işlem için erişilmek istenilen sitenin yetkilendirme ayarlarına geçilip anonim kullanıcılara site üzerinde yetki veriliyor olmalıdır. Bahsedilen işlem için anonim erişime açılmak istenen site üzerinde Site Actions-->Site Setting-->Advenced Permisssions bölümüne geçildikten sonra menüden aşağıdaki resimde de gürüldüğü gibi Anonymous Access bölümüne geçilmelidir. Tabi Anonymous Access bağlantısının görünür olması için WebApplication düzeyinde anonim erişime izin verilmiş olması gerekmektedir.
Bağlantıya tıklanıldığında aşağıdaki ekranla karşılaşılıyor olacaktır. Aşağıdaki resimde de görüldüğü üzere varsayılan olarak site anonim kullanıcılara açık değildir. Anonim kullanıcılara resimde de görüldüğü gibi sitenin tamamı ya da sadece liste ve kütüphaneler açılabilir. Bu alandan Entire Web Site seçilip Ok tuşuna basılarak tüm site anonim kullanıcılara açılıyor.
Bu adımdam sonra sitenin ana sayfasına dönülüp oturum kapatıldığında sitenin üst bölümü aşağıdaki hali alacaktır. Görüleceği üzere anonim olarak erişelemeyecek olan siteler ve içerik menülerden de gizlenmiş durumdadır ve herhangi bir kullanıcı ile oturum açıldığında kullanıcının erişebilecek olduğu alanlar kendisine listeleniyor olacaktır.
Salı, Mart 24, 2009
YazGeliştir Seminerleri - @İstanbul - Yıldız Teknik Üniversitesi
Detaylı bilgi için buraya tıklayınız!
Pazar, Mart 15, 2009
SharePoint Object Model: Farm Düzeyindeki Feature'lar
Uygulamaya geliştirmeye başlamak için Visual Studio'da yeni bir Windows Application projesi açalım ve Microsoft.SharePoint.dll isimli dll'i referans olarak ekleyip ardından da Microsoft.SharePoint ve Microsoft.SharePoint.Administration NameSpace'lerini ekleyelim. Gerekli NameSpace'ler eklendikten sonra Feature'ları ve FeatureDefinition'ları listelemek ve üzerlerinde işlem yapmak için aşağıdaki formu tasarlayalım. Form üzerinde SiteCollection'ın adresinin belirtilebilmesi için bir TextBox Farm düzeyinde belirtilen SiteCollection'da kullanılmayan Feature Definition'ları listemek ve SiteCollection'da kullanılan Feature'ları listelemek üzere iki tane ListBox kontrolü bulunmaktadır. Kullanıcı Button'a tıkladığında gerekli işlemler yapılıp ListBox'lar dolduruluyor olacaktır.
Form tasarlandıktan sonra Feature'ların DisplayName'lerini ve ID'lerini tutmak üzere küçük bir sınıf ekleniyor. Eklenen sınıf'ın nesne örnekleri her iki ListBox'larda da kullanılıyor olacaktır. Oluşturulan sınıfın kodları aşağıda yer almaktadır.
class Feature { public string FeatureDisplayName { get; set; } public Guid FeatureID { get; set; } public Feature() { } public Feature(string displayName,Guid id) { FeatureDisplayName = displayName; FeatureID = id; } } |
Feature'ları taşıyacak olan sınıfta yazıldıktan sonra sıra geldi Feature'ları ve FeatureDefinition'ları listelemeye. Gerekli lisyelemeyi gerçekleştirmek için de ayrı bir metod yazılıp Button'a tıklandığında gerekli metodun çağrılması sağlanmaktadır. Metod ismi olarak FeatureSorgula() belirleyelim ve ardından metodu yazalım. Metodun kodları aşağıda yer almaktadır. FeatureSorgula() isimli metodun içinde üzerinde çalışılan Feature'ın SiteCollection'da kullanılıp kullanılmadığına göz atmak için başka bir metod daha kullanılmaktadır. İlk olarak FeatureAktifMi() isimli bu metodun kodlarını inceliyor olalım. Metodlar yazılmadan her iki metodda da kullanılmak üzerinde Form1'de bir field tanımlandı, bu field SiteCollection'ın nesne örneğini tutuyor olacaktır.
SPSite _siteCollection; |
private bool FeatureAktifMi(SPFeatureDefinition fetDef) { foreach (SPFeature feture in _siteCollection.Features) { if (feture.Definition.Id == fetDef.Id) { return true; } } return false; } |
Kodlar incelendiğinde metodun parametre olarak SPFeatureDefinition tipinden bir parametre aldığı görülmektedir. Bu parametre az sonra kodlarını inceleyecek olduğumuz FeatureSorgula isimli metod tarafından buraya gönderilmektedir. Aslında bu alandaki mantık son derece basittir, daha önceki postlardan da hatırlanacağı üzere Feature'ın ID'si Farm düzeyindeki tanımlamasının ID'si ile aynı olmaktaydı ve bu metodda SiteCollection'da gönderilen FeatureDefinition'ın ID'sinin olup olmadığını kontrol ediyor ve eğer bulursa geriye true bulamaz ise geriye false değer döndürüyor. Diğer metodda da işlemler buradan dönen sonuca göre farklılık gösterecektir. FeatureSorgula metodunun kodları ise aşağıda yer almaktadır.
private void FeatureSorgula() { labelSC.Text = textBoxSiteURL.Text + "'ın Feature'ları"; string connectionString = "Data Source=.\\OFFICESERVERS; Initial Catalog=SharePoint_Config_c354912f-0a87-4f0d-95d4-b8f1f8e0a51e; Integrated Security=True"; _siteCollection = new SPSite(textBoxSiteURL.Text); SPFarm farm = SPFarm.Open(connectionString); List<Feature> featureDefs = new List<Feature>(); List<Feature> features = new List<Feature>(); foreach (SPFeatureDefinition def in farm.FeatureDefinitions) { Feature f = new Feature(def.DisplayName, def.Id); if (FeatureAktifMi(def)) { features.Add(f); } else { featureDefs.Add(f); } } listBoxFeature.DataSource = features; listBoxFeature.DisplayMember = "FeatureDisplayName"; listBoxFeature.ValueMember = "FeatureID"; listBoxFeatureDef.DataSource = featureDefs; listBoxFeatureDef.DisplayMember = "FeatureDisplayName"; listBoxFeatureDef.ValueMember = "FeatureID"; } |
Yukarıdaki kodlarda Farm'a bağlanmak için ilk olarak bir tane bağlantı cümlesi tanımlandı ve ardından da SPFarm sınıfının Open static metodu ile Farm'a bağlantı kuruldu. Ardından da bağlanılan farmın FeatureDefinitions özelliği aracılığı ile farm da bulunan definitionlar elde edilerek foreach döngüsü ile elde ediler Feature Definition'lar üzerinde gezinilmeye başlandı. Belirtilen ve bağlanılan Site Collection'un içerisine bulunmasına veya bulunmamasına göre iki ayrı Generic List'te feature'lar toplandı ve ilk başta hedeflendiği gibi iki ayrı ListBox içerisinde kullanıcıya gösterildi. Metodun yazılmasının ardınan Button'a çift tıklayarak click olayı ele alındı ve çalışacak metodun içerisinde FeatureSorgula() isimli metod çağrıldıkran sonra uygulama çalıştırılarak aşağıdaki görünüm elde edilebilir.
Feature'lar ve Feature Definition'lar da listelendikten sonra sıra geldi Feature'ları aktif ve pasif etmeye bu işlem için her iki ListBox'ın da DoubleClick olayları ele alınabilir. İlk olarak solda yer alan yani Farm'daki Feature Definition'ları listeleyen ListBox'ın DoubleClick olayını ele alıp aşağıdaki kodları yazıyor olalım. Bu kodlar üzerine çift tıklanan Feature Definition'ı SiteCollection'da aktif hale getiriyor olacaktır...
private void listBoxFeatureDef_DoubleClick(object sender, EventArgs e) { _siteCollection.Features.Add(new Guid(listBoxFeatureDef.SelectedValue.ToString())); FeatureSorgula(); } |
SiteCollection'daki Feature'ı pasif hale getirmek için ise sağ tarafta yer alan ve SiteCollection'lardaki Feature'ları listeyelen ListBox'ın DoubleClick olayı ele alınıp aşağıdaki kodlar yazılıyor olmalıdır.
private void listBoxFeature_DoubleClick(object sender, EventArgs e) { _siteCollection.Features.Remove(new Guid(listBoxFeature.SelectedValue.ToString())); FeatureSorgula(); } |
Görüleceği üzere ListBox'ların içeriğinin yenilenmesi için her iki durum sonunda da FeatureSorgula() isimli metodu bir kez daha çalıştırdık. SiteCollection'ların Feature'larını yönetmek için MOSS ekranı yavaş geliyorsa bu küçük programcığı da bir alternatif olarak kullanabilirsiniz :)
Salı, Mart 10, 2009
nedirtv?com Seminerleri - İstanbul
Seminerler ile ilgili bilgiye www.nedirtv.com'dan ulaşabilirsiniz. Bu seminerlerde teknik nedenler dolayısı ile maalesef ben bulunamıyorum ancak, bir sonrakinde bulunmaya çalışacağım...