Facebook, -şöhreti, getirdikleri ve hakkındaki iddialar bir yana- sonuçta bir yazılım… Bu kadar çok kullanılan bir uygulamanın arkaplanında ve teknik altyapısında neler var?

Önce birkaç istatistik… (Facebook sayfasından)

  • Siteye ortalama her gün 250 bin yeni kayıt oluyor.
  • Ayda ortalama 65 milyar sayfa gösterimi var.
  • Kullanıcıların en az yarısı her gün giriyor.
  • Dünya’nın en çok kullanılan fotoğraf paylaşım uygulaması… En yakın üç rakibinin toplamından daha fazla resim gösterimi yapılıyor.
  • Facebook platformunu kullanan 7 binden fazla uygulama yazılmış. Her gün yüzden fazla yeni uygulama ekleniyor.

Teknik altyapıya gelince…

  • Neredeyse tamamen açık kaynaklı uygulamalar kullanılmış.
  • Yazım dili PHP. Arka planda çalışan bazı uygulamalar Java, Python ve Perl kullanıyor. Ayrıca C++ uyumlu uygulamalar için gcc ve Boost kütüphaneleri kullanılmış. Yine, c++ uygulamalarının daha sağlıklı çalışması için kendileri phpembed adlı bir kütüphane yazmışlar.
  • Sunucularda Linux yüklü. Web server olarak Apache kullanılıyor. Dünyanın her yerinde hızlı çalışması için içeriğin çoğunu Akamai sunucularında tutuyorlar.
  • Sistemde 2 milyardan fazla fotoğraf dosyası yüklü. Bunlar diskte yaklaşık 200 terabyte yer tutuyor. Kullanıcılar her hafta 80 milyon civarında resim yüklüyor. Her fotoğraf için 4 ayrı boy tutulduğundan, bu 300 milyondan fazla resim dosyası demek. Oluşan yoğunluğu karşılayabilmek için, yüklenen fotoğrafları işleyen bir çok sunucu var. Ayrıca bir grup sunucu, işlenmiş fotoğrafları Akamai’ye gönderiyor. Bazı fotoğrafları tutmak üzere kendi dosya sunucuları da var.
  • Veritabanı olarak MySQL kullanılıyor. Birbirine bağlı binlerce MySQL veritabanları var.
  • Veritabanından bilgi çekmek çok yavaş olduğu için cache (önbellek) mekanizması kullanılıyor. memcached isimli açık kaynaklı uygulamayı kendi yazdıkları kodlarla geliştirmişler. (detaylı bilgi)
    • Sitenin neredeyse belkemiği bu uygulama. Kullanıcı profillerini, arkadaş bilgilerini, uygulamaları hep önbellekte (RAM’de) tutuyor ve çok hızlı gelmesini sağlıyorlar.
    • 400’den fazla memcached sunucusu var.
    • 5 Terabyte’dan fazla RAM önbellekleme için kullanılıyor.
    • memcached sorgularının daha hızlı çalışması için TCP yerine UDP portunu kullanmışlar.
    • Ayrıca APC kütüphanesini kullanarak sayfa görüntülemeyi 30 kat hızlandırmışlar.
  • Kendi yazdıkları site içi arama motorunu kullanıyorlar. Ayda 1 milyara yakın arama yapılıyor. Önbellek için 2 terabyte civarında RAM ayrılmış. Ortalama sonuç süresi 100 milisaniye civarında imiş.
  • Yazdıkları kodu yerinde debug etmek için phpsh adlı bir komut satırı kütüphanesi yazmışlar. Ana bilgisayara yükleyip bağlandığınızda komut satırından php kodları yazıp çıktısını görüyorsunuz.
  • Versiyon yönetimi için Subversion ve git kullanıyorlar.

Yani, Facebook olmak istiyorsanız altyapınızı da ona göre kuracaksınız.

Özellikle Hollywood filmlerinde izlemekten rahatsız olacağınız sahneler her zaman oluyor. Bazen çok güzel ve anlamlı olduğunu düşündüğünüz bir filmi içindeki bazı sahneler sebebiyle ailenizle izleyemiyorsunuz. O sahneleri izlerken geçmek için ileri sarma vb. aksiyonlar yapmak da işin tadını kaçırıyor.

Şöyle bir program olsa, filmin istemediğimiz kısımlarını belirtsek de izlerken otomatik olarak oraları atlasa…

Aslında komut satırından çalışan ve özellikle Linux dünyasında çok meşhur olan video oynatıcısı mplayer ile bu sorunu çözebiliyoruz. EDL (Edit Decision List) denilen bir özellik sayesinde, mplayer programına videonun atlanacak bölümlerinin listesini bir dosya halinde veriyoruz. Video gösterilirken, belirttiğimiz kısımları atlayıp devam ediyor.

Bu iş için öncelikle Not Defteri gibi bir metin editörü açıp, atlanacak saniyeleri satırlar halinde gireceğiz. EDL dosyalarının yapısı şöyle:

[Başlangıç saniyesi] [Bitiş saniyesi] [İşlem(0-atla, 1-sessiz oynat)]

Örneğin,

210 240 0
1890 1960 0

Daha sonra bu dosyayı .edl uzantısı ile harddiske kaydediyoruz. Tabii, listeyi oluştururken saniye hesaplamalarını yapmak gerekecek. Aslında mplayer’in -edlout parametresi ile bu işlemler arayüz üzerinden de yapılabiliyor ama çok kullanışlı değil.

Mplayer’ın Windows tarafında kolay kullanımı için bir çok arayüz yazılmış durumda… Biz bu arayüzlerden SMPlayer yazılımını kullanacağız. Görünüm değiştirebilme, Türkçe desteği, altyazı oynatabilme ve gelişmiş özellikleri ile SMPlayer bir çok ticari video oynatıcı yazılımdan daha güzel.

Programı şuradan indirip, kuruyor ve çalıştırıyoruz. Videomuzu açıyoruz. Seçenekler (Options) menüsünden Bilgi ve özelliklere bak seçeneğine tıklayarak video özellikleri penceresini açıyoruz. Mplayer seçenekleri (Mplayer options) sekmesinde Seçenekler (Options) bölümüne -edl edldosyasınınadı şeklinde dosyamızı belirtiyoruz. (Örnek: -edl c:\film\atla.edl)

Artık, videomuz oynarken belirttiğimiz saniyeleri atlayacaktır.