Git ve Github'a başlangıç

Bir arkadaş mail yoluyla Git ve Github kullanımıyla ilgili bir yazı rica etti, hazır vaktim varken hazırlayayım istedim. Bu yazının hedef kitlesi git ve github kullanmaya tamamen sıfırdan başlayacak kişiler olacak. Dolayısıyla, sadece en temel konulardan bahsedeceğim. Zaten kendim de ileri seviye bir git kullanıcısı değilim. Ancak, günlük ihtiyaçlarımı idare edecek kadar git kullanabiliyorum. Yine de, git ve github konusundaki deneyimlerimin, bu yazının ihtiyaçlarını karşılamak için yeterli olacağına inanıyorum. Başlamadan önce değinmek istediğim bir diğer nokta da, özellikle github'la birlikte git nasıl kullanılır ona değineceğim. Hatta bazen, sadece github'a özgü özelliklere de değineceğim. Dolayısıyla, eğer github kullanmak istemiyorsanız, bu yazının bazı bölümleri sizi ilgilendirmeyecektir, baştan belirteyim.

Devamını oku…

Python Çalışma Rehberi

Bir konuyu öğrenmeye başlamanın kendine göre zorlukları vardır. Bunların en başında, çalışma planına karar verilmesi gelir. Özellikle, internettin kaynak kaynadığı şu zamanlarda, asıl sıkıntı kaynak bulmakdan öte, hangi kaynakların hangi sırada kullanılması gerektiği sorusudur. Eğer siz de benim gibi, bol bol internetten birşeyler öğrenmeye çalışan bir insansanız, muhtemelen bir öğretmenin eksikliğini hissetmişsinizdir. Onca materyalin içerisinde size rehberlik edip yol gösterecek kimse yoktur ve belki de boğulduğunuzu hissedersiniz.

Devamını oku…

Python ile Fraktal Çizme

Ne zamandır fraktal geometri meraklısı bir insanım. Python'da turtle kütüphanesini olduğunu farkedince (bunca zamandır nasıl görmediysem...) ilk iş aklıma fraktal çizmek geldi. Blog'dan da paylaşayım istedim.

Devamını oku…

Threading mi, yoksa multiprocessing mi kullanmalıyım

Merhaba,

Uzun süredir blog atıl kalmıştı, kısa bir yazı yazayım istedim.

Python'a yeni başlayan arkadaşlarda, threading ve multiprocessing konusu kafa karıştırıyor. Kafa karıştıran iki önemli husus var;

  • Threading ve Multiprocessing mantığı nedir?
  • Hangisi ne zaman tercih edilmelidir?

Bununla birlikte, birkaç koldan çalışan işlemler arasında tesanüd nasıl sağlanır, onu da bilmek gerekiyor.

Devamını oku…

Python Metot Türleri

Python sınıflarında, temel olarak 3 farklı şekilde metot tanımı yapılabilir.

  • Örnek (Instance) metotları
  • Statik (@staticmethod) metotlar
  • Sınıf (@classmethod) metotları

Bunların arasındaki başlıca fark, aldıkları argümanlardır. Örnek metotlarına, ilk argüman olarak, objenin kendisine bir referans gönderilir. Bu argümana, geleneksel olarak self adı verilir. Statik metotlar, kendisini çağıran sınıf veya örnek hakkında herhangi bir bilgiye sahip değildir. Bunlar, işlevini kaybetmeden, sınıf dışında da aynı şekilde tanımlanabilir. Sınıf metotları ise, otomatik olarak, kendisini çağıran sınıfa veya örneğin sınıfına bir referans alır. Bu argümana da geleneksel olarak cls adı verilir.

Devamını oku…

Devlet Siteleri

Ben genelde çok şikayet eden bir insan değilim. Devlet sitelerinin de, devlet sitesi olduğu düşünüldüğünde, yüksek kaliteli siteler beklemek doğru olmaz. Ama yine de, bunların ufak tefek sıkıntıları birleşip, kullanıcıyı yıldırabiliyor.

Sık sık kullanmaya ihtiyaç duyduğum devlet sitelerinde, muhakkak en ez bir özellik bozuk, sinir bozucu, kötü tasarlanmış veya nasıl çalıştığı belli değil. Devlet siteleri, kullanıcı memnuniyetini ya göz ardı etmiş, ya da benim dikkatimi çeken şeyler, bu sitelerin kullanıcı memnuniyeti standardları içinde yer almıyor.

Devamını oku…

Evrimsel Algoritmalar

Ne zamandır, evrimsel algoritmalar ve genetik algoritmalarına göz atmak istiyordum.. Bugün biraz fırsat bulup, evrimsel algoritmalara göz attım.

Evrimsel algoritma, bana biraz breadth-first search algoritmalarını andırdı. Genel gidişat şu şekilde:

  • Rastgele bireylerden ilk popülasyonu oluştur
  • Her bireyin, aranan sonuca benzerliğini test et
  • En iyi bireylerden, mutasyon ve eşleşme ile yeni bireyler oluştur.
  • En iyi bireylerden yeni popülasyon oluştur.
  • Yeterince iyi bireyler elde edene kadar tekrarla

Bu tür algoritmaları genelde arama uzayının çok büyük olduğu durumlarda kullanıyorlar. Daha önce gördüğüm algoritmalara nazaran, doğru sonuca bir hayli hızlı yaklaşıyor, ancak, bazı sıkıntılar da yaşadım, bunlardan birazdan bahsedeceğim.

Devamını oku…

Exact Cover, Dancing Links ve Sudoku Çözme

Donald Knuth tarafından geliştirilmiş olan "Dancing Links" algoritması, "exact cover" problemi ve bu probleme çevirilebilen sudoku gibi problemlerin çözümü için bir hayli etkin bir yöntem sunuyor. Bu yazıda, "exact cover" problemi, "dancing links" algoritması, sudoku probleminin exact cover problemine dönüştürülmesi konularından bahsedeceğim. Ayrıca, Ali Assaf tarafından "Algorithm X in 30 lines!" yazısında bahsedilen yönteme kısaca değineceğim.

Devamını oku…