інструменти

Технології та речі якими я користуюсь.

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

Перфекционизм [https://teletype.in/@uxlive/overthinking]—ближайший друг прокрастинации. Я часто страдаю желанием сделать все "как надо", но неожиданные препяствия, возникающие на этапе делания как надо а не как попало часто тормозят работу, убивают мотивацию и приводят к затягиванию сроков и перерасходу бюджета. Рассмотрим мой недавний микропроект с ClickHouse. Задача была довольно простая—взять данные из одного места и положить в другое. Всё. Что...

ClickHouse. Нюансы

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

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

На одном из самых старых проектов которые я разрабатываю начала тупить отчетность. Как только я поставил клиенту BI (напоминаю, это было самое быстрое и самое эффективное [https://www.rozhkov.me/metabase/] решение задачи которое я когда-либо делал), то аналитики сразу начали городить кучу дашбордов и отчетов. В основном все работало бодро, но некоторые запросы изрядно тупили. Проблему довольно долго удавалось игнорировать, но в какой-то момент данных...

Как я деплоймент скрипты на 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 [https://sentry.io/]. Как он работает? Вы подключаете SDK в своё приложение, и при возникновении любой ошибки она будет...

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

Предущие части: введение [https://www.rozhkov.me/modern-web-applications-architecture/], внешние сервисы [https://www.rozhkov.me/modern-web-applications-architecture-cdn-email/] Сейчас вся моя инфраструктура крутится на самых дешёвых и простых инстантсах. 512 мегабайт памяти, редис на 25 мегабайт, какой-то дохлый постгрес. Всего этого хватает чтобы сайт бодро работал. Что будет, если завтра ко мне придет не 1000 пользователей в день, а 1000000? Чтобы это узнать, нужно проводить нагрузочное тес...

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

В предыдущей части я рассказал о ядре [https://www.rozhkov.me/modern-web-applications-architecture/]. Теперь пройдемся о внешних вещах. На Heroku эфемерная файловая система. Это значит, что после перезагрузки инстанса, например при редеплое, все записанные файлы пропадут. Основной контент сайта—это фото, поэтому их нужно где-то хранить. Для этого мы используем AWS S3 [https://aws.amazon.com/s3/]. Файлы прозрачно загружаются на S3 с помощью RoR, для этого...

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

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

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

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

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

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

Линукс на десктопе год спустя

В октябре позапрошлого года я решительно устал от низкой производительности и ограниченности MacBook Pro 2015 и решил попробовать переехать на линуксы. Пожив так пару месяцев, я написал серию постов в канале и большой материал "Как я съезжал с macOS после 5 лет работы за макбуком" [https://www.rozhkov.me/moving-from-macos-to-linux-after-5-years/]. С тех пор прошло уже много времени и спешу поделиться обновлениями. Главное—я до...

Jelastic

> PaaS и инфраструктура для людей — одна из немногих технических тем, которые меня действительно заботят и где я вижу много места для инноваций. Убежден, что работа с инфраструктурой должна быть простой и понятной большинству разработчиков, а современное состояние дел просто ужасно, невероятно переусложнено и абсолютно не для людей. Jelastic пытается в некотором смысле решить эту проблему. На просторах интернетов довольно мало не-маркетинговых материалов о Jelastic и...

Линукс на десктопе. Как я съезжал с macOS после 5 лет работы за макбуком

Начало Вот уже второй месяц для ежедневной работы я использую Linux. Как человек, который до последнего жрал кактус тима кука, но сумевший соскочить, я делюсь с опытом переезда и ободряю сделать вас то же. С 2007 по 2015 я работал на винде. На работе у меня вначале был десктоп с Windows NT 2003(?) Кажется, точно не помню, потом переехал на ноутбук Thinkpad. NT 2003 обновили до...