• ОЀОРМИВЬ ΠŸΠžΠ”ΠŸΠ˜Π‘ΠšΠ£ ΠžΠ’Π—Π«Π’Π«

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

Gatsby

ВЕЧНЫЙ

Gatsby

ВЕЧНЫЙ
РСгистрация
10 ΠžΠΊΡ‚ 2018
БообщСния
36,420
Π›Π°ΠΉΠΊΠΈ
146,697
Автор: Thinknetica - АртСм Нистратов
НазваниС: ΠœΠ΅Ρ‚Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Ruby (2023)

1683669366796.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
ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅:
Π‘ΠΊΡ€Ρ‹Ρ‚ΠΎΠ΅ содСрТимоС доступно для зарСгистрированных ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ!

Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ:
 
Π’ΠΠ–ΠΠž:

НС оставляйтС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ с ΠΏΡ€ΠΎΡΡŒΠ±Π°ΠΌΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ / Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ссылку Π½Π° скачиваниС ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Ρ‚ΠΈΠΏΠ° Β«404Β», «ошибка».

Для восстановлСния ссылки Π΅ΡΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΠΈ Β«Π–Π°Π»ΠΎΠ±Π° / Π’ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ссылку» Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ постС Ρ‚Π΅ΠΌΡ‹.

ΠŸΡ€ΠΈ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠΈ Π’Π°Ρˆ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½, Π° Π’Π°Ρˆ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ Π½Π° сутки. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΈΠ·ΡƒΡ‡ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° нашСго сайта.
Автор ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ Ρ‚Π΅ΠΌΡ‹ Π€ΠΎΡ€ΡƒΠΌ ΠžΡ‚Π²Π΅Ρ‚ΠΎΠ² Π”Π°Ρ‚Π°
Gatsby πŸ‘¨β€πŸ’» ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ [Thinknetica PRO] АртСм Нистратов - Π’ΠΎΡ€ΠΊΡˆΠΎΠΏ Β«Event-Driven ArchitectureΒ» (2023) АдминистрированиС ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ 0
Gatsby πŸ‘¨β€πŸ’» ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ [Thinknetica] АлСксандр Борисов ― Π”Π΅ΠΏΠ»ΠΎΠΉ Ruby on Rails ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Docker Swarm ΠΈ MRSK (2023) АдминистрированиС ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ 0
Gatsby πŸ‘¨β€πŸ’» ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ [Thinknetica] Π”ΠΌΠΈΡ‚Ρ€ΠΈΠΉ Π’ΠΈΡ‚ΠΎΠ² - CоврСмСнная Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° GO (2023) АдминистрированиС ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ 0
Gatsby πŸ‘¨β€πŸ’» ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ [ΠšΠΈΡ€ΠΈΠ»Π» Π₯Ρ€Π°ΠΏΠΊΠΎΠ²] [Thinknetica] ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π‘Π” Π² PostgreSQL: Нормализация, Π˜Π½Π΄Π΅ΠΊΡΡ‹, Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ (2023) АдминистрированиС ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ 0
Π‘Π²Π΅Ρ€Ρ…Ρƒ Π‘Π½ΠΈΠ·Ρƒ