Pull to refresh
1
0
Oleg Romanenko @Slader

Архитектор/Разработчик highload сервисов

Send message

Самые позорные ошибки в моей карьере программиста (на текущий момент)

Reading time8 min
Views125K

Как говорится, если тебе не стыдно за свой старый код, значит, ты не растешь как программист — и я согласна с таким мнением. Я начала программировать для развлечения более 40 лет назад, а 30 лет назад и профессионально, так что ошибок у меня набралось очень много. Будучи профессором информатики, я учу своих студентов извлекать уроки из ошибок — своих, моих, чужих. Думаю, пришло время рассказать о моих ошибках, чтобы не растерять скромность. Надеюсь, кому-то они окажутся полезны.
Читать дальше →

Сказ об опасном std::enable_shared_from_this, или антипаттерн «Зомби»

Reading time26 min
Views30K
В статье приводится опасный антипаттерн «Зомби», в некоторых ситуациях естественным образом возникающий при использовании std::enable_shared_from_this. Материал — где-то на стыке техники современного C++ и архитектуры.
Читать дальше →

Наша космическая промышленность.… А если взглянуть на проблемы отрасли с позиции гика?

Reading time15 min
Views29K
Описывать в общем механику проблем в нашей космической отрасли достаточно сложно, запутанно, и для весьма для многих еще и крайне непонятно. Обычный поток информации на тему космоса – это перечень событий, от которого в голове остается только некоторое «сальдо-бульдо» чужих и наших успехов и провалов.

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

Кому это интересно, прошу под кат (много букв и никаких картинок).
Читать дальше →

Можно ли заработать больше, работая инженером, в другой стране?

Reading time6 min
Views44K

Содержание:


Как можно сейчас сравнивать страны по стоимости жизни?
Про паритет покупательной способности
Почему BIM (инженеры и координаторы)
Вывод 1. Разное брутто — равное нетто
Вывод 2. Чем меньше брутто, тем больше m²
Откуда брались данные
Методология расчета показателей ППС

Довольно часто в разговоре с людьми из других стран мы начинаем сравнивать уровни заработной платы. Хотя валовой доход может существенно отличаться, покупательная способность, скорее всего, останется примерно на одном уровне, что особенно очевидно на рынке недвижимости.
Действительно ли трава «зеленее» — на той, другой стороне?
Читать дальше →

Польза строгой типизации в C++: практический опыт

Reading time7 min
Views21K
Наша программа обрабатывает сетевые пакеты, в частности, заголовки TCP/IP/etc. В них числовые значения — смещения, счетчики, адреса — представлены в сетевом порядке байтов (big-endian); мы же работаем на x86 (little-endian). В стандартных структурах, описывающих заголовки, эти поля представлены простыми целочисленными типами (uint32_t, uint16_t). После нескольких багов из-за того, что порядок байтов забыли преобразовать, мы решили заменить типы полей на классы, запрещающие неявные преобразования и нетипичные операции. Под катом — утилитарный код и конкретные примеры ошибок, которые выявила строгая типизация.
Читать дальше →

Опыт создания сборок Linux под одноплатники с поддержкой обновлений

Reading time9 min
Views30K
image

Введение


На данный момент, на рынке представлен большой ассортимент одноплатников на любой вкус по приемлемой цене.

Как правило, различные сборки от производителей, предназначены для оценки платформы и являются отправной точкой нового проекта, поэтому не всегда подходят под конкретные задачи. В задачах где требуется высокая надежность, перед разработчиком встает вопрос, как доработать дистрибутив и потом не поплатиться за это полной переработкой образа и системы обновления.
Читать дальше →

Шпаргалка по аббревиатурам C++ и не только. Часть 1: C++

Reading time20 min
Views60K
Когда-то я собеседовался на должность C++ разработчика в одну приличную и даже известную контору. Опыт у меня тогда уже кое-какой был, я даже назывался ведущим разработчиком у тогдашнего своего работодателя. Но на вопросы о том, знаком ли я такими вещами, как DRY, KISS, YAGNI, NIH, раз за разом мне приходилось отвечать «Нет».

Собеседование я с треском провалил, конечно. Но упомянутые аббревиатуры потом загуглил и запомнил. По мере чтения тематических статей и книг, подготовок к собеседованиям и просто общения с коллегами я узнавал больше новых вещей, забывал их, снова гуглил и разбирался. Пару месяцев назад кто-то из коллег небрежно упомянул в рабочем чате IIFE в контексте C++. Я, как тот дед в анекдоте, чуть с печки не свалился и опять полез в гугл.


Читать дальше →

Russian Railway Simulator (RRS): первый публичный релиз

Reading time5 min
Views96K
Наступил тот долгожданный мной день, когда я наконец могу представить эту разработку. Проект был начат ровно год назад, 1 сентября 2018 года, по крайней мере в репозитории RRS на Gtihub первый коммит имеет именно такую дату.

Пассажирский поезд на станции Ростов Главный (кликабельно)



Что такое RRS? Это открытый кроссплатформенный симулятор подвижного состава колеи 1520 мм. Читатель закономерно задаст вопрос: «Позвольте, а для чего нужен этот проект, если симуляторов железнодорожной тематики, как коммерческих, так и открытых, достаточное количество?» За ответом на этот вопрос я и предлагаю заглянуть под кат

Sampler. Консольная утилита для визуализации результата любых shell команд

Reading time5 min
Views87K

В общем случае с помощью shell команды можно получить любую метрику, без написания кода и интеграций. А значит в консоли должен быть простой и удобный инструмент для визуализации.


Sampler


Наблюдение за изменением состояния в базе данных, мониторинг размера очередей, телеметрия с удаленных серверов, запуск деплой скриптов и получение нотификации по завершению — конфигурируется за минуту простым YAML файлом.


Код доступен на гитхабе. Инструкции по установке — для Linux, macOS и (экспериментально) Windows.

Читать дальше →

C++20 укомплектован, C++23 начат. Итоги встречи в Кёльне

Reading time7 min
Views34K
На днях прошла встреча международного комитета по стандартизации C++ в Кёльне. В прошлый раз был принят feature freeze на C++20, так что комитет должен был обсуждать только исправления уже принятых вещей, а добавлять новинки уже в C++23…

… но всё было не так!



Что сделали с std::flat_map; останутся ли страшные ключевые слова co_return, co_await и co_yield; успели ли доделать std::format; в каком виде будут контракты в C++20? Всё это вас ждёт под катом.
Читать дальше →

Введение в разработку CatBoost. Доклад Яндекса

Reading time10 min
Views18K
Меня зовут Стас Кириллов, я ведущий разработчик в группе ML-платформ в Яндексе. Мы занимаемся разработкой инструментов машинного обучения, поддержкой и развитием инфраструктуры для них. Ниже — мой недавний доклад о том, как устроена библиотека CatBoost. В докладе я рассказал о входных точках и особенностях кода для тех, кто хочет его понять или стать нашим контрибьютором.


— CatBoost у нас живет на GitHub под лицензией Apache 2.0, то есть открыт и бесплатен для всех. Проект активно развивается, сейчас у нашего репозитория больше четырех тысяч звездочек. CatBoost написан на C++, это библиотека для градиентного бустинга на деревьях решений. В ней поддержано несколько видов деревьев, в том числе так называемые «симметричные» деревья, которые используются в библиотеке по умолчанию.

Заслужили бессмертие: игры, которые не дали по себе скучать

Reading time9 min
Views33K
Иногда сядешь за рабочий стол, посмотришь на навороченный ноутбук и думаешь: эх, мне бы его, да 20 лет назад, чтобы за три ночи — и все уровни! И действительно, никак не получается вернуться в прошлое, в котором остались любимые игры и герои, простая графика, увлекательный сюжет. Но, как известно, настоящее искусство не умирает и мы имеем не просто эмуляторы, а самые настоящие релизы тех самых игр, которые прошли вместе с нами сквозь юность и молодость. И, чёрт возьми, как же приятна эта ностальгия, как знакомы герои, как близки места и события. Никогда ещё прошлое не было таким близким — на мгновение мы ощутили: машина времени существует. Поехали?


Найди их всех! Кликнуть для увеличения
Читать дальше →

Эффективная генерация числа в заданном интервале

Reading time16 min
Views36K
image

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

Представьте такую ситуацию:

В качестве домашнего задания Хуан и Саша реализуют одинаковый рандомизированный алгоритм на C++, который будет выполняться на одном университетском компьютере и с одним набором данных. Их код почти идентичен и отличается только в генерации случайных чисел. Хуан торопится на свои занятия по музыке, поэтому просто выбрал вихрь Мерсенна. Саша, с другой стороны, потратил несколько лишних часов на исследования. Саша провёл бенчмарки нескольких самых быстрых ГПСЧ, о которых недавно узнал из соцсетей, и выбрал наиболее быстрый. При встрече Саше не терпелось похвастаться, и он спросил Хуана: «Какой ГПСЧ ты использовал?»

«Лично я просто взял вихрь Мерсенна — он встроен в язык и вроде неплохо работает».

«Ха!», — ответил Саша. «Я использовал jsf32. Он намного быстрее, чем старый и медленный вихрь Мерсенна! Моя программа выполняется за 3 минуты 15 секунд!».

«Хм, неплохо, а моя справляется меньше, чем за минуту», — говорит Хуан и пожимает плечами. «Ну ладно, мне пора на концерт. Пойдёшь со мной?»

«Нет», — отвечает Саша. «Мне… эээ… нужно снова взглянуть на свой код».

Эта неловкая вымышленная ситуация не особо и вымышлена; она основана на реальных результатах. Если ваш рандомизированный алгоритм выполняется не так быстро, как хотелось бы, и узким местом похоже является генерация случайных чисел, то, как это ни странно, проблема может быть и не в генераторе случайных чисел!
Читать дальше →

HBO, cпасибо что напомнил… «Чернобыльская аптечка» беларуского фармацевта

Reading time20 min
Views126K
Что бы ни сказали — не станем спорить
Что бы ни дарили — не станем верить

Егор Летов «Как листовка»

Думаю не стоит лишний раз говорить о нашумевшем сериале Чернобыль и эффективности такого «сериального» воздействия на массы. Особенно на массы, проживающие на территориях, показанных в фильме. Выход каждой новой серии сопровождается всплеском публикаций в FB. В каждой из которых горечь, страх, боль. Что в такой ситуации я могу сделать ("кто виноват и что делать?")? Могу только описать свой взгляд на терапию лучевых поражений. Спасибо родненькой кафедре химии высоких энергий и проф. Шадыро О.И., которые пестовали в своих лабораториях нас, непутевых фармацевтов-радиохимиков. Надеюсь своей статьей честь этой, легендарной некогда, кафедры я не опорочу.

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

В общем, спасибо, сценаристы HBO, за то, что всколыхнули Память. Мой посильный вклад — под катом. Рейтинг доступных (и не очень) антидотов, способных сработать при радиационном выбросе. В закладки — класть строго ВСЕМ! И прочитал сам — перекинь другу.

Читать дальше →

Гепатит С: «ласковый убийца»

Reading time4 min
Views34K

Когда мы говорим о тяжёлых инфекционных заболеваниях, приводящих к смерти и подвергающихся наибольшей стигматизации, обычно имеется в виду ВИЧ. Среди других же заболеваний особенно выделяется гепатит C. Большая часть людей, инфицированных вирусом гепатита C, приобретают хроническую инфекцию, протекающую бессимптомно и приводящую к циррозу и раку печени, а впоследствии, соответственно, смерти. Из-за этих своих особенностей гепатит C получил прозвище „ласковый убийца“.


Гепатит C и ВИЧ часто упоминаются вместе, и это не случайность: сегодня они являются наиболее опасными стремительно распространяющимися инфекционными заболеваниями. Оба этих заболевания передаются через контакт крови; однако заражение гепатитом C через половой контакт гораздо менее вероятно.

Читать дальше →

Изготовление печатных плат ЛУТ'ом от А до Я

Reading time8 min
Views152K
Доброго времени суток! Среди моих знакомых бытует мнение, что самостоятельно изготавливать печатные платы (ПП) бесполезно. Учитывая, что современные компоненты далеко ушли от DIP корпусов, то кустарно травить платы под них даже и не стоит пытаться. Тем не менее необходимость в быстрой оценке того или иного компонента всегда есть, и ждать несколько суток заказанной платы времени нет. И это учитывая, что заказ за «несколько суток» дорог, для одноразовой задачи.

В данной статье я хочу изложить порядок действий, которые позволят быстро изготавливать ПП под компоненты в корпусах подобных TQFP-100, то есть с ногами 0,2мм и таким же зазором, и при этом сводить брак к минимуму.

Конечно это способ изготовления плат только для прототипов, но он снижает риски ошибиться при создании конечного устройства.

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

Под катом подробности и трафик.
Подробности

Вся правда о linux epoll

Reading time10 min
Views60K

Ну или почти вся...



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


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


Anyone can wield an axe, but it takes a true warrior to make it sing melees melody.

Я предполагаю, что читатель знаком с epoll, по крайней мере прочел страницу man. О epoll, poll, select написано достаточно много, чтобы каждый кто разрабатывал под Linux, хоть раз о нем слышал.

Читать дальше →

Системы очистки воды обратным осмосом — здорово или не очень?

Reading time9 min
Views183K


Всем привет.

Сегодня я хотел бы поделиться с Вами своим видением систем очистки воды.

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

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

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

Давайте разберёмся.
Читать дальше →

Самые страшные яды

Reading time24 min
Views373K


Привет, %username%

Да, я знаю, заголовок избитый и в гугле есть овер 9000 ссылок, в которых описываются страшные яды и рассказываются ужастики.

Но я не хочу перечислять то же самое. Я не хочу меряться дозами LD50 и претендовать на оригинальность.

Я хочу написать про те яды, с которыми ты, %username%, имеешь большой риск столкнуться каждый день. И которые не так просты, как их ближайшие собратья.

Врага надо знать в лицо. И надеюсь — будет интересно. А если окажется интересно — то возможно, что и осилишь вторую часть.

Итак — моя смертельная десятка!
Читать дальше →

Веб-разработчики пишут небезопасный код по умолчанию

Reading time3 min
Views27K

«Если хотите, я могу зашифровать пароли»



Некоторые разработчики, которым дали прямое указание применить криптографию, использовали шифрование парольной базы с помощью Base64

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

Новое исследование из Университета Бонна (Германия) показывает, что разработчики-фрилансеры по умолчанию придерживаются исключительно небезопасных практик, если только заказчик не требует большего.
Читать дальше →

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity