20 Haziran 2017 Salı

Javascript Breakpoint

Merhabalar arkadaşlar,
Bugün çok kısa ama çok faydalı bir olaydan bahsetmek için blogumu açtım. Sizlere bugün javascript kodunuzda yazdığınız zaman tarayıcınızda size bir breakpoint olarak yansıyacak bir koddan bahsetmek istiyorum. Söz konusu bu kod "debugger;" 'dir

Herhangi bir javascript satırına
debugger;
yazıp kodunuzun tarayıcıda açtığınız zaman developer tools açık ise size orada tarayıcı durur ve bütün değişkenleri analiz edebilir veya console pencerenizde evaluate edebilirsiniz. Javascriptle çok fazlaca haşır neşir arkadaşların yaşadığı bir sıkıntıya çözümdür bu, genellikle ajax komutlarındaki unhandled exception durumlarında siz kodu göremezsiniz ve aniden bir yere redirect işlemi gerçekleşir. İşte eğer o noktayı kaçırmanıza sebep olan bir durum mevcut ise ve durduramıyorsanız debugger; tam sizin için bir komuttur.

Share:

13 Haziran 2017 Salı

Php Remote Debugging

Merhaba sevgili dostlar. Bugün sizlere uzun uğraşlar sonucunda stabil hale getirdiğim remote php debugging olayından bahsetmek istiyorum. Malumunuz kendi sistemimizde yazdığımız kod bazı konfigürasyon sorunları, farklı sistemler gibi sebeplerden dolayı uzak sunucularda çalışmamakta. Biz de bu duruma çözüm olarak uzak sunucudaki kodu debug ediyoruz ve oradaki hatayı kendi bilgisayarımızdaymış gibi tüm değişkenleri görerek çözümlüyoruz.

Aslında önce local debuggingi anlatsaydım daha iyi olurdu ama o kolaylıkla bulunabilir ve daha önce bir yerlerde de yazmıştım türkçesini sanırsam. Her neyse başlıyoruz.

Öncelikle uzak sunucumuza bir xdebug kurmamız gerekecek onun için de pear kurmamız gerekecek çünkü pearla zahmetsiz bir şekilde xdebugu kendi sistemimize uygun bir şekilde kurabiliyoruz zira farklı konfigürasyonlara göre farklı xdebug versiyonları var pear bizim için C derlemesi yapar ve sorunsuz kurulum gerçekleşir. Pear kurulumu için bu linki kullanabilirsiniz.

Pear kurulumunu sorunsuzca yaptıktan sonra aşağıdaki komutla xdebugu de kurun sunucunuza.


     pecl install xdebug


Size en son küçük bir yönerge verecektir php.ini dosyanıza 




zend_extension="xdebug.so" şeklinde bir komut yazın diye. Onun yerine benim 

oluşturduğum şu ayarları kullanabilirsiniz.


[XDebug]

zend_extension="xdebug.so"

xdebug.remote_handler=dbgp

xdebug.remote_host="127.0.0.1"

xdebug.remote_port=9000

xdebug.idekey="PHPSTORM"

xdebug.max_nesting_level = 200

xdebug.remote_enable=1

xdebug.remote_autostart=1

xdebug.default_enable = 1



Eğer xdebug.so bulunamıyor tarzında bir hata alırsanız xdebug.so yerine tam 

yol da verebilirsiniz. Bu işlemi yaptıktan sonra apache veya nginx hangisini 

kullanıyorsanız resetleyin ve sonrasında da test işlemine geçeceğiz.


PhpStormu açıyoruz Run menüsünden en alttaki Web Server Debug Validation seçeneğine

tıklıyoruz. Açılan ekranda ben sunucumu test ettim. turgoo serverini ben eklemiştim

ftp bağlantısı yapmanız gerekli oraya bir php dosyası atıp test işlemini 

gerçekleştiriyor.





Testimiz başarıyla gerçekleştikten sonra ssh bağlantısı sağlıyoruz.


ssh -R 9000:localhost:9000 root@165.227.132.22


Sunucumuza bu şekilde bağlantı sağlıyoruz tabi sunucuda 9000 portunu

açmış olmamız gerekiyor.


Ssh bağlantısından sonra PhpStormda ek bir ayar daha yapıyoruz. 






En son malum telefonu dinlemeyi alıyor ve tarayıcıdan sayfanızı çalıştırıyorsunuz


Çıkan sorunlar için yorum yazabilirsiniz unuttuğumuz birşey varsa onu da burada birlikte görür diğer sorun yaşayacak arkadaşlara çözüm bulabiliriz. 

Unutmayın debugging zamandan kazançtır.

Share:

Terminal Php Versiyonu Değiştirme

Merhaba sevgili geliştirici arkadaşlarım. Bugün kendi karşılaştığım birkaç kez zorluk çektiğim ama sonunda çözdüğüm bir sorunu buraya da yazmak istedim.

Linux kullanan geliştiriciler bilirler konsolda php farklı bir versiyonda olabilir bu da sistemde birkaç php versiyonu olmasından kaynaklıdır. Biz burada linux konsolune php yazdığımız zaman çalışacak dosyanın nerde olduğunu vererek karşılaştığımız bu sorunu çözebiliriz. Linux'da yazdığımız konsol komutlarının nerden alınacağıyla ilgi dosya kullanıcı klasöründeki .bash_profile adlı dosyada değişiklik yaparak çözüme ulaşabiliyoruz. .bash_profile aynı zamanda alias tanımlamaya da yardımcı olur muadil olarak .bashrc dosyasında da düzenleme yapabilirsiniz. Ama linuxu çok detaylı kullanan arkadaşlar için login olan shell için bash bash_profile dosyasıdır bir nevi size hastır bashrc ise bütün shell ortamlarında çalışır. Bir logine ihtiyaç duymaz. Benim tavsiyem .bash_profile kullanmak.



sudo  nano ~/.bash_profile

yazdıktan sonra açılan kısma ilgili php versiyonunun bin klasorunu path olarak eklemeniz yeterli olacaktır. Dosya yolunun önündeki ~/ sizin home/username klasörünüzü gösterir. Örneğin benimki /home/veysel yolunu gösterir.
export PATH=/opt/lampp/bin/:$PATH

yazıp kaydettikten sonra 

source ~/.bash_profile


komutunu çalıştırmanız yaptığınız değişikliğin aktif olması için yeterlidir.
Aynı şekilde diğer bash dosyaları için de yaptığınız değişiklikte source komutunu çalıştırabilirsiniz.
Görüşmek dileğiyle.

Share:

7 Haziran 2017 Çarşamba

NodeJS Debugging

    Merhaba arkadaşlar bu yazıda kodlama yaparken yaşadığımız sıkıntıların çözümleri için başvurduğumuz debugging işleminin PhpStorm IDE'siyle nasıl yapılacağından bahsetmeye çalışacağım.

    Öncelikle PhpStorm IDE'sinden biraz bahsetmek istiyorum.PhpStorm Jetbrains firması tarafından İntellijIdea IDE'sinin PHP için düzenlenmesi sonucunda oluşturulmuş modern bir IDE'dir.Debugging işlemi başka IDE'lerle de yapılabilir.Fakat en çok kullanılan IDE'lerden biri olduğu için biz PhpStorm'u seçtik.

Nodejs'de debugging işlemi istek tabanlı şekilde yürütülür.Bir routeriniz ve o routerin beklediği bir olay varsa olay bloğunun istediğiniz yerine F9 tuşu ile koyacağınız bir breakpoint interpreterin geldiği anda sistemi durdurur ve size oradaki tüm değişkenleri aşağıdaki gibi gösterir.


Gördüğünüz üzere closureler ve globaller bile listeye dahil genişleterek istediğiniz değeri gösterebilirsiniz.Bir Expression'u(kod satırını veya işlemi) Evaluate yani sonucunu işleyebilirsiniz.
Bir satırın evaluate edilmesi aşağıdaki resimdeki gibi yapılabilir.

 Gelelim sistemi nasıl ayarlayacağımıza.Öncelikle sisteminizde NodeJs'yi kurmuş ve PhpStorm'a NodeJs Pluginini kurmuş olmanız gerekmekte.Çok uzatmayacağım NodeJs kurulumunu sitemizdeki bu adresten ve  PhpStorm plugininin kurulumunu buradan öğrenebilirsiniz.

  Aşağıdaki resimde kurulum konfigurasyonunun nasıl olması gerektiği hangi alanlara ne yazması gerektiği belirtildi.PhpStorm konfigürasyonlarına tıklayıp yeni konfigürasyon diyin.Sonra Add New Configuration deyip Node.js yi seçin.Bazı bilgiler isteniyor.Bunlar,
Interpreter:Node.js interpreterinin yerini gösteriniz.Benim nodejs kurulumum linux kullandığımdan /usr/bin/node altında
Working Directory:projenizin olduğu yeri gösteriniz
Javascript File:server.js node.js www gibi NodeJs'yi başlatan .js dosyası yolunu gösteriniz.


Ayarlamaları yaptıktan sonra debug butonuna tıklayıp debug işlemini başlatın ve Breakpoint'i koyduğunuz yere requestlerinizle geliniz.

Biz sonraki yazımızda görüşmek üzere..
Share:

31 Mayıs 2017 Çarşamba

Async İle Asenkron Çalışma

Async asenkron işlemler için güzel özellikleri bulunan bir javascript kütüphanesidir.Tarayıcıda kullanılabildiği gibi NodeJS ile de npm vasıtasıyla da kullanılabilir.

Async'in üç farklı konuda fonksiyonları mevcut bunlar collection dediğimiz dizilere uygulanan kolaylaştırıcı fonksiyonlar,control flow diye adlandırdıkları asenkron akışın kontrolü için işe yarayacak fonksiyonlar ki bunlar en çok kullanacağımız fonksiyonlar ve bir diğer fonksiyonlar da util dedikleri çeşitli diyebileceğimiz fonksiyon türleridir.

Bizim üzerinde duracağımız fonksiyonlar control flow kategorisindeki fonksiyonlar olacak.Çünkü kütüphanenin asıl amacı asenkron işlerin yönetiminin kolaylaştırılması.

Hangi fonksiyonun ne işe yaradığını anlatmakla birlikte örnek kodlar da aktarmaya çalışacağım.

İlk olarak async.series kullanımından başlayalım.Bu kullanım fonksiyonlarınızı sıraya dizer ve her bir fonksiyon çalıştıktan sonra callback fonksiyonu çağırılır.Callback fonksiyonuna iki parametre geçilir.Bunlardan ilki varsa bir hata diğeri de fonksiyonun sonucudur.Eğer işlem yapılırken bir hata meydana gelirse onu callback fonksiyonunun ilk parametresi olarak geçmeniz gerekmekte.Örnek kod aşağıdadır.


İkinci önemli kullanım şekli async.parallel.Bu kullanım tüm belirttiğiniz fonksiyonların paralel çalışmasını sağlar.Yani belirli bir sıra gözetmeksizin sistem hepsini başlatır hepsinin sonucunu yine series'de olduğu gibi callback fonksiyonuna bildirir.Örnek kullanım aşağıda mevcuttur.


Bir diğer önemli kullanımımız async.waterfall.Bu kullanım yöntemi adından da anlaşılacağı gibi bir akıntıya veya çağlayana benzer.Fonksiyonlar birbirini takip eder ve bir fonksiyonun çalışması önceki fonksiyondan gelen değerle sağlanır.Aşağıdaki ne demek istediğimi anlatabileceğim bir örnek mevcut.


 Şimdilik async kütüphanesine ait siz NodeJS geliştiricilerinin canını en çok sıkacağını düşündüğüm callback hellleriyle baş etmeniz için yeterli miktarda fonksiyonu açıklamaya çalıştım.Yararlı olması dileğiyle.
Share: