String Extensions

Daha önce burada bir kısmını paylaştığım metin uzantılarını daha da geliştirdim ve String Extensions ismi ile Github’da paylaştım. Uzantıların listesi şu şekilde;

Github’da metodların nasıl kullanılabileceklerine dair küçük örnekler de bulunuyor.

PHP söz dizimi kontrolü

Dün yayında olan bir PHP projesinde çeşitli değişiklikler yapmak durumunda kaldım. Test etme şansım olmadığından dosyanın bir kopyasını sunucuya atarak sunucu üzerinde test etmeye çalıştım. Gönderdiğim dosyayı çalıştırmayı denediğimde bomboş bir ekranla karşılaştım. Güvenlik nedeniyle sunucu, hata mesajlarını ekrana basmayacak şekilde ayarlanmıştı. Hata kayıtları da benim yetkim olmayan bir yerde duruyordu. Bir şekilde hatanın nerede olduğunu bulmam gerekiyordu. Çok fazla değişiklik yaptığım için eski dosya ve yeni dosya arasında bir karşılaştırma yapmak uzun sürecekti. Bir kaç kontrol yapmaya karar verdim.

İlk olarak söz dizimi kontrolü yaparak dosyanın PHP tarafından işlenebildiğinden emin olmak istedim. Bunun için PHP’yi komut satırından “-l” parametresi ile çalıştırıp ikinci parametre olarak dosyanın ismini verebilirsiniz. Eğer PHP klasörünüz PATH değişkeninde tanımlandıysa dosyanızın olduğu klasörde komut satırı açarak php -l dosyaismi.php şeklinde söz dizimi kontrolü gerçekleştirebilirsiniz. PATH değişkeninde tanımlı değilse php.exe’nin tam yolunu girmeniz gerekebilir (Örneğin: c:\php\php.exe -l dosyaismi.php)

Bu komut PHP dosyanızı kontrol edecek, bir hata bulamazsa sonlanacak ya da bulduğu ilk hatada hatanın olduğu satır numarasını ekrana basarak sonlanacaktır. İlgili hatayı düzelttikten sonra komutu tekrar çalıştırarak, dosyayı tekrar kontrol edebilirsiniz. Bu şekilde hiç söz dizimi hatası kalmayana kadar kodu tekrar tekrar çalıştırarak dosyanızı hatalardan arındırabilirsiniz.

Bu şekilde problemimi giderip dosyayı sunucuya tekrar yükledim. Problemim giderilmişti.

WordPress Bakım Modu’nu İptal Etme

WordPress kendisini güncellerken ya da bir eklenti güncellerken, dosyaların güncellenmesi sırasında kısa bir süreliğine bakım moduna girer. Bazen işler yolunda gitmeyebilir ve bakım modunda takılıp kalabilirsiniz. Kimi zaman güncelleme sırasında başka bir sayfaya geçmek, kimi zaman da güncellenen öğenin kendisinde var olan bir problem, sitenizin bakım modundan çıkamamasına sebep olabilir. Bu tip bir durumda sitenizi bakım modundan çıkartmak için sitenizin kök dizininde yer alan .maintenance dosyasını silmeniz yeterli. Siteniz bakım modundan çıkacaktır. İşlerinize kaldığınız yerden devam edebilirsiniz.

Otobüs simsarlarının doğuşu

UKOME ya da İETT, hangisi sorumlu bilmiyorum ama yeni bir karar alınmış. Artık halk otobüslerinde bilet kesen görevliler bulunmuyor. Yani halk otobüslerini kullanmak için de Akbil ya da elektronik bilet kullanmak zorundasınız. Kayıt dışı kullanımın önüne geçmek adına güzel bir adım, ne var ki duraklarda gerekli alt yapı çalısmaları yapılmadığı için insanlar zor durumda kalabiliyor. Özellikle yerleşim yerlerine uzak olan duraklarda Akbil dolduracak yer bulmak sıkıntı yaratabiliyor.

Bu kararın bir başka iz düşümü de otobüslerde yavaş yavaş ortaya çıkmaya başlayacak simsarlar. Bugün otobüse bindiğimde Akbil’imde yeterli bakiye kalmadığını gördüm. Otobüsten inip Akbil doldurabileceğim bir yer aradım. Tabi bu sırada otobüs beni beklemedi ve otobüsü de kaçırmış oldum. Farkettim ki en yakın Akbil dolum yeri en az 5-10 dakika yürüme mesafesi uzaklığında. Belki uygulama tüm otobüslerde başlamamıştır ümidiyle bir sonraki otobüsü beklemeye başladım. Çok geçmeden geldi ve yine ücretli binemeyeceğimi gördüm. Ne yapacağımı planlarken otobüsün içindeki mülayim yüzlü bir bey, içinde benim de olduğum bir grup Akbil’siz insana, kendi Akbil’ini kullanabileceğimizi, kendisinin Akbil’ini bir kaç durak sonra doldurabileceğini söyledi. Ben dahil herkes durakta beklemek istemediğimiz için bu güzel teklife balıklama atladık.

Minibüslerde duymaya alışık olduğumuz “Ücretini vermeyen kalmasın. Var mı ücretini ödemeyen?” vb. cümlelerin arasında sekiz kişiden para topladı. Arada bir kişiye öğrenci indirimi bile uyguladı. Sonra ön tarafa geçip beş kere Akbil okuttu. O sırada biraz İETT ve UKOME’ye sinirimden, biraz da işimin görülmüş olmasından dolayı pek umursamadım ama eminim önümüzdeki günlerde bu ve benzeri manzaralar ile daha çok karşılaşacağız.

Ofise geldiğimde direkt şu haber ile karşılaştım: Halk otobüslerinde yeni dönem başladı! Habere göre İBB günler öncesinden bu durumu duyurmuş, ama toplu taşıma araçlarını seheri kullanan insanların bu duyuruları takip etmesi çok kolay olmayabiliyor. Acaba bu tip durumları düşünüp bir e-posta listesi kurmuşlar mıdır diye düşünüp İETT web sitesini kontrol ettim. E-Posta Aboneliği başlıklı bir bağlantı görünce çok umutlandım ama anladığım kadarıyla bu sistem de 2009’dan bu yana hiç kullanılmamış; İETT E-Posta Aboneliği arşiv sayfası

Umarım en kısa zamanda yerleşim yerlerine uzak ya da Akbil/Elektronik bilet doldurma imkanı olmayan duraklara gerekli destek sağlanır.

“Ambiguous match found” hatası neden kaynaklanır, nasıl düzeltilir?

ASP.NET ile uygulama geliştirirken çok ilginç bir sorunla karşılaştım. Biraz uğraştıktan sonra sorunu çözdüm. Şansıma çok büyük bir proje değildi ve yine şansıma küçük bir değişiklik yaptığım sırada karşıma çıktı. Bu yüzden problemi çok daha kolay tanımlayabildim ve bu da çözüme daha kolay ulaşmamı sağladı.

Problem derleme sırasında karşınıza çıkmıyor. Proje sorunsuz bir şekilde yapılandırılıyor fakat problemin olduğu web sayfasını açmak istediğinizde ilk satırda belirsiz eşleşme (Ambiguous match) bulunduğu ile ilgili bir hata mesajı alıyorsunuz ve sayfa açılmıyor. Aşağıdaki ekran görüntüsüne benzer bir görüntü ortaya çıkıyor.

Bir süre webde araştırınca sorunun neden oluştuğunu, nasıl çözüleceğini burada buldum. Temel olarak problem, web sayfasında tanımlanmış bir kontrol ile aynı isme sahip bir değişken tanımlandığında ortaya çıkıyor. C# büyük/küçük harf duyarlı bir dil olsa da nedense bu durumda düzgün çalışmıyor ve hata üretiyor. Yani sayfanızda “Metin” isimli bir kontrol bulunuyorsa “metin” isimli bir değişken kullanmamanız gerekiyor.

Karşımıza açıklayıcı bir hata mesajı çıkmadığı için bu davranışın bir bug olduğunu düşünüyorum. İşin ilginç yanı konuyla ilgili bulduğum makale 2006 yılına ait, yani en az 5 senedir bu problem var ve Microsoft tarafından konu ile ilgili bir geliştirme/açıklama/düzeltme söz konusu değil…