Spring MVC 4 ile örnek bir proje yapalım

Aslında şu sıralar çok yoğunum öyle böyle değil. Sıkıntılar dertler tepemde kara bulutlar gibi dolaşmaktan vazgeçmiyorlar ama yine de benim gibi bir manyağı durdurmaya güçleri yetmez. Hayat her zaman insanın yüzüne gülmez bazen okkalı bir tokat ta vurur ama öldürmeyen acı güçlendirir. Bu yüzden kodlamaya devam ediyoruz. Zaten iyi zamanda herkes kod yazar. Önemli olan kafada bir milyon şey varken kod yazabilmek. Bunu başarmak her yiğidin harcı değildir. Neyse konumuza dönelim. Bu yazı dizimizde sizinle örnek bir Spring MVC uygulaması yapacağız. Sonra bunu herhangi bir servera deploy edeceğiz ve tabiki SVN ve GIT üzerinden paylaşacağız. SVN server olarak Google Code, GIT olarak da Github kullanacağız arkadaşlar. Zaten o kısma gelince daha detaylı anlatacağım. Şimdilik kısaca üzerinden geçtim sadece. (daha&helliip;)

Trim is a lifesaver

Selection_004I’m working on an application that parsing an XML document. Actually this is an KML document and it has some coordinate informations. I’m reading this document via SimpleXML. This is very usefull and easy library. Thanks to PHP Team for this library but there is a very very small thing that when you get data in a tag that can return the whitespace characters. For example New Line Character “\n”, Tab character “\t”, Space character ” “ etc.

(daha&helliip;)

Design Pattern – Başlangıç giriş önbilgi ne nerde nasıl hangi

java design patternDesign Pattern yada Türkçe ifadeyle Tasarım Desenleri, Tasarım Şablonları. Neden böyle bir mantığa ihtiyaç duyulmuş? On yıllar boyunca çalışacak olan bir projeniz varsa bunu nasıl geliştirirsiniz? Spagetti yöntemle mi? Nesnel yaklaşımla mı? Event driven mı? Veriler nasıl işlenecek ve saklanacak? Kullanıcı ne yapabilecek ne yapamayacak? Hiyerarşik şekilde bir yetkilendirme sistemi olacak mı? Beklenmeyen bir durum olduğunda uygulama nasıl davranacak? Bu soruların hepsi Project Manager ve müşteri tarafından cevaplanır ve bu cevaplar sayfalar dolusu olabilir. Ayrıca proje geliştirilme esnasında farklı sorularla karşılaşılır. Tümünün bir şekilde cevaplanıp uygulamaya konulması gerekir. Peki sürekli geliştirilebilir, çalışan ve müşterinin isteklerini yerine getiren bir uygulama nasıl yazılır? (daha&helliip;)

Upload yaparken 500 hatası almak

Localde bir uygulama yapıyorsunuz ve takır takır çalışıyor. Dosyayı upload yapıyor, PHP ile dosya üzerinde istediğiniz işlemi yapabiliyorsunuz, dosyayı istediğiniz yere kaydediyosunuz vs vs. Sıra uygulamayı internete taşımaya geliyor ve açıyorsunuz FileZilla’yı ve uygulamayı siteye gönderiyorsunuz. Uygulamayı denemek için adres çubuğuna gelip site adını yazıyosunuz. Uygulama sorunsuz açılıyor. Yüklemek için bir dosya seçmenizi istiyor. Yüklemek istediğiniz dosyayı seçiyorsunuz ve tataaa. “500 Internal Server Error” alıyorsunuz. Ama localde herşey düzgündü. Hiçbir problem yoktu. Hatta unit testlerinden bile geçmişti. Nerden çıktı bu problem şimdi. Sorun sizden kaynaklanmıyordu. Çünkü bu sıradan bir PHP Exception değil. Serverın kendisinde bir sıkıntı var. 500 hataları server ile alakalıdır. Sizin scriptinizle alakalı değildir.

Öncelikle problem çözme aşamalarından ilki olan problemin ana kaynağını bulma konusundan başlıyoruz. Problem ne zaman oluşuyor? Dosya yükleyince. Peki biz upload yaparken scriptimiz Apache’nin bir kısıtlamasına müdahale etmeye çalışıyor mu? Hayır. O zaman bizim scriptimizde bir problem yok. Apache’nin kendisinde bir problem var. Artık öyle bir devirde yaşıyoruz ki sizin karşılaştığınız problemle çoook yüksek bir ihtimalle başkası da karşılaşmıştır hatta çözmüştür. Bu yüzden öncelikle Google amcamıza danışıyoruz. (daha&helliip;)

PHPUnit Kullanımı

TDD bildiğiniz gibi Yazılım Geliştirme dünyasının en önemli kavramlarından biri. Günümüzde her türden yazılım için TDD gerekebiliyor. En küçüğünden en büyüğüne kadar. Bazen bir library yazarken bazen bir class yazarken işlerin gerçekten beklendiği gibi gidip gitmediğini bilmek gerekir çünkü yazılımlar o kadar karışıktır ki ufak hatalar büyük sonuçlara sebep olabilmektedir. Sizin yada başkasının bilmeden yaptığı bir hatanın tüm uygulamayı mahfetmesini istemezsiniz değil mi? İşte bu yüzden TDD kullanmak zorundayız.

PHP her ne kadar aslında nesne yönelimli bir dil olmasa da artık OOP desteği baya ilerledi. Bundan birkaç yıl önce neredeyse tüm PHP scriptleri spagetti şeklinde yazılıyordu ama artık PHP geliştiricileri olayın önemini anladı ve yavaş yavaş OOP mantığını kullanmaya başladılar. Sonra birşey daha farkettiler. OOP tek başına herşeyi çözmüyor. Kodun tekrar kullanılabilirliği problemini çözüyor, geliştirme sürecini kolaylaştırıyor, vs vs birçok faydası görülüyor ama bir noktada yeterli olmuyor. Projeye başladıktan birkaç ay sonra işler sarpasarmaya başlıyor ve bir library’nin farklı versiyonlarında bile proje çökebiliyor yada beklendiği gibi çalışmamaya başlıyor. Bu gibi problemleri halletmek için Test Driven Development kavramını PHP’ye uyarlamak gerekiyor. (daha&helliip;)

PHP kodları kilitlenebilir mi?

PHP kodlarımızı lisanslamak amacıyla şifrelemek için birçok yöntem mevcut. Ioncube, Zend Encoder vs. Bir de bugün duyduğum phpkilit.com diye bir site varmış. Siteye PHP kodlarını yazıyosun ve sana birsürü karman çorman şifrelenmiş bir kod veriyor. Sen de onu rahatça(!) kullanabiliyosun.

Aslında bu yalan. Çünkü hiçbir şifreleme algoritması yok ortada. Sadece base64 ve gzinflate ile birşeyler yapılmış. Şöyle bir baktığınızda birkaç atamadan ve base64 ve gzinflate ile sıkıştırmaktan başka birşey yok ortada. Halbuki kodu şifrelemek için çok üst düzey matematiksel fonksiyonlar gereklidir. Burada hiçbir matematiksel işlem yok. Bu yüzden bunu kırmak çocuk oyuncağı. (daha&helliip;)

Future of Codeigniter

The time which nobody is developing PHP with OOP principles. They trying to solve mysql_connect errors and mail function errors. And then a crazy thing enveloped every PHP developer. This things name is “framework”. Rised Zend, Codeigniter, Yii, Symphony words in one second. Someone wrote blogs, making discussions and a lot of articles. A person saying that “Everybody must use framework.” another said “You don’t need use any framework. You will create your own code base.” another said “I love spaghetti code.”. I readed a lot of article, blog entries and forum discussions and then I decided that I must use a framework.

(daha&helliip;)

Codeigniter ve Çoklu Dil

Bu makalemde CI ile multilanguage olayının nasıl olabileceğini açıklamaya çalışacağım. Bunun birçok yolu var. Örneğin dilin sessionda saklanması ve bu yüzden URL’de görünmemesi. Yada şuanki dilin URL’de görünmesi ve sessiona gerek kalmaması yada her ikisi falan filan. Olayın mantığını değiştiren şey bu aslında. URL’de görünecek mi görünmeyecek mi? Örneğin ingilizce anasayfa için şöyle bir adres: siteadi.com/en/main. Türkçe anasayfa için: siteadi.com/tr/anasayfa, siteadi.com/tr/main vs vs vs. Öncelikle bunu belirlememiz lazım. Dil nasıl değişecek? URL’de görünecek mi görünmeyecek mi? Bu soruların cevabını vermemiz gerekiyor. Çünkü cevaplara göre izlenecek yöntem değişir. (daha&helliip;)

Apache Alias Eklemek

Şuan windowstayım ve wamp kullanıyorum. Bu yüzden wamp‘ta alias nasıl eklenir onu söyleyeceğim. İlerleyen zamanlarda linux ortamında bunu nasıl yapılacağını da yazabilirim. Öncelikle bu ne işimize yarar ondan biraz bahsedeyim. Normalde apache bizim c:\wamp\www klasörünü görür. Temel dizin burasıdır. Adres Devamı…

Codeigniter’in geleceği

Henüz o zamanlar PHP’de nesne yönelimli geliştirme yapan yok gibiydi. print yerine echo kullanılıyordu. mysql_connect’lerin verdiği hatalarla, mail’lerin verdiği hatalarla az uğraşmadık. Sonra birdenbire PHP camiasını bir “framework” çılgınlığı sardı. Zend, Codeigniter, Yii, Smyphony piyasaya çıktı. Makaleler yazıldı tartışmalar yapıldı, “Herkes framework kullanmalı” diyenler mi dersin, “Zamanla kendi şablonunu oluşturursun zaten” diyenler mi dersin, “Alışmışız abi spagetti kod yazmaya” diyenler mi? Birçok forum gezdim birçok programcıyla tanıştım ve sonuçta ben de bir framework seçme kararı aldım.

(daha&helliip;)