работа

работа

О работе

Архитектура современных веб-приложений на примере 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 из туториалов спринга....

Работа, которая мне не нравится 2/∞

Есть вид задач, суть которых заключается в том, что нужно кого-то переиграть. Например, я много работал со скрапингом данных, это вообще популярная тема. Как вы можете догадаться, не все ресурсы любят, когда их скрапят, и стараются защититься—например ставят себе проверку на клиентский js, подключают сервисы антискрапинга (incapcula), блокируют по IP (самое простое что может быть), делают нечитаемые классы для стилей чтобы труднее было писать xpath...

Отзывчивость

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