30 Eylül 2013 Pazartesi

DevFestler, Google tarafından yazılım geliştiricilerini bir araya getirmek üzere her yıl düzenlenen konferanslar dizisidir. Google, 2011’den itibaren bu konferansların organizasyonunu GDG’lere (Google Developer Group) bırakmıştı. Bu yıl Kasım ayında dünyanın bir çok kentiyle birlikte Ankara'da da gerçekleşecek olan DevFest etkinliği  geliştiricileri ve teknoloji meraklılarını bir araya getirecek. GDG Ankara tarafından organize edilen DevFest'13’e Viveka’nın da desteğiyle 3 Kasım 2013 Pazar Günü TOBB-ETÜ Garaj ev sahipliği yapacak.

DevFest’13 kapsamında konuşmacılar oturumlarda sunumlarını uygulamalı olarak  katılımcılara sunacaklardır. DevFest’13 organizasyonunda konuşmacı olmak için aşağıdaki konulardan biri ile bize ulaşmanız yeterli. Etkinlikte yer alacak konular şöyle:

Android SDK, Android NDK, Google+ API, Maps APIs, Google Cloud Messaging for Android, Android UI, Game Engines, Google Play Services, Chrome/HTML5, Cloud Storage, Cloud SQL, Google App Engine, SEO/SEM

Konuşmacılar belirlenen bu konular dışında akıllarına gelebilecek, ilgi duydukları diğer konularda da başvuruda bulunabilirler.

Etkinlik Zamanı  :  3 Kasım 2013 Pazar

Etkinlik Yeri :  TOBB-ETÜ Garaj 3. Kat Büyük Salon

Etkinliğe Kayıt İçin: https://www.eventbrite.com/event/8557542841

Konuşmacı olmak için:  gdg.ankara@gmail.com 

23 Eylül 2013 Pazartesi

Php ile tarayıcı tespiti 2 şekilde yapabiliriz .


echo $_SERVER['HTTP_USER_AGENT'];

kullanırız ya da get_browser( ) fonksiyonu ile tespit ederiz.Bu fonksiyonu kullanmak için aşagıdaki işlemleri yapmamız gerekir.
C diskimize kurdugumuz localhost klasörümüzün içine girip php klasörümüzün içindeki browscap.ini dosyamızın olması gerekiyor eger yoksa indiriyoruz . Yine php klasörümüzün içinde php.ini dosyamızı bulup gerekli değişikliği yapıyoruz.



Browscap dosyamızın yolunu belirtiyoruz.Yoksa kodumuz hata verir.

Şimdi biraz get_browser ( ) fonksiyonunu tanıyalım . Bu fonksiyon 2 parametre alır.

get_browser(user_agent,return_array)

user_agent: HTTP kullanıcısını belirler . Default degeri 'HTTP_USER_AGENT' ' dır . Ama null olarak geçilebilir.

return_array : Bu parametre true degerini almışsa bize obje yerine dizi döndürür.


 <?php  
     $browser=get_browser(null,true);  
      print_r($browser);  
 ?> 

Bu  kodumuz ile bir dizi elde ederiz. Sadece browser'ı göstermek istiyorsak ,

 <?php  
     $browser=get_browser(null,true);  
      echo $browser['browser'];  
 ?

 Tarayıcı istatistiklerini almamıza veya tarayıcıya göre sayfa yönlendirmemizde tarayıcının bilgilerine ihtiyaç duyarız.Bu yüzden tarayıcı tespiti önemlidir.

Php ile kullanıcının ip adresini alarak anket işlemlerinde sayfayı ziyaret eden kullanıcılarda , sayfayı ziyaret eden kullanıcıların yerlerini (location) belirlemede ve sitemizin güvenlik açığından yararlanmasına engel olabilriz

 Güvenlik açıgını önelmek için bize kullanıcının gerçek ip'si gerekir.Bunu proxy ip(vekil sunucu) ile yapamıyoruz. Çünkü bize gönderdiği ip şu şekilde oluyor.
Ama bu ip bizim gerçek kullanıcıyı belirleyip önlem almamıza yardımcı olmaz . Gerçek ip 'yi alarak kimlik belirleyip bir kaç deneme de yapılan saldırıları önleyebiliriz . Gerçek ise şu şekildedir.

Şimdi bu ipleri nasıl elde edebileceğimizi görelim .

 <?php  
 $ip=$_SERVER['REMOTE_ADDR'];   
 echo "IP: ".$ip ;  
 ?>  

Normalde kullandığımız kod budur . Proxy ip (vekil sunucu) alır. Ama bize gerçek ip lazım .

<?php  
 function realIp()   
 {   
   if (!empty($_SERVER['HTTP_CLIENT_IP']))   
   {   
     $ip=$_SERVER['HTTP_CLIENT_IP'];   
   }   
   elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))   
   {   
     $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];   
   }   
   else   
   {   
     $ip=$_SERVER['REMOTE_ADDR'];   
   }   
   return $ip;   
 }   
 echo "Gerçek IP: ".realIp();  
 ?>  


Bu şekilde de gerçek ip 'yi elde etmiş oluyoruz. 
Güvenlik açığımıza karşı önlem almak için gerçek ip'yi almak önemlidir.

18 Eylül 2013 Çarşamba

Merhaba arkadaşlar bu yazımda php en çok kullanılan fonksiyonlara değineceğim. ilk fonksiyonumuzla başlayalım .

empty() fonksiyonu:

Bir ifadenin boş olup ollmadığına bakar

$ad= " ";
if(!empty($ad)){
   echo "Ad boş olamaz";
}

strlen ( ) fonksiyonu :

Bu fonksiyon belirlediğimiz ifadenin karakter sayısını ölçer. Mesela bir kullanıcı şifresinin 10 karakterden fazla olmasını istemiyorsak bunu kullanabiliriz. Kullanımı şu şekildedir.

$sifre=123456;
echo strlen($sifre);

substr ( ) fonksiyonu :

Bu fonksiyon ile belirlediğimiz bir ifade de istediğimiz kısmı almak için kullanılır.

$deneme="Php ' de en çok kullanılan fonksiyonlar .";

echo substr(ifade , başlangıç , bitiş);

echo substr($deneme, 1 , 10);

explode ( ) fonksiyonu :

Belirlediğimiz ifadeyi ayraç doğrultusunda ayırmak için kullanılır.

$dersler = "php , html , javascript , css , java, jquery";

Bu ifadeyi virgül ile parçalayalım .

$parcala=explode( ',' , $dersler);

Artık ifademiz bir diziye dönüştü . Elemanlarına şöyle ulaşabilriz.

echo $parcala[0] ;

implode ( ) fonksiyonu :

Explode fonksiyonunun tam tersidir. Ayrılan ifadeleri birleştirir.

$birlestir = implode ( " ", $parcala);

strstr ( ) fonksiyonu :

Bir ifade içinde bir ifade aramak için kullanılır.

$ifade=" php de en çok kullanılan fonksiyonlar";

echo strstr($ifade , "php"');

stripos ( ) fonksiyonu :

İstediğimiz ifadenin sayısal konumunu döndürür.

$ifade = "php de en çok kullanılan fonksiyonlar";

echo stripost($ifade , "çok");

str_replace ( ) fonksiyonu:

İfade içinde istediğimiz ifadeleri değiştirmek için kullanılır.

$ifade = "php de en çok kullanılan fonksiyonlar";

echo str_replace( "php","javascript" , $ifade);

Birden çok ifadeyi de değiştirebiliriz .

$bul=array("php","çok");
$degiscek=array("javascript","az");

echo str_replace($bul , $degiscek , $ifade);

substr_replace( ) :

Değiştirme istediğimiz ifadenin karakter sayısı başlangıcını ve kaç karakter olduğunu belirterek değiştiririz.

$ifade= "php de en çok kullanılan fonksiyonlar";
$degistir =substr_replace ($ifade,"az",10,3); //not: karakterleri saymaya 0'dan başlarız.
echo $degistir;

trim ( ) fonksiyonu :

Baştaki ve sondaki boşlukları silmek için kullanılır. Eger sağdan silmek istyorsal rtrim ( ) soldan silmek istiyorsak ltrim ( ) fonksiyonları kullanılır.

$ad ="  duygu   ";

echo trim($ad);

nl2br ( ) fonksiyonu :

Her yeni satıra bir etiketi ekler.

$paragraf = " PHP kodları PHP işleme modülü bulunan bir web sunucusu tarafından yorumlanır ve çıktı olarak web sayfası üretilir
. Bu kodlar veriyi işlemek üzere harici bir dosyaya kaydedilerek çağırılabildiği gibi doğrudan HTML kodunun içine de gömülebilir.
 PHP zaman içinde bir komut satırı arayüzü sunacak şekilde evrilmiştir, PHP-GTK yardımıyla grafiksel masaüstü uygulaması geliştirmek de mümkündür." ;

echo nl2br($paragraf);

strttoupper ( ) fonksiyonu:

İstediğimiz ifadenin harflerini büyük yapar.

$ifade= "php de çok kullanılan fonksiyonlar";

echo strttoupper($ifade);

strtolower ( ) fonksiyonu:

İstediğimiz ifadenin harflerini küçük yapar .

$ifade = "PHP DE EN ÇOK KULLANILAN FONKSİYONLAR";

echo strtolower ($ifade);

ucfirst ( ) fonksiyonu :

İstediğim ifadenin ilk harfini büyük yapar .

$ifade = "duygu";

echo ucfirst($ifade);

ucword ( ) fonksiyonu :

İstediğimiz ifade de her kelimenin baş harfini büyük yapar .

$ifade = "php de en çok kullanılan fonksiyonlar";

 echo ucword($ifade);

preg_match ( ) fonksiyonu :

Belirdiğimiz bir ifade de istediğimiz ifadeniz olup olmadığına bakarız.

$ifade="php de en çok kullanılan fonksiyonlar";

echo preg_match(' /php/ ' , $ifade);

similar_text ( ) fonksiyonu :

Belirlediğimiz ifadelerin yüzde kaç benzer olduğunu söyler.

$ifade_1=" php de en çok kullanılan fonksiyonlar";
$ifade_2="java da kullanılan en çok fonksiyonlar";

similar($ifade_1,$ifade_2,$sonuc);
echo $sonuc."<br/>";










16 Eylül 2013 Pazartesi

Türkiye’de ilk defa gerçekleşecek olan DevFest İstanbul’13 de yazılım geliştiricilerini, öğrencileri ve iş dünyasını 2 Kasım 2013 tarihinde İTÜ Süleyman Demirel Kültür Merkezi’nde bir araya getiriyoruz.

DevFest İstanbul’13, GDG İstanbul, İTÜ IEEE Öğrenci Kolu, GDG AnkaraGDG Eskişehir ve GDG Konya işbirliğiyle Türkiye’de düzenlenen ilk DevFest olma özelliği taşır.DevFest İstanbul’13 organizatörleri olarak farklı platformlardaki uygulama geliştiricilerini, aynı gün içinde gerçekleşecek oturumlarda bir araya getirmenin heyecanını yaşıyoruz. Organizasyonun amacı, aktif olarak yazılım geliştirme sektöründe çalışan, farklı yazılım platformlarını kullanan ve teknolojik gelişmelerle ilgi duyan insanları DevFest İstanbul’13 de buluşturmak ve paylaşım sağlamak.
DevFest İstanbul’13′te oturumlar 3 ana başlıkta toplanıyor:
Mobil Teknolojiler: Android, Windows Phone, IOS, BlackBerry, Push Notifications, Unity3D, Gideros, Maps, Google Glass Entegrasyonu, HTML5 mobile development
Web Teknolojileri: Dart, Angular JS, Cloud, NodeJS, HTML 5, Go
Backend: Cloud Computing, NodeJS, MongoDB, Cloudera, Big Data, NoSql, Go
Bunların dışında yeni teknolojiler, yazılım mühendisliği metotları, proje yönetimi, analiz, test, yazılım yaşam döngüsü, kendi uygulamalarınız gibi aklınıza gelebilecek her konuda konuşmacı olabilirsiniz.
Konuşmacı olmak istiyorsanız buraya tıklayarak başvuruda bulunabilirsiniz.
Etkinlik hakkında daha detaylı bilgi için: devfesttr.com
Organizasyon ekibi
Nerede bu festival?
Sorularınız için: info [at] gdgistanbul.com

10 Eylül 2013 Salı

Merhaba arkadaşlar bu yazımda kendi oluşturduğumuz json dosyasından nasıl verileri çekebileceğimizi anlatıcam . İlk önce bir json dosyası oluşturalım . Ben .txt uzantılı bir json dosyası oluşturuyorum .

 {  
   "k1":{  
      "kullanici" : "Ahmet" ,  
      "yas"          : "22" ,  
      "sehir"   : "Ankara"  
      },  
      "k2":{  
      "kullanici" : "Ayşe" ,  
      "yas"          : "29" ,  
      "sehir"   : "İzmir"  
      },  
      "k3":{  
      "kullanici" : "Jhon" ,  
      "yas"          : "25" ,  
      "sehir"   : "Barcelona"  
      }  
 }  

İstediğimiz kadar kullanıcı ekleyebiliriz . Ben şimdilik 3 tane ekliyorum . Şimdi index dosyamızı yazalım . Gereken html taglarımızı açalım . Body içerisinede id 'si istediğiniz bir isim olan bir div açalım .

<html>  
      <head>  
           <script type ="text/javascript">  
           </script>  
      </head>  
      <body>  
           <div id="results"></div>  
      </body>  
 </html>

Yaptıktan sonra script taglarımızın içine ajax isteğimizi başlatalım .

function ajax_get_json(){  
                     var hr = new XMLHttpRequest();  
                     hr.open("GET","json.txt","true");  
                     hr.setRequestHeader("Content-type","application/json",true);  
                     hr.onreadystatechange = function (){  
                          if(hr.readyState == 4 && hr.status == 200 ) {  
                               var data = JSON.parse(hr.responseText);  
                               var results = document.getElementById("results");  
                               //results.innerHTML = ("Kullanici :"+data.kullanici + " <br/> Yaş : " + data.yas+ " <br/> Şehir : " + data.sehir);  
                               for (var obj in data) {  
                                    results.innerHTML += data[obj].kullanici +" "+ data[obj].yas + " yaşında " +data[obj].sehir + " yaşıyor . <hr/>" ;  
                               }  
                          }  
                     }  
                     hr.send(null);  
                     results.innerHTML =""  
                }  


Teker teker satırları inceleyelim.

İlk olarak bir fonksiyon oluşturalım. XMLHttpRequest xml nesnemi kullanarak bir hr adından bir obje oluşturuyorum . XMLHttpRequest ' i kullanmamın amacı gereksiz kodlamadan kurtamasıdır . Developerlar arasında bir rüya olarak adlandırılır. Gelelim ne işe yaradığına

- Web sayfalarını yeniden yüklemeye gerek kalmadan günceller.
- Sayfa yüklendikten sonra serverdan veri istegi gönderir .
- Sayfa yüklendikten sonra serverdan veri alır .
- Arkaplanda servera veri gönderir.

hr nesne oldugundan XMLhttpRequest 'in metodlarını kullanabilirim . open metodumu kullanarak gereken detayları yazıyorum .

 hr.open("GET","json.txt","true"); 

hr.open(method,url,async);  

Type get olucak belirtilen Url 'den verileri almamız için . URL : json.txt ve async : true yapıyoruz . True ile belirtilen http istegi eş zamanlı olarak işlenir.

 hr.setRequestHeader("Content-type","application/json",true); 

 setRequestHeader(header,value,async) 

header : belirtilen header adı
value : belirtilen header değeri , bizim değerimiz json

 hr.onreadystatechange = function (){  
 }  

onreadystateschange her an değişen readystates özellikleri fonksiyon olarak depolar.

if(hr.readyState == 4 && hr.status == 200 ) { 

readystates : 0 ile 4 arasında değişen XMLHttpRequest durumlarını tutar.

0 : istek başlatılamadı . (request not initialized )
1 : server iletişim kuruldu. (server connection established)
2 : istek alındı . (request received )
3 : istek işleniyor. (processing request )
4 : istek bitirildi ve cevap hazır (request finished and response is ready)

status :

200 : "OK"
404 : Sayfa bulunamadı (Page not found)

onreadystateschange olayı ile server cevabı işlenmeye hazır olduğunda neler olacağını belirtiyoruz .

readystates : 4 ve status : 200 olduğunda cevap hazır duruma geliyor.

 var data = JSON.parse(hr.responseText); 

data adında bir değişken oluşturuyoruz ve bu değişkene string olarak parse ediceğimiz JSON ' ı atyoruz.

var results = document.getElementById("results");  

results adında bir değişken oluşturuyorum ve bu değişkenime id'si result olan div e ulaşmasını sağlıyoruz . Artık results değişkenim ile div 'in içindeyim .

for (var obj in data) {  
           results.innerHTML += data[obj].kullanici +" "+ data[obj].yas + " yaşında " +data[obj].sehir + " yaşıyor . <hr/>" ;  
                     }  


result degişkenimle div'im içine obj değişkeni kullanarak verilerimi html olarak yazdırıyorum .

hr.send(null);

herhangi bir değer göndermeyeceğimizden null yapıyoruz.

Böylece kodlamamız bitmiştir . Unutmadan belirteyim yerel bir sunucuda kodları çalıştırmalıyız.Ajax işlemleri kullandığımızdan .

Umarım yararlı olmuştur . İyi çalışmalar...








9 Eylül 2013 Pazartesi

Merhaba arkadaşlar bu yazımda jquery ve ajax metodlarını kullanarak kendi oluşturduğumuz bir xml dosyasından nasıl veri çekebileceğimizi anlatacağım . İlk olarak xml dosyası oluşturalım .

<?xml version="1.0" encoding="utf-8" ?>  
 <SonKitaplar>  
  <Kitap>  
   <Baslik>Jquery</Baslik>  
   <Tanim>Web siresi tasarlmaya yeni başlayan ve mevcut siteleri geliştirenler kişilerin bilmesi gerekir. </Tanim>  
   <Tarih>12/1/2010</Tarih>  
  </Kitap>  
  <Kitap>  
   <Baslik>Javascript</Baslik>  
   <Tanim>Web tasarım dünyasının olmazsa olmazı olarak tanımlanıyor son yıllarda .</Tanim>  
   <Tarih>4/1/2010</Tarih>  
  </Kitap>  
  <Kitap>  
   <Baslik>HTML5</Baslik>  
   <Tanim>Günümüzün ve geleceğin web teknolojilerinde kullanılacak temle alt yapısı olarak kendini duyurdu.</Tanim>  
   <Tarih>6/2/2010</Tarih>  
  </Kitap>  
  <Kitap>  
   <Baslik>CSS3</Baslik>  
   <Tanim>Çogu mobil cihazın ve browser'ın desteklediği css3 il kodlamayla bir adım öne çıkın !</Tanim>  
   <Tarih>14/2/2010</Tarih>  
  </Kitap>  
 </SonKitaplar>   
Ben yukarıdaki şekilde gördüğünüz gibi books.xml adında bir xml dosyası oluşturdum . Şimdi sıra jquery ve ajax metodlarını yazacağımız sayfaya geldi.

<!DOCTYPE html >  
 <head>  
 <title>JQUERY-XML</title>  
 <script type="text/javascript"src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script>  
           </head>  
           <body>  
           <div class="main"></div>  
           </body>  </html>
Gereken html taglarımızı açıyoruz ve gerekli olan ajax api ' yi script taglarımızın içine ekliyoruz. Body tagımızın içinede classı main olan bir div ekliyoruz ki bilgilerimizi bu divin içinde gösterelim .

Ajax metodumuzu yazmanın zamanı geldi . Yeni bir script tagı oluşturup buraya ajax metodumuzu yazalım .

$(document).ready(function () {  
                     $.ajax({  
                     type: "GET",  
                     url: "books.xml",  
                     dataType: "xml",  
                     success: Parser  
                });  
           });  

Satırlarımızı tek tek inceleyelim . İlk olarak jquery fonksiyonumuzu oluşturuyoruz . Burda kullandığımız ajax metodu jquery kullanımı olduğundan başına $ işareti koyuyoruz. Type get olucak çünkü belirtilen kaynaktan verileri almamız gerekiyor. Url ile kaynağımızı belirtiyoruz . Data type uzantımız xml oldugundan xml . Success karşılığına da fonksiyon ismimizi yazıyoruz. Aşağıda oluşturacağımız fonksiyon ismini yazıyoruz istediğimiz bir isim yazabiliriz.

    function Parser(xml) {  
           $(xml).find("Kitap").each(function () {  
     $(".main").append('<div class="kitap"><div class="baslik">' + $(this).find("Baslik").text() + '</div><div class="tanim">' + $(this).find("Tanim").text() + '</div><div class="tarih">Basılma: ' + $(this).find("Tarih").text() + '</div></div>');  
     $(".kitap").fadeIn(1000);  
   });  
 }  

Ben parser adında bir paremete gönderen fonksiyon oluşturdum .Bu fonksiyonu verileri çekmek için oluşturuyoruz . $ işaretimle xml paremetremi seçiyorum ve find metoduylada xml dosyamı buluyorum . each diyerek her bir fonksiyon için yapmasını belirtiyorum. Main classımı seçerek append metoduyla sonuna ekleme yapmasını istiyorum . Her birini bir div içine alarak data düzenli görünmesini sağlıyorum . Kitap classımı seçerek fadeIn metodumla 1000 milisaniyede göstermesini sağlıyorum Buraya jquery ' nin diğer metodlarını da yazabiliriz fadeOut , show ,toggle gibi .. Aynı zamanda saniye kısmını da istediğimiz şekilde düzenleyebiliriz.Uygulamamız bitmiştir bu son kodla ama ben css kodu da eklemek istiyorum . Daha güzel bir görünüm elde etmek için eklemek isteğe bağlıdır.

<style>   
                .main{  
                width:1000px;  
                margin:0 auto;  
                height:130px;  
                }  
                .kitap{  
                width:208px;  
                float:left;  
                margin:10px;  
                border:1px #dedede solid;  
                padding:5px;  
                display:none;  
                }  
                .baslik{  
                margin-bottom:6px;}  
                .tanim{font-size:11px; font-family:Geneva, Arial, Helvetica, sans-serif;}  
                .tarih{font-size:10px; color:#999; margin-top:4px;}  
           </style> 

Style dosyamızı da ekledik . Burada en önemli noktayı söylemeyi unuttum bu uygulamayı yerel bir sunucuda çalıştırmamız gerekiyor Çünkü ajax metodları çalışmıyor. Bunu da söyledikten sonra uygulamamıza son noktayı koyabilirim.
Umarım yararlı bir çalışma olmuştur . Herkese iyi çalışmalar..




Subscribe to RSS Feed Follow me on Twitter!