инструменты

Технологии и штуки которыми я пользуюсь

Экономия на спичках: считаем стоимость хостинга пет-проектов на kubernetes

Я люблю простые и понятные решения. Для хостинга всех своих проектов я использую Heroku. Он достаточно дешев, лёгок в настройке и подымается буквально за минуту. Советую всем. Сейчас у меня там крутится несколько проектов, два из которых работают постоянно — это adopt.com.ua где вы можете найти себе котика или пёсика, и blogigram с помощью которого был опубликован этот пост. Эти проекты кушают 46$ в месяц,...

Неосиляторы

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

Боже, джаву храни!

Не так давно я писал об нарушении обратной совместимости как главном грехе разработчика. У меня есть несколько Ruby приложений которые уже давно живут в продакшене. Версия ruby, которую я использовал, 2.5, перестала поддерживаться, и всех попросили переехать на 2.7. Однако сделать это было не так просто. Бампнув версию и попытавшись запустить я получил кучу ошибок. Я отложил это дело до лучших дней и недавно...

Как оверсинкинг и перфекционизм мешают мне заканчивать проекты

Перфекционизм—ближайший друг прокрастинации. Я часто страдаю желанием сделать все "как надо", но неожиданные препяствия, возникающие на этапе делания как надо а не как попало часто тормозят работу, убивают мотивацию и приводят к затягиванию сроков и перерасходу бюджета. Рассмотрим мой недавний микропроект с ClickHouse. Задача была довольно простая—взять данные из одного места и положить в другое. Всё. Что может быть проще? После завершения PoC клиент...

ClickHouse. Нюансы

Вообще это очень трендовая база. На хайлоад++ и других конференциях вы можете посмотреть множество докладов посвященных ClickHouse. На хабре куча статей. Материалов очень много. Вся эта движуха прошла мимо меня потому что я предпочитаю использовать проверенные инструменты до последнего. Ну и хайлоад++ не посещаю. После PoC я прикинул, что нужно сделать для синхронизации основного хранилища в ClickHouse, и приступил к доработке продакшн-решения. Неожиданность подстерегала меня в...

Когда олимпиадники могут. ClickHouse

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

Как я деплоймент скрипты на JS писал

В одном из стартапов где я работал, я полностью занимался инфраструктурой. Вначале вся наша микросервисная история деплоилась на Elastic Beanstalk, потом решили переехать на ECS. Для CI/CD зарядили Jenkins и кучу баш-скриптов, осталось научиться деплоить это в прод. Я взялся за эту задачу и зачем-то решил что все деплоймент скрипты у меня будут на JS. Ну как зачем. Я думал что сделаю полноценную ChatOps систему...

Веб-скрапинг. Инструменты

Для скрапинга можно использовать всё что угодно. Вам нужно лишь сделать запрос, получить содержимое и дальше его разобрать. Теоретически, скрапинг можно делать на bash + какой-то программой для работы с xml. Библиотеки для работы с сетью и парсинга html есть во всех языках. Можете брать любой. Однако скрапинг помимо собственно запроса и обработки включает еще кучу всяких вещей. Вам нужно ходить по ссылкам и желательно делать это...

Веб-скрапинг

Интернет—бездонный океан информации. Часто она не структурирована и требует подготовки, чтобы быть полезной. Множество продуктов строят свою бизнес-модель на сборе и обработке данных. Веб-скрапинг—это автоматизированный сбор информации с сайтов и других источников: публичных API, файлов с данными и так далее. Скрапинг нужен везде и всегда. Первый раз я столкнулся с этим в 2010, когда мы были совладельцами маленькой сети зоомагазинов и нужно было искать...

IDE против текстового редактора

Основной мой рабочий инструмент—IntelliJ IDEA. В нем я делаю вcё. Основной аргумент сторонников работы в текстовых редакторах—это минимализм, простота, скорость. По поводу производительности всего что сделано на электроне есть вопросы. А вот с минимализмом и простотой сложнее. Для работы мне нужно несколько вещей: собственно редактор с хорошим автокомплитом и навигацией, дебаггер для java/ruby/python, инструмент для доступа к базам данных, возможность запускать приложения...

Архитектура современных веб-приложений на примере adopt.com.ua. CMS. Мониторинг. Аналитика

Так как у меня нет тестов кроме линтеров, то нужно быть готовым быстро фиксить ошибки на проде. Для этого используются логгеры и трекеры ошибок. Логгер я не использую, так как у меня пока что нечего логировать особо. А вот для трекинга ошибок я пользуюсь отличным сервисом Sentry. Как он работает? Вы подключаете SDK в своё приложение, и при возникновении любой ошибки она будет отправлена на сервера...

Архитектура современных веб-приложений на примере adopt.com.ua. Масштабирование

Предущие части: введение, внешние сервисы Сейчас вся моя инфраструктура крутится на самых дешёвых и простых инстантсах. 512 мегабайт памяти, редис на 25 мегабайт, какой-то дохлый постгрес. Всего этого хватает чтобы сайт бодро работал. Что будет, если завтра ко мне придет не 1000 пользователей в день, а 1000000? Чтобы это узнать, нужно проводить нагрузочное тестирование. Для этого есть специальные инструменты: ApacheBench, Apache JMeter, Gatling и другие. Они...

Архитектура современных веб-приложений на примере adopt.com.ua. Внешние сервисы

В предыдущей части я рассказал о ядре. Теперь пройдемся о внешних вещах. На Heroku эфемерная файловая система. Это значит, что после перезагрузки инстанса, например при редеплое, все записанные файлы пропадут. Основной контент сайта—это фото, поэтому их нужно где-то хранить. Для этого мы используем AWS S3. Файлы прозрачно загружаются на S3 с помощью RoR, для этого не нужно писать дополнительного кода. То же кстати есть и...

Архитектура современных веб-приложений на примере adopt.com.ua

Я разработчик сервиса по пристройству животных — https://www.adopt.com.ua/ Там вы можете найти себе друга—котика или собачку. Хотя сайт простой, я применяю те же подходы для разработки своих коммерческих проектов. Если бы у меня стояла задача делать стартап, то я всё делал бы так же. Расскажу о том, как всё устроено внутри. Сайт сделан на Ruby on Rails. Это веб-фреймворк который предоставляет всё,...

Раздробленный софт

Каждый день в интернетах появляются новые продукты. Какие-то из них решают маленькую задачу, например превращают веб-страницу в аудио-подксат, какие-то—комплекс, например систему управления проектом. Больше всего меня напрягает в этом сложность интеграции решений и сложность встраивания одно в другое. Для работы с блогом я использовал разные процессы. Сейчас я остановился на self-hosted "вордпрессе" (ghost) + self-hosted сервисе для кросспоста в телеграм. Последний потихоньку обрастает фичами. А теперь...

Простые решения—ресайз картинок для вебсервиса

Я занимаюсь проектом adopt.com.ua—каталог котиков и собачек на пристройство. Основной его частью является контент—фото животных. Куратор может загружать изображения любого размера. Чтобы они быстро отрисовывались у пользователей, нужно их ресайзить под размеры плашек. Это стандартная задача для проектов где есть картинки или аватарки. Часто для оптимизации фото желательно отресайзить в несколько разных размеров, под мобилы и десктопы. Как она решается обычно? Несколько...