İnternette dolasırken gözume hoş bir kod carptı paylaşmak istedim.
C# ta timer ve grafik metotları kullanarak analog saat yapımı. Bana gayet ilginç ve guzel bir kod geldi:

   19 private void Form1_Load(object sender, EventArgs e)

   20         {

   21             this.ClientSize = new Size(300, 300);

   22             Timer zaman = new Timer();

   23             zaman.Interval = 1000;

   24             zaman.Start();

   25             zaman.Tick += new System.EventHandler(zaman_Tick);

   26         }

   27 

   28         private void zaman_Tick(object sender, EventArgs e)

   29         {

   30             float yari_cap, xorta, yorta, xx, yx;

   31             Graphics cizim;

   32             cizim = this.CreateGraphics();

   33             cizim.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;

   34             yari_cap = this.ClientSize.Width / 2;

   35             cizim.DrawEllipse(new Pen(Color.Black, 2), 0, 0, 2 * yari_cap, 2 * yari_cap);

   36             cizim.DrawEllipse(new Pen(Color.Black, 2), 10, 10, 2 * yari_cap - 20, 2 * yari_cap - 20);

   37             cizim.FillEllipse(new SolidBrush(this.BackColor), 15, 15, 2 * yari_cap - 25, 2 * yari_cap - 25);

   38             xorta = yari_cap;

   39             yorta = yari_cap;

   40             yari_cap -= 10;

   41             int saat, dakika, saniye, aci, x, y, x1, y1;

   42             for (aci = 0; aci <= 360; aci += 6)

   43             {

   44                 x = (int)(xorta + (yari_cap + 10) * Math.Cos(aci * 3.1415 / 180));

   45                 y = (int)(yorta - (yari_cap + 10) * Math.Sin(aci * 3.1415 / 180));

   46                 x1 = (int)(xorta + (yari_cap) * Math.Cos(aci * 3.1415 / 180));

   47                 y1 = (int)(yorta - (yari_cap) * Math.Sin(aci * 3.1415 / 180));

   48                 if ((aci % 30) == 0)

   49                     cizim.DrawLine(new Pen(Color.Red, 10), x, y, x1, y1);

   50                 else

   51                     cizim.DrawLine(new Pen(Color.Blue, 5), x, y, x1, y1);

   52             }

   53             System.Drawing.Drawing2D.GraphicsPath bicim;

   54             bicim = new System.Drawing.Drawing2D.GraphicsPath();

   55             saat = System.DateTime.Now.TimeOfDay.Hours;

   56             aci = -saat * 30 + 90;

   57             xx = (int)(xorta + yari_cap * 2 / 3 * Math.Cos(aci * 3.1415 / 180));

   58             yx = (int)(yorta - yari_cap * 2 / 3 * Math.Sin(aci * 3.1415 / 180));

   59             x = (int)(xorta - 10 * Math.Cos(aci * 3.1415 / 180 + Math.PI / 2));

   60             y = (int)(yorta + 10 * Math.Sin(aci * 3.1415 / 180 + Math.PI / 2));

   61             x1 = (int)(xorta + 10 * Math.Cos(aci * 3.1415 / 180 + Math.PI / 2));

   62             y1 = (int)(yorta - 10 * Math.Sin(aci * 3.1415 / 180 + Math.PI / 2));

   63             bicim.AddLine(x, y, xx, yx);

   64             bicim.AddLine(x1, y1, xx, yx);

   65             bicim.AddLine(x, y, x1, y1);

   66             dakika = System.DateTime.Now.Minute;

   67             aci = -dakika * 6 + 90;

   68             xx = (int)(xorta + yari_cap * Math.Cos(aci * 3.1415 / 180));

   69             yx = (int)(yorta - yari_cap * Math.Sin(aci * 3.1415 / 180));

   70             x = (int)(xorta - 5 * Math.Cos(aci * 3.1415 / 180 + Math.PI / 2));

   71             y = (int)(yorta + 5 * Math.Sin(aci * 3.1415 / 180 + Math.PI / 2));

   72             x1 = (int)(xorta + 5 * Math.Cos(aci * 3.1415 / 180 + Math.PI / 2));

   73             y1 = (int)(yorta - 5 * Math.Sin(aci * 3.1415 / 180 + Math.PI / 2));

   74             bicim.AddLine(x, y, xx, yx);

   75             bicim.AddLine(x1, y1, xx, yx);

   76             bicim.AddLine(x, y, x1, y1);

   77             saniye = System.DateTime.Now.TimeOfDay.Seconds;

   78             aci = -saniye * 6 + 90;

   79             xx = (int)(xorta + yari_cap * Math.Cos(aci * 3.1415 / 180));

   80             yx = (int)(yorta - yari_cap * Math.Sin(aci * 3.1415 / 180));

   81             x = (int)(xorta - 1 * Math.Cos(aci * 3.1415 / 180 + Math.PI / 2));

   82             y = (int)(yorta + 1 * Math.Sin(aci * 3.1415 / 180 + Math.PI / 2));

   83             x1 = (int)(xorta + 1 * Math.Cos(aci * 3.1415 / 180 + Math.PI / 2));

   84             y1 = (int)(yorta - 1 * Math.Sin(aci * 3.1415 / 180 + Math.PI / 2));

   85             bicim.AddLine(x, y, xx, yx);

   86             bicim.AddLine(x1, y1, xx, yx);

   87             bicim.AddLine(x, y, x1, y1);

   88             cizim.FillEllipse(new SolidBrush(Color.Black), xorta - 20, yorta - 10, 30, 30);

   89             cizim.DrawPath(new Pen(Color.Blue), bicim);

   90 

   91         }

Etiketler : C# Saat Analog Saat timer cizim
Kategoriler : C#
Yorumlar : 0 Yorum Yorum Yaz

internetten indirdiğinizi varsayarak cıkan iso dosyasını DVD ye yazdırıyoruz. Yazdırma işlemini 4x ile yapmanızda fayda var yuksek hızda cekilen dvd lerde hata oluştugunu okudum.
DVD mizi takıp yeniden başlattığımızda önyuklemek için bir tuşa basıyoruz. Devamı resimlerde :)
Windows 7 kurulum

Devamı...
Etiketler : Windows 7 Kurulum Resimli Anlatım
Kategoriler : Microsoft
Yorumlar : 2 Yorum Yorum Yaz
Windows 7 yi yüklediniz fakat özelliklerini kullanamıyormusunuz?
Bende kurduğumda Windows7 de olması gerekn özellikleri görememiştim. Daha sonra merak sonucu Windows'un Bilgisayarımı puanlamasını istedim işlem bittikten sonra gördum ki Windows 7 nin özelliklerini kullanabiliyorum :)

Windows 7 full sürümü kurdum ilk izlenimlerimi hemen sizlerle paylaşmak istedim :)
Öncelikle Hız: Windows XP ye baya yakın. Şu anda birsey yuklu olmamasını da göz önune almamız gerek fakat suanda hızdan baya memnunum

Driver Tanıma: Hemen hemen tüm driverları tanıdı o konuda gayet iyi Linux u yakalamıslar bu konuda

Görsellik: Çok iyi 

Benim ilk izlenimlerim bunlar ileride devamı gelecek :)

Etiketler : Windows 7 ilk izlenimler
Kategoriler : Microsoft
Yorumlar : 1 Yorum Yorum Yaz

KOnumuz COM+ Ve Enterprice Services

Öncelikle bu konu hakkında internette cok bilgi bulabilirsiniz bende biraz daha detaylı anlatmaya çalıştım neyse bismillahirrahmanirrahim diyerek başlayayım artık..

COM+ Nedir ?

COM+; özellikle n-katmanlı çok kullanıcılı kurumsal uygulamalara, çeşitli servisler sunma amacı ile Microsoft Tarafından Tasarlanmış olan bir uygulama sunucu teknolojisidir.Microsoft bu teknolojiyi ilk kez MTS ( Microsoft Transaction Server ) ismi ile Windows NT 4.0 için bir add-on olarak tanıttı.Daha sonra bu özellik Windows 2000 ile birlikte işletim sisteminin bir parçası olarak Component Services ( Component Object Model ) ismi ile gelmeye başladı.Şunuda belirteyim artık Windows Xp ve 2003 Server’da COM+ 1.5 teknolojisi kullanılmaya başladı..

COm+’nın temel özellik ve Getirdiklerinden bahsetmek isterdim ama o zamanda evrim sürecinden bahsetmek gerekcekti onun yerine kısa kesip bizler için kullanımın gerekçelerini anlatmayı tercih ettim..

Dağıtık Transaction Yönetimi

Dağıtık transaction yönetimi,Com+ kullanımın belki de en belirgin gerekçesidir.Ancak konuya girmeden transaction hakkında bilgi vermek istedim..

Transaction Nedir ? (Hepiniz biliyorsunuzdur ama yinede anlatayım ki makale eksik kalmasın :) )

Bir transaction; birbirleri ile mantıksal ve işlevsel açıdan ilişkili, bir ya da daha fazla çok işlem biriminin tek ve tümleşik bir yağı altında toplanmış halidir.Bu tümleşik yapı, temelde bir işlevi yerine getirmek üzere tasarlanmış olduğunda, başarı ya da başarısızlığı içerdiği alt işlemlerin bireysel başarılarına bağlı olacaktır.Yani bir transaction’nın başarılı olabilmesi için,tanımlı tüm alt işlemlerin eksiksiz başarılı olması gerekmektedir.Tanımlı alt işlemlerin herhangi birisinin başarısızlığı durumunda ( Diğer alt işlemlerin başarı durumuna bakılmaksızın ) transaction tümü ile başarısız olacaktır.

Kurumsal uygulamalar ve özellikle veritabanı işlemlerinde ; birden fazla alt işlemin ardışıl ve tutarlı olarak yapılmasının gerektiği durumlar içi transaction’lar yoğun olarak kullanılmaktadır.bu anlamda, bir transaction bir işin yapılması için gerekli olan tüm alt işlemlerin grup’lanmasını sağlayan program kavramıdır.

Şimdi bu bahsettiğim olayları standart ve cok bilinen bir örnek ile anlatmaya çalışayım ( Kurslarda verilen örnektir değişmez :)

Bir Bankacılık Uygulamasında; bir kişinin hesabından alınan bir miktar paranın, diğer bir kişinin hesabına aktarılmasına(havale edilmesine) durumunu incelersek; Örneğin A isimli şahsın hesabına hatasız olarak ekleninceye kadar, bakiye değişikliklerini veritabanına yansıtılmaması gerekir.Çünkü burada yapılan ilki alt işlemin gerçekleşme süresinde oluşabilecek bir hata ciddi bir tutarsızlığın nedeni olacaktır. Hem düşünsenize bir ,Havale ettiğiniz para sizin hesaptan kesiliyor ama havale ettiğiniz kişiye gitmiyor.. düşünün neler yapardınız bu durum karsısında..

İşte yukarıda nedenlerden ötürü kurumsal uygulamalarda yapılması gereken bir iş, mantıksal alt işlemlerine bölünerek, bir transaction şeklinde tasarlanmalıdır.Transaction kavramında Ana ilke Ya Hep Ya Hiç’tir.Yani Transaction olarak tasarlanmış bir işin alt işlemlerinin gerçekleşmesi sürecinde ya tüm alt işlemler doğru olarak yapılır ya da o ana kadar olan tüm işlemler de iptal edilerek işin sonuçlanması engellenir.. Bu sayede tutarsızlıkların oluşması önlenmiş olur..

Bu örnekte işlemlerin tümü hatasız gerçekleştiğinde transaction durumu commit herhangi birinde bir hata oluştuğu zaman ise durumu rollback olur..

ACID Doktrini

ACID sözcüğü gerçekte “Atomicity,Consistency,Isolation ve Durability” sözcüklerinin baş harflerinden oluşan bir kavramdır.BU dört sözcüğün kapsadığı anlamlar,transaction kavramının özünü teşkil eder.Şimdi bu kavramların neler olduğundan bahsedeyim.

Atomicity : Bu kavram bir transaction’ınun başarılı olabilmesi için; tanımlı alt işlemlerinin eksiksiz başarılı olması gerektiği biçiminde tanımlayabiliriz.Burada ana ilke,ya hep ya hiç’tir.Bu atomicity resimle anlatayım..

Resim için kusura bakmayın Kendi çizimim ama anlaşılabilmesi için herşey :)

Üç adet seri anahtar bulunmakta resimde anlayabildiyseniz tabi. bu lambanın yanması için üç anahtarında kapalı durumda olması gerekir.Anahtarlardan biri acık kalsa lambanın yanması imkansız hale gelir.Bu durumu transcation’a döndürücek olursak alt işlemlerin hatasız gerçekleşmesi gerekir ki transaction başarı ile gerçekleşebilsin.

Consistency(Tutarlılık ) : Bir transaction’ının başarılı bir biçimde sonuçlanmış olması söz konusu transaction’ının doğru tasarlanmış olduğu sonucuna varmamız için yeterlidir değildir.Bir transaction aynı zamanda ürettiği sonuçlar bakımından tutarlı davranmalıdır.Bunun anlamı transaction’ının üzerinde çalıştığıverilerin tutarlığını koruyor olması gerektiğidir.

Isolation : Herhangi bir t anında, ver üzerinde değişiklik yapan bir transaction, aynı anda ve aynı veriler üzerinden çalışan diğer olası transaction’lardan izole çalışmalıdır.Bunun anlamı aynı veri üzerinde değişiklik yapmak üzere tasarlanmış transaction’lardan herhangi birisinin çalışması sonlanmadan diğerinin söz konusu veriler üzerinde işlem yapmamasıdır.

Durability : Transaction’ının bvaşarısız olması halinde üzerinde çalışılan sistemin transaction çalışmadan önceki durumuna döndürebilmesi yetenediğidir.
Bir transaction’ının mantıksal tasarımında du dört kelimenin ifade ettiği ilkelere başvurulur.Sonuç olarak iyi tasarlanmış bir transaction bu dört ilkeye de uygundur.

 

Çağlar Özenç'e Teşekkürler...

Etiketler : COM COM Enterprice Services
Kategoriler : C#
Yorumlar : 0 Yorum Yorum Yaz