Çıktığından itibaren kullanmaya başladığım ve son 3 yıldır tüm web geliştirme işlerimi PHPStorm IDEsini kullanıyorum.

Java tabanlı NetBeans'i modifiye ederek bir IDE (Integrated Development Environment) yani Entegre Geliştirme Ortamı oluşturdular.

PHP'de en büyük problem entegre bir geliştirme ortamı olmaması. Yani derleyiciyle iyi konuşan, iyi bir hata yakalama, test ortamı veya kod ve yazım zekası na sahip bir editör bulmak çok kolay değil. Bunları, kullandığınız işletim sistemine uygun ayrı ayrı araçlarla sağlayabiliyorsunuz tabii ki, fakat entegre şekilde çalışmalarını sağlamak çok da kolay değil.

PHPStorm ilk çıktığında minimal bir konfigürasyon sunarak kod yazım zekası ile bazı temel yazılım geliştirme araçlarını sunuyordu fakat çok hızlı bir şekilde birçok modern web geliştirme dilini (less, sass, haml) ve birçok uygulama geliştirme çatısını destekler hale geldi. Minimal ayarlarla gelişmiş bir editörden ek farkı yok fakat aşağıda kısaca sıraladığım entegre araçları aktif hale getirildiğinde gerçekten çok güçlü bir geliştirme ortamına dönüştürebiliyorsunuz. İşte benim çok sık kullandığım ve sizin de yüksek ihtimalle işinize yarayacak bazı özellikler ve araçlar.

Gelişmiş kod yazım zekası sadece php'de değil php tabanlı bir web projesinde kullanabileceğiniz olası tüm kodları (html, javascript, css, xml) geliştirmek için kullanabilirsiniz. Ek olarak bu altyapılardaki tüm popüler uygulama çatılarını (framework) kod yazım zekasında kullanılabilir şekilde bulabilirsiniz.

Eş zamanlı hata yakalama, xdebug ile çalışan web uygulamanızı editörünüzle entegre ederek eş zamanlı uygulama analizi yapıp hata yakalayabilirsiniz.

Versiyon kontrol sistemi entegrasyonu ile kodunuzu subversion, git gibi depolardan indirip yönetebilirsiniz.

Veritabanı bağlantılarınızı sadece editörünüzden veritabanınıza erişmek için değil kodunuzda yazdığınız SQL'leri kodu yazarken çalıştırıp test edebilir, SQL geliştirirken kod yazım zekası kullanabilirsiniz.

Bunların dışında otomatik yayınlama (deployment), otomatik ftp yüklemesi, zen coding, kod template'leri vs vs gibi bir ton diğer özelliği var.
3 yılda 6 ana sürüm çıkartarak çok kararlı ve güçlü bir php geliştirme ortamı sunuyor jetbrains. Malesef paralı olan ide diğer profesyonel idelere göre çok ucuz, ilk aldığınızda 100 dolar sonasında her yıl ana sürüm güncellemelerini almak için 50 dolar ödemek zorundasınız fakat yaptığınız yatırımı kesinlikle karşılıyor.

Jetbrains PHPStorm'daki birçok aracı Ruby, Python için geliştirdikleri IDE'ler için de sunuyor. Eğer Python veya Ruby yazıyorsanız kesinlikle PyCharm ve RubyMine'a göz atmanızı tavsiye ederim.

PHPStorm'un sayfası için:http://www.jetbrains.com/phpstorm/
18 Temmuz Pazartesi ´11   —   1 Yorum

SpringLoops


Yaklasik 1 yildir springloops'da denemeler yapiyordum 2-3 ay oncesine kadar. Ufak tefek projelerimin svn deposu idi sadece, sonra deployment ozelliklerini inceledim ve birkac projeyi springloops ustunden deploy yapmaya basladim. Ancak gecen ay mfyz.com'un svn deposunu paketleyip springloops'a tasidim. Son 2 haftada da on yuzde olmasa da altyapida cok fazla degisiklik yapiyorum. Otomatik deploymentlar ile dogrudan yayina aliniyor, su an sadece ben gelistiriyor oldugum icin manual deployment'a ihtiyac duymuyorum.

Bu benim hikayemdi, ama genel olarak neredeyse butun web projelerinizde kullanabileceginiz, kullanmanizi tavsiye ettigim bir servis springloops. Eger birden fazla proje ve 5 developerdan daha fazla, veya buyuk dosya boyutuna sahip bir projede calisiyorsaniz aylik $10 odeyerek en ufak paketini alabilirsiniz. Aktif calistiginiz proje sayisi birden fazla ise aylik $10 ~ yillik $120 boylesine guzel bir servis icin hicbirsey. Ayrica tek aktif proje ve belli bir disk alani limiti ile ucretsiz uyelik de sunuyorlar, servisin tum yeteneklerini sure siniri olmadan deneyebilirsiniz.

FTP veya SCP/SSH ustunden deployment'lar, version control'deki eventlara alert veya web-script atayabilmek de otomatize edilmis bir ortam olusturmak icin buyuk kolayliklar saglayabilir.

Buradan inceleyebilirsiniz:http://www.springloops.com/
Bu dökümanda sunucumuza svn kurup yayına açmak ve geliştirici grubumuzun erişimine açmayı göstereceğim.
(SVN kullanımı ile ilgili bilgiyihttp://www.mfyz.com/?/dokuman/61/ dökümanından edinebilirsiniz)

SNV yayını yapmak (snvserve)

SVN'i dışarı açmak için subversion-tools paketindeki "svnserve" mini server'ini kullanacağız.
Öncelikle istediğiniz portu firewall'ınızdan forward edin. Ben 1234 nolu portu bunun için kullanacağım örnek olarak. Eğer parametre vermeden (yani özellikle istediğiniz porttan yayın yapmaya çalışmazsanız) svnserve varsayılan olarak 3690 portundan yayın yapacaktır.

svnserve ile istediğimiz porttan yayın açmak için :
svnserve -d --listen-port 1234
komutunu verin, -d parametresi ile deamon olarak çalışmaya başlayacaktır. Yani siz logout olsanız bile çalışacaktır. --listen-port parametresi ise anlayacağınız gibi port belirtmek için kullanılır. Eğer belirlemezsek bahsettiğim gibi 3690 portundan çıkacaktır yayın.

Sunucunuzun init scriptlerine başlangıçta çalışması için svnserve'i eklemenizi öneririm. Unutmayın svnserve'i init'de çalıştırıyorsanız -d parametresi yerine -i parametresi vererek kullanın. -i init modudur.

SVN yayını yapan sunucuya erişim

SVN ile sunucuya erişmenin 2 farklı yolu var, ilki bir giriş denetim dosyası oluşturmaktır. Apache, Ssh veya *NIX sistemlerin giriş denetim mekanizmasını az çok bilenler, bir şifre dosyasının varlığından haberdarlırlar. Zaten hepsi birbirine benzer, burada da aynı mantık ile bir şifre dosyası oluşturuyorsunuz. *NIX crypt ile şifrelenmiş "kullanıcı:parola" satırlarından oluşan dosyadaki kullanıcılar giriş yapabilirler. Daha detaylı bilgiyi SVNBOOK'tan edinebilirsiniz (SVNBOOK'u bilgisayarınıza indirmek içinhttp://www.mfyz.com/dosyalar/Dokumanlar/svn-book-html.tar.bz2 tıklayın). Ben pratik olmadığından geçiyorum.

Size önereceğim ve benim de kullandığım tekniği, yani ssh üzerinden giriş denetimi yaptırarak erişimi sağlamaktır. SSH, sistemde varolan gerçek kullanıcıları baz alarak denetim yaptığından ssh ile svn erişimi yaptırmak aynı zamanda bize sistemde (yani sunucuda) varolan GERÇEK kullanıcıların kendi giriş bilgileri ile erişmesini sağlar. Zaten proje geliştirmek için kullanılacak bir sunucuda ssh, ftp, http, gibi servisler çalıştığından ssh'ı yüklemek veya aktif olarak çalıştırmak çok da ters birşey değildir. Eğer güvenlik konusunda ssh izni vermiyorsanız ssh portunuzu kapatıp ssh servisini svn erişimi için kullanabilirsiniz.

SVN kullanım komutlarımızı aynen burada da kullanacağız. Tek fark proje adreslemesi olacaktır.
svn checkout file:///home/deneme/ calisma_dizini
şeklinde bağlantı kurmak yerine;
svn checkout svn+ssh://127.0.0.1/home/deneme/ proje_calisma_dizinim/
[email protected]'s password:
şeklinde kullanıyoruz. Burada localhost'a göre gösterdim fakat işe yarayacaktır. Sunucunuzun ip'sini girerek sunucu ile bağlantı kurabilirsiniz. Burada sizin local'deki kullanıcı adınızla giriş yapılmaya çalışılacaktır. Eğer sunucudaki kullanıcı adınız farklı ise;
svn checkout svn+ssh:[email protected]/home/deneme/ proje_calisma_dizinim/
şeklinde kullanıcı belirterek giriş yapabilirsiniz.

Eğer 2-3 kez şifre istenmesi ile karşılaşırsanız şaşırmayın benden 3 kez şifre istiyor, bazen 2 kez fln istediği de olabiliyor, ilginç :-)

Bu noktadan itibaren zaten svn kullanımı için kullandığımız komutları uygulayarak projemizi svn üstünden geliştirebiliriz.

SVN kullanımı ile ilgili bilgiyihttp://www.mfyz.com/?/dokuman/61/ dökümanından edinebilirsiniz.

SVN hakkında çok geniş bilgi edinmek için Dosyalar bölümündeki dökümanlar klasöründekihttp://www.mfyz.com/dosyalar/Dokumanlar/svn-book-html.tar.bz2 dosyasını indirerek edinebilirsiniz. (SVNBOOK, İngilizce)


Hazırlayan : Mehmet Fatih YILDIZ
19 Eylül Salı ´06   —   6 Yorum

Subversion nedir?

Subversion, adından da anlayabileceğiniz gibi sürüm yönetim sistemidir. Dosyaları ortak bir depoda tutup sürüm yönetimi sağlar. Subversion'u (genel kısaltması “SVN”) ile proje geliştirirken projenizin sürümlendirilmesini, global bir geliştirme ortamı sunmak amacı ile kullanırız.

Neden Subversion kullanayım?

Subversion'un proje geliştirirken birçok artısı var. Öncelikle her dosyanızın sürümlerini takip edebiliyorsunuz. En güzeli de subversion size o kadar güzel bir inceleme ortamı sunuyor ki, subversion ile eski sürüm dosyalarınızı, yeni sürümlerde neler değişmiş birebir görebiliyorsunuz. Diff görüntüleyici programlar kullanarak (ki çoğu GUI bazlı subversion clientlarında diff görüntüleyici vardır) son sürümde hangi satırlar eklenmiş hangileri değişmiş. hangi satırlar silinmiş kolaylıkla görebilirsiniz.
Bir diğer güzelliği de editör bazlı görebilmektir. Yani subversion'a atadığınız kullanıcılar veya sisteme ait kullanıcıların subversion'u kullanması iznini vererek. Bu sürümlerdeki değişimlerin kimler tarafında yapıldığını görebilmektir. Mesela bir düzenleme yapıldı ve ya hatalar oluştu ya da kodlar kayboldu, ya da gerçekten güzel bir düzenleme yapıldı, bunu kimin tarafından yapıldığını görebilirsiniz.

Ayrıca kendi dosya transfer protokolü sayesinde herhangi bir ftp gibi bir sunucu kurmanıza gerek kalmayacaktır.

SVN kurulumu

http://subversion.tigris.org/ adresinden işletim sisteminize uygun paketi inidirip kurabilirsiniz.

Debian ve debian tabanlı (mesela ubuntu) sistemlerde kolayca;
apt-get install subversion
komutu ile kurabilirsiniz.

Ben ubuntu'da;
apt-get install subversion subversion-helper-scripts subversion-tools
komutu ile subversion ve subversion araçlarını kolayca kuruyoruz.

SVN kullanımı/komutları



Depo oluşturmak

Yeni bir SVN deposu oluşturmak için svnadmin komutunu kullanırız.
svnadmin create /home/deneme/
Bu komut ile /home/deneme klasörümüzü svn repo'su olarak ayarlayabiliriz. Bu komutu uyguladıktan sonra aşağıdaki ağaç yapısına benzer bir dosya/dizin yapısı oluşacaktır.
/home/deneme/
|-- README.txt
|-- conf
| |-- authz
| |-- passwd
| `-- svnserve.conf
|-- dav
|-- db
| |-- current
| |-- format
| |-- fs-type
| |-- revprops
| | `-- 0
| |-- revs
| | `-- 0
| |-- transactions
| |-- uuid
| `-- write-lock
|-- format
|-- hooks
| |-- post-commit.tmpl
| |-- post-lock.tmpl
| |-- post-revprop-change.tmpl
| |-- post-unlock.tmpl
| |-- pre-commit.tmpl
| |-- pre-lock.tmpl
| |-- pre-revprop-change.tmpl
| |-- pre-unlock.tmpl
| `-- start-commit.tmpl
`-- locks
  |-- db-logs.lock
  `-- db.lock

8 directories, 23 files
Eğer komut hatasız işletilmiş ve bu dosya/dizinler oluşmuşsa svn repomuz oluşmuştur. Buradaki dosya ve dizinlere dokunmamanızı öneririm. Şimdi Herhangi bir dille yazdığımız projemizi bu depoya ekleyelim. Varolan projemizin /tmp/projem dizininin altında olduğunu varsayarsak;
[email protected]:~$ cd /tmp/projem/
[email protected]:/tmp/projem$ mkdir trunk branches tags
proje dizinimizde “trunk”, “branches”, “tags” adlı 3 dizin oluşturuyoruz. Şimdi proje ana (root) dizinimizi trunk dizininin içine taşıyoruz. Projeniz trunk dizini içerisinde yer almalı.

Depoya yeni bir proje eklemek

Dizin/dosyalarımızı yukarıdaki gibi düzenledikten sonra;
[email protected]:/tmp/projem$ svn import /tmp/projem file:///home/deneme/ -m "Proje Adı"
Adding /tmp/projem/trunk
Adding /tmp/projem/trunk/dizinim
Adding /tmp/projem/trunk/dizinim/veri.txt
Adding /tmp/projem/trunk/dizinim/indeks.txt
Adding /tmp/projem/trunk/deneme.php
Adding /tmp/projem/trunk/info.txt
Adding /tmp/projem/trunk/index.php
Adding /tmp/projem/branches
Adding /tmp/projem/tags

Committed revision 1.
yani;
svn import /tmp/projem file:///home/deneme/ -m "Proje Adı"
komutu ile projemizi depomuza ekliyoruz.

Bu işlem sonucunda artık SVN üzerinden çalışabiliriz. Bu komut /tmp/projem dizinini çalışma dizini haline getirmez!

Bu noktadan itibaren geliştirici grubu svn üzerinden sürüm yönetimi ile çalışabilecektir.

SVN'deki bir proje ile çalışmak (geliştirici komutları)

SVN'de yayında olan bir proje ile çalışmanız için öncelikle o projenin son sürüm kopyasını bilgisayarınıza çekmeniz gerekir.
svn checkout file:///home/deneme/trunk proje_calisma_dizinim
komutu ile snv projemizi bulunduğumuz dizinde "proje_calisma_dizinim" adlı dizine (yoksa oluşturulacaktır) kopyalamış oluyoruz.
Bu komutun çıktısını şuna benzeyecektir :
[email protected]:~$ svn checkout file:///home/deneme/trunk proje_calisma_dizinim
A proje_calisma_dizinim/deneme.php
A proje_calisma_dizinim/dizinim
A proje_calisma_dizinim/dizinim/veri.txt
A proje_calisma_dizinim/dizinim/indeks.txt
A proje_calisma_dizinim/info.txt
A proje_calisma_dizinim/index.php
Checked out revision 1.
Şimdi bilgisayarımızdaki proje_calisma_dizinim içerisinde olan projemizde istediğimiz değişikliği yapabiliriz. Yaptıktan sonra yeni sürüm dosyalarımızı sunucuya yüklemek için;
[email protected]:~/proje_calisma_dizinim$ svn commit --message "hatalar düzeltildi"
Sending index.php
Sending info.txt
Transmitting file data ..
Committed revision 2.
yani;
svn commit --message "hatalar düzeltildi"
komutu bize düzenlediğimiz dosyaları otomatik olarak sunucuya yükleyecek ve yeni sürümlere yükseltecektir. Burada sadece değişen dosyalar yüklenecektir. SVN bunu otomatik olarak tespit edip yapacaktır. --message ile yeni sürüme ait notları belirtiriz.

Siz projeyi geliştirirken başka bir geliştirici kod ile oynamış olabilir onun için çalışmaya başlamadan
snv update
komutu ile projeyi son sürüme güncellemiş oluruz.
Unutmayın, svn oturum tutarak çalışır. Yani checkout ile bir svn deposuna bağlanmamışsanız update, commit gibi komutlar bir işe yaramayacaktır. Bu komutlar son bağlantı kurduğunuz SVN deposunda çalışacaktır.

Projeye dosya ekleme, çıkarma, kopyalama ve taşıma işlemlerini;
svn add dosya.txt
svn delete dosya.txt
svn copy orjinal_dosya.txt kopya.txt
svn move eski_dosya.txt yeni_dosya.txt
komutları ile yapabilirsiniz.

Projedeki değişimleri izlemek için;
svn log
komutu ile değişiklik listesini alabilirsiniz.

Subversion, commit işlemi yaparken transferin daha güvenli olması için işlemleri bir günlük (log) dosyasına atar. Sunucuya yükleme işlemi yapıldıktan sonra bu günlük dosyasındaki değişimler uygulanır ve commit işlemi sona erer. Eğer commit işlemi olurken bir aksaklık olursa (bağlantı kopması, elektirik kesilmesi gibi) bu günlük dosyası silinmez ve kalır. Bu günlükteki işlemleri tamamlatmak için;
svn cleanup
komutu uygulanır.

Eğer süreçlerden birisi kitli kalmışsa;
svn status
çıktısında "L" olarak görünen dosyalar kitli kalmıştır, bu da svn cleanup komutu ile çözülür.


SVN hakkında çok geniş bilgi edinmek için Dosyalar bölümündeki dökümanlar klasöründeki
http://www.mfyz.com/dosyalar/Dokumanlar/svn-book-html.tar.bz2 dosyasını indirerek edinebilirsiniz. (SVNBOOK, İngilizce)


Hazırlayan : Mehmet Fatih YILDIZ

Kaynaklar : Belgeler.org SVN kullanım dökümanı

Popüler Etiketler

örnek kod google search api ajax jquery cms iOS session language notebook laptop lisans license support mfyz design cookie css radio button switch blog www subdomain redirect crossdomain less css3 html ie internet explorer html5 twitter istatistik insanlar subversion svn regex imza signature apple mail developer php apache server firefox download xml http link mootools wordpress web app open source zaman optimizasyon javascript js ipucu plugin box lifestream rss proje compile nedir statistics dokuman linux konsol optimization media screen gimp date sql diff facebook opengraph fql url service tool windows fstab ntfs query injection code development kontrol yapıları if wanda framework meta pharma hack seo export widget assets mysql analyse procedure howto nasıl tarih sitemap connect object ubuntu cache social sosyal medya graph job htaccess route router mod_rewrite applications macosx free startups music while chart grafik compiler app on-the-fly osx portfolio doritos tytz bootstrap network form input textarea select iphone ipad oyun spam workspace webkit login kitap ui auth parse pear mdb2 prepare execute mssql pgsql logo share tebrik ios app store store in-app purchase purchase subscription verification storekit itunes connect itunes digital mobile kurulum xmlhttprequest terminal icon ikon xhtml style ide editor phpstorm jetbrains deployment version control git banner calendar kampanya ruffles browser integration wireless internet ux icons table browsers coding player db database newsletter generator