Kategoriler

Windows’da SSH Key Oluşturmak

yorum yok

Eğer sizin içinde SSH Key oluşturma zamanı geldiyse ama bu işlemi ilk kez yapacaksanız ve ne yazık ki bir windows kullanıcısı iseniz, bu yazımda sizlere Windows’da kolayca nasıl SSH Key oluşturabileceğinizi göstereceğim.

Öncelikle bu işlem için aşağıdaki linkten PuTTYgen programını indirin.
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

Programı çalıştırıp Generate dedikten sonra yüklenen barın yavaş olduğunu fark edeceksiniz, çünkü şifreleme için sizin fare kombinasyonlarınızı kullanıyor. Program üzerinde farenizi rasgele hareket ettirerek işlemi tamamlayın.

Sonuç olarak herşey yolunda gittiyse aşağıdaki ekranla karşılaşacaksınız.

Kırmızı olarak işaretlediğim yeri alıp SSH Key kodunu yazmanız gereken yerde kullanabilirsiniz.
Sarı alanda yazacağınız şifreyi SSH Key i kullandığınız yerde şifre olarak kullanacaksınız.
Mavi alanlarda ise oluşturduğunuz SSH Key dosyalarınızı kaydedeceksiniz. Zira onlara ihtiyacınız olacak!

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

Yeni eve taşındık!

13 yorum

Bildiğiniz gibi Malta’ya gelirken darkod ofisini kapatmıştım, ancak gelişimin 10. ayına girerken nihayet kardeşlerim de benimle aynı şirkete çalışmaya geldiler. Yeniden bir ekip, bir aile olduk. Eskiden 1 + 1 kendimi idare edeceğim bir yerde oturuyordum, o ortamı falan çok güzelleştirmiş aslında baya da sevmiştim ama işte evin rutubetli olması, karanlık olması, havasız olması gibi etkenler beni bir süre hastalıklarla boğuşmamı sağladı. Bundan dolayı da artık 3 kişi olunca yeni bir eve geçme kararı aldık.

Ve ne şans ki, malta şartlarında uygun fiyata güzel bir ev bulabildik. 3 odası olan, büyük bir salona sahip ki bizim için önemli, sonuçta odalar sadece yatmak için, asıl yer iş sonrası çalışma ortamıydı 🙂

Şimdilik benim evdeki malzemelerle kurmaya başladık ortamı, güzelde oldu aslında. İçime baya sindi ev, arkada koca bir terası var en çok onu sevdim. Yazın gelsin barbeküler gelsin nargile keyifleri 🙂

Bakınız şu samimi ortamda kim çalışmak istemez, yeni projeler geliştirmek istemez efenim? 🙂

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

Iframe ve parent ilişkisi

3 yorum

Günün birinde iframe içerisindeki fonksiyona erişmeniz ya da iframe’den parent’a değer göndermeniz gerekirse bu videoyu hatırlayınız efendim 🙂 İyi seyirler.

Ek bilgi;
Eğer iframe’de parent’da oluşturduğunuz bir fonksiyonu çalıştırmak isterseniz. Örneğin test() fonksiyonunu parent’da oluşturduğunuzu varsayalım, iframe’de şu şekilde çağırabilirsiniz;

parent.test();
Konuyu görmek için tıklayın

“Başka Bir Şey” Videoları

3 yorum

2016 yılının şüphesiz en güzel şeyi “başka bir şey” adında bir kanalın açılıp bizlere ilham vermesiydi. Ancak sebebini bilmediğim bir şekilde kanaldaki tüm videolar silindi ve ilginç bir açıklamayla bizlere veda ettiler. Yine de youtube’da başkaları tarafından videolar tekrar yüklendi, bende bu ilham verici 12 bölümlük video serisin kaybetmemek adına Drive’ım da arşivlemeye karar verdim.

Kadir Köymen ve Edelkrone’un bu güzel ve ilham verici hikayesini sizde mutlaka arşivlerinizde saklayın.

Tekrardan “başka bir şey” kanalını açtıkları için Edelkrone ekibine çok teşekkür ederim. Ayrıca ürünlerini de çok beğenerek takip ediyorum, fotoğrafçılık ya da video çekimleriyle ilgilienen herkesin bakmasını tavsiye ederim.

Videolara şuradan ulaşabilirsiniz;
https://drive.google.com/drive/folders/0BxX-AwfGLF5vTjEydHItdktGWlU

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

Youtuber olmak için adım adım!

5 yorum

Geçen sene bir çok kez video çekip youtuber’lığa adım atmak istedim. Yani içinde benim olduğum, beni göreceğiniz türden videolardan bahsediyorum. Eğitim videolarımı zaten çekiyorum, onunla karıştırmayın.

2016’da bu iş için baya bir yatırım yaptım, nedense ben bir şeyi yapmadan önce onla ilgili malzemeler alırım. Hani her şeyim olur o işle ilgili, ama işle ilgili bir fikrim olmaz sonrada çoğu zaman o işi yapmam 😀 İşte bu durum yine kendini tekrar etmesin diye yeni yıla girerken kendime bu sene youtuber olacağım diye söz verdim.

Eğer bu sene ben güzel bir şeyler yapamazsam, uzun bir süre bu fikri aklıma getirmem 😀

GoPro’nun 5. versiyonunu aldım, bende daha önce 3. versiyonun session modeli vardı, oda su geçirmiyordu ama bu yeni modeli baya bi sevdim. Ayrıca sesli komut verip işlem yapma özelliği falanda var, bide ona uygun bir tripod buldum ki tadından yenmiyor, her yere koyabiliyorum artık çekim yapmak için. Peki ben bu kadar şeyi çekiyorum da ne yapıyorum o videoları, hani nerede? Kendime saklıyorum, mükemmeli arıyorum 😀

Bir gün gerçekten güzel bir video çektim dediğimde, burada gururla tanıtacağım o videomu 🙂 Şimdilik hoşçakalın.

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

Benim için 2016 nasıl geçti?

12 yorum

Her sene böyle bir yazı hazırlıyorum, bu sene de yılımı değerlendirmek için bu yazıyı yazıyorum 🙂

Bu yıl içerisinde çok büyük 2 olay yaşadım.
1- Darkod ofisini kapattım.
2- Türkiye’den Malta‘ya taşındım.

Evet, Malta’ya geldiğim için ofisimizi kapatmak zorunda kaldım, arkamda bir çok sevdiğimi bırakarak Malta’ya yerleştim. Burada bir hayat kurmaya, düzen oluşturmaya çalıştım. Elbette fırsatım oldukça gidip ailemi ve sevdiklerimi ziyaret ediyorum ancak artık burada bir düzen kurup yaşamaya çalışıyorum.

Bu aldığım kararın Türkiye’de olan olaylarla çok bir alakası yok, Türkiye son günlerini bile yaşayacak olsa vatanımı terk etmem. Bu aldığım kararlar tamaman kendimle alakalı, yani geçen yıldan kendime verdiğim sözler vardı. Yeni bir dil öğrenmek, gelirimi artırmak gibi. Sonuçta nerede doğduğun değil nerede doyduğun önemli demişler.

Burada ki şartlar ve bana katacakları daha iyi olduğunu düşündüğüm için ciddi bir karar vererek Malta’ya taşındım.

Geçen yıllarda aldığım şeyleri de söylüyordum, ancak daha sonra biraz düşününce bunun görgüsüzlük olarak algılanabileceğini fark ettim. Bu yüzden kayda değer bir şey almadığım sürece şunu bunu aldım demeyeceğim. Belki aldıklarımın ne üzerine olduğundan bahsederim 🙂

Ancak bu yıl kayda değer aldığım bir şey var. Oda arabam! Evet, o kadar güzel bir duygu ki 🙂 Sonunda kendime ait güzel bir şeyim var. Bu yıl kendime güzel bir araba aldım, gerçi aldıktan 1 ay sonra babama bırakıp Malta’ya yerleştim ama olsun sonuçta aldım 😀

Babam içinde çok güzel bir haber oldu, onu öyle duygulu gördüm gururlu gördüm ya, bu saatten sonra ölsem de gam yemem. Bir şeyleri başardım!

Onun dışında bu yıl sürekli youtuber olmak istedim, hep bunun üzerine ürünler aldım. Kameralar, teknik ekipmanlar, ışıklar vs. Ama bir türlü youtuber olamadım, çünkü öyle kamerayı açıp sadece kendimi ve günlük rutinlerimi çekmek bana mantıklı gelmedi. Ben kimim aq? Öyle düşününce bir çok kez çektiklerimi koymaktan vazgeçtim 😀 Ama bir gün doğru konsepti bulup youtuber olacağım, şimdilik eğitim videolarıyla devam!!

Bu yıl beni üzen tek şey aslında hazırladığım eğitim videoları. Koca bir yılda sadece 9 tane eğitim videosu hazırlamışım, şaka mı lan bu? Şaka değil, gerçek 🙁 Ama bunun sebepleri belli, yine de bahaneler ardına saklanmak istemiyorum o yüzden yeni yılda hedeflerimi çok daha büyük tutacağım.

Bu yıl içinde en çok hissettiğim duygu ise özlem oldu, sevdiğim insanların yanımda olmasına, yanımda olmasa bile en fazla yarım saatte gidip yanlarında olabileceğimi bilmeye alışmıştım. Şimdi böyle uzun zaman sonra görmek bir garip oluyor, ama sanırım bununla baş edebilirim. Sonuçta bunu tek yapan ben değilim değil mi?

Bu yıl Jonathan’ı göstermiştim sizlere, burada aldığım papağanım. Ne yazık ki gözlerimde ki rahatsızlıktan dolayı vermek zorunda kaldım, artık benimle değil. Asla bir hayvanın günahına bu şekilde girmek istemem, ancak sağlık devreye girdiği için böyle bir karar aldım. Yoksa benim yanımda olan, ölene kadar benimle kalır. Bunun en büyük örneği 4 senedir yanımda olan Sultan ve Süleyman kuşlarım gibi.

Bu yılın garip olanı ise 3 telefon kaybetmem oldu. Yani yat durunda cebimde telefonla atlamak, 2. aldığımı düşürüp parçalamak, 3. aldığımı 7 çıkacak diye satıp 7’yi alamamak gibi 😀 Çokta uğraşmamak lazım, şu an 7 var ama bilin bakalım o nerede? Apple teknik servisinde, oda düştü ve kırıldı. Allah’ım çekilecek günahım mı var nedir?

Bu yılın en güzel gelişmesi ise Malta’ya taşındıktan sonra edindiğim farklı ülkelerden, farklı kültürleri olan arkadaşlarım. Gianfranco örneğin, italyan sosyal medya uzmanı. Mindaugas örneğin, litvanyalı ve front-end developer. Rachel örneğin, malta’lı ve marketing’ci. Helen mesela, ingiliz ve customer support. Ve daha niceleri, arap nargileciden tutunda, italyan dövmecisine kadar bir çok tanıdığım farklı insan var ve bu beni çok mutlu ediyor. Çünkü onlarla oturup konuşmak bile, aslında dünyada milyarlarca farklı fikrin olduğunu ortaya çıkarıyor.

Ön yargılı mı yaklaşıyorum yoksa benim çevrem mi bu şekildeydi bilmiyorum, ancak eskişehir’de sıradan insanlarla bile konuştuğunuzda duyduğunuz tek şey çoğunlukla geçim zorluğu, devlet düşmanlığı ve aşk acıları oluyor. Ancak burada bunun aksine herkesin çok farklı fikirleri var, öğrendiğim en önemli şey ise, bu adamlar kendilerini çok önemsiyorlar. Bu kadar yıl yaşadım, kendimi hiç önemsediğimi hatırlamam. Ama belki de önemsemek gerekir, önce kendimizi iyi hissetmek için bir şeyler yapmamız gerekir. Geçim derdine düşmeden cebinde paran azsa bile eğlenmesini bilmek gerekir.

“Mutluluğun parayla orantılı olmadığını anlamak için hala çok geç değil..”

Ayrıca bu yıl geçen yıl ki hedeflerimden 2’sini gerçekleştirdim. Geçen yıl yeni bir dil demiştim, ingilizce’yi öğrenmeye başladım ve ana dili ingilizce olan bir ülkede yaşıyorum. Bir diğeride 2015 kazancımı artırmaktı, geçen yıl 200+ bin üzeri kazanmıştım bu yıl bunu 400+ bin üzerine çıkardım. Ama önemli olan ne kadar kazandığın değil, kazandığınla neler yaptığındır. Bu yıl öyle zamanlar oldu ki birkaç tl’yi arar olduğum zamanlar yaşadım. Ama sonuç olarak buradayız, ve ölmedik 🙂

Yeni yıldan beklentim, ingilizcemi daha iyi geliştirmek. Bu yıl kazandığımdan çok daha fazlasını kazanmak. En az 70 eğitim videosu hazırlamak. En az 3 geçerli proje hazırlamak. Ve artı kendim için bir şeyler yapmaya başlamak.

Gelenekleri yerine getirip yeni yıl şarkımı şuraya bırakıyorum;

Ayrıca bkz:
Benim için 2015 nasıl geçti?
Benim için 2014 nasıl geçti?
Benim için 2013 nasıl geçti?
Benim için 2012 nasıl geçti?

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

PHP ile Sıfırdan Proje Oluşturmak

43 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