Как стать автором
Обновить

Создание движка для блога с помощью Phoenix и Elixir / Часть 1. Вступление

Время на прочтение21 мин
Количество просмотров32K
Всего голосов 25: ↑24 и ↓1+23
Комментарии50

Комментарии 50

Спасибо за перевод.
У вас бы быстрее популяризация пошла, если бы Вы начали переводить для начала вводную по elixir в целом. Подобные статьи довольно трудно воспринимать людям, которые не знакомы (либо плохо знакомы) с синтаксисом самого языка. :)
Благодарю за комментарий. В целом я с вами согласен, но вводные статьи не так интересны, как те, в которых можно получить реальный результат, который можно сразу же пощупать. Поэтому сначала покажем как это круто, а дальше уже сформируем интересные обучающие материалы с нуля.
Считаю что данная статья ненамного полезнее вводной. «Блог на эрланге» звучит примерно так же как «high-load чат-сервер на bash-скриптах» или «реалтаймовый кодировщик видео и фреймсервер на php» — возможно, но зачем? У нас есть отличный отбойный молоток, но мы им качаем детскую кроватку, а не крошим бетон.

Всю статью по написанию блога на эликсире можно сократить до:
docker run --name some-wordpress -e WORDPRESS_DB_HOST=10.1.2.3:3306 \
-e WORDPRESS_DB_USER=… -e WORDPRESS_DB_PASSWORD=… -d wordpress

На освободившемся месте можно рассказать, как на эликсире легко и непринуждённо пишутся whatsapp'ы и видеокодировщики, как миллионы акторов крутятся в стройном танце, обслуживая сотни тысяч игроков в agar.io-клоне на сервере из двух ардуин. Тогда, я думаю, и популяризация пошла бы семимильными шагами. А очередной блог на хаскеле или c++ порождает всё тот же вопрос — зачем? Может всё-таки задачу, пусть и учебную, подобрать более релевантную имеющемуся инструменту?
Итак, по порядку) Во-первых, это первая статья в цикле из 11 частей, в остальных будут рассматриваться различные интересные возможности Феникса, прекрасно подходящие для создания современного блога, а-ля та же упоминаемая в комментариях Медуза. Во-вторых это первая статья в рамках развития русскоязычного сообщества Эликсира, было бы странно сразу рассматривать какой-то конкретный кейс создания хайлоад-сервера. Об этом несомненно будет дальше. В-третьих, создания блога для веб-разработки — это как Todomvc для Js, зная другие подобные инструменты легко можно провести параллели в технологиях. Ну и вообще, эта статья — прощупывания почвы на предмет интереса к сабжекту.
Я тоже не очень понимаю зачем делать блог на Erlang/Elixir. Но, справедливости ради, есть даже конкурент Wordpress под Erlang, Zotonic называется.
НЛО прилетело и опубликовало эту надпись здесь

Если вы на шареде, вам не сто́ит писать свой движок блога.


Время, необходимое на запуск проекта, не играет никакой роли. Имеет смысл обсуждать время на поддержку проекта. Но, к сожалению, этот цикл (я читал оригинал) не дает представления «зачем это вообще», почему в продакшене иногда важен «hot update» и «zero downtime», и так далее.


Если вам надо что-то, что поднимется за пять минут и задеплоится на шаред — лучшей альтернативы jekyll’у люди не придумали.

НЛО прилетело и опубликовало эту надпись здесь
сервер, который тоже надо админить, обновлять, чинить дырки, беречь от 0-day и ddos и т.д.

Вы из девяностых-то годов прошлого века выбирайтесь уже. Heroku и тысяча его конкурентов.


Я что-то пропустил и руби теперь дают на шаредах?

Даже на github-pages :)
Jekyll генерирует статический сайт.

НЛО прилетело и опубликовало эту надпись здесь

github-pages запустит билд для вас. git commit -m 'New post' + git push и ваш блог обновлен. Мне неизвестны способы, требующие меньшего количества телодвижений.

НЛО прилетело и опубликовало эту надпись здесь

Когда у вас будет пара тысяч записей в блоге и задача «отыскать записи, со ссылками на habr (с упоминаниями Серёги)» станет более-менее повседневной, ребята в консоли продолжат тратить на обновление блога секунду, а в Виллабаджо начнется эротический танец вприсядку, потому что grep в том месте, в котором вы сейчас оказались (например, в телефоне) работает одинаково быстро, а вот поиск по вашей базе в шареде может оказаться уже не настолько прозрачным.


Ну и кроме того, хранить текстовые записи в html в базе — это извращение, которое умерло 20 лет назад.

НЛО прилетело и опубликовало эту надпись здесь

Слушайте, ну вы бы прямо сказали от входа, что занимаетесь поднятием блогов для секретарш на шареде — я бы и слова бы не сказал.


Тут просто как бы тема про другое, а вы влезли с настолько же амбициозным, насколько и неумным обобщением ad web developentum.

НЛО прилетело и опубликовало эту надпись здесь
Эта статья не для создания блога, а как пример работы с фениксом…
То, что люди побегут делать (и выкладывать на шареды) свои блоги после прочтения статьи на фениксе очень и очень маловероятно.
Ваши придирки вообще не обоснованы, просто уходите дальше писать на php и обновлять блоги на шареде.

Ну и кроме того, да, руби дают на очень многих дешевых шаредах.

А зачем вообще нужно русскоязычное сообщество (не канальчик в слаке, а именно целое сообщество)? Чем плохо коммитить в мировое пространство?


Вот сравните, скажем, вклад в развитие языка медузы и thoughtbot’а (две первые картинки у вас). Пока оно вот так, кого вы ждете у себя в сообществе? Я не обличаю, мне действительно интересно: зачем бы мне рассказывать своим друзьям про команду, которая «готовит крутой проект», когда вокруг полно команд (и просто людей), которые крутые проекты ведут открыто, с возможностью пощупать код и приобщиться к разработке? Если у меня у самого, скажем, три активно развивающихся проекта?

Вряд ли канальчик в слаке сможет создать хайп вокруг языка и помочь ему раскрутиться. Коммитить в мировое пространство — замечательно, но помогать развивать его небольшую часть — в разы эффективнее.

Сайт, очевидно, со временем превратится в лебедя, а пока лишь даёт небольшое представление что к чему, с картиночками более-менее известных компаний, просто использующих либо активно развивающих язык.

Если у вас у самого 3 активно развивающихся проекта, особенно если они преследуют образовательные цели, да ещё и бесплатно дают доступ к информации, да ещё и на тему Эликсира, то предлагаю скорее поделиться ими с сообществом! Наш проект тоже абсолютно открытый, но пока находится в процессе формирования. Не надеюсь, что вы о нём сейчас расскажете друзьям, однако практически уверен, что сделаете это через некоторое время.
Я давно поделился всем с сообществом, с тем сообществом, которое не скрывает от меня название своих замечательных проектов и не куклится в кокон по принципу «у нас тут уютненько».

> Не надеюсь, что вы о нём сейчас расскажете друзьям

У вас так на сайте написано, я же не сам придумал эту гениальную формулировку.
Я не скрываю — проект называется wunsh.ru, это и есть образовательный сервис. Первое, что было сделано в рамках него — данная статья.

Эта гениальная формулировка с заделом на будущее, надежды на неё сейчас мало, но святая вера всё же присутствует.
Я с одной стороны искренне желаю вам и вашему проекту удачи. Серьезно, было бы здорово, если бы взлетело. Образовательные проекты — замечательно, вне зависимости от.

С другой стороны, я не сторонник велосипедостроения. В экосистеме Elixir’а на сегодняшний день полно́ незанятых зияющих ниш: бери и воплощай. Но у вас на сайте не найти ссылки ни на один захудалый пакетик на hex.pm (или я плохо искал?) Как и у медузы, кстати.

И вот видя такое отношение соотечественников к популяризации, как-то сразу хочется обратно к Валиму и Мак Корду, которые и на письма отвечают, и в рассылке живьем — обучайся не хочу, и книжки пишут на тему «как это было сделано», а не «как это надо бы сделать».

Сами, заметьте, пишут, а не переводят неведомо что.
От всей души благодарю за хорошие пожелания.

Со своей стороны приложу все усилия, чтобы лендинг превратился в полноценный сайт с тонной полезной информации по Эликсиру с кучей авторского материала и с совершенно необычным обучением, от которого даже Хосе и Крис придут в восторг.

Ну а получится ли у меня это, покажет только время.
канальчик в слаке, в телеграме и прочее — это помоечка для ежедневного трепа.

Попробуйте погуглить ответ на вопрос, который обсуждался в канальчике.

Причем если это было в IRC/jabber, то ответ как раз найти можно. В отличие от слака/телеграма.
В точку. А вы, что, гуглите профессиональные вопросы на русском? Если да — соболезную. Если нет — см. мой предыдущий комментарий.

шаред хостинг  — это уже почившее в Бозе явление. 5 долларов в месяц digitalocean.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
нисколько. Большинство развернутых нами софтин на эрланге не требуют обслуживания.

Поставил и забыл, особенно после всяких рельс, нод и прочего, что упаковать и запустить на выделенном сервере жуткое мучение.
НЛО прилетело и опубликовало эту надпись здесь
не очень тема для статьи, если честно.

Блог пишется на рельсах за 15 минут и ничего лучше для написания блога за 15 минут не появилось и не появится, потому что рельсы полностью закрыли эту тему.

Лучше рассказать про вебсокеты, компоновку ответов от разных источников на сервере и т.п.

А заодно рассказать про «дружбу» реакта с phoenix.
Многое из этого будет в последующих частях данной серии. Дальше будут совершенно другие темы рассмотрены, в том числе в авторских материалах, а не переводах.
прекрасно!

Будем ждать
Знаете, посмотрел на ваш wunsh.ru

Если честно, то сильно брезгую медузой. Мне очень противно оставлять вам свою почту, пока этот проект по непонятной причине там находится.
Мы никак не аффилированы с ними. Это лишь один из немногих русскоязычных проектов, который открыто заявляет об использовании Эликсира. Ну а редакционная политика всё же не должна так сильно влиять на мнение о совершенно другом мире исходного кода.
да, стараюсь себя в этом убеждать, но не очень получается.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Пока товарищи там заняты запуском крутейшего проекта, отвечу я :)

http://www.phoenixframework.org/docs/sessions

Я не помню, как там в оригинале уже, но никто не мешает changeset для вновь пришедшего чувака сначала из куки пытаться прочесть.

Почему не выложен код проекта?

Неплохо было бы дать перевод на великий язык или хотя бы объяснение слова скаффолд. Можно ли это считать собственным именем, превратившееся в термин IT-жаргона?

да, скаффолдинг, он же предгенерация кода по шаблонам был введен в рельсах 17 лет назад.

Никак не пойму назначение анонимной функции в параметрах объявления формы:

<%= form_for @changeset, @action, fn f -> %>

Функция пустая или только ее объявление!?

В описании сказано: "form_for/4 receives the Ecto.Changeset and converts it to a form, which is passed to the function as the argument f".

Я правильно понимаю, что это аналогично конвейеру, передающему форму во вложении от функции к функции?

раньше там стоял более понятный `do |f|`, где в палочках передается аргумент анонимной фукнции.

Она не пустая, её тело будет до следующего end и в этом теле по сути вместо кода будет кусок темплейта.

Парсер темплейтов это прочтет и вставит туда код, выплевывающий в буфер этот кусок темплейта.

Я правильно понял, что от фрагмент кода fn f -> до <% end %> составляет темплейт? Хотелось бы знать формальные правила составления темплейта в Phoenix.

Например, какие бывают элементы темплейта? Когда они обрамляются разделителями контента <div>... </div>?

И еще. У меня контент формы в Phoenixвыстраивается вертикально, а хотелось бы горизонтально. Где спрятан этот механизм выравнивания?

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории