Cumartesi, Aralık 11, 2010

nedirtv?com - Aralık Ayı Webinerleri

Nedir?Tv.com Aralık Ayı Webinerleri tüm hızıyla devam ediyor, 21 Aralık akşamı ben de Yazılımcılar için SharePoint 2010 yeniliklerini anlatıyor olacağım... Nedir?Tv.com Aralık Ayı Webinerleri'nin genel programı şu şekilde:



Konu: WCF Öğreniyorum-03:Bağlayıcılar(Bindings)
Tarih: 8 Aralık Çarşamba 21:00
Konuşmacı: Burak Selim Şenyurt
Link: http://nedirtv.com/webiner/20

Konu: Microsoft CRM 2011 - Programlama Yenilikleri
Tarih: 14 Aralık Salı 21:00
Konuşmacı: Barış Kanlıca
Link:
http://nedirtv.com/webiner/23

Konu: WCF Öğreniyorum-04:İstemci Tarafını Geliştirmek
Tarih: 15 Aralık Çarşamba 21:00
Konuşmacı: Burak Selim Şenyurt
Link:
http://nedirtv.com/webiner/24

Konu: ASP.NET MVC 3 RC Sürümüne Bakış
Tarih: 17 Aralık Cuma 21:00
Konuşmacı: İbrahim Atay
Link:
http://nedirtv.com/webiner/25

Konu: SharePoint 2010 - Yazılımcılar İçin Yenilikler
Tarih: 21 Aralık Salı 21:00
Konuşmacı: Burak Batur
Link:
http://nedirtv.com/webiner/26

Konu: WCF Öğreniyorum-05:Instance Management
Tarih: 22 Aralık Çarşamba 21:00
Konuşmacı: Burak Selim Şenyurt
Link:
http://nedirtv.com/webiner/28

Konu: Silverlight ve Web Dünyasına Getirdiği Yenilikler
Tarih: 24 Aralık Cuma 21:00
Konuşmacı: Görkem Sezgin
Link:
http://nedirtv.com/webiner/30

Pazartesi, Kasım 08, 2010

Nerede Kalmıştık! Nedir?Tv Kasım Ayı Webinerleri...

Uzunca bir aranın ardından Nedir?Tv Webinerlerine yeniden başlıyoruz!
Yaklaşık bir yıllık aradan sonra yine NedirTv ile sahalara dönüyorum. Daha önce MOSS ile ilgili bilgileri paylaşma fırsatı bulduğum NedirTv'de bu sefer de SharePoint 2010 ile ilgili yenilikler hakkında konuşuyor olacağız. Kasım ayının içerisinde bayram olmasına rağmen 6 farklı konuda sizlerle bir araya geliyoruz.
Webinerlere kayıt olup webiner detaylarına ulaşmak için http://www.facebook.com/home.php?#!/event.php?eid=167616929932997 linkine tıklayabilirsiniz.

Perşembe, Ekim 14, 2010

23 Ekim'de Yazgeliştir Gönüllüleri Toplantısında Görüşelim!

Türkiye’de yazılım geliştirme alanında çalışanların paylaşım noktası olan Yazgeliştir’i takip eden herkesi 23 Ekim Cumartesi günü düzenleyeceğimiz Yazgeliştir Gönüllüleri etkinliğine bekliyoruz. Bu etkinlikte Yazgeliştir editörleri ile tanışıp, Yazgeliştir ile ilgili son gelişmeler ve gelecek planlarından haberdar olacaksınız. Ayrıca Yazgeliştir ekibi olarak görüş ve önerilerinizi dinliyor olacağız.
Tüm bunların yanısıra etkinlikte yazılım geliştirme alanındaki son yenilikler içerikli bir sunum da olacak. Microsoft İstanbul ofisinde saat 13:00’te başlayacak etkinliğimizin program detaylarını aşağıda bulabilirsiniz:

Tarih:
23 Ekim 2010 Cumartesi, 13:00 – 17:00

Program:

  • 13:00 – 14:00 Yazgeliştir yönetimi ile tanışma

  • 14:00 – 15:00 Son gelişmeler ve 2011 planları

  • 15:00 – 15:45 Açık tartışma

  • 16:00 – 16:45 Yazılımcılar İçin Yenilikler – Tamer Öz

    Yer:
    Microsoft İstanbul Ofisi
    Bellevue Residence Levent Mahallesi
    Aydın Sokak. No:7
    Levent,
    34340 İstanbul/Türkiye

    Katılım için lütfen adınızı, soyadınızı yazgelistir@yazgelistir.com adresine mail atınız.
  • Cuma, Ekim 08, 2010

    Türk Telekom ve Microsoft'tan Dev İşbirliği

    Uzun zamandır TCM | Teknoloji Çözümleri Merkezi olarak bizim de yoğun çaba sarf ettiğimiz kampanya bu gün basına duyuruldu. Kampanya kapsamında Türk Telekom KOBİ ve esnaf müşterileri, Microsoft Office Ev ve İş 2010'u Türk Telekom faturalarında 36 ay için aylık 8,99 liraya ve 24 ay için aylık 12,49 liraya satın alabilecekler.

    Office 2010 satın alanlar paketlerin yanında hediye olarak verilen ek uygulamar CD'sine de ücretsiz sahip olabilecekler. CD'de Türk Telekom, Windows 7, Office 2010 ve TTNET İşyerim hakkındaki katalogların yanında Wirofon Outlook Eklentisi ve TCM tarafından geliştirilen Kobi-Soft Müşteri Takip Uygulaması da yer alıyor.

    Kampanyadan yararlanmak için Türk Telekom bayi ve ofislerine uğramanız veya KOBİ Satış Kanalı bayilerinin sizi ziyaret etmesi yeterli olacaktır.

    Kampanya hakkındaki detaylı bilgilere aşağıdaki linklerden erişebilirsiniz:

    Çarşamba, Eylül 29, 2010

    ASP.NET ve SharePoint'teki Güvenlik Açığı İçin Yama Yayınlandı (Microsoft Security Advisory (2416728))

    Daha önceki postlarımızda ASP.NET tarafında doğal olarak SharePoint'i de etkileyen 2416728 kodlu güvenlik açığından bahsedip geçici bir çözüm önerisinde bulunmuştuk. Microsoft bu açığı kapatmak için .NET Framewotk tarafında bir yama yayınladı güvenlik bültenini okumak ve yamayı indirmek için http://www.microsoft.com/technet/security/bulletin/ms10-070.mspx adresini ziyaret edebilirsiniz. 

    Salı, Eylül 21, 2010

    ASP.NET ve SharePoint'te Güvenlik Açığı (Microsoft Security Advisory (2416728))

    ASP.NET'te SharePoint'i de etkileyen bir güvenlik açığı duyuruldu. Bu güvenlik açığı ile ViewState verisi elde edilebiliyor ya da sitede bulunan web.config gibi dosyaların içeriği görüntülenebiliyor. Güvenlik açığının detay bilgilerine buraya tıklayarak erişebilirsiniz.


    Güvenlik açığından kurtulmak için; sitenin Custom Errors modunu "On" olarak ayarlayıp site içerisinde hata oluşması durumunda kullanıcıyı kendi tasarladığınız custom bir hata sayfasına yönlendirmeniz yeterli oluyor. SharePoint için yapılması gereken işlemleri maddeler halinde SharePoint'in resmi bloğunda olduğu şekilde açıklıyorum;


    1. SharePoint'i yüklemiş olduğunuz dizinde %CommonProgramFiles%\Microsoft Shared\Web Server Extensions\14\template\layouts klasörüne geçin.

    2. Klasörde error2.aspx adında bir dosya oluşturup içeriğini aşağıdaki hale getirin:


    3. %SystemDrive%\inetpub\wwwroot\wss\virtualdirectories dizinine geçin.


    4. Her alt klasör için aşağıdaki işlemleri tekrarlayın:


         1. web.config'i açın. 
         2. custom Errors düğümünü bulup aşağıdaki gibi düzenleyin;
              default Redirect="/_layouts/error2.aspx" />
         3. Değişiklikleri Kaydedin. 
         4. Run iisreset /noforce

    Daha fazla bilgi için:

    Microsoft Security Advisory (2416728) - Vulnerability in ASP.NET Could Allow Information Disclosure


    Security Advisory 2416728 Released – Microsoft Security Response Center Blog


    Understanding the ASP.NET Vulnerability – Microsoft Security Research & Defense Blog


    Important: ASP.NET Security Vulnerability – Scott Guthrie’s Blog


    Frequently Asked Questions about the ASP.NET Security Vulnerability – Scott Guthrie’s Blog

    Ç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!