private string sqlCharList(string str_) { string sonuc = ""; string charList = "cçCÇgğGĞıiIİoöOÖsşSŞuüUÜ"; // Türkçe karakter dizisi char[] str = str_.ToCharArray(); // Aranan kelime diziye dönüştürülüyor for (int i = 0; i < str.Length; i++) { double lastCharIndex = charList.IndexOf(str[i].ToString()) + 1; lastCharIndex = (Math.Ceiling(lastCharIndex / 4) * 4); if (charList.IndexOf(str[i].ToString()) != -1) { sonuc += "[" + charList.Substring((int)lastCharIndex - 4, 4) + "]"; } else { sonuc += str[i].ToString(); } } return sonuc; }
20 Aralık 2015
SQL Sorgu: Türkçe karakterler için CharList
C# Mdi Child Form'un 1'den Fazla Açılmasını Önleme
private void mnuMyForm_Click(object sender, EventArgs e) // myFormu açmak için tıkla
{
foreach (Form item in this.MdiChildren) // tüm açık formları kontrol et
{
if (item.Name == "MyFormName") // ismi MyFormName olan var ise
{
item.BringToFront(); // öne getir, göster vs.
return; // foreach i sonlandır
}
}
// foreach MyFormName bulamaz ise return pass geçilir ve
// aşağıdaki kod çalışır. sonrasını biliyorsunuz zaten.
MyForm frm = new MyForm();
frm.MdiParent = this;
frm.Show();
}
25 Ağustos 2015
Modulus 11 ve Check Digit
Diyelim ki elimizde harflerden ve sayılardan veya sadece
sayılardan oluşan bir karakter dizisi var. Bu karakter dizisi banka hesap
numarası, konteyner numarası, ISBN
numarası vb. olabilir. Bu numaraları manuel olarak bir sisteme girdiğimizi veya
başka birisine mail ortamında bildirdiğimizi düşünelim. Peki bu karakter dizilerini
klavyeden girerken hatalı girebilir miyiz? Tabi ki evet. Peki bu karakter
dizisinin doğruluğundan nasıl emin olabiliriz? Hem de herhangi bir sistemden
sorgulamadan.
Karakterler arasında matematiksel bir bağ olsa ve son karakter (Check
Digit) bu matematiksel işlemlerin sağlaması niteliğinde olsa. Aslında bütün hikaye
bundan ibaret. Uzun karakter dizilerinin hatalı girilebilmesi ihtimaline karşı bu
diziler içerisinde yapılacak matematiksel bazı işlemlerle doğruluğunu
kontrol etmek. İşte bunun için Modülüs 11 algoritması kullanmış ve bir Check Digit'e ulaşılmış. Ben birazda işimle alakalı olduğu için bir konteyner numarasının
doğruluğunu Modülüs 11 ve Check Digit mantığı ile nasıl buluruz onu
anlatacağım.
Öncelikle konteyner numarası hakkında biraz bilgi vereyim;
- Bir konteyner numarası 4 harf 6 sayı ve 1 check digit yani
doğrulama numarasından oluşur.
- 4 harfin 3 tanesi konteyner sahibini temsil eder.
- Bu 4 harfin sonuncusu konteynerin kategorisini ifade eder ve
bu harfler U, J veya Z olabilir.
- U tüm taşıma konteynerleri için kullanılır
- J bir ekipmana bağlı fakat ayrılabilir konteynerler için
kullanılır
- Z ise dorse römork ve şasiler için kullanılır
- Devam eden 6 rakam konteynerin serisi
- En sonda bulunan rakam ise konteynerin kontrol rakamı yani
Check Digittir.
Peki bu içinde harfler bulunan karakter dizisi ile matematiksel işlemleri nasıl yapacağız?
Bunu aşağıdaki tabloda (Tablo-1) bulunan harf
değer eşlemesi yardımı ile yapacağız. Bu değerler 10 dan başlayacak ve 11’in katları
kullanılmayacak şekilde Z ye kadar verilecektir.
Tablo-1
|
||||||
A
|
10
|
N
|
25
|
|||
B
|
12
|
O
|
26
|
|||
C
|
13
|
P
|
27
|
|||
D
|
14
|
Q
|
28
|
|||
E
|
15
|
R
|
29
|
|||
F
|
16
|
S
|
30
|
|||
G
|
17
|
T
|
31
|
|||
H
|
18
|
U
|
32
|
|||
I
|
19
|
V
|
34
|
|||
J
|
20
|
W
|
35
|
|||
K
|
21
|
X
|
36
|
|||
L
|
23
|
Y
|
37
|
|||
M
|
24
|
Z
|
38
|
|||
Harfler tamam peki sayılar?
Sayılar kendi değerleri ile
alınacaklar.
Şimdi ARKU 830294-4 konteyner numarasının modulus 11 ile doğruluğunu kontrol edelim;
Şimdi ARKU 830294-4 konteyner numarasının modulus 11 ile doğruluğunu kontrol edelim;
- 4 harften oluşan prefix ve
- 6 sayıdan oluşan
seri numarasını alalalım.
- Her birinin karşısına değerlerini yazalım.
- Şimdi
çarpanları bulmak için her bir karakterin bulunduğu pozisyonu 2 nin kuvveti
olarak alalım ve karşısına yazalım. Dikkat edilmesi gereken nokta pozisyon
olarak alınacak sayıların 0 dan başlaması gerektiğidir.
- Her bir karakter için
elde edilen çarpımları toplayalım ve 11 değeri ile modunu alalım. Mod bölme
işleminde kalanı veren bir fonksiyondur.
Örn:
3 mod 2 = 1 ==> 3 ün 2 ile bölümden kalan 1 dir.
5 mod 3 = 2 ==> 5 in 3 ile bölümünden kalan 2 dir.
Karakter
Posizyonu |
Karakter
|
Karakter
Değerleri |
Çarpan
|
Çarpım
|
|
0
|
A
|
10
|
2⁰ =
|
1
|
10
|
1
|
R
|
29
|
2¹ =
|
2
|
58
|
2
|
K
|
21
|
2² =
|
4
|
84
|
3
|
U
|
32
|
2³ =
|
8
|
256
|
4
|
8
|
8
|
2⁴ =
|
16
|
128
|
5
|
3
|
3
|
2⁵ =
|
32
|
96
|
6
|
0
|
0
|
2⁶ =
|
64
|
0
|
7
|
2
|
2
|
2⁷ =
|
128
|
256
|
8
|
9
|
9
|
2⁸ =
|
256
|
2304
|
9
|
4
|
4
|
2⁹ =
|
512
|
2048
|
Toplam
|
5240
|
||||
5240 mod 11 = 4 ==> 5240 ın 11 ile bölümden kalan 4 tür ve 4 Kontrol Numaramız yani Check Digitimizdir.
5 Temmuz 2015
Paul Graham - How to start a "startup" makalesinden bir bölüm
bizimle çalışan hemen herkes yaptığı işte bir canavardı. satışlardan sorumlu kadın o kadar azimliydi ki, onunla telefonda konuşan potansiyel müşterilere acırdım. oltanın ucunda çırpındıklarını hissedebilirdiniz ama kaydolana kadar kurtulamayacaklarını da bilirdiniz.
tanıdığınız kimseleri düşünürseniz, canavarlık testini uygulamanın kolay olduğunu görürsünüz. o kişiyi gözünüzde canlandırıp "falanca bir canavardır" diye düşünün. eğer gülerseniz, değil demektir. bu büyük şirketlerde gereksinim duyulmayan, hatta arzu edilmeyen bir özellik olabilir, ama bir startup'ta gereklidir.
programcılar için ilaveten üç testimiz daha vardı. bu insan gerçekten zeki miydi? eğer öyleyse, iş bitirici miydi? ve son olarak, bazı iyi hacker'lar çekilmez insanlar olduklarından, bu kişiyle aynı ortamda olmaya tahammül edebilir miydik?
bu son test şaşılacak kadar az insanı eler. eğer bir insan gerçekten zekiyse her türlü sosyal beceriksizliğine katlanabilirdik. tahammülümüzü aşan şey fazla havalara giren kimselerdi. ama zaten böyle olanların çoğu gerçekten zeki değillerdi ve bu yüzden üçüncü testimiz çoğunlukla birincinin başka bir ifadesiydi.
bu dörtgözlerin çekilmez olanları genelde akıllı görünmek için çok uğraştıklarından böyle olurlar. fakat ne kadar zeki olurlarsa, kendilerini o kadar az ukalalık yapmak zorunda hissederler. yani genelde gerçekten zeki insanları "bilmiyorum," "belki de siz haklısınızdır" ve "x'i pek anlamadım" gibi şeyleri söyleyebilmelerinden tanıyabilirsiniz.
Kaynaklar;
http://www.paulgraham.com/start.html
https://eksisozluk.com/startup--80125?p=4
tanıdığınız kimseleri düşünürseniz, canavarlık testini uygulamanın kolay olduğunu görürsünüz. o kişiyi gözünüzde canlandırıp "falanca bir canavardır" diye düşünün. eğer gülerseniz, değil demektir. bu büyük şirketlerde gereksinim duyulmayan, hatta arzu edilmeyen bir özellik olabilir, ama bir startup'ta gereklidir.
programcılar için ilaveten üç testimiz daha vardı. bu insan gerçekten zeki miydi? eğer öyleyse, iş bitirici miydi? ve son olarak, bazı iyi hacker'lar çekilmez insanlar olduklarından, bu kişiyle aynı ortamda olmaya tahammül edebilir miydik?
bu son test şaşılacak kadar az insanı eler. eğer bir insan gerçekten zekiyse her türlü sosyal beceriksizliğine katlanabilirdik. tahammülümüzü aşan şey fazla havalara giren kimselerdi. ama zaten böyle olanların çoğu gerçekten zeki değillerdi ve bu yüzden üçüncü testimiz çoğunlukla birincinin başka bir ifadesiydi.
bu dörtgözlerin çekilmez olanları genelde akıllı görünmek için çok uğraştıklarından böyle olurlar. fakat ne kadar zeki olurlarsa, kendilerini o kadar az ukalalık yapmak zorunda hissederler. yani genelde gerçekten zeki insanları "bilmiyorum," "belki de siz haklısınızdır" ve "x'i pek anlamadım" gibi şeyleri söyleyebilmelerinden tanıyabilirsiniz.
Kaynaklar;
http://www.paulgraham.com/start.html
https://eksisozluk.com/startup--80125?p=4
4 Ocak 2015
C# ile Dörtgen Çizmek
private void Form1_Paint(object sender, PaintEventArgs e) { // bunun için öncelikle bir kalemimizin olması gerekir // kırmızı renkli bir kalem oluşturuluyor Pen mPen = new Pen(Color.Red); // çizgi kalınlığı ayarlanıyor mPen.Width = 5; // çizim için grafik nesnesi oluşturuluyor Graphics g = e.Graphics; // dörtgen nesnesi oluşturulyor // x ve y koordinatları ile çizim nerden başlayacak belirtiliyor // sonra da uzunluk ve yükseklik belirtiliyor Rectangle r = new Rectangle(50, 50, 100, 200); // çizime başlıyoruz. // DrawRectangle bizden kalem, // dörtgenin konum ve boyut bilgilerini istiyor g.DrawRectangle(mPen, r); // çizim gerçekleşiyor // görevi sona eren nesneler bellekten atılıyor mPen.Dispose(); g.Dispose(); }
3 Ocak 2015
C# ile Basit Bir Çizgi Çizme
// bunun için öncelikle bir kalemimizin olması gerekir // yeşil renkli bir kalem oluşturuluyor Pen mPen = new Pen(Color.Green); // çizim için grafik nesnesi oluşturuluyor Graphics g = this.CreateGraphics(); // çizime başlıyoruz. // DrawLine bizden kalem, // başlangıç noktası için çizginin soldan ve yukarıdan koordinatını // bitiş noktası için için çizginin yine soldan ve yukarıdan koordinatını istiyor g.DrawLine(mPen, 0, 0, 200, 200); // çizim gerçekleşiyor // görevi sona eren nesneler bellekten atılıyor mPen.Dispose(); g.Dispose();
Kaydol:
Yorumlar
(
Atom
)
