Недавно на isocpp.org была опубликована ссылка на статью Eli Bendersky «Perfect forwarding and universal references in C++». В этой небольшой статье есть простой ответ на простой вопрос — для решения каких задач и как нужно использовать rvalue-ссылки.
User
Автоматическое подключение сетевых МФУ с возможностью сканирования [Часть 1]
8 min
173KHP LaserJet 1522, 1536, 3052/3055, 300/400 Color...
Я думаю, многим системным администраторам известны описанные в заголовке мфу, отличаются они, в первую очередь, не очень удобной установкой и от этого имеют дурную славу. Однажды, копируя на очередной компьютер сквозь узкий канал пакет fullsolution для мфу весом около 300 мегабайт, идея разобрать этот инсталлятор и автоматизировать установку вылезла попапом на глаза — работу пришлось приостановить.

Разбором драйвера я занимался уже около полутора лет назад, в то время интернет на эту тему был совершенно пуст. Сейчас быстро погуглил по теперь уже известным мне ключевым словам утилит и нашел немного разрозненной информации. Несмотря на это, я решил. что собранная в одно место информация все равно не помешает, при том, что в этом посте она более полная.
+29
Проектор на коленке
6 min
170KБывает у меня такое — просыпаешься посреди ночи и думаешь: «Интересно, до утра еще долго? Нужно попытаться заснуть или уже смысла нет?». В этот момент взглянуть бы на часы, но:
В связи с этим была у меня давняя идея купить проекционные часы, которые на потолок время проецируют, но с ними тоже не все так просто, ибо, во-первых, их надо купить. Специально ради них в магазин не пойдешь, а «заодно» купить не получается — забываешь. Во-вторых, нужно, чтобы они «светили» в потолок постоянно, потому как нажимать на кнопку не то, что лень, но поставить часы рядом со спальным местом так, чтобы на кнопку было нажимать удобно, не получится. С «постоянным светом» же проблема — часов, светящих постоянно сразу из коробки, я не нашел, а колхозить самому «зажать кнопку навечно и припаять внешний блок питания» было не очень-то интересно.
И тут случилось так, что у меня сломался телефон Huawei P1, так что телефоном он быть перестал, а вот все остальное в нем, в общем-то, работало. Продать не получится, а выкинуть жалко, и воспаленный таким противоречием мозг начал искать место приложения полурабочего девайса.

Что случилось дальше — под катом.
- Я близорукий, поэтому любые настольные часы с размером символов меньше 20 см бесполезны;
- Спать в наручных часах неудобно, да и ночью на аналоговых стрелочных часах все равно ни черта не видно;
- Телефон бесконечно далеко (расстояние более 1м) от кровати, а вставать, чтобы решить, нужно ли еще поспать, как-то не логично.
В связи с этим была у меня давняя идея купить проекционные часы, которые на потолок время проецируют, но с ними тоже не все так просто, ибо, во-первых, их надо купить. Специально ради них в магазин не пойдешь, а «заодно» купить не получается — забываешь. Во-вторых, нужно, чтобы они «светили» в потолок постоянно, потому как нажимать на кнопку не то, что лень, но поставить часы рядом со спальным местом так, чтобы на кнопку было нажимать удобно, не получится. С «постоянным светом» же проблема — часов, светящих постоянно сразу из коробки, я не нашел, а колхозить самому «зажать кнопку навечно и припаять внешний блок питания» было не очень-то интересно.
И тут случилось так, что у меня сломался телефон Huawei P1, так что телефоном он быть перестал, а вот все остальное в нем, в общем-то, работало. Продать не получится, а выкинуть жалко, и воспаленный таким противоречием мозг начал искать место приложения полурабочего девайса.
Что случилось дальше — под катом.
+94
Бесплатный Code signing для Open Source от Certum
3 min
30KЗапустив сегодня программу, описанную в статье, я увидел следующее предупреждение:

Бросается в глаза необычный префикс, Open source developer. Кроме того, несколько дней назад я уже видел точно такой же префикс, с другим именем. Напрашивается вывод, что, скорее всего, существует какая-то программа выдачи подобных сертификатов.
Несложный поиск показал следующее:

Бросается в глаза необычный префикс, Open source developer. Кроме того, несколько дней назад я уже видел точно такой же префикс, с другим именем. Напрашивается вывод, что, скорее всего, существует какая-то программа выдачи подобных сертификатов.
Несложный поиск показал следующее:
+27
Quotient filter
5 min
16KQuotient filter — это вероятностная структура данных, позволяющая проверить принадлежность элемента множеству. Она описана в 2011 г. как замена фильтру Блума. Ответ может быть:
— элемент точно не принадлежит множеству;
— элемент возможно принадлежит множеству.
— элемент точно не принадлежит множеству;
— элемент возможно принадлежит множеству.
+41
Технологии межзвездных путешествий в научной фантастике
14 min
59KRecovery Mode

[source]
Говоря «научная фантастика», в большинстве случаев мы подразумеваем под этим "космическая научная фантастика". В том смысле, что будущее нам уже кажется практически немыслимым без освоения космоса.
И если с освоением нашей Солнечной системы всё выглядит относительно просто и понятно — способы передвижения отличаются только степенью наплевательства авторов к законам импульса, инерции и астродинамики, то с межзвездными перелётами всё гораздо интереснее. Варианты есть самые разные — от классических и никак не оскорбляющих физику с отправкой кораблей на обычной реактивной тяге, груженых либо мороженными тушками либо оборудованные для длительного проживания на них популяции людей в течении поколений, до совсем уж экзотических, вроде использования Ада в качестве промежуточной остановки.
В этой статье я постарался составить обзор способов доставки бренных человеческих тел от одной звездной системы к другой, которым пользуются наиболее популярные НФ произведения, плюс один мой личный фаворит.
+71
Библиотека Strutext обработки текстов на C++ — реализация лексического уровня
15 min
14KБазовые принципы
Этот текст является продолжением поста о библиотеке Strutext обработки текстов на языке C++. Здесь будет описана реализация лексического уровня представления языка, в частности, реализация морфологии.
+17
Почему по мере заполнения SSD падает скорость записи в RAID, или зачем нужен TRIM
7 min
122KЭта проблема наиболее актуальна для аппаратных RAID или firmware RAID (таких как Intel RST RAID 1/10/5/6) с непромышленными SSD.
SSD пишут и читают данные страницами, записать можно только на очищенные страницы, а очистить страницы можно только большими блоками. Например, у диска размер страницы 8 КБ, в блоке находится 128 страниц, таким образом, размер блока — 1024 КБ (здесь и далее, если не указано иного, КБ и МБ двоичные).
Например, если изменить 40 КБ в одном файле, то на физическом уровне это будет выглядеть так:

Особенность SSD
SSD пишут и читают данные страницами, записать можно только на очищенные страницы, а очистить страницы можно только большими блоками. Например, у диска размер страницы 8 КБ, в блоке находится 128 страниц, таким образом, размер блока — 1024 КБ (здесь и далее, если не указано иного, КБ и МБ двоичные).
Например, если изменить 40 КБ в одном файле, то на физическом уровне это будет выглядеть так:

+63
IceCash 1.3. Linux рабочее место кассира на php, с драйвером Штрих-М
1 min
26K
Всем привет. Как-то давным придавно писал статью первый пост о проекте IceCash. Собственно никуда этот проект не потерялся, живет себе в моей организации и понемногу совершенствуется. Работает примерно на сорока кассах. Не шедевр, конечно, но свою функцию выполняет.
+17
Фракталы, Fortran и OpenMP
6 min
15KКогда-то давно я решил «потрогать» Fortran. Единственную задачу которую я придумал — генерация фракталов (заодно и OpenMP в Fortran'е можно было бы попробовать). В процессе написания я часто сталкивался с проблемами, решение которых приходилось додумывать самому (например в интернете не так много примеров использования чисел двойной точности или бинарной записи в файл). Но рано или поздно все проблемы решились, и я хочу написать этот текст, который возможно кому-нибудь поможет.
Писать я буду на диалекте Fortran 90, но с GNU расширениями (те же числа двойной точности).
Писать я буду на диалекте Fortran 90, но с GNU расширениями (те же числа двойной точности).
+14
ah — лучше, чем history
3 min
30KТак получается, что я провожу в консоли (терминале) достаточно времени, порой даже больше, чем хотелось бы. Порой даже исполняю там какие-то команды и внимательно изучаю их вывод. Часто случается, что к выводу той или иной команды приходится возвращаться, а он постоянно теряется: то терминалы захлопываются, то в
Для того, чтобы сохранить вывод какой-либо утилиты я, как и многие, пользовался
Тогда я написал ah, крохотную утилитку, которая сильно-сильно улучшила мою жизнь.
tmux
окно закрываешь, то выводы прочих команд уже давным-давно забили и похоронили ту самую полезную строчку.Для того, чтобы сохранить вывод какой-либо утилиты я, как и многие, пользовался
tee
. Это работало, но постоянная суета среди бесконечных error.log
, out.log
, output.log
, err.log
log.log
, lll.txt
и тп если не сводила с ума, то безумно раздражала; вместо того, чтобы вести какой-то порядок, постоянно подмывало создать Новую Папку (1), где и похоронить эти самые логи, периодически бэкапя могильничек: порядок предполагал какую-то систематизацию, а в разгаре работы вспоминать как назвать свой файл крайне не хотелось.Тогда я написал ah, крохотную утилитку, которая сильно-сильно улучшила мою жизнь.
+89
Учимся писать userscript'ы
7 min
294KTutorial

В этой статье я хочу поведать о том, что такое юзерскрипты, c чем их едят и, главное, как их готовят!
Внимание: предполагается минимальное знание javascript.
На практике доказано: юзерскрипты может писать человек, не знакомый с программированием, но обладающий усидчивостью и желанием изучить javascript!
О том, что такое javascript и как с ним обращаться, можно узнать на javascript.ru.
+124
Наступают тёмные времена: тема HabraDarkAge
5 min
40K
Для стилей ZenComment настали тёмные времена. В век засилья ноутбуков, смартфонов и планшетов большое значение для аккумулятора имеет то, в каком цвете ты показываешь фон сайта. Если ты не пользуешься ЭЛТ-монитором, то яркость LED-экрана влияет на потребление энергиии. Белые бизнес-стиляги начинают жрать ресурс — и проигрывают. У ограниченных в знаниях технической подоплёки белых воротничков одни за другими начинают гаснуть экраны в темноте, в застрявшем вагоне электрички, когда истинные гики, потешаясь над их попытками включить телефон, дочитывают последнюю статью с Хабра на 20 минут дольше, спокойно дожидаясь спасателей, чем все остальные. Если, конечно, они в своё время установили тёмную тему юзерстилей…
Поэтому тёмные темы пользуются заслуженной популярностью. Их возникло за последние годы несколько, но не все они дожили до синхронизации и гармонии с текущей версией сайта. Даже конец августа этого года для стилей «New Habr: night mode» не стал моментом истины: в сентябре грянула перестройка (сайта), geektimes и прочие наслоения вечно текущего мира.
HabraDarkAge
+35
Писать скрипты для Mikrotik RouterOS — это просто
6 min
231KTutorial
RouterOS — сетевая операционная система на базе Linux. Данная операционная система предназначена для установки на аппаратные маршрутизаторы Mikrotik RouterBoard. Также данная система может быть установлена на ПК (или виртуальную машину), превращая его в маршрутизатор. Изначально довольно богатая функционалом ОС нет нет да и удивит отсутствием какой-нибудь нужной фишки из коробки. К сожалению, доступ к Linux-окружению очень сильно ограничен, поэтому, «это есть под Linux» абсолютно не равнозначно «это есть в RouterOS». Но не надо отчаиваться! Эта система предоставляет несколько возможностей для расширения своего функционала. Первая — самая простая и нативная — это возможность писать скрипты на встроенном языке.
В данной статье, в качестве примера будет рассмотрен скрипт, преобразующий DNS-имена в списки IP-адресов (address lists).
Зачем он может быть нужен? Многие сайты используют Round Robin DNS для распределения нагрузки (а некоторые и не только для этого). Чтобы управлять доступом к такому сайту (создать правило маршрутизации или фаервола) нам потребуются все IP-адреса, соответствующие этому доменному имени. Более того список IP-адресов по истечении времени жизни данной DNS-записи (в данном случае речь идёт об A-записи) может быть выдан абсолютно новый, поэтому информацию придётся периодически обновлять. К сожалению в RouterOS нельзя создать правило
В данной статье, в качестве примера будет рассмотрен скрипт, преобразующий DNS-имена в списки IP-адресов (address lists).
Зачем он может быть нужен? Многие сайты используют Round Robin DNS для распределения нагрузки (а некоторые и не только для этого). Чтобы управлять доступом к такому сайту (создать правило маршрутизации или фаервола) нам потребуются все IP-адреса, соответствующие этому доменному имени. Более того список IP-адресов по истечении времени жизни данной DNS-записи (в данном случае речь идёт об A-записи) может быть выдан абсолютно новый, поэтому информацию придётся периодически обновлять. К сожалению в RouterOS нельзя создать правило
блокировать все TCP соединения на порт 80 по адресу example.comна месте example.com должен быть IP-адрес, но как мы уже поняли, example.com соответствует не один, а несколько IP-адресов. Чтобы избавить нас от мучения создания и поддержки кучи однотипных правил, разработчики RouterOS дали возможность создавать правило так:
блокировать все TCP соединения на порт 80 по любому адресу из списка с именем DenyThisДело осталось за малым — автоматически формировать этот самый список. Кто ещё не утомился от моей писанины приглашаю под хабракат.
+11
Непереводимая игра слов по поводу CLANG, LLVM и msp430
11 min
20KTranslation
Целью данной работы является получение кода, сгенерированного бэк-эндом компилятора LLVM MSP430
CLANG — это просто фронт-энд компилятора С для LLVM. LLVM — это фреймворк для разработки фронт-эндов, бэк-эндов компиляторов для разных целевых платформ. Этот фреймворк облегчает анализ путем приведения всех фронт-эндов к промежуточному представлению (IR). Все бэк-энды оперируют с этим общим представлением.
Одна из целевых платформ, которая меня интересует, это MSP430 — популярный встраиваемый микроконтроллер, используемый во многих микропотребляющих приложениях.
Текущая поддержка MSP430 весьма ограничена. Я надеюсь, что смогу помочь кому-нибудь, кто слишком фейс-палмит, сохранить лицо. 1
Текущая поддержка данной платформы предельно ограничена. Надеюсь, я смогу восполнить этот пробел. Ниже приведена упрощенная диаграмма того, как должна происходить сборка:
Введение
CLANG — это просто фронт-энд компилятора С для LLVM. LLVM — это фреймворк для разработки фронт-эндов, бэк-эндов компиляторов для разных целевых платформ. Этот фреймворк облегчает анализ путем приведения всех фронт-эндов к промежуточному представлению (IR). Все бэк-энды оперируют с этим общим представлением.
Одна из целевых платформ, которая меня интересует, это MSP430 — популярный встраиваемый микроконтроллер, используемый во многих микропотребляющих приложениях.
Текущая поддержка MSP430 весьма ограничена. Я надеюсь, что смогу помочь кому-нибудь, кто слишком фейс-палмит, сохранить лицо. 1
Поехали
Текущая поддержка данной платформы предельно ограничена. Надеюсь, я смогу восполнить этот пробел. Ниже приведена упрощенная диаграмма того, как должна происходить сборка:
+30
Конечный автомат (он же машина состояний) на чистом С
5 min
133KПочти каждый микроконтроллерщик сталкивался с громадными switch-case и мучительно их отлаживал.
И много кто, начиная писать реализацию какого-либо протокола, задумывался как написать её красиво, изящно, так чтобы через месяц было понятно что ты имел в виду, чтобы она не отжирала всю памятьи вообще какала бабочками.
И вот тут на помощь приходят машины состояний, они же конечные автоматы (те самые которые используются в регулярных выражениях).
Собственно через регулярные выражения я к ним и пришёл.
И много кто, начиная писать реализацию какого-либо протокола, задумывался как написать её красиво, изящно, так чтобы через месяц было понятно что ты имел в виду, чтобы она не отжирала всю память
И вот тут на помощь приходят машины состояний, они же конечные автоматы (те самые которые используются в регулярных выражениях).
Собственно через регулярные выражения я к ним и пришёл.
+45
Немножко про радиацию
9 min
99KЯ уже привык к тому, что для большинства людей радиация — область мифологии, а не науки. Но тут наткнулся на эту запись, в которой уже типа профессионал объясняет безумную опасность советских датчиков дыма. После этого решил, что стоит таки заняться просветительством.
+81
Спутник — это очень просто
19 min
65KМы быстро привыкаем к прогрессу. Вещи, которые нам несколько лет назад казались фантастикой, сегодня не замечаются и воспринимаются как всегда существовавшие. Достаточно покопаться в старых вещах, как вдруг найдется монохромный мобильный телефон, дискета, магнитофонная кассета или даже катушка. Не так давно это было. Не так давно и интернет был «по талонам» под скрип модема. А кто-то помнит 5,25" жесткие диски или даже магнитофонные кассеты с компьютерными играми. И обязательно найдется тот, кто скажет, что в его время были 8" дискеты и бобины для ЕС ЭВМ. И в тот момент ничего не было современнее, чем это.
В эти недели можно наблюдать традиционные мероприятия, посвященные запуску первого Спутника — началу Космической эры. Силой случая спутник, который должен быть первым, стал третьим. А первым полетел совсем другой аппарат.
Этот текст о том, как просто сейчас услышать спутники на околоземных орбитах и как это было в начале космической эры. Перефразируя известной когда-то книги Е. Айсберга: «Спутник — это очень просто!»
В эти недели можно наблюдать традиционные мероприятия, посвященные запуску первого Спутника — началу Космической эры. Силой случая спутник, который должен быть первым, стал третьим. А первым полетел совсем другой аппарат.
Этот текст о том, как просто сейчас услышать спутники на околоземных орбитах и как это было в начале космической эры. Перефразируя известной когда-то книги Е. Айсберга: «Спутник — это очень просто!»

+66
Первое независимое подтверждение LENR (по-простому – холодный синтез)?
4 min
268KTranslation
LENR – Low-energy nuclear reaction – Низкоэнергетическая ядерная реакция.
Сразу скажу, что это лишь первое шаг и далее необходимы более серьёзные тестирования и ещё одно подтверждение от другой независимой команды.

E-Cat изобретателя Андреа Росси – устройство, использующее холодный синтез для выработки большого количества дешёвой экологичной энергии – в марте 2014г было проверено независимой группой учёных, представивших сейчас 54-страничный отчёт.
Они исследовали маленький E-Cat в течение 32 дней, за которые реактор произвёл 1.5 мегаватт-часов энергии. Это «намного больше, чем может быть получено из любого известного химического источника для реактора подобного размера».
Интересно, что в самом отчёте написано, что 32 дня – это заранее установленный срок эксперимента. То есть, реактор выключили искуственно, и он, к тому времени, всё ещё не подавал признаков снижения выдаваемой мощности.
Сразу скажу, что это лишь первое шаг и далее необходимы более серьёзные тестирования и ещё одно подтверждение от другой независимой команды.

E-Cat изобретателя Андреа Росси – устройство, использующее холодный синтез для выработки большого количества дешёвой экологичной энергии – в марте 2014г было проверено независимой группой учёных, представивших сейчас 54-страничный отчёт.
Испытатели
Джузеппе Леви – Университет Болоньи, Италия
Эвелин Фоски – Болонья, Италия
Бо Хойстед, Роланд Петтерсон и Ларс Тегнер – Университет Уппсалы, Швеция
Ханно Эссен – Королевский Институт Технологий, Стокгольм, Швеция
Эвелин Фоски – Болонья, Италия
Бо Хойстед, Роланд Петтерсон и Ларс Тегнер – Университет Уппсалы, Швеция
Ханно Эссен – Королевский Институт Технологий, Стокгольм, Швеция
Они исследовали маленький E-Cat в течение 32 дней, за которые реактор произвёл 1.5 мегаватт-часов энергии. Это «намного больше, чем может быть получено из любого известного химического источника для реактора подобного размера».
Интересно, что в самом отчёте написано, что 32 дня – это заранее установленный срок эксперимента. То есть, реактор выключили искуственно, и он, к тому времени, всё ещё не подавал признаков снижения выдаваемой мощности.
+129
Советская операция по спасению мертвой космической станции
19 min
352KTranslation

Источник: Spacefacts.de
Эта история произошла в 1985 году, но в последствии постепенно забылась. Шли годы — многие подробности были искажены, кое-что было выдумано. Даже те, кто первыми рассказал об этих событиях, допускали явные ошибки. Операция «Союза-13» по спасению орбитальной станции «Салют-7» была впечатляющей попыткой проведения ремонта в открытом космосе. Писатель Николай Белаковский собрал все факты воедино и готов впервые за все время предоставить нам полноценный рассказ о тех событиях.
+298
Information
- Rating
- 4,052-nd
- Location
- Кызыл, Тува (Тувинская Респ.), Россия
- Registered
- Activity
Specialization
Software Developer, Application Developer
Senior
From 150,000 ₽
Python
C++
Linux
Docker