Thursday, July 31, 2014

[DevOps][Nginx] fastcgi_pass Problems

If you are getting error about fastcgi_pass option like this:
2014/07/31 08:08:39 [error] 3536#0: *6 connect() failed (111: Connection refused) while connecting to upstream, client: 95.95.95.1, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "localhost"
or this:
2014/07/31 08:25:07 [crit] 3644#0: *23 connect() to unix:/tmp/php5-fpm.sock failed (2: No such file or directory) while connecting to upstream, client: 95.95.95.1, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/tmp/php5-fpm.sock:", host: "localhost"
You have probably setted wrong or passive TCP or socket address. You can learn PHP's TCP or socket addsress from /etc/php5/fpm/pool.d/www.conf file. Check lines that starts with these:
listen = 127.0.0.1:9000 ;listen = /tmp/php5-fpm.sock
Destroy ; char from starting, and have fun! Don't forget to restart your PHP or your another service -- like this $ service php5-fpm restart!

Monday, July 21, 2014

[Vagrant][Nginx][Laravel] Laravel Kurulum Sorunlari

http://laravel-recipes.com/recipes/26 http://laravel.io/forum/05-14-2014-502-bad-gateway-in-vagrant-permission-denied

Friday, July 18, 2014

[Nginx] Konfigurasyon Dosyalarini Test Etmek

Nginx eger site konfigurasyonlarinizi mazeret gostererek service nginx restart komutlariniza kayitsiz kaliyorsa, asadidaki komut ile Nginx konfigurasyon dosyanizi test edip sorunun kaynagina ulasabilirsiniz.
/usr/nginx/sbin/nginx -t -c /etc/nginx/DOSYA.conf

Wednesday, May 14, 2014

[Git] GitHub Sifresini Kaydetmek

Baslikta her ne kadar GitHub gecse de bu sadece GitHub icin gecerli degil. Bircok Git clientinde durum aynidir. pull, push gibi git sunucunuza baglanmaniz gerektigi islemlerde sizden giris bilgileri istenecektir. Ancak  surekli bilgileri girmek sikici bir hale gelebilir. Tabii bunun adi asla usengeclik olamaz ;)

Onunuzde iki secenek mevcut; gecici olarak cachelemek, kalici olarak saklamak.

Gecici Olarak Cachelemek

$ git config --global credential.helper 'cache --timeout=300'
 Burada 300 yerine saniye bazinda cache suresini girebilirsiniz.

Kalici Olarak Saklamak

$ git config --global credential.helper store
Her iki secenek icin de Git surumunuzun 1.7.9 olmasi gerekli.

Kaynaklar
http://git-scm.com/docs/git-credential-cache
http://wiki.epfl.ch/help-git-en/can-i-store-my-password-for-the-command-line

Wednesday, April 23, 2014

[JavaScript][CoffeeScript] Degisken/Fonksiyon Etki Alanlari

JavaScript'te alisilmisin disinda -PHP'nin disinda!- bir etki alani prensibi mevcut. Ust seviyede tanimlamis oldudugunuz bir degisken ya da fonksiyona asagi seviyelerden ulasabilirsiniz. Alt seviyeden ust seviyeye ise hayir. (Yani bunun yontemleri var ancak konuyla alakali olmadigindan dolayi pas geciyorum.)

Beni bu arastirmaya iten "CoffeeScript'teki -> ile => arasindaki farkin nedenir nedir?" sorusuydu. Sorunun cevabi yukaridaki bilginin varligindan haberi olan kisiler icin gayet net olarak dokumante edilmis CoffeeScript tarafindan. Durumu aciklamaya calisalim:

Peki ya yukaridaki gibi bir kodlamada ust seviyedeki elementi secmek istersek? Ki buyuk ihtimalle oyle bir seye ihtiyaciiz olacaktir. Oyleyse asagidaki gibi yapip baska bir degiskene atamak gerekli, referans gosterip elbette.

Islem bu kadar. Simdi gelelim bunun CoffeeScript ile olan iliskisine:

CoffeeScript ile calisiyorken nesne tabanli calismak zorunda hissediyorsunuz kendinizi, "class" etiketini gordukten sonra, ehehe. Elbette boyle bir durumda this kelimesi sizin icin gerekli oluyor, gerci bu ornekte sinif tanimlanmiyor ancak yine de ilintili. Lafi da  fazla uzatmadan CoffeeScript'in kendi ornegi uzerinden olayi aciklamak istiyorum:

Sorun kendini bellli ettigine gore cozumune de asagidan ulasabilirsiniz:

Bu kadar... :)

Monday, April 21, 2014

[NodeJS][Ipucu] npm Paketlerini Global Olarak Yuklemek

CoffeeScript, underscore gibi bazi paketler her projede (daha dogrusu bir projeden de bagimsiz her yerde) gerekli olarbilir. Boylesi durumlarda "Yok mu bu paketleri her yerde kullanabilmenin bir yolu?!" diyebilirsiniz. Elbette var! Paketleri yuklerken tek yapmaniz gereken npm install <pkg> -g
 seklinde -gparametresinden faydalanmak.

Kaynaklar
http://blog.nodejs.org/2011/03/23/npm-1-0-global-vs-local-installation/

Thursday, April 17, 2014

[Facebook API] Bir Gorusmedeki Tum Mesajlari Almak

Eger bir arkadasinila uzun sureli Facebook'tan iletisim kuruyorsaniz, ve o kisi  ile suan iletisimde degilsiniz ancak iletisime gecmek icin hos bir seyler yapmak istiyorsaniz, Facebook'ta olan guzel konusmalarinizi ona iletmek isteyebilirsiniz.

Kodlama kisisel olduguu icin, ne sintaks, ne testler hic bir sey yoktur. Sadece isinizi gorsun yeterli. :)

Oncelikle mesajlari Facebook API'si ile 30'arli gruplar halinde cekiyoruz. Sonrasinda onlari PHP tarafinda birlestiriyoruz.


Saturday, April 12, 2014

[CoffeeScript] Watcher Shell/Command

Appends seperated .coffee files into one file, and compiles as application.js. So cool, hah?

Example structure:
-- 10_controllers
---- home.coffee
---- show.coffee
---- admin.coffee
-- 90_ui
---- home.coffee
---- show.coffee
---- admin.coffee

Example output:
Imagine all of above Coffee files in one compiled file as well as every hitting CTRL+S!

Saturday, April 5, 2014

AngularJS Ogreniyorum!

Uzunca zmandir kendimi pratik anlamda bir seylerde gelistirmedigimi fark ettim. Teorik bilgimin oldugu Single-Page Application'lar da zaten ne zamandir aklimda iken AngularJS'yeogrenmek uzere kollanrimi sivadim. Umuyorum ki Onumuzdeki birkac yazimda AngularJS hakinda goruslerimi yazacagim. "Neden AngularJS?" sorusuna simdilik tek cevabim "Cunku arkasinda Google var!" olacaktir. Bakalim ilerleyen asamalarda neler olacak...

Yazilar (yazilmasi plananan yazilar)

  • Single-Page Applicationlarda SEO Uzerine
  • AngluarJS vs. Backbone
  • Ucmaya Hazirlik: AngularJS, jQuery ve CoffeeScript!

Saturday, March 15, 2014

[C#] Exe icine Gomulmus Baska Bir Exe'yi Calistirmak

C#'ta bir program yazarken bazen farkli bir calistirilabilir (exe) dosyayi calistirmak gerekebilir. Bu noktada ana sorun, bir programin icine farkli bir dosyayi nasil gomup, onu nasil geri cikartacagimizdir. Hadi yapalim!

Yapacagimiz islem, dosyayi bir temp dosyaya kaydedip, onu calistirmak...

Oncelikle calistirmak istedigimiz dosyayi, projemizin icine gonderiyoruz ve sag tiklayip Properties barini acip Build Action ozelligini Embeded Action olarak ayarliyoruz ki programimizi derledigimizde dosyamiz da exemizin icine gomulmus olsun.

Oncelikle gecici dosyalar olusturmak icin buldugum bir sinif var. Onu programize dahil edelim:


Simdi de programi calistirmak istedigimiz yerdeasagidaki kodu yaziyoruz:
Bu kadar, tabii ihtiyaciniza gore sekillendirmek size kalmis...

Monday, March 10, 2014

Mozilla Addon SDK'da console.log() Mesajlarini Gorebilmek

Hep REGEDIT tarzi kayit defterlerinde mevcut olmayan, ancak sonradan birilerinin eklemesine izin verebilen sistemlere "gicik" olmusumdur. Yine bu tarz bir seyle karsilastim... *

Sorun, Addon SDK'da main.js'de console.log("log mesaji icerigi"); yazdiginizda bunu varsayilan olarak Browser Console'da goremezsiniz. Sistem elestirisini birakip hemen cozumu veriyorum:

Yeni bir sekme acip adres cubuguna about:config yazip, ardindan cikan uyariyi da kabul edip Firefox'un REGEDIT'ine ulasmis oluyoruz. Burada sag tiklayip, Yeni'yi ardindan da Dizi'yi seciyoruz. Gelen ekranda prefence name olarak extensions.sdk.console.logLevel giriyoruz. Bunun degerini de all yapiyoruz.

Artik console.log() mesajlarini Browser Console'da gorebilirsiniz.

* Guncelleme Biraz daha arastirmadan sonra yukaridaki ilk paragraftaki sitemlerimde haksiz oldugum sonucuna vardim. console referansinda yukaridaki secenegin varsayilan olarak tanimli gelmeyisinin sebebi olarak, eklentiye ozel tanimlama yapabilmemize olanak saglamak amacli oldugu sonucu cikarilabiliyor. :)

Tuesday, February 25, 2014

.Net2.0 Uygulamalarinin .Net4.0'da Calismamasi

Merhabalar,

Oncelikle sizden cok kendimin saskinlikler icinde oldugunu belirtmeliyim. .Net teknolojilerine her daim karsit birisi oldugum biline dursun, bu konuda bir yazi yazma geregi hissedecegimi dahi tahmin etmezdim. Insanin basina her sey gelebiliyor...

Bir proje icin ufak bir "calistirilabilir uygulama"ya ihtiyac oldu. Mecburen Vusial Studio'yu kurmak zorunda kaldim. :) Uygulamada cok fazla islem olmadigindan dolayi, daha dusuk gereksinimleri olmasi amaciyla .Net2.0 kullanarak yazdim. Ancak is testlere geldiginde .Net4.0 kurulu bilgisayarlarda "Unable to find a version of the runtime to run this application." seklinde bir hata aldim. Biraz arastirmalar sonucunda .Net4.0'in geriye yonelik destek vermedigini ogrendim. (Hayir hayir, elestiri yapmayacagim!)

Cozum olarak ise App.config dosyasi olusturup, icerisine bunun .Net4.0 ile uyumlu oldugunu belirtmemiz gerekliymis. App.config dosyasinin icerigi soyle:


Bunu yaptiginizda sorunun ortadan kalkacagini umuyorum.

---

Simdir bir nokta daha var ki eger siz de "building" isleminden sonra ekstra bir dosya olmasindan sikayetteyseniz, -cok basit bir cozum olarak- WinRAR'in SFX ozelligini kullanarak tum dosyalari tek cati altinda toplayip acildiktan sonra programinizin acilmasini saglayabilirsiniz. Benim isimi gordu. :)

Tuesday, February 4, 2014

[PHP] Tek Kullanimlik Sinif Yapmak

Merhabalar,

Facebook'taki PHP grubunda birisi boyle bir istekde bulunmus. Siniftan sadece tek bir "instance" uretmek, daha sonra istenildiginde ise bir Exception vermesi isteniyordu.

PHP5.4'un nimaetlerinden traitler yardimiyla bunu hazirladim. Guzel bir ornek olacagini dusunuyorum.

Trait kullanilarak hazirlanan sinif ilk getInstance() metodu kullanildiginda sinifin bir ornegini gonderecek, bir dahaki cagirildiginda ise DisposableClassException gonderecektir. Bunu yakalamak da size kalmis. :)