В документации Telegraph API для эндпоинта createPage указано ограничение на поле content:content (Array of Node, up to 64 KB). Content of the page.В реальности цифра не соответствует поведению. API стабильно возвращает CONTENT_TOO_BIG на русскоязычном тексте около 20 КБ исходного markdown. Я напоролся на это при разборе довольно странной деградации в нашем продакшне: часть постов блога публиковалась в связанный Telegram-канал без ссылки на Telegraph-версию, причём только русскоязычные, а их ан…
Разработку пет-проекта с прицелом на open source в моем случае можно описать выражением: корабль любви разбился о айсберг бытовухи.Но давайте для начала разберемся, кто я и о чем идет речь.У меня нет профильного технического образования. За плечами учеба на экономиста, курсы по JS на фронт и пара лет работы на беке.Поэтому мои выводы могут показаться банальными или очевидными - прошу простить эту вольность. К моему стыду, я плохо учусь на чужих ошибках, поэтому приходится стабильно совершать св…
После того как моя статья о фреймворке LOTIS вызвала интерес, я решил подробнее раскрыть его архитектуру и привести примеры кода. Напоминаю ссылку на репозиторий фреймворка: https://github.com/O-Planet/LOTISLOTIS решает одну фундаментальную проблему: разделение логики на клиент и сервер мешает разработке бизнес-приложений. Вместо того чтобы думать о бизнес-логике, разработчики тратят время на:Синхронизацию данных между клиентом и сервером Управление состоянием Написание идентичной логики на дву…
Привет. Я фронтенд-разработчик. По мнению тех, кто, по мнению некоторых, перекладывает джейсончики туда-сюда, я крашу кнопочки. Но сам я себя идентифицирую иначе: я тоже перекладываю джейсончики, и у меня всё точно так же, как у них. Даже архитектура. У меня тоже есть контроллеры, сервисы и хранилища, и я также обрабатываю запросы пользователей. Даже больше, я делаю HATEOAS, «тру» RESTful, если хотите. Давайте расскажу, как я к этому пришёл.Как я стал бэкендером во фронтендеКогда-то давно я тол…
В 2026 году растёт риск перебоев и ограничений в работе интернета в РФ. В таких условиях имеет смысл заранее продумать, как сохранить привычное окружение при нестабильном доступе к сети.Помимо личных файлов, кино и музыки, хочется сохранить архив сайтов и веб-страниц для чтения в будущем — на месяцы или даже годы вперёд. Но в каком формате это лучше делать?ПК для Апокалипсиса«ПК для Апокалипсиса» — офлайновая система, которая хранит полный набор необходимой информации для жизни без интернета. Э…
Прошлой зимой я писал тут про «Мастерок» — строительный калькулятор на Flutter для RuStore. Приложение поехало в прод, набрало 4.9 звезды, и в какой-то момент пришло осознание: аудитория смартфонных приложений — это аудитория смартфонных приложений. А человек, который в обед нагуглил «сколько мешков ротбанда на 20 квадратов», в магазин приложений не полезет. Он хочет страницу в браузере. Желательно без куки-баннера на полэкрана, без интерфейса из 2012-го и без того, чтобы перед ответом на вопро…
Мотивацией для написания этого поста стали два года собеседований JS/TS-инженеров. Я интересуюсь языками и функциональным программированием, поэтому всегда «разбавлял» технические вопросы разговором о парадигмах. И заметил любопытную асимметрию.Об ООП кандидаты рассуждали уверенно — но в основном на концептуальном уровне, не вдаваясь в то, как именно ООП реализовано в JavaScript. С FP картина была другой: уверенности меньше, зато критика — конкретная и повторяющаяся: «иммутабельность дорогая по…
Привет, Хабр. Это история о том, как мы собрались и по вечерам за полгода создали интерактивный веб-проект про российское телевидение 90-х и 00-х.Сайт называется Окна.ТВ ссылка в конце. Заходите, скролльте и вспомните время, когда телевизор был нашим главным развлечением.Главный экран сайта — вид дома с окнами, таймлайн справа, десктоп Стек в двух словах: ванильный JS, собственная CMS, собственный видеоплеер, деплой в Kubernetes. По дороге познакомился с S3, OOM killer, mask-border и Safari — …
Смысл создания и использования новых библиотек и фреймворков в том, чтобы решить задачи, которые не были решены ранее. Либо, в том, чтобы решить какую-либо задачу более эффективно, чем это уже было сделано кем-то.Сегодня мы начнем разговор о задачах, которые можно решать с помощью Symbiote.js, и делать это гораздо проще и элегантнее, чем с другими фреймворками.Symbiote.js - это легкая (~6 кб brotli), но очень мощная библиотека, основанная на веб-компонентах. Ее основным отличием от конкурентов …