Bilgisayar kullanıcılarının tartışmasız en çok kullandığı Linux dağıtımı olan Ubuntu'nun yeni sürümü çıktı-çıkacak derken sonunda sunuculardaki yerini aldı. Bu şekilde 14 Mayıs 2009 tarihinde çıkan Alpha 1 versiyonuyla birlikte başlayan ve sonrasında çıkan 7 tane sürüm ile devam eden geliştirme serüveni sona ulaşmış oldu. Peki bu sürümde ne gibi yenilikler var?

Koala resmi

Aslına bakarsanız çok fazla yenilik var. Yani yeni bir Ubuntu sürümünün bir öncekinden bu kadar ileride olduğunu çok sık göremeyeceğimizi rahatlıkla söylebilirim. Ancak bu yazdıklarım size Ubuntu 9.10'u kurduğunuzda çok farklı bir manzara ile karşılaşacağınızı düşündürmesin. Çünkü yapılmış olan yığınla yeniliğin büyük çoğunluğu altyapıda. Bir çoğu da Ubuntu'yu geliştirenlerin bayağı uzun bir süre önceden öne sürdükleri "10 saniyede boot edilen, hızlı ve güvenli işletim sistemi" iddiasının gerçekleşmesi için atılmış adımlar. Bu yazımda gerek arayüz, gerekse de altyapıda yapılmış bir çok yenilikten en önemli olanları üzerinde duracağım.

İşletim sistemini deneme amaçlı olarak kullandığımda performansı kötüydü. Bunun sebebinin VmWare içerisinde kullanmış olmam olduğunu tahmin ediyorum. Ancak önceki versiyonlarda böyle bir yavaşlık yoktu. Umarım yakında normal bir kurulum yapıp denediğimde de benzer bir durumla karşılaşmam. Eğer karşılaşırsam burada anlattığım hiçbir özelliğin bir anlamı kalmamış oluyor çünkü.

Bu yazı, özellikle blog uygumaları yazanlar için oldukça önemli olan thumbnail image (küçültülmüş resimler) oluşturmak ile ilgili.

Normalde .NET Framework içerisinde bu işi Image objesinin metodlarından biri olan GetThumbnailImage() metodunu kullanarak tek satırda halletmek mümkün. Ancak bu yöntemi kullanmışsanız, oluştuduğu thumbnail resimlerinin genelde düşük (bazen de berbat) kalitede olduklarını görmüşsünüzdür. Yazımda bu sorunu ortadan kaldıran ve resim kalitesine önem veren birçok kişinin GetThumbnailImage() metodu yerine tercih ettikleri başka bir yöntemi göstereceğim. Göstereceğim yöntemi kullanarak JPG, PNG, GIF gibi çok kullanılan formatların hepsi için kaliteli thumbnail'ler oluşturabileceksiniz. Ayrıca GetThumbnailImage() metodunun neden her zaman iyi sonuçlar vermediğinden de kısaca bahsedeceğim.

SQL Server kullanan web uygulamaları geliştiriyorken, herhangi bir sorguyu uygulamaya ait olan tüm tablolar veya tüm veritabanları üzerinde çalıştırmayı istemek çok seyrek karşılaşılan bir durum değil. Buna verilebilecek en yaygın iki örnek muhtemelen bir veritabanı içerisindeki tüm tabloları silmek ve tüm tabloların collation değerini değiştirmektir. Benzer şeyleri bir SQL Server instance üzerindeki tüm veritabanları için yapmak da istenebilir.

Bir çok kişinin böyle durumlarda çözüm olarak gördüğü şey söz konusu sorguyu her tablo/veritabanı için bir kez çalıştırmaktır. Ancak bu yöntemin aslında bir çözüm olmadığı tablo/veritabanı sayısı arttıkça gittikçe kullanılamaz bir hal almasından belli olmaktadır.

Konu hakkında biraz daha bilgi sahibi olan kişilerin aklına ise büyük ihtimalle cursor kullanmak ya da verdikleri sorguyu söz konusu olan her tablo/veritabanı için bir kez çalıştıracak olan bir stored procedure yazmak gelecektir. Her iki çözüm de yukarıdaki paragrafta bahsettiğim çözüme göre çok daha mantıklı olmakla birlikte, basit işler için karmaşık ve gereksizdir. Öyle olmasının sebebi ise SQL Server'daki master veritabanı içerisinde bu tür işlemlerin kolaylıkla yapılmasını sağlayacak stored procedure'lerin  zaten tanımlanmış olmasıdır. Bu yazımda, bahsetmiş olduğum işlemleri tek komutla yapmanızı sağlayan, çok işe yarar bulduğum sp_Msforeachtable ve sp_MSforeachdb prosedürlerinden bahsedeceğim.

Eğer bir Windows kullanıcısıysanız, başta oyunlar olmak üzere tam ekran çalışan veya geçici olarak ekran çözünürlüğü ile oynayan herhangi bir programı kapattığınızda, ekran çözünürlüğünüzün olması gereken değerine tekrar ayarlanmadığı ve masaüstünüzdeki ikonların yerlerinin darmadağın olduğu bir duruma mutlaka şahit olmuşsunuzdur. Bu durum eğer benim gibi masaüstünü düzenli tutmaya çalışan biriyseniz oldukça canınızı sıkacaktır. Eğer her seferinde tek tek tüm ikonları eski yerlerine sürüklemekten bıktıysanız, bu yazımda bahsedeceğim Desktop Restore adlı ücretsiz programı kullanabilirsiniz.

Günümüzde, sitelerin en büyük ziyaretçi kaynakları Google, Bing gibi arama motorları. Sitelerin arama motorlarında üst sıralarda gözükebilmleri için yapılabilecek bir çok şey var.  Ancak bunlardan bazıları var ki, artık yapmak bir zorunluluk halini almış durumda. Buna en büyük örnek de Url Rewriting (URL'leri yeniden yazmak). Anlaşılır, kullanıcı dostu URL'ler sadece arama motoru optimizasyonu (SEO) için değil, sitenin navigasyonunun daha anlaşılır hale gelmesini sağladığı için önemli.

URL Rewriting dendiğinde muhtemelen birçok web programcısının aklına ilk gelen şey Apache sunucularda kullanılan mod_rewrite özelliğidir. Ancak bu özellik doğal olarak sadece PHP ile yazılmış olan uygulamalarda kullanılabiliyor. Bu yüzdne Windows sunucular üzerinde çalışacak olan ASP.NET ile yazılmış web uygulamalarında URL Rewriting işlemini yapmak yakın bir zamana kadar Apache'deki gibi kolay değildi. Çünkü IIS'in URL Rewriting yapmayı kolaylaştıracak bir özelliği yoktu. Ancak artık durum değişti.

Microsoft'un yakın bir zamanda çıkarmış olduğu URL Rewrite modülü sayesinde IIS 7 kullanıcıları da artık kolayca URL Rewriting yapma imkanına kavuştu. Bu yazımda Microsoft Url Rewrite modülünün IIS 7 üzerine kurulumunu ve yazım kurallarının doğrudan web.config içerisinden nasıl tanımlandığını örnekler ile birlikte anlatacağım.

Sadece Türkiye'den değil, tüm dünyadan ziyaretçi almasını planladığınız "global" bir siteyi kodlamak, her ne kadar dışarıdan bakıldığında sadece .NET Framework içerisinde bulunan lokalizasyon ile ilgili bir kaç fonksiyonu kullanmakla çözülecek bir problem gibi görünse de, iş uygulamaya geldiğinde gayet kolay bir şekilde Çin işkencesine dönüşebiliyor. Çünkü iş farklı dillerin karakterlerini düzgün bir şekilde gösterecek encoding kullanmakla bitmiyor. Her ülkenin posta kodları, tarih ve saati yazış şekilleri farklılık gösteriyor. Özellikle sitede ziyaretçilerden bu tip verileri alıp veritabanına kaydetmek, bazen de aralarında karşılaştırma yapmak gerekiyorsa...

Sitelerini paylaşımlı bir hosting hesabı üzerinde barındıran, ya da herhangi bir sebepten dolayı veritabanı sunucuları üzerinde tam kontrole sahip olmayan SQL Server kullanıcılarını, SQL Server 2008'in yanında gelen SQL Server Management Studio 2008'in kötü bir süprizi (bug'ı desem daha doğru olur) bekliyor. Sitemi GoDaddy sunucularındaki paylaşımlı hesabıma transfer ederken biraz zamanımı çalan bu hatanın sebebini ve çözümünü burada anlatacağım.

Problem kendini, Management Studio 2008 ile veritabanı sunucusuna gayet normal bir şekilde bağlandıktan sonra, sol taraftaki "Object Explorer" bölümündeki "Databases" dalını açmaya kalktığınız zaman belli ediyor.

management studio 2008 object explorer

Databases dalına basıldıktan sonra, object explorer yukarıda göstermiş olduğum halde uzun bir süre beklemeye başlıyor. Siz sabırla listenin alınmasını bekliyorsunuz ancak bir süre sonra veritabanlarının listesiyle değil, aşağıdaki hata mesajı ile karşılaşıyorsunuz.

management studio error 916

Bu mesajda mavi ile kapatmış olduğum yerde veritabanına girerken kullandığım kullanıcı adım, siyah ile kapatmış olduğum yerde ise benimle uzaktan yakından alakası olmayan birinin veritabanının adı yazıyordu. Mesajı ilk gördüğümde hatanın bende olduğunu düşünüp yaptığım her adımı defalarca kez kontrol ettim. Ancak sonuç alamayınca biraz araştırma yaptım ve sorunun benden değil, Management Studio 2008'deki saçma bir bug'dan kaynaklandığını öğrendim.

1
EKİ
2009
İTÜ Programcı

Yazıma eğer İTÜ'de okuyan bir lisans öğrencisi değilseniz bu yazıyı görmezden gelmeniz gerektiğini söyleyerek başlayayım. Çünkü bu yazı İTÜ'deki lisans öğrencilerinin gayet yakından tanıdığı İTÜ Programcı adlı yazılımım ile ilgili.

Artık sitemi açmış olduğuma göre, 4 yıl önce yazmış olduğum ve o zamandan beri her dönem daha fazla İTÜ öğrencisinin keşfedip kullanmaya başladığı Programcı'yı da İTÜ'nün bana vermiş olduğu kısıtlı web alanında tutmama gerek kalmadı. Bugünden itibaren Programcı'nın resmi sayfası burası. Eski sayfayı biraz değiştirip yüksek lisansım bitene kadar öyle bırakacağım. Zaten yüksek lisansım bittikten sonra o sayfa ben istesem de istemesem de İTÜ Bilgi İşlem Daire Başkanlığı bünyesindeki insanlar tarafından büyük bir zevkle silinecektir.

1
EKİ
2009
Merhaba Dünya!

Merhaba Dünya!

Evet, üniversiteye girdiğim yıldan beridir açmayı planladığım, ancak bir türlü vakit bulup da açamadığım sitemi, programlama ile uğraşan kişiler için özel bir anlamı olan bu iki kelime ile birlikte resmi olarak (nihayet!) açmış bulunuyorum.

Aslında siteyi bu kadar üzün süre boyunca açmamış olmamın tek sebebi hazır site kullanmamaya yemin etmiş olmam. İster deli deyin, ister takıntılı deyin farketmez, ben buyum. Ne zaman üçüncü kişiler/firmalar için değil de, kendim için bir şey yazmaya kalksam, yazacağım kodun vaktim varsa hepsinin, vaktim yoksa da büyük çoğunluğunun kendim tarafından yazılmış olmasını isterim. Zaten şu ana kadar ne öğrendiysem, süre sınırı olmadan kendi çapımda yaptığım şeyler sayesinde öğrendim. Ayrıca Wordpress gibi hazır bir sistem kullanmak yerine kendim yazmış olduğum bir sistemi kullanmanın hem beni ihtiyacım olmayan bir sürü gereksiz özellikten kurtardığını, hem de bana sitenin herhangi bir yerinde istediğim zaman istediğim değişikliği kolayca yapabilme imkanı verdiğini düşünüyorum. Açık kaynaklı sistemlerde düzenli olarak bulunan güvenlik açıkları ise ayrı bir mesele.

0 yorum | Kategori: Genel»Günlük
Etiketler: Günlük