Cuma, Kasım 06, 2009

nedirtv?com - Kasım Ayı Webinerleri


Kasım ayı içerisinde gerçekleştireceğimiz webinerlerin listesi bu linkte bulunmaktadır.

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

Birkaç aylık aradan sonra nedirtv?com webinerleri kaldığı yerden devam ediyor. Ekim ayı boyunca altı farklı konu ile sizlerle bir araya geleceğiz.
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.



Yeni videolara http://www.nedirtv.com/ adresinden erişebilirsiniz.

Çarşamba, Ağustos 12, 2009

SQL Server'da Sistem Database'lerini Taşıma

SQL Server'da yer alan veritabanlarınları verileri .mdf ya da .ndf uzantılı dosyalarda saklarlar ancak SQL Server'ın mimarisi gereği .ldf uzantılı bir dosya da logları yazmak amacı ile mutlaka kullanılır. Bu dosya tiplerinden .mdf ve .ldf uzantılı olanları bir veritabanında mutlaka yer alıyor olmalıdır. Veriler mdf uzantılı dosyada saklanacak ve gerçekleştirilecek olan her transaction'ında da ldf mutlaka kullanılıyor olacaktır. Gerek performans gerek de depolama alanın değiştirilmesi gereksinimleri ile bu dosyaların yerlerinin değiştirilmesi veritabanı kullanıma alındıktan uzunca bir süre sonra da gündeme gelebilir, peki bu şekilde bir senaryoda nasıl bir çözüme gideceğiz?


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.

USE master;
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


SQL Server'ın servisi restart edilmeden bu ayarlar geçerli olmayacaktır. Bu kodlar çalıştırıldıktan sonra servis durdurulup dosyalar yeni lokasyonlarına taşınmalıdır, ardından servis yeniden start edildikten sonra tempdb'nin dosyalarının yeni yeri ayarlanmış olacaktır.

Yukarıdaki kodlar yardımı ile kullanıcı veritabanları ile sistem veritabanlarının dosyalarının yerlerini sorunsuz bir şekilde değiştirebilirsiniz ancak kodları dikkatle incelerseniz USE master şeklinde başladığını göreceksiniz peki Master veritabanının dosyalarının yeri nasıl değişecektir?
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;
-lC:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\mastlog.ldf

Bu parametrelerden -d Master veritabanın data dosyasının fiziksel adresini, -l log dosyasının fiziksel adresini ve -e parametresi de hata loglarının yer alacak olduğu dizini belirtir. Bu parametreler yenileri ile değiştirilip ayarları kaydedip ardından servisi durdurduktan sonra, master veritabanının dosyalarını yeni yerine taşınır. Servis yeniden start edildikten sonra master veritabanı belirtilen yeni path'deki dosyaları kullanıyor olacaktır.

NedirTv.com'da yeni bir video dizisine başlıyoruz!

Microsoft SQL Server 2008'in yönetimini konu alan yepyeni bir video serisi çok kısa bir süre içerisinde http://www.nedirtv.com/ adresinde yer alıyor olacak. Benim büyük bir zevkle kaydetmeye başladığım videolar SQL Server'ın yönetimi tarafında SQL Server 2008'inde yeniliklerini içine alacak şekilde pek çok konuya ateş ediyor olacak, SQL Server'ın yönetimi tarafında kendini geliştirmek isteyen herkesi NedirTv.com'a bekliyoruz.

Cuma, Temmuz 24, 2009

Kayseri - Ananın Yeri!

Yaklaşık bir haftadır Kayseri'de Boydak Holding bilgi işlem çalışanlarına SQL Server 2008 yönetimini anlatıyorum, Boydak Holding adını belki duymamışsınızdır ancak İstikbal ve Bellona markalarını duymayanınız yoktur diye düşünüyorum, Boydak'ı bu iki markanın ve adını sıklıkla duyduğumuz pek çok markanın sahibi olan holding şeklinde tanımlayabiliriz. Daha önce de bir haftalığına Kayseri'de aynı firmaya ziyaretim olmuştu ancak bu gün yediğim bir yemek sonrasında bu yazıyı yazmaya karar verdim. Yemek yediğim yerin adı beni bu yazıyı yazmaya zorladı desem sanırım yanlış bir cümle kurmuş olmam, Kayseri'nin yöresel lezzetlerini de menüsünde barındıran restoranın adı "Ananın Yeri". Daha önce komik mekan isimlerinde bu ismi görmüştüm ancak bir gün orada yemek yiyeceğim hiç aklıma gelmezdi, hayat işte; gazete ya da mailde gördüğünüz yere doğru sizi yönlendiriveriyor.



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

stsadm.exe SharePoint üzerinde komut satırı aracılığı ile işlem yapmak için kullanabilecek bir araçtır, özellikle üçüncü parti bir yazılım kullanılmıyor ise Backup'ları zamanlamak için stsadm.exe kilit rol oynamaktadır. Aracın kendi yardımından portalın tamamının yedeğini almak için örneklere erişilebilmektedir ancak bilineceği üzere, SharePoint portalın herhangi bir bölümünün de yedeğinin alınmasına olanak tanımaktadır.Portalın herhangi bir bölümünün yedeğini almak için stsadm aracına item parametresi ile hangi bölümün yedeğinin alınacağı belirtilmelidir, burada bir soru işareti daha bizi karşılıyor item parametresine belirtilecek olan bölüm adının nereden elde edileceği!
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

24.05.2009 Pazar Günü Habitat ile işbirliğimiz çerçevesinde Genç Liderleri Bilgilendiriyor olacağız. Etkinliğe davet edilen Genç Liderler, Bilişim Güvenliği ve Internet'ten Pazarlama Stratejileri konularında bilgi sahibi olma fırsatını elde edecekler. Bilişim Güvenliği konusunu Netron Technology'den sevgili çalışma arkadaşım ve Cisco'nu duayeni Hayrullah Kolukısaoğlu ele alırken, Internet'ten Pazarlama konusunu da ben ele alıyor olacağım, işin içinde Pazarlama geçince sanırım ilk akla gelenlerden biri oldum bu sebeple bu konuya beni uygun gördüler :) Konferansın programı şu şekilde düşünüldü:

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
13:30 - 16:00 - Internet'ten Pazarlama Stratejileri - Burak Batur
  • 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:

  1. Service Pack 2 for Windows SharePoint Services 3.0
  2. Service Pack 2 for Windows SharePoint Services 3.0 Language Pack (Eğer kurulu ise)
  3. Service Pack 2 for Office SharePoint Server 2007
  4. 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

Bir yıldan daha fazla bir sürenin ardından sonra bu gün yeniden kendi üniversitemde yani Pamukkale Üniversitesi'nde seminer verme fırsatım oldu. Denizli'nin memleketim ve okuduğum il olması nedeni ile yeri benim için ayrıdır ve genellikle seminer veya eğitimlere ailemi de görmek için bir kaç gün önce giderim, bu sefer de haftasonu tatilini de birleştirerek yaklaşık üç gün Denizli'de kalma fırsatım oldu ve tanıdıklarımda hasret giderdim :)
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

Bu gün gerçekleşmesi beklenen SQL Server Integration Services Webinerim sistemde çıkan bir problem nedeni ile ileri bir tarihe ertelenmiştir, sisteme sunucu yetkisi ile sorunsuz bir şekilde bağlanılmasına rağmen katılımcı yetkisi ile bağlanılamamıştır. NedirTv ekibi olarak sorunu araştırıp diğer Webinerlerde karşılabilecek muhtamel sorunların önüne geçiyor olacağız.
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

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

Salı, Şubat 17, 2009

SharePoint Object Model: Programatik olarak Site Koleksiyonu düzeyinde bir Feature'ı Aktif ya da Pasif konuma getirmek

Daha önceki postlarda http://litwareportal adresinden erişilen SiteCollection içerisinde kullanılan yani aktif olan Feature'ları listelemiştik. Bu Fetaure'lardan herhangi birini kaldırmak yani pasif konuma getirmek için SPSite tipinde oluşturulan nesnenin Features koleksiyonun Remove metodu kullanılabilir, bu metod içerisine pasif konuma getirilecek olan Fetaure'ın ID'sini GUID olarak kabul ediyor olacaktır. Aşağıdaki kodlarda bu durum örneklenmektedir.


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

Yazgeliştir 2009 seminer turuna Kocaeli Üniversitesi'nden devam ediyor. Silverlight ve Microsoft Office SharePoint Server 2007 teknolojileri hakkında iki oturumdan oluşan, sektörden profesyonellerin ve üniversite gençliğinin bir arada olacağı etkinliklikte siz de yerinizi alın!

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 :
Kocaeli Üniversitesi Umuttepe Yerleşkesi Teknik Eğitim Fakültesi Konferans Salonu

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!

YazGelistir Ekibi olarak Türkiye'de pek çok lokasyonda gerçekleşecek olan seminerler dizisi başlatıyoruz, sektörden profesyoneller ile üniversite öğrencilerinin bir araya gelmesini hedeflediğimiz seminerler dizisinin ilk ayağı 12 Şubat Perşembe Günü Sakarya Üniversitesi'nde gerçekleşiyor olacak. 12 Şubat tarihinde düzenlenecek olan seminerde konu başlıkları Silverlight ve Smart Client & Web Client Software Factory. Sektörden profesyonellerin ve üniversite gençliğinin bir arada olacağı etkinliklikte siz de yerinizi alın!

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

Feature'lar MOSS 2007'de bir sitenin gerçekleştirip gerçekleştiremeyeceği işlemleri belirlemek için kullanılabilecek kavramlardır. Türkçe'ye "özellik" şeklinde çevirebileceğimiz Feature kavramı gerçek anlamda da sitelerin özelliklerini kısıtlayıp genişletebilmektedir. Örneğin bir site içerisinde arama işlemlerinde kullanılabilecek WebPart'ların kullanılabilmesi için Office SharePoint Server Search Web Parts özelliğinin açık olması gerekmektedir ya da bir site içerisinde Disposition Workflow'un kullanılabilmesi için Disposition Approval Workflow özelliğinin açık olması gerekmektedir, bahsedilen bu iki Feature da SiteCollection düzeyinde Fetaure'lardır Site düzeyinde olup sadece Site'ı etkileyen Feature'larda mevcuttur Office SharePoint Server Publishing Fetaure'ı bunlardan biridir ve sitenin daha görsel ve daha interaktif bir duruma getirilmesine olanak tanır. Bir Site'ın ya da SiteCollection'ın Feature'larını görüp aktif pasif etmek için site ayarlarından Site Features ve Site Collection Features bağlantıları kullanılabilir.

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

SharePoint Nesne modeli kullanılarak yeni bir SiteCollection oluşturmak için aşağıdaki kodlar kullanılabilir. Kodlarda ilk olarak bir SiteCollection'ın adresi belirtilerek bir SPSite tipinde bir nesne oluşturuluyor ardından da bu SiteCollection'ın yer aldığı WebApplication elde edilip WebApplication içerisine yeni bir SiteCollection oluşturuluyor.
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

MOSS 2007 alt yapısı kullanılarak gerçekleştirilen sistemler kurumların pek çok ihtiyacını karşılayabilecek yetenektedir ancak zaman zaman sadece MOSS 2007 ile gelen özellikler kurumların ihtiyaçlarına cevap veremeyebilir, ya da kurum içinde kullanılmakta olan bir uygulama MOSS 2007 ile entegre hale getirilmek istenebilir. Bu gibi durumlarda SharePoint'e programatik olarak erişme ihtiyacı ortaya çıkmaktadır. MOSS 2007 ile birlikte SharePoint'e programatik olarak erişmek amacı ile web servisleri ve SharePoint Nesne Modeli yazılım geliştiricilere sunulmaktadır. Bu post'ta SharePoint Nesne Modeli içerisinde yer alan SPWeb ve SPSite sınıflarına deyinip bir site koleksiyonu içinde yer alan listeleri görüntülüyor olacağız.

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.



Pazar, Ocak 04, 2009

nedirtv?com - Ocak Ayı Webinerleri

nedirtv?com editörleri tarafından Ocak ayı boyunca gerçekleştirilecek olan 8 farklı webinere tüm yazılım geliştiricileri ve teknolojistleri bekliyoruz. Bu ay ben de iki webiner ile sizlerle olacağım, ilk seminerim pek çok üniversitede gerçekleştirmiş olduğum What is SharePoint? olacak bir diğeri ise yoğun olarak eğitim talebi aldığımız SharePoint Development eğitiminin küçük bir girişi niteliğinde olacak. Seminerler hakkında daha detaylı bilgiye buraya tıklayarak erişebilirsiniz.