Від перекладача: «Elixir і Phoenix — прекрасний приклад того, куди рухається сучасна веб-розробка. Вже зараз ці інструменти надають якісний доступ до технологій реального часу для веб-додатків. Сайти з підвищеною інтерактивністю, багатокористувацькі браузерні ігри, микросервисы — ті напрямки, в яких дані технології послужать хорошу службу. Далі представлений переклад серії з 11 статей, докладно описують аспекти розробки на фреймворку Фенікс здавалося б такий тривіальної речі, як блоговый движок. Але не поспішайте кукситься, буде дійсно цікаво, особливо якщо статті спонукають вас звернути увагу на Еліксир або стати його послідовниками.

У цій частині ми закінчимо рутинну роботу над коментарями, щоб потім перейти до більш цікавим речам.
Читати далі →

image

Якщо ви зачаровані мовою Elixir, то приходьте 16 березня о 19:00 на Мансарду Rambler&Co. Ми поговоримо про Elixir, Phoenix Framework, Erlang OTP і доведемо перевагу наших buzzwords над будь-якими іншими.

Читати далі →

Брошура про Ecto – інтерфейс для роботи з базами даних на Elixir

екто
Вступ
Ecto написаний на Elixir DSL для комунікації з базами даних. Ecto це не ORM. Чому? Так, тому що Elixir не об'єктно-орієнтована мова, от і Ecto не може бути Object-Relational Mapping (об'єктно-реляційних відображенням). Ecto — це абстракція над базами даних складається з декількох великих модулів, які дозволяють створювати міграції, оголошувати моделі (схеми), додавати або оновлювати дані, а також посилати до них запити.
Якщо ви знайомі з Rails, то для вас найближчою аналогією, звичайно ж, буде його ORM ActiveRecord. Але ці дві системи не є копіями один одного, і гарні у використанні в рамках своїх базових мов. На даний момент актуальна версія Ecto 2, вона сумісна з PostgreSQL і MySQL. Більш рання версія додатково має сумісність з MSSQL, SQLite3 і MongoDB. Незалежно від того, яка використовується СУБД, формат функцій Ecto буде завжди однаковий. Також Ecto йде з коробки з Phoenix і є гарним стандартним рішенням.
Якщо надумаєте розширити брошуру, то милості прошу приєднатися до розвитку цього репозиторію https://github.com/wunsh/ecto-book-ru
Нововведення Ecto 2.X
Читати далі →

json-api-normalizer: легкий спосіб подружити Redux і JSON API

JSON API + redux
останнім часом набирає популярність стандарт JSON API для розробки веб-сервісів. На мій погляд, це дуже вдале рішення, яке нарешті хоч трохи стандартизує процес розробки API, і замість чергового винаходу велосипеда ми будемо використовувати бібліотеки як на стороні сервера, так і клієнта для обміну даними, фокусуючись на цікавих завданнях замість написання сериалайзеров і парсерів в сто перший раз.

Читати далі →

Створення движка для блогу з допомогою Phoenix і Elixir / Частина 7. Додаємо коментарі / Новорічний анонс в ув'язненні



Від перекладача: «Elixir і Phoenix — прекрасний приклад того, куди рухається сучасна веб-розробка. Вже зараз ці інструменти надають якісний доступ до технологій реального часу для веб-додатків. Сайти з підвищеною інтерактивністю, багатокористувацькі браузерні ігри, микросервисы — ті напрямки, в яких дані технології послужать хорошу службу. Далі представлений переклад серії з 11 статей, докладно описують аспекти розробки на фреймворку Фенікс здавалося б такий тривіальної речі, як блоговый движок. Але не поспішайте кукситься, буде дійсно цікаво, особливо якщо статті спонукають вас звернути увагу на Еліксир або стати його послідовниками.

У цій частині ми підготуємо фундамент для коментарів, щоб потім оживити їх за допомогою каналів Phoenix.


Читати далі →

Зв'язок багато до багатьох і upsert в Ecto 2.1


У попередньому розділі ми говорили про many_to_many асоціаціях і як маппить зовнішні дані в асоційовані сутності за допомогою
Ecto.Changeset.cast_assoc/3
. Тоді ми були змушені слідувати правилам, що накладаються функцією
cast_assoc/3
, але робити це не завжди можливо або бажано.
У цій главі ми розглянемо
Ecto.Changeset.put_assoc/4
в порівнянні з
cast_assoc/3
і розберемо кілька прикладів. Також ми поглянемо на функцію upsert, які з'являться в Ecto 2.1.

Читати далі →

Створення движка для блогу з допомогою Phoenix і Elixir / Частина 6. Підтримка Markdown



Від перекладача: «Elixir і Phoenix — прекрасний приклад того, куди рухається сучасна веб-розробка. Вже зараз ці інструменти надають якісний доступ до технологій реального часу для веб-додатків. Сайти з підвищеною інтерактивністю, багатокористувацькі браузерні ігри, микросервисы — ті напрямки, в яких дані технології послужать хорошу службу. Далі представлений переклад серії з 11 статей, докладно описують аспекти розробки на фреймворку Фенікс здавалося б такий тривіальної речі, як блоговый движок. Але не поспішайте кукситься, буде дійсно цікаво, особливо якщо статті спонукають вас звернути увагу на Еліксир або стати його послідовниками.

У цій частині ми підключимо бібліотеку Earmark для додавання можливості використання розмітки Markdown.


Читати далі →

Створення движка для блогу з допомогою Phoenix і Elixir / Частина 5. Підключаємо ExMachina



Від перекладача: «Elixir і Phoenix — прекрасний приклад того, куди рухається сучасна веб-розробка. Вже зараз ці інструменти надають якісний доступ до технологій реального часу для веб-додатків. Сайти з підвищеною інтерактивністю, багатокористувацькі браузерні ігри, микросервисы — ті напрямки, в яких дані технології послужать хорошу службу. Далі представлений переклад серії з 11 статей, докладно описують аспекти розробки на фреймворку Фенікс здавалося б такий тривіальної речі, як блоговый движок. Але не поспішайте кукситься, буде дійсно цікаво, особливо якщо статті спонукають вас звернути увагу на Еліксир або стати його послідовниками.

У цій частині ми підключимо бібліотеку ExMachina для поліпшення процесу тестування. Тепер не потрібно копіювати ідентичний код для створення тестованих моделей, за нас це зроблять фабрики!


Читати далі →

Створення движка для блогу з допомогою Phoenix і Elixir / Частина 4. Додаємо обробку ролей в контролерах



Від перекладача: «Elixir і Phoenix — прекрасний приклад того, куди рухається сучасна веб-розробка. Вже зараз ці інструменти надають якісний доступ до технологій реального часу для веб-додатків. Сайти з підвищеною інтерактивністю, багатокористувацькі браузерні ігри, микросервисы — ті напрямки, в яких дані технології послужать хорошу службу. Далі представлений переклад серії з 11 статей, докладно описують аспекти розробки на фреймворку Фенікс здавалося б такий тривіальної речі, як блоговый движок. Але не поспішайте кукситься, буде дійсно цікаво, особливо якщо статті спонукають вас звернути увагу на Еліксир або стати його послідовниками.

У цій частині ми закінчимо розмежування прав доступу з використанням ролей. Ключовий момент цієї серії статей — тут дуже багато уваги приділяється тестів, а тести — це здорово!


На даний момент наше додаток засноване на:

  • Elixir: v1.3.1
  • Phoenix: v1.2.0
  • Ecto: v2.0.2
  • Comeonin: v2.5.2
Де ми зупинилися
Минулого разу ми розлучилися з вами на додавання поняття ролі всередину моделей і створення допоміжних функцій для тестів, щоб трохи полегшити собі життя. Тепер нам потрібно додати всередину контролерів засновані на ролях обмеження. Почнемо з створення допоміжної функції, яку ми зможемо використовувати в будь-якому контроллері.

Створення допоміжної функції для перевірки ролей
Першим кроком на сьогодні стане створення простої перевірки користувача на наявність прав адміністратора. Для цього створіть файл
web/models/role_checker.ex
і заповніть його наступним кодом:

Читати далі →

Як Phoenix вбиває React



Близько півтора років тому ми написали внутрішній інструмент для корпоративних анонсів. Спочатку в ньому використовувався Phoenix для бекенду і React для фронтенда. Тим самим ми отримували переваги Redux та каналів Phoenix при доставки оновлення в браузер в реальному часі.
Це дозволило отримати чудовий живий інтерфейс, але знизило швидкість розробки і стало причиною малої кількості що беруть участь в процесі розробників. Близько трьох місяців тому ми прийняли рішення викинути React і повернутися до серверного рендерингу.
Чому ми вирішили замінити React
Оновлення в реальному часі дозволяє краще зануритися в роботу з додатком, але при цьому має додаткові витрати.
Читати далі →