інструменти

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

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

Интернет—бездонный океан информации. Часто она не структурирована и требует подготовки, чтобы быть полезной. Множество продуктов строят свою бизнес-модель на сборе и обработке данных. Веб-скрапинг—это автоматизированный сбор информации с сайтов и других источников: публичных 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—каталог котиков и собачек на пристройство. Основной его частью является контент—фото животных. Куратор может загружать изображения любого размера. Чтобы они быстро отрисовывались у пользователей, нужно их ресайзить под размеры плашек. Это стандартная задача для проектов где есть картинки или аватарки. Часто для оптимизации фото желательно отресайзить в несколько разных размеров, под мобилы и десктопы. Как она решается обычно? Несколько...

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

В октябре позапрошлого года я решительно устал от низкой производительности и ограниченности MacBook Pro 2015 и решил попробовать переехать на линуксы. Пожив так пару месяцев, я написал серию постов в канале и большой материал "Как я съезжал с macOS после 5 лет работы за макбуком". С тех пор прошло уже много времени и спешу поделиться обновлениями. Главное—я до сих пор 99% времени работаю за десктопом...

Jelastic

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

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

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

Дебаг: інтерактивність

Часто можна почути думку що дебаг—шкідлива практика, яка відівчає програміста думати. Таке я чув від свого боса на першій роботі, таке можна прочитати в інтернетах, багато хто так каже. Замість дебагу пропонують більше занурюватися у код, робити юніт-тести на свої шматочки функціональності, активно використовувати логування. Дійсно, я неодноразово спостерігав за своїми джунами, що порожнім поглядом дивилися в екран, та механічно натискали F8. Але для мене...

Дебаг

10 років тому я працював у парі разом із своїм тімлідом над розробкою кешу для БД. Продукт, що ми робили, було неможливо запускати локально. Процес виглядав наступним чином: робиш зміни, збираєш JAR, заливаєш його по FTP на application server, рестартуєш сервер через веб-консоль WebLogic, чекаєш 5 хв, перевіряєш як працює. Незручно та дуже довго, цикл зворотнього зв'язку надзвичайно повільний, робота нефективна. Все ускладнювалося ще й тим,...