πŸ‘¨πŸ»β€πŸ’» АдминистрированиС ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ πŸ‘¨πŸ»β€πŸ’» - [Thinknetica] АртСм Нистратов - ΠœΠ΅Ρ‚Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Ruby (2023) | Π‘Π»ΠΈΠ² ΠΏΠ»Π°Ρ‚Π½Ρ‹Ρ… курсов ΠΈ Ρ‚Ρ€Π΅Π½ΠΈΠ½Π³ΠΎΠ² Π½Π° SLIV.ONE Π•Π–Π•Π”ΠΠ•Π’ΠΠž! Π­ΠΊΡΠΊΠ»ΡŽΠ·ΠΈΠ²Π½Ρ‹ΠΉ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»! Π‘Ρ…Π΅ΠΌΡ‹ Π·Π°Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°! БСсплатныС Онлайн ΠšΡƒΡ€ΡΡ‹!

πŸ‘¨πŸ»β€πŸ’» АдминистрированиС ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ πŸ‘¨πŸ»β€πŸ’» [Thinknetica] АртСм Нистратов - ΠœΠ΅Ρ‚Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Ruby (2023)

PO$EIDON

⚑️ #moder_PROFI ⚑️
Команда Ρ„ΠΎΡ€ΡƒΠΌΠ°
[Thinknetica] АртСм Нистратов - ΠœΠ΅Ρ‚Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Ruby (2023)
2023-05-09_18-03-26.png
Онлайн-Π²ΠΎΡ€ΠΊΡˆΠΎΠΏ для Ruby-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ искусство мСтапрограммирования ΠΈ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Π³Π΄Π΅, ΠΊΠ°ΠΊ ΠΈ Π·Π°Ρ‡Π΅ΠΌ Π΅Π³ΠΎ стоит ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²ΠΎΡ€ΠΊΡˆΠΎΠΏΠ°
Π”Π΅Π½ΡŒ 1
. ΠœΠ΅Ρ‚Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Ruby ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ

Рассмотрим само понятиС "ΠΌΠ΅Ρ‚Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅" Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… языках. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠΌ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнныС Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.
  • Π‘Ρ€Π°Π²Π½ΠΈΠΌ ΠΌΠ΅Ρ‚Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Ρ€Π°Π·Π½Ρ‹Ρ… языках
  • Π Π°Π·Π±Π΅Ρ€Π΅ΠΌ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΡ‹ мСтапрограммирования Π² Ruby:
    • method declarations (define_method & def)
    • code execution (eval & exec)
    • variable access (instance_variable_get/set, const_get/set)
    • class & module callbacks (included & extended)
  • ΠžΠ±ΡΡƒΠ΄ΠΈΠΌ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ примСнСния мСтапрограммирования
  • Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ с DSL
Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π²Ρ‹ смоТСтС:
ΠΠ°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ основной Π½Π°Π±ΠΎΡ€ срСдств мСтапрограммирования Π² Ruby. Π—Π°ΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ свСдСния Π² нСбольшой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ с самописным DSL Π² качСствС домашнСго задания.

Π”Π΅Π½ΡŒ 2. ДинамичСский Ruby

Рассмотрим Π²Π±Π»ΠΈΠ·ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρƒ Ruby ΠΈ научимся ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ с ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ, зависимым ΠΎΡ‚ окруТСния, Π±ΡƒΠ΄ΡŒ Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠ· контСкста выполнСния ΠΈΠ»ΠΈ настройки запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.
  • Рассмотрим Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…:
    • def vs define_method
    • class/module vs Class.new/Module.new
  • Π˜Π·ΡƒΡ‡ΠΈΠΌ способы создания "чистого" DSL
  • ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ binding Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅
  • Научимся ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ подклассы встроСнных Ρ‚ΠΈΠΏΠΎΠ² ΠΈ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ ситуации, ΠΊΠΎΠ³Π΄Π° это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ
Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π²Ρ‹ смоТСтС:
ΠΠ°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ динамичСски ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ для классов ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° ΠΎΠΏΡ†ΠΈΠΉ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². Π—Π°ΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ знания Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΏΡƒΡ‚Π΅ΠΌ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ API Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈΠ· ΠΏΠ΅Ρ€Π²ΠΎΠΉ домашнСй Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Π”Π΅Π½ΡŒ 3. ΠœΠ΅Ρ‚Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…

Π˜Π·ΡƒΡ‡ΠΈΠΌ ΠΊΠΎΠ΄ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° ruby, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠ΅Ρ‚Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Π‘Ρ€Π°Π²Π½ΠΈΠΌ ΠΈΡ… слабыС ΠΈ ΡΠΈΠ»ΡŒΠ½Ρ‹Π΅ стороны с ΠΈΠ·ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ Π½Π° ΠΏΡ€ΠΎΡˆΠ»Ρ‹Ρ… занятиях ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°ΠΌΠΈ.
  • Рассмотрим внутрСнности Ruby on Rails, Dry.rb, Rspec
  • РазбСрСмся Π² Π½ΡŽΠ°Π½ΡΠ°Ρ… Π²Π΅Ρ‰Π΅ΠΉ, ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ Π² сторонС ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Ρ‚Π΅ΠΌ:
    • ИспользованиС method_missing
    • method_added callback
    • Бвязь ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² initialize ΠΈ new
  • ПодвСдСм ΠΈΡ‚ΠΎΠ³ΠΈ ΠΏΠΎ вопросам примСнСния мСтапрограммирования
Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π²Ρ‹:
Π—Π°ΠΊΡ€ΠΎΠ΅Ρ‚Π΅ ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅ мСтапрограммирования Π² Ruby. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π½Π° Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ мСтапрограммирования Π² извСстных ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΈΠ·ΠΌΡƒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π° занятиях ΠΎΠΏΡ‹Ρ‚Π°.

Π—Π° врСмя Π²ΠΎΡ€ΠΊΡˆΠΊΠΎΠΏΠ° Π²Ρ‹:
  • ΠΠ°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ основныС срСдства мСтапрограммирования Π² Ruby
  • ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π½Π° ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹Π΅ ruby-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ ΠΈΠ΄ΠΈΠΎΠΌΡ‹ Π½ΠΎΠ²Ρ‹ΠΌ взглядом
  • ΠΠ°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ DSL ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ с Π³ΠΈΠ±ΠΊΠΎ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌΠΈΡΡ функциями
  • Π Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ΡΡŒ с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ мСтапрограммирования Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ruby on Rails, Rspec, Dry.rb
ΠŸΠ ΠžΠ”ΠΠ–ΠΠ˜Πš
Π‘ΠΊΡ€Ρ‹Ρ‚ΠΎΠ΅ содСрТимоС. Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²ΠΎΠΉΡ‚ΠΈ ΠΈΠ»ΠΈ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ.
БКАЧАВЬ
Π‘ΠΊΡ€Ρ‹Ρ‚ΠΎΠ΅ содСрТимоС. Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²ΠΎΠΉΡ‚ΠΈ ΠΈΠ»ΠΈ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ.
 
Π‘Π²Π΅Ρ€Ρ…Ρƒ