Statik Site Yaratıcı: Fil

Uzun bir süredir Wordpress'i terk etmeyi düşünüyordum. Bu yüzden uzunca bir süredir alternatif arayışındayım.

Neden Wordpress istemiyorum?

  • PHP ile bir şeyler yazmak zevkli değil.
  • Hosting ihtiyacı: Yazdıklarınızı paylaşmak için para ödemek hoş değil. (Benim kendi VPS'imi kendimin yönettiğimi de düşünürsek) yedek almak, sunucunun güncellemeleri, türlü türlü konfigürasyonlar yapmak çok da mantıklı değil.
  • Çorba gibi veritabanı
  • Karmakarışık bir API: Plugin geliştirmeyi denediğimde enerjimin boşa gittiğini düşünmüştüm.

Bu nedenle alternatifleri araştırmaya başladım. Medium, Blogger, Wordpress.com gibi alternatiflere bakmadım çünkü en ufak detaya kadar her şeyi özelleştirebiliyor olmak (üretilen web sayfasının %100'ü üzerinde söz sahibi olmak) benim için çok önemliydi.

Modern Web Teknolojileri Sunumu

modern-web modern-web  

4 Ekim 2013 Cuma günü İYTE'de yapmış bulunduğumuz Modern Web Teknolojileri sunumuna aşağıdaki buradan erişebilirsiniz.

Kullanıcıların bir web sitesinden beklentisi eskiden günümüze oldukça değişmiştir. Günümüzde bir web sitesinin hızı, kullanım kolaylığı, göze hoş gelmesi ve kullanım deneyiminin iyi olması önem taşımaktadır. Gelişen teknoloji ile birlikte, tarayıcılar sadece önüne gelen sayfayı kullanıcıya gösteren birer basit program olmaktan çıkmış ve dinamik "uygulamalar" çalıştıran teknolojileri haline gelmişlerdir.

Böyle bir dünyada, bir web sitesi nasıl yapılır? Frontend ve backend ne demektir? Frontend enginnering diye bir alan neden vardır ve neden önemlidir? Neden önüne gelen (adam gibi) site yazamaz? Bir web sitesinin temel bileşenleri nelerdir? Nereden başlanır? Beklentiler neler olmalıdır? Frontend mühendisliğinin sınırları nelerdir? Javascript HTML5 ve CSS3 ile neler yapılabilir?

Bu soruların cevabı sunumda bulunabilir.

Scala'da Implicit Conversion'lar

scala-logo scala-logo   Bu aralar Scala'ya merak sardım.

Diyelim program yazıyorsunuz. Bir metot çağıracaksınız ve A tipinde bir veri istiyor. Sizde ise A'ya dönüştürülebilir B tipinde bir veri var.

Normalde ne yaparsınız? B'yi A'ya çeviren bir metot yazarsınız ve önce bunu çağırarak verinizi A tipine dönüştürürsünüz.

Şunun gibi:

public A covertBtoA(B variable) {
  ...
  return toA;
}
public void somethingWithA(A variable) {
  ...
}
B myVariable = ...something...;
somethingWithA(convertBtoA(myVariable));

Bu dönüşümü çeşitli yerlerde sürekli yaptığınızı düşünün. Sonra bunu otomatikleştirebileceğinizi düşünün.

Genetik Algoritmalar ile Knapsack Probleminin Çözümü

genetik-algoritma genetik-algoritma   Geçen sene Yapay Zeka dersinde genetik algoritmalar ile uğraşırken bizden genetik algoritmalar ile Knapsack problemini çözmemiz ve üç farklı çaprazlama (crossover) türü için genetik algoritmanın nasıl sonuçlar ürettiğinin analizinin yapılması istenmişti.

Knapsack Problemi

Öncelikle bilmeyenler için Knapsack problemini hızlıca açıklayayım:

Belirli bir limiti olan bir çantanız var. (Örneğin 15) Elinizde çeşitli büyüklük ve değerlerde maddeler bulunuyor. (Örneğin altın, genişlik 5, değer 10; tahta, genişlik 6, değer 1…) Çantanın kapasitesini aşmamak koşuluyla çantaya koyabileceğiniz maddelerin toplam değeri en fazla ne kadar olabilir?

Yamyamlar & Misyonerler

canibali canibali   Yamyamlar ve Misyonerler, bir çoğumuzun bildiği “Kurt, kuzu, saman, nehir” bilmecesinin bir benzeridir.

Problem

Bilmece şu şekildedir:

Nehrin bir kenarında 3 tane misyoner, 3 tane de yamyam bulunmaktadır. Bunlar bir kayık ile nehrin diğer tarafına geçecektir. Ancak bu kayık aynı anda en fazla iki kişi taşıyabilmektedir ve kayığın hareket edebilmesi için en az bir kişinin kayıkta olması gerekmektedir. Nehrin iki tarafı için ayrı ayrı, eğer yamyam sayısı misyoner sayısından fazla olursa yamyamlar misyonerleri yemektedir. Bu topluluk hiç kayıp vermeden karşıya nasıl geçer?

Çözüm

Bu problem üzerinde geçen sene Yapay Zeka dersinde durmuştuk. Problemin BFS (Breadth First Search) arama yöntemi ile çözümünü kodlamıştım.