Как стать автором
Обновить
4
0
Вячеслав @Slaffko

Principal Software Engineer

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

Предварительные секции: что спрашивают у разработчиков С++ на собеседовании в Яндексе

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

Хабр, привет! Меня зовут Владимир Михайлов, я занимаюсь бэкендом в Яндекс Такси — мы создаём внутренние продукты, которые используют в разных юнитах Яндекса. Также я работаю наставником на курсах «Разработчик C++» и «C++ для бэкенда» в Яндекс Практикуме. 

А ещё я помогаю компании с наймом и провожу предварительные секции с кандидатами — разработчиками C++. Я расскажу, какие задачи даю на этих секциях, на что обращаю внимание и как подготовиться к подобному собеседованию.

Читать далее
Всего голосов 22: ↑13 и ↓9+7
Комментарии51

GigaChat + RAG: как гига нам инструкции для разметки пишет в 3 раза быстрее

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

Почти за всем хорошим ML стоят хорошие данные. И так получилось, что таких данных часто нет и их приходится добывать, а даже добыв, из них нужно сделать что-то подходящее, и (если сильно огрубить) такой процесс называется разметкой.

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

Одна из наших важнейших метрик, помимо качества результата, это позаимствованный у бизнеса термин ttm (time to market), что в нашем случае — время от момента прихода клиента с идеей по момент продуманного запуска его задачи в разметку.

В этой статье — пошагово о том, как мы не только ускорили написание инструкций, но и даже попутно повысили их качество. Идея — гениально проста, рецепт — повторяем, эффект — огонь.

Расчехляйте вашу LLM, закатайте рукава, тут есть много работки!

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

Интерфейсы в Go — как красиво выстрелить себе в ногу

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

Вы когда-нибудь задумывались, что такое interface? Ну, то есть, не ключевое слово синтаксиса, а что это такое в рантайме? Как выглядит его проинстанцированный объект? А, главное, каким свойством обладает при сравнении с nil? Нет? Тогда устраивайтесь поудобнее, я сейчас вам всё расскажу.

Go →
Всего голосов 18: ↑17 и ↓1+16
Комментарии5

Идеальный Мини-Хакинтош

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

Когда в 2005 году Apple перешла на платформу Intel, энтузиасты со всего мира задались целью установить MAC OS X на обычные PC (Хакинтош). На пути реализации этой затеи стояли четыре причины. 2 физические и 2 юридические. Дело в том, что для запуска компьютера MAC используется не привычный BIOS, а собственный EFI загрузчик. Вторая причина, это чип SMC который установлен в каждом компьютере Mac. Он генерирует ключи для запуска всех системных приложений MAC OS X. Благодаря нашему соотечественнику под ником Netkas, удалось обойти эти два ограничения созданием эмулятора загрузчика EFI (Chameleon, Chemera, Clover) и эмулятора чипа SMC (FakeSMC.kext). Этих двух программных решений достаточно, что бы установить MAC OS на PC.
Читать дальше →
Всего голосов 63: ↑48 и ↓15+33
Комментарии125

Пишем сериализатор для сетевой игры на C++11

Время на прочтение18 мин
Количество просмотров25K
Написать этот пост меня вдохновила замечательная статья в блоге Gaffer on Games «Reading and Writing Packets» и неуёмная тяга автоматизировать всё и вся (особенно написание кода на C++!).

Начнём с постановки задачи. Мы пишем сетевую игру (и сразу MMORPG, конечно же!), и независимо от архитектуры у нас возникает необходимость постоянно посылать и получать данные по сети. У нас, скорее всего, возникнет необходимость посылать несколько разных типов пакетов (действия игроков, обновления игрового мира, просто-напросто аутентификация, в конце концов!), и для каждого у нас должна быть функция чтения и функция записи. Казалось бы, не вопрос сесть и написать спокойно эти две функции и не нервничать, однако у нас сразу же возникает ряд проблем.

  • Выбор формата. Если бы мы писали простенькую игру на JavaScript, нас бы устроил JSON или любой его самописный родственник. Но мы пишем серьёзную многопользовательскую игру, требовательную к трафику; мы не можем позволить себе отправлять ~16 байт на float вместо четырёх. Значит, нам нужен «сырой» двоичный формат. Однако, двоичные данные усложняют отладку; было бы здорово, если бы мы могли менять формат в любой момент, не переписывая целиком все наши функции чтения/записи.
  • Проблемы безопасности. Первое правило сетевой игры: не доверяй данным, присланным клиентом! Функция чтения должна уметь оборваться в любой момент и вернуть false, если что-то пошло не так. При этом использовать исключения считается неважной идеей, поскольку они слишком медленные. Мамкин хакер пусть и не сломает ваш сервер, но вполне может ощутимо замедлить его беспрерывными эксепшнами. Но вручную писать код, состоящий из if'ов и return'ов, неприятно и неэстетично.
  • Повторяющийся код. Функции чтения и записи похожи, да не совсем. Необходимость изменить структуру пакета приводит к необходимости поменять две функции, что рано или поздно приведёт к тому, что вы забудете поменять одну из них или поменяете их по-разному, что приведёт к трудно отлавливаемым багам. Как справедливо замечает Gaffer on Games, it is really bloody annoying to maintain separate read and write functions.

Всех интересующихся тем, как Бендер выполнил своё обещание и при этом решил обозначенные проблемы, прошу под кат.
Читать дальше →
Всего голосов 36: ↑36 и ↓0+36
Комментарии33

Защита устройств от неправильной подачи полярности питания

Время на прочтение3 мин
Количество просмотров215K
image
При проектировании промышленных приборов, к которым предъявляются повышенные требования по надёжности, я не раз сталкивался с проблемой защиты устройства от неправильной полярности подключения питания. Даже опытные монтажники порой умудряются перепутать плюс с минусом. Наверно ещё более остро подобные проблемы стоят в ходе экспериментов начинающих электронщиков. В данной статье рассмотрим простейшие решения проблемы — как традиционные так и редко применяемые на практике методы защиты.
Читать дальше →
Всего голосов 41: ↑41 и ↓0+41
Комментарии71

Автоматизация торговли акциями на ММВБ на примере терминала от Альфа Банка

Время на прочтение8 мин
Количество просмотров33K
В свободное от работы время занимаюсь созданием торговых роботов. Тема финансовых рынков и автоматизации торгов меня интересует давно, и сегодня я рад поделиться примером создания простого робота на примере известного биржевого терминала от Альфа Банка.

Предыстория


Многие банки (и другие компании) сейчас предоставляют брокерские услуги, это означает, что заключив дополнительный договор с банком (кроме основного), клиент может инвестировать свои сбережения в различные финансовые инструменты. Довольно давно появились торговые терминалы — программы, через которые клиент банка, пройдя авторизацию, может выставлять заявки, покупать и продавать. Например, акции, фьючерсы, опционы.

Так как рынок находится в постоянном движении, цены меняются. Продав или купив инструмент в нужный момент, можно заработать на разнице курсов. Для того, чтобы человеку не приходилось постоянно находиться у компьютера и следить за ходом торгов, разрабатываются программы-роботы, которые работают по заданному алгоритму — выставляют заявки на покупку и продажу, следят за балансом на счетах и оценивают ситуацию на рынке. Такие роботы настраиваются изначально и затем лишь изредка корректируются человеком, в идеальном случае, конечно. На деле все намного сложнее.
Читать дальше →
Всего голосов 16: ↑13 и ↓3+10
Комментарии27

Почему свет движется со скоростью света?

Время на прочтение5 мин
Количество просмотров85K
(Прим. пер. ― см. прим. пер. в конце поста)

Почему свет движется со скоростью света? Почему он просто не стоит на месте? Что приводит его в движение (тем более, такое быстрое)?

image

Всё и везде, просто по факту своего существования, «движется» со скоростью света (которая на самом деле не имеет ничего общего со светом). Да, это касается и вас тоже. Вот прямо сейчас.

Люди в основном воспринимают «вселенную» как «пространство», нечто отдельное от «времени», и честно говоря, они неправы. Пространство и время — не отдельные штуковины. Вселенная сделана из «пространствовремени», прямо так, без пробела. Вы, наверное привыкли к тому, что «год» — это единица времени, а «световой год» — единица расстояния, то есть это разные вещи; но с точки зрения физика это ровным счетом одно и то же (ну, конечно, смотря каким видом физики вы занимаетесь).

В нашей будничной жизни мы исходим из того, что движение — это некое расстояние (пространство), преодоленное за некое время. Однако, если мы решили, что это одно и то же, наше определение движение внезапно становится полной ерундой. «Я прохожу километр за каждый километр, который я прохожу» — кошмар какой-то!

Читать дальше →
Всего голосов 217: ↑199 и ↓18+181
Комментарии303

Структура белка: введение для айтишников

Время на прочтение17 мин
Количество просмотров155K
Приятно видеть, что хабравчане регулярно интересуется другими предметными областями – например, биологией (более конкретно – структурой и функцией биологических макромолекул). Однако некоторые посты (например, этот), вызывают у специалиста просто физическую боль из-за обилия совершенно диких фактологических ошибок. В этом посте мне хочется рассказать о структуре и функции белка. О том, что мы знаем и о том, чего не знаем, а так же об имеющихся в этой области вычислительных задачах, требующих решения и интересных IT-специалистам. Постараюсь рассказывать сжато и тезисно, чтобы информации было больше, а воды – меньше. Всех, интересующихся структурой белков, прошу под кат, там очень много букв.
Читать дальше →
Всего голосов 146: ↑145 и ↓1+144
Комментарии72

Голографическое изображение погибшего рэпера Тупака Шакура, «выступало» на фестивале Coachella-2012

Время на прочтение1 мин
Количество просмотров27K
Если не знать что это голограмма можно подумать что Тупака действительно оживили. Обязательно досмотрите до конца оценив финальную вспышку и распыление главного героя в воздухе.



Читать дальше →
Всего голосов 82: ↑57 и ↓25+32
Комментарии129

Курьерские службы с кассовым обслуживанием

Время на прочтение3 мин
Количество просмотров20K
Приветствую.

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

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

В этой статье мы рассмотрим плюсы и минусы курьерских служб, а также пробежимся по их тарифам и условиям работы.

И что же в итоге мы видим...
Всего голосов 40: ↑39 и ↓1+38
Комментарии65

Где брать электронные компоненты

Время на прочтение2 мин
Количество просмотров1.8K
Данный пост не является рекламным, я ни каким боком не отношусь к компании Farnell.
Хотелось бы поделиться с Хабрсообществом очень хорошим поставщиком электронных компонентов.
Читать дальше →
Всего голосов 61: ↑53 и ↓8+45
Комментарии54

Занимательная наука

Время на прочтение1 мин
Количество просмотров2.7K
Наткнулся недавно на интереснейший канал Стива Спанглера на YouTube про занимательные научные эксперименты. Ролики короткие, зрелищные и местами довольно смешные — вот и решил поделиться с хабрасообществом, на мой взгляд, лучшими из тех нескольких десятков, которые успел просмотреть.




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

Делаем веб-клиент GMail удобным

Время на прочтение3 мин
Количество просмотров52K
Если очень постараться, веб-клиент GMail-а можно довести до состояния, когда им более-менее приятно пользоваться. Вот как он выглядит у меня сейчас:



Под катом рассказ о том, какие особенности и как я использую.
Читать дальше →
Всего голосов 102: ↑86 и ↓16+70
Комментарии110

Основы программирования под Android на примере игры Судоку

Время на прочтение6 мин
Количество просмотров375K
В статье описаны основные трудности создания приложений под Android.
Рассматриваются базовые понятия программирования Android.
Для примера описано создание игры Sudoku из книги Hello, Android – Ed Burnette.
Осторожно много скриншотов.

Читать дальше →
Всего голосов 137: ↑131 и ↓6+125
Комментарии48

Хороший менеджер – ленивый менеджер

Время на прочтение3 мин
Количество просмотров110K
Случалось ли вам наблюдать, как руководитель проекта с самого его начала постоянно занимается пожаротушением, полностью погружен в борьбу с неотложными проблемами, темп поступления которых превышает скорость их решения. Все задачи, которые получает команда проекта, имеют наивысший приоритет и срочность: «Это надо было сделать еще вчера!» Трудовой героизм. Постоянные сверхурочные. Субботники. Авралы. Обучение, анализ, планирование, проектирование, тестирование, рефакторинг – «это все потом!».

Знакомо?

«Хорошо управляемое предприятие — это спокойное место. Зато «фабрика, отличающаяся «кипучей» деятельностью и «трудовым героизмом» работников, который бросается в глаза любому посетителю, является на самом деле плохо управляемой», писал управленческий авторитет Питер Фердинанд Друкер.

Проблема большинства проектов разработки ПО заключается не в том, что люди мало трудятся, а в том, что они делают не ту работу, которую нужно делать. Хороший менеджер должен руководствоваться фундаментальным принципом наименьшего действия и, следовательно, быть ленивым. И у него все получится. Почему?
Читать дальше →
Всего голосов 90: ↑82 и ↓8+74
Комментарии35

Из аналога в цифру, или IP-камера своими руками

Время на прочтение3 мин
Количество просмотров164K
Начну историю с того, что была у меня аналоговая купольная камера из поднебесной. Она была куплена по распродаже, стоила в районе 20 баксов, поработала пару недель и тихо скончалась. Нет, она не умерла совсем, а только видео с нее стало очень темным и непригодным для записи. Поэтому камера была заброшена в дальний угол до лучших времен.

Недавно, блуждая по всем известному сайту Aliexpress, наткнулся на модуль для IP-камеры, который предлагался как набор «сделай сам», в магазине продавца были еще разные запчасти для камер. По размеру модуль подходил на место аналогового (38х38), было решено заказать его и попробовать собрать IP-камеру из вышедшей из строя аналоговой. Модуль обошелся в смешные 11 долларов, доехал до меня очень быстро, за пару недель.
Что было дальше
Всего голосов 36: ↑34 и ↓2+32
Комментарии13

Popcorn Time: самая удобная программа для просмотра торрентов

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


«Popcorn Time настолько хорош в пиратстве фильмов, что это пугает», — пишет журнал Time о новой open source программе Popcorn Time, бета-версия которой вышла несколько дней назад сразу для Linux, Windows 7+ и OS X 10.7+.
Читать дальше →
Всего голосов 160: ↑148 и ↓12+136
Комментарии189

Контроллер умного дома (с Ethernet, WiFi, USB, блэкджеком и плюшками) за $20?

Время на прочтение7 мин
Количество просмотров217K
Некоторое время назад к нам обратился один потенциальный заказчик со своей идеей проекта «умного дома». Мы заказчикам всегда рады, особенно если у них есть более-менее внятная идея и достаточно денег для ее воплощения (сразу скажу — этот заказчик пока что является идеалом сферического заказчика в вакууме, повезло нам с ним). Так что после пары встреч родилось общее описание проекта, и мы приступили к поиску вариантов технической реализации. Нужен был недорогой контроллер с поддержкой WiFi и USB, небольшим энергопотреблением и, главное, с достаточно открытой архитектурой, чтобы мы могли сделать на его базе собственное кастомизированное решение.

И тут очень удачно попалась нам на глаза статья. Ух ты, какие штуки бывают, оказывается! У меня самого в качестве передвижной точки доступа для поездок по Китаю (где до сих пор RJ-45 розетка в номере при отсутствии WiFi — довольно частое явление) давно уже используется мини-роутер TP-LINK TL-WR702N, купленный рублей за 700, но тот факт, что внутри живет вполне приличный одноплатный компьютер с кучей дополнительных возможностей, стал для меня приятным сюрпризом. А поскольку мы по своему основному бизнесу плотно завязаны с Китаем (и китайскими производителями электроники в частности), стало нам интересно — во сколько же нам обойдется собственная плата на базе SoC AR9331, если целое законченное решение в корпусе, в коробке, с проводами и блоком питания, стоит в России 700р (на то время — $22) в рознице?

image
И мы приступили к исследованиям...
Всего голосов 53: ↑53 и ↓0+53
Комментарии146

Создаем клон игры Flappy Bird, используя движок физики iOS7

Время на прочтение2 мин
Количество просмотров53K
#FlappyBird — И этим все сказано!



Эта игрушка невероятно проста, но в тоже время содержит добротную смесь развлечения и негодования присущее играм 90-х, таким как Double Dragon 3, и Teenage Mutant Ninja Turtles. После того как Dong Nguyen объявил о том, что собирается убрать игру из app store, мне стало интересно насколько сложно воссоздать физику и взаимодействие с помощью нового физического движка iOS7. Я написал эту статью потому, что многие разработчики даже не знают, что IOS 7 имеет встроенный физический движок — UIKit Dynamics.
Читать дальше →
Всего голосов 85: ↑70 и ↓15+55
Комментарии24

Информация

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