Web tabanlı küçük çaplı bir proje yapmaya niyetlendim. Yıllardır yazılım projesi yapmadığımdan, hali hazırda kullanılabilecek durumda bir “dil”im yoktu. Hangi dili kullanırsam kullanayım acemi olacağımdan, oturup güncel bir dil deniyeyim dedim. Konu hakkında Türkçe birşeyler (kaynak demiyorum) bulmak zor olduğundan, mümkün mertebe Türkçe kaynaklara link vermeye çalışacağım. Başlangıç için, iki güzel kaynak vereyim hatta, buyrun:
- http://blog.oguzhan.info/?p=870
- http://go-talks.appspot.com/github.com/fatih/talks/go-giris/giris.slide#1
Aklıma gelen ilk ihtimaller, uzun süredir merak etiğim ama bir türlü bulaşamadığım Python+Django ve Ruby+Rails şeklinde oldu. İkisi ile de web tabanlı hello world projeleri (!) geliştirmiştim daha önce. Biraz daha araştırınca, Google tarafından geliştirilen Go dili çıktı karşıma. Yenidir, kütüphanesi ve desteği yoktur diyerekten çekinsem de arkasında Google olunca, bunların hiçbirisi dezavantaj gibi gelmedi gözüme. Bismillah deyip başladım.
Hello world uygulamalarını deneyip, ilk başta karmaşık birşey görmeyince devam edebileceğimi düşündüm. Tabii hemen arkasından, “IDE olarak ne kullansam” sorusu geldi. Mevcut IDE’lere bakınca, Vim‘in eklentilerle kullanımı hoşuma gitti. Bu sefer de evdeki Windows’a oturunca IDE lazım oldu. Burada da LiteIDE kurdum. İsteyenler online olarak tur.a.golang.org.tr adresinden dili deneyebilir ve hatta kullanım ipuçlarını Türkçe olarak okuyabilir. Güzel bir kaynak.
Web tabanlı uygulama deyince, hemen akla çatı (framework) geliyor tabii. Amelelik yapmayayım, güzel bir de çatı bulayım dedim, başladım araştırmaya. Daha dün çıkmış (2009’da ilk sürüm yayınlamış) bir dil için bu kadar çatı ve çatı tartışması görünce şaşırdım açıkçası. Türkçe birşeyler ararsak, çatı konusunda henüz bulamıyoruz malesef. Mevcut olasılıklar arasından BeeGo‘yu beğendim efendim. “Neden beğendim” konularına çok girmeyeceğim, çünkü oturup alternatiflerin farklarını inceleyebileceğim kapasitede değilim. Şu aşamada benim için; başlangıcı kolay olan ve Google’da arayınca çok sonuç çıkan iyidir, şeklinde düstur karar vermede önemli etken oldu.
Beego, Çin’de oldukça popüler ancak global piyasada henüz o kadar değil. Beego ana web sayfasında bulunan, 3-5 satırlık kodları yazdığınızda web üzerinden çalışan janjanlı bir uygulama görmek keyif veriyor insana. Beego ile birlikte, model, controller, view kısımlarını içeren MVC yapısı hazır geliyor. Benim gibi yeni başlayanlar ve en öncelikli maddesi “kolaylık” olanlar için, güzel bir çalışma yapmışlar. Başlangıç uygulamasını alıp denemek çok kolay. Birkaç tane de örnek uygulama yayınlamışlar GitHub‘da, bu da güzel bir şey.
GitHub deyince; bundan da bahsetmesem olmaz. Uzun zaman önce GitHub hesabımı açmıştım. Ancak daha bir tane bile proje yapmamıştım. Sürüm takibi adına tek kullandığım, az miktarda SVN oldu. İşyerinde Redmine ve Subversion’u entegre edip kodları burada tutmak için çalışmalar yapmıştık, çok ta güzel olmuştu. Hala da kullanıyoruz. Ancak SVN, GIT’e göre çok basit. Git dağıtık yapıda çalışıyor bir kere. Bu nedenle benim en büyük kabuslarımdandı. Yazılımcı olmadığım için, her seferinde kıyısından geçip te bulaşmadan yaşamayı becermiştim. Ama artık bulaşmak zorunda kaldım. Özellikle de “projeyi ücretsiz biryerde yayınlayacağım” dediğimde, altta bahsedeceğim sitenin git kullanması nedeniyle, mecbur oldum.
Beego ile dinamik web uygulaması geliştirmek kolay, güzel de bunu nerede yayınlayacağız? En büyük sıkıntılardan birisi de bu. Kendi sunucunuz ya da VPS’iniz varsa, sorun yok. Ancak ben ücretsiz bir yer aradığım için biraz problem yaşadım. Önce Google Application Engine (GAE) üzerinde üzerinde yayınlamak istedim, birkaç deneme de yaptım. Ancak; Python için birkaç farklı çatı içerisinden seçim olanağı sunan Google, Go için hiçbir çatı seçeneği vermedi. Burada biraz hayal kırıklığına uğradım. Sonra biryerlerden de ücretendirme politikasının fena olduğunu okudum. Bir de GAE’de geliştirilen projelerin başka yere taşınmasının zor olduğunu okudum. Saf kalpliyim ben, inandım hemen. Alternatif aradım. Heroku’yu gördüm.
Heroku‘nun ücretlendirme seçeneklerine tier demişler. Ücretsiz olan tier, başlangıç için yeterli geldi bana. Veritabanı desteği için eklenti eklenmesi gerekiyor. Eklenti eklemek için de bir kredi kartı bilgisi istiyor. Ücretsiz ama kart olmasını istiyor işte. Dandik sanal kartımı verdim, sorun olmadı. Heroku’nun arayüzü kullanışlı ve kolay. Ücretsiz kullanımda, uygulamalar 30 dakika kullanılmadığında uyuyor. İlk uyanması biraz yavaş oluyor. Ayrıca her uygulamanın günde 6 saat uyuması zorunlu. Ama zaten hit’i olmayan uygulama geliştirdiğim için, ben dürtmedikçe sürekli uyuyor :)
Heroku kullanmak çok kolay. Git kullanımı gerekiyor. Ancak beego ile oluşturduğum (daha doğrusu fork’ladığım) projeyi Heroku’da yayınlamak için çok (1 gün) uğraştım. Bu yazıyı yazma konusunda itici güç te bu oldu. Belki birilerinin (ya da en kötü ihtimalle, yarın unuttuğumda benim) işine yarar. Sonraki yazıda, Beego ile oluşturulan basit bir projenin, Heroku üzerinde yayınlanmasına kadar geçen kısmı, kodlarıyla kısa kısa yazmaya çalıştım. Buradan okuyabilirsiniz.
Şimdilik bu kadar.
2 ping
ÖMER
12 Eylül 2015, 18:01 (UTC 2) Bu yoruma bağlantı
makalenin tamamı okumak keyıf vericiydi cok teşekkür ederim. iyi gunler.
Yusuf Akgun
17 Ağustos 2016, 23:54 (UTC 2) Bu yoruma bağlantı
:D Okumak keyif vericiydi ellerine sağlık
Go (golang), BeeGo framework ve Heroku - Murat Özalp
25 Ağustos 2015, 22:17 (UTC 2) Bu yoruma bağlantı
[…] « Go (GoLang) Programlama Dili Maceram […]
Golang (Go), Beego ve ORM - Murat Özalp
08 Şubat 2016, 22:28 (UTC 2) Bu yoruma bağlantı
[…] http://web.bilecik.edu.tr/murat-ozalp/2015/08/23/go-golang-programlama-dili-maceram/ […]