Как стать автором
Обновить
20
0
linux2000 @linux2000

Пользователь

Отправить сообщение

Domain Driven Design в Go – это почти не больно

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

Как выглядят паттерны DDD (Domain Driven Design) в большом проекте? А самое главное, стоит ли их вообще использовать? Рассмотрим, какими инструментами можно реализовать DDD на Go и оценим, насколько это больно.

Меня зовут Илья Сергунин, я backend-сочинитель в Авито: занимаюсь тем, что передаю смартфоны в хорошие руки. В этой статье попытаюсь объяснить, как можно натянуть DDD на Go без синтаксического сахара и магии Java-подобных языков, и без больших крутых ORM c Data mapper, которые также отсутствуют в Go.

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

Go — 100 вопросов/заданий с собеседований

Уровень сложностиСредний
Время на прочтение87 мин
Количество просмотров71K

Приветствую тебя, хаброжитель!

В этой статье разберём 100 вопросов, они покрывают львиную долю того, что могут спросить на собеседовании джуниор Go-разработчика с практически любой специализацией. Конечно же, в реальной работе на Go требуются немного другие скиллы, чем умение быстро ответить на любой вопрос. Однако сложилась добрая традиция делать из собеседования викторину с главным призом в виде трудоустройства — к этому нужно быть готовым.

Читать далее
Всего голосов 44: ↑35 и ↓9+33
Комментарии14

Как успешно пройти собеседование в сфере IT?

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров3.9K

О дефиците кадров в российском IT не говорит только ленивый. Некоторые пишут, что на рынке не хватает около 170 тысяч опытных специалистов, а другие и вовсе считают, что айтишников нужно ещё миллион.

Ситуация на рынке и правда сложная. Искать толковых специалистов уровня Middle и выше стало труднее. Но самим программистам от этого не легче. На одну хорошую вакансию дикая конкуренция: иногда больше 40 человек на место. Поэтому я решила поделиться опытом и рассказать, как проходит процесс подбора айтишников изнутри в моей компании — Ситидрайве, и как специалисту показать себя с наилучшей стороны на собеседовании. 

Читать далее
Всего голосов 9: ↑4 и ↓5+1
Комментарии10

Достаточно одной К155ЛА3

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров52K

Продолжая тему легендарных микросхем, нельзя обойти вниманием замечательнейшую микросхему 7400, также известную на постсоветском пространстве, как К155ЛА3.

Давным-давно, когда деревья были большими, а я ещё учился в старших классах, на меня снизошло откровение от старших товарищей, что практически любое цифровое устройство можно собрать только на микросхемах К155ЛА3. Утверждение может показаться спорным, но ничто не мешает нам его проверить.

И поможет нам в этой проверке другое откровение: «Инверсия конъюнкции есть дизъюнкция инверсий». Заодно и разберёмся, что есть «конъюнкция», что есть «дизъюнкция», и причём здесь «инверсия».
И это совсем несложно
Всего голосов 158: ↑153 и ↓5+191
Комментарии156

К вопросу о математических способностях студентов или как учить переполненный мозг

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

Я люблю давать простые задачки студентам на лекции. Во-первых, понятно, скольких мы потеряли, во-вторых, это переключение из режима потребления информации в режим выдачи результатов, в третьих — возможность проявить себя для шустрых. Сплошные плюсы!

Одна из простых задач звучит так: «При переводе картинки из цветового пространства RGB в YUV мы выполняем прореживание, то есть выкидываем каждый четный столбец и каждую четную строку в компонентах U и V (все компоненты пикселя по 1 байту). Вопрос: во сколько раз меньше данных у нас стало?» Эта операция называется chroma subsampling и широко используется при сжатии видео, например.

Забавно, что когда-то давно, когда винчестеры были меньше, а дискеты больше, студенты реально отвечали на этот вопрос быстро. А в последние годы регулярно народ в ступор впадает. Приходится разбирать по частям: «Если выкинуть каждую четную строку и каждый четный столбец, во сколько раз меньше данных будет у компоненты?» Почти хором: «В четыре». Начинаю подкалывать: «Отлично! У нас было 3 яблока, первое осталось как есть, а от второго и третьего осталось по четвертинке. Во сколько раз меньше яблок у нас стало?» Народ ржет, но, наконец-то, дает правильный ответ (заметим, не все). 

Это было бы смешно, если бы от способности быстро в уме прикинуть результат не зависела способность быстрее создавать сложные алгоритмы. 

И хорошо видно, как эта способность в широких массах студентов заметно плавно падает. Причем не только в нашей стране. Придуман даже специальный термин: «цифровое слабоумие» ("digital dementia") — снижение когнитивных способностей, достаточно серьезное, чтобы повлиять на повседневную деятельность человека. 

Кому интересно как теряют мозг студенты масштабы бедствия и что с этим делать — добро пожаловать под кат!

Читать далее
Всего голосов 330: ↑314 и ↓16+379
Комментарии795

Изучаем net/context в Go

Время на прочтение11 мин
Количество просмотров62K
Не секрет, что основная ниша использования Go это сетевые сервисы: всевозможные серверы, бекенды, микросервисы, распределенные базы данных и файловые хранилища. Такой класс программ очень активно использует сетевые запросы, весь необходимый функционал для которых есть в стандартной библиотеке, но один аспект разработки сетевых архитектур остается для многих темным пятном — контексты запросов. В этой статье я хочу рассмотреть этот аспект повнимательней и показать, какой это мощный и важный инструмент.


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

Код ревью с учётом человеческих слабостей

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

Проверка кода (code review) — отличный инструмент для повышения качества кода, но он не учитывает один факт: отправляют и просматривают код люди, а они устают, теряют сосредоточенность, ленятся, да и просто испытывают эмоции в самые неожиданные моменты.

Поэтому хочу представить свое видение хороших и плохих практик код ревью с учётом человеческих особенностей.

Читать далее
Всего голосов 24: ↑22 и ↓2+23
Комментарии7

Чем занимается технический лидер?

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

Tech Lead (Техлид) — это относительно новая роль в иерархии организаций, занимающихся разработкой программного обеспечения. Когда я впервые услышал об ней, моей первой мыслью было следующее:

Это что, архитектор программного обеспечения + руководитель команды?

Я не думаю, что такое определение правильное, но это неплохой способ поразмышлять над этим. В этом посте я проанализировал 3,5 года своего опыта работы в этой должности.

Читать далее
Всего голосов 7: ↑5 и ↓2+4
Комментарии4

Настройка инструментов стандартной библиотеки Golang для production

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

Привет, Хабр, меня зовут Богданов Илья, я работаю ведущим инженером в команде веб-разработки. Сегодня я вам расскажу, как настроить стандартную библиотеку Golang так, чтобы избежать неожиданных ошибок в production.

Моя статья ориентирована в основном на начинающих разработчиков, но ветераны Go тоже, вероятно, смогут узнать что-то новое. Коротко о чем будет статья:

о том, как не ловить ошибки соединения с базой данных на production;
http.Client и что не так с клиентом по умолчанию;
http.Server и его подводные камни;
и, наконец, рассмотрим пару занятных проблем, не связанных напрямую с настройкой стандартной библиотеки.

Читать далее
Всего голосов 9: ↑8 и ↓1+7
Комментарии2

Dependency Injection в мире Software Engineering

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

Вокруг Dependency Injection много инженерных практик. Несмотря на то, что эта статья про конкретный подход к написанию кода, она будет интересна широкому кругу разработчиков. Я постарался провести глубокий анализ существующих около Dependency Injection принципов разработки и хочу поделиться исследованием с сообществом.

Читать далее
Всего голосов 24: ↑23 и ↓1+27
Комментарии9

Заповеди тимлида Авито

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

Мы уже публиковали свои внутренние документы с ожиданиями от инженеров и менеджеров продукта в плейбуке на Гитхабе. Пришло время поделиться ещё одним — кодексом тимлида.


Читать дальше →
Всего голосов 62: ↑61 и ↓1+78
Комментарии33

Собеседование в Яндекс: театр абсурда :/

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

Привет, Хабр!

В прошлой статье меня знатно разбомбили в комментариях, где-то за дело, где-то я считаю, что нет. Так или иначе, я выжил, и у меня есть чем с вами поделиться >:)

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

Как вы думаете, что делают рекрутеры, когда видят "Alexandr, NOT OPEN FOR WORK"? Правильно, пишут "Алексей, рассматриваете вариант работать в X?" Я обычно игнорирую это, но тут мне предложили попытать счастья с Яндекс.Лавкой, и я не смог пройти мимо - интересно было, смогу ли я устроиться куда-нибудь, когда введут великий российский файерволл. К тому же за последние 3 года я проходил только два интервью, и мне показалось, что я не в теме, что нынче требуется индустрии. Блин, я оказался и вправду не в теме. И вы, скорей всего, тоже - об этом и статья.

Читать далее
Всего голосов 531: ↑504 и ↓27+610
Комментарии1270

Создание Dashboard в Kibana для мониторинга логов

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


Привет, меня зовут Евгений, я тимлид B2B-направления в Ситимобил. Одной из задач нашей команды является поддержка интеграций по заказу такси от партнеров, и для обеспечения стабильного сервиса мы всегда должны понимать, что происходит в наших микросервисах. И для этого надо постоянно следить за логами.

В Ситимобил для работы с логами мы используем ELK-стек (ElasticSearch, Logstash, Kibana), и объём приходящих туда данных огромен. Найти в этой массе запросов проблемы, которые могут появиться после деплоя нового кода, довольно сложно. И для их наглядного выявления в Kibana есть раздел Dashboard.

На Хабре есть довольно много статей с примерами, как настроить ELK-стек для получения и хранения данных, но о создании Dashboard актуальных материалов нет. Поэтому я хочу показать, как в Kibana создавать визуальное представление данных на основе приходящих логов.

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

Как банки берут друг у друга в долг. Плавающие ставки, процентные свопы. Ликбез для гика, ч. 4

Время на прочтение9 мин
Количество просмотров20K
Привет! Меня зовут Дмитрий Янтер. Сегодня вы узнаете о том, что такое плавающие процентные ставки, что такое процентные свопы и какое они имеют отношение к ванили.


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

Wrike: 5 лет с OKR

Время на прочтение5 мин
Количество просмотров4.6K
Тема OKR (Objectives and Key Results) сейчас становится все более популярной в бизнесе. Во многих компаниях рассматривают возможность внедрить у себя эту методологию. Мы в Wrike перешли на OKR в 2015 году, и на тот момент это была достаточно новая и малоизученная тема, по крайней мере в нашей стране. Теперь по прошествии нескольких лет кажется полезным рассказать о нашем опыте работы с OKR. И о наших ошибках, которых можно было бы избежать. Оценить общий результат, который мы получили от внедрения OKR в компании. Возможно, наш опыт окажется полезным для тех, кто задумывается о том, стоит ли переходить на OKR.


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

Эффективная система аттестаций, которая позволит стать лучшим руководителем

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


В прошлом, когда я был молодым менеджером продукта, один из моих руководителей в корне изменил мою карьеру. Шел второй год моей работы в Airbnb. Я справлялся со своими обязанностями, но не более. Мой новый руководитель Влад Локтев обратил внимание, что завершение проекта, который я вел, откладывалось на недели. Он не был удивлен, помог вернуть проект в нужное русло и завершить его. Но я знал, что на очередной аттестации мне припомнят эту ошибку. Когда пришло время, я действительно получил далеко не блестящие оценки. Влад обозначил мои точки роста, в том числе рекомендовал сфокусироваться на коммуникациях, направленных на контроль статусов задач, и их жесткой приоритизации. После этого разговора я мог бы выйти подавленным. Но вместо этого, наоборот, я почувствовал небывалый эмоциональный подъем и желание действовать – мне стало ясно, что нужно делать.
Читать дальше →
Всего голосов 10: ↑8 и ↓2+10
Комментарии4

Линтеры в Go. Как их готовить. Денис Исаев

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

Предлагаю ознакомиться с расшифровкой доклада Дениса Исаева jirfag "Линтеры в Go. Как их готовить."


В go 50+ линтеров: в чем их профит и как эффективно встроить их в процесс разработки? Доклад будет полезен как тем, кто еще не использует линтеры, так и тем, кто уже применяет их: я раскрою малоизвестные трюки и практики работы с линтерами.



Кому интересно, прошу под кат.

Всего голосов 19: ↑18 и ↓1+17
Комментарии4

Руководство по Git. Часть №2: золотое правило и другие основы rebase

Время на прочтение6 мин
Количество просмотров28K
Посмотрим, что происходит, когда вы выполняете git rebase и почему нужно быть внимательным. 

Это вторая и третья части гайда по Git из блога Pierre de Wulf в переводе команды Mail.ru Cloud Solutions. Первую часть можно почитать тут.
Читать дальше →
Всего голосов 48: ↑48 и ↓0+48
Комментарии26

Полный набор gRPC, RESTful JSON API, WS и Swagger из одного proto файла. От введения до нюансов и тонкостей grpc-gateway

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

В этой статье я опишу процесс создания сервера с gRPC и RESTful JSON API одновременно и Swagger документацию к нему.


Эта статья — продолжение разбора различных способов реализаций API-сервера на Golang с автогенерацией кода и документации. Там я обещал более подробно остановиться на этом подходе.


grpc-gateway — это плагин protoc. Он читает определение сервиса gRPC и генерирует обратный прокси-сервер, который переводит RESTful JSON API в gRPC. Этот сервер создается в соответствии с пользовательскими параметрами в вашем определении gRPC.


Это выглядит вот так:


Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии16

Подходы к проектированию RESTful API

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

Автор: Вячеслав Михайлов, Solutions Architect.

В этой статье я поделюсь опытом проектирования RESTful API — на конкретных примерах покажу, как делать хотя бы простые сервисы красиво. Также мы поговорим, что такое API и зачем он нужен, поговорим об основах REST — обсудим, на чем его можно реализовывать; коснемся основных веб-практик, которые зависят и не зависят от этой технологии. Также узнаем, как составлять хорошую документацию, затрачивая на это минимум усилий, и посмотрим, какие существуют способы нумерации версий для RESTful API.

Часть 1. Теория


Итак, как мы все знаем, API — application programming interface (интерфейс программирования приложений), набор правил и механизмов, с помощью которых одно приложение или компонент взаимодействует с другими

Почему хороший API — это важно?

  • Простота использования и поддержки. Хороший API просто использовать и поддерживать.
  • Хорошая конверсия в среде разработчиков. Если всем нравится ваш API, к вам приходят новые клиенты и пользователи.
  • Выше популярность вашего сервиса. Чем больше пользователей API, тем выше популярность вашего сервиса.
  • Лучше изоляция компонентов. Чем лучше структура API, тем лучше изоляция компонентов.
  • Хорошее впечатление о продукте. API — это как бы UI разработчиков; это то, на что разработчики обращают внимание в первую очередь при встрече с продуктом. Если API кривой, вы как технический эксперт не будете рекомендовать компаниям использовать такой продукт, приобретая что-то стороннее.


Теперь посмотрим, какие бывают виды API.

Виды API по способу реализации:
  • Web service APIs
    • XML-RPC and JSON-RPC
    • SOAP
    • REST

  • WebSockets APIs
  • Library-based APIs
    • Java Script

  • Class-based APIs
    • C# API
    • Java



Виды API по категориям применения:

  • OS function and routines
    • Access to file system
    • Access to user interface

  • Object remoting APIs
    • CORBA
    • .Net remoting

  • Hardware APIs
    • Video acceleration (OpenCL…)
    • Hard disk drives
    • PCI bus



Читать дальше →
Всего голосов 26: ↑24 и ↓2+22
Комментарии37

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность