Çarşamba, Eylül 15, 2010

SharePoint 2010 Nasıl Yapılır? - External List'lere CRUD yeteneği kazandırmak!

Daha önceki yazılarımızda SharePoint 2010 ile birlikte hayatımıza giren External List'in ne olduğu ve nasıl oluşturulabildiğini ele almıştık daha önceki posta erişmek için buraya tıklayabilirsiniz; Bu postta da External List'e yeni öğe eklemeyi ve var olanları düzenlemeyi ele alıyoruz.  External List'te CRUD yeteneği kazandırma konusunda Internet'te yapmış olduğum araştırmalarda konu ele alınırken veri ekleme, silme ve güncelleme işlemlerinin Linq to SQL Classes aracılığı ile gerçekleştirildiğini gördüm sizler de bu metodu tercih ederseniz SharePoint'in resmi bloğunu ziyaret edebilirsiniz. Biz burada biraz daha farklı bir yöntemle ilerliyor olacağız, veri tabanına erişmek için kullanacağımız kodları tamamen kendimiz geliştireceğiz.

Yeni bir Business Data Connectivity Model oluşturarak işleme başlayalım. Yeni bir BDC Model oluşturmak için Visual Studio 2010'da New/project ekranından SharePoint bölümü aracılığı ile BDC Model projesini seçelim.

Proje şablonunu seçip OK butonuna basıldıktan sonra geliştirmenin hangi site üzerinde gerçekleştirileceği Visual Studio'ya belirtilmelidir. Buraya oluşturulacak olan modelin deploy edilecek olduğu siteyi yazıp Finish butonu ile proje oluşturulur.


Oluşturulan projeye BDC Model'de kullanılmak üzere bir tane class ekleyeceğiz. Ekleyecek olduğumuz Class hem tip olarak kullanılacak hem de CRUD olarak kısaltabileceğimiz Create, Retrieve, Update ve Delete metodlarını içerecek. Visual Studio'da Projeye sağ tuş ile tıklayıp New Item menüsünden Kisi adında bir tane Class ekleyelim. Oluşturulan Class aşağıdaki resimde yer alan Rehber isimli tabloya veri ekleyip silecektir. Resimden de anlaşılacağı üzere tablonun beş tane sütunu var bu sütunlardan KisiID olanı primary key ve aynı zamanda da identity özellikli Create ve Update işlemlerinde bu sütuna dikkat etmek gerekiyor.

Oluşturulan Class'ın içeriğini gerekli işlemlerin yapılabilmesi adına aşağıdaki şekilde dolduruyoruz.

Kisi.cs
using System;
using System.Collections.Generic;

using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;


namespace BdcRehberMakale
{
     public class Kisi
     {
          public int KisiID { get; set; }
          public string Ad { get; set; }
          public string Soyad { get; set; }
          public string Email { get; set; }
          public string Telefon { get; set; }
          public string ConnectionString
          {
               get
              {
                    return "Data Source=.; Initial Catalog=TCMLABTEST; Integrated Security=True";
               }
          }


          public Kisi()
          {


          }


          public Kisi(int kisiID,string ad,string soyad, string email, string telefon)
          {
                    this.KisiID = kisiID;
                    this.Ad = ad;
                    this.Soyad = soyad;
                    this.Email = email;
                    this.Telefon = telefon;
          }


          public void Create()
          {
               SqlConnection baglanti = new SqlConnection();
               baglanti.ConnectionString = this.ConnectionString;


               SqlCommand komut = new SqlCommand();
               komut.Connection = baglanti;
               komut.CommandText = "INSERT INTO Rehber (Ad,Soyad,Email,Telefon) VALUES (@Ad,@Soyad,@Email,@Telefon)";


               komut.Parameters.AddWithValue("@Ad", this.Ad);
               komut.Parameters.AddWithValue("@Soyad", this.Soyad);
               komut.Parameters.AddWithValue("@Email", this.Email);
               komut.Parameters.AddWithValue("@Telefon", this.Telefon);


               baglanti.Open();
               komut.ExecuteNonQuery();
               baglanti.Close();
          }


          public List RetrieveAll()
          {
               SqlConnection baglanti = new SqlConnection();
               baglanti.ConnectionString = this.ConnectionString;


               SqlCommand komut = new SqlCommand();
               komut.Connection = baglanti;
               komut.CommandText = "Select * FROM Rehber ORDER BY KisiID";


               DataTable dt = new DataTable();
               SqlDataAdapter adapter = new SqlDataAdapter(komut);
               adapter.Fill(dt);


               List kisiler = new List();
               foreach (DataRow row in dt.Rows)
               {
               kisiler.Add(new Kisi(Convert.ToInt32(row["KisiID"]),"" + row["Ad"], "" + row["Soyad"], "" + row["Email"], "" + row["Telefon"]));
               }


               return kisiler;
          }


          public Kisi RetrieveByID(int kisiID)
          {
               SqlConnection baglanti = new SqlConnection();
               baglanti.ConnectionString = this.ConnectionString;

               SqlCommand komut = new SqlCommand();
               komut.Connection = baglanti;
               komut.CommandText = "Select * FROM Rehber WHERE KisiID=@KisiID";
               komut.Parameters.AddWithValue("@KisiID", kisiID);


               DataTable dt = new DataTable();
               SqlDataAdapter adapter = new SqlDataAdapter(komut);
               adapter.Fill(dt);


               Kisi k = new Kisi();
               if (dt.Rows.Count == 1)
               {
                    k.KisiID = kisiID;
                    k.Ad=""+dt.Rows[0]["Ad"];
                    k.Soyad = "" + dt.Rows[0]["Soyad"];
                    k.Email = "" + dt.Rows[0]["Email"];
                    k.Telefon = "" + dt.Rows[0]["Telefon"];
               }
               return k;
          }


          public void Update()
          {
               SqlConnection baglanti = new SqlConnection();
               baglanti.ConnectionString = this.ConnectionString;


               SqlCommand komut = new SqlCommand();
               komut.Connection = baglanti;
               komut.CommandText = @"UPDATE Rehber SET
                                                            Ad=@Ad,
                                                            Soyad=@Soyad,
                                                            Email=@Email,
                                                            Telefon=@Telefon
                                                            WHERE   KisiID=@KisiID";
               komut.Parameters.AddWithValue("@Ad", this.Ad);
               komut.Parameters.AddWithValue("@Soyad", this.Soyad);
               komut.Parameters.AddWithValue("@Email", this.Email);
               komut.Parameters.AddWithValue("@Telefon", this.Telefon);
               komut.Parameters.AddWithValue("@KisiID", this.KisiID);


               baglanti.Open();
               komut.ExecuteNonQuery();
               baglanti.Close();
          }


          public void Delete()
         {
               SqlConnection baglanti = new SqlConnection();
               baglanti.ConnectionString = this.ConnectionString;


               SqlCommand komut = new SqlCommand();
               komut.Connection = baglanti;
               komut.CommandText = @"DELETE FROM Rehber
                                                            WHERE KisiID=@KisiID";
               komut.Parameters.AddWithValue("@KisiID", this.KisiID);


               baglanti.Open();
               komut.ExecuteNonQuery();
               baglanti.Close();
          }
     }
}

Kisi class'ını dikkatle incelediğimizde yapılandırıcı metod dışında toplam beş tane metod olduğu gözlerden kaçmayacaktır. Bu metodlardan iki tanesi veri getirmek diğer üçü de veri yazmak için olan işlemlerdir. Veri getirmek için kullanılan metodların dönüş değerinin Kisi sınıfı ve Kisi koleksiyonu olduğuna dikkat ediniz. Veri sınıfımız başka bir deyişle Data Access Layer hazırlandı şimdi sıra geldi BDC Modeli'ni hazırlamaya. Visual Studio'da Solution Explorer'a göz atacak olursak orada BDCModel1 adında bir modelin yer aldığını görüyor olacağız. Her şeyi sıfırdan yapmak adına BDCModel1 isimli modeli projemizden silelim. Yeni bir model eklemek için projeye sağ tıklayalım ve New Item menüsünden SharePoint/2010 bölümünde yer alan Business Data Connectivity Model tipini seçelim. Model adı olarak BdcModelRehber belirleyelim. BDCModelRehber'e tıklayarak model'in içeriğine göz atabiliriz. Oluşturulan modelde Entity1 isimli bir entity hazır halde karşımıza gelecektir, bunu da silip yenisini ekleyeceğiz. Entity1'e tıkladıktan sonra delete tuşu ile gerekli aksiyonu alabiliriz. Yeni bir Entity eklemek için sol tarafta yer alan ToolBox'ı kullanabiliriz. ToolBox'tan bir tane Entity'i sürükleyip modelimizin üzerine bırakalım. Bu Entity'in adını da kendimize göre kişiselleştiriyor olmalıyız. Gerekli güncellemeleri yapmak için Entity'e sağ tıklayıp properties'i seçelim, özelliklerden Entity'nin adını EntityRehber olarak değiştirelim. Şimdilik EntityRehber adında boş bir Entity sistemde mevcut, bu entity'nin bir adet kimlik niteliğinde bir üyesi olmalı.

Entity'ye yeni bir kimlik yani identifier eklemek için identifiers bölümüne sağ tıkladıktan sonra add new identifier tuşuna tıklayalım. Ardından oluşturulan identifier'ın özelliklerinden Name özelliğini KisiID ve tipini de System.Int32 olarak belirleyelim. 



BDC Modelimizin kimlik niteliğindeki üyesini ekledikten sonra sıra geldi metodlarını oluşturmaya. Entity'nin methods bölümüne tıkladığımızda Visual Studio'da BDC Method Details penceresi görüntüleniyor olacaktır. Method Details penceresi aracılığı ile gerekli olan metodları ekleyebiliriz. Metod tipleri Visual Studio'da önceden tanımlanmıştır ve tek tıklama ile oluşturulabilir. Burada ilk olarak veri getirmek için gerekli olan ReadItem metodunu ekliyor olacağız. Method Details penceresinden Specific Finder Method'u seçerek gerekli methodu oluşturabiliriz.


ReadItem metodu oluşturulduktan sonra sıra geldi geri döndürülecek olan tipi tanımlamaya. Geri döndürülecek olan tip Method Details penceresinde ReadItem'a tıklanıldığında return parametresinde görüntüleniyor olacaktır. Parametreye tıklayıp edit diyerek tipi özelleştirebiliriz.


Edit'e tıkladıktan sonra BDC Explorer penceresi görüntüleniyor olacaktır. Bu pencereden @entityRehber parametresi genişletildikten sonra geri dönecek olan tipe erişilebilir. Bu tipin içinde yer alacak üyelerin tanımlamaları burada yapılmalıdır. EntityRehber'e sağ tıklanıp Add Type Descriptor'a tıklanarak gerekli üyeler eklenebilir. Sırası ile KisiID, Ad, Soyad, Email ve Telefon'u buraya ekliyor olacağız. Bu üyelerden KisiID'nin tipi Int32 diğerleri ise varsayılan yani string olacaktır. KisiID'nin Identifier Entity özelliği EntityRehber (BdcRehberMakale.BdcModelRehber.EntityRehber) ve Identifier özelliği de KisiID olarak atanmış olmalıdır. Bu atamaları yazmak yerine size sunulan seçimlerden seçmelisiniz.

Üyelerin tanımlanmasının ardından EntityRehber'in özelliklerine geçip burada da bir ayarlama yapılması gerekiyor. EntityRehber'in TypeName özelliğini BdcRehberMakale.Kisi, BdcModelRehber olarak ayarlıyoruz. Bunu da yine listeden seçiyoruz.


ReadItem metodu oluşturulduktan sonra sıra geldi diğer metodları oluşturmaya metod oluşturma işlemini yukarıda anlattığımız şekilde yaparak sırası ile Finder, Creator, Updater ve Deleter metodlarımızı oluşturalım. Burada dikkat edilmesi gereken bir şey vardır Visual Studio bir önceki adımda tanımlamış olduğumuz tipi tanıyacak ve bu metodlarda da otomatik olarak gerekli tanımlamalar yapılacaktır.

Metodlar oluşturululmasının ardından sıra çalışacak olan kodları yazmakta... Şu anda arka planda metod tanımlamaları yapıldı ancak doğal olarak içlerine gerekli kodların da yazılması gerekmektedir. BDC Explorer'da EntityRehber'e sağ tıklanıp View Code denildikten sonra metodların tanımlamaları görüntüleniyor olacaktır. Bu tanımlamaları aşağıdaki gibi doldurarak gerekli geliştirmeyi tamamlayabiliriz.

public static Kisi ReadItem(int kisiID)

{
     Kisi k = new Kisi();
     return k.RetrieveByID(kisiID);
}


public static IEnumerable ReadList()
{
     Kisi k = new Kisi();
     return k.RetrieveAll();
}

public static Kisi Create(Kisi newEntityRehber)
{
     Kisi k = new Kisi();
     k.Ad = newEntityRehber.Ad;
     k.Soyad = newEntityRehber.Soyad;
     k.Email = newEntityRehber.Email;
     k.Telefon = newEntityRehber.Telefon;


     k.Create();
     return k;
}


public static void Update(Kisi entityRehber)
{
     Kisi k = new Kisi();
     k.KisiID = entityRehber.KisiID;
     k.Ad = entityRehber.Ad;
     k.Soyad = entityRehber.Soyad;
     k.Email = entityRehber.Email;
     k.Telefon = entityRehber.Telefon;


     k.Update();
}


public static void Delete(int kisiID)
{
     Kisi k = new Kisi();
     k.KisiID = kisiID;


     k.Delete();
}

Geliştirmiş olduğumuz modelin kullanılabilmesi için modelin SharePoint'e gönderilmesi gerekmektedir. Visual Studio 2008 tarafında problem yaşadığımız deployment senaryolarının tamamı Visual Studio 2010'da çözülmüş durumdadır ve projeye sağ tıklandıktan sonra Deploy'a tıklayarak modeli SharePoint'e gönderebiliriz. Deploy işleminin ardından daha önceki postta belirttiğimiz şekilde External List oluşturup kullanmaya başlayabilirsiniz. SharePoint 2007 tarafında oldukça ek geliştirme ile çözebildiğimiz bu durumun SharePoint 2010'da bu kadar kolay bir şekilde çözülüyor olması gerçekten harika...

Pazartesi, Eylül 13, 2010

Yeni İşyerim: TCM | Teknoloji Çözümleri Merkezi

Kariyerimi TCM | Teknoloji Çözümleri Merkezi İş Çözümleri Departmanında sürdürüyorum. Daha önceki iş yerlerimde üstlenmiş olduğum görevlerle paralel olarak TCM'de de yoğun olarak SharePoint projelerini yürütüyor olacağım. SharePoint projelerinde; anahtar teslim proje, günlük danışmanlık, dış kaynak personel sağlama ve eğitim çözümleri ile yanınızdayız. TCM sadece SharePoint tarafında değil İş Zekası, Yazılım, Network ve Güvenlik çözümleri başlıklarında da tecrübeli ekibi ile sektöre hizmet vermektedir. İsterseniz TCM'yi biraz tanıyalım;

TCM | Teknoloji Çözümleri Merkezi
Teknoloji Çözümleri Merkezi (TCM);Türkiye'nin önde gelen bilişim şirketlerinde çeşitli pozisyonlarda uzun yıllar görev yapan bir çekirdek ekip tarafından kurulmuştur. Kuruluşu ile birlikte Türkiye'nin önde gelen şirketleri ile çalışmaya başlamış ve aldığı işler ile ekibini hızla büyütmüştür.



Özellikle SharePoint, Kurumsal Zeka, Yazılım ve Network çözümleri üzerine anahtar teslim proje ve danışmalık hizmetleri vermektedir. Bununla birlikte uzun yıllar geliştirdiği farklı dış kaynak çözümleri ile müşterilerine birçok seçenek ile hizmet vermektektedir.
 
TCM hakkında daha geniş bilgi sahibi olmak için http://www.tcm.com.tr/ adresini ziyaret edebilirsiniz.

Salı, Ağustos 17, 2010

SharePoint 2010 Overview - Asset Library

SharePoint 2010 ile birlikte; video, resim ve müzik dosyalarınının bir kütüphane içerisinde toplanıp yönetilebilmesi oldukça kolaylaştırılmış, üstelik video ve müzik dosyalarının web arayüzünden çalıştırılması da ihmal edilmemiş. Daha önceki sürümlerde bir takım eklentiler ile gerçekleştirebildiğimiz bu işlemin ekstra bir çaba harcamadan kullanılabiliyor olması pek çok projenin hayata geçirilmesi sürecini oldukça hızlandıracak gibi görünüyor. E-learning uygulamalarının oldukça popüler olduğu günümüzde SharePoint alt yapısı üzerinden gerçekleştirilebilecek bir çözüm hem çok hızlı, hem çok güvenilir hem de diğer sistemler ile maksimum entegre bir çözüm olacaktır.

Asset Library'i kullanmak için; sitemize Site Actions-->Create-->Asset Library yolunu izleyerek bir tane Asset Library tipinde kütüphane ekliyor olalım. Kütüphane eklendikten sonra yapılacak tek işlem videoları ya da diğer dosyaları oluşturmuş olduğumuz kütüphaneye yüklemek. Dosyalar kütüphaneye yüklendikten sonra özellikleri belirtilmelidir, burada belirtilmesi gereken en önemli özellik dosyanın tipi size image, audio ya da video şeklinde üç tane tip sunuluyor olacaktır dosyanızın tipini belirtip kaydettikten sonra online içerik görüntülenmesine olanak tanıyan sitelerdekine benzer bir görünüm aracalığı ile dosyalarınızı görüntüleyebilirsiniz.  


Salı, Ağustos 10, 2010

SharePoint 2010 External List Erişim Problemi: Access denied by Business Data Connectivity.

Bir önceki postta External Content Type oluşturup bunu SharePoint 2010'a deploy etmeyi ve bu content type'ı kullanacak bir External List oluşturmayı ele almıştık. Almış olduğum bir mail üzerine bahsedilen işlemler gerçekleştirilirken karşılaşılabilecek bir problemden bahsetmeye karar verdim. BDC ile bir External Content Type oluşturup, oluşturmuş olduğunuz content type'ı SharePoint'e aktardıktan sonra içerik tipinin yetkilerini de ayarlamalısınız, yetkiler ayarlanmadığında postumuzun da başlığında yer alan "Access denied by Business Data Connectivity (Business Data Connectivity tarafından erişim engellendi.)" uyarısı ile karşılaşıyor olmak muhatemeldir.



Kullanılacak olan External Content Type içerisinde yer alan Entity'nin yetkilendirme ayarlanı gerçeklemek için Central Administration Site'ı ziyaret etmek gerekmektedir. Central Administration Site üzerinde Manage service applications --> Business Data Connectivity Service yolu izlenerek tüm Entity'ler görüntülenebilir buradan da yetkilendirme ayarı gerçekleştirilmek istenen Entity seçildikten sonra Ribbon'da yer alan Set Object Permissions butonu ile ilgili Entity için yetkilendirme ekranı görüntülenir ve Entity'i görüntüleyip kullanabilecek olan kişi ya da gruplar seçilip gerekli yetkilendirme işlemi yapılabilir.



Yetkilendirme ekranından aşağıdaki resimde de görüldüğü gibi gerekli yetkilendirme yapıldıktan sonra sorun ortadan kalkacaktır. Resim detaylı incelencek olursa sistemde bulunan herhangi bir kullanıcının ilgili Entity'i kullanması sağlanmış oldu, yetkilendirme ayarlarının gerçekleştirebilme yetkisi ise bir yöneticiye verilerek güvenlik sağlanmış oldu.



Pazartesi, Ağustos 09, 2010

SharePoint 2010 Nasıl Yapılır? - Visual Studio 2010 ile External List Oluşturmak

SharePoint 2010 ile birlikte gelen yeniliklerden biri de BDC olarak kısaltabileceğimiz Business Data Connectivity Services'dir. Business Data Connectivity Services MOSS 2007 tarafındaki Business Data Catalog'un yeni versiyonu olarak düşünülebilir. Business Data Connectivity Services ile MOSS 2007'de eksikliği hissedilen bazı sorunlar çözülmüş durumda, External List bu çözümlerden bir tanesi ve hayatımızı ciddi oranda kolaylaştırıyor. Bu postta basit bir External Content Type'ın nasıl oluşturulabileceğini ve bu tipin SharePoint içerisinde nasıl kullanılabileceğinden bahsediyor olacağız.

External List'ler adından da anlaşılacağı üzere SharePoint'in dışındaki bir veri kaynağında verilerini saklayabilen listelerdir. External List kullanılarak her şeyi SharePoint'in veritabanında depolamak yerine farklı bir yer tercih ederek SharePoint'in veritabanının gereksiz yere dolması engellenebilir. Ya da daha farklı bir pencereden duruma göz atacak olursak SharePoint ile farklı bir sistemin aynı veriyi kullanması söz konusu olduğunda verinin ortak bir veritabanında depolanıyor olması anlamlı bir çözümdür. SharePoint'in daha önceki sürümlerinde bu işlemi gerçekleştirmek için Business Data Catalog ile bir çözüme gidip dışarıdaki datayı tek yönlü olarak SharePoint'e aktarabiliyorduk ve yazmış olduğumuz bir web part ile de dışarıdaki veri kaynağına verileri aktarabiliyorduk. SharePoint 2010'da tek bir çözüm ile dışarıdaki veriler direkt SharePoint'in içinde kullanılıp, bu veriler üzerinde CRUD işlemleri yapılabilmektedir.

SharePoint 2010'da External List oluşturmak için daha öncesinde bu listenin içinde kullanılacak olan tipi yani External Content Type'ı oluşturmuş olmak gerekiyor. External List oluşturulurken kullanılacak olan External Content Type seçilip listenin ekranlarının bu tipe göre oluşturulması sağlanıyor. External Content Type Visual Studio 2010'da açılan bir Business Data Connectivity Model projesi ile oluşturulup SharePoint 2010'a dağıtılabilir. Visual Studio 2010'da aşağıdaki resimde görüldüğü gibi proje oluşturulabilir. Bu ekrandan projenin detaylarını belirtip OK tuşuna bastıktan sonra projenin hangi site üzerinde çalışağı Visual Studio tarafından soruluyor olacaktır, bu ekrana da modelin deploy edilecek olduğu site'ın URL'i yazılıp devam edilebilir.


Projeyi oluşturduktan sonra aşağıdaki ekran ile karşılaşılacaktır. Proje ile birlikte Entity1 adında bir tane Entity'nin oluşturulmuş olduğunu göreceksiniz, bu Entity herhangi bir yerden veri çekmeyen sadece id'si olan bir tiptir. Daha sonraki postlarımızda yeni bir Entity oluşturup CRUD işlemlerini nasıl yapacağımıza göz atacağız. Entity1 adındaki proje oluşturulduğuna karşımıza çıkan Entity'nin iki tane de metodu vardır bunlar; ReadList ve ReadItem metodlarıdır. Adlarından da anlaşılacağı üzere bu metodlar listenin tüm elemanlarını ve bir elemanın detayını listelemek amacı ile kullanılacak olan metodlardır. Bu postta Entity'nin detayları ile uğraşmayıp varolan hali ile SharePoint'e Deploy ediyoruz. Projeyi Deploy etmek için Solution Explorer'dan projeye sağ tıklayıp Deploy demek yeterlidir. Deploy tuşuna bastıktan sonra eğer Business Data Connectivity Service çalışıyor ise sorunsuz olarak External Content Type SharePoint'e gönderilecektir. Bu adımdan sonra SharePoint tarafında bir tane External List oluşturulup oluşturulan tip kullanılabilir.



External List oluşturmak için; Create menüsünden Data bölümüne geçilip External List seçildikten sonra aşağıda görüntülenen bir sonraki ekranda kullanılacak olan tip seçilip External List kullanılmaya başlanır.



External List oluşturulduktan sonra aşağıdaki görünüm ile karşılaşılıyor olacaktır, fark edileceği üzere bu liste readonly bir listedir çünkü tipimizde sadece ReadList ve ReadItem metodaları yer almaktadır. Tipe Create, Update ve Delete metodları da yazıldıktan sonra listeyi CustomList gibi kullanmak mümkün olacaktır. İlerleyen günlerde blogda bu konuyu da ele alıyor olacağız, herkese iyi çalışmalar.


Cumartesi, Ağustos 07, 2010

Windows Server 2008 Wireless Network Tarama Problemi

Bir bilgisayara Windows Server 2008 R2 onun üzerine de SharePoint 2010 kurmak için yola çıktım ancak Windows Server 2008'i kurduktan sonra bir problem fark ettim; Wireless adaptörünün sürücüsü sorunsuz bir şekilde yüklenmiş olmasına rağmen wireless adaptörüm çevredeki ağları görüntülemiyordu. Internet'te biraz araştırma yaptıktan sonra Windows Server 2008'deki Wireless LAN Service isimli servisin sistemime yüklenmemiş olduğunu gördüm. Servisi yükleyip aktif hale getirdikten sonra sorun çözüldü ve Internet'e bağlanabildim. Servisi aktif hale getirmek için; Windows Server açıldıktan hemen sonra da karşımıza gelen Service Manager'da Features bölümüne geçilip oradandan da Add Features butonu aracılığı ile servis seçildikten sonra yüklenir ve aktif hale getirilir.


Salı, Temmuz 13, 2010

Microsoft® Visual Studio® 2010 Professional Türkçe Dil Paketi

Visual Studio 2010 için Türkçe Dil Paketi duyuruldu paket hakkındaki bilgiler şu şekilde;

Microsoft® Visual Studio® 2010 Professional Türkçe Dil Paketi
Dil Paketi, Microsoft® Visual Studio® 2010 Professional İngilizce sürümü için bir eklentidir ve anadilinizdeki çoğu kullanıcı arabirimini görmenize olanak tanır. Aynı zamanda sadece F1 tuşuna basarak MSDN’de Visual Studio® 2010 ve .NET Framework 4.0 için olan yerelleştirilmiş çevrimiçi yardım belgelerine erişebilirsiniz. Bunun yanı sıra karşıdan yükleyip çevrimdışı erişime sahip olabilirsiniz.
Şimdi karşıdan yükle...

Salı, Temmuz 06, 2010

SharePoint 2010 Nasıl Yapılır? - Data Validation

Bir yere veri girişi yaparken genellikle girilen verilerin doğrulanmasına ihtiyaç duyulur. Yazılım projelerinde developerlar belirttikleri formattaki ve özellikteki veri girmeye zorlayıcı çözümler geliştirirler. Eğer uygulama Microsoft SharePoint gibi bir platform üzerinde geliştiriliyorsa platformun sağladıkları ile yetinmek ya da kişiselleştirilmiş çözümler geliştirmek durumunda kalınır. SharePoint’in eski versiyonlarında listelere veri girilirken veri tipine ve platformun izin verdiği ölçüde minimum, maksimum değer sınırları belirtmek gibi olanaklar söz konusuydu ancak tamamen kişiselleştirilmiş bir çözüm geliştirmek için SharePoint üzerinde ek geliştirme yapmak gerekiyordu. SharePoint’in 2010 versiyonunda bu eksiklik giderilmiş ve tamamen platformun olanakları ile custom bir veri doğrulama algoritması yazılması için gerekli olan çözüm son kullanıcıların hizmetine sunulmuş durumda. Peki bunu nasıl yapıyoruz?

SharePoint 2010’da kullanıcıların muhtemel izne çıkış tarihlerini belirtebilecekleri bir Custom List hazırlayalım. Custom List’in toplam üç tane sütunu olsun bunlardan biri Title ama ismini değiştirip Ad Soyad olarak kullanalım, diğer ikisi de İzin Başlangıç Tarihi ve İzin Bitiş Tarihi olsun.

Bahsedilen şema şeklindeki şemaya sahip bir listede genel beklenti İzin Bitiş Tarihi’nin İzin Başlangıç Tarihi’nden büyük veya o tarihe eşit olmasıdır. Bunu sağlamak için veriyi saklayacak olan sistemin doğrulamaya kriterine uymayan verileri sistemine kabul etmemesi gerekmektedir. SharePoint 2010’da bu işlemi kolaylıkla gerçekleştirmek mümkündür. Veri doğrulama tanımlaması yapılacak olan listenin ayarlarına (List Settings) geçilir ve orada bulunan linklerden Doğrulama Seçenekleri (Validation Settings) linkine tıklanarak gerekli algoritma tanımlaması gerçekleştirilebilir.

Doğrulama kriteri belirlenirken ekranın sağ tarafında kullanılacak olan sütunlar listelenir ve bu sütunların üzerine tıklanarak ilgili sütunun formüle eklenmesi sağlanır. Bu yöntemi kullanarak biz de kendi kriterimizi oluşturduk, burada belirttiğimiz kriter tabi ki oldukça basit bir formül, buraya daha karmaşık formüllerin yazılıp veri doğrulanması için kullanılması mümkün olabilmektedir. Kullanıcılar veri girerken geçersiz veri girdiklerinde sistem bu veriyi kabul etmeyecek, bu verinin neden geçersiz olduğu da User Message bölümünde yer alan metin kutusu aracılığı ile kullanıcıya belirtilebilir.

Gerekli tanımlamalar yapıldıktan sonra sisteme veri girerken geçersiz bir veri girildiğinde aşağıdaki ekran ile karşılaşılıyor olacaktır. Daha önceki versiyonlarda zorlanarak yaptığımız bu işlemi SharePoint 2010 aracılığı ile birkaç dakika içerisinde kolaylıkla yapabildik.

Pazartesi, Temmuz 05, 2010

SharePoint 2010 Overview - Workflow

SharePoint 2010'da Workflow tarafında da oldukça yenilik ve iyileştirme görmekteyiz. Workflow tarafında göze çarpan en büyük gelişim site düzeyinde workflow tanımlamak olarak gösterilebilir. MOSS 2007'de tanımlamış olduğunuz bir workflow muhakkak listenin bir öğesine bağlı olmak durumundaydı, bu da site düzeyinde bir iş akışı oluşturulmasının önünde engel teşkil etmekteydi ancak SharePoint 2010 ile artık sitelerin üzerinde de iş akışı oluşturma senaryoları uygulanabilir. MOSS 2007 kullanan müşterilerimizin iş akışı tarafında bize gelen taleplerini göz önüne alacak olursak, bu tarz site düzeyinde işlem gerektiren iş akışlarını 3rd Party yazılımlar ile çözmek durumunda kalıyorduk ama artık hem SharePoint Designer 2010 hem de Visual Studio 2010 aracılığı ile site düzeyinde iş akışı çözümleri geliştirilebiliniyor.

İş akışı tarafında gelen yeniliklerden göze çarpanlarından bir diğeride; iş akışlarının dışarıdaki bir veri kaynağına ya da bir olayın tetiklenmesine göre geliştirilebilmesi. Bu konuda MSDN'de güzel bir örnek söz konusu; alt yapı olarak SharePoint 2010 kullanan bir elektronik ticaret sitesi tasarlanıyor. Ürün müşteri tarafından satın alındıktan sonra otomatik olarak kargolanma süreci başlatılıyor. Ancak bu süreçte kargonun o anda nerede olduğu, yerine ulaşıp ulaşamadığı gibi parametreler dış bir sistem olan kargo şirketinin uygulamasından bekleniyor. Yazılacak olan bir web servisi aracılığı ile kargo şirketinin kullanmış olduğu sistem dinleniyor ve gelen parametrelere göre iş akışı noktalandırılıyor.

Customizasyon tarafında da SharePoint 2010 iş akışları oldukça gelişmiş çözümler sağlıyor, bunlara örnek olarak; arttırılan Event'leri, eklenen yeni metodları ve yeniden kullanılabilir iş akışlarını gösterebiliriz.

Cuma, Temmuz 02, 2010

SharePoint 2010 Overview - Kurulum

SharePoint 2010'da kurulumun da daha önceki sürümlere göre kolaylaştığını görmekteyiz. Tabi burada ufak bir hatırlatma da yapmak gerekiyor, MOSS 2007'yi ister 32 bit isterseniz de 64 bit bir sisteme kurabiliyordunuz. Microsoft SharePoint 2010 sadece 64 bitlik sistemler üzerine kurulabiliyor. Bu kısıtlamanın güzel taraflarından biri kaynakların daha verimli kullanılması olarak gösterilebilir; özellikle BI çözümlerinde kaynakları daha olumlu kullanıp rapor ve göstergelerin daha hızlı bir şekilde görüntülenmesi müşteri memnuniyetini arttıracaktır. SharePoint 2010'un sadece 64 bit sistemler üzerine kurulabilmesinin olumsuz yanı ise bazı kurumların donanın yetersizliği nedeni ile bu sürüme kaynak ayıramıyor olmasıdır; bunun da SharePoint 2010'un yayılmasını yavaşlatacağını düşünmekteyim.

MOSS 2007'yi kurmadan önce IIS üzerinde ASP.NET 2.0'ın çalışması için gerekli konfigürasyonun yapılması ve MOSS kurulumu için gerekli bileşenlerin kurulması gibi işlemlerle uğraşıyorduk. SharePoint 2010'da yeni bir link ekleyip bu işlemlerin tamamının tek tıklama ile otomatik olarak gerçekleştirilmesi sağlanmış durumda, bu şekilde de zaman zaman gözümüzden kaçan ve bizi geriye döndüren ufak tefek detayları takip etmekten kurtulmuş oluyoruz, kurulumun daha zevkli bir hale dönüştüğünü söylemek sanırım abartı olmaz.

Kurulum konusunda dikkatimi çeken bir nokta da kurulum ekranlarının yenilendiği ve ekranlara çağdaş bir görünüm kazandırılmış olduğuydu. MOSS 2007'nin kurulum ekranlarının o kadar gelişmiş bir ürüne yakışmadığını pek çok yerde vurgulamıştık; yeni ürün ile daha ilk adımı atarken mutlu bir başlangıç yapıyorsunuz.

Salı, Haziran 29, 2010

SharePoint 2010 Overview - Alerts

Microsoft Office SharePoint Server 2007'in en beğenilen özelliklerinden biri de Alert Mekanizmasıydı. Kullanıcılar herhangi bir kütüphaneye yeni doküman eklendiğinde ya da var olanlar güncellendiğinde SharePoint tarafından mail aracılığı ile bilgilendirilebiliyor. SharePoint 2010'da bu özellik biraz daha geliştirilip SMS entegrasyonu da sağlanmış durumda. SharePoint'e ufak bir eklenti yazıp Alert'ların kullanıcıların cep telefonlarına SMS olarak gönderilmesini sağlayabiliyorsunuz. MOSS 2007 tarafında da kullandığımız sınıflar geliştirilip içine SMS göndermek için gerekli olan bileşenler zaten eklenmiş durumda yani geliştireceğiniz ufak bir çözüm ile SharePoint'in SMS göndermesini de sağlayabilirsiniz. Müşterilerimizin çoğu bu tarz talepler ile bizim karşımıza çıkmaktaydı SharePoint 2010'un bu anlamda da hayatımızı kolaylaştıracağını düşünüyorum.

SharePoint 2010 Overview - SandBoxed Solutions

SandBoxed Solutions ile birlikte SharePoint üzerinde yazılım geliştirmek daha keyifli hale geliyor. MOSS 2007'de bir geliştirme yaparken bu geliştirme sunucuya deploy edilmek istendiğinde farm düzeyinde bir işlem yapılması gerekmekteydi. Farm düzeyinde işlem yapmanın yetkilendirme ve dağıtım anlamında bazı sıkıntıları söz konusu idi. Gerçekleştirilmiş olan ek geliştirmeyi sisteme dağıtmak için ya geliştiriciye yetki verip sistem üzerine yazdığı kodları dağıtması sağlanmaktaydı ya da geliştirmeler paket halinde alınıp sistem yöneticileri tarafından sisteme deploy edilirdi. Her iki senaryoda da hoşnut olmadığımız bir kaç durum var, bunlardan biri sistemin sadece bir bölümünün etkileneceği bir ek geliştirme için sistemin tamamının etkilenmesi bir diğeri de işlem yapacak olan kişiye gereğinden fazla yetki veriliyor olması. Microsoft SharePoint 2010'la birlikte hayatımıza giren SandBoxes Solutions ile bu sorunları rafa kaldıracağız gibi görünüyor.

SandBoxed Solutions ile geliştirmenin çalışacak olduğu SiteCollection'ın üzerine gelinip ayarlardan geliştirilen paket SiteCollection Admin'i tarafından upload edilebiliyor. Geliştirmenin yayına alınması için hem daha az efor harcanmış hem de bir SiteCollection Admin'inin gerekli işlemi gerçekleştirmesi sağlanmış oluyor, tabi sistem yöneticisi yönetim ekranları aracılığı ile yayınlanmış olan solution'ları izleyip bunların sisteme getirdiği yükü analiz edip gerekli müdaheleleri yapabiliyor.

Pazar, Mayıs 02, 2010

Yazgeliştir Zirvesi Mayıs 2010

Yazgeliştir etkinliklerinin en yenisi olan Yazgeliştir Zirvelerinin ilki 29 Mayıs Cumartesi günü Microsoft İstanbul ofisinde gerçekleştirilecek. Etkinlikte Microsoft Regional Director (RD), Microsoft Most Valuable Professional (MVP) ve Yazgeliştir editörleri konuşmacı olacak. Microsoft’un çeşitli yazılım geliştirme ürün ve araçları ile ilgili seminerlere katılabilir, Visual Studio 2010, SQL Server 2008 R2, ASP.Net 4.0, Sharepoint 2010 ile gelen yenilikleri konunun uzmanlarından öğrenebilirsiniz. Etkinlikte aynı zamanda Yazgeliştir editörleri ile bir araya gelip kendilerine danışmak istediğiniz konularda sorular sorabilirsiniz.

29 Mayıs 2010, Microsoft İstanbul Ofisi Kayıt olmak için
tıklayın!

Cumartesi, Ocak 30, 2010

Yokum :)

Merhabalar arkadaşlar şöyle bir bloğumu ziyaret edeyim dedim ve en son Kasım ayında post girmiş olduğumu gördüm, yaklaşık iki aydır post girememiş olmamın nedeni bu sefer malesef yoğunluk değil. Keşke daha önce olduğu gibi yoğunluktan post giremiyor olsaydım, şu anda Edirne'nin Süloğlu ilçesinde askerlik görevimi icra ediyorum. Yaklaşık iki aydır buradayım ve 3,5 ay daha Süloğlu'nda olacağım. 3.5 ay sonra seminerlere, webinerlere, makalelere, eğitim ve projelere kaldığımız yerden devam ediyor olacağız.
Süloğlu, Edirne'nin Bulgaristan sınırına yakın bir ilçesi o yüzden oldukça kuzeydeyiz buna bağlı olarak da inanılmaz bir soğuğu var. Şu anda dışarısı -2 civarında ama yazlık kıyafetle rahatlıkla dolaşabilirim :) Türkiye için güneşin battığı yer olan Süloğlu'nda gerçekten müthiş bir gün batımı manzarası oluşuyor ama yüz altı gün daha bunu görmek zorunda olmak tabi ki o kadar güzel bir duygu değil...
En kısa zamanda görüşmek üzere...

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.