Google App Engine “Authorize” Sorunsalı ve Çözümü

Bir süredir Google App Engine ile uğraşıyorum. Özellikle ufak android geliştirmeleri sırasında web tarafındaki datayı tutmak için enfes bir yöntem. Ara sıra yavaşlıklar olsa da, şu an için bulut mimari üstüne kurulu oldukça kullanışlı bir servis.

Henüz çok yeni bir servis olmamasına rağmen olası problemlerle karşılaşabiliyorsunuz. Ben iki farklı android yazılımı için @gmail.com uzantılı eski bir Google hesabı üzerine tanımlı App Engine’ı kullanıyordum.

Ancak Google’ın neredeyse her hizmetinde olduğu gibi burada da Google Apps kullanıcılarını bir karmaşa bekliyor. Yapısı itibariyle Google Apps, normal Google hesaplarından hariç tutuluyor. Bu hesapların takibi ve mevcut Google servis ve hizmetleriyle ilişkilendirmesi de bir hayli gecikiyor. Örnek vermek gerekirse, Google Reader Resmi Android uygulaması Google Apps hesaplarını henüz desteklemiyor. Ya farklı Google Reader yazılımları kullanmanız gerekiyor, ya da mobil arayüzü kullanmanız gerekiyor.

Hatta sırf bu mobil arayüzü kullanmak için 2 hafta önce bir uygulama geliştirip markete yükledim. Google Reader Mobile Wrapper adıyla bulabilirsiniz.

Konumuza dönecek olursak, Google App Engine’ı Apps hesabınızla kullanırken garip bir hata mesajıyla karşılaşabilirsiniz. https://appengine.google.com adresinde uygulama oluşturabiliyorsunuz. Fakat en son adımda “You are not authorized to access this application” şeklinde bir uyarı karşınıza çıkıyor.

Bu durumu sadece iki adımla çözebiliyorsunuz.

- Google Apps Control Panel(https://www.google.com/a/cpanel/alanadi.com/Dashboard) üzerinden “Add More Services” bağlantısını takip edip, AppEngine’ı aktif etmeniz,

- Ardından http://appengine.google.com/a/alanadi.com sayfasına ulaşıp ilgili Google sözleşmesini kabul etmeniz gerekiyor. Bu kısmı geçtikten sonra daha önce uygulama ismi olarak ekleyip, ilgili hatayı aldığınız tüm uygulamalar karşınıza çıkıyor :)

Git ile Hariç Dosya Yönetimi

Bir süredir kaynak kod yönetimini Git ile gerçekleştiriyorum. Özellikle GitHub servisi bu konuda çok başarılı. Svn üzerinde baş gösteren sorunların hiç birini artık yaşamıyorum.

Svn üzerinde yaşanan problemlerden birisi de, bazı dosyaları hariç tutmaktı. Aslında konfigürasyon ile regex sayesinde bir kısım dosyaları hariç tutmak mümkün. Ancak git bu işi tamamiyle tek dosya ile çözmüş.

Geliştirme yaparken, kullandığım geliştirici araçlarının(Zend Studio 8, Espresso vb.) ve işletim sisteminin kendi dosya sistemiyle ilgili bilgilerin yer aldığı gizli dosyaların da kaynak kod yönetimi içerisine dahil edilmemesi gerekiyor.

Git bu konuda kökten bir çözüm uygulamış. Yerel git klasörünüzün içinde .gitignore adında bir dosya oluşturmanız gerekiyor. Bu dosyanın içerisine her satıra bir dosya ismi yazarak, o dosyanın sürüm içerisine dahil edilmemesini sağlayabiliyorsunuz.

*.sql ( sql yerine istediğiniz prefix’i ekleyebilirsiniz.) Bu şekilde tüm sql dosyaları sürüm içerisine dahil edilmez.

*~ Bu şekilde bir tanımlama ile o an açık olan dosyanın cache dosyası sürüm içerisine dahil edilmez.

Bu şekilde bir tanımlama ile ilgili problemi ortadan kaldırabilirsiniz. Dosyayı kaydedip çıktıktan sonra commit denemesi yaptığınızda ilgili dosyaların sürüm içerisine dahil edilmediğini görebilirsiniz.

Tabii doğal olarak dosyanın en başına .gitignore satırını da eklemeniz gerekiyor :)

Ayrıca git’in .gitignore dosyasını tanımlamak için;

git config --global core.excludesfile ~/.gitignore komutunu uygulamanız gerekiyor. Bu şekilde .gitignore dosyası haricinde .haricListe gibi farklı isimlerle hariç listeleri oluşturabilirsiniz.

Daha detaylı bilgi için şurayı ve şurayı inceleyebilirsiniz. Ayrıca bazı dil ve frameworkler için hazırlanmış ignore listlere şuradan erişebilirsiniz.

Mac OS X Üzerinde XDebug – MAMP ile PHP Debugging

Daha önce Ubuntu vb. işletim sistemi kullanıp daha sonra Mac OS X tarafına geçiş yapan ve bu işletim sistemi üzerinde geliştirme yapmak isteyenlerin ortak sorunları olabiliyor. MacBook Pro’yu aldığım ilk günden beri geliştirme araçlarından yana hiçbir sorun yaşamadım. Gerek TextMate gibi bir editörün rahatlığı, gerekse Mamp aracının işimi kolaylaştırması, diğer taraftan Sequel Pro gibi eşsiz bir MySQL yönetim aracının rahatlığını seviyorum.

Ancak Mac OS X üzerinde uzun süredir Debugging için bir araç arıyordum. PHP içerisinde konumlandırılan Xdebug aracıyla gerekli debugging işlemini gerçekleştirebiliyorum.

Öncelikli olarak MAMP Pro kullanıyorsanız,

MAMP Pro arayüzünden File – > Edit Template – > php.ini(bende PHP 5.2.13 php.ini adıyla geçiyordu) yönergelerini izleyerek ilgili php.ini dosyasını açın.

[sourcecode language='bash']

[xdebug]
zend_extension=/Applications/MAMP/bin/php5.2/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_autostart=1

[/sourcecode]

Dosya içerisinde yukarıda yer alan satırları eklemeniz gerekiyor. Ancak zend_extension path değerini kendi konumunuza göre değiştirmeniz gerekiyor. Bu işlemden sonra kaydedip, MAMP’ı restart edin.

Debugging işlemini remote olarak gerçekleştirmek için MacGDBp yazılımını kullanıyorum. İhtiyaca göre farklı yazılımlar da kullanılabilir.