22 Eylül 2008 Pazartesi

Windows kısayolları

http://www.chip.com.tr/galeri/Gizli-Windows-araclari-zekice-kisaltmalar_538.html

10 Eylül 2008 Çarşamba

Dosya yazıp-okuma

1. using System;
2. using System.Collections.Generic;
3. using System.Text;
4. using System.IO;
5. using System.Web.UI.WebControls;
6. using System.Xml;
7.
8. namespace SoruCevap
9. {
10. public class DocumentManager
11. {
12. public static bool WriteObjectToFile(string Path, string oObject,FileMode oMode)
13. {
14. try
15. {
16. using (FileStream fs = new FileStream(Path, oMode))
17. {
18. using (StreamWriter writer = new StreamWriter(fs,Encoding.Unicode))
19. {
20. writer.Write(oObject);
21. writer.Close();
22. }
23. }
24. }
25. catch (Exception)
26. {
27. return false;
28. }
29. return true;
30. }
31. public static bool WriteObjectToFile(string Path, string oObject)
32. {
33. return WriteObjectToFile(Path, oObject, FileMode.Create);
34. }
35.
36. public static string ReadObjectFromFile(string Path)
37. {
38. try
39. {
40. using (FileStream fs = new FileStream(Path, FileMode.Open))
41. {
42. using (StreamReader reader = new StreamReader(fs, Encoding.Unicode))
43. {
44. return reader.ReadToEnd();
45. }
46. }
47. }
48. catch (Exception)
49. {
50.
51. return null;
52. }
53. }
54. }
55. }

C# Grafik İşlemleri

private void buton1_Click(object sender, EventArgs e)
{
Graphics cizgi = this.CreateGraphics();
Point p1=new Point(10,10);
Point p2=new Point(200,200);
cizgi.DrawLine(Pens.Blue,p1,p2);
}

9 Eylül 2008 Salı

İyi Pilotajın Püf Noktaları

1. YETERİNCE UZAĞA BAKAMAMAK

Bir yarış aracında her şey çok çabuk olur. Bu yüzden her şeyi önceden sezmek çok önemlidir. Aracın nereye gideceğini belirleyen sürücünün gözleridir. İyice ileriye bakmak yarışçının doğru yere gitmesini sağlamanın yanı sıra çevreye ikincil bir dikkatle bakarken bir sonraki hedefe konsantre olmasını sağlar.
2. İLERİYE YETERİNCE KONSANTRE OLMAMAK

Yarış dünyasından bir süre uzak kalmış deneyimli yarışçılar, eski becerilerini yeniden kazanmak için yeterli antrenmana zaman ayırmayı planlamalıdırlar. Sadece ileriye bakmak yeterli değildir. Bir sürücü ilerideki bir hedefe konsantre olmayı öğrenmeli ve bir sonraki amacına ne zaman dikkatini yönelteceğini bilmelidir. Sürücü fren yapmasını ve dönüşünü tamamlamadan apex noktasına konsantre olmuş olmalıdır. Apexe yaklaşırken, gözlerini viraj çıkış hedefine çevirmeli ve dikkatini maksimum hız ile virajdan çıkmaya yöneltmelidir. Sezgi ile konsantrasyonun birleşimi, doğru şeyi doğru zamanda yapma ihtimallerini oldukça artırır.
3. VİRAJDA FAZLA SÜRATLİ OLMAK

Genellikle, 'Ne kadar sürat çok fazladır?' türünde sorular alıyorum. Bunun geçerli cevabı, 'Kişiyi ana hedefine ulaşmaktan uzaklaştırdığı zaman' olarak verilebilir. Bir viraja şeytani bir hızla girmek, tur başına bir saniyenin yüzde birkaçını kazandırabilir ama apexin kaçırılması veya yolun yanlarına çıkılması durumunda çıkış hızından fedakarlık edilmesi ile saniyenin onda biri veya bir kaç saniye kaybedilebilir.
4. GERÇEKÇİ OLMAYAN BEKLENTİLER

'Kendini bil'. Bir amatör, bir dünya şampiyonunun açıklamaktan gurur duyacağı zamanlar elde etmeyi beklememelidir. Birisinin hayat boyu yarışmalarını izleyip, gizlice 'doğal yetenek'ten şüphe duymak, dikkatli öğrenmek ve ciddi antrenmanların yerini tutamaz. Yarış dünyasından bir süre uzak kalmış deneyimli yarışçılar, eski becerilerini yeniden kazanmak için yeterli antrenmana zaman ayırmayı planlamalıdırlar.
5. FAZLA SERT KULLANIM

Birçok yarış aracı fazlasıyla ve aniden tepki verir; düzgün direksiyon, hızlanma ve fren kullanımlarına ise pozitif tepki verir. Ayrıca, şiddetli kullanımlarda ani ve negatif tepkiler verir. Sert direksiyon kullanımı ve frenler ile gaza ani yüklenmeli kullanımlar bazen 'hızlı' hissi verir ama gerçekte daha yavaş, tehlikeli ve araç için yıpratıcıdır.
6. SÜRERKEN ANALİZ ETMEK

Kişinin ani olaylara konsantre olmak için kendini disipline etmesi ve performansını analiz etmeyi ertelemesi, başarılı sürücülük için çok önemlidir. On saniye önce olabilecek bir olayı düşünmek, yarışçının ancak bir-iki saniye sonra varması gereken yere doğru şekilde varmasını engeller. Tecrübeli ve yetenekli sürücüler, performanslarının analizini uzun düzlüklerde ve pistin daha kolay bölümlerinde yaparlar. Biz amatör sürücülere pistteyken yalnızca çok yakın geleceği düşünmelerini ve performans analizlerini yarış sonrası dinlenirken yapmalarını tavsiye ediyoruz.
7. YARIŞ ÇİZGİLERİNE ÖNEM VERMEMEK

Yarış eğitiminde, pisti doğru kullanmak oldukça önemlidir. Birçok sürücünün teknik sorular sorup, cevaplarını anlamalarına rağmen her şeyi direksiyon başına geçince nasıl göz ardı ettiklerini görünce birçok defa oldukça şaşırdım. (Çözümleri için 1,2,3 ve 6.ncı maddelere bkz.)
8. BEYNİ ŞAŞIRTMAK VEYA KORKUTMAK

Bir sürücünün beyni, en iyi dostudur. Bu en iyi yardımcınızı yanlış kullanırsanız, korkutursanız veya fazla yüklerseniz, isteksiz, işbirliği yapmayan ve tehlikeli bir yolcu haline gelir. Korkutulan veya şaşırtılan bir beyin 'Yüksel!!'..., 'Buraya bak, yolun dışına çıkıyoruz!!'... 'Şimdi sert fren yap!'... 'Bak, ben dememiş miydim?!' türünden emirler yollamaya başlar. (Çare: yavaşlayın, 1'den 7'ye kadar maddeleri iyice tekrarlayın)
9. DEĞİŞEN DURUMLARA GÖRE TEPKİ VERMEMEK

Yeni sürücüler genellikle bir pistte en iyi şekilde kullanmayı öğrenirler ve bunu tek tarz olarak ezberlerler. Yarış dünyasında her şey dinamiktir, dikkatle izlenerek kişinin sürüş stiline etki etmesi gerekir. Sıcaklık, lastik yıpranması, pistin durumu, rakipler, heyecan, geçen fırsatlar, vs. yarışçının performansını ciddi biçimde etkileyebilir.
10. TEKNİK HATALAR

Çok erken veya geç dönüşler, apexlere erken veya geç girmek ya da tamamen kaçırmak, birçok yarışçının yaptığı hatalardır. Bunların ana sebeplerinin listesi 1'den 9'uncu maddeye kadar yukarıda verilmiştir. Bir hatanın sebebinin yalnızca teknik sorunlar olması çok seyrek görülen bir durumdur. Genellikle zihinsel hatalar ile birlikte ortaya çıkarlar. Bu gibi durumlarda en iyi çözüm hatanın farkına varıp, sebebini bularak kaçınmanın yollarını bulmaktır. Tabii ki, bir yarışçının başını derde sokmasının daha bir çok sebebi olabilir. Kesinlikle, bir yarışçı kendini geliştirdikçe, kullandığı malzemenin teknolojisi ve farklı sürüş teknikleri, hata olasılıklarını artırır. Sağlıklı bir zihin ile teknik aksamın birleşmesi, yarışçıyı istikrarlı başarılara götürür.

5 Eylül 2008 Cuma

Dynamic memory allocation

using System;
class Gosterici
{
unsafe static void Main()
{
int * dizi = stackalloc int[10];
for(int i=0; i<10;++i)
Console.WriteLine("*(dizi+{0}) = {1}",i,dizi[i]); }
}
}

4 Eylül 2008 Perşembe

Bilgisayarı Kapanmaya Ayarlamak

Windows XPde bilgisayarı Otomatik Kapatmak için hazır bir program vs. gerek yok aslında.. Basit bir komutla bu işlemi yapabilirsiniz..
Yapacağınız işlem;
Başlat > Çalıştır > tsshutdn 3600 yazmanız. 3600 saniye 1 saat yapar. Burada ki değeri değiştirerek otomatik kapanma süresini düşürebilir ya da uzatabilirsiniz. Bu şekilde hiç programla falan uğraşmadan bilgisayarı otomatik kapatabilirsiniz.

C# Registry İşlemleri

Windows’ un tüm bilgileri bildiğiniz gibi registry de saklanmakta. Bu yazımda registry e bilgi kaydetme ve okuma işlemleri üzerinde duracağım. Öncelikle registry e nasıl ulaştığımızı söyleyeyim. Başlat, Çalıştır, Regedit dediğimizde Kayıt Defteri Düzenleyicisi yani Registry bilgilerini görmüş oluyoruz. Registry de 5 ana kök var. Bunlar:

HKEY_CLASSES_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
HKEY_CURRENT_CONFIG

Bunlara herhangi bir veri ekleyip okuyabilmekteyiz. Peki nasıl? Yine örnek proje üzerinden gideceğim. C# da bu işlemleri yapabilmek için
using Microsoft.Win32;
ifadesini eklemek zorundayız.
Planımız şöyle: Önce bir ana köke veri yazıp okuyacağım, sonra da alt rootlara yazıp okuma yapıp konuyu toparlayacağım. BaşlıyoruzJ
Şimdi Current User altında KullanıcıAdı verisi oluşturup textbox tan alınan veriyi ekliyoruz:

private void button1_Click(object sender, EventArgs e)

{

string text = textBox1.Text;
RegistryKey rk = Registry.CurrentUser;
rk.SetValue("UserName",text);

}

Okuma işlemi de benzer şekilde:

private void button2_Click(object sender, EventArgs e)

{

string text = Registry.CurrentUser.GetValue("UserName").ToString();
this.Text = "Kullanıcı Adı: " + text;

}

Ana rootların altına klasör eklemek için örneğin şöyle yapabiliriz.
Registry.CurrentUser.CreateSubKey("UserName");
Bu oluşturduğumuz klasörlere bilgi ekleme ve okuma da aynı şekilde.
Siz de ana köklerin altındaki metodları inceleyebilirsiniz. Örneğin DeleteSubKey, DeleteSubKeyTree, SubKeyCount gibi…