Otomatik Mühendis

Kodunuz Türkiye testini başarıyla geçebiliyor mu?

Türkiye’de kullanılan tarih ve sayıların gösterilişinde diğer ülkelere göre farklılıklar görülmektedir. Bu sebeple yazılımlarını çeşitli ülkelerde kullanım için yazan yazılımcılar bu biçem değişikliklerine dikkat etmelidir. Hala metrik sisteme geçememiş Amerika’da bazı yazılımcılar “Kodunuz Türkiye’de çalışırsa her yerde çalışır.” diyorlar. Aşağıda ilgili yazıları bulabilirsiniz. Yazılımınızın daha esnek olabilmesi için uygulamanız gereken bu yöntemleri ara sıra anımsamak iyi olacaktır.

http://www.moserware.com/2008/02/does-your-code-pass-turkey-test.html

http://www.codinghorror.com/blog/2008/03/whats-wrong-with-turkey.html

Okumaya devam »


Localhost’a yönlendirilen DNS kayıtları

Web sitesi projeleri geliştirirken elbet bir şekilde hosts dosyasında değişiklik yapmamız gerekmiştir. Özellikle subdomain çalışmalarında ihtiyacımız olmaktadır.
C:\Windows\System32\drivers\etc klasöründe bulunan hosts dosyası içerisinde hangi adreslerin, hangi iplere yönlendirileceğini tanımlayabiliyoruz.
Kısaca yerel DNS’imiz diyebiliriz.

Hosts dosyasında fazla değişiklik yapmak istemezsek. Aşağıda verilen üç adresi kullanabiliriz, bunlar doğrudan 127.0.0.1’e yönlendirilmiş sayfalardır. Eğer IIS veya Apache gibi bir sunucunuz varsa veya bir web servisiniz yayında ise doğrudan bu adresler üzerinden ulaşabilirsiniz. İstediğiniz subdomaini veya portu yazabilirsiniz.

  • http://127-0-0-1.org.uk</p>
    • http://test1.127-0-0-1.org.uk
    • http://127-0-0-1.org.uk:8081
    • http://127-0-0-1.org.uk/Categories/10
  • http://vcap.me/
  • http://lacolhost.com/
Okumaya devam »


NHibernate ile İyimser Denkleme

Databasedeki bir kaydın aynı anda birden fazla session tarafından update edilmesi sonucu data kaybı yaşanabiliyor. ReadUncommited şekilde select edilen bir kayıt, update edilene kadar başka bir session tarafından update edilirse, artık güncel olmayan bir kaydı (dirty) update etmiş oluyoruz.

Bunun önüne geçmek için NHibernate’in sunduğu Optimistic Lock’u kullanabiliyoruz. Mapping class’a DynamicUpdate.True ve OptimisticLock.All veya OptimisticLock.Dirty ekleyerek update esnasında bu tablodaki kaydın en güncel halini mi update ettiğimizi kontrol edebiliyoruz. Eğer güncel olmayan kaydı update etmek istersek, bu sayede hata alıp bunu handle edebiliyoruz.

DynamicUpdate.True:
Update SQL’inin runtime’da dinamik olarak oluşmasını sağlıyor.

Okumaya devam »


Sayfaya Resim Gömmek

Tasarımlarımızda kullandığımız bazı ufak resimleri kod olarak sayfalarımıza gömebiliriz. Bu HTTP isteklerini azaltacaktır. En basitini düşünecek olursak toplu olarak gönderdiğiniz epostalarınızda ki görseller bu şekilde içeriğe gömülürse, eposta okunduğunda sitenize HTTP istekleri gelmemiş olur. Tabi bu da takip için kullanılan bir yöntem olduğundan en azından ufak bir resim takip amaçlı kullanılabilir.

Hem konudan kopmamak, hem de takip olayını havada bırakmamak için kısaca açıklayayım. Eposta içeriğindeki bir görsele her hangi bir sayfanın adresini verirseniz, eposta açıldığında o sayfaya istek gelecektir. Bu sayfa üzerinden o epostanın okunup okunmadığını kontrol edebilirsiniz. En iyisi bu konuyu başka yazıda örneklerle anlatayım. Ayrıca bu konuda madmimi.com‘u öneririm.

Bu yöntemin kötü yanı IE’de çalışmaması. Tabi ki sorunun etrafından dolaşan çözümler mevcut. Bu işlemleri StyleSheet ile yapıp IE için ayrı bir CSS dosyası hazırlamanız gerekecektir. Diğer taraftan bu şekilde gömülü resimler için boyut kısıtları mevcut. O nedenle daha küçük boyuttaki tasarım için kullandığınız resimler için kullanabilirsiniz. Ayrıca Base64 kodlanan resimler aslına göre %33 daha büyük boyutta oluyorlar. Bunu da göz önüne almalısınız.

Okumaya devam »


Veritabanı Modelleri

http://www.databaseanswers.org/data_models/

Ara sıra yolumun düştüğü bir web sitesinden bahsetmek istiyorum. Projeye başlarken veritabanı planlama sırasında çoğu ihtimali göz önünde bulundurmaya çalışırız. Aslında projenin en önemli adımıdır. Database Answers sitesi bu konuda daha önce uygulanan yöntemleri göstererek adeta veritabanı tasarımı için ilham kaynağı oluşturuyor. Tasarımınızdan ne kadar emin olursanız olun yine de üretime geçmeden önce burada ki muadillerini bir inceleyin. Birebir ihtiyacınızı karşılayacak bir model olmayabilir ama ders alınacak çok örnek var.

Okumaya devam »