Pull to refresh
58
0
Смирнов Владимир @mapron

Программист C++

Send message

Интероперабельность между С++ и Rust

Level of difficultyHard
Reading time13 min
Views7.3K
image

image

Этот пост основан на презентации, с которой автор выступил на конференции EuroRust 2022 в Берлине. Доступны слайды и видеозапись.

Автор, работающий в компании Slint, участвует в создании UI-инструментария, написанного на Rust. Этот UI-инструментарий может использоваться и с другими языками и экосистемами, кроме той, для которой был написан, поэтому в Slint предусмотрены API для C++ и даже для Javascript. Естественно, эти API должны восприниматься как совершенно нативные для разработчиков, имеющих дело с этими языками. Именно поэтому ребром стоит вопрос о том, как создать нативно воспринимаемые API к коду Rust для пользователей, привыкших работать с C++.

В Slint предусмотрена возможность пользоваться имеющимся кодом на C++ для дальнейшей его интеграции в другие экосистемы для разных операционных систем. Это касается таких тем, как оформление виджетов, обеспечение доступности и пр. Вот почему не менее важно открывать из мира Rust удобный доступ к коду, уже написанному на C++.

В этом посте хотелось бы исследовать оба направления интеграции между Rust и C++ и представить некоторые инструменты, используемые в Slint.
Читать дальше →
Total votes 41: ↑39 and ↓2+37
Comments1

Настраиваем окружение Qt6+QtC без VPN

Reading time3 min
Views38K

Как известно, с недавних пор сервера qt.io запрещают загрузку любых архивов с российских IP. Если первое время проверка шла только на получение метаинформации, теперь любая загрузка файла обрывается сервером.

Обычные советы, как это обойти, включают:

Используй платный безлимитный VPN;
Используй дистрибутив Linux и его бинарные сборки;
Собирай сам из исходинков.

Все это рабочие советы, но не очень дружелюбны к начинающим разработчикам, которые только hello world начинают собирать. Я расскажу, как можно быстро настроить окружение используя зеркала Yandex и github.

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

Как я несколько лет боролся с прокрастинацией и победил: полное практическое руководство

Reading time8 min
Views287K

Постоянно откладываешь дела на потом и не видишь в этом проблемы? Мне это знакомо. Расскажу как не повторить моих ошибок и почему пора это прекращать. Не откладывай эту статью на потом!

Начать читать
Total votes 145: ↑120 and ↓25+95
Comments174

Дефицит есть, а денег не дают. Почему?

Reading time27 min
Views292K

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

Читать далее
Total votes 618: ↑603 and ↓15+588
Comments1205

Почему быть вегетарианцем на самом деле невозможно

Reading time4 min
Views79K
В случае, если вы забыли раздел эко-ниш из школьного курса биологии, вот краткое изложение.

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

Очевидно, что животные едят растения. Но вот что не очевидно, так это то, что растения едят животных. Они растут благодаря им (загуглите «fish emulsion»). В моей новой книге «Критика моральной защиты вегетарианства» я называю это транзитивностью.

Попробуйте переварить это


image

Я сделаю паузу, чтобы утихли коллективные вопли биологов и вегетарианцев.
Читать дальше →
Total votes 129: ↑77 and ↓52+25
Comments947

Linux, Microsoft и марксизм

Reading time7 min
Views42K

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


Майкрософт и Linux.
fake


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


Первоначальная диспозиция


Целью Майкрософт, как и у любой другой частной компании, является извлечение прибыли и чем больше — тем лучше. Еще у крупных коммерческих компании есть нечто вроде миссии, но обычно компании ей следуют постольку, поскольку это не мешает им зарабатывать прибыль для акционеров.

Читать дальше →
Total votes 81: ↑73 and ↓8+65
Comments133

Используем Yii2. Пишем очередную CMS или попытка значительно ускорить разработку при минимальных накладных расходах

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

Идея проекта yicms заключалась в том, чтобы собрать все наработки для фреймворка Yii2, которые казались удобными в некую систему, во главе угла которой должно ставиться удобство использования, гибкость и возможность с помощью ее инструментов значительно ускорить разработку типовых сайтов. Данный проект разрабатывался мной для «души», однако в настоящий момент он уже находится в стадии беты.
Читать дальше →
Total votes 21: ↑16 and ↓5+11
Comments11

Подборка: 4 полезных сервиса для потенциальных иммигрантов в США, Европу и другие страны

Reading time3 min
Views27K


Тема переезда в Европу, США или другие приятные регионы мира довольно часто поднимается на Хабре. Я решил собрать в одном месте список онлайн-сервисов, которые будут полезны тем, кто всерьез задумался об иммиграции. На удивление, «живых» и активных стартапов в этой сфере не так и много. Для статьи я отобрал четыре проекта.
Читать дальше →
Total votes 52: ↑46 and ↓6+40
Comments13

WiX.Py: cобираем MSI пакет «в три строчки»

Reading time3 min
Views12K

Нет времени и желания изучать километровые файлы WiX, чтобы собрать MSI инсталлер для своего проекта, погружаясь при этом в бездны MSDN? Хотите собирать инсталлер, описывая его простыми и понятными терминами, в несколько строк? Есть клиническая склонность к кроссплатформенности и сборкам под Linux & Docker? Ну тогда вам под кат!

Читать дальше →
Total votes 31: ↑29 and ↓2+27
Comments18

Лучшие головоломки, про которые не знает никто*

Reading time5 min
Views94K
*почти

Бодрый день, дамы и господа. Я наконец решил, что негоже мне сидеть в рид-онли, когда у меня в голове зреет столько полезных и нужных комментариев, и пора получить инвайт. А значит, надо писать пост. О чём? Конечно же, о том, что я люблю и знаю — об играх. Конкретно — о головоломках.

Огромный недостаток головоломки по сравнения с какими-нибудь ММОРПГ — очень малая реиграбельность. Я всегда думал, что технология стирания памяти в «Вечном сиянии чистого разума» использовалась не по назначению. Вместо того, чтобы изжить из воспоминаний какую-то женщину, не лучше ли забыть своё прохождение любимой игры, а потом пройти её заново? К сожалению, пока что это фантастика. Поэтому всё, что я могу — изнывая от ностальгии, в письменной форме вспоминать все эти прекрасные вещи, вернуться к которым мне, увы, не суждено.

Учитывая «одноразовость» головоломок, тем более странно и в чём-то даже преступно, что о замечательнейших представителях этого жанра узнаёшь практически случайно. Мой пост имеет целью исправление этой несправедливости, и я как раз заканчиваю затянувшееся предисловие и перехожу к сути.
Total votes 78: ↑74 and ↓4+70
Comments117

Почему я выкинул все старые DVD / CD или как поменялось моё потребление контента

Reading time3 min
Views21K
На выходных я случайно полез разбирать хлам на полке и обнаружил стопку аккуратно сложенных DVD/CD дисков. Их оказалось более сотни. Среди них были как купленные диски, так и записанные. На них были фильмы, мультфильмы и музыка.



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

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

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

Возможно через несколько лет и эти способы потребления контента будут устаревшими… поживём увидим :)
Читать дальше →
Total votes 27: ↑10 and ↓17-7
Comments106

Типичные грабли на пути программиста от Junior'а к Senior'у

Reading time6 min
Views98K
Молодой программист, едва закончивший или ещё даже не закончивший ВУЗ, готов свернуть горы, учиться, учиться и ещё раз учиться и ему близлежащее будущее кажется таким:



Но более опытные товарищи знают, что на самом деле на его пути давно уже заботливо разложены грабли и путь от Junior'а к Senior'у выглядит как-то так:



Давайте вспомним некоторые типичные грабли, на которые мы все (ну или большинство) наступали сами того не замечая. Конечно, для опытных разработчиков многое покажется очевидным капитанством, однако молодых специалистов такие ловушки могут легко увести на темную сторону силы.
Читать дальше →
Total votes 68: ↑55 and ↓13+42
Comments73

Блок-схема для выбора STL-алгоритма

Reading time1 min
Views28K


Третьего дня, во время сортировки старых закладок, попалась мне на глаза блок-схема с алгоритмом выбора STL-контейнера. «Почему же для контейнеров есть, а для стандартных алгоритмов нет? — подумал я. — Это необходимо исправить». Подумано — сделано. Сперва планировалось за пару часов нарисовать нечто простенькое, но в дальнейшем обнаружилось, что алгоритмы никак не хотят умещаться в простенькую схему. Я слегка увлекся, и спустя два вечера схема вобрала в себя 84 алгоритма, а также немного дополнительной информации. Под катом можно увидеть, что получилось в итоге.
Долой велосипеды!
Total votes 56: ↑52 and ↓4+48
Comments19

SCADA и мобильники: оценка безопасности приложений, превращающих смартфон в пульт управления заводом

Reading time9 min
Views17K
image

Сегодня мобильные технологии – неотъемлемая часть нашей жизни, и иногда проникают туда, где их не следовало бы использовать. Удобство часто оказывается важнее безопасности. Сейчас можно отслеживать состояние АСУ ТП (автоматизированной системы управления технологическим процессом) или даже управлять ей с новенького смартфона на Android или iOS. Поищите “HMI” (человеко-машинный интерфейс), “SCADA” (система диспетчерского контроля и сбора данных) или “PLC” (программируемый логический контроллер) в магазине Google Play, и вы удивитесь количеству результатов. Более того, многие из этих приложений разработаны серьезными производителями: Siemens, GE, Omron и т. д., и обеспечивают доступ, контроль и управление HMI, PLC, DCS (распределенная система управления) и SCADA-системами в инфраструктуре АСУ ТП. Безопасны ли они? Может ли злоумышленник нанести вред, получив доступ к планшету инженера-технолога? Какие уязвимости существуют в этих приложениях? Какие векторы атак возможны?
Читать дальше →
Total votes 20: ↑16 and ↓4+12
Comments12

Управление логгированием в systemd

Reading time12 min
Views119K
Systemd Journal

Демон инициализации systemd де-факто уже стал стандартом в современных Linux-системах. На него перешли многие популярные дистрибутивы: Debian, RHEL/CentOS, Ubuntu (начиная с версии 15.04). В systemd используется принципиально иной (по сравнению с традиционным инструментом syslog) подход к логгированию.
В его основе лежит централизация: специализированный компонент journal cобирает все системные сообщения (сообщения ядра, различных служб и приложений). При этом специально настраивать отправку логов не нужно: приложения могут просто писать в stdout и stderr, a journal сохранит эти сообщения автоматически. Работа в таком режиме возможна и с Upstart, но он сохраняет все логи в отдельный файл, тогда как systemd сохраняет их в бинарной базе, что существенно упрощает  систематизацию и поиск.

Хранение логов в бинарных файлах также позволяет избежать сложностей с использованием парсеров для разных видов логов. При необходимости логи можно без проблем переконвертировать в другие форматы (более подробно об этом будет рассказано ниже).
Journal может работать как совместно с syslog, так и полностью заменить его.
Для просмотра логов используется утилита journalctl. Об особенностях и тонкостях работы с ней мы расскажем в этой статье.
Читать дальше →
Total votes 44: ↑41 and ↓3+38
Comments15

Обзор столов для работы сидя-стоя

Reading time6 min
Views150K
За последние 4-5 лет тема столов для работы сидя-стоя из диковинной стала обыденной, один из хабровчан даже опубликовал статью про поиск и выбор такого стола, но в статье, к сожалению, на выбор были предложены только два варианта. Зато его статья послужила поводом самому «побороздить» просторы интернета и сделать более расширенный обзор, какие вообще бывают варианты столов для работы сидя-стоя, чем они отличаются и, по возможности, сколько денег стоят.
Читать дальше →
Total votes 30: ↑26 and ↓4+22
Comments45

Дайджест регулирования РУнета на апрель

Reading time3 min
Views20K


Приветствую всех читателей. В начале месяца я опубликовал небольшой комментарий с мини-обзором последних тенденций наших законодателей (и не только) в сфере регулирования Интернета в России. Сегодня я публикую обзор новостей из мира регулирования Интернета в России. Будет интересно!
Читать дальше →
Total votes 45: ↑39 and ↓6+33
Comments38

FISCHERTECHNIK: хемотроника, ионисторы, электрохимические суперконденсаторы внутри детского конструктора для программистов

Reading time6 min
Views88K
В детстве я не расставался с конструкторами. У меня их было 2 типа: аналог LEGO (пластмассовый и с пупырышками) и металлический с болтиками. После поста на Хабре, я понял, насколько скудный был в те времена выбор. Пару недель назад мембер хакспейса Костя Костюк подсказал мне, что в Москве есть люди, которые занимаются продвижением и обучением FISCHERTECHNIK.


(на фото: Электромобиль с заправочной станцией и водородный топливный элемент, солнечная батарея)

В Германии вокруг этого конструктора сложилось свое сообщество, они гордятся своим изобретателем и ставят свои рекорды.
Видео

Чем понравился мне этот конструктор — хардкорностью научно-технической серьезностью и отсылками ко множеству реальных механизмов/устройств (от принтера, CD-привода и механизмов Леонардо да Винчи, до шаговых экскаваторов, роботов и электромобилей). В наборы входит и контроллер с графической средой программирования, что позволяет учить детей основам алгоритмов и программирования.

Под катом немного про автомобиль на водородном топливном элементе (из конструктора «Экологическая
энергетика»
+ «Топливный элемент»), про изобретателя конструктора и короткий обзор существующих в Москве наборов для конструирования (можно только позавидовать тем гикам, кому сейчас 8+ лет, ибо на новый год их ждут такие подарки).


(Осторожно! Под катом боль за бесцельно прожитые годы)
Читать дальше →
Total votes 86: ↑84 and ↓2+82
Comments16

StableBit DrivePool — дисковый массив с дублированием файлов

Reading time4 min
Views101K
Я постоянно пытаюсь найти какие-то альтернативы RAID'ам в плане объединения нескольких жестких дисков в единый массив. Пробовал много что, но ни на чем так и не остановился окончательно. RAID не нравится тем, что штука достаточно капризная, негибкая и требовательная до дискового пространства.

image

Что мне вообще хочется:
  1. Объединить диски с данными в один массив большого объема, чтобы не приходилось вручную сортировать файлы — что возникает при нескольких дисках (пусть даже при монтировании их в папки).
  2. Иметь возможность добавлять/удалять/заменять диски в любой момент без развала массива.
  3. Независимость информации на дисках друг от друга — чтобы смерть одного из них не приводила к недоступности остальных.
  4. В идеале — какой-то метод хранения одного файла на нескольких дисках. Бэкапы — это хорошо и я их делаю, но лучше, когда к их помощи не приходится прибегать.


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

Information

Rating
Does not participate
Location
Нижний Новгород, Нижегородская обл., Россия
Date of birth
Registered
Activity