Webinerlere katılmak için etkinlik zamanında belirtilen sayfaya giriş yapmanız yeterlidir. Eğer bilgisayarınızdan Windows Live Meeting'i kullanarak ilk defa bir webinere katılacaksanız, etkinlik vaktinden 5 dakika kadar önce sayfaya giriş yapmanız ve bilgisayarınıza küçük bir kurulum yapmanız yeterli olacaktır.
Cuma, Kasım 06, 2009
nedirtv?com - Kasım Ayı Webinerleri
Webinerlere katılmak için etkinlik zamanında belirtilen sayfaya giriş yapmanız yeterlidir. Eğer bilgisayarınızdan Windows Live Meeting'i kullanarak ilk defa bir webinere katılacaksanız, etkinlik vaktinden 5 dakika kadar önce sayfaya giriş yapmanız ve bilgisayarınıza küçük bir kurulum yapmanız yeterli olacaktır.
Pazartesi, Ekim 12, 2009
Bilişim Zirvesi 09'daydım
7-10 Ekim 2009 tarihlerinde Cebit ile birlikte Tüyap'ta düzenlenen Bilişim Zirvesi'nde konuşmacı olarak yer aldım. Kobi Zirvesi'nde kobilerden gelen katılımcılara Doküman yönetimi ve veri tabanı yönetim sistemleri ve de Raporlama Çözümleri hakkında iki seminer verdim. Tahmin edileceği üzere doküman yönetim sistemi olarak SharePoint'i ele aldım ve Intranet'lerin kurumsallaşmaya giden yolda ne kadar önemli bir adım olduğundan bahsettim. Raporlama Çözümlerinde de Microsoft'un Business Intelligence mimarisini ve araçlarını ele aldım. Anlatmış olduğum konuların sunumlarına aşağıdaki linklerden erişebilirsiniz.
Pazartesi, Ekim 05, 2009
nedirtv?com - Ekim Ayı Webinerleri
Ekim ayı içerisinde gerçekleştireceğimiz webinerlerin listesine buraya tıklayarak erişebilirsiniz.
Webinerlere katılmak için etkinlik zamanında belirtilen sayfaya giriş yapmanız yeterlidir. Eğer bilgisayarınızdan Windows Live Meeting'i kullanarak ilk defa bir webinere katılacaksanız, etkinlik vaktinden 5 dakika kadar önce sayfaya giriş yapmanız ve bilgisayarınıza küçük bir kurulum yapmanız yeterli olacaktır.
Etkinliği facebook'taki ajandanıza kaydetmek ve etkinlik duyurularını takip etmek için bu linki kullanabilirsiniz
Cuma, Eylül 11, 2009
SQL Admin Videoları'nı Yayınlanmaya Başladık!
SQL Server 2008'in yönetimini ele aldığımız video serimizin videolarını yayınlamaya başladık. Seri olarak tasarlanan ve belirlenmiş bir sırayı takip edecek olan videolardan yedi tanesi yayına alındı. Aşağıda şu ana kadar yayına alınan videoların linlerini de paylaşıyorum.
- SQL Server 2008 - Veritabanı Dosyaları
- SQL Server 2008 - Sistem Veritabanlarını Taşımak
- SQL Server 2008 - Policy Tabanlı Yönetim
- SQL Server 2008 - Disaster Recovery Bölüm1
- SQL Server 2008 - Disaster Recovery Bölüm2
- SQL Server 2008 - Disaster Recovery Bölüm3
- SQL Server 2008 - Disaster Recovery Bölüm4
Yeni videolara http://www.nedirtv.com/ adresinden erişebilirsiniz.
Çarşamba, Ağustos 12, 2009
SQL Server'da Sistem Database'lerini Taşıma
Kullanıcı veritabalarında bu durumu iki farklı şekilde çözebiliriz, eğer veritabları farklı bir instance'a alınacak ise Detach ve Attach çözüm olacaktır ancak aynı eğer instance değişmiyor ise tek çözüm Detach - Attach değildir ki keza sistem veritabanlarını detach edemezsiniz. Sistem veritabanlarının dosyalarını ve bu dosyaların fiziksel adreslerini görüntülemek için aşağıdaki kodları kullanabilirsiniz, tabi ki kullanıcı veritabanlarında da aşağıda açıkladığımız kodlar çalışmaya devam edeceklerdir.
SELECT name, physical_name AS CurrentLocation
FROM sys.master_files
WHERE database_id = DB_ID(N'tempdb');
GO
Yukarıdaki kodlar TempDB'nin dosyalarını ve bu dosyaların bulunduğu fiziksel adresleri listeliyor olacaktır. Kodlar çalıştırıldıktan sonra aşağıdaki gibi bir sonuç kümesi ile karşılaşacaksınız.
Dosyaların lokasyonunu değiştirmek için ise aşağıdaki kodlar çalıştırılabilir. Aşağıdaki kodlarda yer alan FILENAME sözcüğü aracılığı ile belirtilen bölüm dosyaların yeni lokasyonu olacaktır.
GO
ALTER DATABASE tempdb MODIFY FILE
(NAME = tempdev, FILENAME = 'E:\SQLData\tempdb.mdf');
GO
ALTER DATABASE tempdb MODIFY FILE
(NAME = templog, FILENAME = 'F:\SQLLog\templog.ldf');
GO
Master veritabanı üzerinde gerçekleştirilecek olan değişikliklerin pek çoğu startup parametreleri ile gerçekleştirilir, yani servis start edilirken ayarlanır. Startup parametrelerine erişip değiştirmek ya da yenilerini eklemek için Start Menü'den All Programs-->Microsoft SQL Server 2008-->Configuration Tools aracılığı ile gerekli kısa yolları görüntüleyip oradan da SQL Server Configuration Manager'ı açabilirsiniz. SQL Server Configuration Manager SQL Server'ın servislerini listeliyor olacaktır burada ayarlama yapılmak istenen instance'ın DataBase Engine servisinin üzerinde sağ tıklayıp, özellikleri görüntülendikten sonra açılan pencerede Advanced tabına geçilir. Advanced tabında da Startup Parameters bölümü değiştirilebilir. Bu bölümde zaten bir takım ayarların yapılmış olduğu gözlenmenecektir.
-dC:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\master.mdf;
-eC:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\LOG\ERRORLOG;
NedirTv.com'da yeni bir video dizisine başlıyoruz!
Cuma, Temmuz 24, 2009
Kayseri - Ananın Yeri!
Peki Ananın Yeri'nde ne yemeliyiz? Bütün menüleri deneme şansım olmadı ancak sadece Kayseri'ye özgü olan bir kaç yemeği tatma fırsatım oldu, ilk olarak Kayseri'nin pek çok yöresel lezzetini içeren "Ana tabağı" isimli yemeği ara sıcak olarak önerebilirim ancak garsonla aranızdaki diyalog biraz garip oluyor. Ne istersiniz? sorusuna ananın tabağı şeklinde bir cevap vermek biraz garip oluyor ancak tabağın içinde yer alanlar oldukça lezzetli. Ara sıcak demişken Kayseri'ye özgü bir yemek tipinden daha bahsedelim; Kağıtta Pastırma. Kayseri deyince akla ilk gelen şeylerden biridir pastırma, pastırmanın da her tipini burada bulabilirsiniz ancak yemek olarak çok fazla çeşidi yok, bu beni oldukça yanılttı doğrusu. Kağıtta pastırma, pastırmaların limon, domates ve maydonoz ile terbiye edilerek alüminyum folyo ile fırınlanmasından oluşan bir ara sıcak türü, pastırmanın ağır tadı oldukça yumuşatılıyor ve alüminyum folyo ile servis ediliyor. Ana yemek olarak da Kayseri Mantısı olmazsa olmazlardan, Ananın Yeri'nde fena değildi ancak biraz daha ileride İstanbul'da da alış veriş merkezlerinde şubesi olan Kaşıkla isimli restoranın mantısı Ananın Yeri'ne göre daha güzeldi mantıyı Kaşıkla'da yemenizi tavsiye ederim ama dikkat, İstanbul'dakiler ile Kayseri'dekinin alakası yok! Yazımın ana konusu olan Ananın Yeri'nde de yine Kayseri'nin yöresel lezzetlerinden biri olan Yağlama yemenizi şiddetle tavsiye ederim, ancak benim düştüğüm hataya düşüp öncesinde bir şey yemeyin yoksa tabağın yarısını geri göndermek zorunda kalıyorsunuz.
Yemek konusu bir kenara bırakıp Kayseri hakkında da bir kaç söz söylemenin zamanı geldi; Kayseri, Erciyes Dağı'nın gölgesinde tipik bir Anadolu şehri, insanları sorduğunuz bir yere sizi arabasıyla götürecek kadar sıcak ancak tabi ki arada her yerde olduğu gibi çürük yumurtalar da çıkmıyor değil. Kayseri'de trafikte olmak oldukça tehlikeli, buradaki kişilerin pek çoğunun genellikle trafik kurallarına uymadıkları dikkatimi çekti, hatta bir gün önce şoför arkadaş dikkatli olmayıp yavaşlamasaydı şu anda büyük ihtimalle bu yazıyı yazamıyor olacaktım. Futbol, Türkiye'nin pek çok ilinde olduğu gibi Kayseri'de de en çok konuşulan konuların başında geliyor, Mehmet Topuz transferi artık çok fazla konuşulmuyor ancak yeni yapılan stadın önünden her geçtiğimizde stadı öve öve bitiremiyorlar. Stad dışından gördüğüm kadarı ile oldukça güzel, kabul etmek gerekir ki bir Anadolu şehrine göre oldukça iyi. Stadın en fazla öne çıkardıkları özelliği tribünlerde ısıtma sistemi olması ve bunu "başka yerde yok" diyerek öne çıkarıyorlar ancak uzun zamandır aynı sistemin Şükrü Saraçoğlu'nda olduğunu söyleyince de bana kızdıklarını suratlarının aldığı ifadeden anlamam zor olmuyor.
Söz konusu para olduğunda Kayseri'lilerden genellikle korkulur çünkü ticareti çok iyi biliyorlar. Ev kiralarında burada oldukça değişik bir uygulama var, ev sahibi ile yıllık anlaşma yapıyorsunuz ancak parayı da yıllık ödemeniz gerekiyor, özellikle işe yeni girmiş biri ya da yeni evli çiftlerin bu uygulamadan memnun olduğunu sanmıyorum ancak halk buna alışmış durumda "Sizin oralarda aylık kiraya'mı dönüldü?" şeklinde bir soru ile karşılaştım. Şehir yukarıda resmini gördüğünüz Sivas Caddesi'nin kenarlarına yayılmış durumda, Sivas Cadde'sinin çevresinde oldukça güzel binalar ve lüks ortamlar yer alıyor, yerel halk genelde akşamları bu caddenin üzerinde oluyor, yukarıdaki resme dikkatle göz attığınızda rayları fark edeceksiniz. Çok kısa bir süre içerisinde Kayseri'de de raylı sistem ile toplu taşıma başlıyor bu da şehrin yaşam kalitesini oldukça arttıracaktır.
Eğitim verdiğim ekip oldukça donanımlı ve tecrübeli kişilerden oluşuyor her biri alanında uzmanlaşmış ve gelişmeye açık kişilerden oluşan aynı zamanda da oldukça keyifli zaman geçirilen bir ekibi var Boydak'ın. Şu anki eğitimde yer alan Ali Bey'in geliştirilmesinde büyük rol oynadığı bir uygulamadan da söz etmek istiyorum; http://3d.bellona.com.tr/ adresinden erişebileceğiniz uygulama aracılığı ile evinizin krokisini çizip satın almak istediğiniz Bellona ürününün evinizde nasıl duracağını yerinizden kalkmadan görebiliyorsunuz, linke tıklayıp test etmenizi öneririm.
Salı, Temmuz 14, 2009
stsadm aracı ile bir web application'ın Backup'ını almak
SharePoint'te yedeği alınabilecek olan bölümlerin listesini iki farklı şekilde öğrenebilirsiniz ilk yöntem ki bu kolay olanı; Central Administration Site üzerinde Operations tabından yeni bir Backup alma işlemi başlatıyormuş gibi yapıp portalın tüm içeriği görüntülenebilir. İkinci yöntem ise stsadm aracının Bakup opeasyonunda showtree parametresi tercih edilebilir.
showtree parametresini kullanmak için stsadm.exe'nin bulunduğu dizine gidildikten sonra aşağıdaki komut çalıştırılır.
stsadm.exe -o backup -showtree
Komut çalışıtırdıktan sonra portalın içeriği aşağıdaki gibi görüntüleniyor olacaktır.
Görüntülenmekte olan bileşenlerden istenilen bölümün backup'ını almak için stsadm.exe aşağıdaki söz dizimi ile çalıştırılabilir.
stsadm.exe -o backup -directory \\NetronPortal\backup -backupmethod full -item "SharePoint - 80"
Yukarıdaki söz dizimi aracılığı SharePoint'e SharePoint - 80 isimli web application'ının backup'ının paylaşımda bulunan backup isimli klasöre alınacağı belirtilmiş oluyor.
Cumartesi, Mayıs 23, 2009
Genç Liderler Akademisi Konferansları | Bilgi Güvenliği, Internet'ten Pazarlama Stratejileri
10:00 - 12:30 - Bilişim Güvenliği - Hayrullah Kolukısaoğlu
- Overview of Networking
- Overview of Network Security
- Common Attack Types
- Types of Hacker Attacks and Examples
- Security Devices
- Security Protocols
- Confidentiality, Authentication, Integrity Securing Network
- LAN Security
- WAN Security
- WLAN Security
- Career Opportunities
- Internet'ten Pazarlama Stratejileri
- Internet'tan Pazarlama Araçları
Salı, Nisan 28, 2009
Microsoft Office SharePoint Server 2007 ve Windows SharePoint Services 3.0 için Service Pack 2 Yayınlandı!
Microsoft Office SharePoint Server 2007 ve Windows SharePoint Services 3.0 için Service Pack 2 Yayınlandı! Performans ve erişilebilirlik alanlarında iyileştirmeler içeren paketleri aşağıdaki linklerden indirip sisteminizi güncelleyebilirsiniz.
Windows SharePoint Services 3.0 için Service Pack 2:http://www.microsoft.com/downloads/details.aspx?FamilyId=79BADA82-C13F-44C1-BDC1-D0447337051B&displaylang=en
Microsoft Office SharePoint Server 2007 için Service pack 2:http://www.microsoft.com/downloads/details.aspx?FamilyId=B7816D90-5FC6-4347-89B0-A80DEB27A082&displaylang=en
Paketleri aşağıdaki sıra ile Farm'da bulunan tüm sunuculara aşağıdaki sırayı takip ederek yükleyebilirsiniz:
- Service Pack 2 for Windows SharePoint Services 3.0
- Service Pack 2 for Windows SharePoint Services 3.0 Language Pack (Eğer kurulu ise)
- Service Pack 2 for Office SharePoint Server 2007
- Service Pack 2 for Office SharePoint Server 2007 Language Pack (Eğer kurulu ise)
Service Pack'leri kuracak olan sistem yöneticilerine ufak bir uyarı yapmakta fayda olacaktır, Service Pack dahi kuruyor olsanız sistem üzerinde ciddi bir değişiklik yapıyor olmanız anlamına gelmektedir ve sonuç olarak bir risk alıyorsunuz, bu sebeple Service Pack'leri kurmadan önce Back Up almayı unutmamanızı öneririm.
Pazartesi, Nisan 20, 2009
What is SharePoint? @Pamukkale Üniversitesi
20 Nisan'da da pek çok üniversitede gerçekleştirmiş olduğum What is SharePoint? seminerimi bu sefer de Pamukkale Üniversitesi Bilişim Haftası'nda gerçekleştirmek için üniversiteye gittim, üniversite oldukça değişmiş ve gelişmiş en son gittiğim günden bu güne iki tane yeni bina ile karşılaştım ve neredeyse kampüsümüzü tanıyamadım ancak sunum yapacağım ve Türkiye'nin en çağdaş seminer salonlarından biri olan salon aynen yerinde duruyordu. Defalarca izleyici olarak girdiğim bu salonda ikinci defa genelde bulunduğum tarafın tam tersine doğru bakacaktım, daha önce gittiğimde de heyecanlanmıştım, bu sefer heyecanlanmam diye düşünüyordum ancak açık konuşmak gerekirse sunumun ilk dakikalarında biraz heyecanlandım ardından SharePoint'in büyüsü ile buçuk saat göz açıp kapatıncaya kadar sona erdi.
Salı, Nisan 14, 2009
NedirTv SSIS Webineri
Anlayışınız için teşekkür ederiz, yeni Webinerlerde görüşmek dileğiyle.
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...
Salı, Şubat 17, 2009
SharePoint Object Model: Programatik olarak Site Koleksiyonu düzeyinde bir Feature'ı Aktif ya da Pasif konuma getirmek
SPSite site = new SPSite("http://litwareportal"); site.Features.Remove(new Guid("a392da98-270b-4e85-9769-04c0fde267aa")); Console.WriteLine("Fetaure Silindi..."); |
Benzer bir şekilde bir Fetaure'ı aktif hale getirmek için ise Add metodu kullanılıyor olacaktır, aşağıdaki kodlar da bu durumu örneklemektedir.
SPSite site = new SPSite("http://litwareportal"); site.Features.Add(new Guid("a392da98-270b-4e85-9769-04c0fde267aa")); Console.WriteLine("Fetaure aktif hale getirildi..."); |
Pazartesi, Şubat 16, 2009
YazGelistir Seminerleri @Kocaeli Üniversitesi
Etkinlik Tarihi: 20 Şubat 2009 Cuma
Etkinlik Programı:
10:00-12:00: | Daron Yöndem - Silverlight |
13:00-15:00: | Burak Batur - Microsoft Office SharePoint Server 2007 |
Etkinlik Yeri :
Salı, Şubat 10, 2009
nedirtv?com - Şubat Ayı Webinerleri
nedirtv?com webinerleri tüm hızıyla devam ediyor. Ineta Türkiye’nin de desteğiyle nedirtv?com editörleri olarak bu ay 7 farklı konuda gerçekleşecek webinerlerde yazılım geliştiricilerle beraber olacağız. ASP.NET AJAX 3.5, Expression Blend 2, ADO.NET Data Services Güvenlik , ASP.NET Uygulamalarında Performans İpuçları , Windows Workflow Foundation, MOSS 2007-InfoPath Form Services, Expression Web 2 gibi konular üzerinde yapılacak webinerler hakkında daha detaylı bilgi almak için bu linkteki haberi okuyabilir, webinerlerin duyurularını almak için de bu linkteki olayı Facebook ajandanıza kaydedebilirsiniz.
YazGelistir Seminerleri Başlıyor! İlk durak Sakarya Üniversitesi!
Yer: Sakarya Üniversitesi Kültür ve Kongre Merkezi - Salon 3
Tarih: 12 Şubat 2009
Saat:
10:00 – 12:00 Silverlight | Daron Yöndem
13:00 – 15:00 Smart Client & Web Client Software Factory | Emre Coşkun
Pazar, Şubat 08, 2009
SharePoint Object Model: Site Koleksiyonunda aktif olan Feature'ları elde etmek
Nesne modeli açısından baktığımızda SPFeatureDefinition ve SPFeature adında iki sınıf bizi karşılıyor olacaktır. SPFeatureDefinition bir Feature MOSS'a yüklendikten sonra bu Feature'a erişmek için kullanılabilecek bir sınıftır. SPFeatureDefinition üzerinden erişilen Feature'lar abstract class'lara benzetilebilir, nasıl bir abstract class direkt kullanılamayıp ondan kalıtılan bir sınıf üzerinden kullanılabiliyorsa Farm düzeyindeki SPFeatureDefinition sınıfı ile erişilebilien Feature'larda direkt kullanılamaz, kullanılması için herhangi bir sitede aktif duruma getirilmesi gerekmektedir. Farm düzeyindeki Feature'ın aktif edilmiş haline de SPFeature sınıfı aracılığı erişilebilir.
MOSS'da her nesnenin bir ID'si vardır. GUID tipinde olan bu ID'ler nesnelere erişim için önemli bir yere sahiptir ve nesne modelinde de pek çok yerde kullanılması gerekir. Kullanılması gereken yerlerden biri de Feature'lardır ve bu ID'lere de özellik olarak nesne örnekleri üzerinden ulaşılabilir. Aşağıdaki kodlarda bir sitede kullanılan Feature'ları listeleyecek olan küçük bir programcık yer almaktadır. Kodlardan da anlaşılacağı üzere bu kodlar bir Console uygulamasıdır ve kodların çalışması için bir önceki makalede belirtmiş olduğumuz path'de yer alan Microsoft.SharePoint.dll isimli dll'in refere edilmiş ve Microsoft.SharePoint isimli namespace'in eklenmiş olması gerekmektedir.
SPSite site = new SPSite("http://litwareportal"); SPFeatureCollection siteFeatures = site.Features; foreach (SPFeature feature in siteFeatures) { Console.WriteLine(feature.Definition.DisplayName); Console.WriteLine(feature.Definition.Id); SPFeaturePropertyCollection featureoOzellikleri = feature.Properties; foreach (SPFeatureProperty property in featureoOzellikleri) { Console.WriteLine("\tProp name: " + property.Name); Console.WriteLine("\tProp value:" + property.Value); } } |
Kodlardan da görüleceği üzere bir SiteCollection düzeyinde kullanılan Feature'ları elde etmek için SPSite tipindeki nesne örneğinin Fetaures koleksiyonu kullanılmaktadır, bahsedilen koleksiyon geriye SPFetaureCollection tipinden bir koleksiyon döndürüyor ve foreach döngüsü ile de bu koleksiyon içerisinde geziliyor. Bir Feature'ın Definition'ınına yani Farm düzeyindeki tanımlamasına Definition özelliği aracılığı ile erişilebilir. Yukarıdaki kodlarda da Definition ID'sini yani Fetaure MOSS'a yüklenirken belirtilen GUID'i elde edebiliyoruz ve DisplayName özelliği ile de görüntülenen ismi ekrana yazdırılıyor. İkinci foreach ile de Fetaure'ın Property'leri üzerinde gezilip propetylerin adı ve taşıdıkları değerler ekrana yazdırılıyor. Program çalıştırılınca aşağıdaki gibi bir görünüm elde ediliyor olacaktır.
Pazartesi, Ocak 19, 2009
Programatik olarak MOSS üzerinde yeni Site Koleksiyonları Oluşturmak ve Güncellemek
SPSite litwareportal = new SPSite("http://litwareportal"); //80. portta yer alacak olan bir SiteCollection oluşturmak için 80. portta bulunan web application elde ediliyor... SPWebApplication webApplication = litwareportal.WebApplication; webApplication.Sites.Add("/sites/MossDevelopment", "MossDeveleopment", "Bu site kod yazarak oluşturuldu...", 1033, "STS#0", @"Litwareinc\Administrator", "Administrator", "admin@litwareinc.com"); Console.WriteLine("Yeni SiteCollection Eklendi..."); |
Kodlar incelendiğinde ilk parametre olarak oluşturulacak olan SiteCollection'ın Path'inin gönderildiği görülecektir. İkinci parametre olarak da SiteCollection oluşturulurken SiteCollection içerisinde yer alacak olan TopLevelSite adındaki root sitenin adı ve üçüncü parametre olarak da tanımlaması belirtiliyor. Dördüncü parametre olarak sitenin dili belirtiliyor bu alanda 1033 İngilizce'ye karşılık gelmektedir.(Türkçe Language Pack kurulduğunda Türkçe'nin kodu 1055 olacaktır.) STS#0 ile TopLevelSite'ın şablonu belirtiliyor ve ardından son iki parametre olarak da sitenin sahibi ve mail adresi belirleniyor.
SiteCollection içerisinde yer alan bir sitenin herhangi bir özelliğini programatik olarak güncellemek için de aşağıdaki kodlar kullanılabilir.
SPSite site = new SPSite("http://litwareportal/sites/MossDevelopment"); SPWeb web = site.OpenWeb(); web.Title = "MOSS Development"; //Güncellemelerde Update() metodunun çalıştırılması gerekiyor... web.Update(); Console.WriteLine("Site Güncellendi..."); |
Kodlarda daha önceliklerden faklı olarak OpenWeb() isimli bir metod kullanıldığı dikkat çekmektedir. Bu metod bir SiteCollection içerisinde yer alan bir sitenin nesnesini döndürür. Kodlarda görüldüğü gibi boş olarak kullanıldığında SiteCollection içerisinde yer alan ve SiteCollection oluşturulurken oluşturulan TopLevelSite'ın nesne örneği oluşturulur ve onun üzerinde işlem gerçekleştirilebilir. OpenWeb() metodunun OverLoad'larından bir diğeri de string olarak site URL'ini kabul eden bir metoddur. Bu metot aracılığı ile SiteCollection içerisinde yer alan bir Site açılıp üzerinden işlem gerçekleştirilebilir.
SiteCollection içerisine yeni bir Site eklemek için de aşağıdaki kodlar kullanılabilir.
SPSite site = new SPSite("http://litwareportal/sites/MossDevelopment"); SPWebTemplateCollection allTemplates = site.GetWebTemplates(1033); SPWebTemplate template = allTemplates["BLOG#0"]; SPWeb blogSite = site.AllWebs.Add("blog", "Burak's", "Burak'ın Bloğu", 1033, template, false, false); Console.WriteLine("{0} isimli site oluşturuldu...", blogSite.Title); |
Yukarıdaki kodlarda da SPWebTemplateCollection isimli bir koleksiyon dikkat çekiyor bu koleksiyon Site template'lerini taşımak için oluşturulmuş bir koleksiyondur ve bir önceki satırda oluşturulan SPSite nesnesi içerisinde yer alan 1033 dilinde yani İngilizce'de yer alan şablonlar SPWebTemplateCollection tipinden oluşturulan nesneye alınıyor ve bir alt satırda da içlerinden daha bir tanesi daha sonra kullanılmak üzere SPWebTemplate tipinde tanımlanan nesne üzerine alınıyor. SiteCollection'a yeni bir Site eklemek için SPSite'ın AllWebs koleksiyonu kullanılıyot ve koleksiyonun Add metodu ile yeni bir Site ekleniyor, bu alanda metodun ilk parametresi sitenin URL'ini, ikincisi adını üçüncüsü de tanımlamasını ifade ediyor. Dördüncü parametre dili ve beşinci parametre de anlaşılacağı üzere sitenin şablonunu ifade ediyor. Bu alanda daha önce template isimli değişkende depolanan "BLOG#0" isimli template Blog Template'ini işaret etmektedir. Son iki parametreye false değeri atandığı görülmektedir bunlardan ilki site için ayrı bir güvenlik alt yapısının kullanılıp kullanılmayacağını belirtmektedir, false diyerek parent site'ın güvenlik ayarlarının bu site için de aynen uygulanacağını belirtmiş olduk. Son parametre ise belirtilen URL'in boş olmaması durumunda ne yapılacağını belirtmektedir, bu alanda false vererek daha önce belirtilen URL'in kullanılması durumunda hata mesajı fırlatılması sağlandı eğer true olarak belirtilirse belirtilen URL MOSS'un kullanacağı bir URL haline getirilip site oluşturuluyor olacaktır.
Perşembe, Ocak 15, 2009
MOSS'a Programatik Olarak Erişim
SPSite ve SPWeb sınıfları da site (Site) ve site koleksiyonlarına (Site Collection) erişmek için kullanılabilecek olan iki sınıftır, SPSite ve SPWeb sınıflarından bahsetmeden önce ilk olarak site koleksiyonu yapılarına deyiniyor olmak mantıklı olacaktır. SharePoint alt yapısı ile bir portal geliştirildiğinde parçalar web siteleri olarak bir bütün oluşturuyor olacaktır. Türkçe yazılışı da aynı olan bu parçalara Site adı verilir, siteleri aynı amaca veya aynı gereksinimlere göre gruplama görevini üstlenen yapıya ise Site Koleksiyonu (Site Collection) adı verilir. MOSS üzerinde yer alan bir Web Uygulaması (Web Application) içerisinde yeni siteler oluşturulmak istenildiğinde bu siteler direkt Web Uygulaması düzeyinde değil bir Site Koleksiyonu içerisinde oluşturuluyor olmalıdır dolayısı ile MOSS'da aşağıdaki şekilde de yer alan bir hiyerarşi mantığı söz konusudur.
Şekilden de görüleceği üzere IIS altında yer alan Web Application'lar içerisinde SiteCollection'lar bulunabiliyor ve SiteCollection'lar içerisinde de Site'lar yer alıyor. Programatik olarak SiteCollection'lara erişmek için nesne modelinde yer alan SPSite ve Site Collection içerisinde yer alan sitelere ulaşmak için de SPWeb sınıfları kullanılıyor olacaktır. SPSite ve SPWeb sınıflarının kullanılabilmesi için MOSS 2007 kurulu olan bir makinede yer alan SharePoint dll'i uygulamaya referans edilmelidir. Varsayılan olarak kullanılacak olan dll C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\ISAPI yolunda yer alıyor olacaktır. Klasörde yer alan Microsoft.SharePoint.dll isimli dll Visual Studio ile yeni bir proje açılıp refere edildikten sonra dll içindeki isim uzayları (NameSpace) kullanılabiliyor olacaktır.
Hiyerarşik yapının doğası gereği herhangi bir Site'a erişmek için ilk olarak SiteColection'a erişilmeli ve ardında da istenilen Site'a erişilmelidir. Bir SiteCollection'a erişmek için ilk olarak SPSite sınıfının bir nesne örneği oluşturulur ve yapılandırıcı metod içerisinde erişilmek istenilen SiteCollection'un URL'i belirtilebilir. Konuyu bir örnekle açıklamak için ilk olarak Visual Studio içerisinden bir Console uygulaması açıp Microsoft.SharePoint.dll isimli dll'i refere edelim ve ardından gerekli isim uzaylarını ekleyelim ardından da bir SiteCollection'a erişip bir kaç bilgisini yazdıracak olan ve ardından da SiteCollection içerisinde yer alan siteleri listeleyecek olan aşağıdaki kodları yazıyor olalım.
/*SPSite MOSS'da yer alan SiteCollection'lara erişmemize olanak tanıyan Class'dır...*/ SPSite siteCollection = new SPSite("http://litwareportal"); /*SPSite tipinden oluşturulan bir nesne aracılığı ile ilgili SiteCollection'ın WebApplication'ınana da erişebiliriz.... Bu özellik bize SPWebApplication tipinden bir nesne döndürür...*/ Console.WriteLine("Site Collection'ın WebApplication'ı: " + siteCollection.WebApplication.DisplayName); /*SiteCollection içerisinde yer alan sitelere erişmek için SPWeb Class'ı kullanılır...*/ Console.WriteLine("{0} URL'inde yer alan SiteCollection'ın web siteleri:", siteCollection.Url); SPWebCollection tumWebler = siteCollection.AllWebs; foreach (SPWeb web in tumWebler) { Console.WriteLine("\tTitle: " + web.Title); Console.WriteLine("\tSite logo URL'i: " + web.SiteLogoUrl); Console.WriteLine("Site içerisinde yer alan Listeler: "); foreach (SPList list in web.Lists) { Console.WriteLine("\t\tListe Adı: " + list.Title); } } |
Yukarıda yer alan kodlarda ilk olarak SPSite tipinde bir nesne oluşturuluyor ve http://litwareportal isimli SiteCollection'a erişilmek isteniliyor. Oluşturulan nesne üzerinden ilk olarak SiteCollection'u taşıyan WebApplication'a erişiliyor görüleceği üzere bu özellik SPWebApplication tipinden bir nesne döndürüyor ve adı yazılyor. Bir SiteCollection içerisinde yer alan tüm sitelere erişmek için SiteCollection'un özelliklerini taşıyan nesne örneği üzerinden AllWebs özelliği kullanılabilir bu özellik de geriye SPWebCollection tipinde bir nesne döndürecektir. Yukarıdaki kodlarda yer alan ilk foreach ile SPWebCollection tipindeki nesnenin içinde yer alan siteler'in özellikleri listeleniyor ve içerde yer alan ikinci foreach içerisinde de sitelerin içinde yer alan listeleler görüntüleniyor. Uygulama çalıştırıldığında ekran görüntüsü aşağıdaki resimdekine benzer bir hal alacaktır.