Geçtiğimiz günlerde (1 ayı geçmiş) kodlar arasında uğraşırken, URL'den gelen bir istekle sayfanın bir yerine odaklanıp birşeyler yapma ihtiyacı doğdu. Aslında bu uzun zamandır web dünyasında kullanılan bir yöntem idi ama ihtiyaç olunca kullanmak gibi bir adetim var.
Bir ürün sayfanız olduğunu düşünün, sayfadaki bir kullanıcı yorumunu arkadaşınızla paylaşmak istiyorsunuz. Bir link verdiğinizde, ürün detay sayfasına gelince, ziyaretçinin direk ürün yorumlarına odaklanmasının da iyi olacağını düşünüyorsunuz. Bu durumda yapmanız gereken linkin sonuna "hash" dediğimiz # işareti eklenmiş bir kelime koymanız (hashtag) ve sayfa kodu içinde javascript ile kontrol bunu etmeniz.
Hash dediğimiz şey aslında bildiğiniz # (diğer bir tabirle diyez/daha bir diyer deyişle kare) işareti. Bir kelimenin önüne eklendiğinde ise Hashtag ismini alıyor. (Örneğin #yorum ) Link olarak şöyle kullanılabilir: http://sitenizin.adresi.com/sayfa.linki.html#hedefkelime
Javascript'ten nasıl erişirim?
var docHash = document.location.hash;
if (docHash=="#hedefkelime"){$("a[select='Yorumlar']").click();}
Burada, document.location.hash isteği URL den gönderdiğiniz hash (#) li parametreleri size veriyor. Tek parametre gönderdi iseniz yukarıdaki gibi kullanabilirsiniz. Eğer birden fazla parametre yollarsanız var param1 = docHash.split(‘#')[1] şeklinde kullanımları düşünmelisiniz.
not : $("") tarzı yazım jQuery kullanımıdır.
not 2 : docHash'i aldıktan sonra, içi dolu mu boş mu, var mı yok mu diye docHash.length() ile kontrol etmekte de fayda var.
Haber okurken aklımıza "bu olaya başkaları nasıl baktı acaba?" sorusu mutlaka gelmiştir. Gündemin rüzgar gibi geçtiği bazen de fırtınalar estirdiği bir coğrafyada, gündemi sebebi her ne olursa olsun farklı olarak işleyen medya elemanlarına rastlamak kaçınılmaz. En nihayetinde herkesin bir bakış açısı ve dünya görüşü var değil mi?
Haberdar.com ekibi bu ihtiyacı görmüş olacak ki, bize karşılaştırmalı haberler diğer adıyla "Medya Penceresi" isminde bir yapı tasarlattılar. Son günlerde de oldukça seri bir şekilde bu özelliği kullanıyorlar. Ana fikir, "bir haberi farklı farklı kaynaklar nasıl gördü?", "üstüne eklemeden çıkarmadan en hızlı okuyucumuza nasıl ulaştırırız?" idi, bunda da oldukça başarılı gidiyorlar. Örneğin:
Geçtiğimiz haftalarda bunu anlatan mini (10 saniye) bir video çekmiştik, ona bir göz atmanızı tavsiye ederim. Gündeme bakışınız değişecek ve bence bağımlısı olacaksınız :)
Haberdar.com'un farklılık oluşturan özelliklerine ait diğer videolar da ilginizi çekebilir:
Gece gece bir işle uğraşırken UTF-8 çevirici lazım oldu. Kendisine şu sitede rastladım. Bulmuşken not alayım dedim.
Aldığım yer de Steve Minutillo'den uyarlamış.
Sabah çayı zevkini yaşamak için ailemizin foto paylaşım sitesi Flickr'a uğrayayım dedim. Daha uğrar uğramaz sağ kenardaki Flickr blog şeysinde "it's Istanbul not Constantinople" yazısını gördüm ve zıpladım. Kongre Kütüphanesi'ne (Library of Congress) ait fotokromlardan seçmece yapmışlar.
1890-1900 yılları civarına bir uzanmak isterseniz, Library of Congress hesabında son günlerde yüklenmiş İstanbul fotolarınabakmanızı tavsiye ederim. Mesela şu foto ile Sultan Ahmet Camii'ne neden Blue Mosque dediklerini biraz daha anladım. Üstteki fotoda köprü girişindeki beyaz memurlar ise şimdiki gişe görevlileri imiş, para alıyorlarmış. (fotoğraf üstü notta yazıyor)
Bu arada fotoğraf altı yorumlardan İstanbul kelimesinin bir kaynağının da "is tin polin" olduğunu, Yunanca dili ile bağlantılı olarak, şehir merkezi, şehre manalarına geldiğine dair bir rivayeti de öğrenmiş oldum. (tabii ki Wikipedia kaynaklı)
Diğer öğrendiğim şey LOC'un 650 mil uzunluğunda kitap rafına (yaklaşık 142 milyon kitap) sahip olduğu gerçeği oldu. Göresim geldi.
Zaman zaman SVN'de commit işlemlerinde "Access denied: 'username' MKACTIVITY repository:" şeklinde bir hata alıyorsanız, sebebi repository isminin buyuk-kucuk harf duyarlı olması ve sizinde bunu yanlış yazmanız olabilir. Bizim böyleydi ve bir süredir "neden hata veriyor?" diyorduk.
Örneklersek, WEBProje isimli bir kod havuzunuz olduğunu düşünün. Siz ise burayı webproje diye çağırıyorsunuz. Çağırırken sorun olmuyor, sistem size istediğiniz kodları takır takır gönderiyor ama gel gelelim Commit yapacağınız zaman yukarıdaki hatayı göndermekten de geri durmuyor. Bu durumda SVN Relocate fonksiyonu ile webproje ismini WEBProje yapayım demeniz kâr etmeyecektir. Yapmanız gereken çalıştığınız klasörü bir yere yedekleyip, WEBProje'yi yeniden SVN'den almak, yedeklediğiniz kodları üzerine koymak ve huzur içinde Commit etmek olacaktır.
(Video için Hasan'a teşekkür ediyor, bizi güldürdüğü kadar onu da güldürmesini Allah'tan niyaz ediyoruz :) İzleyemenler şuradan büyük ekran'da da bakabilirler.
* Mükkemmel bir uygulama diyecektim, aklıma birden Diyarbakır Olimpiyatları geliverdi :)
The Next Web | Appetite'de gezinirken rastladım Screenr'a. Bir deneyeyim derken, kendimden geçtim.
Screenr, ekran görüntüsü yakalama ve yayınlama konusuna eğilmiş ve bunu 15 sn'de yüklenen bir Java uygulaması geliştirip, yapılan işleri Twitter hesabınıza bağlı olarak tutma yolu ile çözmüş. Yaptığınız işle alakalı ne nasıl yapılır türü bir ekran görüntüsünü ekibinizle, müşterilerinizle, ziyaretçilerinizle, patronunuzla, her kimi istiyorsanız onunla paylaşabilmeniz için tek yapmanız siteye gitmek, sağ üstteki "RECORD" düğmesine basmak. Hemen bir uygulama başlayacak ve kayıt edip paylaşabileceksiniz.
Nasıl çalışıyor?
Kayıt ettiğiniz sesli görüntülü anlatımı, önce makinanıza kaydediyor, sonra çekim sürenizin yaklaşık 2 katı bir sürede optimize edip siteye yüklüyor ve aksini söylemezseniz sizin için Twitter'a mesaj olarak bakın bunu çektim izleyin mesajını atıyor. Paylaşmak istemiyorsanız kısa bir link veriyor, isterseniz sitenize koyacağınız bir kod (embed) veriyor. Böylelikle (yukarıda yazdığım) ekibinizle gönlünüzce paylaşabiliyorsunuz. İsteyenler iPhone'dan da izleyebiliyorlar, daha ne olsun?
Kolay Portal XL, projemizin alt yapısı Component Services üzerinde tuttuğumuz Com objelerinden oluşuyor. Neden Com objesi yaptığımız, güvenli olması ve süper hızlı çalışmasında gizli olsa da bu başka bir yazının konusu.
İçerik sistemleri ile uğraşmış veya en azından uzun metinleri saklama ihtiyacı duymuşsanız eski moda Text, yeni moda Varchar(MAX) alanları kullanmışsınızdır. Büyük çapta verileri saklamak için oldukça yararlı oldukları kadar bazen baş ağrıtabiliyorlar. SQL 2000 zamanlarında Text alanlara veri girmek biraz meşakkatli idi, veriyi parçalı olarak içeri atmamız gerekebiliyordu ki bu da başka bir hikaye. Şimdilerde (aslında 2005'den beri diyebiliriz herhalde) direk tek hareketle içeri atmamızda pek sorunla karşılaşmıyoruz. Bazı durumlar hariç...
Kuralına uyulmadığı zaman teknoloji sizi bizi biryere kadar idare edebiliyor, lâkin biryerde bir şekilde mutlaka açık veriyor ve ilginizi bekliyor. İçeriklerde, e-ticaret sistemimizdeki ürün detay bilgilerinde büyük çapta makale girişlerinde hatalar almaya başladık. Bunların bir kısmını bağlantı şeklimizi SQLNCLI10 (Sql Server 2008) olarak düzenleyerek veri girişlerine devam ederek atlatsak da, daha büyük veri girişi ihtiyacının ortaya çıkması beklenen birşeydi. (kaçınılmaz son)
Bir müşterimizden büyük boy içerik giremediklerine dair şikayet gelince, incelemeye başladık. Sistem "Parameter object is improperly defined. Inconsistent or incomplete information was provided" olarak bir hata veriyordu, kısa ve öz olarak Sql prosedürlerimizi çağırdığımız komutun daha iyi düzenlenmesini istiyordu. Sorunun aslında tablo üzerindeki varchar(max) alan(lar)dan kaynaklı olduğunu bilsek de Com objemizin içine dalıp debug etme yoluyla başka bir isteği var mı diye baktık. Sonrasında biraz araştırma ile bu tür alanlar için Microsoft'un yaklaşımının boyut tanımlanırken -1 verilmesi olduğunu anladık. Gerçektende command.parameters("@Content").Size=-1 şeklindeki tanımlama sonrasında gayet başarılı bir şekilde işlemler tamamlandı. (huzura kavuştuk)
Sözün özü: Varchar(max) alanlar için komutlarınızda boyut tanımlaması yapın ve -1 olarak değerini verin.
Bir zamanlar (yanına tarih düşmemişim) not defterime toplantı ve iş kontrol modelleri diye bir başlık altında 6-7 madde yazmışım. Bir süredir yazıya çevireyim diyordum, bugüneymiş kısmet. Konuyu biraz daha genişleterek Erkyazılım Blog'da İş takip ve verimli toplantılar ile başarıya ulaşın başlığı ile yayınladım. İş takibi ve toplantılarda dikkat edilmesi gereken bir kaç şeyi bulabilirsiniz.