Как стать автором
Обновить
16
0
Sergii Sergieiev @gurugray

Engineering Manager & Staff Developer

Подготовка к собеседованиям в IT-гиганты: как я преодолела проклятье алгоритмического собеседования

Время на прочтение 12 мин
Количество просмотров 203K

Дисклеймер:


Я не программирую с трёх лет, не знаю наизусть Кнута, не являюсь призёром олимпиад по информатике и чемпионатов по спортивному программированию, не училась в MIT. У меня за плечами образование по информатике и 6 лет опыта в коммерческой разработке. И до недавнего времени я не могла пройти дальше первого технического скрининга в IT-гиганты из FAANG (Facebook, Amazon, Apple, Netflix, Google и подобные), хотя предпринимала несколько попыток. 

Но теперь всё изменилось, я получила несколько офферов и хочу поделиться опытом, как можно к этому прийти. Речь пойдёт о позиции Software Engineer в европейских офисах перечисленных компаний.
Читать дальше →
Всего голосов 201: ↑196 и ↓5 +191
Комментарии 342

Как жить с ограничениями внешних API на количество запросов

Время на прочтение 7 мин
Количество просмотров 7.6K

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

Мы уже рассказывали о том, как можно реализовать эти ограничения если вы сами разрабатываете API сервиса, сегодня хотим рассказать о том, как жить с «клиентской» стороны и удобно пользоваться ограниченным по количеству запросов API.

Читать далее
Всего голосов 10: ↑10 и ↓0 +10
Комментарии 3

Технология Apphost: альтернативная вселенная микросервисов в Яндексе

Время на прочтение 6 мин
Количество просмотров 16K

Когда-то поиск Яндекса представлял из себя бутерброд. Каждый его слой могли эффективно разрабатывать единицы людей. Однако верхний добавлял пикантности. Этот слой представлял из себя Apache с кучей Perl’овых модулей.

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

Привет, Хабр. Меня зовут Святослав Фельдшеров. Я разрабатываю Apphost в поиске Яндекса. Добро пожаловать в нашу вселенную!

Подробнее про Apphost
Всего голосов 45: ↑44 и ↓1 +43
Комментарии 52

Архитектура современных корпоративных Node.js-приложений

Время на прочтение 12 мин
Количество просмотров 90K
Ох, не зря в названии намёк на нетленку Фаулера. И когда фронтенд-приложения успели стать настолько сложными, что мы начали рассуждать о высоких материях? Node.js… фронтенд… погодите, но Нода же на сервере, это бэкенд, а там ребята и так всё знают!



Давайте по порядку. И сразу небольшой дисклеймер: статья написана по мотивам моего выступления на Я.Субботнике Pro для фронтенд-разработчиков. Если вы занимаетесь бэкендом, то, возможно, ничего нового для себя не откроете. Здесь я попробую обобщить свой опыт фронтендера в крупном энтерпрайзе, объяснить, почему и как мы используем Node.js.
Читать дальше →
Всего голосов 53: ↑52 и ↓1 +51
Комментарии 64

Urban Bot или как писать чат-ботов для Telegram, Slack, Facebook… на React.js

Время на прочтение 11 мин
Количество просмотров 20K

image


В этой статье я хочу познакомить с новой библиотекой Urban Bot, которая адаптирует React для написания чат-ботов. Ниже я расскажу, зачем эта библиотека появилась на свет, какие дает преимущества и как написать вашего первого чат-бота.


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

В отличии от большинства чат-бот библиотек, которые чаще всего просто оборачивают http запросы в функции с готовыми аргументами и предоставляют подписки вида bot.on('message', callback), иногда позволяя передавать контекст между вызовами, Urban Bot предлагает совершенно иной подход к разработке чат-ботов — через декларативное программирование и компонентный подход. Живой пример, написанный на Urban Bot, вы можете попробовать в Telegram, cсылка на чат-бот, и посмотреть код на GitHub.


Как мы заметили выше, чат-боты это полноценные UI приложения. А какой язык в 2020 и какая библиотека наиболее подходит для разработки UI приложений? Правильно, JavaScript и React. Такая интеграция позволяет легко и непринужденно строить чат-боты любой сложности без единого знания об API мессенджеров. Далее я расскажу, как создавать простые компоненты и на их основе строить сложных чат-ботов, работать с навигацией, создавать диалоги любой вложенности, писать одно приложение и запускать в любых мессенджерах, и многое другое.

Читать дальше →
Всего голосов 22: ↑21 и ↓1 +20
Комментарии 23

Шесть приемов дизайна 2.0

Время на прочтение 2 мин
Количество просмотров 1.5K
Когда-то мы все писали в LiveJournal, комментировали посты на dirty.ru, использовали ключевые слова при постинге в блоге, да и вообще делали много других обычных вещей. А потом какие-то люди пришли и все испортили, назвали это «вебом 2.0», который за полтора года успел набрать бешенную популярность, стать неинтересным для инвесторов, ненавидимым снобами и даже матерным словом хуже «маркетинга».

А современные Веб 2.0-ресурсы (посмотрите, например, список, недавно составленный Сетом Годиным) стал отличать ещё и особенный дизайн — «стеклянные» логотипы с отражением, приятные тона, легкий градиент и прочие вещи, которые уже вызывают рвоту у отдельных граждан.

Но, несмотря на все это, рассмотрим несколько особенностей новомодного дизайна.

Особенность 1. Пастельные тона
Просто приятные глазу цвета, которые в общем-то использовались и раньше. Особенно популярны голубой и розовый; и их сочетание (вспомните хотя бы flickr.com).

Особенность 2. Глянец
Эффект глянцевой обложи. Блестящие, «стеклянные» поверхности основных элементов дизайна, чаще всего логотипов. Особенно модным стал прием отражения на плоскости, имитирующей стекло или воду.

Особенность 3. Тени
Едва заметные тени у основных элементов сайта — ленты новостей, важных блоков и так далее. Как и много лет назад, их принято рисовать вручную, убивая на это уйму времени. Хотя и обыкновенные тени, которые может сделать Photoshop вполне приемлемы.

Особенность 4. Плавный градиент
Легкий перелив пастельных тонов из светлого в темный (обычно сверху вниз). Не придает ни объема, ни каких-либо ещё эффектов, просто приятная штука.

Особенность 5. Округлость элементов дизайна
Сглаженные углы основной ленты, навигации или кнопок (который кстати, должны быть огромными, просто огромными). Можно использовать прямоугольный блок, а в нем — элементы с закругленными углами, или наоборот, неважно.

Особенность 6. Шрифт без засечек
Шрифты из серии Sans Serif: Verdana, Arial, Helvetica. Считается, что текст, написанный крупной Верданой читать удобнее всего (не на бумаге, конечно, только на вебе). Кроме того, сейчас начинается мода на Arial.

Но если бы лично меня спросили, какой шрифт лучше использовать, я бы сначала пожал плечами, усмехнулся, а потом бы заметил, что независимости от моды, лучшим был и остается старый-добрый Times New Roman, правда, любому дизайнеру до него нужно ещё «дорасти» (впрочем, никто меня и не спрашивает).

В общем, Веб 2.0 принес простой и приятный дизайн с минимальным количеством графики, который почти полностью исключил flash- и gif-анимацию, java-аплеты и прочую никому ненужную фигню.
Всего голосов 11: ↑10 и ↓1 +9
Комментарии 23

Советы бизнес-стартапам от Гая Кавасаки

Время на прочтение 3 мин
Количество просмотров 3.7K

Через блог Дмитрия Давыдова узнал про великолепную презентацию Гая Кавасаки на TiECon 2006, посвященную его книге «The Art of the Start».

Я решил законспектировать основные тезисы. Итак, советы Гая Кавасаки, известного венчурного инвестора, начинающему предпринимателю:

Читать дальше →
Всего голосов 61: ↑57 и ↓4 +53
Комментарии 51

Аттестация программистов: наш опыт

Время на прочтение 4 мин
Количество просмотров 40K


Дисклеймер: если после прочтения этого текста вы захотите внедрить KPI для программистов — сходите прочитать еще и это.

Недавно я писал о том, как были придуманы карты компетенции и как мы применяем их на стажерах. Сами карты были придуманы в помощь для аттестации программистов. Сама аттестация — дело сложное, муторное, и часто — неблагодарное.

Итак, какие цели преследует аттестация.
Читать дальше →
Всего голосов 50: ↑35 и ↓15 +20
Комментарии 38

Gitimmersion — Курс фундаментальных основ Git

Время на прочтение 1 мин
Количество просмотров 3.3K
image
Парни из EdgeCase создали сайт gitimmersion.com, посетив который вы сможете познать фундаментальные азы Git, там предлагается пройти курс из 52 шагов, в каждом из которых описываются разные аспекты использования Git. Так, переходя от простого к сложному, можно влиться в число активных пользователей этой VCS.

Например я, недавно начал коммитить в репозиторий, конфигурационные файлы от своих серверов, таким образом я в курсе истории изменений, не надо чесать репу, что же там было раньше.
Всего голосов 80: ↑77 и ↓3 +74
Комментарии 39

Чек-лист вёрстки. Что можно отдавать клиенту, а что надо переделывать

Время на прочтение 20 мин
Количество просмотров 313K
Идеальная вёрсткаВы PM. Как узнать – готова ли вёрстка к реальному использованию?
Вы заказчик. Как убедиться, что работа выполнена качественно?
Как оценить качество вёрстки?

Когда я стал тим-лидом, а позже PM, передо мной стала задача проверять вёрстку наших проектов. Нужно было выработать формальные, легкопроверяемые критерии, соответствие кода которым, должно было давать некую гарантию, что не будет факапов и ни клиент, ни программеры не сказажут потом “WTF?”.

Клиенту неважно насколько красив ваш код, но ему важен результат. Качественный код нужен фирме, т.к. он надёжней и в будущем его будет легче поддерживать.

Требования должны были быть такие, что соблюсти их легче, создавая качественную вёрстку, а не говнокод. Я составлял такой чек-лист в течении полутора лет. За последние полгода в него не добавилось ничего. Значит самое главное учтено.

Итак что же это за список?

Краткая версия теперь доступна на html5checklist.com (github), где можно вносить pull-request'ы.

История обновлений:
  • 2015/08/11: Актуализировал рекомендации по оптимизации скорости загрузки. Добавил требование поддержки Retina. Дополнил «19. Мелочи» требованием что изображения должны масштабироваться в зависимости от размера окна.
  • 2015/08/10: актуализирован список исключений для CSSLint
  • 2015/07/29: актуализирован пункт №13 «плохо»/«хорошо»
  • 2015/04/08: добавлено требование использования препроцессоров и рекомендация использования систем сборки
  • 2013/04/25: добавлены анализаторами качества кода: CSSLint и JSHint, указан сайт подбора css font stack (спасибо @fliptheweb), мелкие уточнения (работу интерактивных элементов страницы, что не пропадает фон на высоких разрешениях, не должно быть пустых презентационных блоков, при проверках контента — пробовать удалять заголовки, менять местами блоки)
  • 2013/04/24: добавил пункт об минимизации каскада (БЭМ-техники, MCSS, SMACSS), необходимости вписывания в экран моб. устройства, заменил ссылку на проверочный текст отображения стандартного html на код с normalize.css, поправил пример где в рекомендации встречался длинный каскад, упомянул про Opera на Presto и новый уровень семантики — в именах классов BEM.
  • 2012/04/12: отсортировал пункты проверки в порядке важности, выделил главные, дополнил статью подробностями
  • 2011/12/07: дополнил согласно доклада на WSD Минск'2011.
  • 2011/07/19: добавлено про повышение надёжности вёрстки благодаря html5-тэгам, про необходимость favicon/apple-touch-icon, отсутствие багов при ресайзе textarea
  • 2011/06/15: добавил пояснения какие ошибки валидации допустимы, рассказал про отсутствие официальной кнопки «HTML5 Valid» и про официальное лого HTML5 на сайте.


Далее с примерами - как проверить html, даже если вы ничего не понимаете в вёрстке.
Всего голосов 335: ↑318 и ↓17 +301
Комментарии 244

Информация

В рейтинге
Не участвует
Дата рождения
Зарегистрирован
Активность

Специализация

Специалист
Lead
От 5 000 000 ₽