Kategoriler

PHP ile Sıfırdan Proje Oluşturmak

21 yorum

Bugün bir seriye başlamaya karar verdim. Aslında ilk bölümü çektiğimde bunun bir seri olmasını beklemiyordum ancak zaten eski PHP derslerim eskidiği için yenisini bunun ile çekebilirim.

İlk ders bir projenin altyapısı nasıl olmalı onunla ilgili. Yaklaşık 1 saatten uzun ve bir çok aksiliklerle dolu videoya aşağıdan ulaşabilirsiniz;

Güncelleme: .htaccess dosyanızda RewriteRule kuralının sonuna [QSA] ekleyin. Aksi taktirde $_GET parametrelerini çalıştıramazsınız. Örnek dosyalarda ben değişikliği yaptım, seviliyorsunuz.

Veritabanı sınıfı: https://github.com/tayfunerbilen/BasicDB
Permalink fonksiyonu: http://www.erbilen.net/php-sef-link-fonksiyonu
BasicDB Kullanımı: https://www.youtube.com/watch?v=RX7YxiMYzfA
Örnek dosyalar: https://yadi.sk/d/tt86xMDcxPYFc

Konuyu görmek için tıklayın

Tasarımlarda Standart Sistem Fontunu Kullanmak

1 yorum

Kodladığımız tasarımlarda farklı işletim sistemlerinde farklı font görüntüleri alıyoruz. Çünkü ne olursa olsun hepsinin kendine göre kriterleri var ve aynı sonucu göstermiyor. Ancak sistemlerin kendi standart fontları yeterince tutarlı öyle değil mi? O halde bootstrap 4’ün yaptığı gibi bizde hangi işletim sisteminden girildiyse o işletim sistemine ait standart fontu gösterebiliriz.

body {
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}

Bunu kullandıktan sonra farklı işletim sistemlerinden deneyerek sonuca ulaşabilirsiniz.

Konuyu görmek için tıklayın

Zincirleme (Chain) Metodu

3 yorum

Bir çoğunuz yazılmış sınıfları incelediğinizde şu şekilde bir yazım tarzıyla karşılaşmış olabilirsiniz.

$text = new Text();
echo $text->write('Tayfun Erbilen')->color('red')->fontSize('20px')->show();

Bu örneğe ait sınıfımızı oluşturalım hemen.

class Text {
	
	private $text;
	private $style;

	public function write($text)
	{
		$this->text = $text;
	}

	public function color($color)
	{
		$this->style .= 'color: ' . $color . ';';
	}

	public function fontSize($size)
	{
		$this->style .= 'font-size: ' . $size . ';';
	}

	public function show()
	{
		return '<div style="' . $this->style . '">' . $this->text . '</div>';
	}

}

Ancak bu örnek hata verecektir. Çünkü bu şekilde bir yazım tarzı için yapmanız gereken $this objenizi geriye döndürmek. Yani sınıfımızı şu şekilde düzenlersek eğer;

class Text {
	
	private $text;
	private $style;

	public function write($text)
	{
		$this->text = $text;
		return $this;
	}

	public function color($color)
	{
		$this->style .= 'color: ' . $color . ';';
		return $this;
	}

	public function fontSize($size)
	{
		$this->style .= 'font-size: ' . $size . ';';
		return $this;
	}

	public function show()
	{
		return '<div style="' . $this->style . '">' . $this->text . '</div>';
	}

}

Artık bu şekilde bir kullanımı yapmaya hazırız.

Chain (zincirleme) metodu aynı zamanda jQuery içinde aynı mantıkta çalışır. Muhtemelen her dil için bu mantıktadır. Örneğin jQuery’de bir örnek vermem gerekirse, basit bir eklenti hazırlayalım.

$.fn.Text = function(text){
  $(this).html(text);
};

$('body').Text('Tayfun Erbilen').css({
    'color': 'red',
    'font-size': '20px'
  });

Bu şekilde bir zincirleme kullanımda çalışmayacaktır. Çünkü bir this objesi döndürmedik eklentimizde geriye. Eğer geriye this’i döndürürsek geriye kalan jQuery metodlarını da zincirleme olarak kullanabilirsiniz. O halde buna göre düzelttiğimizde son kod parçamız şöyle olacak;

$.fn.Text = function(text){
  $(this).html(text);
  return this;
};

$('body').Text('Tayfun Erbilen').css({
    'color': 'red',
    'font-size': '20px'
  });
Konuyu görmek için tıklayın

Dribbble Api Kullanımı

yorum yok

Merhaba arkadaşlar, bu konuda sizlere dribbble api kullanımını göstermek istiyorum.
Geçenlerde uzman cevap’ta sorulan bir soru üzerine böyle bir ders hazırlama gereği duydum.
Esasında tüm API’ler projelerde aynı mantıkta çalışır. Kullanıcı hesabına yetki verilir ve oluşturulan token ile sorgular oluşturulur.

Sırasıyla bu adımları görelim 🙂

1) Uygulama oluşturma

Öncelikle https://dribbble.com/account/applications/new adresine girerek yeni bir uygulama oluşturun.
Burada önemli olan Callback URL adresiniz. Çünkü daha sonra bunu kullanacağız. Çalışan bir siteniz üzerinde bir Callback URL oluşturursanız iyi olur sizin için.

Uygulamanızı oluşturduktan sonra şu değerlere sahip olacaksınız, bunları saklayın!

Screenshot_29

2) Uygulamaya İzin Verme

Oluşturduğumuz uygulamayı kullanmak için mevcut dribbble hesabımız ile bu uygulamaya izin vermek gerekiyor. Şimdi şöyle bir link yapısı oluştuacağız;
https://dribbble.com/oauth/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URL&scope=public&state=123456

Buradaki değerleri açıklayayım;
client_id – İlk adımda uygulamayı oluşturduktan sonra sahip olduğumuz Client ID değerimizo olacak.
redirect_uri – Uygulamayı oluştururken kullandığımız Callback URL olacak.
scope – Burada biz genel bilgilere ulaşacağımız için public olarak belirledik. Diğer değerler için şuraya bakabilirsiniz.
state – rasgele üretilmiş bir değer girin.

Şimdi yukarıdaki linke girdiğimizde hesabımız için uygulamaya izin vermemizi isteyecek.

Screenshot_30

İzin verdikten sonra bizi callback url’e gönderecek ve burada code değerini alacağız.

Örneğin ben yaptığımda şöyle bir url oluştu;
http://www.erbilen.net/?code=b83001d95d2182918bdc530d3b8fd056b0a1d14808071597b9fe17c008a5d741&state=123456

Buradaki code değerini alıp 3. adıma geçebiliriz.

3) Token Oluşturma

Bu adımda https://dribbble.com/oauth/token bu url’e post yapmamız gerekiyor.

Post olarak göndereceğiz değerler;

client_id – Uygulamayı oluşturduktan sonra sahip olduğumuz Client ID.
client_secret – Uygulamayı oluşturduktan sonra sahip olduğumuz Client Secret.
code – 2. adımda sahip olduğumuz code değeri.
redirect_uri – Uygulamayı oluştururken belirlediğimiz Callback Url

Ben Postman yardımıyla bu post işlemini gerçekleştirdim ve sonucunda ise kullanacağım access_token’a sahip oldum.

Screenshot_31

Lazım olur diye jquer ve php’de post işlem kodlarını paylaşıyorum

PHP kodu:

 "https://dribbble.com/oauth/token",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"client_id\"\r\n\r\nc13ba2b61a1d18e25cb9ae8f280bef14db688b705159dfa6edb4320fba00277d\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"client_secret\"\r\n\r\n7015568247e0f0dd875d004ddab3911c2d426ba2fad7b7995f973b0eebfd1680\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"code\"\r\n\r\nb83001d95d2182918bdc530d3b8fd056b0a1d14808071597b9fe17c008a5d741\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"redirect_uri\"\r\n\r\nhttp://www.erbilen.net\r\n-----011000010111000001101001--",
  CURLOPT_HTTPHEADER => array(
    "cache-control: no-cache",
    "content-type: multipart/form-data; boundary=---011000010111000001101001"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}

jQuery Kodu:

var form = new FormData();
form.append("client_id", "c13ba2b61a1d18e25cb9ae8f280bef14db688b705159dfa6edb4320fba00277d");
form.append("client_secret", "7015568247e0f0dd875d004ddab3911c2d426ba2fad7b7995f973b0eebfd1680");
form.append("code", "b83001d95d2182918bdc530d3b8fd056b0a1d14808071597b9fe17c008a5d741");
form.append("redirect_uri", "http://www.erbilen.net");

var settings = {
  "async": true,
  "crossDomain": true,
  "url": "https://dribbble.com/oauth/token",
  "method": "POST",
  "headers": {
    "cache-control": "no-cache"
  },
  "processData": false,
  "contentType": false,
  "mimeType": "multipart/form-data",
  "data": form
}

$.ajax(settings).done(function (response) {
  console.log(response);
});

4) API’yi Kullanalım

Artık bir access_token sahibi olduğumuz için API’deki metodları kullanıp istediğimizi yapabiliriz.

Örneğin kendi bilgilerimizi çekelim.

İlgili url’im;
https://api.dribbble.com/v1/user?access_token=ACCESS_TOKEN

Burada 3. adımda elde ettiğimiz access_token ile kendi bilgilerimizi kolayca çekebildik.

Screenshot_32

Ya da başka bir örnek yapalım.
Örneğin Sencer abi’nin son shot’larını çekelim.

İlgili url;
https://api.dribbble.com/v1/users/sencerbugrahan/shots?access_token=ACCESS_TOKEN

Sonuç;

Screenshot_33

Demo

Adımları uygulayarak bu uygulamayı hazırladım, sizlerde daha fazlasını yapabilirsiniz 🙂
http://tayfun.net/demo/dribbble-api/

İndir

http://tayfun.net/demo/dribbble-api/dribbble.zip

Konuyu görmek için tıklayın

JavaScript Object Length Kullanımı

yorum yok

Bir dizinin boyutunu öğrenmek için length özelliğini kullanabilirsiniz. Örneğin;

var arr= ['Tayfun', 'Murat'];

alert(arr.length); // Output: 2

Ancak bunu bir object için yapmak istediğimizde biraz daha farklı şekilde kullanıyoruz;

var obj = new Object();
obj['name'] = 'Tayfun';
obj['surname'] = 'Erbilen';

alert(Object.keys(obj).length); // Output: 2

Kaynak: http://stackoverflow.com/a/6700

Konuyu görmek için tıklayın

Kişisel Alan Adlarının Önemi

1 yorum

Yıllar önce ilk kez erbilen.com ve daha sonra tayfunerbilen.com alan adlarıyla bu sektöre girmiştim.
Gariptir ki şuan 2 domainde bende değil, başkaları tarafından alınmış. Hatta erbilen.com için 2.000 $ gibi salakça bir rakama satıyorlar domain satış sitesinde 🙂

Bu yüzden aslında kişisel alan adları çok önemli. Eğer adınız ve soyadınız ve ya sadece adınız ve ya soyadınızla ilgili domainleri alabiliyorsanız alın ve saklayın.

Zira bir gün popüler olduğunuzda, tanındığınızda ya da düşman edindiğinizde bunu size karşı kullanacak çok fazla insan çıkacak.

Yıllar içerisinde ben buna çok kez şahit oldum, insanlar o kadar işsiz ki gerçekten uğraşıyorlar.
Doğal olarakta google’da adınız soyadınız aratıldığında onlar ne göstermek isterlerse onları gösteriyorlar, buda sizin için iyi sonuçlanmıyor çoğu zaman.

Bu yüzden size tavsiyem, hemen kişisel alan adlarınızı alıp uzun ömürlü saklayın.

Bana ait olan kişisel alan adlarım;

http://www.tayfunerbilen.com.tr
http://www.tayfunerbilen.com
http://www.tayfunerbilen.net
http://www.tayfunerbilen.org
http://www.erbilen.net
http://www.erbilen.org
http://www.tayfun.net

Başka bir alan adında benimle ilgili bir şeyler görürseniz ben olmadığımdan emin olabilirsiniz artık 🙂

Kolay gelsin.

Konuyu görmek için tıklayın

OS X El Capitan Sass Kurulum Hatası ve Çözümü

yorum yok

Yakın zamanda mac’de işletim sistemimi güncelledim.
Ancak daha sonra sass’ı kullanamaz oldum.
Kurulum yaparken ise şöyle bir hata alıyordum;

ERROR:  While executing gem ... (Errno::EPERM)
Operation not permitted - /usr/bin/sass

Daha sonra biraz araştırınca benim gibi bir çok kişi el capitan’da sorun yaşamış.
Şöyle bir issue‘ya denk geldim ve çözümünü burada buldum. Sorun yaşayanlar için çözüm;

sudo gem install sass

yerine

sudo gem install -n /usr/local/bin sass

şeklinde kurulum yapmak.

Sorun yaşanlar olursa diye blog’da bulundurmak istedim bu konuyu 🙂
Bol kodlamalı günler.

Konuyu görmek için tıklayın

PHP timeAgo Fonksiyonu

7 yorum

Daha önce şurada paylaştığım halini unutup yeni halini kullanabilirsiniz 🙂

<?php

/**
 * @param $date
 * @return mixed
 */
function timeAgo($date)
{
    $timestamp = strtotime($date);
    $currentDate = new DateTime('@' . $timestamp);
    $nowDate = new DateTime('@' . time());
    return $currentDate
        ->diff($nowDate)
        ->format(' %y yıl %m ay %d gün %h saat %i dakika %s saniye önce');
}

$date = '2015-03-12 14:05:14';
echo timeAgo($date);
Konuyu görmek için tıklayın

Geliştiriciler için Mağaza – Varianto:25

10 yorum

Geçenlerde buradan birkaç sipariş verdim.
Örneğin code:deck‘i çok aramıştım burada buldum 😀
Gerçi çok fazla seçenek yok şuan için ama alabileceğiniz güzel birkaç şey mevcut.

Ancak alışveriş yapabilecek olanlara küçük bir uyarı vermek için bu konuyu açıyorum.
Satın alma işlemini paypal ile yaptıktan sonra ee adresi nereye gireceğiz demeyin, çünkü siparişi paypal’da kayıtlı adresinize gönderiyorlar.
Bizim gibi unutan olursa şayet [email protected] adresine adres değişikliğiyle ilgili bir mail atsın, kısa sürede cevap gelecektir.
Ben Malta’ya sipariş verdim ve 3 gün içerisinde geldi, baya hızlı yani 🙂

CfcG5YiWEAEaZEe

Konuyu görmek için tıklayın

wordpress html admin teması

9 yorum

Screenshot at Mar 30 22-42-46

WordPress kullananlar ve sevenler bilirler ki panel teması çok hoş.
Bazen insan kendi projelerinde de bu tarz bir tema kullanmak istiyor 😀
Mesela bugün benim istediğim gibi.
Hiç üşenmedim kısmi benzerlikte html sayfalarını oluşturdum.
İhtiyaç oldukça github’da güncellemelerini yapacağım.
Şimdilik alıp projelerinizde kullanabilir ve sizde geliştirip katkı sağlayabilirsiniz.

Github: https://github.com/tayfunerbilen/wp-admin-html-template

Demo;
Index
Posts
New Post
Settings
Login
Lost Password

Konuyu görmek için tıklayın