Pull to refresh
35
0
Андрей Шитов @5nw

User

Send message

Почему Windows настолько медленнее Linux. Расползание фич

Reading time8 min
Views56K

Время выполнения общих команд Git в Ubuntu и Windows 11 (в секундах, чем меньше — тем лучше), источник: OpenBenchmarking.org

В далёком 2013 году один из разработчиков Microsoft детально объяснил, в чём главные технические проблемы при разработке ядра Windows NT. Спустя десять лет Windows 10/11 работает на том же ядре, а многие старые проблемы так и остались нерешёнными.

Хотя в ряде задач Windows превосходит Linux, но в большинстве тестов она действительно медленнее. По словам разработчика, это отставание усугубляется, а причина «социальная». Суть в том, как организован процесс разработки, внесения изменений в ОС. Если в мире опенсорса это открытый процесс, который несёт пользу и улучшает систему, то в мире корпоративного ПО зачастую изменения вносятся по причинам эгоизма, желания продвижения по карьерной лестнице, славы и т. д. Всё это ведёт к деградации продукта.
Читать дальше →
Total votes 152: ↑117 and ↓35+82
Comments218

Где бесплатно изучать Rust в 2024

Level of difficultyEasy
Reading time6 min
Views25K

В 2024 году Rust остается одним из наиболее востребованных и перспективных языков программирования. Вот несколько причин, почему учить Rust может быть полезно:

1. Безопасность: Rust разработан с упором на безопасность, предотвращая многие типичные ошибки программирования, такие как доступ к памяти после ее освобождения или гонки данных. Это особенно важно для разработки критически важных систем, таких как операционные системы или встраиваемые приложения.

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

3. Многопоточность: Rust предоставляет удобные инструменты для разработки многопоточных приложений. Он предлагает безопасные абстракции для работы с потоками и предотвращает гонки данных, что облегчает разработку параллельных программ.

4. Кроссплатформенность: Rust поддерживает различные платформы, включая Windows, Linux, macOS и другие. Это позволяет разрабатывать приложения, которые могут работать на разных операционных системах без необходимости переписывать код.

5. Растущее сообщество: Rust имеет активное и одно из самых быстрорастущих сообщество разработчиков. Это означает, что всегда есть доступ к обновленным библиотекам, учебным материалам и помощи от опытных разработчиков.

6. Востребованность на рынке труда: Rust становится все более популярным среди работодателей, особенно в области разработки системного и встраиваемого программного обеспечения. Умение программировать на Rust может открыть двери к новым возможностям и повысить вашу конкурентоспособность на рынке труда.

Читать далее
Total votes 33: ↑22 and ↓11+11
Comments43

Оптимизируя неоптимизируемое: ускорение компиляции C++

Level of difficultyMedium
Reading time7 min
Views7.6K

В этой статье речь пойдёт о повышении скорости компиляции библиотеки {fmt} до уровня библиотеки ввода-вывода Cи stdio.

Дня начала немного теории. {fmt} – это популярная открытая библиотека С++, представляющая более эффективную альтернативу С++ библиотеке iostreams и библиотеке Си stdio. Последнюю она обошла по целому ряду аспектов:

  • Безопасность типов с проверками форматирующих строк во время компиляции. Эти проверки включены по умолчанию начиная с С++ 20, и присутствуют в качестве дополнения для С++ 14/17. Форматирующие строки среды выполнения в {fmt} также оказываются безопасными, чего невозможно достичь в printf.
  • Расширяемость. Определяемый пользователем тип можно сделать форматируемым. При этом большинство типов стандартных библиотек, например, контейнеры и пакеты для обработки даты и времени, предлагают возможность форматирования изначально.
  • Производительность. {fmt} намного быстрее любой распространённой реализации printf, порой на несколько порядков (например, в форматировании чисел с плавающей запятой).
  • Возможность переноса поддержки Unicode.

Тем не менее одной из областей, в которой stdio по-прежнему опережала {fmt}, являлось время компиляции.
Читать дальше →
Total votes 56: ↑55 and ↓1+54
Comments29

Оптимизация инвестиционного портфеля по методу Марковица

Reading time4 min
Views12K


Пример стандартной реализации на Python оптимизации инвестиционного портфеля по методу Марковица. Есть много реализаций данного метода. В том числе и на Python. Реализовал еще раз (см. ссылка на GitHub).
Читать дальше →
Total votes 31: ↑3 and ↓28-25
Comments9

Цифровой рубль: большой справочник по технологиям, возможностям и рискам

Level of difficultyEasy
Reading time20 min
Views18K

Этот справочник - попытка собрать в одном месте максимум полезной информации по цифровому рублю. При появлении новой информации или корректировке существующей, справочник будет обновляться.

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

Читать далее
Total votes 18: ↑17 and ↓1+16
Comments89

MacOS Monterey на Linux — быстро и просто?

Level of difficultyEasy
Reading time3 min
Views43K
Что делать, если у вас возникло желание или необходимость заняться разработкой под MacOS или iOS, но под рукой нет макбука, а покупать его только чтобы открыть Xcode кажется делом сомнительным? Недавно я столкнулся с такой проблемой в одном из своих пет-проектов и решил ее достаточно просто и быстро. После выполнения нескольких достаточно примитивных шагов, мне удалось запустить MacOS Monterey как на скриншоте ниже.

image

Никакого Virtualbox, никакого Virtual Machine Manager. Из требований — только 100 Гб свободного места на диске и хотя бы 16 Гб оперативной памяти. В рунете я встречал описание похожих путей установки, вроде Docker-OSX или Sosumi. Но я бы хотел поделиться способом, который позволяет использовать актуальную версию MacOS (Sosumi — сразу минус) и не потратить уйму свободного времени на возню с конфигами и терминалом. Поехали.
Читать дальше →
Total votes 83: ↑79 and ↓4+75
Comments67

Вы любите играть в Герои 3, а ваша половинка вас: 6 карт для свиданий

Level of difficultyEasy
Reading time7 min
Views20K


После прошлого поста с подборкой хадкорных карт(Вы не умеете играть в Героев 3: 13 карт S-размера, которые вы не пройдете за вечер), из комментов узнала, что некоторые любят поиграть в альянсе со своей половинкой.

У меня в Героях 3 было идеальное свидание. Мы с 8 вечера до 8 утра сидели у меня в офисе, ели пиццу и рубились в альянсе на большой карте против злобного ИИ, который нашел себе Крылья Ангела и прятался за горным перевалом, а мы вылавливали его с Оковами Войны. Сложных боев там не было, но чувство «родства душ» от решения общей задачи возникло потрясающее.

Однако время беспощадно, сидеть всю ночь за монитором с красными глазами и кофеином вместо крови уже сомнительно. А поиграть иногда хочется. Ко дню влюбленных я отобрала себе карты «для будущих свиданий», которые

  • отличаются от автосгенерированных (потому что просто надоело, хочется крафта/лора/разнообразия);
  • маленького [S] или среднего [M] размера (потому что хочется играть один вечер, а не весь вечер, всю ночь, всё утро, и ещё пару дней «чинить» режим дня);
  • с альянсом для двоих игроков (потому что разводиться после каждого PvP — так себе квест).

Я веду ламповый Telegram-канал GameDEVils и блог на Substack . Заглядывайте в гости, я делюсь там материалами про геймдизайн, разработку и историю игр ^__^
Читать дальше →
Total votes 93: ↑83 and ↓10+73
Comments21

Как проверить wallet.dat на подлинность?

Reading time2 min
Views28K

Думаю, все встречали в продаже файлы wallet.dat с утерянными паролями от криптокошельков Bitcoin-QT. Часто к ним даже прилагаются варианты или подсказки к паролю. При необходимых знаниях и достаточной вычислительной мощности можно попытать удачи в деле подбора пароля к кошелькам и получить доступ к биткоинам и альткоинам. Однако, большая часть таких файлов - фэйковые. Как же определить подлинность файла? Расскажу о способах проверки.

Сам файл - база данных Berkeley DB, в которой записаны приватные ключи, значения настроек, адресная книга и транзакции.

Читать далее
Total votes 11: ↑10 and ↓1+9
Comments17

Дозиметр судного дня

Reading time14 min
Views21K

Хомяки приветствуют вас друзья! 

Сегодняшний пост будет посвящен одной из легендарных самоделок, дозиметр RAD BOY. Тут тебе и цветной экран, и возможность просмотра накопленной дозы за день, продолжительная автономность, в общем сливки в своем роде. В ходе поста рассмотрим как собрать такое устройство, самостоятельно запрограммировать и произвести примитивные манипуляции с настройкой высоковольтного трансформатора. Чтобы устройство выглядело подобающе, смоделируем и напечатаем корпус. В процессе повествования узнаем технические особенности, рассмотрим меню настроек, распилим счетчик Гейгера для изучения внутренностей и сравним показания самодельного прибора с профессиональным дозиметром Радиаскан-701.

Читать далее
Total votes 67: ↑62 and ↓5+57
Comments68

Python (+numba) быстрее Си — серьёзно?! Часть 1. Теория

Reading time7 min
Views77K

Давно собирался написать статью о numba и о сравнении её быстродействия с си. Статья про хаскелл «Быстрее, чем C++; медленнее, чем PHP» подтолкнула к действию. В комментариях к этой статье упомянули о библиотеке numba и о том, что она магическим образом может приблизить скорость выполнения кода на питоне к скорости на си. В данной статье после небольшого обзора по numba (часть 1) чуть более подробный разбор этой ситуации (часть 2).


Читать дальше →
Total votes 34: ↑32 and ↓2+30
Comments7

Taichi и 100-кратное ускорение Python-кода

Reading time12 min
Views34K

Python стал самым популярным языком во многих быстроразвивающихся областях, таких, как глубокое обучение и различные направления анализа и обработки данных. Но при этом за удобство работы с Python-кодом, за высокий уровень его читабельности, приходится платить производительностью. Конечно, все мы время от времени жалуемся на скорость работы программ, и Python, безусловно, не стоит винить во всех грехах. Несмотря на это, справедливым будет заявление о том, что природа Python, интерпретируемого языка, не способствует высокой производительности кода, особенно когда речь идёт о «тяжёлых» вычислениях (один из признаков таких вычислений — наличие в программе нескольких вложенных циклов).

Если вы когда-либо попадали в одну из следующих ситуация — тогда эта статья, определённо, написана для вас.

Читать далее
Total votes 53: ↑53 and ↓0+53
Comments5

8 сервисов для зарубежных покупок в 2024 году

Reading time6 min
Views213K

Эта статья стала итогом моих экспериментов в 2022-ом. С начала года я искала сервисы, которые помогают выкупать товары в интернет-магазинах за рубежом и доставляют их в РФ. 

Прочитав кучу отзывов (спойлер: в основном плохих), я попробовала заказать товары через так называемые “Сервисы-посредники” или “Байер-сервисы”. В статье расскажу об опыте работы с 8 сервисами, с помощью которых можно привести товары в Россию.

Читать далее
Total votes 49: ↑46 and ↓3+43
Comments51

Элементы языка С, которые являются неподдерживаемыми в языке С++

Reading time7 min
Views32K

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

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

Разумеется, язык С имеет много существенных отличий от языка С++, т.е. не составит никакого труда привести примеры несовместимостей, основанные, скажем, на ключевых словах или других очевидных эксклюзивных свойствах С99. Таких примеров вы не найдете в списке ниже. Мой основной критерий для включения примеров в этот список заключался именно в том, что пример кода должен выглядеть на первый взгляд достаточно "невинно" для С++-наблюдателя, т.е. не содержать бросающихся в глаза С-эксклюзивов, но тем не менее являться специфичным именно для языка С.

Читать далее
Total votes 140: ↑139 and ↓1+138
Comments80

Начинающие программисты боятся темноты

Reading time7 min
Views99K

Не могу больше. Это не моё. Я не тяну. Всю ночь не спал, ворочался, вставал, курил, читал, пытался смотреть телевизор, снова ложился… Ненавижу.

Всех, кто пишет эти радужные истории «войти в айти». Тех, кому я заплатил за курсы по программированию. «Друзей» и «советчиков», которые сказали: смело бросай свою старую, нелюбимую работу, и иди в программисты. Если бы вы только знали, о чём говорите…

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

Я один в темноте.

Читать далее
Total votes 212: ↑181 and ↓31+150
Comments301

Меняем std::sort для Google

Reading time32 min
Views12K
image

Мы меняем std::sort в библиотеке libcxx проекта LLVM. В этой статье мы подробно расскажем о том, как мы пришли к этому решению и какими будут возможные последствия, о багах, с которыми вы можете столкнуться в примерах из open source. Мы покажем несколько бенчмарков, объясним, почему вообще это сделали и чего это нам стоило, на примерах закона Хайрама и обучения с подкреплением. Все изменения выложены в open source, поэтому я свободно могу о них рассказывать.

Эта статья разделена на три части. Первая — это подробная история недавнего прошлого сортировки в стандартных библиотеках C++. Вторая расскажет об усилиях, необходимых для перехода от одного алгоритма сортировки к другому с различными багами. В третьей мы объясним выбранную нами реализацию и все внесённые нами оптимизации.
Читать дальше →
Total votes 44: ↑44 and ↓0+44
Comments6

std::move vs. std::forward

Reading time8 min
Views41K

Несмотря на то, что материалов на тему move-семантики и идеальной передачи в Интернете предостаточно, вопросов типа «что я должен здесь использовать: move или forward?» не становится меньше или мне просто «везет» на них. Поэтому и решено было написать эту статью. Предполагается, что читатель хотя бы немного знаком с rvalue-ссылками, move-семантикой и идеальной передачей.

Читать далее
Total votes 18: ↑17 and ↓1+16
Comments36

Неклассические контейнеры в C++

Reading time17 min
Views41K

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

В стандартную библиотеку C++ входит несколько контейнеров. Кроме этого, в Open Source есть несколько контейнеров, которые покрывают больше юзкейсов. Я опишу устройство интересных контейнеров вне STL и их отличия от классических контейнеров.

Читать далее
Total votes 68: ↑66 and ↓2+64
Comments24

«Скользкие» места C++17

Reading time9 min
Views33K
image

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

Сегодня я расскажу: почему if constexpr не является заменой макросов, каковы «внутренности» работы структурного связывания (structured binding) и его «подводные» камни и правда ли, что теперь всегда работает copy elision и можно не задумываясь писать любой return. 

Если не боишься немного «испачкать» руки, копаясь во «внутренностях» языка, добро пожаловать под кат.
Читать дальше →
Total votes 95: ↑94 and ↓1+93
Comments112
1
23 ...

Information

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