Cumartesi, Mart 28, 2009

I.Y.T.E. Microsoft .NET Webineri

Bu gün İzmir Yüksek Teknoloji Enstitüsü Bilgisayar Mühendisliği Bölümü öğrencilerine özel bir webiner düzenledik. İYTE Bilgisayar Mühendisliği Bölümü Öğrencilerinden Numan Göçeri'nin "Burası uzak bu sebeple İstanbul'dan buraya çok sıklıkla gelemiyorsunuz, teknolojiyi kullanalım." önerisini değerlendirip yurtta kalan ve akşamları Internet erişimi olmayan öğrencilerin de bilgiye ulaşması adına, bu gün saat 12:30 - 13:30 saatleri arasında yine İYTE öğrencileri'nin talebi doğrultusunda Microsoft .NET'i anlatma fırsatı buldum.
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

Netron Technology olarak 20 Mart 2009'da Çanakkale On Sekiz Mart Üniversitsi'nde Network ve SharePoint semineri gerçekleştirdik. On Sekiz Mart gibi önemli bir günün içinde bulunduğu hafta içerisinde Çanakkale'de seminer veriyor olmak oldukça güzel bir duyguydu. Çanakkale'de daha önce bir kaç kez bulunmuştum ancak ilk defa seminer için On Sekiz Mart Üniversitesi'nde bulundum, üniversite şehrin biraz dışında yüksek bir alana kurulu ve müthiş bir manzarası var.
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

Anonim kullanıcılara iznin nasıl verileceğinden önce ilk olarak böyle bir şeye gerek varmı ya da ne gibi durumlarda böyle bir şeye gerek duyulur bu konuyu tartışıyor olalım. YazGelistir.com tarzı bir siteyi MOSS alt yapısı ile geliştirdiğinizi düşünün, tüm kullanıcıları direkt bir domain'e ekleme ihtimali olmadığına göre en azından sitenin bir kısmı ya da bir bölümü için mutlaka Internet'ten gelen kullanıcılar dikkate alınıyor olmalıdır. MOSS'da da tıpkı ASP.NET'te olduğu gibi Internet'ten sisteme erişmek isteyen kullanıcılar için Forms Authentication mekanizması kullanılıyor olmalıdır, dolayısıyla ilk olarak sistem Forms Authentication kullanılacak şekilde ayarlanıyor olmalıdır, şu an için bu bölüm bu postun konusu dışında kalıyor ancak ilerleyen günlerde bu konuyu da ele almayı düşünüyorum. Anonim erişime niye gerek olur sorusunun cevabı için YazGelistir örneğini tekrardan ele alalım siteyi incelediğinizde oturum açmadan erişilebilen yerlerin de mevcut olduğunu görmektesiniz ki mantıklı olan da zaten budur çünkü Internet altyapısı üzerinden sisteme erişen kullanıcıların karşısına anonim olarak listelenecek bir bölüm genellikle çıkartılır ve kulalnıcılar içeriğin devamını görmek için sisteme giriş yapabilirler ya da arama motorlarında içeriğin listelenmesi içeriğe botların erişmesi sağlanıyor olmalıdır.

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

Yazgeliştir, 2009 seminer turuna Yıldız Teknik Üniversitesi'nden devam ediyor. 28 Mart 2009 Cumartesi günü tüm gün sürecek olan, altı konuşmacının yedi ayrı konuyu anlatacağı seminerlerde sizde yerinizi alın!

Detaylı bilgi için buraya tıklayınız!

Pazar, Mart 15, 2009

SharePoint Object Model: Farm Düzeyindeki Feature'lar

Daha önceki postlarımda Feature ve Feature Definition kavramları üzerinde durmuştum, Feature Definition daha önceki postlardan da hatırlanacağı üzere Farm düzeyinde Feature'ın tanımlaması ve Feature ise Farm düzeyindeki Feature Definition'ın Site'lar ve SiteCollection'larda kullanılan hali olarak tanımlanmaktadır. Bu post'ta Farm düzeyinde kullanılan Feature'ları ve bunlardan hangilerinin belirtilen SiteCollection'da kullanıldığını listeleyen bir uygulama yazıyor olacağım. Yazının ilerleyen bölümlerinde de listelemenin ardından SiteCollection'da kullanılan Feature'ları pasif hale getirip, Farm düzeyindekilerden bazılarını da aktif hale getirebiliyor olacağız.

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

2006 Mart ayında yayın hayatına başlayan nedirtv?com 3. yaşını kutluyor. Üç yıldır hazırladığımız Türkçe içerikli videolarla, gerçekleştirdiğimiz webiner ve seminerlerle bilgiyi paylaşmaya, paylaştıkça büyütmeye çalıştık. Üçüncü yılımızı sizlerle kutlamak ve bilgi paylaşımını bu seferde yüzyüze gerçekleştirebilmek için 14 Mart 2009 Cumartesi günü İstanbul'da gerçekleştireceğimiz seminerlere üyelerimizin katılımlarını bekliyoruz.

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...