Genel

htaccess ile Mobil Yönlendirme

Tamer tarafından, 04 16 2015 14:25:00 tarihinde yayınlandı.

Bazen işin kolayına kaçmak gerekir... Yada bazen kolay yöntem tek yöntem oluverir...

 


RewriteEngine on 
RewriteBase /   
RewriteCond %{HTTP:x-wap-profile} !^$ [OR] 
RewriteCond %{HTTP:Profile}!^$ [OR] 
RewriteCond %{HTTP_USER_AGENT} "acs|alav|alca|amoi|audi|aste|avan|benq
|bird|blac|blaz|brew|cell|cldc|cmd-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "dang|doco|eric|hipt|inno|ipaq|java|jigs
|kddi|keji|leno|lg-c|lg-d|lg-g|lge-" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "maui|maxo|midp|mits|mmef|mobi|mot-|moto
|mwbp|nec-|newt|noki|opwv" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "palm|pana|pant|pdxg|phil|play|pluc|port
|prox|qtek|qwap|sage|sams|sany" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "sch-|sec-|send|seri|sgh-|shar|sie-|siem
|smal|smar|sony|sph-|symb|t-mo" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda
|w3cs|wap-|wapa|wapi" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "wapp|wapr|webc|winw|winw|xda|xda-" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "up.browser|up.link|windowssce|iemobile
|mini|mmp" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "symbian|midp|wap|phone|pocket|mobile
|pda|psp" [NC] RewriteCond %{HTTP_USER_AGENT} !macintosh [NC] RewriteCond %{HTTP_HOST} !^m\. RewriteCond %{QUERY_STRING} !(^|&)m=0(&|$) RewriteCond %{HTTP_COOKIE} !^.*mredir=0.*$ [NC] # Yukardaki kriterler uyuyorsa eğer RewriteRule ^ http://m.website.com [R,L]
Etiketler : Yazılım, Genel

Javascript Çatıları

Tamer tarafından, 07 16 2014 16:34:00 tarihinde yayınlandı.

Merak ettimde Javascript'da en çok hangi çatılar kullanılıyor ?

Bower

Twitter tarafından geliştirilen ve arayüz geliştiricileri için dizayn edilen javascript paket yöneticisidir. Bower JavaScript kütüphanelerini yönetirken çok büyük kolaylık sağlamaktadır. İhtiyaç duyulan tüm javascript ve css kontrol eder ve yükler. Bower paket yöneticisi  SEMVER (Semantic Versioning) yapısını kullanmaktadır. Yüklenen paketler arası versiyonlar, eğer başka paketlere çakışmıyorsa en güncel versiyonu yükler.   

Daha fazla bilgi için
bower.io


Modernizr

Tarayıcıların gelişen web teknolojilerine destek vermek amaçlı oluşturulan javascript kütüphanesidir. Özellikle sonb yıllarda HTML5 ve CSS3 kullanılmaya başlamasından sonra Internet Explorer ve Safari gibi gelişkin olmayan tarayıcılarda çeşitli sorunla çıkabiliyordu. İşte bu ihtiyaca binayen Modernizr farklı tarayıcılara destek verebilme özelliği sağlıyor.

Daha fazla bilgi için Modernizr.


jQuery

jQuery sanırım hepiniz biliyorsunuzdur. Çünkü gerçekten çok populer ve yaygın. Yine bildiğimiz kadarıyla animasyon ağırlıklı kullanılan bir javascript çatısıdır.

Daha fazla bilgi için jQuery.

 

Mocha

Mocha zengin özellikli test için dizayn edilmiş web arayüzde çalışan Javascript kütüphanesidir.Mocha ile ilgili gerekli şeyleri daha sonra sizinle paylaşacağım.

Daha fazla bilgi için Mocha.


Angular.js

Az kod yazıp çok iş yapmaya yarayan bir Javascript çatısıdır. İçerisinde ihtiyaç duyulan her türden fonksiyonun bulunduğu geniş bir araçtır. Her ne kadar yaygın olmaması nedeniyle çekimser bakılsada Google tarafından desteklenen ve artık gerekli hale gelen bir çatıdır.

Daha fazla bilgi için Angular.

Etiketler : Jquery, Javascript, Yazılım, Genel

UTF-8 BOM Sorunu

Tamer tarafından, 01 26 2014 22:00:00 tarihinde yayınlandı.

Bom dosyanın en başında bir simge olarak bulunur. BOM simgesi işe ““şeklindedir ve dosyanın UTF-8 olduğunun anlaşılması için bazı sistemlerde kullanılabilir.

Gelelim bu yüzden ortaya çıkan doğal sorunlar. Bildiğiniz gibi bir çok php komudu boşluk kabul etmez ve sayfa yüklenirken php'yi yapatmadan önce çalışması gerekmektedir. Örneğin: header komutları ve session komutları gibi.

“Warning: Cannot modify header information – headers already sent by…” ile başlayan bir hata alınabilmekte.

Eğer böyle bir sorunla karşılaşmış ve hangi dosyanın Bom'lu veya Bomsuz olduğunu bilmiyorsanız çözümü var.

1. Konsol Yöntemi

Linux'ta da dosyaları bir sürü dönüştürmek için recode veya iconv gibi komut satırı araçlarını kullanabilirsiniz. Aşağıda projem/ ve alt-dizinlerinin her php dosyasını çeviren bir komut zinciri:

$ cd projem/
$ for i in $(find -name '*.php'); do encoding=$(file -bi "$i" | 
sed
-e 's/.*[ ]charset=//'); iconv -f $encoding -t UTF-8 -o "$i" "$i"; done

Bu sayede projem klasörüne bağlı büyün dosyaları utf-8 bomsuz olarak ayarlayabilirsiniz.

2. Windows için Notepad ++
Windows kullanıyorsanız Notepad ++ ile dosyaları UTF-8 bomsuz olarak kaydete bilirsiniz.

3. Son Çare

Son çare olarak başlangıç dosyanıza bu kodu ekleyerek utf-8 bomsuz dosyayı include eder etmez çevirebilirsiniz.

index.php

ob_start('My_OB');
function My_OB($str, $flags)
{
    // UTF-8 BOM'i yakalıyor
    $str = preg_replace("/\xef\xbb\xbf/","",$str);
    return $str;
}
Etiketler : Yazılım, PHP, Genel

PHP'de "0" ve "1" değerinin boolean karşılığı

Tamer tarafından, 05 03 2013 07:23:00 tarihinde yayınlandı.

"0" değerindeki bir değişkenin boolean'a çevrimi false'dır.
"1" değerindeki bir değişkenin boolean'a çevrimi ise true'dur.
Bu tip değişkenleri(değeri 0 veya 1 olan) if else komutlarında değiştirmeden denerseniz yine boolean'a çevrilmiş gibi hareket eder örneğin;


$degisken = 1;
$degisken = (bool) $degisken;
var_dump($degisken);
/*
Çıktısı:
bool(true)
*/
$degisken = 0;
$degisken = (bool) $degisken;
var_dump($degisken);
/*
Çıktısı:
bool(false)
*/

if(!0){
echo '0 != true';
}
/*
Çıktısı:
0 != true
*/

 
Etiketler : Veritabanı, PHP, Genel

PHP array key 2147483647'den sonra ?

Tamer tarafından, 05 03 2013 06:20:00 tarihinde yayınlandı.

PHP ile dizi fonksiyonları ile çalışmak en sevdiğim uğraşlardan biridir. İç içe geçmiş ağaç yapıları, uzun soluklu döngüler ve değer tutucular... Hemen  hemen her şeyde başı diziler çeker. Bugünkü yazımda sizi diziler ile ilgili farklı bir konuya götürmek istiyorum.


$dizi[20] = "şapka";
$dizi[] = "kravat"; // peki anahtarı ne olarak tanımladı ? 0 mı ?

print_r($dizi);
/*
Çıktısı
Array ( [20] => şapka [21] => kravat )
*/

Yukarda tanımladığım ilk $dizi değişkeninin dizisine anahtarına(key) 20 tanımladım. daha sonrada boş anahtarına(key) tanımladım.  Hemen altında boş anahtar(key) tanımladığım değeri "kravat" olan $dizi değişkenin anahtar numarası 21 oldu. burada anlaşılan daha önce tanımlanan varsa onun üzerine +1 ekliyor.

not: Eğer char olarak tanımlasaydım değeri "kravat" olan dizinin anahtarı 0 olacaktı.


$dizi[2147483647] = "şapka";
$dizi[] = "kravat"; // peki anahtar değeri ne olarak tanımladı ? 2147483648 mi ?

print_r($dizi);
/*
Çıktısı
Error: [2] Cannot add element to the array as the next element is already occupied
Array ( [2147483647] => şapka )
*/

Açıkcası ilk seferde yukardaki hatayı vermesinin sebebini anlamamıştım. Anlaşılan dizi anahtarları "2147483647" sayısına kadar tanımlanabiliyordu. Aniden aklıma bu bir şifre olabilir gibi komplo teorileri geldi ve şunu denedim :



print(date("d.m.Y H:i:s",2147483647));
/*
Çıktısı
18.01.2038 22:14:07
*/

Cevap ürkütücü :)
Evet 2038 yılı bu Ankara Belediye Başkanı'nın 2038'de Ankara'nın ulaşım problerini çözeceği vaade mi işaret ediyordu ? Tabiki başka birşey peki ney ?

Cevabı internette ararken şuna rasladım...

2038 yılı problemi,
2038 yılında bazı POSIX zaman gösterimini kullanan 32-bit sistemlerin çökmesine yol açacak bir yazılım hatasıdır.

Hata, sistem zamanını 1 Ocak 1970 tarihinden beri saniye bazında hesaplayan ve 32-bitlik UNIX ve türevi sistemlerde 19 Ocak 2038 Salı günü saat 03:14:07'de sayacın başa dönmesiyle sistem tarihinin 13 Aralık 1901 20:45:52'yi göstermesiyle ortaya çıkacaktır. Son yıllarda bazı çözüm yöntemleri geliştirilse de hiçbiri basit ve uygulanabilir olamamıştır. Ancak 64 bit'li sistemlere geçişin 2038 yılına kadar tamamlanacağı ve böylece hatanın kendiliğinden ortadan kalkacağı düşünülmektedir.
wikipedia

Etiketler : Yazılım, PHP, Genel
1 | 2 | 3 | 4