





Selamun Aleykum;
Bugun nette gezinirken farklı bişey buldum(en azından benim için)microsoft’un Konuşma kütüphanesi, paylaşalım dedim,,belki Proje ikaz mahiyetinde bişey katmak baabından güzel olur…Neyse az laf çok icraat…Form a 1 adet multiline enabled olmuş Textbox birde buton koyalım…
Ve Resimdeki Library kütüphanemize ekliyelim…

ve Kodlamaya geçelim zaten fazla kod yazmıycaz…Once button’umuzun Click event ına gelelim..ondan da once SpeechLib adli namespace imizi ekliyelim…
artık event tayız….
private void button1_Click(object sender, EventArgs e)
{//Once bir Instance oluşturduk...
SpVoice voice = new SpVoice();
//konuşma kütüphanesine textBox taki değeri konuşmasını söyledik…
voice.Speak(textBox1.Text, SpeechVoiceSpeakFlags.SVSFlagsAsync);
}
tadından yenmez bir konuşturucu… dayayın dinliyeceğiniz bir makaleyi[ingilizce olursa iyi olur
]siz kafayı koyun o okusun….
vesselam
Selamun Aleykum;
Kardeşlerim bu aralar biraz fazla yoğunuz haklarınızı helal ediniz ![]()
Son bombam Kriptofik son derece basit bir algoritma ile yazılan bu şifreleme aracı.Kripto ile ilgilenen geliştiriciler için belki başlangıç olur düşüncesindeyim…
Hade hayırlısı
Selamun Aleykum dostlar;
Bu yazıda inşAllah bir Foto veya Resmi Binary(İkili Sayi)olarak VeriTabanına kaydetmeyi göstericem.VeriTabanı olarak MSSQL kullanıcam..

Şekilde gibi atmasyon bir veritabanı ve KolonAd ve Veritipleri oluşturalım(Aslında Ad,Soyad,Resim de olsa olur bu DB eskilerden buldum.)
Şimdi WinForm tarafına geçip Seçtiğmiz bir resmi Binary olarak DB mize kayıt edelim..
Fotomuzu Binary olarak kaydetmek için “IO” isim uzayının MemoryStream nesnesinden yararlancam…

Evet bu olay da bitti şimdi PictureBox ımıza bir Resim koyup(OpenFileDialog la halledebilirisniz)VeriTabanımıza kayıt edelim…
Ve Sonuç…

Ufak ama Ado ya giriş için iyi bir makale düşüncesindeyim eksiklerim illaki vardır..Affınıza sığınırım…
Vesselam
Selamun Aleykum Canlar
Sizler için en azından bu işe yenni başlayanlar için süper videolar buldum daha çok C# ağırlıklı anlatımlar yapılıyor.Bende çektiğim bir kaç video ‘yu burada yayınlıycam yakında kısmetse …
Not:Görüntü Kalitesi biraz düşük olabilir….
http://vimeo.com/user771165
Üst Sıra:Zhe Fu, Luca Bolognese, Theo Yaung, Rusty Miller, Eric Lippert, Wes Dyer, Prakash Balasubramanian, Genevieve Orchard, Esen Tuna, Keith Farmer, Tom Meschter, Don Espen, Steve Kruy, Yuval Mazor, Daigo Hamura, Vijay Upadya.
3.Sıra:Matt Cavallari, Scott Nonnenberg, Cyrus Najmabadi, Jeremy Meng, Luke Hoban, Eric Maino, Seshadri Pillailokam Vijayaraghavan, Alexandru Ghiondea, Mary Deyo, Mathew Charles, Sreekar Choudhary, Matteo Taveggia, Gabriel Esparza-Romero, Frances Lam, David Sterling, Xun Sun, Tiki Wan, HeeJae Chang,
2.Sıra:Jason Cooke, Terry Adams, Charlie Calvert, Mads Torgersen, Jerry Higgins, Sam Ng, DJ Park, Matt Warren, Daniel Rathbone, Chris Burrows, Jomo Fisher, Alex Turner, Renaud Paquay, Marcelo Guerra Hahn, Damon Tivel, Mike Hopcroft.
Alt Sıra:Ying Peng, Karen Liu, Anson Horton, Douglas Yung, Suma Sushilendra, Faisal Baqai, Dinesh Kulkarni, Deepti, Kathy Lu, Baoping Zhang, Raj Pai, Stephanie Dishneau, Drew Fletcher
Ve En Önde:Anders Hejlsberg

CETURK Microsoft Teknolojileri Etkinliği
CETURK Microsoft Teknolojileri Etkinliği
Bugüne kadar çok farklı konu ve teknolojiler ilgili yaptığı ücretsiz etkinliklerle bilişim sektörünün gelişmesine katkıda bulunan CETURK yine büyük bir organizasyon ile karşınızda.
7 Şubat Cumartesi günü Microsoft Türkiye İstanbul Ofisi‘nde gerçekleştirilecek CETURK Microsoft Teknolojileri Etkinliği inde
XNA Game Studio ile Oyun Programlamaya Giriş,
Asp.Net Mvc,
Ado.Net 3.5 / Ado.Net Entity Framework ve Asp.net ile Facebook Uygulama Geliştirme seminerleri yapılacaktır.
Etkinliğimize katılım her zamanki gibi ücretsiz olacaktır.
Kayıt için : http://www.ceturk.com/etkinlikkayit.asp?id=63
| Saat | Konu | Konuşmacı |
| 10.20 – 10.30 | CETURK | Mehmet Aca |
| 10.30 – 11.50 | XNA Game Studio ile Oyun Programlamaya Giriş | Mehmet Aydın ünlü |
| 11.50 – 12.00 | Ara | —- |
| 12.00 – 13.20 | Asp.Net MVC | Ersan Bilik |
| 13.20 – 14.00 | Ara | —- |
| 14.00 – 15.20 | Ado.Net 3.5 / Ado.Net Entity Framework | Ahmet Kaymaz |
| 15.20 – 15.30 | Ara | — |
| 15.30 – 16.50 | Asp.net ile Facebook Uygulama Geliştirme | Aykut Taşdelen |
| 16.50 – 17.00 | Kitap Çekilişi | —- |
Selamun Aleykum
O gün PDC sunumlarına bakarken Mono Foundation’ı olan Miguel de Icaza nın da Mono yu anlattığı Sunum ‘u buldum..Adam gerçekten Mono nedir ne değildir çalışma mantığı CLR olan uyumunu v.s. v.s. güzel anlatıyor….
Video için:http://channel9.msdn.com/pdc2008/PC54/
yukarıdaki adreste bulabilirsiniz….
iyi Günler
.NET platformu, kriptografik işlemler için kullanılabilecek zengin sınıflar içerir. .NET Platformunda kriptografik sınıfların çoğu, Windows Cryptographic Service Providers (Windows kriptografik servis sağlayıcılar) için yönetilen bir pakettir.
Hash Algoritmalarını Kullanmak :
Bir hash algoritması, uzunluğu belli olmayan bir dizenin içeriğini benzersiz şekilde şifreleyerek bir değer üretir.Hash değerleri bir dosya içindeki değişiklikleri tespit etmek için kullanışlıdır. Dosyanın durumunun herhangi bir anda fotoğrafını çekme imkanı sunar. Bu Sayede bir önceki hash değerleri ile dosyanın o andaki hash değerlerini karşılaştırarak dosyada değişiklik yapılmışmı yapılmamışmı öğrenebilirsiniz.
.NET platformu içindeki sınıflar, aşağıdaki hash algoritmalarını kullanmaktadır.
Not : MD5 en hızlı fakat en az güvenli algoritmadır. Her SHA algoritması daha güvenlidir ama daha falza hesaplama gerektirmektedir.
Örnek:
| static byte[] ByteDonustur(string deger) { char[] arrayChar = deger.ToCharArray(); byte[] arrayByte = new byte[arrayChar.Length]; for (int i = 0; i < arrayByte.Length – 1; i++) return arrayByte; static void Main(string[] args) Console.WriteLine(BitConverter.ToString(sonuc)); |
![]()
İşleminden çıkan sonucun değeri.
Burada dikkat edilmesi gereken hususlara gelecek olursak ComputeHash() Metoduna bir dizeyi doğrudan geçiremezsiniz. ByteDonustur() Metodu kullanılarak dize ComputeHash() verilmeden önce byte dizisine dönüştürülmektedir.ComputeHash() metodu tarafından geri döndürülen byte dizisi BitConverter sınıfı ile dizeye geri dönüştürülmektedir.
SİMETRİK ŞİFRELEME ALGORİTMALARI
Bir veriyi simetrik bir veri algoritması ile şifrelediğinizde gönderici ve alıcının aynı şifre çözücü anahtara sahip olmak zorundadır.
.NET platformundaki sınıflar aşağıdaki simetrik algoritmaları desteklemektedir.
Örnek : SimetrikWrite.cs
| class SimetrikWrite { const string desKey = “12345678″; const string desIv = “ABCDEFGH”; static byte[] ByteDonustur(string deger) for (int i = 0; i < arrayByte.Length; i++) return arrayByte; static void Main(string[] args) DESCryptoServiceProvider des = new DESCryptoServiceProvider(); //Formun en üstünde desKey ve desIv isimli iki tane sabit var. DESCryptoServiceProvider sınıfı ile veriyi şifrelediğinizde hem gizli bir anahtar hem de bir ilk değer vektörü sağlamalısınız çünkü yarattığınız dosyadaki şifreyi çözmek istediğinizde ihtiyaç duyacaksınız. Bu dizilere istediğiniz 8 karakter dizesini atayabilirsiniz. |
Örnek : SimetrikRead.cs
| class SimetrikRead { //Bu sabitlerin değeri SimetrikWriter Dosyasındaki desKey ve desIv sabitleri ile uyuşmalıdır. const string desKey = “12345678″; const string desIv = “ABCDEFGH”; static byte[] ByteDonustur(string deger) for (int i = 0; i < arrayByte.Length; i++) return arrayByte; static void Main(string[] args) DESCryptoServiceProvider des = new DESCryptoServiceProvider(); |
ASİMETRİK ŞİFRELEME KULLANMAK
Simetrik şifreleme algoritması kullandığımız zaman, uygulamayı kullananların aynı ortak şifre çözücü anahtara sahip olmaları gerekir. Asimetrik şifreleme algoritması kullandığınız zaman veriyi şifrelemek ve çözmek için kullanılan anahtar farklıdır. Asimetrik şifreleme algoritmaları bir anahtar çifti kullanır. Eğer veriyi bir anahtar ile şifrelediyseniz çözmek için diğer anahtarı kullanırsınız.
.NET platformundaki sınıflar aşağıdaki asimetrik algoritmaları desteklemektedir.
Her iki metodta AsymmetricAlgorithm sınıfında uygulanmaktadır. Bu yüzden aynı metod ve özelliklerin bir çoğunu paylaşmaktadırlar. Sınıflardan herhangi birisini yaratırsanız, genel ve özel anahtarları otomatik olarak üretilir.Genel veya özel anahtara ToXmlString ya da ExportParameters metotları ile erişebilirsiniz. ToXmlString metodu, genel ve özel anahtarları XML dizesinde tutar.
Aşağıdaki örnekte DSACryptoServiceProvider sınıfını yaratıp özel ve genel anahtarlarını görüntülemektedir.
| DSACryptoServiceProvider dsa = new DSACryptoServiceProvider();
Console.Write(“Özel Anahtarlar : “); Console.Write(“Genel Anahtarlar : “); |
İşlemin sonucunda aşağıdakine benzer bir çıktı üretecektir.

örn : AsimetrikWrite.cs
| class AsimetrikWrite { static void Main(string[] args) { byte[] dizi = {1,2,3,4,5,6,7}; RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); for(int i = 0; i < sonucEncrypt.Length; i++) } |
Çıktı Sonucu Aşağıdaki Gibi Olmalıdır.

| class AsimetrikRead { static void Main(string[] args) { byte[] dizi = {1,2,3,4,5,6,7}; RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); for(int i = 0; i < sonucEncrypt.Length; i++) Console.WriteLine(“nn”); byte[] sonucDecrypt = rsa.Decrypt(sonucEncrypt,false); for(int i = 0; i < sonucDecrypt.Length; i++) Console.ReadLine(); |
Decrypt İşleminin Sonucu Aşağıdaki Gibi Olmalıdır.
![]()
Tuğrul Uğurlu
Programların çoğunda birden fazla aynı tipte değişkenlere ihtiyaç duyarız. Bu sorunun çözümü olarak birçok dilde kullanılan veri yapıları ,dizilerdir. Bildiğimiz klasik dizilerin programlama tekniklerine getirdikleri kolaylıkların dışında birtakım kısıtlamaları da vardır. Bu makalede klasik dizilerde sık sık karşılaştığımız çeşitli sorunları ve bu sorunları nasıl çözebileceğimizi inceleyeceğiz.
.NET platformunun sınıf kitaplıklarında bulunan ve programcıların işlerini çok kolaylaştıran ArrayList sınıfı ile klasik dizilerde karşılaştığımız sorunları nasıl çözeceğimizi göreceğiz.
Klasik dizilerle çalışırken karşılaşabileceğimiz temel sorunları şu şekilde sıralamak mümkündür:
Örneğin sayısını bilemediğimiz bir dizinin eleman sayısını 500 olarak belirlediğimizi varsayalım. Çalışma zamanında dizimizin sadece 10 elamanını kullandığımız durumda diğer 490 elemanlık bellek alanı boş olarak kalır. Öte yandan dizimizde tutmak istediğimiz değişkenlerin sayısı 501 bir olduğu bir durumda “IndexOutOfRangeException” istisnai durumu ortaya çıkar ve program bu hatadan dolayı sonlanır.
Mesela aşağıdaki kodu derlemeye çalışalım:
| using System; class CshaprNedirCom try catch( Exception e) Console.ReadLine(); } } |
Yukarıdaki programda intDizi ‘mizi 10 eleman alacak şekilde tanımlamamıza rağmen bu dizinin 20. elemanına ulaşıp ona birşeyler atamaya çalıştık. Bu durumda programımız çalışırken hata verdi. Çünkü dizinin sınırları bellidir ve bu sınırların dışına çıkamıyoruz. Eleman sayısı ihtiyacımıza göre değişen bir veri yapısı olması gerçekten hoş olmaz mıydı? Evet C#’da böyle bir dizi yapımız var. Bunun ismi ArrayList’tir.
ArrayList sınırları dinamik olarak değişebilen diziler olarak tanımlanır. Bu veri yapısı .NET sınıf kütüphanesininSystem.Collections isim alanında bulunur. İsterseniz ArrayList’i nasıl kullanacağımızı bir örnekle inceleyelim:
| using System; using System.Collections; // ArrayList sınıfnı kullanmak için // System.Collection isimalanını eklemeliyiz.. class CshaprNedirCom // aList nesnemize sırası ile 5, 8, 1, 17 ve 20 değerlerini // aList’in elemanlarını ekrana yazdıryoruz: // aList dizimizden 8 ve 20 değerlerini çıkartalım: // aList dizimize 66 ve 4 değerlerini ekleyelim: Console.WriteLine(“nt aList dizisinden 8 ve 20′ çıkartıp, 66 ve 4 ekledik:”);
Console.ReadLine(); } |
Yukarıdaki örneğimizde öncelikle ArrayList sınıfını kullanmak için NET sınıf kütüphanesinin System.Collections isim alanınını kullanacağımızı using System.Collections; ile bildiriyoruz. Main fonksiyonumuzun içindeki ilk satırda, ArrayList aList= new ArrayList() , aList ismini verdiğimiz ArrayList sınıfından bir nesne oluşturuyoruz. aList nesnemizi oluşturduğunuz satırdan sonraki beş satırda ArrayList sınıfının Add() metodu ile aList adlı dizimize elemanları ekliyoruz.
Daha sonra aList diziminizin elemanlarını ForEach döngüsü ile tek tek ekrana yazdıyoruz. ArrayList sınıfındaki bir nesnenin elemanlarını tek tek silmek için Remove() metodunu kullanırız. Remove() metodu ile istediğimiz elemanı diziden atabiliriz. Biz de 8 ve 20 elemanlarını diziden attık. Son olarak dizimize 66 ve 20 elemanlarını ekleyip dizinin son halini ekrana yazdırdık.
C# dilinde normal diziler bildiğiniz gibi sadece aynı tipten verileri tutar. Ama ArrayList sınıfına ait dizilerimiz her türlü nesneyi aynı dizi içinde tutabilir. Yani aynı dizide int, float, ve string tiplerindeki değişkenleri depolama şansımız var. Mesela aşağıdaki kod C# dili kuralları çerçevesinde geçerli bir koddur:
ArrayList karmaList= new ArrayList(); // karmaList isimli ArrayList nesnesi oluşturalım.
karmaList.Add(“Ahmet”);
karmaList.Add(12);
karmaList.Add(true);
karmaList.Add(32.4f);
karmaList.Add(‘c’);
Bu kod ile karmaList isimli ArrayList nesnemizin içinde string, int, bool, float ve char tiplerinden oluşan verileri aynı anda saklarız. ArrayList sınıfının bize sunduğu diğer bir güzel özellik ise tek bir komut ile ArrayList dizimizin içerisindeki elemanları ters çevirebilmemizdir. Ters çevirme işlemi için Reverse() metodu kullanılır. İsterseniz Reverse() metodunu ve ArrayList’lerde nasıl birden farklı türdeki elemanları kullanacağımızı bir örnekle inceleyelim:
| using System; using System.Collections; // ArrayList sınıfnı kullanmak için // System.Collection isimalanını eklemeliyiz.. class CshaprNedirCom // karmaList’e değişik tipte elemanlar ekliyoruz. // karmaList’in elemanlarını ekrana yazdırıyoruz: karmaList.Reverse(); // karmaList’imizi ters çeviriyoruz. Console.WriteLine(“n —> karmaList’in elemanları ve türleri <—”); Console.ReadLine(); |
Yukarıdaki programda karmaList isimli ArrayList sınfından bir nesne oluşturduktan sonra onu değişik türlerden veriler ile doldurduk. Bu dizinin elemanlarını sıra ile foreach döngüsü yardımıyla ekrana yazdırdık. karmaList.Reverse() satırında ise dizimizi ters çevirdik. Son işimizde ise karmaList dizisinin elemanlarını ekrana tek tek yazdırırken aynı zamandaeleman.GetType( ) her elemanın türünü bulup yazdık.
Makalemizi ArrayList sınıfının temel metodlarının tablosunu vererek bitirmek isterim. Bu tablodaki metodların işimize yaracağı kanaatindeyim.
| Add | Bir nesneyi ArrayList’in sonuna ekler. |
| BinarySearch | Sıralanmış bir ArrayList içinde bir nesneyi Binary search algoritması kullanarak arar. |
| Clear | ArrayList’in tüm elemanlarını siler. Sıfırlar. |
| Contains | Herhangi bir nesnenin ArrayList’in elemanı olup olmadığını kontrol eder. |
| Insert | Dizinin sonuna değilde istediğimiz bir yerine indeksini belirterek eklememizi sağlar. |
| Remove | Herhangi bir elemanı diziden siler. |
| Reverse | Diziyi ters çevirir. |
| Sort | ArrayList’i sıralar. |
Ahmet Faruk Nacaroğlu