#медуза

страница 4 из 6
пост №392Разработка и инженерия

Выпустили книгу, сделали для неё лендинг https://special.meduza.io/book/

Хороший повод рассказать, как мы делаем такие страницы.

У нас есть git-репа static, пуш в master-ветку которого триггерит пулл на сервере, раздающем всю папку в meduza.io/static. Так отдаются страницы типа «О проекте», много разных временных файлов и спецпроекты.

Если спецпроекту нужен красивый адрес — создается nginx роут в домене special.meduza.io. Пример — конференция «Шторм» и книга «Как жить».

Обратите внимание, мы не используем отдельные домены для каждого проекта. Заведении новых доменов, выпуск SSL-сертификатов, включение anti-DDoS механизмов, когда нужно быстро переключить IP адреса — слишком много задач для автоматизации. В результате вся user-facing Медуза живет на двух доменах: основной meduza.io для читателей и mdza.io для коротких ссылок.

пост №366Разработка и инженерия

Полтора года назад мы сделали игру «футбольный менеджер».

Plug-n-play движка из этой механики сделать не получается — уж очень все игры разные, но минимальными ресурсами разработки получается делать вот такие крутые проекты:

https://meduza.io/games/perezhit-tyurmu-maloy-krovyu

Кстати, если вы умеете js (react, node, вот это всё) и не чураетесь верстки — можем сделать пару проектов вместе. Пишите мне на samat@meduza.io— перед новым годом очень много проектов.

пост №354Бизнес и стартапы

Бот @meduzaprobot, указанный на странице http://telebot.agency/ разработан внутри Медузы.

Не знаю, кому и что это «агенство» реально разработало, но мои источники говорят, что бота для Скольково делали тоже не они.

Имейте в виду, совсем уже люди совесть потеряли.

пост №312Продукты и дизайн

Подкасты Медузы.

2 месяца дизайна, 1 месяц программирования.

Первый проект, в котором:
- мы работаем с большими медиа-файлами (кеш на edge-серверах нашего CDN увеличился почти в два раза) и сохраняем их на клиентах (оффлайн-прослушивание!);
- сделали «богатые» пуши (кнопка play прямо внутри пуш-уведомления!);
- забрали старые выпуски из внешнего сервиса (Simplecast) и импортировали их в собственный бэкенд (и не потеряли статистику по пути);
- сделали свою хитрую бэкенд-статистику, потому что нормальной коробочной статистики в индустрии подкастов не существует в принципе;
- добавили ретину на клиенты (посмотрите на эти прекрасные обложки подкастов);
- позволяем взаимодействовать с материалами прямо с главной страницы, не заходя в них.

Этот список можно продолжать. Это просто самый крупный запуск Медузы на текущий момент. Mobile Web, Desktop Web, Android, iOS, iTunes Podcasts — все платформы поддерживаются в полном объеме.

1 продакт, 2 дизайнера и 8 разработчиков. Магия!

Ilya Krasilshchik Nastya Yarovaya Виктор Ходак

Боря Горячев Anton Byrna Andrey Skopintsev Kirill Balyasnikov Артемий Гарин Max Rovnov Dmitry Zakharov

Вы — лучшие!

Завтра будет обстоятельный пост на medium, как это всё устроено.

пост №311Личное

Этот блог называется запуск завтра, а у нас на самом деле завтра запуск самого крупного проекта Медузы so far.

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

Каждый запуск — как экзамен в универе, перед ним страшно, даже если всё приготовил и знаешь предмет 🙈

пост №300Разработка и инженерия

Составляем карту технологических зависимостей Медузы.

Это схема того, где искать поломку, если что-то вдруг идет не так. Продуктов и сервисов становится так много, что в скоро связи между ними перестанут помещаться в голову без препаратов.

Посередине слева — полный список «пользовательских view»: то, откуда можно читать Медузу. Web, iOS, Android, Instant Articles, etc. 20 пунктов.

Ряд сверху — список зависимостей для каждого View. Зависимости есть от внутренних сервисов и от внешних.

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

Где лучше составлять такие схемы? Я пока остановился на Scapple. Кстати, эта же компания уже много лет производит очень мощную программу для писателей Scrivener — ведь не всем писателям нравится WordStar.

Извините, что не хайрез. Смысл, надеюсь, понятен.

пост №285Разработка и инженерия

Любой онлайн-сервис рано или поздно хочет поиск. Потом к вам приходят с «почему не при запросе X не показывается Y» и всё, пошло-поехало.

Эпической полноты инструкция про этот самый поиск https://medium.com/startup-grind/what-every-software-engineer-should-know-about-search-27d1df99f80d

Хорошая статья просто для понимания объема проблемы, если вдруг вас попросят сделать свой кастомный поиск.

Предваряя вопрос — в Медузе ElasticSearch, давно хотим прикрутить Yandex XML Search API, всё никак руки не дойдут.

пост №267Разработка и инженерия

Вчера мне пришло удивительное письмо:

Мой друг в составе команды исследователей шельфа северного ледовитого океана сейчас «болтается» в **, чуть западнее острова N на корабле Z. В море им быть ещё минимум два месяца. Говорит, без новостей с большей земли пухнет голова. У них есть интернет, через спутниковый телефон, но канал очень узкий. Если это не сложно для вашего технического отдела, не могли бы организовать отправку дайжеста новостей на электронную почту текстом в архиве на электронную почту xxx@xxx.ru размером письма не более 100 кБ?

Письма Вечерней Медузы за последнюю неделю весят в среднем 50-70KB. Львиная доля объема — код, что позволяет выглядеть письмам одинаково во всех почтовых клиентах; это почище кроссбраузерной верстки.

Давайте попробуем убрать всю красоту и оставим только текст и минимальные выделения. Текст ниже — для компьютерщиков. TL;DR: «вот так, с помощью нехитрых приспособлений...»

Откуда мы будем получать событие об отправке письма? Подойдет webhook в mailchimp, через который мы рассылаем вечерку. Настроим простенькое приложение webhook, которое будет ждать события, а при его получении — запускать нашу программу.

Что в самой программе? Зная ID почтовой рассылки мы можем через API мейлчимпа получить тело письма. Но оно не особо красивое и вычищать его не хочется. Как насчет API Медузы? И вправду, в plaintext версии письма последняя ссылка — всегда на это же письмо на сайте. Например, вот вчерашнее письмо https://meduza.io/brief/2017/09/05/vechernyaya-meduza.

Добавляем `api/v3/` в адрес новости после имени сервера и получаем адрес API https://meduza.io/api/v3/brief/2017/09/05/vechernyaya-meduza. Тут уж есть поля .root.mail.subject и body, которые содержат тему и тело письма, без лишних стилей. Отлично, вычленяем нужные поля с помощью утилиты парсинга json jq и схлопываем их вместе в готовый email.html файл утилитой cat.

Как отправить получившееся письмо? У сервиса отправки писем Amazon Simple Email Service есть отличный SMTP-интерфейс и я как раз недавно нашел программу sendemail (не путать с sendmail, которая позволяет отправлять письма через SMTP из командой строки.

Теперь исследователь севера каждый вечер будет получать «высушенную» версию Вечерней Медузы весом всего 15КБ.

А вы можете подписаться на красивую, сверстанную с любовью Вечерку в почте или в телеграм-канале @meduzaevening и узнавать новостную повестку дня за пару минут.