Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ruby on Rails, Hotwire, Turbo, Stimulus ve Stra...

Ruby on Rails, Hotwire, Turbo, Stimulus ve Strada ile full-stack web/mobil geliştirmenin altın çağı

Ruby on Rails'i öğrenirseniz neler inşa edebileceğinizi bir hayal edin...

Bu yeni yıla girerken Ruby on Rails öğrenerek tam donanımlı (full-stack) bir web geliştirici olarak daha mutlu, üretken, zahmetsiz ve hızlı şekilde web ve mobil uygulamaları hayata geçirmenin keyfini yaşayabilirsiniz.

Etkinlikte edindiğiniz ön bilgiler sayesinde günümüzde Ruby on Rails'in sunmuş olduğu en modern, güncel araç ve yöntemlerle tanışarak web uygulaması geliştirmenin altın çağını yaşayabilir ve Rails dünyasına hızlıca adım atabilirsiniz.

Tayfun (Öziş) Erikan

December 13, 2023
Tweet

More Decks by Tayfun (Öziş) Erikan

Other Decks in Programming

Transcript

  1. Tayfun (Öziş) Erikan Tam donanımlı web/mobil uygulama geliştirici - Genel

    koordinatör @lab2023 [email protected] - @tayfunerikan Ruby on Rails, Hotwire, Turbo, Stimulus ve Strada ile full-stack web/mobil geliştirmenin altın çağı Görsel kaynağı: https://rubyonrails.org
  2. Merhaba 👋 Tayfun (Öziş) Erikan • Ruby, Rails, HOTWIRE (Turbo

    + Stimulus + Strada), Shape Up, Basecamp, Heroku ve AWS kullanarak web ve mobil uygulamalar yapıyorum. • @lab2023 & @bulutfon kurucu ortağıyım. • Evliyim ve bir kız babasıyım :) • Full-stack web/mobil geliştirici • SSI Dalgıç • Gitarist @fazla_mesai • Organizatör @ruby_turkiye
  3. Bu sunum size neler vaadediyor? 🎁 Tarihçe · Tanıtım ·

    Özellikler · İşlevler · Yenilikler · Kavramlar · Farklılıklar • Rails nedir? • Rails nasıl çalışır? • Rails neler içeriyor? • Rails’in nasıl bir felsefesi var? • Rails neyi farklı yapıyor? • Neden Rails kullanmalısınız? • Rails kimeler içindir? • Rails’e nereden başlamalısınız? The Creation of Adam - Michelangelo https://en.wikipedia.org/wiki/The_Creation_of_Adam
  4. Programcı mutluluğu için geliştirildi. Ruby • Yaklaşık 28 yıl önce

    Yukihiro Matsumoto tarafından geliştirilmiştir. • Sadelik ve üretkenliğe odaklanmış ve insana çok yakın bir dilidir. • Okuması yazması kolaydır ve programlamayı keyi fl i bir hale getirir “En az sürpriz” ilkesi…
  5. Web uygulamalarının karmaşıklığını azaltmak için geliştirildi. Rails 🚂 • Yaklaşık

    20 yıl önce David Heinemeier Hansson tarafından geliştirilmiştir. • Programcı mutluluğu için optimize edildi. Üretken, zahmetsiz ve keyi fl idir. • Bir çok hazır aracı bünyesinde barındırır, hızlı geliştirme imkanı sunar. “Daha Büyük Gülümseme” ilkesi…
  6. Okuyun ve Ruby on Rails İlke ve Görüşlerini Anlayın The

    Rails Doctrine 📜 Daha detaylı bilgi için bkz: https://rubyonrails.org/doctrine “Ruby’i keşfetmem, kişisel olarak benim; 'programlara ihtiyaç duyduğum için programlama' yapmaktan ziyade, ‘bir entelektüel egzersiz ve ifade biçimi olarak programlama yapmaya’ aşık olmamı sağladı. Bu keşif sayesinde aynı zamanda Ruby yaratıcısı Matz’ın fi kirlerini ve Ruby’nin faydalarını yaymak için misyonerlik yapmam gerektiğinin de farkına varmış oldum.” – David Heinemeier Hansson
  7. • D.R.Y: “Her bir parçanın sistemde tek bir şeyi temsil

    etmesi gerektiğini” savunan bir ilkeye sahiptir. Aynı şeyleri tekrar tekrar yazmadığımız için kodumuz daha sürdürülebilir hale getirir. • Convention Over Con fi guration: Uygulama üzerinde herhangi bir şeyi yapmak için gereken kural ve ayarların hepsi ön tanımlı olarak gelir. Aşırı kon fi gürasyonlarda boğulmak yerine hemen kullanmaya başlayabilirsiniz. • 10 x geliştirme ortamı… Rails…
  8. • Tam donanımlı (full-stack) web uygulamaları geliştirmeye yaran ve bünyesinde

    bir çok araç barındıran çok hızlı bir web uygulama geliştirme çerçevesidir. • Hem ön hem de arka uçta harika web uygulamaları oluşturmak için gereken tüm araçlarla birlikte gelir. • Basecamp, Hey, Shopify, Github, Heroku, Airbnb, Dribble, Intercom gibi çok büyük sistemleri tasarlayan ekipler tarafından geliştirilen ve bu uygulamalarda elde edilen başarılı sonuçların çıktıları ile donatılmış araçlara sahiptir. Rails…
  9. • Ruby’yi en iyi şekilde temsil eden basit, estetik API

    ve DSL’ler kullanılarak hazırlanmış, yazması, okuması ve anlaması en keyi fl i araçlardan birisidir. • Sizi daha da güçlü ve üretken hale getirmek için tüm karmaşıklığı azaltan bir çerçevedir. • HTML şablonları oluşturma, veri tabanlarını güncelleme, e-posta gönderip alma, WebSockets aracılığıyla canlı sayfaları sürdürme, eşzamansız çalışma için işleri sıraya koyma, yüklemeleri bulutta depolama, saldırılar için güvenlik korumaları sağlama. Rails bunların hepsini ve çok daha fazlasını yapıyor. Rails…
  10. Rails… • Model-View-Controller (MVC) modeline göre veritabanı destekli web uygulamaları

    oluşturmak için gereken her şeyi içerir. • MVC modelini anlamak Rails'i anlamanın anahtarıdır. MVC, uygulamanızı her biri belirli bir sorumluluğa sahip olan Model, Görünüm ve Denetleyici olmak üzere üç katmana ayırır.
  11. Rails / Active Record • Aktive Record modellemeyi kolaylaştırır. •

    Veritabanları, zengin nesnelerde kapsüllenmiş iş mantığıyla hayat bulur. Tablolar arasındaki ilişkileri modelleme, kayıt sonrası geri çağırma (callback), hassas verileri sorunsuz bir şekilde şifreleme ve SQL sorgularını güzel bir şekilde ifade etme gibi harika işlevler sunar.
  12. Rails / Action Controller ve Action Dispatch • Action Controller

    tüm istekleri yönetir. • Denetleyiciler, etki alanı modelini web'e sunar, gelen parametreleri işler, önbelleğe alma başlıklarını ayarlar ve HTML veya JSON ile yanıt vererek şablonları oluşturur. • Action Dispatch rota URL’leri yönetir. • Yönlendirme etki alanı dilini kullanarak URL'lerin denetleyicilere nasıl bağlanacağını yapılandırır. Rotalar, bir kaynak olarak bir araya gelen eylem paketini ortaya çıkarır: C.R.U.D.
  13. Rails / Action View • Action View Ruby ve HTML'yi

    karıştırır. • Şablonlar Ruby'nin tüm çok yönlülüğünü kullanabilir, karmaşık görünüm kodlar yardımcılara taşınarak sadeleşir ve etki alanı modeli doğrudan kullanılır ve HTML ile iç içe geçirilir.
  14. Rails / Diğer bileşenler… • Action Mailer, e-posta oluşturmak ve

    göndermek için bir kütüphanedir • Action Mailbox, Rails uygulaması içinde e-postaları almaya yönelik bir kütüphanedir • Active Job, işlerin bildirilmesine ve bunların çeşitli kuyruk arka uçlarında çalıştırılmasına yönelik bir çerçevedir • Action Cable, WebSockets'i Rails uygulamasıyla entegre etmeye yönelik bir çerçevedir
  15. Rails / Diğer bileşenler… • Active Storage, bulut ve yerel

    dosyaları Rails uygulamalarına eklemek için kullanılan bir kitaplıktır • Action Text, zengin metin içeriğini işlemeye yönelik bir kitaplıktır • Active Support, Rails için yararlı olan ve Rails dışında bağımsız olarak da kullanılabilen, yardımcı sını fl ar ve standart kitaplık uzantılarından oluşan bir koleksiyondur
  16. HOTWIRE / Turbolinks tarihçesi… Geçmiş’de ve Günümüz’de Web Geliştirme Daha

    detaylı bilgi için bkz: https://www.youtube.com/watch?v=SWEts0rlezA - RailsConf 2016 Görsel sahibi: Sam Stephenson
  17. HOTWIRE Turbo / Stimulus / Strada Hotwire, kablo üzerinden JSON

    yerine HTML göndererek çok fazla JavaScript kullanmadan modern web uygulamaları oluşturmaya yönelik alternatif bir yaklaşımdır. Bu, hızlı ilk yükleme sayfaları sağlar, şablon oluşturmayı sunucuda tutar ve geleneksel tek sayfalık bir uygulamayla ilişkili hız veya yanıt verebilirlikten herhangi bir ödün vermeden herhangi bir programlama dilinde daha basit, daha üretken bir geliştirme deneyimi sağlar.
  18. HOTWIRE / Turbo Herhangi bir JavaScript yazmaya gerek kalmadan tek

    sayfalık bir web uygulamasının hızını yakalayın HOTWIRE'ın kalbi Turbo'dur. Turbo sayfa değişikliklerini ve form gönderimlerini hızlandırmak için sayfa içeriklerini Frame adı verilen küçük parçalara bölerek sunucu tarafından JavaScript kullanmadan güncellemenize olanak tanır. Bu güncellemeleri asenkron olarak WebSocket üzerinden de gerçekleştirebilirsiniz. Turbo akışları HTTP veya WebSocket ile gerçekleştirilebilir. Aynı zamanda Turbo iOS ve Android adaptörleri ile de haberleşir ve Strada ile güçlerini birleştirip hibrit uygulama geliştirmenize olanak tanır.
  19. HOTWIRE / Turbo • Turbo Drive, tam sayfa yeniden yükleme

    ihtiyacını ortadan kaldırarak bağlantıları ve form gönderimlerini hızlandırır. • Turbo Frame, sayfaları, gezinmeyi kapsayan ve tembelce yüklenebilen bağımsız bağlamlara ayrıştırır. • Turbo Stream, WebSocket, SSE üzerinden veya yalnızca HTML ve bir dizi CRUD benzeri eylem kullanarak form gönderimlerine yanıt olarak sayfa değişikliklerini sağlar. • Turbo Native, web ve yerel bölümler arasında sorunsuz geçişlerle, görkemli yekpare yapınızın yerel iOS ve Android uygulamalarınızın merkezini oluşturmasını sağlar. • Her şey kablo üzerinden HTML göndererek yapılır. Bunun yeterli olmadığı durumlarda Hotwire'ın diğer tarafına uzanabilir ve Stimulus ile işi bitirebilirsiniz. Turbo, çoğu web uygulamasının yazması gereken özel JavaScript miktarını önemli ölçüde azaltmak için tamamlayıcı teknikler kullanır:
  20. HOTWIRE / Stimulus Zaten sahip olduğunuz HTML için mütevazı bir

    JavaScript çerçevesi. Turbo genellikle geleneksel olarak JavaScript gerektirecek olan etkileşimin en az %80'ini halletse de, yine de bir dizi özel kodun gerekli olduğu durumlar vardır. Stimulus, duruma ve kablolamaya yönelik HTML merkezli bir yaklaşımla bunu kolaylaştırır. Stimulus HTML elemanlarına bağlanarak tarayıcı üzerindeki gerçekleştirmek istediğiniz etkileşimleri sade HTML sözdizimi ve “data-attirbute” ekleri kullanarak yönetmenize olanak sunar. Böylece daha okunaklı bir HTML/JavaScript uygulaması geliştirmenizi sağlar. Stimulus kullanarak aşırıya kaçmadan, bir tutam JavaScript ile uygulamanıza daha fazla etkileşim kazandırabilirsiniz.
  21. HOTWIRE / Stimulus • Ön ucunuzun tamamını ele geçirmeye çalışmaz

    - aslında HTML'yi işlemekle hiç ilgilenmez. • Bunun yerine, HTML'nizi parlatmaya yetecek kadar davranışla zenginleştirmek için tasarlanmıştır. • Stimulus, Turbo ile güzel bir şekilde eşleşerek hızlı, zorlayıcı uygulamalar için minimum çabayla eksiksiz bir çözüm sağlar.
  22. HOTWIRE / Strada Herhangi bir JavaScript yazmaya gerek kalmadan tek

    sayfalık bir web uygulamasının hızını yakalayın Native uygulamaların ve tamamen native ekranların yanı sıra web’in gücünden ve esnekliğinden faydalanmak için Turbo Native uygulamalar oluşturabilirsiniz. Şu anda Native uygulamanın Web Görünümü'nde neler olduğunu bilmesinin ve görüntülediği içeriğe uyum sağlaması zahmetlidir. Strada, bir mobil hibrit uygulamanın web ve yerel bölümlerinin HTML köprüsü öznitelikleri aracılığıyla birbirleriyle konuşma şeklini standartlaştırır. Bu, yerel değiştirmelerle web etkileşimlerini kademeli olarak yükseltmeyi kolaylaştırır. Strada, web uygulamanız ile yerel uygulama kodunuz arasında bir "köprü" görevi görerek web uygulamanız ile yerel uygulamanızın bileşen tabanlı bir çerçeve aracılığıyla iletişim kurmasına olanak tanır. Bir Web Görünümünde JavaScript koduyla ve uygulamanızdaki yerel kodla iletişim kurmanın karmaşıklığını ortadan kaldırır.
  23. HOTWIRE Kaynaklar • https://discuss.hotwired.dev • https://github.com/hopsoft/ turbo_ready • https://github.com/stimulus- components

    • https://github.com/stimulus-use/ stimulus-use • https://boringrails.com • https://www.hotrails.dev • https://guides.rubyonrails.org/ caching_with_rails.html • https://guides.rubyonrails.org/ association_basics.html#options-for- belongs-to-touch • https://guides.rubyonrails.org/ layouts_and_rendering.html • https://github.com/hotwired/turbo- rails • https://marcoroth.dev/posts/guide-to- custom-turbo-stream-actions
  24. Geliştirme ekibi ve katkı sağlayanlar ❤ Çekirdek takım üyeleri Şimdiye

    kadar tüm destekleyenler 6559 kişi Daha detaylı bilgi için bkz: https://rubyonrails.org/community
  25. Rails Vakfı Ekosistemin gelişmesine yardımcı olan, kar amacı gütmeyen bir

    kuruluş. Daha detaylı bilgi için bkz: https://rubyonrails.org/foundation • Görevi: Çerçevenin dokümantasyonunu, eğitimini, pazarlamasını ve etkinliklerini tüm yeni ve mevcut Rails geliştiricilerinin yararına olacak şekilde geliştirmek ve önümüzdeki on yıllar boyunca gelişmeye devam edecek zengin bir ekosistem sağlamaktır. • Çalışmalar: Vakıf, daha iyi yazılı belgeler, daha ilgi çekici ekran görüntüleri, heyecan verici etkinlikler ve çok daha fazlası üzerinde çalışmak üzere serbest çalışanları ve fi rmaları görevlendirir. Ayrıca Rails ticari markalarını, ticari marka sahibinden alınan özel bir lisans sahibi aracılığıyla yönetmektedir. • Cookpad, Doximity, Fleetio, GitHub, Intercom, Procore, Shopify, 37signals 1.000.000 $ başlangıç fonu bağışladı ve daha sonra AppSignal, BigBinary, Cedarcode, Planet Argon ve Renuo gibi fi rmalar tarafından da ek katkılarda bulunacaklardır
  26. Rails World 2023 • Propshaft: En iyi paketleme, paketleme yapmamaktır.

    Ön uç kodunun tamamını tarayıcınızda görün. No build! • Turbo 8: Turbo geçiş, eski durumunuzu ve kaydırma konumunuzu koruyarak yumuşak geçişler sağlar. Geçişleri Görüntüle yalnızca Chrome'da desteklenir, ancak parlak gelecek için şimdiden yatırım yapmaya değer. Artık TypeScript yok. • Strada: Mobil uygulamalarda yerel kontrolleri çalıştıran Hotwire'ın son parçasıdır. DHH'nin Rails World açılış konuşmasında tanıtılan yeni araçlar Daha detaylı bilgi için bkz: https://www.youtube.com/watch?v=iqXjGiQ_D-A Görsel sahibi: David Heinemeier Hansson
  27. Rails World 2023 DHH'nin Rails World açılış konuşmasında tanıtılan yeni

    araçlar Daha detaylı bilgi için bkz: https://dev.37signals.com/a-happier-happy-path-in-turbo-with-morphing/ Görsel kaynağı: https://dev.37signals.com
  28. Rails World 2023 DHH'nin Rails World açılış konuşmasında tanıtılan yeni

    araçlar • Solid Cache: Redis harikadır, ancak diskten 5-10 kat daha pahalı olduğundan artık ona ihtiyacımız yok. Verileri çok daha uzun süre (aylar ve günler) saklamanın uygun maliyetli bir yolu. • Solid Queue: 6 kuyruk taşını bir tanesiyle (Resque'ten) değiştirin ve Redis'i tamamen bırakın. • Mission Control: ActiveJob için Basecamp'taki bir kesintinin ardından orijinal olarak Resque için oluşturulmuş yeni bir kontrol paneli.
  29. Rails World 2023 • Kamal: Kendi kendine barındırılan yazılımınızı dağıtmak

    için etkinleştirin. Rails uygulamanızı (ve hatta Rails olmayan uygulamayı) sıfır kesinti süresiyle dağıtın. Bulut’ta olmayan sunuculara HEROKU konforunda uygulama dağıtımı sağlar. DHH'nin Rails World açılış konuşmasında tanıtılan yeni araçlar Daha detaylı bilgi için bkz: https://kamal-deploy.org Görsel kaynağı: https://kamal-deploy.org
  30. Rails kimlere hitap eder? Vitruvian Man - Leonardo da Vinci

    https://en.wikipedia.org/wiki/Vitruvian_Man
  31. Tam donanımlı geliştiriciler Hayatlarında basitlik ve sadelik arayanlar Hedef /

    ürün odaklı ve pragmatik geliştiriciler Yeniliklere açık ve teknolojiyi yakından takip edenler Hype teknolojilere kendini hemen kaptırmayanlar İşinde gücüde ve üretken insanlar Yaptıkları işin kalitesine ve felsefesine inananlar One-Person Framework Tek Kişilik Çerçeve Renaissance Developers Rönesans Geliştiricisi
  32. Soru-Cevap-Sohbet Teşekkürler 😇 Tayfun (Öziş) Erikan Tam donanımlı web/mobil uygulama

    geliştirici - Genel koordinatör @lab2023 [email protected] - @tayfunerikan Bu sunumun hazırlanmasında kullanılan bazı görseller, kaynaklar ve referans içerikler: https://rubyonrails.org'a aittir.