Archive for Aralık, 2011
php dns sorgusu
Php ile dns sorgusu, mevcut dns serverlara php nin network fonkisiyonları içinde yer alan fsockopen ile yapılıyor. mantık şu. bu fonkisiyon, dns server a domain ismini soruyor. serverda cevap veriyor. bu sorgu serverlara 43. portu üzerinden soruluyor.. Örnek
$server = "whois.crsnic.net";
$port = 43;
$domainname = "galibarda.com";
if(($ns = fsockopen($server,$port)) == true)
{
fputs($ns,"$domainname\r\n");
while(!feof($ns))
$cikti= fgets($ns,128);
fclose($ns);
}
echo $cikti;
tabi her dns servera her domain i soramıyoruz. örneğin
crsnic.net servere sadece com-net uzantılı domainlere bakıyor.
Yani com.tr yi bu serverdan sorgulayamayız. Domain ismine göre kullanabileceğimiz
server listesi
<?php $WHOIS_SERVERS = Array( "com" => "whois.crsnic.net", "net" => "whois.crsnic.net", "org" => "whois.publicinterestregistry.net", "edu" => "whois.crsnic.net", "biz" => "whois.neulevel.biz", "info" => "whois.afilias.info", "us" => "whois.nic.us", "uk" => "whois.nic.uk", "ca" => "whois.cira.ca", "de" => "whois.nic.de", "ws" => "whois.nic.ws", "au" => "whois.ausregistry.net.au", "nu" => "whois.nic.nu", "in" => "whois.registry.in", "tel" => "whois.nic.tel", "ie" => "whois.iedr.ie", "tw" => "whois.twnic.net.tw", "tv" => "whois.nic.tv", "ch" => "whois.nic.ch", "eu" => "whois.eu", "it" => "whois.nic.it", "cn" => "whois.cnnic.net.cn", "mobi" => "whois.dotmobiregistry.net", "cc" => "whois.nic.cc", "asia" => "whois.nic.asia", "pro" => "whois.registrypro.pro", "hk" => "whois.hknic.net.hk", "me" => "whois.meregistry.net", "be" => "whois.dns.be", "se" => "whois.nic.se", "ca" => "whois.cira.ca", "nz" => "whois.domainz.net.nz", "nl" => "whois.sidn.nl", "tr" => "whois.nic.tr" );?>
QT Nedir?
QT , arkasına nokia nın desteğini almış, c++, java yada qml dillerinde uygulama geliştirebileceğimiz, esasında benzerlerine çok benzer:) bir uygulama platformudur.
Peki neden meşhur? neden vazgeçilmez.. Neden visual c++ değil de qt?
En önemli nedeni, c++ ye java gibi bir kere yaz her yerde kullan özelliğinin bir bölümünü kazadırıyor. yani java ile yazılmış kod, derlendikten sonra her platformaa çalışırken, qt ile yazılmış kodu, herhangi bir değişiklik yapmadan, o platform için derlemek mümkün. Peki java mı daha üstün derseniz. Hayır? Çünkü java çalışmak için sanal bir işleyiciye ihtiyaç uyar. O işleyici olmadan çalışmaz. Qt nin ise böyle bir derdi yoktur.
Daha açıklayıcı olmak gerkirse..
Örneğin Windows ile yazığımız kodlarda win32.dll nin bize sunduğu nimetlere göre kod yazmak zorundayız diyelim. Aynı kodu linux te çalıştırmak istesek, win32 nin yerini kernel çekirdeği alır. Bu kez kodları ona göre çevirmemiz gerekir. İşte QT burada devreye giriyor. Her platform için ortak yazılmış, çok geniş kütüphanesiyle hangi platform için kodlama yapıyorum tasasını ortadan kaldırıyor..
Ve platform bağımsız demişken, bağımsız olduğu platformlara mobil işletim sistemleri de dahildir. Yani Nokia nın symbian ı başta olmak üzere, android ve iphone OS için de uygulama yazmak mümkün.
Ayrıca yazmadan geçemiyeccem
Qt is fast to learn and easy to use. :)
QT nin en güzel özelliklerinden biri de, türkçe olmasa da öğrenmek için pek çok mataryel olması. Özellikle Qt ile kafayı bozmuş bir adamın youtube sayfasını tavsiye ederim
http://www.youtube.com/user/VoidRealms
QT nin kullanım Alanları
mysql de verinin bir kısmı çekmek – SUBSTR()
Özellikle WordPress gibi sistemler, veri tabanında bulunun uzun uzun yazıların bir kısmını özet olarak gösterirler. Veritabanınaki tüm veriyi çekip bunu php ile kırpmak ta mümkün tabi . Eğer veri uzunsa bu ciddi performans kaybına sebep olacaktır.
Gelelim mysql de verinin bir kısmını almamızı sağlayan fonksiyona
SUBSTR(tabloadi, baslangicKarakter, bitisKarekter)
sitemde kullandığım örnek bir sql sorgusu şu şekile
$sql =”SELECT `galibarda_gonderiId`,`galibarda_gonderiYazarId`,`galibarda_gonderiBaslik`,
`galibarda_gonderiUrl`,SUBSTR( `galibarda_gonderiIcerik` , 1, 10 )FROM `galibarda_gonderi` “.’ WHERE ‘.ONEK.”gonderiTuru = ‘”.$gonderiTuru.”‘ ” ;
bu kod gonderilerin icerik sutunundan 1 den 10 uncu karaktere kadar olan kısmını alıyor..
Diğer bazı Mysql Fonksiyonları ise şu şekilde
Tablo kaynak : http://turgaysahtiyan.com/
| Function | Açıklama | Kullanım | Sonuç |
| ASCII | Verilen karakterin ascii karşılığını verir. | ASCII(‘D’) | 68 |
| CHAR | Verilen ascii kodun char karşılığını verir. | CHAR(68) | D |
| CHARINDEX | Verilen ilk string in ikinci string de ki başlama posizyonunu verir. Bulamazsa 0 döndürür. | CHARINDEX(‘turgay’, ‘Naber turgay sahtiyan’) | 7 |
| LEFT | Verilen string in baştan verilen karakter kadar olan kısmını döndürür. | LEFT(‘turgay’,2) | tu |
| LEN | Verilen string in uzunluğunu verir. | LEN(‘turgay’) | 6 |
| LOWER | Verilen string i küçük harflere döndürür. | LOWER(‘TuRGaY’) | turgay |
| LTRIM | Verilen string in solunda ki boşlukları siler. | LTRIM(‘ turgay’) | turgay |
| REPLACE | String değiştirmek için kullanılır. | REPLACE(‘turgay’,'rg’,'aa’) | tuaaay |
| REPLICATE | Verilen string i verdiğiniz sayı kadar yanyana yazar. | REPLICATE(’1′,3) | 111 |
| REVERSE | Verilen string i ters çevirir. | REVERSE(‘turgay’) | yagrut |
| RIGHT | Verilen string in sondan verilen karakter kadar olan kısmını döndürür. | RIGHT(‘turgay’,2) | ay |
| RTRIM | Verilen string in sağında ki boşlukları siler. | LTRIM(‘turgay ‘) | turgay |
| SPACE | Verilen sayı kadar boşluk karakteri döndürür. | ‘turgay’+ space(2)+ ‘sahtiyan’ | turgay sahtiyan |
| STR | Verilen double sayıyı string e dönüştürmeye yarar. 3 parametresi vardır.1.double sayı,2.string in toplam uzunluğu,3.decimal kısmın uzunluğu | STR(123.45, 6, 1) | 123.5 |
| STUFF | 2. parametre de verilen sayı kadar kısmı 1.string den siler ve onun yerine 2.string i ekler. | STUFF(‘turgay’, 2, 3, ‘sahtiyan’) | tsahtiyanay |
| SUBSTRING | Verilen string den belli bir kısmı almaya yarar. | SUBSTRING(‘turgay’, 2, 3) | urg |
| UPPER | Verilen string i büyük harflere döndürür. | UPPER(‘TuRGaY’) | TURGAY |
Ayrıca mysql string fonksiyonları
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html
php mysql türkçe karakter sorunu
En son söylemem gerekeni en başta söyleyim. Bu makaleyi okuyorsanız muhtemelen benim aşağıda anlatacağım ayarları yapmış ve hala sonuç alamamışsınızdır. Aslında ne php nin ne de mysql in türkçe karekter sorunu yok. Ayarları yaptınız ve hala düzelmediyse sorun editorunuz kodlama biçimindedir. Bu sorunu çözmek içik kullandığınız metin editorunun varsayılan kodlamasının utf-8 withou BOM yada türkçesi bom suz utf-8 olarak ayarladığınızdan emin olun. Bom suz ayarlayın ki, ilerde bir de çerez-oturum sorunu yaşamayasınız diye.
Gelelim ayarlara..
1-)Browser ayarı..
Bu ayar aslında en basittidir. web siteniz html kodlarına
<meta content=”text/html; charset=utf-8″ http-equiv=”content-Type”>
2-)Mysql Ayarı
a-)Öncelikle mysql de veritabanı oluştururken mysql in karakter setini UTF-8_general_ci yapın.
b-)Klasik bir php mysql bağlantı kodu şu şekildedir
mysql_connect("localhost", "mysql_user", "mysql_password") or die("Could not connect: " . mysql_error()); mysql_select_db("mydb"); $result = mysql_query("SELECT id, name FROM mytable"); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { printf("ID: %s Name: %s", $row["id"], $row["name"]); } mysql_free_result($result);
bu kodun select_db kısmından sonra yani veritabanı tablo adı seçildikten sonra aşağıdaki kodu ekleyin
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET utf8");
Şu şekilde görünmeli
mysql_connect("localhost", "mysql_user", "mysql_password") or die("Could not connect: " . mysql_error()); mysql_select_db("mydb");//sonradan eklenen kodlarmysql_query("SET NAMES 'utf8'"); mysql_query("SET CHARACTER SET utf8");$result = mysql_query("SELECT id, name FROM mytable"); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { printf("ID: %s Name: %s", $row["id"], $row["name"]); } mysql_free_result($result);
Tüm bunları uyguladım ama hala sorun yaşıyorum diyorsanız makalenin en başına geri dönüp metin editorunuzle ilgili ayarları yapın.
Eğer aynı anda benim gibi birden fazla editor kullanıyorsanız muhtemelen yine sorun yaşayacaksınız.
Kolay gelsin.
Google Seo İncelikleri
Arama motorlaronda önde çıkmak, bir websitesinin temel amacı haline geldi. Neredeyse bütün www, google üzerinden yönlendiriliyor. Facebook.com yazmak yerine google a face yazmak kolayımıza geliyor:)
Her neyse gelelim google da üst sıralara nasıl geliriz e..
Google ın doymak bilmek, tüm web i kendine ait görme dürtüsü çıkmadan önce, arama motorları sadece web sitelerini meta etiketlerine bakarak aramakla yetiniyordu. Örmek Miliyet in kısaltılmış meta etiketleri..
<meta name=”keywords” content=”Milliyet, gazete, medya, journalist, economy, advertisement, finance, Turkey ” /><meta name=”description” content=”Milliyet Gazetesi’nin internet dünyasındaki TV ” />
Google ise, tüm içeriği kopyalayıp, kimseyle paylaşmadığı kendi algoritmasına göre içeriğe puan vererek bu sıralamayı gerçekleştiriyor. Üst sıralarda çıkmak için hiç kuşkusuz en önemli olay İçeriğin, aranan kelimeyle uyuşması.. Bununla birlikte baktığı bir kaç nokta daha var.
- Web sitesini <title>Başlık</title> etiketinde aranan kelime var mı?
- URL. Web sitesinin url sine aranan kelime var mı?
- Sitenin <meta name=”description” > etiketleri arasında arana kelime var mı?
Google, standardı sever. Standardı ise kullanıcı dostu olması açısından koyar.
Kullanıcı dostu Url nasıl olur . http://galibarda.com/kategori/google-seo-incelikleri
Google, seo çıkmadan önce bu linkler, genellikle şu şekildeydi
http://galibarda.com/kategori.php?id=1202
Tabi Tüm bunların olması aranan kelimeyle ilgili en üst sırada çıkmanızı garanti etmez. Ama Hiç Şüphe yokki, bunlar site için çok önemli.
*Google ın en önem verdiği şey, verinin güncelliği. Kendi yazdığımız bir makale, başka sitelerden kopyalanmış onlarca sayfa yazıdan daha verimlidir google açısından.
*Tabi google ın dikkat ettiği başka bir nokta ise, websitesine giden başka sitelerdeki linkleriniz. Yani mantık şu, içerik kaliteyse, diğer siteler sizin sitenize bağlantı vermiştir..
Google a + puan almanın başka ince hesapları da var. Bunlardan aklıma gelenleri yazmaya devam edeyim.
*Linklere açıklama eklenmesi
örnek BU LİNK SEO UYUMLUDUR
*Resimlerin isimleri ve resimlere açıklama eklenmesi
*Html kodu olarak, önemli içeriğin <h1> <h2> gibi uygun html etiketlerine sahip olması
ve Tabi Omazsa Olmazlar.
- Robots.txt
- XML SiteMap
- rss atam beslemeler
Peki Başka?
Seo, Başlı başına bir derya deniz. Bu konuyla ilgili danışman şirketler bile mevcut.Bu konuda yapılacaklar bitmek bilmez. Ne zamanki, sitenizi google a ilk sayfa da görürsünüz, o zaman başarılı olmuş sayılırsınız..
*Bence artık ilk zamanki kadar etkisi olmayan ama hala uygulanmasında fayda olan, etiket bulutu sistemi.
*http://www.google.com/analytics/ nimetlerinen faydalanma. Websitenize kim, hangi kelimeyi arayarak gelmiş, nerden gelmiş nereye gider.
*http://www.google.com/support/webmasters/ adresineki google un sunuğu webmaster nimetleri.
php Session hatası -Localhosta calısan serverda hata veren kod
Biraz uzunca bir başlık oldu ama, localhost ta çalışıp, serverda hata alınca buna benzer bişe yazmıştım google a.
Php nin vazgeçilmez oturum fonksiyonu session lar, sayfaya hiçbir çıktı almadan çalıştırılmalı
session_start();
Tabi oluşturduğumuz session değişkenlerini değiştireceksekde aynı durum geçerli.
Localhost ta çalışıpta serverda neden çalışmaz? Yani çözümü birazdan yazacam ama orda sorun olup local de olmaması ilginç. Sanırım işletim sisteminin umursamazlığıyla ilgili bişe.
Php Serverlar genelde Linux oluyor ve bizim local de yine genelde winows olunca, sanırım fark birazda burdan kaynaklanıyor..
Neyse gelelim çözüme. Her ne kadar kodları UTF-8 olarak kodlasakta, bazı derleyiciler sayfanın başına BOM (Byte Order Mark) işaretini ekliyor.

Bu yüzden de server, session(oturum) başlamadan sayfanın başında bu işareti tarayıcıya gönderiyor ve sonuç.
Warning: session_start(): Cannot send session cookie – headers already sent by (output started at /hsphere/local/home/wwwuser/test/login.php:1) in
Çözüm ise Session başlamadan önce include yaa require ettiğimiz e diğer dosyalarda dahil, php dosyamızı utf-8 without boom yani boomsuz olarak yeniden kaydetmek..
galibarda.com
–GaLiBardA–
Benim için ne kadar değerli oluğunu en iyi kendisi bilen Sayın Gülten Uz hanımefendinin isim annenliğini yaptığı, anlamı kırmızı ve mavi ışığın eşit oranlarda karıştırılmasıyla oluşturulmuş magenta diye bilinen rengin türkçe si olan müstakbel websitemin adı.
Mora çalan kırmızı olarakda bilinir.:)
BU YAZININ RENGİ GALİBARDA dır.
Galibarda renginin hex değeri “#FF00FF”, RGB değeri “255, 0, 255″, ve CMYK değeri “0,100, 0, 0″ dır.
Müstakbel sitem diyorum, çünkü site WordPress alt yapısını kullanıyor. Esasında bir blog websitesinin tüm ihtiyaçlarına karşılık verecek kadar gelişmiş bir hazır site şablonu olsa da ben kendi yazdığım kodlarla yayınlamayı tercih ederim. Bu yüzden de biraz buruğum aslında.Çünkü websitem bitmek bilmiyor.
Her gün yeni bir eklenti yazma gereği duyuyorum. Kodlama hastalığı. Sanki websitemin kodlarını benden başkaları da kullanacakmış gibi yazdığım için, en hızlı ve en uygun kodu yazmaya çalışıyorum. Bugun yazdığımı yarın beğenmiyorum. Hal böyle olunca, sitede bitmek bilmiyor:)
Bende en azında bitene kadar, bir blog sitesi açmış olmak adına, sonunda wordpress in gücüne yenik düşmüş oldum:) Sonuçta bu işin bir de SEO (search engine optimization) kısmı var. Google için ne kadar eski ve ne kadar güncelse o kadar değerli oluyor websiteleri.
Sitenin içeriği, genelde Programlama ve Algoritma mantığı üzerine olacaktır. Tabiki blog site olması dolayısıyla, kendimden enstantanelerde olacaktır.:)
mrb www
Klasik Programcı Alışkanlığı.”Merhaba Dünya” ya da “HELLO WORLD”.
Yeni bir programlama diline girişte genelde çıktı alınırken ilk olarak “Hello World” yazdırılır. Programcılığın klasiğidir. Bense üşengeçliğimden dolayı hiçbir zaman bunun tamamını yazmamışımdır. Genelde sesli harfleri eksik yada “mrb” ile başlarım.



