Windows Komut Satırında SSH Çalıştırma

Screenshot_9


Merhaba arkadaşlar,
Bugün bir sebepten dolayı SSH lazım oldu. Windows’un Komut Satırında doğrudan SSH çalışmadığını gördüm.
PuTTy’de kurmak istemedim açıkçası. Ne yapsam diye düşünürken ufak bir araştırma sonucu şöyle bir opensource (açık kaynak) proje keşfettim.
http://sshwindows.sourceforge.net/

Öncelikle şu linkten ilgili proje’yi indirin.
http://sourceforge.net/projects/sshwindows/files/OpenSSH%20for%20Windows%20-%20Release/3.8p1-1%2020040709%20Build/setupssh381-20040709.zip/download

İndirdiğinizi zip’ten çıkarıp kurun.
Artık windows komut satırında ssh kullanabilirsiniz. Kolay gelsin 🙂

ssh [email protected]

League of Legends Api Kullanımı

Geceleri kafa dağıtmak için oynadığım moba türü bir oyundur League of Legends.
Elbette biz meraklı geliştiricileri de unutmamışlar ve bir api servisi hazırlamışlar.

Oynayanlar bilirler lolnexus.com diye bir site var.
Oyuna girdiğimizde rakibi tanımak için buradan yardım alıyoruz.

Peki biz kendimiz için bir lolnexus yazabilir miyiz?
Cevap: Evet.
Lol Apisi ile bu mümkün.
Çünkü bize istediğimiz her şeyi veriyor 🙂

Gelelim nasıl kullanacağımıza?

İlk olarak aşağıdaki adresten kayıt olun. Ya da oyuna kayıtlıysanız bilgileriniz ile giriş yapın.
https://developer.riotgames.com/

Daha sonra yine üstteki adrese girip bir api key oluşturun.
Benim ki: 100e40c0-9c5a-4464-81ea-bb23e7ba93fe

Ve orada yazıyı göreceksiniz 10 saniyede 10 istek gönderebilirsiniz. 10 dakikada 500 istek. Buna uymazsanız apiden bilgi alamazsınız 🙂

Api metodları

Lol’ün bize verdiği tüm metodlara aşağıdaki bağlantıdan ulaşabilirsiniz.
https://developer.riotgames.com/api/methods

Örnek: Lol Karakter Bilgisini Çekmek

Örneğin lol’deki üyeliğinizin bilgilerini çekelim. Karakter adınız, leveliniz ve simgenizi bir sayfada gösterelim.
Bunun için bağlanmam gereken link şu;
https://tr.api.pvp.net/api/lol/BOLGE_BURAYA/v1.4/summoner/by-name/KULLANICI_ADI_BURAYA?api_key=API_KEY_BURAYA

Şimdi sırayla koyu alanları açıklayalım;
BOLGE_BURAYA => Hangi serverda oynuyorsanız o gelmeli. Örneğin türkiye server’ı için TR gibi.
KULLANICI_ADI_BURAYA => Lol’e giriş yaparken ki kullanıcı adınız değil! Lol’deki karakter adınız olmalı.
API_KEY_BURAYA => Yukarıda aldığımız api keyimiz

Sonuç olarak bilgiyi döndürecek linkimiz şöyle oluyor;
https://tr.api.pvp.net/api/lol/TR/v1.4/summoner/by-name/erbilen?api_key=100e40c0-9c5a-4464-81ea-bb23e7ba93fe

Gördüğünüz gibi JSON formatında benim karakter bilgilerimi döndürdü.
En basit örneğimiz buydu. Bunu isterseniz jquery ile isterseniz php ile alıp kullanabilirsiniz. Örnek php kullanımı;

<?php

$server = 'tr';
$username = strtolower('erbilen');
$api_key = '100e40c0-9c5a-4464-81ea-bb23e7ba93fe';

$url = 'https://tr.api.pvp.net/api/lol/' . $server . '/v1.4/summoner/by-name/' . rawurlencode($username) . '?api_key=' . $api_key;

$open = file_get_contents($url);
$data = json_decode($open, true);
$user_data = $data[str_replace(' ', '', $username)];

// karakter simgesi
$karakter_simge = 'http://ddragon.leagueoflegends.com/cdn/5.2.1/img/profileicon/' . $user_data['profileIconId'] . '.png';

// karakter adı
$karakter_adi = $user_data['name'];

// karakter seviyesi
$karakter_level = $user_data['summonerLevel'];

echo '<h3>'.$karakter_adi.' - '.$karakter_level.' Level</h3>
<img src="'.$karakter_simge.'">';

Başka neler yapılabilir?

https://developer.riotgames.com/api/methods adresinde de göreceğiniz üzere bir çok bilgi alınabilir.
O an oynanan canlı maçın bilgileri şu linkten alınabilir;
https://tr.api.pvp.net/observer-mode/rest/consumer/getSpectatorGameInfo/TR1/5663211?api_key=100e40c0-9c5a-4464-81ea-bb23e7ba93fe

Burada eğer ben oyundaysam bilgi döndürecektir. Onun dışında 404 ile karşılaşırsınız.
Bu linkte gördüğünüz gibi karakter adım değilde karakter id ile verileri çekiyorum. Karakter id’sine de yukarıdaki örnekte zaten ulaşmıştık.

Örnek: Karaktere ait oyun istatistikleri

Başka bir örnek daha yapalım. Örneğin karakterinize ait oyun istatistiklerine ulaşalım.
Unranked kaç maç kazanmış, dereceli kaç maç kazanmış. Kaç kişi öldürmüş, kaç minyon öldürmüş vs. gibi bilgiler.

Bunun için link yapımız aşağıda;
https://tr.api.pvp.net/api/lol/tr/v1.3/stats/by-summoner/5663211/summary?season=SEASON2015&api_key=100e40c0-9c5a-4464-81ea-bb23e7ba93fe

Bu link 2015 için geçerli. SEASON2015 yerine SEASON2014 yaparsak 2014 bilgilerim gelecek.

PHP ile yazdıralım bunları.

<?php

header('Content-type: text/html; charset=utf8');

$api_key = '100e40c0-9c5a-4464-81ea-bb23e7ba93fe';
$sezon = 'SEASON2015';
$karakter_id = 5663211; // erbilen karakterinin idsi (benim karakter)
$server = 'tr';

$url = 'https://tr.api.pvp.net/api/lol/' . $server . '/v1.3/stats/by-summoner/' . $karakter_id . '/summary?season=' . $sezon . '&api_key=' . $api_key;

$open = file_get_contents($url);
$data = json_decode($open, true);

$istatistikler = $data['playerStatSummaries'];

foreach ( $istatistikler as $istatistik ){
	echo 'Oyun modu: ' . $istatistik['playerStatSummaryType'] . '<br />' .
	'Kazanma: ' . $istatistik['wins'] . '<br />' . 
	'Şampiyon Öldürme: ' . $istatistik['aggregatedStats']['totalChampionKills'] . '<br />' .
	'Minyon Katletme: ' . (isset($istatistik['aggregatedStats']['totalMinionKills']) ? $istatistik['aggregatedStats']['totalMinionKills'] : '-yok-') . '<br />' . 
	'<hr/>';
}

?>

İpuçları

Şampiyon resimleri, karakter simgeleri, item resimler gibi görseller içinde api mevcut. Karakter simgesi için yukarıda bir örnek yapmıştık.
Tüm listeyi aşağıda vermeyeyim ancak tümüne şuradan ulaşabilirsiniz;
https://developer.riotgames.com/docs/static-data

İtem resimleri;
http://ddragon.leagueoflegends.com/cdn/5.2.1/img/item/1001.png
1001 – item numarası oluyor. Peki bu item numaralarını nereden öğreneceğiz?
Tabi ki şuradan: http://ddragon.leagueoflegends.com/cdn/5.2.1/data/en_US/item.json
Eğer çok karmaşık gözüküyorsa tarayıcınıza bir json view eklentisi kurmayı unutmayın!

Geri kalan her şey için geliştirici sayfasına bakmanız yeterli.
Hadi kolay gelsin.

Photoshop Font Boyut Sorunu ve Çözümü

Photoshop ile çizilmiş tasarımlarda Resolution’ı yüksek çizildiğinde orjinal font boyutlarını göremiyoruz.
Bu sorunu yaşayana arkadaşlar layerlarını bir group içerisine alsınlar. Mevcut sayfa boyutlarında resolution’ı 72 olan yeni bir sayfa oluşturup bu grubu boş sayfaya atsınlar.
Yapamayanlar için birde video hazırladım, inceleyebilirsiniz.


Sahibinden Botu (Ücretsiz)

2 hafta önce falan sanırım yazmaya başladım. Sonra geliştirmeyi unutmuştum, bugün gün içerisinde tamamladım. Kullananlar olur diye paylaşıyorum, zaten github üzerinden yazıyordum illaha ki takip edenleriniz olmuştur. Artık top sizde, alıp geliştirmeye devam edebilirsiniz şuan benim işimi görüyor yeterince 🙂

İndir

https://github.com/tayfunerbilen/Sahibinden.com-Botu

Kullanımı

Maksat kullanım kolaylığı bu yüzden Sahibinden adında bir class altında topladım.. Kullanımları ise şöyle;

<?php

header('Content-type: text/html; charset=utf8');
require 'sahibinden.class.php';

// ana kategoriler
print_r( Sahibinden::Kategori() );

// alt kategoriler
print_r( Sahibinden::Kategori('emlak') );

// kategori içerikleri
print_r( Sahibinden::Liste('emlak') );
// Sahibinden::Liste('emlak', 20); // 2. sayfa

// içerik detayı
print_r( Sahibinden::Detay('http://www.sahibinden.com/ilan/emlak-konut-satilik-dorlion-gayrimenkul-den-yildiztepe-de-sifir-bina-da-2-plus1-153319984/detay') );

?>

PSD to HTML Dersi

Merhaba arkadaşlar, 2013 yılının son gününde sizler için bir yıl başı hediyesi hazırladım. Ve güzel bir psd to html dersi çektim.

Bu ders 3 bölümden oluşuyor. Header – Container ve Footer olarak. Toplamda 1 saat 57 dakikadan oluşuyor. Ve eğitim boyunca şunları öğreneceksiniz;

– ikonlar için font awesome kullanımını
– css’i hızlandırmak için less kullanımını
– yeni bir slider geçiş tekniğini
– bir psd tasarımın nasıl css’e aktarılacağını
– ve tayfun erbilen’in hasta olduğunu +_^

1. Bölüm (header)

2. Bölüm (container)

3. Bölüm (footer)

Kolay yoldan layer’ı kopyalamanın kısa yolu
Derste kullandığım kısayol: “ctrl + g” ile klasör içine alıyorum. “ctrl + e” ile yeni bir layer haline getiriyorum. “ctrl + a” ile tüm sayfayı seçip “ctrl + c” ile mevcut layerı kopyalıyorum.. “ctrl + n” ile yeni bir sayfa açıyorum ve “ctrl + v” ile kopyaladığım layerı yapıştırıyorum.

Dersteki kaynkalar;

PSD İndirme Linki;
http://dribbble.com/shots/1328390–PSD-eCommerce-Theme/

Reset.CSS;
http://meyerweb.com/eric/tools/css/reset/

PSD’de kullanılan font;
http://www.fontsquirrel.com/fonts/Aller

Kullanılacak İkon Seti;
http://fontawesome.io/icons/

Mutlu Yıllar!

Font Awesome ve Diğer İkon Fontları

Font Awesome için, ikon fontları arasında en çok kullanılanı diyebiliriz. Bootstrap‘ta bir süre font awesome kullanarak bu popüleriteyi arttırdı sanıyorum. Ancak şuanda kullandıkları (yanılmıyorsam) sadece Glyphicons. Bu yazımda bunlardan da bahsedeceğim sizlere.

İkon Fontları Nedir?

Özel olarak font kullanmak istediğimizde bildiğiniz gibi @font-faceyöntemini kullanıyoruz. Bu arkadaşlarda ikonları bir font haline getirmiş ve bize font şeklinde ikonları kullanma imkanı sunuyorlar. Oldukça kullanışlı değil mi?

Font Awesome

Yazı başında da söylediğim gibi, bana kalırsa en yaygın kullanılan ikon fontlarından bir tanesi. Github üzerinden yayınlanan, ücretsiz bir ikon font servisi.

Nasıl Kullanılır?

İlk olarak aşağıdaki bağlantıdan dosyalarını indirin;
http://fortawesome.github.io/Font-Awesome/assets/font-awesome.zip

Eğer Sass ya da Less kullanıyorsanız gerekli dosyalar sass ve less klasörlerinde. Biz normal olanı kullanacağımız için css ve font klasörlerini almamız yeterli. Daha sonra index sayfamızda çağırmamız gerekenler şöyle;

<!-- gerekli dosyalar -->
<link rel="stylesheet" href="css/font-awesome.min.css" />
<!-- ie7 fix -->
<link rel="stylesheet" href="css/font-awesome-ie7.min.css" />

Eğer IE7 sizin için önemli değilse, sadece ilk css dosyasını çağırmanız yeterli olacaktır.

Buradan sonra yapmanız gereken ikonları seçip kullanmak.. İkonların tamamına aşağıdaki bağlantıdan ulaşabilirsiniz;
http://fortawesome.github.io/Font-Awesome/icons/

Örneğin popüler ikonlardan windows ikonunu kullanalım;

<i class="icon-windows"></i>

İşte kullanımı bu kadar basit 🙂 İsterseniz başka bir nesne ilede kullanabilirsiniz, örneğin span gibi. Tercih size kalmış, önemli olan sınıf ismini doğru yazmanız.

Animasyonlu İkonlar: Eğer ikonlara animasyon katmak isterseniz 2. bir sınıf olarak “icon-spin” atamanız gerekir.. Yani;

<i class="icon-windows icon-spin"></i>

İkon’a border eklemek: Yuvarlak şekilde düzgün gözükmesi için önceden tanımlı şu sınıfı verebilirsiniz; “icon-border“.. Yani;

<i class="icon-off icon-border"></i>

İkon Boyutları: İkon boyutlarını font-size ile belirleyebileceğiniz gibi, font awesome’ın önceden tanımlı şu sınıflarını da kullanabilirsiniz;
– icon-large
– icon-2x
– icon-3x
– icon-4x

Örnek bir kullanım;

<i class="icon-camera-retro icon-4x"></i>

Diğer İkon Font Siteleri;

Font Awesome hariç birkaç tane daha popüler ikon font sitesi bulunuyor.. Bunlarında çalışma mantığı birbiriyle aynı, kullanımıda aynı şekilde, biraz incelerseniz eminim anlayacaksınızdır;

jQuery ile Son Tweetleri Çekmek (REST API uyumlu)

Bildiğiniz gibi twitter api 1.1’e geçti ve artık izin almadan twitter’da işlem yapamıyoruz.. Dolayısı ile çalışan tüm twitter eklentileri patladı. Bu konuyla ilgili http://www.erbilen.net/513-twitter-rest-ap-11-ile-son-tweetleri-cekmek.html şu konuda zaten son tweet’leri çekmeyi anlattım. Şimdide bunu bir php dosyası haline getirip jquery ile bu php dosyasından çekmeyi göstereceğim. Böyle yapıyoruz çünkü php’yi dahil edip çalıştırdığımızda sitenin hızını etkiliyor, ancak böyle olduğunda yüklendiği zaman istek cevaplanıyor ve verileri yazdırılıyor, açılış hızına bir etkisi olmuyor.

Adım Adım İlerleylelim

Öncelikle twitter.php dosyası oluşturalım bir tane. Ve içerisine buradan indireceğiniz sınıf dosyalarını include delim.

require 'twitteroauth/twitteroauth.php';

Ancak bunun hemen öncesinde çıktıyı json olarak ayarlayalım;

header('Content-type: application/json; charset=utf8');

Şimdi consumer ve access keylerimizi elde ettikten sonra sınıfımızı başlatalım.

// consumer ve access
$consumer_key = 'BpyIHhw6GdvUnEu9ARwrHA';
$consumer_secret = 'OwKDNx4qtUqVbOtNuMJXusMldfXrlNqwG1GqSRZpSw';
$access_token = '24186944-9lI0G4BKEySlN4tMbcz5oTxrfmNam24J6VffbhzOs';
$access_token_secret = 'aLevlosLliXvSDYQVbKKJ7Wrmh2rGbqFSLsCU9BaY';

// sıfını başlatalım
$twitter = new TwitterOAuth($consumer_key, $consumer_secret, $access_token, $access_token_secret);

Bunları elde edebilmek için uygulama oluşturmanız gerekiyor. Nasıl uygulama oluşturacağınızı bilmiyorsanız aşağıdaki konuya göz atın;
http://www.erbilen.net/twitterda-uygulama-olusturmak

Sırada twitter kullanıcı adını almak var. Bunu get parametresi ile alalım. username olsun parametre adımız.

$username = isset($_GET['username']) ? htmlspecialchars($_GET['username']) : NULL;

Kaç tweet çekeceğimizi belirleyelim. Bunuda get ile yapalım. Eğer get yok ise default bir değer verelim. Örn: 5 gibi..

$count = isset($_GET['count']) ? (int) $_GET['count'] : 5;

Şimdi kullandığımız sınıfta bulunan get() metodu ile tweetleri çekelim.

$tweets = $twitter->get('https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name='.$username.'&count='.$count);

Sıra geldi bu tweetleri json olarak çıktı verdirmeye.

Yapmamız gereken şey php’de bulunan json_encode() fonksiyonunu kullanmak 🙂

print json_encode($tweets);

Unutmadan, jquery ile çekmek için en üstte şu header tanımlamasını yapmamız gerekiyor;

header('access-control-allow-origin: *');

Evvet.. tamamdır 🙂

Kodlarımızın Son Hali

Eğer her şey yolunda ise yazdığınız kodlar son haliyle şöyle olmalı;

get('https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name='.$username.'&count='.$count);

	print json_encode($tweets);
	
?>

Bunu sunucunuza twitter sınıf dosyaları ile birlikte bir klasöre ya da ana dizine atın.. Şimdi gelelim jquery ile nasıl kullanacağımıza..

jQuery ile Kullanımı

jQuery’de json değerlerini işlemek için $.getJSON() metodu bulunuyor. Yapmamız gereken önce sunucudaki twitter.php’ye bağlanmak ve dataları almak olacak.

$(function(){

	$.getJSON('http://www.erbilen.net/twitter.php?username=tayfunerbilen&count=10', function(data){
		// tweetler burada işlenecek..
	});

});

Artık data değerinde çektiğim son 10 tweet bulunuyor. Bu objeleri for ile işleyip herhangi bir div içerisine yazdırabiliriz.
Bu arada twitter tarih formatı biraz ilginç geliyor 🙂 Bu yüzden onu “x zaman önce” haline çevirmek için şuradaki cevaptan yararlanıyoruz;
http://stackoverflow.com/a/6549563

Ve devam edip, verileri bir nesne içerisine yazdırıyoruz..

$(function(){
	
	// twitter tarih formatını parse eden fonksiyon
	function parseTwitterDate(tdate) {
		var system_date = new Date(Date.parse(tdate));
		var user_date = new Date();
		var diff = Math.floor((user_date - system_date) / 1000);
		if (diff <= 1) {return "şuan";}
		if (diff < 20) {return diff + " saniye önce";}
		if (diff <= 3540) {return Math.round(diff / 60) + " dakika önce";}
		if (diff <= 5400) {return "1 saat önce";}
		if (diff <= 86400) {return Math.round(diff / 3600) + " saat önce";}
		if (diff <= 129600) {return "1 gün önce";}
		if (diff < 604800) {return Math.round(diff / 86400) + " gün önce";}
		if (diff <= 777600) {return "1 hafta önce";}
		return "on " + system_date;
	}
	
	// tweetlerin yer alacağı nesne
	var $twitter = $('#twitter');
	
	$.getJSON('http://www.erbilen.net/twitter.php?username=tayfunerbilen&count=10', function(data){
		var total = data.length,
			i = 0;
		$twitter.html(''); // önce içindekini temizle sonra tweetleri yazdır.
		for ( i; i < total; i++ ){
			var tweet = data[i].text; // tweet
			var date = parseTwitterDate(data[i].created_at); // tarih
			var url = 'https://twitter.com/' + data[i].user.screen_name +'/status/' + data[i].id_str;
			$twitter.append('<div class="tweet"><a href="' + url + '">' + tweet + '</a> (' + date + ')</div>');
		}
	});

});

Birazcıkta css kastınız mı bu iş tamamdır 🙂 Sonuç olarak benim demoya aşağıdaki linkten göz atabilirsiniz;

İndir

http://yadi.sk/d/-z84lvgj9GxfB

Twitter’da Uygulama Oluşturmak

Merhaba arkadaşlar, twitter’ın yeni api servisini (rest api 1.1) yayına almasıyla birlikte, çalışan bir çok örnek çalışmaz hale geldi.. Bunun sebebi, twitter’ın kullanıcılardan oturum bilgisi istemesidir.. Bunun içinde öncelikle twitter’da bir uygulamanızın olması gerekir.. Bu makale’de sizlere twitter’da nasıl uygulama oluşturabileceğinizi anlatacağım..

Öncelikle uygulama oluşturmak için developer sayfasında twitter hesabınız ile giriş yapın.. Daha sonra aşağıdaki bağlantıyı kullanarak uygulama oluşturma sayfasına gidin.
https://dev.twitter.com/apps/new

Twitter'da Uygulama Oluşturmak

Yukarıda gerekli yerleri kendinize göre doldurduktan sonra uygulamanız oluşmuş ve aşağıdaki gibi bir sayfaya yönlendirilmiş olmanız gerekir..

Twitter'da Uygulama Oluşturmak

Evet buraya kadar bir sorun yok ise şimdi bize lazım olan 4 bilgi var.. Bunlar;
– consumer_key
– consumer_secret
– access_token
– access_token_secret

İlk ikisi yönlendiğiniz sayfada mevcut.. Ancak diğer 2’si ni aynı sayfada en altta bulunan create my access token butonuna basarak oluşturuyorsunuz..

Twitter'da Uygulama Oluşturmak

Bastığınızda aşağıdaki gibi token’lerin oluşması gerekir;

Twitter'da Uygulama Oluşturmak

Buraya kadarda sorun yoksa tebrikler, twitter uygulamanızı başarıyla oluşturdunuz..

Şimdi Ne Yapacağım?

Bu makale’de sadece uygulama oluşturmayı öğrendik.. Bu uygulama işlem yapmak için diğer makale/videolara göz atabilirsiniz.
Örn: http://www.erbilen.net/twitter-rest-ap-11-ile-son-tweetleri-cekmek