работа

работа

О работе

Оновлення бібліотек на проектах

"Rotting software" це серйозна проблема. Вибухове зростання індустрії генерує таке ж зростання кількості інструментів розробки та пришвидшує старіння існуючих рішень. В 2015 для розробки стартапа ми взяли мікросервіси та Spring Cloud Netflix. До 2017 половину з цього стеку сам Netflix перевів у maintenance режим, а деякі рішення просто задепрекейтив у себе та залишив напризволяще. Ми ще не встигли вийти в продакшн, а одна з ключових підсистем...

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

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

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

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

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

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

Когда полезно уметь в leetcode

На той неделе я писал о том, что знания алгоритмов и умение быстро решать задачи из литкода мне никогда не пригождались. Ну что ж, instant karma! На выходных я писал компилятор телеграмовских сообщений в html—это нужно для двухсторонней синхронизации с Ghost. Взял собщение из телеги, конвертнул в html, засунул в Ghost, получил пост на сайте, Profit! Изи таска. Телеграм присылает сообщения в хитром формате. Вы...

Computer Science знания, которые мне пригодились

В прошлом материале я перечислил вещи, которые я не использую на практике. Сегодня поговорим о том, что важно и нужно. Поехали. Как устроены и работают разные базы данных и хранилища, как работают индексы, зайчатки CAP, как работают транзакции, что такое план запроса, что такое N+1—на мой взгляд это одни из важнейших знаний которыми должен обладать любой разработчик имеющий дело с хранением данных. В современной...

Computer Science знания, которые мне не пригодились

В культуре собеседований западных продуктовых компаний и тех кто под них косит принято гонять кандидатов по базам CS: решать алгоритмические задачи, спрашивать заковыриствую теорию. Бытует мнение, что на практике эти знания применяются крайне редко—поэтому мы, кандидаты, подгораем от необходимости этих знаний на собесах. Зачем спрашивать, если у вас формочки? Оставив в стороне целесообразность проведения таких интервью я сфокусируюсь на своём опыте—какие знания из "базы"...

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

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

Нельзя спросить

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

Чик чик и в продакшен

Есть у меня такая отрицательная черта—не особо думать перед выбором чего-то. Главное ввязаться, а там разберемся. Терпеть не могу планировать и двигать колбаски на диаграммах ганта. Писать спецификации и участвовать в длительных обсуждениях роадмапа на следующие 10 лет. Обсуждать то, что не нужно прямо сейчас и уже, что не горит. Выбирать товары, технику и перечитывать миллион обзоров. Пытаться поймать самое лучшее. Закладывать архитектуру на столетия...

Седые муди

На первой работе я провел 7 с хвостиком лет. На второй—был первым сотрудником-инженером. Раньше мне это казалось крутым. Будучи в компании незнакомых коллег я всегда пользовался возможностью похвастаться "я тут уже Х лет!", "вот этот проект стартовал много лет назад, еще когда тут из вас никого не было!", "я тут первый инженер, а вы не знали? да, вот эти все деплоймент скрипты сделал я". Сейчас...

10x инженер

Что отличает продуктивного инженера от посредственного? Почему один делает задачу месяц, а другой—пару часов? Возьмём бота. По моим оценкам, джун управится с задачей за 40 часов, а прокачанный чел—за 4-8, минимимум в 5 раз быстрее. Я посмотрел историю Toggl и нашел задачу очень схожую с квиз-ботом, которую сделал как раз за 4 часа. За счет чего достигается такая скорость? Первое и самое главное—наличие...

Пет-проект для портфолио миддла и сеньера

Какие могут быть варианты развития маленького чат-бота? В исходном тексте я описал инфраструктурные вещи—усложнение всего, кроме логики бота. Что делать, если хочется программировать, а не фуллстечить, девопсить и разбираться с кубернетесами? Бот работает только в телеграме. Скорее всего, там отсутствует прослойка логики обработки диалогов. Что, если понадобится добавить еще один мессенджер? Для этого нужно добавлять абстракции—диалог, кнопка, событие от мессенджера, контекст пользователя. Выделение такого...

Пет-проект для джуниора. За сколько времени его нужно сделать?

Джуниор должен управиться с базовым чатботом за рабочую неделю, 40 часов чистого времени. Чем я руководствуюсь при такой оценке? Во-первых, 40 часов—это очень много. Это 5 дней напряженной работы, 10 дней обычной офисной работы или 20(!) дней по 2 часа в день. Колоссальное количество времени. Во-вторых, у меня уже есть эмпирические данные: Когда я брал к себе в шлюпку первого джава-джуна, то дал тестовое задание—...

Пет-проект для портфолио джуниора. Реализация

Рассмотрим реализацию квиз-чатбота на примере джавы. Большинство java-вакансий содержат Spring/Hibernate. Этот фреймворк уже давно доминирует на рынке, и если вы его изучите, то потом легко сможете перейти на другой, потому что концепции везде одинаковые. Предположим, что вы уже умеете писать хелловорлд на джаве и знаете все базовые конструкции языка. Как начать делать чатбота? Найти существующих ботов, посмотреть как они работают, чтобы иметь представление о конечном...

Пет-проект для портфолио джуниора. Идея

Меня попросили предложить идею пет-проекта для портфолио джава джуна без опыта. Такой, цитирую, "чтобы при подаче заявки в резюме прикладывать гитхаб и это делало его интересным кандидатом?". Дальше буду говорить о веб-разработке, но принципы применимы к чему угодно. Я скептически отношусь к гитхабу в резюме. Не говорю за других нанимающих менеджеров, но я никогда не видел интересных проектов—обычно это круды типа PetClinic из туториалов спринга....