Windows 7'de Yerel Grup Politikası
27 Ocak,2010

Bu yazımda biraz ilgi alanım dışında kalan konulardan birine değineceğim.Bir yazılımcı olarak sistem mühendislerinin çok iyi bildiği bir konudan bahsedeceğim.Peki  madem yazılımcıyım neden sistemle ilgili bir konuyla ilgili yazıyorum?Cevabı aslında çok basit:)Bir bilgisayar mühendisi olarak evet her şeyi çok bilmek zorunda değilim ama bilgisayarla ilgili bir soru karşıma geldiğinde sorunun cevabını veremesem bile en azından ne demek istediğini anlamak lazım:)Neyse artık yazıma geçeyim.

Sizce çok kullanıcılı bir bilgisayarda kullanıcılara bilgisayarda yüklü programlardan belirli bir kısmını çalıştırabilmelerine izin vermenin  yani kısıtlamanın en kolay yolu nedir?Cevabı Yerel Grup Politikası’dır.Kısaca yerel grup politikasından bahsedeyim.Yerel grup politikası Windows 2000 release olduğunda Active Directory ile beraber gelen çok güçlü bir araçtır.Kayıt defteriyle uğraşmadan bilgisayarınızı kontrol etmeniz için çok fazla seçenek sunar.

Windows 7’de Yerel Grup Politikası’nın kullanabilmek için şunları yapmamız gerekiyor.İlk önce Çalıştır’a “gpedit.msc”  yazıp Yerel Grup Politikası Editörünü açalım.

 

Daha sonra açılan editörde sol taraftaki yönlendirme panelinde şu yolları takip edelim.”User Configuration \ Administrative Templates \ System‘a tıkladıktan sonar sağdaki panelden “Run only specified windows application”ı seçiyoruz.

 

Bu sayede sadece bizim istediğimiz uygulamaların çalışmasına izin verilecektir.Siz isterseniz buradaki farklı politikaları uygulayabilirsiniz.Açılan popup pencerede ilk olarak “Enabled” seçeneğini aktif hale getirip “Show” butonuna tıklıyoruz.

 

Açılan diyalog kutusundaki Value kolonuna çalışmasını istediğimiz programların çalıştırılabilir isimlerini yazıyoruz.Eğer tam hatırlamıyorsanız görev yöneticisdeki “İşlemler tabından bakabilirsiniz.

 

OK butonuna bastıktan sonra bu politikanın uygulanması için OK ya da Apply butonuna basmak yeterli olacaktır.Bu noktadan sonra eğer kullanıcı yukarıya yazdığımız programlar dışında herhangi bir programı çalıştırmak istediğinde çalıştıramayacaktır ve hata mesajı alacaktır.

 
Kategoriler: Genel

MSP Webinerleri-Mobile Development
20 Ocak,2010

Microsoft Student Partner’ler tarafından gerçekleştirilen Ocak ayı etkinliğinde Gizem Gülşen 21 Ocak günü saat 20.00’de Mobile Development webineri verecektir.
Bu web seminerinde:

Mobile Cihazların Hayatımızdaki Yeri, Microsoft Mobile Teknolojilerinin, Geliştirme Araçlarının örneklerle anlatılması ve Microsoft Tag’den bahsedilecektir.Katılımlarınızı bekliyoruz arkadaşlar!
 

Oturuma katılmak için:
1. Eğer yüklü değilse http://office.microsoft.com/search/redir.aspx?AssetID=XT102227921033&CTT=5&Origin=HA101733831033 adresinden LiveMeeting Programının kurulumunu indirin.

2. Program indikten sonra setup'ı çalıştırarak programı yükleyin.

3. Office Live Meeting'i çalıştırdıktan sonra açılan penceredeki "Location" kutucuğuna webiner günü burada yayınlanan bağlantı kodunu girin.

4. Ardından Join'e basın.

5. Karşınıza adınızı soran bir kutucuk gelcektir, oraya adınızı girdikten sonra yeninden Join'e basmanız webinere bağlanmanız için yeterli. 
 
6.
http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032440662&Culture=TR-TR linkine online Kayıt diyerek. Etkinliğe Live ID’nizle (Hotmail, MSN, XBox hesabınız) kayıt olmanız gerekiyor.

7. Daha sonra adresinize gelen bağlantı sağlayıcıyı kullanarak web seminerine katılabilirsiniz. 

Kategoriler: Genel

Kodu PC Technical Preview Yayınlandı!
16 Ocak,2010

 Şu ana kadar Kodu sadece Xbox’da çalışmaktaydı.Fakat şimdi PC ler için Kodu’nun tecnical preview sürümü yayınlandı.Etkileşim için sadece mouse ve klavyenizi kullanabilirsiniz artık oyun konsoluna gerek kalmadı.PC Kodu’yu buradan indirebilirsiniz.

Kodu oyun geliştirmek için yapılmış görsel bir programlama dilidir.Kodu ile ilgili Kodu blog, Planet Kodu ve KoduX gibi web sayfaları bulunmaktadır.Bu web sayfalarını ziyaret ederek Kodu ile ilgili daha çok bilgi edinebilirsiniz.İyi oyunlar.

Etiketler: , ,
Kategoriler: Genel

Bir Fikrin Mi Var?
16 Ocak,2010

Bir Fiktin Mi Var

Bu yıl dördüncüsü düzenlenecek olan ve bu zamana kadar 101 farklı üniversiteden  1700’ün üzerinde başvuru alarak kıran kırana bir mücadelenin olduğu bir girişimcilik yarışması birFİKRİNmiVAR? tekrardan sizlerle.Üstelik bu sene Microsoft da bu yarışmanın sponsorları arasında.Eğer sizinde bir fikriniz varsa hala ne duruyorsunuz.Bu yarışmaya katılarak siz de fikrinizi gerçekleştirme şansını yakalayıp kendi şirketinizi bile kurabilirsiniz.Nasıl mı?Yarışmanın büyük ödülü tam 1 milyon TL.

Yarışma, Türkiye’den ve yurtdışından, tüm üniversite öğrencilerine (önlisans, lisans, lisansüstü ve doktora) ve akademisyenlere açıktır. (Sadece öğrenciler bireysel başvurabilir. Grup başvurularında en az bir öğrenci olması kaydıyla yarışmamıza tüm girişimcilerimiz başvurabilirler.)

Detaylı bilgi için http://www.birfikrinmivar.com u ziyaret edebilirsiniz

 

Kategoriler: Genel

LINQ to SQL-Veritabanına Dosya Kaydetme ve Okuma
13 Ocak,2010

LINQ to SQL , SQL Server’ın varbinary tipini desteklemektedir.Bu sayede veritabana binary olarak dosyalarımızı kaydedebiliriz.Örneğin bir web sitesinde veritabanına kullanıcı profil resimlerininin path’ini  kaydetmek yerine resmi binary olarak kaydedebiliriz.

Veritabanına dosya kaydetme

İlk olarak veritabanımızı oluşturmamız gerekli.Ben kendi veritabanımda Store isimli bir tablo oluşturdum.Tablonun design’ı aşağıdaki gibidir.

Store tablomu tasarladıktan sonra projeme Add New Item diyerek yeni bir LINQ to SQL sınıfı ekliyorum.Daha sonra Server Explorer penceresinden Store tablomu bu sınıfa sürükleyip bırakıyorum.Bu sayfayı kaydedip çıktıktan sonra  sıra geldi dosyamızı veritabanına kaydetmeye.Aşağıdaki kod ile artık dosyamızı veritabanına binary olarak kaydedebiliriz.

NorthWindDataContext ctx = new NorthWindDataContext();

//Store tipinde yeni bir Entity oluşturuyoruz

var stored = new Store();

//Kaydedilecek resmin yolu

string path = @"C:\Users\KullanıcıAdı\Desktop\lf.jpg";

//Kaydedilecek dosyayı byte dizi şeklinde okuyoruz

stored.Binary = File.ReadAllBytes(path);

//Dosyamızın ismini alıp kaydediyoruz

stored.Filename = Path.GetFileName(path);

//Artık oluşturduğumuz entity'yi veritabanına ekliyoruz

ctx.Stores.InsertOnSubmit(stored);

//DataContex'imizde değişiklik olduğu için

//bu değişikliği veritabanına kaydediyoruz

ctx.SubmitChanges();

Yukarıdaki kodun gayet açık olduğunu düşünüyorum üstelik her satırın ne iş yaptığını yorum satırlarında da belirttim.İsterseniz bir de kaydettiğimiz bu verileri veritabanından nasıl çekeceğimize bakalım.

Veritabanından binary dosya okuma

Binary olarak kaydettiğimiz verileri diske geri yazmak da kaydetmek kadar kolay.Bunu yaparken ToArray() metodu çok işimize yarayacak:)

string path = @"C:\temp";

var file = p.Stores.First();

File.WriteAllBytes(Path.Combine(path, file.Filename), file.Binary.ToArray());

Gördüğünüz gibi birkaç satırla  veritabanına kaydettiğimiz binary dosyamızı diske geri yazabiliriz.File sınıfının WriteAllBytes metodunu ve ToArray metodu ile bunu yapabiliriz.Önemli bir nokta veritabanında binary tipinde bir kolon oluşturduğunuzda max 8000 olduğudur.Eğer büyük bir dosya kaydetmeye çalışırsanız “binary data would be truncated” şeklinde bir hata alırsınız.Binary datanın küçültülmesi gerektiği uyarısını veren bu hatayı almamak için önce dosya boyutu kontrolü yapmanızı tavsiye ederim.Kolay gelsin.

Etiketler: , ,
Kategoriler: C#

Singleton Tasarım Kalıbı
8 Ocak,2010

Bu yazımın öncekilere göre biraz farklı olduğunu biliyorum. Önceden proje geliştirirken işime yarayan ya da yeni teknolojileri tanıtan teknik yazılar yazıyordum. Bu yazımda ise Yazılım Mühendisliği’nin vazgeçilmezlerinden biri olan Design Pattern(Tasarım Kalıbı) ‘dan bahsedicem. Bugüne kadar hep teknik konulara değindim fakat bir yazılımcı için daha önemli şeyler vardır:) Özellikle yazılım mühendisleri için bir dilmekten ziyade bir algoritma, tasarım kalıbı ya da UML’i bilmek daha önemlidir. Bunları bildikten sonra geriye yeter ki dil öğrenmek kalsın:) Zaten algoritması yazılmış bir uygulamanın %50’si bitmiş demektir. Artık her dilde yazabilirsiniz. Daha fazla uzatmadan konuya gireyim artık. Bugün tasarım kalıplarından creational pattern olan Singleton Pattern konusuna değineceğim. Singleton tasarım kalıbı belki de tüm kalıplar içerisinde en basiti ve çok kullanılıdır. Bildiğiniz gibi tasarım kalıplarının hepsi yazılım yaparken karşılaştığımız birer sorundur. Uygulamamızda eğer bir sınıftan sadece tek bir nesne üretilmesini istiyorsanız çözüm Singleton kalıbıdır. Aşağıda sınıf diyagramını ve örnek uygulamayı bulabilirsiniz.

UML Class Diyagramı:

 

Örnek Kod: 

class Singleton {

    private static Singleton _instance = null;

    private Singleton() { }

    public static Singleton CreateInstance()      

       {

       if (_instance==null) {

          _instance = new Singleton();

            }

       return _instance; 

        }   

 }
Koddan da anlaşılacağı gibi ilk olarak static Singleton tipinde bir değişken tanımlıyoruz. Daha sonra yapıcı metodunu private olarak değiştiriyoruz ki  anahtar kelimesiyle nesne üretilmesin yani dışardan kimse yapıcıyı çağıramasın. Bunu da hallettikten sonra geriye Singleton tipinde bir değer döndüren static bir metod tanımlamak kalıyor. Bu metod ile de _instance değişkenimiz null’sa bir tane nesne üretiyoruz eğer null değilse yeni bir nesne üretmek yerine var olan nesneyi geri döndürüyor bize. Böylece bu sınıftan sadece tek bir nesne üretebiliriz. Aşağıdan örnek console uygulamasını indirebilirsiniz.

SingletonPattern.zip (7,19 kb)

WPF 4.0-LayoutRounding Özelliği
2 Ocak,2010

Bugün yeni yılın ilk makalesi olarak sizlerle WPF 4 ile gelen yeni bir property olan LayoutRounding özelliğinden bahsetmek istiyorum.Silverlight ile kod yazanların yakından aşina olduğu bu özelliği aşağıdaki örnek kod üzerinden inceleyelim.

<Border Width="150" Height="120" BorderThickness="10" BorderBrush="Red"/>

<Border Width="110" Height="80" BorderThickness="10" BorderBrush="Green"/>

<Border Width="70" Height="40" BorderThickness="10" BorderBrush="Blue"/>

 <Border Width="150" Height="120" BorderThickness="10" BorderBrush="Red" UseLayoutRounding="True"/>

<Border Width="110" Height="80" BorderThickness="10" BorderBrush="Green" UseLayoutRounding="True"/>

<Border Width="70" Height="40" BorderThickness="10" BorderBrush="Blue" UseLayoutRounding="True"/> 

Yukarıdaki kod parçası ile içiçe geçmiş dikdörtgenlerden oluşan border lar bulunmaktadır.Tek fark ikincisinde UseLayoutRounding property’sidir.Bu property’i true olarak atayıp uygulamamızı çalıştırdığımızda ilk border’ın biraz blur şekilde göründüğünü ikincisinin ise daha keskin çizgilere sahip olduğunu farkedeceksiniz.Varsayılan olarak bu özellik false gelmektedir.Uygulamayı çalıştırdığımızdaki ekran görüntüsü şu şekilde olacaktır.

 

Etiketler: ,
Kategoriler: WPF