MySQL temp table için ssd-tmpfs farkı

Sorgumuz bu;

SELECT SQL_NO_CACHE DISTINCT a.*, u.user_email, u.user_nicename, u.user_login, u.display_name FROM wp_bp_activity a LEFT JOIN wp_users u ON a.user_id = u.ID WHERE a.is_spam = 0 AND a.hide_sitewide = 0 AND a.type != ‘activity_comment’ ORDER BY a.date_recorded DESC LIMIT 0, 50

Bir çok join işleminde olduğu gibi bu sorguda da MySQL temp table oluşturuyor ve my.cnf da ayarladığınız tmpdir’a bu temp table’ı atıyor.

Ben sunucularımda ssd disk kullanıyorum. Bu sorguyu incelerken “Copying to tmp table” işleminin uzun sürdüğünü görerek bir çözüm aradım ve tmpdir olarak tmpfs kullanmanın bu işi hızlandırabileceğini ve nasıl tmpfs’e geçileceğini şurada gördüm ve uyguladım. Ubuntu kullanıyorsanız şuradaki yazıyı da okumalısınız.

tmpfs; dosyaları disk yerine ramde tutuyor ve haliyle işleminiz daha hızlı oluyor. Şimdi sonuçları paylaşıyorum.

tmpfs’den önce

Sorguyu 3 defa art arda çalıştırdım…

Screen Shot 2014-05-05 at 13.38.46 Screen Shot 2014-05-05 at 13.39.21 Screen Shot 2014-05-05 at 13.39.29

Sonra

Yine 3 defa art arda çalıştırdım.

Screen Shot 2014-05-05 at 13.39.47 Screen Shot 2014-05-05 at 13.39.57 Screen Shot 2014-05-05 at 13.42.09

Sonraki sonuçlarda da yine ortalama 1.5sn civarı sürdü. Benim ssd kullandığım sunucumda fark 0.2sn kadar oldu.

Titanium – OS X Mountain Lion – Emulatör/Simülator Hataları

OS X Mountain Lion’a Titanium yükledim. Ardından örnek uygulamalardan Kitchen Sink’i açtım. Simulatörlerde denemek istediğimde hem Android hem de iOS simulatorlerinde hata aldım.

Androdi emülatörde aldığım hata; [ERROR] : Build process exited with code 1
Çözümü
; Android SDK Manager üzerinden Android 3.0 yüklemek. Ben daha öncesinde Android 2.2, Android 2.3.3 ve Android 4.3′ü yüklemiştim ancak sorun Android 3.0 yükledikten sonra düzeldi. Hatanın tam sebebini Titanium > Run > Run Configurations >

iOS simulatörde aldığım hata; Invalid target value ‘s�mulator’
Çözümü; Sistem dilini İngilizce olarak ayarlamak

 

Nefis Yemek Tarifleri v4 yayında!

5 yıldır aktif olan sitemiz Nefis Yemek Tarifleri’nin yeni tasarımını uzuun süren çalışmalar sonunda aktif hale getirdik.

İlk 4 ekran görüntüsü yeni tasarımıza, son 3 ekran görüntüsü ise 3 yıldır aktif olan eski tasarımımıza ait.

Yeni ara yüzümüzü tasarlayan Onur Can Çoban‘a teşekkürler.

Her şey yolunda

Merhaba, uzun zaman oldu yazmayalı. Ara ara mailime “yeni yorum geldi” e-postaları geliyordu. Bloguma yorumlara bir bakmak için girdim. Yorumları onayladım, bir de temayı mı değiştirsem dedim, değiştirdim. Ardından kategorilere bakarken günlük kategorisine tıkladım ve en son yazının “Askerden geldim, iş arıyorum.” olduğunu gördüm. Ardından kendime not olur diye bir yazı yazmaya karar verdim. İşte o yazı bu yazı.

En son iş arıyormuşum, yazıyı 11 Şubat 2010′da yazmışım. Bir çok görüşmenin ve “biz size döneceğiz”in ardından Mayıs 2010′da kurumsal şirketlere dış kaynak personel sağlayan BilgeAdam Kurumsal ile anlaştım; Anadolu Sigorta’da “Java Yazılım Uzmanı” pozisyonunda çalışmaya başladım. Ardından Aralık 2010′da BilgeAdam’dan ayrılıp Anadolu Sigorta’nın kadrolu “Java Yazılım Uzmanı” oldum ve halen görevime devam etmekteyim. IBM ile ortak geliştirmeye devam ettiğimiz bir projede Java yazıyorum.

İş aradığım süreçte daha çok WordPress ile ilgilendim ve birkaç tane WordPress eklentim oldu.  Sonrasında kendileri ile çok fazla ilgilenemedim, üzgünüm. Boş bir vaktimde kendileriyle ilgilenmek istiyorum…

2011 sonlarında IBM ile geliştirdiğimiz proje ile ilgili eğitim için İsrail’de 1 ay bulundum. İstisnalar dışında İsrail halkının bize karşı tavrı iyiydi, sorun olmadı. Oraları da görmüş olduk…

Bu aralar 5 yıllık projemiz olan Nefis Yemek Tarifleri‘nin yeni tasarımı ve yazılımı ile uğraşıyorum. Kendisi şu an alt yapı olarak WordPress kullanıyor, yeni versiyonda BuddyPress ile daha sosyal olacak. Aslında yeni tasarımı pek sevgili tasarımcımız Onur Can Çoban 2011 ortalarında bitirdi ancak iş yoğunluğundan dolayı halen “bitti, hadi açalım” diyemedik ancak artık çok az kaldı…

Bunların dışında bu süreçte bir HTC Sensation ve bir Seat Leon aldım, ikisi ile de mutluyum.

Ve gelelim en önemli ve en güzel gelişmeye. Hayatımda verdiğim en doğru kararlardan birini vererek Elif ile evlendim, kendisiyle çok mutluyum. Buradan kendisine sevgilerimi iletiyorum.

Yani her şey yolunda… Sizler nasılsınız ?

cloudflare-etkisi-apache2

CloudFlare Etkisi 2

CloudFlare Etkisi yazısınını devamı niteliğindedir.

Şimdi de CloudFlare’ın kendi sunucumuz üzerinde yaptığı etkiye bakalım. Sitemize aynı sayıda kişi girmesine rağmen sunucudaki yük aşağıda görülebileceği üzere bir hayli azalıyor.

Diğer grafiklerde pek bir değişiklik yok.

CloudFlare etkisi

GÜNCELLEME: Şu anda beklenmedik erişim hataları oluşması ve çok stabil olmaması sebebiyle CloudFlare kullanmayı bıraktık.

CloudFlare‘i ilk fark ettiğim anda gönderdiğim tweet: “Uzun zamandır beni CloudFlare kadar heyecanlandıran bir servis olmamıştı…”

Sonra bir deneme yaptım, ilk denemede sorunlar yaşadık, çünkü CloudFlare subdomain’leri otomatik olarak görmemiş, ben de bu aşamada eklemeyi unutmuştum. Subdomainler ile çalışanlar A record’larını eklemeyi unutmasınlar…

İkinci denemede başarılı sonuca ulaştım. Sitemizdeki resimlerin açılma hızı yarıya indi.

CloudFlare’in bir çok lokasyonda sunucusu mevcut. Statik içeriğinizi (jpg,png,css,html,js) bu sunuculara cache’liyor ve isteği yapan istemciye en yakın sunucusundan statik içeriği istemciye iletiyor.

CloudFlare Aktif Değil…

CloudFlare‘in aktif olmadığı subdomain üzerinden bir jpg dosyası yüklediğimde dosya 627 ms’de yükleniyor.

Yüklenen bu dosyayı F5 ile yenilediğimde dosya 161 ms’de yükleniyor.

CloudFlare Aktif…

CloudFlare‘in aktif olduğu subdomain üzerinden bir jpg dosyası yüklediğimde dosya 474ms’de yükleniyor;

Yüklenen bu dosyayı F5 ile yenilediğimde dosya 63 ms’de yükleniyor.

 

Hız farkının sebepleri

CloudFlareaktif olmadığında direkt İngiltere’de bulunan kendi sunucumuza istek yapıyoruz.

CloudFlare aktif iken en yakın CloudFlare sunucusuna istek yapıyoruz. Türkiye’ye en yakın CloudFlare sunucusu Hollanda ve Almanya’da bulunuyor. İngiltere’den daha yakın olduğu için daha hızlı cevap dönüyor.

Eğer isteği yapan kişi Çin’de ise, CloudFlare’in Hong-Kong’daki sunucusu cevap verecek.

Farkın bir diğer sebebi bizim sunucuda Apache Keep-Alive özelliği aktif değil, istemci her seferinde dns lookup yapıyor.

Sonuç

Eğer sunucunuz yurtdışında ise CloudFlare‘i kullanmanızı öneririm.

CloudFlare’i kullandığımız site; Nefis Yemek Tarifleri bekleriz :)

11.08.2011 tarihinde bu yazınının devamı yayınlandı.

Git, Her “Push” Sonrası Otomatik Olarak E-posta Atsın

Güzel bir başlık olmadı. Git’te kod değişikliklerini depoya göndermek için “git push” komutunu kullanırız. Bu yazıda, her “git push” komutundan sonra belli bir e-posta adresine otomatik olarak bu “push” ile ilgili bilgi gitmesini nasıl sağlayacağınızı yazacağım.

SVN kullananlar için ise konuyu şöyle açıklayabilirim; svn’de her commit’ten sonra belli bir e-posta adresine commit hakkında bilgi gönderilebiliyor. Bu yazıda anlatacağım şey bunun git’te nasıl yapılacağı.

Git repository’lerinde hooks klasörü bulunuyor. Bu işlemi de bir hook dosyası sayesinde yapabiliyoruz. Bu hook dosyasını buradan indirebilirsiniz. İndirdikten sonra bu dosyayı git deponuzudaki hooks klasörü altına taşıyın. Dosya ismini post-receive olarak isimlendirin ve dosyayı çalıştırılabilir bir dosya haline getirin.

Ardından git deponuzdaki config dosyasını düzenleyin. Şuna benzer bir hale gelsin;

[core]
repositoryformatversion = 0
filemode = true
bare = true
[hooks]
mailinglist = “<commitler-bu-eposta>@<adresine-gelecek>.com”
senderemail = “git@<projeniz>.com”
emailprefix = “[<projeniz>-git] “

Bu ayarı da yaptıktan sonra her “git push” sonrası post-receive hook’u otomatik olarak mailinglist’in karşısında bulunan e-posta adresine bir e-posta gönderecek.

E-postalarda proje adınız “UNNAMED PROJECT” olarak görünüyorsa git deponuzdaki description dosyasının içine proje adınızı yazın.

Daha detaylı ingilizce bir yazı; http://pkill.info/blog/post/setting-up-git-commit-email-notification.html