Merhaba!
Uzun zaman oldu buralara uğramayalı. Tahmin ettiğiniz gibi artık PHP yazmadığımdan değil tabi! :) Cumartesi günü çok güzel bir etkinlikteydik. Yeni yüzler görme  ve kaliteli bir ekibi tanıma şansım oldu. Yazılım Atölyesi‘nin her ayın 3. Cumarteis gübü düzenlediği atölyeye katılma fırsatım oldu. İlk katılımımda da konuşmacı olarak çağırılmam gurur vericiydi. Etkinlik Hasan Tayyar Beşik‘in Hadoop ve PHP sunumu ile başladı, Büyük dataları (gerçekten büyük ama :) ) işleme ihtiyacı duyarsak nasıl bir yol izlerizin dışında PHP kullanırken böyle bir ihityacınız olursa nasıl bir yol izlersiniz Hadoop size ne sağlar bunu anlattı. Daha önce ihtiyaç duyduğum işler yaptım ama ne yazık ki şuan denemek için yer arıyorum. Ben de denersem buradan deneyimlerimi aktarırım inş. Gelelim organizasyonun kendisine, kaçırmamak için elimden geleni yapacağım. Tayyar’dan sonra sıra bendeydi : ) titrektim lan! başlangıc heyecanlı olsa da katılımcıların kalitesinden olsa gerek ki, sohbete dönüşünce çok eğlenceli bir sunum oldu benim için de. Canlı izleyen arkadaşların özellikle son sorunun, sunumun tüm amacını açıkladığını düşünüyorum. Yani bitişi de güzeldi. Onu da izleyin ben söylemeyeyim : )

Etkinlik videosu : http://www.livestream.com/nbajans/video?clipId=pla_1c1004f5-2f2b-45f9-a64c-9e2971570a06

Sunumum : http://tufanbarisyildirim.com/presentations/php-birakmak-icin-50-sebep/

 

Ve sunumdan birkaç görüntü  ..

codeRefactoring

Önceliklee  size sonra da yeni kategorime merhaba,

Bugünlerde (5-6 ay) en çok yaptığım iş “refactoring”, yeniden düzenleme anlamında kullanıyoruz. En başarılı developer yazılımlarını yapan firmalara bakın (devex,telerik,microsoft vs) hepsinin Refactor toolu vardır. Çünkü ekipler arası bir standart vardır. Bu standartlar öyle semantiktir ki (kendileri de o kadar iyidir ki :) ) bu işi es geçen, unutan, dalgınlığına gelen yazılımcılar için bunu tespit edebilecek ve hatta düzeltebilecek toollar yazarlar.

Sorunsuz çalışan bir yazılım, çok iyi yazılmış bir yazılım değildir.

Ya da çok iyi olabilir, ama yine de çok iyi kod yazılmış anlamını taşımıyor :) Refactoring işlemini niye yaparız peki? Bence bir daha refactore ihtiyac duymasın diye :) Şahsen dayanamıyorum, ve dahil olduğum projede ilk işim kod düzeltmek oluyor. Hayal edemeyeceğiniz (ya da edebilrisiniz)  kadar kötü kodlarla karşılaştım ama hiç birinde “bu projeyi komple yeniden yazmak lazım yeaaa” demedim. Diyeni de sevmem :) “Source code” diye birşey var di mi ama? Bu kodlar neye yarar? Geliştirmeye, değiştirmeye, evirmeye çevirmeye.

 

Yazılımlar geliştirilmek içindir, yeniden yazmak için değil.

Yeniden yazmak, bana hiçbir zaman o iş daha iyi olacak hissini vermiyor.  İlk anlamadığı kod öbeğinde “bunu yeniden yazmamız lazım” diyen bir yazılımcıya karşı önyargılarım uyanıyor, aralarında dedikodu yapıyorlar hemen.  Bu kod okumayı bilmiyor bence.. Çok mu tecrubesiz? diğeri; yok bence bu hiçbir zaman geliştirilebilir kod yazmıyor (geliştirilemeyen kod yok bu arada) baksana adam seneler önce böyle yazıyordu bence, seneler sonra da daha iyi yazacak ve bu yaptığı iş boşa gidecek! Evet bunlar önyargılar ve aralarında öylesine , pek de umursamadığım bir dille dedikodu yapsalar da içten içe hepsine hak veriyorum. İlk yaptığınız işin üzerine seneler sonra birşeyler eklemek isterken “bunu baştan yazmalıyım” diyorsanız.  Seneler sonra şimdiki işiniz için de aynısını söyleyeceksiniz.

Önceki yazılımcı

Nedir lan bu önceki yazılımcıların bizden çektiği?  Önceki yazılımcının yaptığı hatalar ve/veya gereksiz kod blokları size sadece iş çıkarır. Hayır işinizi engellemez, geliştirmeyi geciktirmez. Çok kötü , hatta çok çok kötü, hatta the worst “önceki yazılımcı”‘nın işi ile cebelleştim. Hiç biri benim ilk yaptığım site kadar kötü değildi :) (mixtr.net – 2006) – tamam devamını yazmayayım o zaman asıl “önceki yazılımcı” benmişim :) spagetti yazılmış, hatta böyle ne idüğü belirsiz baharatlar atılmış ketçap sıkılmış spagetti gibi yazılmış kodlar bile size bir tecrubeyi çöpe atma hakkı vermemeli. Bunu kendiniz için yapın! ve kodları ziyan etmeyin.  Tam da böyle yazılmış koca bir programı (2 yılda geliştirilmiş ) Zend Framework standarlarına oturtup veritabanını değiştirmem gerekmesi bile bana bunu yaptırmadı yeniden yazmadım. Yoksa yeniden yazmış mı oldum? kodları ziyan etmediğimden eminim :) ve her modül geçirilirken, kullanıcıya hissettirmeden modülün biri Zend’de diğeri eski yazılımda çalışıyordu. Gül gibi de geçindirler, düşman da değiller, kanlı da değiller. Ha şimdi diğerinden eser yok o da doğal seleksiyon :) Uzatmadan asıl söylemek istediğimi şöyle bir cümleyle yazayım ( evet bu paragraf boşuna mıydı diye düşünebilirsiniz cevabı da kendiniz verin :) )
Geliştirilemeyen  yazılım yoktur. Geliştiremeyen yazılımcı vardır.

Şimdi tüm “önceki yazılımcı”lardan özür dileyin! :)

Bu kategoride, hiçbir kategoriye dahil edemediğim “bunu  böyle yapmayın!” diye haykırmak istediğim ayrıntıları yazacağım. Ben o “önceki yazılımcı” ların kodlarını yazarken en çok neleri görüyorsam, getirip onları gözünüze gözünüze yok pardon bu kategoriye yazacağım. Böylece “nasıl önceki yazılımcı olunur”u öğrenerek nasıl olmanız gerektiğinize siz karar vereceksiniz. Siz de bana “sana ne lan yapraaam” diyebilirsiniz tabi. Kafanıza nasıl esiyorsa öyle yazarsınız. Ama elinizde bir günah keçisinin olması sizi iyi yazılımcı yapmaz  ben peşinen söyleyeyim de :)

Ha bi’ de unutmadan , O önceki yazılımcılar var ya, onlar geliştirler nerelerdeler haberiniz var mı? Kodlarınızı görseler biyerleriyle gülerler!

Bir de mesajları var: Merhaba. Sen şuan benim o zamanki seviyemdesin. Çünkü şuan o projede sen varsın. Benim daha önemli projelerim var. Lütfen kulağımı çınlatıp durma. – Önceki yazılımcı.

Görüşmek üzere.

Bu yazıyı bitirme zorunluluğu hissetmem için bu haliyle yayınlıyorum. Güncellerim söz :)
Son güncelleme :  (1 Şubat 2012 16:06) “Integrations (Tools & Scriptting) ”

Bu aslında bir inceleme yazısı değil :) yıllardır kullandığım editörü, anlatmaktan ve karşılaştırmaktan bıktım. PhpED ile yeni tanışan insanlara faydalı olabilecek bir yazı olsun istedim.
PHPed “Ergin Soysal” tarafından geliştirilmiş ve tahminen 2001 sonlarına doğru Nusphere tarafından satın alınmış  hem php standartlarını, hem  Visual Studio standartlarını yakından takip eden, hem de çok sık güncelleme yapılan bir proje. Birçok dilde dinamik kod renklendirmesi, FTP / CSV / DB / SSH bağlantıları için tek tool olabilmesinin yanında bir geliştiricinin en çok ihtiyaç duyduğu debugging ve profiling işlemleri üzerine yoğunlaşmış yapısı var. PHP’nin bütün dinamikliğini o editöre sıkıştırabilme başarılarını da kutluyorum :)
Benim eksiğini hissetiğim tek şey, plugin development şansı vermemesi. Bunu da bizzat görüştüm, ve en esnek plugin yapısını getirmek için çalıştıklarını söylediler. Hatta son zamanlarda yaptıkları yenilikleri plugin olarak geliştiriyorlar. Bu da henüz bir api vermeseler de yapıyı oluşturkları anlamına geliyor. Heyecanla bekliyorum.

Syntax Highlighting

Her editörde olması gereken güçlü ve özelleştirileiblir bir highlighting var PhpED’de. Bunun yanında “Dynamic Highlighting” diye adlandırdıkları bir yöntemleri de var, embedded kodlara gelince geri kalanı pasif eden bir yöntem, hiç ısınamadım ama kısaca şoyle ; php / html / js kodlarını iç içe yazdığımızı varsayalım, php kodların olduğu satırlara focus olduğumuzda sadece php kodlar renkleniyor geri kalan griye (ya da belirlediğiniz renk) dönüşüyor. Aynısı diğer diller için de geçerli. genel olarak php / js / html yazdığımız bir sayfada soldaki gibi bir görebiliyoruz.

 

Code Folding

Code folding de yine standart editör özelliklerinden,  güçlü bir richtext editörü olduğunu da burda belirtmiş olayım, ayarlar bölümünden dosyaları açtığı anda collapse etmesini istediğiniz blokları belirleyebiliyorsunuz, ben mesela tüm fonksiyonları collapsed görmek istiyorum, malumunuz standartlara pek uyamadığımız için fonksiyonlarımız tek ekranda görünemeycek kadar büyük olabiliyor :)

 

 

Accounts

“Tools > Account” menüsünden ulaştığımız bu pencerede FTP / Veritabanı ve SSH hesaplarımızı kaydedip daha sonra bunları yardımcı pencerelerden kullanabiliyoruz, bunları ayrı ayrı incelemek istediğim için şimdilik bu ekranı göstermek yeterli.

 

 

 

SSH Tab

DB Tab

Üzerine pek yoğunlaşmadıkları bir özellik bu . Bence “Accounts” kısmı zenginleşsin diye yapılmış :) asıl işleri PHP zaten bunlara da  ihtiyacımız yok. Ama bunların da geliştirileceğinden eminim.
Accounts menüsünde DB accounts altında açacağımız hesaplarla birçok veritabanına IDEmiz üzerinden bağlantı sağlayabiliyoruz, çok basit bir arayüzle sorgularımızı çalıştırmamıza ve tam olmasa da arayüzüyle veritabanı yönetimine imkan sağlıyor.

o pencerede alınabilecek ilk hatalardan biri : “Client does not support authentication protocol  requested by server; consider upgrading MySQL client

PHPED’in dikkat ettiğim diğer ilginc özelliği de, eskiyi desteklemek için çaba göstermeleri,PHP4, Mysql4 sürümleri için  ekstra konfigürasyonlar yapıp bunları da destekliyorlar. phpedin kurulu olduğu klasörde bulunan “libmysql.dll” dosyasının server versiyonunuza uymaması yukarıdaki hatayı almanıza sebep olur. Tam açacak olursak, uymayan protokol aslında, Mysql 4.1 den sonra auth protokolü üzerinde değişiklik yapmış. Bu da Clientlerın güncellenmesini gerektiren birşey, ya da sunucuda eski protokolü desteklemesi için  http://dev.mysql.com/doc/refman/4.1/en/password-hashing.htm adresini takip ederek hem bu farkı anlayabilir, hem de old password konfigürasyonu yapabilirsiniz. Size tavsiyem, mysql serverin kurulu olduğu klasörden  C connector klasörü içinden libmysql.dll dosyasını alıp, phped klasörüne kopyalamanız.

 

Debugging

Debugger toolboxı diğer toolların bulunduğu panele sağ tıklayarak aktif ediyoruz,
Sırayla ikonları anlatırsak,

Run (Ctrl+F9): debug modu devreye sokmadan, bulunduğumuz sayfayı direk çalıştıran butondur. Output adında bir pencere açar ve tarayıcıda göreceğimiz şekliyle bize projemizi çalıştırıp sunar.

Run in debugger (F9) :  Debug modda projeyi çalıştırır, Normal şartlarda breakpoint görene kadar çalışır, yoksa Run ile bir farkı yoktur, ama “Tools > Settings > Run & Debug > Settings”  panelinde break  “Break on start,  Break on Error  ve Break on Exceptions” ayarları açık geldiğinden, ilk satırda durur ve sizin bir işlem daha yapmanızı bekler, hatalarda ve custom exceptionlarda durur.

Run Profiler(Alt+F9) : Profilerı çalıştıran butonumuz, performans analizi yaparken sıkça kullanacağınız butondur, Profiling olayını daha da detaylandırmadan önce kısaca şunu söyleyelim, display moduna göre sizin hangi satırda, hangi fonskyionda ya da hangi dosyaya kaç defa uğradığınızı, ve orada ne kadar zaman harcadığınızı yazar, (herhangi bir expression içermeyen satırlar profilingi pek ırgalamıyor :) o da biline)

Kısaca böyle bir çıktı veren profiling toolumuzda kullanacağımız özelliklerden hemen bahsedeyim, “M/F/L” butonları. Modüle / Functions(Routine) /Line. M butonu ile Dosyaya göre gruplayıp detayda satırları görebiliyoruz (eval() bloklarını da ayırır.) F butonu ile fonksiyonlara göre gruplanmış ve yine detayda satırları veren raporu görebiliyoruz, L butonu ile de satırlara göre gruplanmış ama detayı olmayan (kendisi detay zaten) bir rapor görüyoruz. Aldığımız çıktıdaki Heat titlellardan herşey anlaşıldığı için raporu nasıl yorumlayacağınızı da  size bırakıyorum. Birşey daha eklemek gerekirse bu satırlara çift tıkladığımızda ilgili kodun bulunduğu dosyaya ve satıra gidiyor.

 

Remote Debugging

– gelecek –

CSS Önizleme

Preview Özelliği yabancı olduğumuz bir CSS dosyasını görsel bir şekilde incelemek için çok iyi kısaca ekran görüntüsü saolda. güncellenecek.

 

 

 

 

 

Tasarım önizleme

Encoding

Database

Autocomplete (phpdoc.)

PhpDOC standartları

Framworkler ve dinamik sınıflarla çalışırken autocomplete.

Integrations (Tools & Scriptting)

“Tools > Settings ” Penceresinde  “Tools > Integrations”  menüsünden ulaştığımız bu araçla, PhpED’e shell script çalıştırtabiliyoruz,
Entegre gelen CSV / Polystyle gibi araçlar için halihazırda yazılmış örnekleri ve Ortam değişkenlerini kullanarak işlerinizi kolaylaştırabilirsiniz.
SVN için Shell Menü kullanılıyor olsa da, Svn Update ve Svn Info menüleri ekledim, Update bana yeni pencere açmasın ve console çıktısını da log windowa düşsün istedim, ikinci action da  “svn info @ProjRoot@” ile  proje klasorunun svn bilgilerini (revizyon tarihi,son revizyonun sahibi vs.)  projede kullanabileceğim bir yere yazdırıyorum, hem versiyon takibini projeye entegre etmiş oldum, hem de bu işlemleri tek tıkla yapabilmiş oldum.  Tek başına  kullanışlı bir “SVN” Menüsünü hazırlayınca onu da buraya paylaşırım.

 

Build-in fonksiyonlarda Funcitons penceresini otomatik açma.

– spoiler –

Herşeyi anlatıyorum dostum. İyi dinle. Nete düşmez bu.

Günaydın dediğin biri var, neredeyse programlamışsın telefonu, böyle her sabah gönderiyor, sonra bir “naapıyon?” diye devam eder  durur da, bir kahve molasında sesini özlersin.
Kahve + sigara + sevdiceğin yani öyle işte.
Film önce güzel haberlerle başlıyor, aşk tavan! romantizma yerini nezamanki trolizmaya bıraktı o zaman film daha heyecanlı oluyor.
Tabi hangi taraf için oluyor orası değişken.

Ulus – Gölbaşı dolmuşu ayakta yolcu almıyor, bizim saf 4 araçtan sonra biniyor.
Bir dalıyor uykuya piyuuu.
Film zaten onun rüyası aha baştan söyledim! İzlemeye değmez söylim de sen dinle izlemiş gibi olursun.

Bizim saf kafayı dolmuş/metro camına koyar koymaz, sinemada olduğunu düşün. Şekerbank’ın “Haydi şimdi evine” reklamı var ya, ha işte o manzara, Camı açıyor biri hemen Finansbankın “Rüzgar nereye biz oraya” reklamını izliyor. Yolu uzun 45 dakika sürüyor. Bu da yanına atıştırmalık alıyor. Hemen ardından da Metronun “ımmmmmmm” reklamı var ya onu geçir gözünden,

“Film az sonra başlıyor”.

Bunu da gördüysen filmi anlatayım bak canlandıramıyosan git burdan!

– spoiler –

gelecek :)

– spoiler–

© 2012 Tufan Suffusion theme by Sayontan Sinha