Otomatik Mühendis

SignalR ile Açık Artırma Uygulaması

Web uygulamalarında gerçek zamanlı etkileşimi yeni ve daha kolay bir boyuta taşıyan SignalR teknolojisini deneme fırsatım oldu. Geliştirmekte olduğum projede açık artırma uygulamasını daha işlevsel yapma çalışmalarımız sonucunda SignalR uygulamasının da tecrübe kazandıracağı kanısıyla uygulamaya anlık teklif gönderme/alma yeteneği kazandırdık.

Öncelikle SignalR nedir?

SignalR, HTML5 API ile birlikte web hayatımıza giren WebSockets protokolünü kullanarak gerçek zamanlı iletişimi sağlayan bir kütüphanedir.

Bu noktada Microsoft tekelinden az da olsa uzaklaşabilmek için alternatif olarak SuperWebSocket‘ı gösterebilirim. Aynı işlemleri yapabilirsiniz, mamafih doküman bakımından SignalR tercih sebebidir. MSDN makaleleri de cabası.

Okumaya devam »


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 »