bildirgec.org

warnsdorff hakkında tüm yazılar

kodaman.org’a hoş geldiniz.

admin | 13 November 2008 04:57

Bu siteyi Nokta ve pilli olarak, yazılım geliştiricilerinin başlarından geçen kan, ter ve gözyaşı dolu maceraları paylaşabilecekleri ve birbirlerine yardımcı olabilecekleri bir yer olarak hayal ettik.

Yazılımcılık zor bir meslek. Dükkân asla kapanmıyor, sabahlamalar hiç bitmiyor. Umuyoruz, bu sitedeki kaynaklar sayesinde kümülatif olarak binlerce sabahlama seansından kurtulacağız.

Her programlama diline, işimize yarayacak her türlü bilgiye açığız.

Nasıl yazılar bekliyoruz?
Kodaman.org’a yazı gönderirken lütfen birçok insana faydalı olacak bir kaynak hazırlıyor olduğunuzu göz önünde bulundurun. Yazıların ağırlığının bu yönde olmasını rica ediyoruz. Çok önemli haberlere de açığız, ama “php 6.0 çıktı” haberi yerine “php 6.0’yı denedim. Şu yönleri ile 5.0’dan farklı” konulu yazıları tercih ederiz.

MySQL İle Memcache Kullanımı

admin | 11 November 2008 22:59

Bilindiği gibi Php ile Memcache kullanılarak veritabanı üzerinden çok fazla yük alınabiliyor. Ayrıca Memcache’nin dağılabilir yapısı bize birçok kolaylık sağlayabiliyor. Örneğin çoklu web sunucularında tek bir Memcache ile veri paylaşımı yapılabiliyor veya çoklu Memcache sunucuları kullanılarak daha sağlam bir cache yapısı kurulabiliyor. Memcache’nin kullanımında başka bir kolaylık sağlayabilecek şey ise MySQL’den direk Memcache’ye erişebilmek, veri okuyup saklayabilmek. Bu yazıda bu işlemin nasıl olduğunu ve kendi yaptığım çeşitli performans testlerini anlatacağım.

fibonacci kod yazarsa!

admin | 10 November 2008 09:03

2000’lerde programlama giderek sanat olmaktan çıkıyor, genellikle hazır kütüphaneleri, api’leri kullanmak, kod parçalarını sağdan soldan alıp birleştirmek, havalı kelimeleri yanyana kullanmak (tdd, bdd, grid computing vs.. ) programlama olarak düşünülüyor. giderek programlama zanaat-vari bir iş olmaya başlıyor.

ne demek istediğimi anlatmak için şöyle bir örnekten gidelim; fibonacci sayılarını duymuşsunuzdur, “- 0, 1, 1, 2, 3, 5, 8, 13, 21,..” diye giden sayılar… matematikçi olmadığımız için teorisi ile ilgili çok detaya girmeye de gerek yok-zaten gir deseniz giremem-, ama (altın oranla ilgisi nedeniyle) genellikle çizim işlerinde kullanılır. tabii çizim dendiğinde aklımıza ilk gelen oyun programlaması olacaktır. kısaca “bir işlere” yaradığını biliyoruz. programcı olarak bizi ilgilendiren kısmı ise uygulaması.

formülü şöyle ;

Farklı bir tasarım mantığı

admin | 08 November 2008 13:28

“Mysql performansını ve sayfaların açılış sürelerini daha çok nasıl hızlandırırım” diye kafa yorduğum zamanlarda, kendim için geliştirdiğim bir tasarım mantığını sizlerle paylaşmak istedim. Bu mantık aslında çok basit gibi görünse de ciddi bir performans artışı sağlıyor ve gereksiz yere mysql select sorgularından da bizi kurtarıyor.

Mantığın bir prensibi var. O da; mysql tablosunda bulunan bir satırda yapılan değişikliği, başka sayfaya geçtiğimde tekrardan mysql Select sorgusu atmadan gerekli veriye ulaşmaktı.

KDE 3.6 genel olarak niye yavaş?

admin | 07 November 2008 04:50

Linux kullandığım süreçlerde sıkı bir kde kullanıcısı olmama rağmen diskden okuma, geç yükleme gibi yavaşlıklarına dikkat etmeden geçemiyordum. “KDE’nin standart kum saati animasyonunu değiştireyim, daha güzel bir animasyon yapayım” diyerek yola çıktığımda karşılaştığım kod, kde’nin açılıştaki yavaşlığını göstermek için yeterli oldu.

KDE’nin svn den gerekli kod bloğunu buldum.

1
2
3
4
5
// setup animation frames
for (int i = 1; i < 11; i++)
{
frames.append(new QPixmap(locate("data", "kicker/pics/disk" + QString::number(i) + ".png")));
}

Yüksek Performanslı Sunucu Yazılım Mimarisi ve Epoll

admin | 07 November 2008 01:55

Geçen yıllar süresince internet dünyasında popülasyonun artmasıyla birlikte akıllara takılan soruların sayısı da arttı. Bunlardan en can alıcı olanı ise “bu kadar kullanıcıya daha az maliyetli yapılarla nasıl hizmet verilecek?” sorusu idi. Mali konulara takılmadan düşündüğümüzde bile bu kadar sunucuyu nereye koyacağımızı bilemiyorduk. Örneğin standart programlama mantığında birbirinin mantıksal kopyaları olan birden fazla değişkeni denetlemek için bir loop kurulur ve içerisinde her seferinde koşul sağlanmış mı diye denetlenmesi gerekir. Bu da fazlasıyla işlem yükünü beraber getirmekte. Kabaca örnek vemek gerekirse; bir FTP sunucuyla hizmet verdiğinizi düşünün. Protokol içerisindeki gelen giden paketleri bir şekilde yorumlamanız gerekir. bu iş için socket açılır. 1 kullanıcı bağlandı, bağlantı socketi denetlenmeye başlandı, iş dosya almaya geldi ve socket üzerinden veri akışı sağlandı. Buraya kadar herşey normal. peki ya 1 değil 10,000 kullanıcı dosya transferi gerçekleştirmek isteseydi ne yapacaktık? Sonuç düz mantıkla yine meşhur loop mantığına gidiyor. Bir loop açılıyor ve işlemcinin sınırları zorlanarak açılan soketler denetlenmeye çalışılıyor. Diyelim ki sorunumuzu bu şekilde aştığımızı düşündük ama madalyonun diğer tarafında sunucunun asıl yapması gereken işler var. Diske erişim, yetki denetimi, kota denetimi, dosya yazma/okuma. Bukadar işi birarada yapabilmek gerekliydi ve yapıldı. ama oldukça maaliyetli ve pratik olmayan çözümlerle yapıldı. Sunucuyu ve işlemci gücünü boşa harcadık. Peki ya işletim sistemi bize yardımcı olamaz mıydı? evet olmalıydı ve oldu. Hadi biraz daha derinlere inelim.

Linux altında C ve Linked List

admin | 01 November 2008 01:35

Öncelikle Linked List’lerin ne olduğunu inceleyelim. Linked Listler, verileri array haricinde birbirine pointer’lar ile bağlayarak kullandığımız yapılardır. Pointer kullanılan her dilde linked list’lerin yeri vardır ve temel yapı taşlarından birisidir. Ben cache işlemleri için circular linked listler, queue işlemleri için de doubly linked listler kullanmayı tercih ediyorum.

Linux altında program yazarken, ne tarz bir proje olursa olsun, queue işi için ya da basitinden bir veri tutma ya da hafızada saklama işlemlerinde array kullanmıyorum. Daha hızlı olsa bile “ciddi optimizasyon gerektirmeyen” kod bloklarında, eski DOS’dan kalma alışkanlıkla, data segment’in şişmesi işime gelmiyor.