Kursus pemrograman Ruby on Rails. Ruby untuk pemula: apa yang menarik dari bahasa ini dan cara mempelajarinya secara efektif

"Halo! Apa yang sedang kamu lakukan?" - “Ya, saya akan memprogram satu hal di Ruby.” - "Apakah menular :-)"
Berikut adalah percakapan saya hari ini dengan seorang teman. Mengapa Rubi?

Mengapa Belajar Ruby

Pertanyaan ini menyangkut mereka yang telah lama memprogram dalam PHP dan berhasil. Anda telah menguasai satu bahasa, yang hebat, tetapi jangan berhenti di situ. Banyak yang mungkin keberatan karena mereka tahu bahasanya, berorientasi pada nyoi dan telah mempelajari semua trik dengannya. Saya akan menyebutkan beberapa alasan untuk mempelajari Ruby.

  1. Rasa ingin tahu. Misalnya, sangat menarik bagi saya untuk bekerja dengan kelas terbuka. Ini adalah cara mengambil dan menyuntikkan metode Anda ke dalam kelas sistem - menurut saya itu bagus. Apakah akan ada kebingungan? Dan bagaimana melakukannya? Secara umum, segala sesuatu yang baru itu menarik.
  2. . Karena Saya sudah lama memprogram dalam PHP, saya bertanya-tanya apa yang bisa dibanggakan Ruby di depan PHP /
  3. Kecepatan Ruby. Twitter dibuat di Ruby (walaupun di Akhir-akhir ini mereka menolaknya). Saya ingin menguji kinerjanya dalam kenyataan.
  4. Kelas masalah. Ruby bagus untuk aplikasi web. Apakah begitu?
  5. Metaprogramming. Mungkin alasan yang paling penting.

Cara belajar Ruby. Silabus.

Di sinilah kesalahan pertama saya adalah saya mulai mempelajari framework tanpa mengetahui bahasanya. Sekarang saya mengerti bahwa ini tidak perlu. Melupakan Ruby on Rails untuk sementara waktu, saya mulai mempelajari Ruby itu sendiri, karena tugas sistem sudah lama tergantung di sistem tiket, yang sulit diselesaikan di php. Saya tidak ingin memberinya izin root Jadi rencananya begini.

  1. Fungsi, kelas, kelas publik. Atribut (pengakses dan mutator).
  2. Bekerja dengan string, dengan array. Menemukan dan mengganti substring, dll. Ketik konversi.
  3. Bekerja dengan file.
  4. Bekerja dengan lingkungan sistem.
  5. Desain aplikasi, bekerja dengan permata (modul).
  6. Bekerja dengan DB.
  7. Menginstal Ruby on Rails, .

Dalam posting ini, saya akan menerbitkan aplikasi Ruby pertama saya dan mengundang semua orang untuk berdiskusi. Tunjukkan kesalahan, tawarkan praktik terbaik, ajukan pertanyaan.

Mari belajar Ruby bersama!

Pelajaran 1. Aplikasi pertama di Ruby.

Tugasnya adalah ini. Makan server DNS di hosting, dan saat memanggil utilitas konsol di ruby, Anda perlu menambahkan zona untuk domain tersebut, serta entri zona dalam daftar zona (domains.list) dan mengubah satu entri di database tempat mendaftarkan ini domain. Pengaturan akses database disimpan di dalam aplikasi php, khususnya di file INI nya. Setelah semua langkah, Anda perlu me-restart server DNS (bind).

Meja kerja untuk Ruby

Sebagai IDE, saya akan menggunakan RubyMine dari JetBrains. Saya sangat menyukai mereka. Meskipun tentang phpStorm, kualitasnya langsung terlihat. Kami menginstal ruby ​​​​melalui RVM terlebih dahulu untuk semua pengguna, kemudian kami mengaturnya untuk root dan pengguna kami.

Memperluas Kelas Publik Ruby

Untuk bekerja dengan file INI di Ruby, kami menggunakan gem inifile. Tetapi memiliki masalah kecil. Dalam file ZF INI, Anda dapat menggunakan konstanta dengan aman, dan garisnya terlihat seperti ini:

SertakanPaths = APPLICATION_PATH "/../vendors/Doctrine/"

Di sini dari APPLICATION_INI lalu hancurkan parser permata. Secara khusus, baris ini tidak sesuai dengan pola apa pun:

@rgxp_comment = %r/\A\s*\z|\A\s*[#(@comment)]/ @rgxp_section = %r/\A\s*\[([^\]]+)\] /o @rgxp_param = %r/\A([^#(@param)]+)#(@param)\s*"?([^"]*)"?\z/

Inilah situasi untuk menggunakan kelas publik. Mari kita ganti fungsi IniFile::parse dengan milik kita sendiri. Saya akan menambahkan semua tambahan ke file fucntion.rb

Class IniFile private # # call-seq # parse # # Parse isi file ini. # def parse kembali kecuali File.file?(@fn) section = nil tmp_value = "" tmp_param = "" fd = (RUBY_VERSION >= "1.9" && @encoding) ? File.open(@fn, "r", :encoding => @encoding) : File.open(@fn, "r") while line = fd.gets line = line.chomp # mutline start # buat variabel tmp untuk diindikasikan bahwa multine telah dimulai # dan baris berikutnya dari file ini akan diperiksa # terhadap rgxps mutline lainnya. jika baris =~ @rgxp_multiline_start kemudian tmp_param = $1.strip tmp_value = $2 + "\n" # pembatas akhir mutline ditemukan # bersihkan tmp vars dan tambahkan pasangan param / nilai ke bagian elsif baris =~ @rgxp_multiline_end && tmp_param != "" lalu bagian = tmp_nilai + $1 tmp_nilai, tmp_param = "", "" # apa pun antara multibaris awal dan akhir baris elsif =~ @rgxp_multiline_nilai && tmp_param != "" lalu tmp_nilai += $1 + "\n" # abaikan baris kosong dan baris komentar elsif baris =~ @rgxp_comment lalu selanjutnya # ini adalah deklarasi bagian elsif baris =~ @rgxp_section lalu bagian = @ini[$1.strip] # jika tidak kita memiliki parameter elsif baris =~ @rgxp_param lalu begin section[$1.strip] = $2.strip rescue NoMethodError memunculkan Error, "parameter yang ditemui sebelum bagian pertama" end elsif baris =~ %r/APPLICATION_/ lalu berikutnya lagi memunculkan Error, "could not parse line "#(line)" end end # sambil memastikan fd.close jika didefinisikan?fd dan fd end end

Saya juga akan memperluas kelas String untuk membolehkan validasi domain.

Kelas String def valid_domain_name? nama_domain = self.split(".") nama = /(?:+)+/.cocok(nama_domain).nil? tld = /(?:(2)|aero|ag|asia|at|be|biz|ca|cc|cn|com|de|edu|eu|fm|gov|gs|jobs|jp|in|info| saya|mil|mobi|museum|ms|nama|net|nu|nz|org|tc|tw|tv|uk|us|vg|ws)/.match(nama_domain).nil? (domain_name.count > 1 and name != false and tld != false) end end

Sumber

Nah, sekarang saya akan menunjukkan kepada Anda sumber sebenarnya.
indeks.rb

#coding: utf-8 memerlukan "mysql2" memerlukan "socket" memerlukan "inifile" memerlukan "./functions.rb" # Hash alamat mesin server hosts = ( :production => "83.168.22.1", :test => " 84.22 .11.1" ) util = Util.new(hosts) util.releative_config_path="/site.com/application/config/application.ini" # Periksa parameter quit if (ARGV.count != 2) domain = ARGV hostname = ARGV .split(".") quit("Invalid domain name") if (not domain.valid_domain_name?) # Search for a company in the database result = Mysql2::Client.new(util.get_db_settings).query("SELECT id DARI `situs` DI MANA `nama host` = "#(nama host)"") quit("Perusahaan tidak ditemukan") if result.count != 1 # Perbarui hostname rows = Array.new result.each(|row| rows<< row} company_id = rows["id"] result = Mysql2::Client.new(util.get_db_settings).query("UPDATE `dbname`.`sites` SET `domain` = "#{domain}" WHERE `dao_companies`.`id` =#{company_id};") # Добавление зоны bind_config_path = "/etc/bind" default_zone_file = bind_config_path + "/zones/DEFALT" new_zone_file = bind_config_path + "/zones/#{domain}.zone" zones_list_file = bind_config_path + "/domains.lst" quit("File with default zone does not exists") unless File.exist?(default_zone_file) quit("File with zones list does not exists") unless File.exist?(zones_list_file) zone = IO.read(default_zone_file).gsub("SERIAL",Time.now.strftime("%Y%m%d%S")).gsub("DOMAIN", domain) if not File.exist?(new_zone_file) then File.open(new_zone_file, "w") {|f| f.puts(zone) } else quit("Domain "+domain+" zone already exists!") end # Добавление зоны в список zone = "zone \"#{domain}\" { type master; file \"/etc/bind/zones/#{domain}.zone\"; };" if not IO.read(zones_list_file).include?(domain) then File.open(zones_list_file, "a") {|f| f.puts(zone) } end # Перезапуск сервисов (bind9) system("service bind9 restart") puts "Completed"

gemfile
File ini menjelaskan dependensi proyek.

Sumber: permata rubygem "mysql2", "0.2.6" permata "inifile"

Nah, sebenarnya termasuk fungsi.
fungsi.rb

#coding: kelas utf-8 String def valid_domain_name? nama_domain = self.split(".") nama = /(?:+)+/.cocok(nama_domain).nil? tld = /(?:(2)|aero|ag|asia|at|be|biz|ca|cc|cn|com|de|edu|eu|fm|gov|gs|jobs|jp|in|info| saya|mil|mobi|museum|ms|nama|net|nu|nz|org|tc|tw|tv|uk|us|vg|ws)/.match(nama_domain).nil? (domain_name.count > 1 and name != false and tld != false) end end class IniFile private # # call-seq # parse # # Parse isi file ini. # def parse kembali kecuali File.file?(@fn) section = nil tmp_value = "" tmp_param = "" fd = (RUBY_VERSION >= "1.9" && @encoding) ? File.open(@fn, "r", :encoding => @encoding) : File.open(@fn, "r") while line = fd.gets line = line.chomp # mutline start # buat variabel tmp untuk diindikasikan bahwa multine telah dimulai # dan baris berikutnya dari file ini akan diperiksa # terhadap rgxps mutline lainnya. jika baris =~ @rgxp_multiline_start kemudian tmp_param = $1.strip tmp_value = $2 + "\n" # pembatas akhir mutline ditemukan # bersihkan tmp vars dan tambahkan pasangan param / nilai ke bagian elsif baris =~ @rgxp_multiline_end && tmp_param != "" lalu bagian = tmp_nilai + $1 tmp_nilai, tmp_param = "", "" # apa pun antara multibaris awal dan akhir baris elsif =~ @rgxp_multiline_nilai && tmp_param != "" lalu tmp_nilai += $1 + "\n" # abaikan baris kosong dan baris komentar elsif baris =~ @rgxp_comment lalu selanjutnya # ini adalah deklarasi bagian elsif baris =~ @rgxp_section lalu bagian = @ini[$1.strip] # jika tidak kita memiliki parameter elsif baris =~ @rgxp_param lalu begin section[$1.strip] = $2.strip rescue NoMethodError memunculkan Error, "parameter yang ditemui sebelum bagian pertama" end elsif baris =~ %r/APPLICATION_/ lalu berikutnya lagi memunculkan Error, "could not parse line "#(line)" end end # sambil memastikan fd.close if defined?fd and fd end end def quit(message=nil) banner = " ======================= = === | Alat Penambahan DNS | ============================ Penggunaan: ruby ​​​​./index.rb domain.com olddomain.site.com" jika tidak pesan .nil kemudian banner = pesan akhir menempatkan spanduk keluar kelas akhir Util attr_accessor:hosts, :releative_config_path, :environment def initialize(hosts =Array.new) self.hosts = hosts end # Dapatkan alamat IP lokal def local_ip orig, Socket.do_not_reverse_lookup = Socket.do_not_reverse_lookup, true # matikan resolusi DNS balik sementara UDPSocket.open do |s|s.connect "64.233.187.99", 1 s.addr.last end sure Socket.do_not_reverse_lookup = orig end # Get the environment def get_environment if @ lingkungan. nil? lalu hosts = self.hosts.invert if(hosts.include?(self.local_ip)) lalu @environment = hosts else @environment = "development" end else @environment.to_s end end def get_config_path local_username = get_local_username "/home/" +local_username+"/sandbox"+self.releative_config_path end # Mengembalikan nama pengguna jika utilitas dijalankan melalui rvmsudo atau langsung def get_local_username if ENV["SUDO_USER"].nil? quit("Util harus dijalankan di atas rmvsudo, \r\ncontoh: rvmsudo ruby ​​​​./index.rb domain.ru some.subdomain.ru") else ENV["SUDO_USER"] end end def get_db_settings config = File Ini:: load( self.get_config_path) section_name = self.get_environment.to_s + " : bootstrap" quit("Tidak ada bagian yang cocok dalam file konfigurasi") kecuali config.has_section?(section_name) dsn = config.to_h["resources.doctrinedata.connections. default.dsn"] # Parse dsn dsn.sub!("mysql://", "") arr = dsn.split("@") dbconfig = ( :username => arr.split(":"), : kata sandi = > arr.split(":"), :host => arr.split("/"), :database => arr.split("/") ) akhir akhir

Tapi bagaimana dengan PHP?

Posting ini bukan tentang berhenti dari PHP dan mempelajari ruby. PHP adalah bahasa pemrograman web paling populer, ribuan hal menarik dan algoritma diimplementasikan di dalamnya, termasuk. bahkan jaringan saraf. Dan saya mencintainya) Selama bertahun-tahun, Anda dapat mengatakan bahwa saya menjadi kerabatnya, terlepas dari semua kekurangannya. Tetapi ini tidak berarti bahwa Anda tidak boleh mempelajari sesuatu yang baru untuk diri Anda sendiri.

Baru-baru ini saya ditanyai pertanyaan tentang buku apa untuk mempelajari Ruby. Saya sedang membaca yang ini sekarang.

Buku ini adalah panduan resmi bahasa pemrograman dinamis Ruby. Tim penulis benar-benar luar biasa: David Flanagan adalah spesialis terkenal di bidang pemrograman, penulis sejumlah buku terlaris tentang JavaScript dan Java; Yukihiro "Matz" Matsumoto adalah pencipta dan pengembang utama Ruby.
Buku ini memberikan penjelasan rinci tentang semua aspek bahasa: struktur leksikal dan sintaksis Ruby, jenis data dan ekspresi dasar, definisi metode, kelas, dan modul. Selain itu, buku tersebut berisi informasi tentang API platform Ruby.

Publikasi ini akan menarik bagi pemrogram berpengalaman yang berkenalan dengan bahasa Ruby baru, serta mereka yang sudah memprogram di Ruby dan ingin mencapai tingkat pemahaman dan pengerjaan yang lebih tinggi. Anda dapat menemukan buku tentang ozon atau biblio-globe.

Saya menantikan komentar Anda tentang kode dan ide menarik lainnya!)

Terima kasih!

Jika artikel ini membantu Anda, atau jika Anda ingin mendukung penelitian dan blog saya, inilah cara terbaik untuk melakukannya:

Ini adalah yang pertama dari serangkaian artikel di mana saya akan berbicara tentang fitur-fitur Ruby dan Ruby on Rails dan berbagi tip tentang cara memulai mempelajari Ruby, di mana menemukan jawaban atas pertanyaan, cara mendapatkan pengalaman yang tepat, dan bagaimana Anda bisa menonjol dari kandidat lain. Saya akan senang jika saran saya akan membantu seseorang memutuskan spesialisasi dan memilih Ruby untuk belajar dan bekerja.

Fitur Utama dan Perbedaan Ruby

Saya sering mendengar pertanyaan: apakah layak mempelajari Ruby? Biasanya, pertanyaannya didasarkan pada keraguan: betapa mudahnya mencari pekerjaan dengan spesialisasi ini, apakah akan ada proyek yang menarik, dan seterusnya. Ruby adalah bahasa pemrograman modern yang terus berkembang, ada banyak aplikasi untuk itu. Tentunya Anda pernah mendengar tentang Chef, Vagrant, Homebrew, tetapi paling sering kita semua mendengar tentang Rails. Berikut adalah postingan dengan komentar dari pembuat framework tentang mengapa Anda harus mempelajari Rails.

Tentu saja, setiap orang memutuskan sendiri alat mana yang akan digunakan. Dan tidak ada gunanya berdebat tanpa henti tentang mengapa satu teknologi lebih baik dari yang lain. Saya memilih Ruby karena ini adalah bahasa yang sangat ekspresif dan fleksibel yang memungkinkan Anda memecahkan masalah yang sama dengan berbagai cara.

Ruby adalah bahasa pemrograman yang ditafsirkan sepenuhnya berorientasi objek dengan pengetikan dinamis yang kuat. Ini menggabungkan sintaks seperti Perl dengan pendekatan berorientasi objek. Juga, beberapa fitur dipinjam dari bahasa pemrograman Python, Lisp, Dylan dan CLU. Implementasi lintas platform dari juru bahasa Ruby didistribusikan di bawah ketentuan terbuka perangkat lunak. Kode yang ditulis dalam Ruby dapat dipahami bahkan oleh orang yang tidak mengerti pemrograman. Proyek seperti Redmine, Twitter, Shopify, Basecamp, GitHub, Kickstarter, Airbnb, dan lainnya telah dibuat di RoR.

Dengan munculnya Node.js, popularitas Ruby on Rails agak berkurang, tetapi startup teknologi sering menggunakan RoR karena kemudahan membuat prototipe. Ruby adalah bahasa terpopuler ke-11 dalam indeks TIOBE.

Manfaat Ruby

  • Komunitas yang banyak dan ramah.
  • Hambatan masuk yang agak tinggi, yang berarti bahwa pengembang Ruby kemungkinan besar memiliki pengalaman dalam setidaknya satu bahasa pemrograman lain.
  • Anda hanya menggunakan perpustakaan dan modul yang Anda butuhkan.
  • Ada sejumlah besar perpustakaan berguna yang siap digunakan (Permata Ruby).
  • Ada banyak informasi tentang Ruby di Internet, dalam bentuk yang terstruktur dan tersaring.
  • Dalam konteks pembahasan Ruby, tidak mungkin untuk tidak menyebutkan framework Ruby on Rails yang paling populer.

Sekarang mari kita bahas beberapa manfaat Ruby secara lebih detail.

Kecepatan pengembangan

Salah satu keunggulan Ruby dan framework RoR adalah kecepatan pengembangan. Pengalaman pribadi dan pengalaman rekan kerja menunjukkan bahwa memecahkan masalah di Rails satu setengah kali lebih cepat dibandingkan kerangka kerja serupa lainnya. Ruby sangat sederhana sebagai alat, dan ada banyak sekali solusi siap pakai untuk berbagai jenis tugas.

Alat caching data reguler

Saat mengembangkan proyek berskala besar, salah satu poin terpenting adalah caching. Ruby on Rails hadir standar dengan alat caching data asli. Artinya, Anda akan segera memiliki alat untuk menyimpan data dalam proyek, dan Anda dapat dengan mudah menyimpan satu blok kode atau bahkan seluruh halaman dalam cache.

Tes pertama, lalu kode

Seringkali dalam proses pengembangan proyek besar, pertanyaan tentang pengujian muncul, dan tidak jarang ketika tidak ada dana tambahan untuk tim penguji yang terpisah. Rails juga memiliki solusi untuk masalah ini. Jika Anda membandingkan RoR dengan kerangka kerja lain dalam konteks pengujian aplikasi, Anda akan menemukan banyak solusi siap pakai untuk semua jenis pengujian, baik itu integrasi atau pengujian unit. Semua perpustakaan ini bekerja di luar kotak. Idealnya, dalam proyek Ruby on Rails, kode tidak ditulis sampai tes ditulis untuk itu. Ideologi RoR melibatkan penggunaan awal metode BDD (Behavior Driven Development) atau TDD (Test Driven Development).

Standar proses pengembangan yang diterima secara umum untuk pengembang Ruby

Ngomong-ngomong soal manfaat Ruby, mau tidak mau saya menyebut komunitas ruby ​​lagi. Itu terus tumbuh, berkembang dan selalu siap membantu. Selalu ada seseorang yang akan memberi tahu Anda cara terbaik untuk menyelesaikan masalah, berbagi pengalaman dalam masalah apa pun.

Hal lain yang sangat penting adalah bahwa komunitas Ruby telah memiliki standar untuk proses pengembangan selama bertahun-tahun, beberapa peraturan/kesepakatan komunitas yang mengatur pengembangan, yang sangat menyederhanakan pekerjaan. Karena standar ini, setiap proyek sangat terstruktur, masing-masing, pengembang baru dalam tim akan dengan cepat mencapai kecepatan dan dapat berguna sejak hari pertama kerja. Dan terlebih lagi: jika proyek dimulai oleh satu tim dan diselesaikan oleh tim lain, ini juga tidak menjadi masalah sama sekali. Karena pengembangan dilakukan sesuai dengan aturan dan kesepakatan komunitas yang telah disebutkan, tim baru akan dengan cepat dan mudah mempelajari proyek dan berhasil menyelesaikannya tanpa banyak membuang waktu.

Selain itu, Ruby on Rails memiliki sejumlah besar solusi siap pakai yang berbeda di domain publik. Sebagian besar solusi telah diterapkan oleh seseorang sebelum Anda, serta diuji oleh komunitas, yang mengurangi kebutuhan untuk mengembangkan dari awal. Ini bisa berupa otentikasi, otorisasi, sistem komentar, sistem pembayaran, milis, dan sebagainya.

Solusi siap pakai untuk proyek multibahasa

Rails hadir dengan alat yang sangat kuat untuk pelokalan proyek di luar kotak. Dimungkinkan untuk memberikan dukungan untuk beberapa bahasa pada awalnya, dan menerapkannya nanti. Proyek ini berisi file khusus untuk menerjemahkan istilah, alat untuk menampilkan templat dalam berbagai bahasa, dan banyak lagi.

Tingkat perlindungan data yang tinggi

Sekarang, artikel tentang meretas berbagai sumber sering dipublikasikan di jaringan. Pengembang framework Ruby on Rails menangani masalah perlindungan data dengan sangat serius. RoR awalnya mengenkripsi kata sandi, data kartu kredit dan data pengguna pribadi lainnya, injeksi SQL dan serangan XSS juga dikecualikan. Semua parameter masukan diloloskan secara default.

Mempelajari Ruby

Sekarang mari kita bicara tentang bagaimana Anda bisa menguasai Ruby.

Teori

Anda harus mulai, tentu saja, dengan literatur. Saya merekomendasikan sumber-sumber ini:

  • Ruby dalam 20 menit adalah sumber yang bagus untuk pemula yang lengkap. Ini memungkinkan Anda untuk mengenal konstruksi dasar bahasa dalam waktu kurang dari setengah jam dan mulai menulis program kecil Anda sendiri.
  • Codecademy adalah platform dengan kursus online di banyak bidang, termasuk Ruby murni dan Rails. Di sini proses pembelajaran dibangun dengan cukup menarik, diberikan materi teoretis dan sekaligus tugas praktik untuk memantapkannya. Tugas akhir dibayar, tetapi tanpanya Anda bisa mendapatkan keterampilan yang diperlukan.
  • Sumber Daya Ruby dan Rails - Kumpulan tautan ke berbagai situs dan buku yang didedikasikan untuk mempelajari Ruby dan Rails.
  • Secara terpisah, saya dapat merekomendasikan buku Flanagan D., Matsumoto Y. "Bahasa Pemrograman Ruby". Itu dianggap salah satu yang terbaik, penulisnya adalah pencipta bahasa Ruby sendiri.
  • Google :)

Berikut adalah beberapa sumber daya untuk Anda mulai:

  • w3schools.com/sql - Baca, coba dan uji pengetahuan Anda tentang SQL di sini.
  • quizful.net/test - Di sini Anda dapat menemukan pertanyaan yang sering diajukan dalam wawancara.

Bahasa inggris

Saya yakin tidak masuk akal untuk membahas poin ini secara mendetail, karena ini adalah topik untuk artikel terpisah. Bahasa Inggris sangat penting dan ini adalah fakta yang terkenal. Saya ingin menyebutkan secara singkat dua poin terpenting.

Pertama, bahasa Inggris adalah bahasa utama komunitas internasional, jadi sebagian besar literatur yang berguna juga akan berbahasa Inggris, banyak berita, laporan, dan artikel penting juga akan muncul pertama kali dalam bahasa Inggris. Jika Anda ingin mengetahui jawaban atas pertanyaan apa pun, kemungkinan besar Anda akan dapat menemukannya terlebih dahulu dalam bahasa Inggris.

Kedua, semakin baik pengetahuan Anda tentang bahasa Inggris, semakin besar kemungkinan Anda mendapatkan pekerjaan. Sebagian besar klien adalah orang asing, oleh karena itu, pengetahuan bahasa Inggris penting untuk komunikasi yang produktif, pemahaman yang jelas tentang persyaratan teknis, dan kontak yang baik dengan klien.

Praktik

Setelah menjelajahi beberapa sumber, saatnya beralih ke bagian yang lebih penting, yaitu praktik. Ada banyak contoh tugas dengan toko online atau blog sederhana di web (ini salah satunya), terutama jika kita berbicara tentang Rails. Dalam menyelesaikan tugas yang sudah sedikit mendekati nyata, Anda pasti akan menemui beberapa masalah dan kemudian beralih ke pelatihan salah satu kualitas terpenting - kemampuan untuk google. Sayangnya, saya tidak dapat menemukan tutorial atau kursus apa pun yang didedikasikan untuk keterampilan ini, tetapi jelas memainkan peran yang sangat penting dalam pekerjaan sehari-hari.

Kursus

Setelah membaca teori dan menulis beberapa "proyek hewan peliharaan", Anda tentu saja dapat mencoba untuk pergi ke wawancara, tetapi sering terjadi bahwa pengetahuan ini tidak cukup. Ini karena banyaknya kandidat, dan mengingat persaingan, semua orang berusaha untuk tampil menonjol dan mempersiapkan diri sebaik mungkin.

Poin penting lainnya dalam pelatihan, yang dapat menguntungkan Anda saat mencari pekerjaan, adalah kursus pemrograman. Kecuali, tentu saja, Anda memiliki seorang mentor yang bersedia meluangkan waktu tertentu untuk membuat tugas dan meninjaunya.

Saya harus segera mengatakan bahwa saya tidak merekomendasikan pergi ke kursus tanpa memiliki semacam basis pengetahuan. Saya melihat kursus sebagai cara yang bagus untuk mengkonsolidasikan pengetahuan yang diperoleh dalam proses belajar mandiri. Dan sekarang saya tidak mencoba mengiklankan sekolah tertentu, tetapi saya akan menjelaskan dengan tepat manfaat apa yang dapat diperoleh dari ini:

Kemungkinan besar ada Anda akan mempelajari sesuatu yang tidak Anda ketahui sebelumnya. Kursus memiliki jumlah materi yang cukup besar yang disajikan dalam bentuk terstruktur, yang memungkinkan Anda untuk mengasimilasi materi dengan lebih baik.

Selama kursus Anda akan memiliki mentor, yang akan meninjau solusi tugas Anda dan menunjukkan kelemahan dan kesalahan.

Motivasi. Ini terutama bagi mereka yang membutuhkan bantuan dengan disiplin diri. Terkadang cukup sulit untuk memaksakan diri melakukan sesuatu, tidak peduli prospek apa yang muncul di cakrawala. Saat mengikuti kursus, Anda akan memiliki jadwal yang jelas untuk diikuti dan tugas yang harus diselesaikan atau Anda akan dikeluarkan. Motivasi finansial juga berperan di sini, dalam hal kursus berbayar. Lagi pula, ketika Anda memberikan uang hasil jerih payah Anda, Anda sudah memiliki sikap yang sama sekali berbeda terhadap masalah tersebut, dan pikiran untuk melewatkan saja muncul lebih jarang.

Keuntungan lain - sertifikat. Jelas bahwa pada akhirnya Anda akan dinilai dari pengetahuan, dan bukan dari keberadaan selembar kertas di resume Anda. Namun demikian, akan menjadi nilai tambah, apalagi jika ada calon dengan tingkat pengetahuan yang sama, namun tanpa bukti dokumenter.

Tambah satu proyek di GitHub ke dalam celengan Anda. Jika Anda seorang pengembang pemula, kemungkinan besar proyek yang ditulis dalam kursus akan lebih menarik dari segi teknologi daripada yang ditulis sebelumnya.

Dan yang paling penting - pekerjaan. Berbicara tentang kursus, maksud saya bukan hanya kursus yang Anda perlu bayar. Seringkali, perusahaan merekrut sendiri untuk pelatihan, sehingga nantinya mereka dapat mempekerjakan yang terbaik. Ini bisa berupa kursus internal atau magang / magang. Opsi ini adalah yang terbaik, karena Anda tidak perlu membayar apa pun, Anda mendapatkan pengalaman dan semua kelebihan di atas, dan sebagai tambahan - prospek pekerjaan yang nyata. Mendapatkannya lebih sulit, tetapi prospeknya lebih signifikan.

Total

Ruby adalah bahasa yang memungkinkan Anda untuk bekerja tanpa banyak ketidaknyamanan dan upacara yang datang dengan bahasa yang diketik dengan kuat. Ruby mudah untuk memulai, terutama jika Anda sudah memiliki pengalaman pengembangan dalam bahasa pemrograman lain dan dapat dengan cepat membuat prototipe dengan Ruby on Rails. Di Jepang, dari mana asalnya, Ruby digunakan untuk membuat game. Ruby ringkas dan terbaca seperti bahasa Inggris, membuat kodenya mudah dipahami oleh pemula.

Untuk mempelajari Ruby, saya ingin menegaskan kembali: Anda harus memulai dari yang kecil. Baca beberapa buku, lakukan beberapa tugas sendiri, dan kemudian, jika Anda merasa perlu untuk mendapatkan lebih banyak pengetahuan dan pengalaman atau motivasi tambahan, Anda dapat mengikuti kursus yang sudah memiliki sejumlah pengetahuan yang diperoleh sendiri.

Idealnya, ini adalah kursus dari perusahaan yang, pada akhirnya, akan memberi Anda tawaran jika kinerja Anda baik. Opsi alternatif adalah kursus berbayar yang akan membantu Anda mengkonsolidasikan pengetahuan Anda, menambahkan proyek lain ke resume Anda dan mendapatkan pengalaman, yang paling penting di awal. Namun jangan berharap setelah menyelesaikan kursus berbayar, Anda akan dengan mudah lulus wawancara dengan menunjukkan sertifikat. Bagaimanapun, pengetahuan akan dievaluasi.

Pada saat yang sama, memiliki motivasi, kesabaran, kemampuan, dan pengalaman yang cukup dengan bahasa pemrograman lain, Anda dapat dengan mudah menguasai Ruby sendiri, karena ada banyak informasi yang berguna dan terstruktur dengan baik di Internet. Selain itu, berkat komunitas Ruby yang terbuka dan banyak, Anda dapat dengan mudah menemukan jawaban online untuk banyak kemungkinan pertanyaan yang, dengan kemungkinan besar, telah ditanyakan seseorang sebelum Anda.

Good luck dengan studi Anda! Dan di artikel selanjutnya kita akan membahas tentang kode tersebut.

Berlangganan saluran Telegram kami untuk junior agar tidak ketinggalan lowongan menarik, magang, kursus, artikel.

Selamat tinggal!

Kata pengantar

Suatu kali saya ingin mengenal Rails lebih baik, tetapi tidak tahu harus mulai dari mana sampai artikel ini menarik perhatian saya. Selanjutnya Anda akan melihat terjemahannya, bercampur dengan pengalaman saya sendiri dan perubahan leksikal dan fraseologis yang khas bagi saya. Jadi ayo pergi.

Perkenalan

Saya memiliki banyak pengalaman dengan PHP di belakang saya, tetapi sekarang saya bekerja sebagai pengembang Rails. Tantangan besar bagi kebanyakan orang yang mencoba mempelajari sesuatu yang baru adalah proses pembelajaran itu sendiri. Ketika Anda memiliki bahasa atau kerangka kerja apa pun dan mengetahuinya luar dalam, beralih ke sesuatu yang baru sepertinya tidak perlu.

Namun, mempelajari Ruby on Rails cukup mudah. Ini adalah kerangka kerja yang sangat kuat yang memiliki komunitas besar yang mendorongnya ke depan. Jadi pertanyaan kami adalah: apa cara terbaik untuk mempelajari Rails? Berikut adalah rencana pelajaran.

Artikel ini rencana lengkap pelajaran yang diperlukan untuk mengenal Rails dan mulai mengerjakannya dalam waktu sesingkat mungkin. Yang perlu Anda lakukan adalah mengikuti langkah-langkah di bawah ini, yang tercantum secara berurutan.

Butir 1: Bekerja dengan Latihan di Try Ruby

Anda mungkin berpikir bahwa mempelajari Ruby adalah langkah terpenting di sini, tetapi sebenarnya tidak. Beberapa dari mereka yang mulai mempelajari Ruby secara detail berhenti belajar dan tetap menggunakan bahasa dan kerangka kerja mereka saat ini. Jangan lakukan itu!. Jangan takut untuk mempelajari bahasa ini (atau yang lainnya). Ruby adalah bahasa yang menyenangkan, bagus, dan mudah dipelajari. Plus, jangan lupa bahwa Anda tidak harus mempelajarinya 100%. Anda hanya perlu mengetahui dasar-dasarnya.

Alat yang paling direkomendasikan untuk mendalami sintaks Ruby adalah situs TryRuby. Ini adalah lingkungan interaktif yang memungkinkan Anda mencoba sintaks dalam tindakan. Jika Anda mengetik membantu, Anda akan diundang ke tutorial lima belas menit yang akan mengajari Anda dasar-dasarnya. Jangan lupa bahwa panduan ini memiliki dua bab yang bisa Anda baca dengan mengetik bantuan 2.

Jika Anda bekerja keras pada tugas-tugas ini selama beberapa waktu, Anda akan memiliki basis pengetahuan yang baik. Yang saya lakukan pertama kali adalah mempelajari kedua manual ini. Selebihnya saya pelajari dalam proses mengembangkan situs di Rails, serta melalui googling dan latihan bersama IRB.

Langkah 2: Memasang Ruby dan Ruby on Rails

Jika Anda ingin mempelajari Rails, Anda pasti perlu menginstalnya di komputer Anda. Berikut adalah beberapa solusi berdasarkan OS apa yang Anda miliki. Jika Anda memiliki komputer berbasis Mac atau Linux, saya sarankan Anda menggunakan RVM. Ini adalah alat yang hebat untuk menginstal Ruby. Sebenarnya, berikut adalah petunjuk pemasangannya. Jika Anda memiliki Windows, maka Anda harus menggunakan RubyInstaller.

Langkah selanjutnya adalah menginstal Rails sendiri. Untuk melakukan ini, Anda perlu menginstal RubyGems. Jika Anda menggunakan RVM, selamat - Anda sudah menginstal RubyGems. Jika Anda memiliki Windows, saya menyarankan Anda untuk melanjutkan di sini. Untuk menginstal Rails, Anda perlu menggunakan perintah rel pemasangan permata dan, kemudian, selesai!

Butir 3: Lihat Pengantar Jeffrey Way tentang Rails


Dalam screencast 40 menit ini, Jeffrie Way memandu Anda melalui apa yang perlu Anda ketahui untuk menggunakan Rails. Di dalamnya Anda akan menemukan banyak informasi berguna termasuk topik seperti:

  • Model dan generator
  • Pengembangan yang digerakkan oleh tes (TDD)
  • ActiveRecord
  • RSpec dan Capybara
  • Sebagian
dan banyak lagi…

Butir 4: Pelajari Kursus Rails For Zombies

Saya selalu berpikir bahwa belajar dengan contoh adalah yang paling banyak jalan terbaik mempelajari bahasa atau kerangka kerja. Kursus gratis dan sangat kuat yang harus Anda periksa adalah Rails For Zombies oleh orang-orang di EnvyLabs. Kursus ini interaktif, artinya setelah menonton setiap video, Anda akan mengerjakan latihan yang bermanfaat dan menarik.

Sampai saat ini, saya telah memberi tahu Anda tentang alat interaktif dan gratis. Waktu freebie sudah berakhir! Anda sekarang harus membeli buku berjudul Agile Web Development with Rails. Ini bertujuan untuk mengajari Anda cara menggunakan Rails dengan membangun situs web dari awal. Itu melewati dasar-dasar seperti pengontrol, model, perancah, pengujian fungsional, dan sedikit AJAX. Dapatkan setidaknya edisi terbaru.

Butir 6: Bangun Blog Sederhana

Saya tahu ini terdengar sangat membosankan (setidaknya bagi saya), tetapi ini adalah contoh bagus yang digunakan di mana-mana karena cukup mudah dan cepat untuk ditulis. Dengan mengikuti jalan ini, Anda akan membantu mengkonsolidasikan pengetahuan dan keterampilan Anda. Tetapi saya menyarankan agar Anda tidak menyalin-tempel (Anda tidak akan mencapai apa pun dengan ini, kecuali mungkin 10 menit membuang-buang listrik), tetapi cobalah untuk menulisnya secara bertahap, dari ingatan, terkadang hanya mengintip ke dalam buku untuk melihat bagaimana ini atau itu. metode bekerja.

Butir 7: Tambahkan Fitur Baru ke Blog Anda

Sangat menyenangkan! Anda masih membangun blog Anda sendiri. Namun tetap saja tidak memiliki fungsionalitas yang lengkap, melainkan hanya fungsi dasar yang melekat di setiap blog yang disajikan. Oke, mari bekerja sedikit dan tambahkan sistem otentikasi.

Sebenarnya, saya tidak ingin memaksa Anda melakukan sesuatu yang sulit saat ini, karena Anda sudah bekerja keras. Sebagai sistem otentikasi, Anda dapat menggunakan beberapa permata yang sudah jadi (Omniauth, misalnya). Pada saat yang sama, Anda akan memahami penerapan permata di proyek Anda.

Saya juga merekomendasikan menonton screencast ini oleh Ryan Bates, yang menjelaskan cara membuat sistem autentikasi sederhana dari awal. Setelah penerapan sistem, Anda harus menambahkan kemampuan untuk menghapus / mengedit posting, jika Anda belum melakukannya. Jika tugas sudah selesai, maka saatnya beralih ke item berikutnya.

Butir 8: buat sesuatu milik Anda sendiri

Pada tahap ini, saatnya Anda menjadi lebih kreatif dan berpikir untuk membuat semacam layanan (misalnya hosting foto). Jangan berhenti pada desain situs web kedua Anda. Siapkan sesuatu. Misalnya,

Saya sudah lama ingin mempelajari Ruby on Rails pada beberapa tingkat dasar. Tidak ada tujuan khusus. Sebaliknya, hanya untuk saya sendiri, untuk lebih memahami apa yang istimewa tentangnya (tidak seperti 100.500 teknologi dan kerangka kerja lainnya), yang memungkinkan Anda dengan cepat membuat dan menskalakan proyek Internet yang cukup dimuat. Alasan kedua adalah keinginan untuk mencoba pendekatan baru untuk belajar. Ketika saya belajar menjadi seorang programmer, kami hanya memiliki buku dan forum tempat Anda dapat meminta nasihat. Sekarang ada buku teks interaktif dan sekolah pemrograman online, sejumlah besar screencast (hampir mimpi: untuk menonton bagaimana kode guru), basis pengetahuan seperti stackoverflow.com dan banyak kode sumber di GitHub, tempat Anda dapat menghabiskan waktu berjam-jam mempelajari kode sumber pro nyata. Saya memutuskan untuk mendedikasikan beberapa malam berikutnya (dan tidak ada waktu di siang hari) untuk mencoba cara baru belajar dalam tindakan.

malam pertama

Akan aneh untuk mulai mempelajari Ruby on Rails tanpa setidaknya pengetahuan minimum tentang Ruby secara langsung. Saya telah mengikuti panduan interaktif ruby-lang.org sebelumnya. Tapi begitu saya melewatinya, saya langsung lupa segalanya. Pembuatnya berjanji akan membutuhkan waktu lima belas menit untuk mempelajari dan menguasai sintaks Ruby. Butuh waktu tiga puluh. Benar, dengan gangguan konstan di Twitter. Prosesnya terlihat seperti ini. Mereka memberi tahu Anda: “Array di Ruby dideklarasikan seperti ini, dan data diambil dari array seperti ini. Sekarang mari kita coba membuat array dan mengekstrak elemen N darinya. Dan kami akan memeriksanya." Anda membaca bagaimana semuanya diatur, dan segera mencobanya. Ruby Anda, tentu saja, tidak akan belajar. Lebih baik menganggapnya sebagai kursus super cepat yang berhasil.

Meski begitu, Ruby sendiri sangat jauh dari framework Ruby on Rails. Saya ingin menguasai rel. Dari artikel kami tentang pendidikan online, saya pasti ingat kursus sensasional Zombie for Rails railsforzombies.org. Sama seperti Try Ruby, sebuah tutorial interaktif yang memulai dari awal untuk mengajari Anda cara mempersiapkan aplikasi kereta api. Pertama, mereka memberi Anda kuliah mini (dalam bahasa Inggris, tetapi semuanya sangat jelas - aktifkan subtitle) tentang struktur file aplikasi rel, pendekatan CRUD untuk bekerja dengan data, jelaskan bagaimana model MVC diimplementasikan di rel , dan seterusnya. Setelah setiap video, Anda ditawari untuk menyelesaikan tugas untuk menggabungkan materi. Semuanya tampak sederhana dan dapat dimengerti, kursus berlalu tanpa disadari dalam satu atau dua jam (kecil). Tetapi! Apakah saya merasa setelah kursus bahwa saya dapat menulis aplikasi kereta api? Sayangnya tidak ada!

Malam kedua

Salah satu alasan mengapa setelah Rails for Zombies ada beberapa pengetahuan dasar, tetapi tidak ada kepercayaan, adalah lingkungan virtual tempat pelatihan berlangsung. Di satu sisi, ini mengurangi ambang masuk hingga batasnya: Anda tidak perlu khawatir tentang lingkungan. Di sisi lain, Anda tidak membuat sesuatu yang nyata di sepanjang jalan - tidak ada "Halo Dunia" untuk Anda di akhir. Dan yang terpenting, dari sisi mana mendekati pembuatannya, tidak jelas. Sejak saat itu, saya ingin mencoba Ruby on Rails beraksi, benar-benar menginstalnya di sistem (sebelumnya, saya bahkan tidak perlu mencobanya), dan membuat aplikasi sederhana dari awal.

Saya tidak ingat bagaimana caranya, tetapi secara tidak sengaja saya menemukan kursus screencast yang sangat sukses di rails.hasbrains.org Rusia. Terima kasih kepada penulis untuk presentasi yang kompeten: dia secara metodis menjelaskan prinsip-prinsip aplikasi rel secara mendetail, membenamkan Anda dalam semua seluk-beluk yang diperlukan di sepanjang jalan. Singkatnya, sepanjang malam kedua percobaan, saya menonton paruh pertama dari lebih dari tiga puluh episode dari screencast ini.

Gambaran itu akhirnya melekat di kepala saya, bagaimana aplikasi dibuat, cara bekerja dengan konsol rel, cara membuat model dan migrasi, cara memperbarui model dan cara memvalidasi data di dalamnya, pengontrol RESTful, dan sebagainya. Menonton setiap episode, saya langsung mencoba semuanya, membangun aplikasi rel yang berfungsi penuh. Menjadi jelas bagaimana rel diatur pada prinsipnya.

Malam ketiga

Pada malam ketiga, episode terakhir dari screencast tetap ada, yang berhasil saya tonton dalam sekali duduk: bekerja dengan rel tidak lagi tampak liar. Pada titik ini, seseorang memberi tahu saya bahwa kursus Rails for Zombies memiliki kelanjutan yang masuk akal dan jauh lebih dalam. Benar, kursus ini sudah dibayar dan dihosting dalam kerangka sekolah pemrograman www.codeschool.com Code School. Membayar 25 dolar untuk mendapatkan akses ke semua program sekolah bukanlah hal yang disayangkan. Ini adalah biaya per bulan, jadi jika Anda tidak menyukainya, jangan lupa untuk membatalkan langganan Anda.

Kursus Rails for Zombies 2 benar-benar sukses. Benar, banyak pengulangan dari apa yang saya lihat di screencast - tapi itu bahkan bagus. Lima level dan lima blok latihan yang Anda lakukan langsung di konsol interaktif. Pada titik ini, rel sudah tampak logis, dapat dimengerti, dan dapat digunakan.

Di Code School, Anda dapat memprogram langsung di browser dengan menyelesaikan tugas kursus

Apa berikutnya?

Sudahkah saya belajar mengerjakan proyek yang rumit? TIDAK. Tapi saya benar-benar menyadari pendekatan yang digunakan di rel, dan memahami kenyamanannya. Saya belajar cara membuat aplikasi sederhana dengan cepat dan meningkatkan fungsinya dalam waktu super singkat menggunakan permata yang ditulis oleh komunitas. Saya mendapatkan keberanian dan terus belajar dengan senang hati praktik terbaik dalam program Sekolah Kode (sekarang saya menonton kursus tentang tes unit). Dan saya sangat senang bahwa mempelajari teknologi menjadi sangat mudah.