wmaraci reklam

Ruby On Rails seçmek için nedenler

9 Mesajlar 7.494 Okunma
pst.net
wmaraci reklam

chaosen chaosen WM Aracı Kullanıcı
  • Üyelik 09.07.2014
  • Yaş/Cinsiyet 47 / E
  • Meslek Programcı
  • Konum Hatay
  • Ad Soyad G** D**
  • Mesajlar 44
  • Beğeniler 8 / 14
  • Ticaret 0, (%0)
Merhaba arkadaşlar.

Yazının ana konusu Ruby on Rails hakkında bilgilerimi aktarmak olsa da minik bir karşılaştırma da yapacağım. Türkiye'de Rails'in hakettiği ilgiyi görememiş olmasına üzülen biri olarak, orta ve büyük ölçekli projeler için fikir arayışında olanlar için nacizane fikirlerimdir..

Framework Neden Gereklidir?
Web'de biraz Türkçe kaynak araştırması yaptığınız zaman bulacağınız derslerin hala 2000'li yıllardan kopyalanan temel dersler olduğunu görürsünüz. Öyle ki size hala şifreleri veritabanına kriptolamadan kaydetmeyi anlatıyorlar. Bazısı MD5 ile nasıl kriptolayacağınızı ek bilgi olarak gösteriyor. Çünkü amaç fazla detaya girmeden kolaya kaçmak ya da copy paste yazı olması. Durum böyleyken, size PDO'dan, Bcrypt'den sözedebilecek kişi sayısı parmakla sayılacak kadar az. Özellikle devlet sitelerinin tasarımlarına ve altyapılarına gözattığınız zaman neden o sitelerin bu kadar çabuk hacklendiğini anlamanız zor olmayacaktır! Hala MD5 ler kırılamaz diye savunanları görüyorum.

İşte framework bu noktada ortaya çıkarıyor. Çünkü güvenlik denen şey sizin PDO öğrenmenizle, Bcrypt kullanmanızla da bitmiyor. Sürekli geliştirmek zorundasınız. Bunu da tek başınıza yapmak ne kadar akıl karıdır siz düşünün. Binlerce kişinin emek verdiği, kafa yorduğu kodlar dururken neden siz oturup en baştan yazacaksınız?

Hangi Framework?
Ben Laravel, Symfony ve Phalcon kullandım. Laravel en kolay ve zevkli olanıdır. Phalcon en hızlısıdır ancak kaynak sıkınıtısı mevcut, paket kavramı yoktur. Symfony tam donanımlıdır, en çok pakete sahip olandır ve diğerlerine göre zordur. Bunların detayına girmeyeceğim. Burada önemli olan Full Stack kavramıdır. Ben bunu Tam Donanımlı Framework olarak çevirmek istiyorum. Yani ihtiyacınız olan ne varsa yapabileceğiniz tek framework Symfony'dir. İstediğiniz her şeyi spagetti kod yazarak ya da diğer frameworkleri kullanarak da yapabilirsiniz. İşte o maceraya atılmadan Full Stack'ı anlamak biraz zordur.

Full Stack
Diyelim sitemizin kullanıcı girişine facebook ile de bağlanabilme seçeneği eklemek istiyoruz. Aynı zamanda bir admin paneli ekleyeceğiz. Laravel ile başlayalım. Bir çok auth paketi seçeneği var ama Sentinel en yaygınıdır ve benim de seçimimdir. Bu paketi geliştirenler Facebook giriş eklemeniz için ayrıca Sentinel Social diye bir pakette geliştirmişler, ancak paralıdır. Ücretsiz diğer paketlerden sonunda Facebook entegre ettiniz (biraz uğraştırıyor). Sıra geldi admin panele. Bir çok admin paketi var ancak hangisi Sentinel ile uyumlu çalışıyor? Ne sentinel geliştiricleri kendisiyle uyumlu çalışan paketleri belirtmiş ne dğer admin paketleri uyumlu oldukları paketleri yazmış. Bir çok paket geliştiricisi dökümantasyon bile hazırlamamış. Neyin nasıl kullanılacağı meçhul. Kimisi bir kez geliştirilip bırakılmış. Hatta sizi bir adım daha öteye götürüp şu soruyu sorayım. kullanıcı bilgileri ve diğer tüm verileri saklamak için MongoDB ya da PostgreSQL kullanmak istediniz, ne yapacaksınız? İşte orada büyük bir macera sizi bekliyor.

Buradan Symfony'ye geçiyoruz. Aynı sistemi Symfony'de deneyeceğiz. Symfony paketler Bundle olarak adlandırılıyor. Hemen auth olarak FOSUser Bundle seçtik. Zaten facebook için neleri yükleyeceğiniz, admin için neler yapacağınız tek tek açıklanmış. Mongodb için gerekli eklentiler ve dökümanlar sunulmuş. İşte bu noktada Full Stack'ı hissetmeye başlıyorsunuz. İş yükünüz azalıyor. Ancak dependency'ler öldürüyor sizi. En az 7-8 bundle kuruyorsunuz. Hele bir de versiyonlar uymuyorsa. Fabien'in kendi anlattığı tutorial bile çalışmıyor. Tamam kaynak çok ama Laravel'in o kolaylığını arıyorsunuz. Arada kaldınız.

İşte tam bu noktada "Python" mu "Ruby" mi? sorusu çıkıyor :)

Django vs Rails
Bir kez o soruyu sorduğunuzda, hele ki framework kullanıyorsanız varacağınız nokta büyük ihtimalle Django mu Rails mi olacaktır. Çünkü ikisi de Full Stack'tır.


İkisi'de PHP frameworklere göre hızlıdır. Django (Python) biraz daha hızlıdır. Bir çok kişi Python'un en kolay dil olduğunu söyler. Bana Ruby daha kolay geldi. Doğal olarak Rails de kolay

"Kolaylık" aslında bilmediğiniz şeyi size öğretecek kişi var mıdır, ne kadar sayıdadır, işe yarar bilgiler mi verir vs gibi bir çok etkene bağlı olan bir durumdur.

Bir çok konu için İngilizce dökümanlardan faydalanıyoruz maalesef. Bu doğrultuda örnek verelim.

Google ile "Upload and Crop User Photo with XXX" diye arattığınızda karşınıza XXX framework'u için bir sonuç geliyor mu? Ya da "Using Elastic Search with XXX" diye arattığınızda sonuç alıyor musunuz?

Örnekleri çoğaltabilirsiniz. Caching nasıl yaparsınız, Memcache ya da Varnish nasıl entegre edersiniz gibi...

Aklınıza gelebilecek her şeyin paketini yapmış, bir de bunları nasıl kullanacağınızı gösteren eğitim videoları hazırlamış tek framework Rails'tir.

Çünkü framework demek sadece paket yapıp sunmak değil, onu nasıl kullanacağını da göstermek olmalıdır bana göre. Paketlerin versiyonu, komutlar değiştikçe eğitimi de revize ediyorlarsa, o zaman ne kadar doğru bir seçim yaptığınızı anlıyorsunuz.

RAILS

Rails'te paketler Gem diye adlandırılıyor. Gemlerin en güzel yanı müthiş bir dökümantasyonu olması ve hepsinin birbiriyle uyumlu çalışmasıdır. Benim Rails seçmemdeki birinci neden budur.

Rails kullanırken yapmak istediğiniz bir şeyi nasıl yapacağınıza dair en ufak bir fikriniz yok diyelim. Ama "acaba şöyle bir şey denesem olur mu" dediğinizde kodunuzun çalıştığını görebiliyorsunuz. Rails sihirlidir derken bunu demek istiyorlar. Bir şey yapıyorsunuz ve Rails bunu da mı çalıştırdı diye hayrete düşüyorsunuz. Uzun süre Rails kullananlar ne demek istedğimi anlayacaktır.

Ben restful nedir biliyorum diyenler, Rails kullanmaya başladıktan sonra aslında hiçbir şey bilmediklerini görüyorlar.

Her framework en iyi paylaşımcı ve yardımcı kullanıcı kitlesinin kendilerinde olduğunu iddia eder. İddialara bakmayın, hepsinin forumuna gidin, kaç soru cevaplanmış, çözüme ulaşılmış mı ona bakın. Bu size fikir verecektir. Rails'de bir kitleden fazlası vardır. Müthiş bir döküman vardır. O da yetmemiş Railscast ve benzerleri yapılmıştır.

Railscasts: Dünyada yapılmış en iyi eğitim serisidir. 417 videoluk seri ile size A dan Z ye her şeyi öğretir. Gerçek web uygulamalarından örnekler verir. Yani size kedi miyavla, köpek havla gibi saçma örneklerle OOP öğretmez, uykunuzu getiren konuşmalar yapmaz, direk aksiyona girer. Crop nasıl yapılır, makalelere yorum uygulaması nasıl yaparsınız, thinking sphinx ile arama nasıl yaparsınız. Alternatifleri olan SOLR ve Elastic Search nasıl kullanırsınız, N+1 sorgu nedir, brakeman ne işe yarar, vps'nizi nasıl ayarlarsınız, capybara ile websitenizi nasıl yüklersiniz, mass assign nedir, sizi nasıl hacklerler, koruması nasıl yapılır gibi daha bir çok konu..Yani keşfetmenizi bekleyen bir hazinedir. Öyle ki Rails kendini geliştirdikçe, bu videolar da yeni versiyona göre revize ediliyor, çalışırlığını koruyor. Railscast dışında, Codeschool var, size nasıl kötü ve iyi kod yazılacağını gösteren, amacı size Rails öğretirken iyi ve kısa kod yazmayı öğretmek olan bir başka eğitim serisidir. O da yetmedi, onlarca eğitim serisi, kitap..

Mesela Brakeman'e değinelim. Rails için yapılmış bir gem..Kodlarınızı tarıyor, sitenizin güvenlik açıklarını buluyor, N+1 sorgularınızı buluyor. İşlem bittiğinde hepsini listeleyip nasıl düzelteceğinizi gösteriyor. Merakınızı gidermek için Railscast'in 358 nolu videosunu izleyebilirsiniz. Rails ile güvenlik başka hiçbir framework ile sahip olamayacağınız kadar sağlamdır. Brakeman örneği de size bu işlemlerin ne kadar kolay olduğunu gösteriyor..

Kodlarınız test edilebilsin mi istiyorsunuz. Rspec, Cucumber, Factory Girl, hepsi birer kitapla beraber size geliyor.

Caching ihtiyacı gittikçe artıyorken php frameworkler arasında Symfony bu konuda önde, ancak yeterli mi? Yetersiz olduğunu Fragment Caching ile sorunlar baş göstermeye başladığında anlıyorsunuz. Peki siz hiç Russian Doll Caching duydunuz mu? Rails kullanmıyorsanız muhtemelen hayır

Ancak bir çok framework ya da paket hazırlayıcısının "Rails'ten esinlendik" dediğini duymuş ya da okumuşsunuzdur . Rails'i bu kadar meşhur ve ilham verici yapan o kadar özellik var ki içine girdiğiniz de daha iyi anlıyorsunuz neden herkesin Rails gibi bir framework'e sahip olmak istediğini.

Web socket konusunda PHP dünyası Symfony hariç halen iyi bir çözüm üretememişken, NodeJS'in hakim olduğu bu alanda Rails, websocket desteği çok iyi olmasına rağmen Live Streaming ile işi daha da kolaylaştırmış ve alternatif yaratmıştır.

Yukarıda da belirttiğim gibi Russian Doll Caching, Live Streaming konusu Railscasts'te örnekle açıklanmış. Yani Rails'te size web tasarım ile ilgili bilmeniz gereken her şeyi gem + eğitim olarak sunulmuş.

DEZAVANTAJLARI
PHP nin hala popüler olmasını sağlayan şey, sunucu konusudur. PHP ile yazılmış bir siteyi herhangi bir sunucuda rahatlıkla çalıştırabilirsiniz ve bir kontrol paneliniz vardır. Ancak Rails ile bu o kadar kolay değil. Hele ki Shared Hosting ile hiç şansınız yok. En az bir VPS alacaksınız ve Ruby kurulumdan Rails'e kendiniz ayarlayacaksınız. Bunları yaparken de shell komutları kullanacaksınız, kontrol panel lüksünüz yok.

Ben bunu dezavantaj değil, avantaj olarak görüyorum. Çünkü sunucu konusunda da kendinizi geliştiriyorsunuz.

Son olarak artık Rails'in çok kolay kurulduğu sunucular ortaya çıkmaya başladı ve Railscasts'te bu firmalardan birine (isim vermeyeyim) nasıl yükleme yapılacak, sunucu nasıl ayarlanacak tek tek anlatılmış. Yani artık bu konu bir kabus olmaktan çıktı...

Bir de wordpress faktörü var. Bir çok kişisel ve kurumsal site wordpress ile yapılıyor. Wordpress PHP frameworklerden bile popüler olmaya başladı.

Ancak iş orta ve büyük ölçekli, aşırı hit alan ya da aşırı veri barındıran web sitelerine gelince değişiyor

Umarım faydalı olmuştur. Türkiye'de Rails kullanımın artması dileğiyle,
Ertug mts IbrahimSerhat

kişi bu mesajı beğendi.

wmaraci
reklam

Ertug Ertug WM Aracı Kullanıcı
  • Üyelik 21.09.2013
  • Yaş/Cinsiyet 33 / E
  • Meslek Yazılım geliştiricisi
  • Konum Ankara
  • Ad Soyad E** K**
  • Mesajlar 361
  • Beğeniler 51 / 43
  • Ticaret 0, (%0)
PHP' de hala mysql_query kullanan bir topluma PDO aşılayamazken Ruby, Python aşılamak çok zor. İlgisi olanlar da sabırlı olamayıp ortasında, belki bir şeyler yapabilecek düzeye bir adım kala bırakıyor. Onlar için web developer işi PHP ve MySQL ile sınırlı sanırım şu an. Optimizasyonmuş, güvenlikmiş, esneklikmiş, hızlı çözümlermiş... Kim takar? Spagetti PHP devam. Çok güzel yazmışsın. Umarım faydası olur. :)
chaosen

kişi bu mesajı beğendi.

[freenodeIRC]
PHP = #laravelTurkiye
C++ = #qtTurkiye
Python = #pythonium

chaosen chaosen WM Aracı Kullanıcı
  • Üyelik 09.07.2014
  • Yaş/Cinsiyet 47 / E
  • Meslek Programcı
  • Konum Hatay
  • Ad Soyad G** D**
  • Mesajlar 44
  • Beğeniler 8 / 14
  • Ticaret 0, (%0)
Teşekkür ederim :) Türkiye'de Laravel kullanıcıları artıyor, o da iyi bir işaret. Aslında farkında olmadan Rails de öğreniyorlar, çünkü Laravel'den Rails'e geçecek biri fazla zorlanmayacaktır, bu da aslında not edilmesi gereken bir şey..
 

 

agoren agoren WM Aracı Kullanıcı
  • Üyelik 12.07.2014
  • Yaş/Cinsiyet 30 / E
  • Meslek Yazılım Geliştirici
  • Konum Kocaeli
  • Ad Soyad A** G**
  • Mesajlar 304
  • Beğeniler 21 / 28
  • Ticaret 0, (%0)
Türkiyede daha hostinglerde dahi Python desteği yok :) İlla ki vps kiralanacak. Tamam cgi var ancak cgi kimin işine yarasın?

Şu an ben Tornado ile bir portal geliştiriyorum ancak buna dair bir hosting yok. Yurt dışında python hostlar var mesela Türkiyedeki PHP hostlar fiyatından daha ucuza.

Seçime gelirsek aslında müşteri sana bunu ne ile yaptın, ne kullandın diye sormaz. İstediğim şekilde çalışıyor mu bu diye sorar. Eğer çalışıyorsa o an için en iyisi odur.

Yine de PHP benim için Python ya da Ruby'nin yanından geçemez. Tabii framework, dil seçimi göreceli mi bilinmez. Ama ben projelerimi Python ile geliştiriyorum şu an için en iyisi Tornado. RoR da o kadar iyi değildir sanırım.
 

 

aligoren.com
wmaraci
Mersin evden eve nakliyat

chaosen chaosen WM Aracı Kullanıcı
  • Üyelik 09.07.2014
  • Yaş/Cinsiyet 47 / E
  • Meslek Programcı
  • Konum Hatay
  • Ad Soyad G** D**
  • Mesajlar 44
  • Beğeniler 8 / 14
  • Ticaret 0, (%0)
Eğer Pythonda karar kılmış olsaydım Tornado hiç düşünmeden seçerdim. Facebook tarafından geliştiriliyor bu bile yeter sebeptir.. Rails için seçimim olan Unicorn da iyidir. Github sitesi Unicorn üzerinde çalışıyor mesela.
 

 

agoren agoren WM Aracı Kullanıcı
  • Üyelik 12.07.2014
  • Yaş/Cinsiyet 30 / E
  • Meslek Yazılım Geliştirici
  • Konum Kocaeli
  • Ad Soyad A** G**
  • Mesajlar 304
  • Beğeniler 21 / 28
  • Ticaret 0, (%0)
Unicorn çok kolay. Heroku üzerinde onunla Rails uygulaması geliştirmiştim.
 

 

aligoren.com

IbrahimSerhat IbrahimSerhat Developer Kullanıcı
  • Üyelik 15.12.2013
  • Yaş/Cinsiyet 32 / E
  • Meslek Öğrenci
  • Konum Bolu
  • Ad Soyad İ** Y**
  • Mesajlar 68
  • Beğeniler 12 / 16
  • Ticaret 4, (%100)
Yazınıza bayıldım. Teşekkürler

chaosen
 

 

YazilimMimari YazilimMimari Eski adi: Turgay Can Kullanıcı
  • Üyelik 25.06.2012
  • Yaş/Cinsiyet 38 / E
  • Meslek Engineering Director
  • Konum İstanbul Avrupa
  • Ad Soyad T** C**
  • Mesajlar 771
  • Beğeniler 2 / 260
  • Ticaret 0, (%0)
Ek bilgi olsun;

Geçen hafta İstanbul Tech Talk konferansı vardı, katılımcılardandım.

SoundCloud -> "music on cloud" -> 135 milyon parçayı koşturduğu uygulamaların dili Ruby ve Rail framework kullanılıyormuş.

Bir de open source log monitoring tool -> GrayLog(2), monitor ekranları ruby abiyle yazıldı. Patlayıp, çatladığında ruby source kodları görüyordum, eski çalıştığım bi şirkette.
 

 

https://www.linkedin.com/in/turgaycan/
Kaliteli kod yazılır.. (Günlük/Saatlik ücreti ile)

yidemir yidemir WM Aracı Kullanıcı
  • Üyelik 04.01.2014
  • Yaş/Cinsiyet 44 / E
  • Meslek Telekominikasyon
  • Konum İstanbul Avrupa
  • Ad Soyad Y** D**
  • Mesajlar 7
  • Beğeniler 1 / 1
  • Ticaret 0, (%0)
Elinize sağlık, çok iyi ve motive edici bir yazı olmuş. PHP'ye göre diğer bir dezavantajı ise yerli türkçe kaynak olmaması aslında. Umarım bu da yakında olur.
 

 

https://wmaraci.com/forum/is-arayanlar/php-laravel-vuejs-rest-api-spa-isleriniz-551493.html
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al