Как стать автором
Поиск
Написать публикацию
Обновить
-13
0

Инженер

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

Дизайн и эволюция constexpr в C++

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

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

У constexpr с каждым годом становится больше возможностей. Сейчас использовать в compile-time вычислениях можно почти всю стандартную библиотеку. Пример вычисления числа до 1000 с наибольшим количеством делителей: ссылка на код.

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

Эта статья подходит как тем, кто еще не знает, что такое constexpr, так и тем, кто уже долгое время его использует.

Назад в будущее

Миграция с Firebird на PostgreSQL. Что может пойти не так? Часть 1

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

Не секрет, что в последние годы различные компании достаточно часто принимают решение о миграции работающей информационной системы с Firebird на PostgreSQL.

Типичная ситуация выглядит так:

Проект работает несколько лет. Заказчик «верит», что проблема не в проекте, а в СУБД. Firebird — «плохая» СУБД.

Читать далее

Вы тоже заказываете платы, компоненты и всячину здесь?

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

Что такое коллективный экспресс (7$/кг) и как его использовать?

Почему с 45$/кг бывает дешевле, чем с 23$/кг?

Как заказать компоненты/всячину с сайтов JLC (jlcfa, lcsc, jlcpcb, …)?

С 1688, Тао бао и других китайских площадок?

Привезти из Европы, США (Маузера, Диджикея и т. д.)?

Где платы с размерами >100х100 мм будут дешевле?

Надеюсь, продуманная навигация по статье и таблицы помогут быстро найти и сравнить полезную информацию.

Читать далее

Телеграфируем кодом Морзе через Java Stream API (часть 1 из 2)

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

Азбука Морзе — один из самых старых, но не уходящих на заслуженный отдых телекоммуникационных стандартов. Почему бы не объединить ее с Java? Это статья о технологиях, отстоящих друг от друга более чем на полтора столетия. Мы познакомимся с кодом Морзе, с подкапотной частью Java Stream API, и на живом примере соберем все это в одно кроссплатформенное приложение на Java.

Вперед, в прошлое!

Как я зарегистрировал CVE и разозлил вендора

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

Статьи про багхантинг часто говорят о пользе для резюме, багбаунти, повышении безопасности продуктов, доступе на закрытые мероприятия. Информация о проблемах во взаимодействии с разработчиками в процессе багхантинга упоминается лишь изредка (и часто - вскользь). Но, это тоже важная часть багхантинга: начинающим бахгантерам полезно знать, с какой реакцией разработчиков они могут столкнуться. Всё-таки, это определённая психологическая нагрузка. Я хочу показать на личном примере прекрасную иллюстрацию того, насколько различны в оценке проблемы разработчики и багхантер. Случай уникален тем, что мне удалось задокументировать многие тезисы разработчиков в их первоначальном виде (в т.ч. попытку отозвать CVE). И подсветить важный момент: уже сам факт оформления CVE по проблеме, которую вендор не признаёт, может вызвать раздражение у вендора.

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

Дисклеймер: в статье приведены скриншоты из моих личных переписок с разработчиками. Публикация таких переписок одной из сторон не требует согласия другой (согласно законодательства РФ).

Читать далее

Запускаем MIPI DSI экраны от смартфонов. Разработка схемы основной платы. Часть 1. Обзор решений, создаём своё

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

Некоторое время назад мне удалось-таки сделать обратную разработку нескольких экранов от смартфонов с интерфейсом MIPI DSI.

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

Обратная и прямая разработки поскакали в одной упряжке :-)

Посмотрим живой процесс разработки. Это всегда интересно!

В первой части рассмотрим несколько решений и выберем наиболее подходящее. А также начнём проектировать схему.

Полетели!:)

FastCGo: как мы ускорили вызов C-кода в Go в 16,5 раза

Уровень сложностиСложный
Время на прочтение19 мин
Количество просмотров7.6K

В Deckhouse Prom++ мы переписали ядро хранения и обработки горячих данных на C++, при этом вся оркестрация и периферия остались в Prometheus на Go, что позволило сохранить полную совместимость с Prometheus. Для частых вызовов кода C++ мы использовали механизм CGo, однако первые тесты показали, что производительность CPU практически не улучшилась из-за его медлительности. В итоге мы переписали CGo, создав собственный механизм вызова.

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

Читать далее

VPS сервер по цене пачки чипсов: обзор самых дешёвых тарифов российских хостеров

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

Привет, Хабр! Однажды я проводил небольшое тестирование виртуалок различных хостер-провайдеров и сравнивал их между собой — оказывается, с тех пор прошло уже аж пять лет. Ну и в том тестировании условия у всех серверов были одинаковые, т. к. тестировались сходные конфигурации.

Сегодня хотел бы рассказать о том, как себя ведут самые дешёвые (в ценовом диапазоне от 100 до 300 рублей) предложения от популярных хостеров. 

Читать далее

Пишем простой драйвер Linux для устройства, ничего не зная о драйверах и о USB

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

Пару месяцев назад я купил Nanoleaf Pegboard Desk Dock — последнее слово в технологиях USB-хабов с RGB-светодиодами и крючками для устройств. К сожалению, это чудо инженерной мысли поддерживает только гейминговые операционные системы — Windows и macOS, поэтому возникла необходимость в драйвере для Linux.

В своих постах я уже настраивал Windows VM с пробросом USB и пытался выполнить реверс-инжиниринг официальных драйверов. При этом я задумался, а нельзя ли написать производителю и попросить у него спецификации или документацию его протокола. К моему удивлению, техподдержка Nanoleaf ответила мне всего через четыре часа, предоставив полное описание протокола, используемого Desk Dock, а также полосами RGB-светодиодов. Документация по большей мере подтвердила то, что я обнаружил самостоятельно, но также я нашёл в ней пару других мелких подробностей (например, управление питанием и яркостью), которые были мне неизвестны.

Сегодня мы попробуем написать драйвер на основании протокола (который я изучил реверс-инжинирингом), параллельно сверяясь с официальной документацией. Однако здесь есть одна небольшая проблема: раньше я ни разу не писал драйверов для устройств под Linux, а с USB-устройствами взаимодействовал только как пользователь.

Читать далее

NoDPI4Android. Решаем проблему «деградации» YouTube теперь и на Android

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

Салют, Хабр! На связи снова я, Aragorn, со своим проектом по терроризированию Роскомпозора. В прошлый раз я рассказывал о NoDPI - утилите для "раздеградирования" YouTube и установил личный рекорд - 400 звезд на GitHub и блокировка статьи РКН через три дня после публикации.

Многие мои знакомые и люди в комментариях просили сделать версию под Android и Android TV. Я не очень дружу с Джавой и с Джавой под андроид в особенности, и поэтому такая перспектива меня не очень прельщала, но у меня был опыт написания android-приложений на python и kivy, который я и решил применить. После нескольких дней (и ночей) напряженного труда и танцев с бубном, мне наконец удалось создать NoDPI for Android, который практически не имеет аналогов. Именно о нем я и хочу сегодня рассказать. Надеюсь, статья будет вам полезна и интересна. Поехали!

Читать далее

Как я собеседовался в Ozon, Т-Банк, Mindbox и другие крупные компании

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

Всем привет. Я сеньор и тимлид на .NET (C#). До недавнего времени работал в Росатоме, пока там внезапно не сократили целую дирекцию по цифровизации. Так что пришлось срочно выходить на рынок, причём, впервые в моей жизни (до этого работа находила меня сама). По результатам нескольких циклов собеседований получился неплохой дневник, который я здесь привожу.

История длинная, но интересная

Три совета, как не выучить C++ за 21 день (субъективный гайд с дополнениями)

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

Типичная проблема новичков при изучении языка программирования — они тонут в море учебных материалов. Интернет предлагает тонны статей, курсов и книг по C++, но как выбрать действительно стоящие?

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

Читать далее

Регулярные выражения простыми словами. Часть 3

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

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

Embedded Linux для начинающих (Часть первая)

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

Однажды по работе мне прилетела задача по сборке и запуску Linux на одноплатном ПК. Тогда я, будучи разработчиком ПО для микроконтроллеров, встал в небольшой ступор — задачка явно не решалась установкой IDE и нажатием в ней кнопки «Собрать проект». Гугл помог узнать о том, что существует некий Buildroot. В материалах по теме всё выглядело довольно просто: скачай, настрой, дерни пару команд, загрузи результат на одноплатник — и можно запускать! Получается, процесс не многим сложнее установки дистрибутива Linux или Windows на обычный ПК? Конечно же, нет. Ведь если у тебя в руках кастомный одноплатник неизвестного китайского бренда, а не BeagleBone или Raspberry Pi, то зарыться в Buildroot придётся с головой...

Читать далее

Cтатья про собеседования в Яшу (Yandex Weekend Offer)

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

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

Коротко о себе: 41 год, senior software developer, стаж > 20 лет. Однако, как я понял, эти собесы все равно для всех одинаковые, так чтоб все написанное актуально и для молодежи.

Итак, угораздило меня согласиться на т. н. «Weekend Offer на позицию разработчика на Kotlin». Вообще‑то мне больше нравится Scala, и опыта по ней гораздо больше, но рекрутерша была сильно настойчива, и я решил обновить экспиренс, а возможно, и прибавку в деньгах. И вот что было дальше.

Читать далее

11 вопросов на собеседовании по Spring Boot, которые заставляют задуматься

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

Большинство списков вопросов интервью по Spring Boot заставляют вас запоминать случайные детали из документации Spring Boot. Но запоминание — плохая замена истинному пониманию и уверенности в знании Spring Boot.

Поэтому сегодня мы собираемся применить другой подход. Вместо того, чтобы перечислять 50 вопросов по мелочам Spring Boot, мы сосредоточимся на 11, которые заставят вас задуматься и, таким образом, многому научиться на этом пути.
Вот они, в произвольном порядке.

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

Читать далее

Spring: вопросы к собеседованию

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

image
Этот небольшой список вопросов даст вам понимание самых важных концепций Spring, а так же поможет подготовится к собеседованию

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

Жизнь в Финляндии: честный опыт

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

Моя история проста как три копейки. В конце 2010-х, работая Java-разработчиком в Москве, я невольно попал под влияние голосов, утверждавших, что пора валить, что на Западе сытнее, спится слаще, солнце ярче и трава зеленее. В начале 2020-го я начал учить английский и к началу 2022-го имел все что нужно для переезда. Штаты и Канада меня не особо манили, юг Европы слишком жаркое для меня место, так что я искал на севере Европы и в Германии.

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

Читать далее

Жизнь IT-специалиста на Кипре: халуми, сига-сига, горы, дайвинг и песчаные бури. Стоит ли переезжать?

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


Александр Кушнарев работал на Kaspersky и «Яндекс» в России, а потом устроился в Wargaming на Кипре. За два года собрал много интересных наблюдений, которыми поделился с нами.


Почему на маленьком острове нельзя жить без машины. Как попасть в непризнанную Турецкую Республику на севере. Что бывает в кипрскую песчаную бурю. О горах, сырах, винодельнях, дайвинге в затонувших судах и проблемах переезда с котом. А еще о том, почему жить на Кипре иногда бывает холоднее, чем в России.

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

Пишем стек TCP/IP с нуля: Ethernet, ARP, IPv4 и ICMPv4

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

Написание собственного стека TCP/IP поначалу может показаться пугающей задачей. И в самом деле, за свой тридцатилетний срок жизни TCP впитал в себя множество спецификаций. Однако базовая спецификация остаётся относительно компактной1 — из важных частей в ней можно выделить парсинг заголовков TCP, машину состояний, отслеживание перегрузок и вычисление таймаута повторной передачи.

Самые распространённые протоколы слоя 2 и слоя 3, Ethernet и IP, скромны по сравнению с сложностью TCP. В этой серии статей мы реализуем минимальный стек TCP/IP пользовательского пространства для Linux.

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

Читать далее
1
23 ...

Информация

В рейтинге
6 479-й
Откуда
Санкт-Петербург и область, Россия
Зарегистрирован
Активность