Archive for Ocak, 2008
Programlama Dillerinin Popularitesi ve En Çok Kullanılan Programlama Dilleri
by CanerD on Oca.16, 2008, under Güncel, Programlama, Teknoloji, Yazılım
Örneğin programlaya yeni başlayacak bir newbie siniz veya zaten bir programlama dili biliyosunuz ancak yeni bir dil daha öğrenerek kendinizi geliştirmek istiyorsunuz. Peki hangi dili öğrenmeye başlayacaksınız? Öyle ya, bu leblebi değil ki yiyipde geçesiniz! Bu konuda hem size hemde kısmen kendime faydası dokunacak bu makaleyi yazma ihtiyacı hissettim. Umarım keyifle okursunuz…
Bu konuyu araştırırken yazılmış bazı yabancı makaleleri inceledim ve gördüm ki .Net platformunun ortaya çıkması ile birlikte programcıların kafaları oldukça karışmış. Yeni nesil programcılar ise kararsız..
En başta sizlere TIOBE‘nin sitesinden aldığım bir listeyi sunmak istiyorum;
| Sıra Ocak 2008 |
Sıra Ocak 2007 |
Sırasındaki Değişim |
Programlama Dili |
Oran Ocak 2008 |
Değişim Ocak 2007 |
Status |
|---|---|---|---|---|---|---|
|
1 |
1 |
|
Java |
20.849% |
+1.69% |
A |
|
2 |
2 |
|
C |
13.916% |
-1.89% |
A |
|
3 |
4 |
|
(Visual) Basic |
10.963% |
+1.84% |
A |
|
4 |
5 |
|
PHP |
9.195% |
+1.25% |
A |
|
5 |
3 |
|
C++ |
8.730% |
-1.70% |
A |
|
6 |
8 |
|
Python |
5.538% |
+2.04% |
A |
|
7 |
6 |
|
Perl |
5.247% |
-0.99% |
A |
|
8 |
7 |
|
C# |
4.856% |
+1.34% |
A |
|
9 |
12 |
|
Delphi |
3.335% |
+1.00% |
A |
|
10 |
9 |
|
JavaScript |
3.203% |
+0.36% |
A |
|
11 |
10 |
|
Ruby |
2.345% |
-0.17% |
A |
|
12 |
13 |
|
PL/SQL |
1.230% |
-0.34% |
A |
|
13 |
11 |
|
SAS |
1.204% |
-1.14% |
A |
|
14 |
14 |
|
D |
1.172% |
-0.16% |
A |
|
15 |
18 |
|
COBOL |
0.932% |
+0.30% |
A |
|
16 |
46 |
|
Lua |
0.579% |
+0.48% |
A– |
|
17 |
22 |
|
FoxPro/xBase |
0.506% |
+0.05% |
B |
|
18 |
19 |
|
Pascal |
0.456% |
-0.11% |
B |
|
19 |
16 |
|
Lisp/Scheme |
0.413% |
-0.26% |
A– |
|
20 |
27 |
|
Logo |
0.386% |
+0.07% |
B |
Gariptir bu listede benim en çok dikkatimi çeken dil daha önceden adını hiç duymadığım dil. “Lua”. Araştırmalarımdan çıkardığım sonuçlara göre Brezilya’lılar tarafından Brezilya’da geliştirilen bu dilin en çok kullanıldığı alan consol oyun programlama (PSP, Nintendo vs.). Ve hakkındaki dökümanların %90′ı ispanyolca (ya da portekizce). Eğer yeni dünya düzeninin başlangıcı bu ise burada fantastik bir öngörüde bulunabilirim: “Brezilya’lılar (ve onlarla aynı dili konuşan 1.5 milyar insan) programlama dünyasının oyun sektörünü ele geçirecek ve dünyanın geri kalanına portekizce (ya da ispanyolca) öğrenmelerini zorla kabul ettirtecek kadar derin oyunlar programlayacaklar ve yeni süper güç olarak dünyayı yönetecekler“. Şimdilik bu kadar fantazi yeter diyorum ve bu dili geride bırakarak devam ediyorum çünkü buradan da görebileceğiniz gibi bu dil hakkında Vietnam, Portekiz ve Brezilya dışında dünyanın geri kalanının pek bir fikri yok.
%21 ile Java birinci ve yükselişini sürdürüyor gibi.
“Google Knows Everything” Ben
Bu listenin doğruluğuna olan güvenim burada sarsılıyor ve biraz daha açılıyorum…
O’Reilly Research‘ün yaptığı araştırma daha inandırıcı geliyor. Sonuçlarını dayandırdıkları kaynak ise bilgisayar kitapları satışları. Gayet makul (download edilenleri de ekleyebilselerdi daha doğru bir sonuç elde edilirdi ancak bu da yeter).
Bu grafiğe bakarak Java’nın açık farkla lider olduğunu doğrulayabiliriz. “Bir önceki listeyi de göz önünde bulundurarak”. Bu grafikteki son tarih 2006 yılının üçüncü çeyreği. Tabi bu tarihten sonra bazı değişimler olmuştur orası kesin. Tahminim Java’nın sabit kaldığı C#’ın bir miktar yükseldiği Visual Basic’in bir miktar düştüğü ve diğerlerinin hemen hemen aynı devam ettiği yönünd. Ancak burada tahmin yeteneğimizi yarıştırmıyoruz değil mi?
Ayrıca yine önceki listeye ve bu grafiğe bakarak “Ruby” nin dikkat çektiğini söyleyebiliriz. Ruby programlama dili Ruby On Rails projesinin ortaya çıkmasından sonra popularite kazanmış olan çok yüksek seviyeli (kötü birşey) ve bence geleceği olmayan bir web programlama(*) dilidir.
Peki ya sonra. Yani bu 2006′dan sonra ne oldu ve size olan önerilerim nedir?
Evet, önce biraz daha grafik ve döküman….
Biraz daha standartize olalım ve google trends kullanalım.
-İlk grafikte tüm dünyada c#, visual basic, c++ ve delphi dillerinin kıyaslamasını yapıp.
-İkinci grafikte tüm dünyada yukarıdaki dillere Java’yı da ekleyip bir kıyaslama yapıp.
–Üçüncü ve dördüncü grafiklerde ilk ikisinin yanlızca Türkiye içindeki kıyaslamalarını yapacağız.
1-Tüm dünyada c#, visual basic, c++ ve delphi kelimelerinin aranma istatistikleri. (*)
| c# | visual basic | c++ | delphi |
Evet, yukarıdaki grafiğe bakılırsa c++ hala o eski popularitesini koruyamıyor olsa da halen bu diler arasında ençok aratılan ikinci. C# ise .Net ve Microsft’un desteğini de arkasına almış olmasına rağmen beklenen yükselişi gösterememiş. Ancak yinede birinci sırada. Son aylardaki ufak düşüşün sebebi ise muhtemelen belirsiz (benim bir bilgim yok en azından).
Bunların yanı sıra Visual Basic ve Delphi temel kullanıcı kitlesini koruyor gibi gözüküyor. Ancak Visual Basic Microsoft’un .Net ile gelen tüm desteklerine rağmen eski günlerine dönememiş
Şimdi sıra ikinci grafikte.
2-Birinci grafiğe “Java” kelimesinin istatistiği de ekleniyor. (*)
| java | c# | visual basic | c++ | delphi |
Sanırım “Java”‘yı neden ayırdığımı tahmin etmişsinizdir, diğerlerini yaklaşık 7 ye katladığı için ![]()
Bunun hakkında çok şey yazıp söylemeye gerek yok. Demişler ya “Bir resim bin söze bedel”.
3 ve 4-İlk iki istatistiğin yalnızca Türkiye bölgesi ile sınırlandırılmış halleri (*, *)
| c# | visual basic | c++ | delphi |
| java | c# | visual basic | c++ | delphi |
Bu grafiklere dayanarak söyleyebiliriz ki neredeyse dünyanın ortalamasıyız ![]()
Tabii Delphi ve Visual Basic kullanımında daha yukarılardayız (ya da diğerlerinde aşağıdayız). Ancak önemli olan standartlara yakın olmamız. Bunun bize ne faydası olur peki? Şöyle;
Belli bir bilgi birikimine sahip bir Türkiye’li programcı hem Türkiye’de hem de dünyanın neredeyse heryerinde o bilgi birikimi ile iş bulabilir, fayda sağlayabilir. (Brezilya’lılar gibi değiliz yani
).
Birde bu alanlara web programlamayı da katarsak (ayrıca olmasını daha uygun gördüm) tam süper olacak;
Popularite den giriş yapmışken bu kısımda da yanlızca PHP ve ASP.Net i kıyaslayacağım. Bu alanda Türkiye ve dünya geneli arasında neredeyse hiç bir fark olmadığı için yanlızca dünya geneli grafiğini veriyorum. (*)
Görüldüğü gibi PHP, linux gibi esnek bir ortamın getirdiği her türlü ekonomik, pratik ve stratejik avantajı kullanıp asp.net’e adeta fark atmış durumda. Web programlama alanında drum bu.
………
Sıra geldi “SONUÇ” kısmına. Hmm,
Bir düşündümde ben bir sonuç yazmayacağım. Çünkü herşey zaten yukarıda anlatılıyor. Çok açık olmasa da…
Firefox kısayolları
by CanerD on Oca.09, 2008, under Genel, Yazılım
Günün birinde bir ihtiyaç sonucu baktımda, Firefox için güzelce yazılmış bir türkçe kısayol dökümanı bulamadım. Sonuç olarak ben derlemeye karar verdim.
O kadar iyi düşünülmüş ki, bu kısayolları kısa bir süre kullandıktan sonra refleksif olarak davranmaya başlıyorsunuz. Yüzyılın icadının kısayolları için düzenlediğim bu Türkçe dökümanı istediğiniz gibi kullanın, kopyalayın, yapıştırın.
Mozilla Firefox klavye kısayolları;
Komut: Kısayol
- Genel
- Geri: Alt+Sol-Yön veya Backpace
- İleri: Alt+Sağ-Yön veya Shift+Backspace
- Açılış Sayfası: Alt+Home
- Dosya Aç: Ctrl+O
- Yenile: F5 veya Ctrl+R
- Yenile (cache‘i yeniden yazarak): Ctrl+F5 veya Ctrl+Shift+R
- Dur: Esc
- Sayfa Üzerinde
- Sayfanın Sonuna Git: End
- Sayfanın Başına Git: Home
- Aşağı Sayfa: Page-Down veya Space
- Yukarı Sayfa: Page-Up veya Shift+Space
- Sonraki frame: F6
- Önceki frame: Shift+F6
- Kaynak Kodu: Ctrl+U
- Yazdır: Ctrl+P
- Sayfayı Farklı Kaydet: Ctrl+S
- Yazı Boyutunu Küçült: Ctrl+-
- Yazı Boyutunu Büyüt: Ctrl++
- Yazı Boyutunu Orjinal haline getir: Ctrl+0
- Düzenleme
- Kopyala: Ctrl+C
- Kes: Ctrl+X
- Sil: Delete
- Yapıştır: Ctrl+V
- İleri Al (Geri Alınanı): Ctrl+Y
- Tümünü Seç: Ctrl+A
- Geli Al: Ctrl+Z
- Ara
- Sayfa İçinde Ara: Ctrl+F
- Sonraki Bul: F3 veya Ctrl+G
- Link Ara: ‘
- Hızlı Ara: /
- Önceki Bul: Shift+F3
- Web*‘de Ara: Ctrl+K veya Ctrl+E
- Pencereler & Tablar
- Tabı Kapat: Ctrl+W veya Ctrl+F4
- Pencereyi Kapat: Ctrl+Shift+W veya Alt+F4
- Tabı Sola Taşı (odak tabda iken): Ctrl+Sol-Ok veya Ctrl+Yukarı-Ok
- Tabı Sağa Taşı (odak tabda iken): Ctrl+Sağ-Ok veya Ctrl+Aşağı-Ok
- Tabı Başa Taşı (odak tabda iken): Ctrl+Home
- Tabı Sona Taşı (odak tabda iken): Ctrl+End
- Yeni Tab: Ctrl+T
- Yeni Pencere: Ctrl+N
- Sonraki Tab: Ctrl+Tab veya Ctrl+Page-Down
- Adresi Yeni Tabda Aç: Alt+Enter
- Önceki Tab: Ctrl+Shift+Tab veya Ctrl+Page-Up
- Son Kapatılan Tabı Geri Getir: Ctrl+Shift+T
- Tabı Seç (1 to 8): Ctrl+(1…8)
- Son Tabı Seç: Ctrl+9
- Araçlar
- Tüm Tabları Favorilerime Ekle: Ctrl+Shift+D
- Bu Sayfayı Favorilerime Ekle: Ctrl+D
- Favorilerim: Ctrl+B veya Ctrl+I
- Kursörlü Browser: F7
- İndirilenler: Ctrl+J
- Geçmiş: Ctrl+H
- Kişisel Bilgileri Sil: Ctrl+Shift+Del
- Diğer
- Adresi .com Olarak Tamamla: Ctrl+Enter
- Adresi .net Olarak Tamamla: Shift+Enter
- Adresi .org Olarak Tamamla: Ctrl+Shift+Enter
- Seçili Otomatik Tamamlamayı* Sil: Del
- Tam Ekran: F11
- Adres Çubuğunu Seç: Alt+D veya F6 veya Ctrl+L
- Arama Motoru Seç veya Düzenle (odak arama çubuğunda iken): Alt+Yukarı-Ok veya Alt+Aşağı-Ok veya F4
Mozilla Firefox fare kısayolları;
Komut: Kısayol
- Geri: Shift+Aşağı-Scroll
- Tabı Kapat: Tab üstüne orta tıklama
- Yazı Boyutunu Küçült: Ctrl+Yukarı-Scroll
- İleri: Shift+Yukarı-Scroll
- Yazı Boyutunu Büyüt: Ctrl+Aşağı-Scroll
- Yeni Tab: Tab çubuğuna çift tıklama
- Tabı Odak değiştirmeden aç: Ctrl+Sol-Tıklama veya Orta-Tıklama (link üzerine)
- Açılan Taba odaklan: Ctrl+Shift+Sol-Tıklama veya Shift+Orta-Tıklama (link üzerine)
- Yeni Pencerede aç: Shift+Sol-Tıklama
- Yenile (cache‘i yeniden yazarak): Shift+Yenile-Tuşu
- Sayfayı Farklı Kaydet: Alt+Sol-Tıklama
- Satır Satır Kaydır: Alt+Scroll
*tab: sekme
*scroll: farenin tekerleği ile yapılan kaydırma eylemi
*odak: focus
Steganografi
by CanerD on Oca.09, 2008, under Özel
İletişimde gizlilik her insan için bir nebze önemli olmakla beraber, dijital ortamda yapılan haberleşme ve iletişimde gizliliğin önemi son yıllarda çok daha artmıştır. Özellikle istihbarat ve askeri alanlarda kullanılan bir bilgi gizleme yöntemi olan steganografi‘nin, basitleştirilmiş yazılımlar sayesinde herkes tarafından kullanımı kolaylaştırılmıştır.
Bu yöntemin dijital ortamda kullanımına yönelik bazı teknikler, ve uygulamalar hakkında nacizane araştırmalarımı paylaşmak isterim
Steganografi, eski Yunanca’da “gizlenmiş yazı” anlamına gelir ve bilgiyi gizleme (önemli: şifreleme değil) bilimine verilen addır. Steganografi’nin şifrelemeye göre en büyük avantajı bilgiyi gören bir kimsenin gördüğü şeyin içinde önemli bir bilgi olduğunu farkedemiyor olmasıdır, böylece içinde bir bilgi aramaz (oysa ki bir şifreli mesaj, çözmesi zor olsa bile, gizemi dolayısıyla ilgi çeker). (http://tr.wikipedia.org/)
Saklanmak istenen bilginin, saklı olduğunun farkedilmemesi bilginin güvenliği açısından hayati önem taşır. Bu sayede üçüncü şahıslar bilginin aranmasında çaba göstermez veya nereye bakılması gerektiğini bilemezler.
Örnek olarak;
Benim için futbolda önemli olan centilmenlik
ve dostluktur. Hedefim illa ki kazanmak
falan değildir. Ben sadece kendi reklamını düşünen
kişiliğe sahip olsam başka olurdu. Ben net
birisiyim arkadaş. Takımım kazanırsa mal-
zemecisine kadar mutlu oluruz. Ben de sporcu
varlığımı geliştiririm. Hakemlere baskı uygulamak
sportmenliğe yakışmaz. Fair-play için mücadele
gerekirse onu da yaparım. Medyayı da bağ-
rıma basmışım, spor uğruna gülmüşüm ve ağ-
lamışım, kafam rahat!
Yukarıdaki yazıya bakıldığında ilk bakışda bir anormallik gözlenmeyebilir (biraz var ama olsun o kadar :l ). Birde satırları birer atlayarak okuduğumuzda ilk düşüncenin tam tersini belirten bir yazı karşımıza çıkıyor.
Bu gibi örneklerle daha önceden karşılaşmış olabilirsiniz. Zaten steganografi tarihinin en az 3000 yıl önceye dayandığı söylenir. Geçmiş döneme ait bazı staganografi tekniklerine örnek olarak;
- Eski Yunanistan’da, insanlar mesajları tahtaya yazıp üzerini mumla kaplarlardı. Böylece cisim kullanılmamış bir tablete benzerdi öte yandan mumun eritilmesiyle birlikte içindeki gizli mesaj okunabilirdi.
- Heredotus’un bir hikayesine göre Pers saldırısının öncesinde saçları traşlanan bir kölenin kafasına yazılan uyarı mesajı, saçlanırın uzaması sayesinde saklanmıştır. Bu sayede, mesaj dikkat çekmeden gerekli yere ulaşabilmiş, ulaştığında da kölenin saçları tekrar kesilerek uyarı okunabilmiştir.
- İkinci Dünya Savaşı sırasında, New Yoruk’taki bir Japon ajanı (Velvalee Dickinson) oyuncak bebek pazarlamacısı kılığı altında saklanmaktaydı. Bu ajan, Amerikan ordusunun hareketlerini bebek siparişi içeren mektuplar içine saklayarak Güney Amerika’daki adreslere gönderiyordu.
- Özellikle 1960′larda mor ötesi boya ile yazı yazabilen sprey ve kalemler moda idi. Bu kalemlerin yazdığı yazılar, sadece bir mor ötesi ışıkla görülebiliyordu.
- Ron Howard’ın Akıl Oyunları (A Beautiful Mind) filminde, John Nash gazete ve dergilerde gizli mesajlar aramaktadır.
Bu gibi analog yöntemlerin dışında günümüz teknoloji ve imkanlarına dayanarak geliştirilmiş dijital steganografi teknikleri ise çok daha gelişmiş ve daha az alanda daha fazla bilginin gizlenmesine imkan vermektedir.
Dijital ortamda bu teknik kullanılırken medya dosyası (resim, ses, video) içine “lsb” Least Significant Bit ( En az öneme sahip bit) ler kullanılır ve bunlar değiştirilerek oluşturulan dosyalarda kayda değer ve/veya gözle görülür bir değişme olmaz.
LSB
8 bitlik bmp formatlı resim dosyaları ikili sayı sisteminde her pixel için 256 renkden oluşan bir byte içerir. İkili sayı sistemine göre 10110111 sayısını ele alalım. Bu sayıyı onluk düzene getirdiğimizde 183 elde ederiz. Sondaki bit in 1 veya 0 olması bu değeri çok fazla değiştirmeyecektir. Sondaki bit değerimiz eğer 0 olsaydı bu değer 182 olacak ve renk üzerinde gözle görülecek büyük bir değişikliğe neden olmayacaktı. İşte bu sondaki bitimiz LSB olarak adlandırılır. Bu bitler yerine bizim gireceğimiz datanın verileri girilirse eğer datamız gizlenmiş olur.
Bunun nasıl yapıldığına gelince… 24 bitlik bir resim içerisine A harfini yerleştirelim.
24 bitlik resmin renk kodlarının aşağıdaki şekilde olduğunu varsayalım
(00100111 11101001 11001000) [2^8*2^8*2^8; bitkonstelasyonunun değeri:1817400]
(00100111 11001000 11101001) [2^8*2^8*2^8; bitkonstelasyonunun değeri:1817400]
(11001000 00100111 11101001) [2^8*2^8*2^8; bitkonstelasyonunun değeri:1817400]
Bu şekil 3 pikselden oluşmakta . A harfinin de binary karşılığını (10000011) olarak verelim. Şimdi her pikseldeki LSB nin yerine bizim A harfimizdeki bitlerimizi yerleştirelim.
(00100111 11101000 11001000) [2^8*2^8*2^8; bitkonstelasyonunun değeri:1809600]
(00100110 11001000 11101000) [2^8*2^8*2^8; bitkonstelasyonunun değeri:1763200]
(11001000 00100111 11101001) [2^8*2^8*2^8; bitkonstelasyonunun değeri:1808313]
Görüldüğü gibi renk kodlarının arasında 6000-54000 arası bir fark oluşmuştur. Bu fark 19 milyon renk sayısı arasında çok küçük bir değer olarak kabul edilebilir ve bu farka sahip iki resim arasında insan gözünün farkedebileceği bir zıtlık oluşmaz. Gizlenen verileri kripto teknikleriyle daha güvenli hale getirmek mümkündür.




