Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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…

Slide 5

Slide 5 text

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…

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

Rails nedir?

Slide 8

Slide 8 text

• 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…

Slide 9

Slide 9 text

• 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…

Slide 10

Slide 10 text

• 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…

Slide 11

Slide 11 text

Rails nelerden oluşur ve nasıl çalışır?

Slide 12

Slide 12 text

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.

Slide 13

Slide 13 text

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.

Slide 14

Slide 14 text

Rails / Active Record

Slide 15

Slide 15 text

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.

Slide 16

Slide 16 text

Rails / Action Controller ve Action Dispatch

Slide 17

Slide 17 text

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.

Slide 18

Slide 18 text

Rails / Action View

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

Rails’in ön uç çerçevesi: HOTWIRE https://hotwired.dev Görsel kaynağı: https://hotwired.dev

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

HOTWIRE / Turbolinks tarihçesi… Turbolinks’in ortaya koyduğu çözüm Görsel sahibi: Sam Stephenson

Slide 24

Slide 24 text

HOTWIRE / Tarihçe… Görsel kaynağı: https://github.com/turbolinks/turbolinks

Slide 25

Slide 25 text

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.

Slide 26

Slide 26 text

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.

Slide 27

Slide 27 text

HOTWIRE / Turbo Replace visits Restoration visits Görsel kaynağı: https://hotwired.dev

Slide 28

Slide 28 text

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:

Slide 29

Slide 29 text

HOTWIRE / Turbo Görsel kaynağı: https://hotwired.dev

Slide 30

Slide 30 text

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.

Slide 31

Slide 31 text

HOTWIRE / Stimulus Görsel kaynağı: https://hotwired.dev

Slide 32

Slide 32 text

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.

Slide 33

Slide 33 text

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.

Slide 34

Slide 34 text

HOTWIRE / Strada Görsel kaynağı: https://hotwired.dev

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

https://hotwire.io

Slide 37

Slide 37 text

Rails ekosistemi

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

Rails forum Daha detaylı bilgi için bkz: https://discuss.rubyonrails.org

Slide 41

Slide 41 text

Rails Jobs Daha detaylı bilgi için bkz: https://jobs.rubyonrails.org

Slide 42

Slide 42 text

Bazı kullanan firma ve kuruluşlar

Slide 43

Slide 43 text

Rais’den son haberler ve yenilikler https://rubyonrails.org/world

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

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.

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

Rails kimlere hitap eder? Vitruvian Man - Leonardo da Vinci https://en.wikipedia.org/wiki/Vitruvian_Man

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

RailsGuides! http://guides.rubyonrails.org Nereden başlamalıyım? https://www.rubyturkiye.org Ruby Türkiye!

Slide 51

Slide 51 text

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.