Pull to refresh
3
0
Send message

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

Reading time8 min
Views5.9K
Перевод статьи подготовлен специально для студентов курса «Разработчик С++».




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


Детерминированная сборка — это процесс сборки одного и того же исходного кода с одной и той же средой и инструкциями сборки, при котором создаются одни и те же двоичные файлы в любом случае, даже если они сделаны на разных машинах, в разных каталогах и с разными именами. Такие сборки также иногда называют воспроизводимыми или герметичными сборками, если гарантируется, что они будут создавать одни и те же двоичные файлы даже при компиляции из разных папок.
Читать дальше →
Total votes 21: ↑18 and ↓3+15
Comments1

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

Reading time7 min
Views57K
Из-за короновируса закрыты границы и непонятно, что с открытием будет, да и с деньгами могут быть сложности, а в отпуск хочется… Местами вещают о внутреннем туризме, а мне есть, что сказать по этому поводу!

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

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

КДПВ
Читать дальше →
Total votes 104: ↑98 and ↓6+92
Comments177

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

Reading time8 min
Views63K

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


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


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


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

Читать дальше →
Total votes 193: ↑192 and ↓1+191
Comments543

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

Reading time76 min
Views93K


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

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

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

Reading time15 min
Views11K
Данная статья является логическим завершением серии статьей “восхождение на Эльбрус” об ознакомлении Embox с процессорной архитектурой Эльбрус (E2K) . Почему логическим завершением, потому что в результате удалось через telnet запустить приложение, которое выводит на экран изображение, то есть добиться полноценной работы Embox на данной архитектуре. Дальнейшие исследования, вряд ли можно назвать ознакомлением, хотя конечно, многое осталось не ясно. И сама архитектура имеет много интересных особенностей, которые также на данный момент не изучены. В данной статье речь пойдет об организации виртуальной памяти, затронем PCI, немного поговорим о сетевой карте и коснемся видеокарты на конкретном железе, которое есть у нас.
Total votes 28: ↑27 and ↓1+26
Comments25

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

Reading time6 min
Views13K

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


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


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


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

Читать дальше →
Total votes 26: ↑23 and ↓3+20
Comments87

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

Reading time21 min
Views8.3K

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


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

Читать дальше →
Total votes 52: ↑52 and ↓0+52
Comments26

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

Reading time6 min
Views6.5K

Предыстория


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

if (IsEnumFlagSet(state, flag)) 
{

}
// vs
if (state & flag) 
{

}
Читать дальше →
Total votes 20: ↑19 and ↓1+18
Comments67

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

Reading time17 min
Views81K
Есть люди, которые большинство рабочего времени проводят в консоли, есть те, кто пользуются терминалом при необходимости, запуская что-то по инструкциям. Но я думаю, что каждый айтишник, будь он разработчиком, сисадмином, сетевым инженером, или даже 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, или вы просто любите технические тексты и цветные терминалы. Текст я постарался скрасить скринкастами и скриншотами терминала, чтобы было не скучно.
Читать дальше →
Total votes 20: ↑19 and ↓1+18
Comments33

Ловим утечки памяти в С/С++

Reading time8 min
Views61K


Приветствую вас, Хабровчане!


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


На Хабре уже существует две статьи, а именно: Боремся с утечками памяти (C++ CRT) и Утечки памяти в С++: Visual Leak Detector. Однако я считаю, что они недостаточно раскрыты, или данные способы могут не дать нужного вам результата, поэтому я хотел бы по возможности разобрать всем доступные способы, дабы облегчить вам жизнь.

Читать дальше →
Total votes 21: ↑19 and ↓2+17
Comments12

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

Reading time10 min
Views22K
Пару недель назад я случайно открыл резюме всему интернету и прошел пару собеседований. Это навело меня на мысли о процессе отбора в целом.

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

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

Держа в голове все вышесказанное, я начал анализировать процесс отбора кандидатов с обеих сторон. У меня в запасе был небольшой курс по теории игр, щепотка матстатистики и здравый смысл. А результаты — под катом.
Читать дальше →
Total votes 32: ↑29 and ↓3+26
Comments20

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

Reading time9 min
Views25K

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



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

Читать дальше →
Total votes 20: ↑17 and ↓3+14
Comments6

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

Reading time14 min
Views39K
В данной статье речь пойдет об автоматизации процесса сериализации в C++. В начале будут рассмотрены базовые механизмы, позволяющие упростить чтение/запись данных в потоки ввода-вывода, после чего будет дано описание примитивной системы генерации кода на основе libclang. Ссылка на репозиторий с демонстрационным вариантом библиотеки расположена в конце статьи.
Читать дальше →
Total votes 16: ↑14 and ↓2+12
Comments44

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

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


На этом вагоне — «Аммендорф», прошедшем капитально восстановительный ремонт (КВР), установлен воздухораспределитель (ВР) усл. №242 пассажирского типа. Он теперь устанавливается на все новые и «откавээреные» вагоны, взамен более раннего 292-го ВР. Вот об этих приборах, относящихся к семейству приборов торможения мы и поговорим сегодня.
Total votes 38: ↑36 and ↓2+34
Comments16

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

Reading time13 min
Views44K
Пришло время поговорить об устройствах, предназначенных для управления тормозами. Эти устройства называются «кранами», хотя долгий путь эволюции увел их достаточно далеко от кранов в привычном нам бытовом смысле, превратив в достаточно сложные устройства пневмоавтоматики.

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

Читать дальше →
Total votes 67: ↑67 and ↓0+67
Comments21

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

Reading time13 min
Views48K
Вижу, что первая, историческая часть моего повествования публике понравилась, а поэтому не грех и продолжить.

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



Сегодня мы поговорим о современности, а именно о том, какие подходы к созданию тормозных систем подвижного состава используются в XXI веке, буквально через месяц разменяющему свой третий десяток.
Читать дальше →
Total votes 72: ↑72 and ↓0+72
Comments84

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

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


Было дело, просили меня поподробнее раскрыть эту тему именно здесь, на Хабре. Здесь публикуется довольно много обзорных статей на железнодорожную тематику, однако данная тема еще не освещалась подробно. Думаю, что было бы довольно интересно написать об этом статью, а возможно и не одну. Поэтому прошу под кат тех, кому интересно как устроены тормозные системы железнодорожного транспорта, и по каким причинам они устроены именно так.
Читать дальше →
Total votes 140: ↑136 and ↓4+132
Comments221

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

Reading time9 min
Views86K

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


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


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


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


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


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



Читать дальше →
Total votes 104: ↑97 and ↓7+90
Comments152

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

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

И вот сегодня в полуночных бдениях вспомнил взаимоотношения Роскомнадзора и Pornhub'a. Решил ознакомиться с вторым по списку, интересно стало, что же это там такого на химичили. А там теперь предлагают проверку возраста через социальную сеть «Вконтакте». Впал я в тоску, так как не использую социальные сети, а ради изучения анатомических подробностей влезать в такую кабалу — не желаю. На VPN сейчас денег жалко. Но на моё счастье проснулся спортивный интерес.
Читать дальше →
Total votes 44: ↑26 and ↓18+8
Comments42

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

Reading time17 min
Views12K
Это вторая и последняя часть моей шпаргалки по аббревиатурам, которые стоит знать C++ разработчику. С++ здесь упомянут только потому, что шпаргалку я составил в первую очередь для себя, а я как раз-таки C++ разработчик.

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


Читать дальше →
Total votes 16: ↑15 and ↓1+14
Comments3

Information

Rating
Does not participate
Registered
Activity