Как стать автором
Обновить
3
0

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

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

Введение в детерминированные сборки на С/С++. Часть 1

Время на прочтение8 мин
Количество просмотров6K
Перевод статьи подготовлен специально для студентов курса «Разработчик С++».




Что такое детерминированная сборка?


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

Путешествие по России в режиме «Ночь в поезде, день в городе»

Время на прочтение7 мин
Количество просмотров58K
Из-за короновируса закрыты границы и непонятно, что с открытием будет, да и с деньгами могут быть сложности, а в отпуск хочется… Местами вещают о внутреннем туризме, а мне есть, что сказать по этому поводу!

Как-то раз я прокатился по России необычным способом, и хоть это было в 2015 году — идея остаётся актуальной.

Даже @Milfgard её одобрил! Собственно идея — в названии статьи, а подробности реализации — под катом.

КДПВ
Читать дальше →

Юлия → Iuliia. Всё о транслитерации

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

Транслитерация


Транслитерация — это запись кириллических слов латиницей (Анна → Anna, Самара → Samara). Её используют в загранпаспортах, водительских удостоверениях, трансграничной доставке, библиотечных каталогах и множестве других международных процессов.


Так вышло, что я недавно окунулся в эту тему, а в Википедии она раскрыта слабо. Поэтому расскажу, что к чему (спойлер — если вы думаете, что с транслитерацией всё плохо, то на самом деле всё ещё хуже).


И конечно, поскольку это Хабр — предложу open-source библиотеки для решения проблемы.

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

Zip-файлы: история, объяснение и реализация

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


Мне давно было интересно, как сжимаются данные, в том числе в Zip-файлах. Однажды я решил удовлетворить своё любопытство: узнать, как работает сжатие, и написать собственную Zip-программу. Реализация превратилась в захватывающее упражнение в программировании. Получаешь огромное удовольствие от создания отлаженной машины, которая берёт данные, перекладывает их биты в более эффективное представление, а затем собирает обратно. Надеюсь, вам тоже будет интересно об этом читать.

В статье очень подробно объясняется, как работают Zip-файлы и схема сжатия: LZ77-сжатие, алгоритм Хаффмана, алгоритм Deflate и прочее. Вы узнаете историю развития технологии и посмотрите довольно эффективные примеры реализации, написанные с нуля на С. Исходный код лежит тут: hwzip-1.0.zip.
Читать дальше →

Embox на процессоре Эльбрус. Или никогда не забывайте о том, что получили при разведке

Время на прочтение15 мин
Количество просмотров12K
Данная статья является логическим завершением серии статьей “восхождение на Эльбрус” об ознакомлении Embox с процессорной архитектурой Эльбрус (E2K) . Почему логическим завершением, потому что в результате удалось через telnet запустить приложение, которое выводит на экран изображение, то есть добиться полноценной работы Embox на данной архитектуре. Дальнейшие исследования, вряд ли можно назвать ознакомлением, хотя конечно, многое осталось не ясно. И сама архитектура имеет много интересных особенностей, которые также на данный момент не изучены. В данной статье речь пойдет об организации виртуальной памяти, затронем PCI, немного поговорим о сетевой карте и коснемся видеокарты на конкретном железе, которое есть у нас.

Стоит ли жаловаться на собеседования?

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

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


Первая тема — "мне слили карму, систему кармы надо изменить/отменить".
Вторая тема — "меня не взяли на работу, процесс приема надо изменить".


Не буду пока касаться первой темы — думаю, что высказать непопулярное мнение по второй будет достаточным для ухода в минус :) Но сегодня пятница, а значит — можно.
Один раз я уже писал юмореску по поводу собеседований. Сейчас попробую серьёзно.


Итак, "Васю" не взяли на работу, потому что интервью проводили идиоты с дебильными вопросами. Что должен Вася делать и надо ли писать об этом на Хабр?

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

Часть 6: Портирование MemTest86+ на RISC-V

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

Наверное, мало какому айтишнику нужно объяснять, что такое Memtest86+ — пожалуй, он уже стал более-менее стандартом в тестировании оперативной памяти на ПК. Когда в одной из предыдущих частей я наткнулся на битую планку памяти, пришедшую в комплекте с платой, он (вместе с поддерживающим DDR2 нетбуком) казался очевидным решением. Другой вопрос, что там в принципе нестабильная работа системы была видна невооружённым глазом. В более хитрых случаях, слышал, что кроме банального «простукивания» ячеек памяти до бесконечности, этот инструмент использует некоторые специальные паттерны данных, на которых ошибки в работе DDR выявляются с большей вероятностью. В общем чудесная вещь, жаль, что даже в названии указано: 86 — «Только для x86-совместимых систем». Или нет?


Под катом вы увидите мои попытки портировать MemTest86+ v5.1 на RISC-V и промежуточный итог. Спойлер: оно шевелится!

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

О некоторых проблемах микрооптимизаций

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

Предыстория


Как-то раз у меня с коллегой завязался разговор по поводу улучшения инструментария для работы с битовыми флагами в перечислениях C++. На тот момент у нас уже была функция IsEnumFlagSet, принимающая на вход первым аргументом тестируемую переменную, вторым — набор флагов для проверки. Чем же она лучше старого доброго побитового И?

if (IsEnumFlagSet(state, flag)) 
{

}
// vs
if (state & flag) 
{

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

Настройка окружения в CLI. WSL / Windows Terminal

Время на прочтение17 мин
Количество просмотров86K
Есть люди, которые большинство рабочего времени проводят в консоли, есть те, кто пользуются терминалом при необходимости, запуская что-то по инструкциям. Но я думаю, что каждый айтишник, будь он разработчиком, сисадмином, сетевым инженером, или даже senior yaml developer`ом, пользуется command line interface. Далеко не все задумываются об улучшении рабочего окружения в CLI и повышении продуктивности работы в терминале. Мне хотелось бы поделиться своим опытом настройки окружения для работы с Linux из Windows.



Из статьи вы узнаете, какими средствами и каким терминалом актуально пользоваться в настоящее время для запуска Linux приложений в Windows 10. Речь пойдёт о WSL 2 и Windows Terminal, набирающим всё большую популярность у пользователей, которым для работы нужен Linux. Так как большинство use-case`ов у меня связаны с удалённым подключением через SSH, большая часть информации будет релевантно для случаев удалённых подключений, со всеми особенностями, связанными с этим (пробросом ssh ключей через ssh agent, пробросом X-сервера, управлением подключениями etс).

Внимание! Под катом много картинок и ужатого, но местами объёмного, gif`а, рекомендуется открывать статью при наличии соответствующего доступа к интернету. Заходите под кат, если вам актуален запуск Linux утилит под Windows, оптимизация работы в окружении CLI, или вы просто любите технические тексты и цветные терминалы. Текст я постарался скрасить скринкастами и скриншотами терминала, чтобы было не скучно.
Читать дальше →

Игра в собеседование

Время на прочтение10 мин
Количество просмотров22K
Пару недель назад я случайно открыл резюме всему интернету и прошел пару собеседований. Это навело меня на мысли о процессе отбора в целом.

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

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

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

C++ vtables. Часть 1 (basics + multiple Inheritance)

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

Всем привет! Перевод статьи подготовлен специально для студентов курса «Разработчик С++». Интересно развиваться в данном направлении? Приходите онлайн 13 декабря в 20:00 по мск. на мастер-класс «Практика использования Google Test Framework»!



В этой статье мы рассмотрим, как clang реализует vtables (таблицы виртуальных методов) и RTTI (идентификацию типа времени исполнения). В первой части мы начнем с базовых классов, а затем рассмотрим множественное и виртуальное наследование.

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

Сериализация в C++

Время на прочтение14 мин
Количество просмотров41K
В данной статье речь пойдет об автоматизации процесса сериализации в C++. В начале будут рассмотрены базовые механизмы, позволяющие упростить чтение/запись данных в потоки ввода-вывода, после чего будет дано описание примитивной системы генерации кода на основе libclang. Ссылка на репозиторий с демонстрационным вариантом библиотеки расположена в конце статьи.
Читать дальше →

Правда о железнодорожных тормозах: часть 4 — приборы торможения пассажирского типа

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


На этом вагоне — «Аммендорф», прошедшем капитально восстановительный ремонт (КВР), установлен воздухораспределитель (ВР) усл. №242 пассажирского типа. Он теперь устанавливается на все новые и «откавээреные» вагоны, взамен более раннего 292-го ВР. Вот об этих приборах, относящихся к семейству приборов торможения мы и поговорим сегодня.

Правда о железнодорожных тормозах: часть 3 — приборы управления

Время на прочтение13 мин
Количество просмотров48K
Пришло время поговорить об устройствах, предназначенных для управления тормозами. Эти устройства называются «кранами», хотя долгий путь эволюции увел их достаточно далеко от кранов в привычном нам бытовом смысле, превратив в достаточно сложные устройства пневмоавтоматики.

Старый-добрый золотниковый кран 394 до сих пор используется на подвижном составе

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

Правда о железнодорожных тормозах: часть 2

Время на прочтение13 мин
Количество просмотров50K
Вижу, что первая, историческая часть моего повествования публике понравилась, а поэтому не грех и продолжить.

Высокоскоростные поезда, вроде TGV уже не обходятся пневматическим торможением



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

Правда о железнодорожных тормозах: часть 1

Время на прочтение11 мин
Количество просмотров68K
Кинетическая энергия «Сапсана» на максимальной скорости — свыше 1500 мегаджоулей. Для полной остановки вся она должна быть рассеяна на тормозных устройствах


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

Профессиональное выгорание айтишников: 15 ответов психиатра Максима Малявина

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

Burn out нечаянно нагрянет, когда его совсем не ждёшь. Когда человек впервые сталкивается с профессиональным выгоранием, у него возникают вопросы:


— Что со мной: осенняя хандра, депрессия или профессиональное выгорание?
— Что с этим делать?
— К кому идти за помощью?


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


Поэтому так важно разобраться в проблеме заранее, понять, что проблема решаема — и решаема разными способами.


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


Я обратился за разъяснениями к психиатру Максиму Малявину. Хобби Максима не раз спасало меня от плохого настроения, а быть может и от начала профессионального выгорания. Его «Психиатрические байки» способны спасти от серости и печали будней не хуже, чем волшебная пилюлька бромдигидрохлорфенилбензодиазепина. А книги Максима «Записки психиатра, или Всем галоперидолу за счёт заведения!» и «Новые записки психиатра, или Барбухайка, на выезд!» давно прописались на моей книжкой полке.



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

Интересное использование Adblock Plus

Время на прочтение4 мин
Количество просмотров80K
Уже много лет использую Adblock plus, настраиваю фильтры под свои хотелки. Ценю простоту, скорость, лаконичность как в конце 90-х. Хотя некоторые и тогда умудрялись сделать жуткий вэб сайт с нагромождением JavaScript или DHTML.

И вот сегодня в полуночных бдениях вспомнил взаимоотношения Роскомнадзора и Pornhub'a. Решил ознакомиться с вторым по списку, интересно стало, что же это там такого на химичили. А там теперь предлагают проверку возраста через социальную сеть «Вконтакте». Впал я в тоску, так как не использую социальные сети, а ради изучения анатомических подробностей влезать в такую кабалу — не желаю. На VPN сейчас денег жалко. Но на моё счастье проснулся спортивный интерес.
Читать дальше →

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

Время на прочтение17 мин
Количество просмотров13K
Это вторая и последняя часть моей шпаргалки по аббревиатурам, которые стоит знать C++ разработчику. С++ здесь упомянут только потому, что шпаргалку я составил в первую очередь для себя, а я как раз-таки C++ разработчик.

На самом деле в этой части собраны понятия, область применения которых не ограничена C++. Так что подборка может быть интересна более широкой аудитории.


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

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

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

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


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

Информация

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