Web sayfanızda File input öğresi yerine bir buton veya link ile dosya diyalog penceresini açmak istediğinizde ilk yaptığımız şey “display:none” diyerek mevcut file input nesnesini gizlemektir. İşte chrome da tam buna gıcık oluyormuş. O nesne görünmez olduğu için jquery ile $(“#file_input_nesnesi”).trigger(“click”) dediğinizde bir tepki vermiyor. Yapılacak iş file input nesnesini başka bir şekilde gizlemek. Mesela “position:absolute; top:-999px; left:-999px” şeklinde stil vererek gizlediğimizde sorun kalmıyor..
Chrome’da file objesini tetiklemek
Pazar, Nisan 29th, 2012Javascript ile textbox’lardaki verileri toplama çıkarma
Pazartesi, Nisan 2nd, 2012Son yarım saatimi bir kaç satır javascript koda harcadım. Html olarak elinizde bulunan değerleri javascript ile toplamak isterseniz 2+2′nin 4 değil 22 ettiğine pek çok kere şahit olursunuz. Bu durumu düzeltmek için şöyle yapmak en kestirme yol gibi görünüyor. Not: jQuery kullanılmıştır.
var a=$(“#sayi1″).val();
var b=$(“#sayi2″).val();
var toplam=+a + +b;
var fark=+a – +b;
SEO uyumlu link
Cuma, Mart 16th, 2012
SEO yani arama motoru optimizasyonu için haber.php?id=110 gibi manasız bir link yerine haber/bugun-teknoparka-kar-yagdi gibi semantik yani kelime bakımından anlamlı linkler çok mühimdir. Google’da “teknopark” aratıldığında bu haber sayfasının çıkması için bu şekilde link vermek, alınacak SEO önlemlerinden biridir. SEO uyumlu linkler genelde içeriğin (haber, ürün, sayfa vs) orijinal başlığındaki Türkçe özel karakterler İngilizce benzerleriyle (ö yerine o gibi) değiştirilerek ve noktalama işaretleri kaldırılıp kelime aralarındaki boşluk yerine “-” (orta tire) konarak oluşturulur ve bu şekilde kaydedilir. Gerçi bunun bir kaç taklası var. Mesela haber.php?id=110#bugun-teknoparka-kar-yagdi demek de SEO için aynı etkiyi verir. Bu örnekte yine id önplandadır, haberin içeriği id ile sorgulanarak getirilir. Sonrasında gelen #bugun-teknoparka-kar-yagdi ibaresi Google için gereken uyumu sağladığı gibi sayfadaki bu isimli bir çapaya gitmeye çalıştığından eğer öyle bir çapa yoksa zaten problem çıkarmaz. Belki SEO uzmanları iki yöntem arasında bir fark biliyorlardır ama eski tarihli bir çok siteye bu şekilde etliye sütlüye karışmayan güncellemeler yaptık ve hepsi de Google için olumlu gelişmelerle neticelendi, herhangi bir sorun yaşanmadı.
Normal bir cümleden SEO uyumlu link kodu üretmek için küçük bir fonksiyon işinizi görecektir.
function seoLink($kelime)
{
$kelime=strtolower($kelime);$sub=array(” “,”ğ”,”ı”,”ü”,”ş”,”ö”,”ç”);
$tar=array(“-”,”g”,”i”,”u”,”s”,”o”,”c”);
$kelime=str_replace($sub,$tar,$kelime);$kelime=preg_replace(“/[^a-z0-9\-]/i”,”",$kelime);
//a-z ve 0-9 arası hariç tüm karakterleri kaldırırreturn $kelime;
}
Benim sadık yarim kara konsoldur
Salı, Mart 13th, 2012
Çok uzun yazdığıma dair şikayetler devam ettiği için hemen başlayıp, kısa keseceğim :)
Unix/Linux işletim sistemlerinin bence en güzel yanı kuvvetli ve çok yetenekli bir komut yapısına sahip olması. Amiyane tabirle siyah ekran dediğimiz o terminal (konsol) ekranı aslında işletim sisteminin kendisi :)
İşte bu kara konsolun yetenekleri bazan gözlerimi yaşartıyor :) Örneğin ssh ile bağlandığınız bir sunucuda büyücek bir dosyayı kendi sunucunuza almak istiyorsunuz, FTP hesabınız da yok. Bunun envai türlü yöntemi var ama hazır dosyayla aynı makinedeyken komut satırından göndermek bence en güzeli.
İşte scp (secure copy) tam da bunun için var.
Dosya göndermek için:
#scp dosya_adi.uzanti kullanici_adiniz@sunucu.adresiniz:/sunucudaki/yazma/hakkinizin/oldugu/klasor
Dosya çekmek için:
#scp kullanici_adiniz@sunucu.adresiniz:/sunucudaki/dosyanin/oldugu/klasor /bulundugunuz/makinedeki/yazma/hakkinizin/oldugu/klasor
Bu kadar basit. Hatta -R gibi parametrelerle tek bir dosyayı değil bir klasörü komple kopyalayabiliyorsunuz.
Ofiste Mac’e doyduk..
Cumartesi, Aralık 17th, 2011
Bir sene önce Dell Vostro pc’lere iatkos kurmakla kendimizi avuturken çok şükür ofisimiz Mac Mini, MacBook Air, MacBook Pro ve iMac’lerle doldu. Evdeki Mac’lerin durumu da değişti ama sayı değişmedi. Geçen sene aldığım Air’i bir kaç ay önce daha iyi bir modeline yükseltmiştim ama ilki de hala duruyordu. Kayınbirader Mac Book Pro alıp pc eziyetine son verdiği sıralarda bizim küçük Air’e talip çıktı. Onu da başgöz ettik. Bir Mac gitti bir Mac geldi :)
Şimdi ofiste 27″ iMac kullanmanın verdiği lezzeti evde de arıyorum. Evdeki Air’den çok memnunum da, Air’e bağladığım bu Acer monitör beni mahvediyor. Şahika Hanım’ın 24″ iMac’ini mi ele geçirsem diye düşünüyorum. Ama Air de sürekli dışarda lazım oluyor. Bu sefer bütün bilgisayarlara ben el koymuş olacağım. Halbuki bu air’i de ona doğum günü hediyesi diye (!) almıştım :))))
Eskiden öyle miydi..
Üniversiteye girdiğim yıllarda iki arkadaş ancak ortaklaşa bilgisayar alabilmiştik hem de ikinci el. Üniversitede laptopu olanlar karton kutuları ile okula getirip götürüyorlardı. O derece lüks ve rüküş bir durumdu yani :) Üniversiteden sonra Gebze’deki enstitüde bir derse katılmıştım, ders çıkışında hoca laptopunu çantaya koymadan önce talep eden çocuklara konuyla alakalı dökümanları cd’ye yazıp verince “Budur! Laptop almam lazım” demiştim ve bilmem kaçıncı toplama pc’mi ablama satıp Compaq marka ilk laptopumu almıştım. O zamanlar Ankara’da yedek subaylık yapıyordum. Laz aklımla o laptopu nöbette film falan izlerim diye karargaha götürmüştüm. Ertesi gün çıkarken kapıdaki uzman çavuşlar bilgisayarıma el koymuşlardı. Kendi komutanıma koşup durumu izah ettim ama daha sonra astsubayımdan öğrenmiştim ki beni ihbar eden de kendi komutanımmış meğer :) Neyse ki 9 gün sonra bilgisayarıma geri kavuşmuştum. Ama o 9 gün neler çektim bir Allahü Teala bilir.
Compaq iyice haşat olduktan sonra dünyanın en büyük saçmalığını yapıp yerli marka bir laptop almıştım: DATRON!
Hala bu marka yaşıyor mu hiç bir fikrim yok, googling bile yapmak istemiyorum. Datron garanti kapsamındayken cozurdadığında aynı modelden artık üretilmediği için daha üst modelini ZORLA fark ödeyerek almak mecburiyetinde bırakılmıştım. Bir Gönen ziyaretinde yukarıda bahsi geçen kayınbiraderimin bilgisayarı Call Of Duty’i çatur çutur oynatırken bendeki Datron’un hiç oralı olmadığını görünce anında üç kuruşa oracıktaki komşuya bilgisayarı satıp o zamanın en iyi konfigürasyonlarından ASUS N61VN alma gafletinde bulundum. O gece nasıl bir yağmur yağıyordu, görmeliydiniz.
Asus’a lafım yok, hem şık hem sağlam bir bilgisayardı. Ama ennihayetinde şimdi benim için sadece bir PC! Asus’u aldıktan bir kaç ay sonra belki de o sıralarda ofiste bu yazının en başlarında bahsettiğim Dell Vostro’lar ortaya çıktı. “Bunlara Mac Os kurulabiliyor, XCode deneriz” gazı ile saldırdık. Çok da güzel kurulumlar yaptık ve sorunsuz kullandık. Bir iki hafta öncesine kadar hala o bilgisayarlar aynı işletim sistemiyle duruyorlardı.
İşte bu kısımları net hatırlamıyorum, evlilik yıldönümümüze 2 hafta kala Şahika Hanım’la bir delilik yapıp Darty’e gittik ve ne kadar kredi kartımız varsa ortaya koyup bir iPhone 3G bir tane de -aaaah kafam ah- Samsung i900 Omnia aldık. 250 TL daha ödeyip ben de iPhone alsaydım ömrümden 2 sene, cebimden de 2-3 bin TL gitmezdi.
İşte çok şükür o iPhone ile başlayan Apple serüveni 2-3 sene içerisinde çok hızlı bir aksiyona sahne oldu. Hanıma iMac aldık, sonra Mac Mini geldi, ofisten iPad ele geçirdik, Mini gitti Air geldi, o gitti yenisi geldi, kayınço Mac Book Pro aldı, ofise iMac geldi, iPad 2′ler geldi vs vs..
Tabi bu gidip gelmeler kredi kartlarında vahim rakamları beraberinde getirdi. Ama Mac kullanmak nasıl bir keyif veriyorsa arkadaş, o ekstreleri hiiiiç takmadık :) Biz takmayınca banka bize taktı, o da ayrı bir yazının konusu :) Ama çok şükür şimdi kartlar da yoook, ekstreler de yook, dert de yok.
Eğer okuduysanız uzun bir yazı oldu kusura bakmayın. İnsanlık hali, yaş ilerliyor, unutkanlık aldı başını gidiyor. Buraya karalayayım da nasip olursa ilerde okur eski günleri yad ederim diye lafı uzattık.
Her ne sürç-ü lisan ettiysek affola..
MySQL’de bozuk view’ların detayını görmek
Cuma, Aralık 9th, 2011
MySQL view’ları siz view’i oluşturduğunuz tabloda yapısal değişiklikler yaptığınızda bozulurlar. Kullandığınız veritabanı istemcisine bağlı olarak MySQL’deki bozuk viewlarınızı oluşturan sorguyu göremeyebilirsiniz. PhpMyAdmin gösterir mesela. Göremediğiniz view’ın içeriğini not almamışsanız düzeltmek için epey terlemeniz gerekir.
Eğer istemciniz bozuk view’ları göstermiyorsa şu query’i kullanarak view detayını bozuk da olsa alabilirsiniz.
select view_definition from information_schema.views where table_name = “buraya_view_adi_gelecek”;
CSS: Float nesnelerde kalan genişliği kullanmak
Pazar, Kasım 27th, 2011
Mevzu başlıktaki gibi kolay ve tek satırda hallolmuyor malesef. Amacım resimde gördüğünüz gibi yanyana iki div koymak ve bunlardan birisi sabit genişlikte iken diğer div’in kalan alanın tamamını kullanmasını sağlamak.
Fatih Hayrioğlu’nun sitesinde bulamayınca Google’da aradım ama Türkçe örnekler malesef netice vermedi. Stackoverflow.com’da şu sayfadaki Andres kullanıcısının örneği işe yaradı.
Bu işlem için evvela bu iki div’i taşıyacak bir div daha gerekiyor. Dışardaki div’e dar ve sabit genişlikli olan div kadar padding-left vermek gerekiyor ki geniş alan bu mesafeden başlasın ve %100 genişliğine sahip olmasına rağmen padding’den dolayı sadece kalan alanı kullanabilsin. Bu kısım çalıştığında aslında işin zor kısmı bitmiş oluyor. Geniş olan div’in sabit bir alan hariç tüm ekrana yayılmasını sağladık.
İkinci olarak da dar ve sabit genişliğe sahip div’i kapsayıcı alandaki padding’den oluşan boşluğa konumlandırmak gerekiyor. Normalde bu div de ana div’in içerisinde yer aldığından padding-left’ten etkilenecektir. Bu etkiyi sıfırlamak için kendi genişliği kadar negatif değerli margin-left kullanıp kendini taşıyan div’in dışına çıkmasını sağlamalıyız. Bu kadar.
Örnek:
CSS
.kutu {
height: 200px;
padding-left: 260px;
}.kutu .dar {
height: 200px;
width: 260px;
margin-left: -260px;
background-color:blue;
float:left;
}.kutu .genis {
float: left;
height: 200px;
width: 100%;
background-color:green;
}
HTML
<div class=kutu>
<div class=dar>Dar</div>
<div class=genis>Genis</div>
</div>
Örnek dosyayı indirmek için tıklayın.
Svn: Server certificate verification failed!
Pazartesi, Ekim 24th, 2011
Mac’deki yetersiz ama gelecek vaadeden sevimli Php editörüm Coda geçen gün feci bir kazık attı bana. Şirket projelerini tuttuğumuz svn sunucunun ssl sertifikasını güvensiz buldu ve projeyi indirmeme izin vermedi. Bunu daha global bir yöntemle halledemez miyim, mac’a bu sitenin güvenli olduğunu zorla ikna edemez miyim diye arkadaşlarıma sordum ama olumlu bir cevap alamadım. Default tarayıcının ayarlarıyla siteyi güvenli olarak kabul etmek gibi kolpa girişimlerim de işe yaramadı :) Meğer doğru bir yol üzerindeymişim. Zira bu akşam yine küçük bir googling yaparak asıl aradığım çözüme hem de çok basit bir şekilde ulaştım. Zaten dikkat ederseniz son bir kaç yazım çözümü çok basit şeyler çıkıyor. Unix’i bu yüzden seviyorum işte :) Çözüm hem basit hem de transparan. Nereye ne verdiğinizi görüyorsunuz. Neyse dallanmayalım.
Mac’e o sertifikanın güvenli olduğunu doğrulatmak istiyordum ya, asıl mesele mac’deki svn’e o sertifikanın doğru olduğunu kabul ettirmekmiş. Bunun için de komut satırından şu ifadeleri girmeniz ve karşınıza gelen soruya gönlünüzden geçen cevabı vermeniz kafi.
svn ls https://sertifikasisoruncikaran.com
Sistem size bu adresi kabul edip etmeyeceğinizi soruyor. (P)ermanently diyerek kalıcı olarak kabul edip gönül rahatlığıyla Coda’nızı kullanmaya devam edebilirsiniz.
Write failed: Broken pipe
Pazar, Ekim 23rd, 2011
İşim gereği sürekli uzaktaki makinelere komut satırından bağlanmam gerekiyor. Ofisteki internet bağlantısından bunu yaptığımda sabah açtığım oturum akşama kadar açık kalabiliyor. Evdeki Kablo.Net bağlantısında ise 2 dakika o pencerede işlem yapmadıysam bağlantı asılı kalıyor, bir kaç dakika sonra da “Write failed: Broken pipe” yazıyor ve kendi komut satırıma düşmüş oluyorum.
Bu akşam canıma tak etti ve minik bir google’ing yaptım. Çözümü buraya da yazayım ki siz de kolay bulun, ben de kolay bulayım ;)
Kendi komut satırınızdayken şu ifadeleri çalıştırarak ssh_config dosyanızı güncelleyin:
echo "ServerAliveInterval 60" >> ~/.ssh/config
Kaynak: http://nextspaceship.com/2011/09/how-to-solve-broken-pipe-message-in-ssh-session/
Form’u sayfadakinden farklı bir charset ile göndermek
Salı, Eylül 27th, 2011Hiç iso-8859-9 charsetinde hazırlanmış bir sayfadan utf-8′e göre hazırlanmış başka bir sayfaya form datası göndermeniz gerekti mi? Bize gerekti. Kütüphane web sitemiz biraz eski kalmış ve iso-8859-9 formatında hazırlanmış. Yeni kurulan kütüphane yazılımı ise utf-8′e göre hazırlanmış. Web sitesindeki arama kutucuğuna “ağaç”,”şair”, “ırmak” gibi Türkçe özel karakter içeren kelimeler yazdığınızda karşı tarafa a?a?, ?air, ?rmak gibi abuk subuk karakterler gittiğinden aramalar sonuç vermiyordu haliyle.
Bu sorunu gidermek için önce utf8′e çeviren javascript fonksiyonlarını inceledim. Malesef bulduğum bir kaç tane fonksiyon sadece belli karakterleri düzeltiyordu.
Aramaları biraz daha derinleştirince formların accept-charset diye tam bu iş için hazırlanmış bir özelliği daha olduğunu öğrendim. Sayfanın charset’i ne olursa olsun form’a accept-charset=utf-8 yazabiliyormuşuz. Yazdım, fıstık gibi çalıştı. Fekaaat! Her zamanki gibi Internet Explorer bu özelliği desteklemiyor.
Neyse ki onun da çözümü varmış. Forma aşağıdaki öğeyi eklediğinizde sorun çözülüyor:
<input type=”hidden” name=”enc” value=”™”>
