Hatred's Log Place

DON'T PANIC!

Dec 21, 2016 - 1 minute read - Comments -

О PDF-просмотрщиках

Немного о наболевшем.

В PDF, обычно, распространяется документация.

В документации, обычно, есть перекрёстные ссылки.

По ссылкам неплохо иметь возможность переходить.

До сего момента речь шла, практически, о 100% доступных читалок для PDF.

А вот теперь, перейдя по ссылке, неплохо бы иметь возможность вернуться назад, к той точке, откуда мы пришли.

Внезапно, но это, казалось бы простое требование просто фантастически прореживает стройные ряды просмотрщиков!

После длительных поисков и переборов остался такой набор: * Кроссплатформенные * Как это не парадоксально, но это PDF.js иными словами - Firefox. И он, пожалуй, единственный. * Linux * Тут тоже нет разнообразия, единственный представитель, который умеет эту простую фичу - KDEшный Okular. Evince и производные что-то пытаются делать, но работают очень странно. Другие не умеют вовсе. * Windows * Кто сказал - Acrobat Reader? Нет! Он не умеет. Из опробованных мной, с неперегруженным интерфейсом, только два варианта: STDUViewer и Sumatra PDF. Первый подглючивает временами, остановился на втором (на работе). Foxit Reader тоже, вроде, умеет, но его новомодный интерфейс мне непонятен и неприятен.

UPD: Сегодня появилась статья на Хабре, где человек соединил Qt, QWebEngineView и PDF.js, вот репозиторий на GitHub: * https://github.com/yshurik/qpdfjs Про годность или негодность сего поделия напишу чуть позже.

Dec 21, 2016 - 1 minute read - Comments -

Системы заземления TN-S, TN-C, TNC-S, TT, IT

Наглядная статья: Системы заземления TN-S, TN-C, TNC-S, TT, IT

Ну и несколько замечаний по теме проводки: * Если у вас до сих пор проводка по квартире алюмишкой в полтора квадрата - озадачьтесь установкой меди. И зарисуйте схему проводки. * Не чурайтесь использовать разделительный трансформатор для титана, стиральной машины и т.п. * УЗО * Если ваша сеть не TN-S, то сделайте (наймите того, кто сможет!) хотя бы TN-C-S. Следите, что бы заземляющий ноль не был подключен на тот же “орех”, что и остальные. А лучше, что бы у вас было два своих подключения на нулевой провод в щитке: один для нуля, другой - для защитного зануления. Ещё лучше: требуйте от своей управляйки модернизации сети. В конце концов, часто то, что нам подсовывают под кап-ремонтом, им не является. Замена коммуникаций - это уже часть его.

Dec 15, 2016 - 1 minute read - Comments -

Переключение раскладки по CapsLock в Windows

На работе приходится сидеть в Windows по ряду причин, но очень неудобно, что нет привычного переключателя раскладок клавиатуры по CapsLock.

Перебрал несколько вариантов: специализированные утилиты (сайты большинства умерли (привет Recaps, Keyla) за исключением, пожалуй Capslang), правка реестра Windows (https://habrahabr.ru/post/305658/, не понравилось), использовал PuntoSwitcher (стрельба из пушки по воробьям ради только переключалки, плюс досадно глючил временами).

В результате остановился на варианте с AutoHotkeys и эмуляцией нажатия клавиш переключения раскладки. Кроме того, учёл, что в рабочей сессии VirtualBox переопределять клавишу не нужно (для других VM код будет похожим). В результате получился такой скрипт:

SetTitleMatchMode RegEx
#ifWinNotActive, ^.+ - Oracle VM VirtualBox$
	SetCapsLockState, AlwaysOff
	+CapsLock::CapsLock
	CapsLock::Send, {Ctrl down}{Shift down}{Shift up}{Ctrl up}
#ifWinNotActive
return

Сохраняем, запускаем, пользуемся. Если нужно, добавляем в автозагрузку. CapsLock остаётся доступен по сочетанию Shift+CapsLock.

Справочник по регуляркам: https://autohotkey.com/docs/misc/RegEx-QuickRef.htm

Ссылки по теме: * https://gluek.info/2008/08/27/caps-lock-windows/ * https://habrahabr.ru/post/305658/ * http://flydom.ru/capslang/ (что-то не завелось у меня, может что поменялось) * http://superuser.com/questions/429930/using-capslock-to-switch-the-keyboard-language-layout (моё решение взято именно отсюда, плюс проверка VBox) * http://dae.me/blog/1173/pereklyucheniye-yazika-vvoda-po-caps-lock-v-windows/ подборка методов

Dec 3, 2016 - 1 minute read - Comments - туризм

Распродажа туристического снаряжения

Немного накопилось, что не подошло, что хочется поменять, а что уже заменилось, поэтому выставляю:

Dec 2, 2016 - 1 minute read - Comments - programming c++

C++ и хорошие практики

Существуют хорошие практики программирования и их стоит изучать. Часть из них применима не всегда. Часть стандартов хорошо себя зарекомендовала, но стоят денег, например MISRA C++, но, помимо цены, ещё и достаточно консервативен и покрывает только язык до стандарта C++11 (выпущен в 2008 году).

Ниже список, на мой взгляд, хороших источников, которые хорошо иметь под рукой и регулярно пробегаться глазами: * The C++ Core Guidelines - естественно на первом месте, руководство от, можно сказать, создателей, корифеев языка. Основные составители Бьярне Страуструп, Герб Саттер и, конечно, сообщество. Развивается оперативно и быстро адаптируется под новые фишки стандарта. * High Integrity C++ Coding Standard - коротко и по делу. Немного пояснения: https://en.wikipedia.org/wiki/High_Integrity_C%2B%2B. Сейчас покрывает C++11. На этот стандарт даёт отсылки MISRA C++ 2008. * Все книги из Скотта Майерса из серии Эффективное программирование на C++.

Ну и на затравку: писать надёжный софт на C++ можно - C++ on Mars: Incorporating C++ into Mars Rover Flight Software :wink:

И стоит помнить, что есть практики, есть стандарты, но не стоит выключать свой мозг и обкладываться паттернами, бустом и прочими непотребствами, если вам нужно вывести всего лишь “Hello, world!”.

Nov 21, 2016 - 1 minute read - Comments -

Пакеты с отладочными символами для Debian

Пара линков на тему: * https://wiki.debian.org/DebugPackage * https://wiki.debian.org/AutomaticDebugPackages

Первый описывает базовые подходы для версий debhelper меньше и больше 7. Второй линк описывает новый, рекомендованный подход с автоматическим созданием dbgsym пакетов.

Что бы файлы с отладочной информацией строились в PPA, в настройках (Change details…) нужно включить опции:

[x] Build debug symbols
[x] Publish debug symbols

Nov 3, 2016 - 2 minute read - Comments -

Ветки обсуждений в Thunderbird

Просто перечисление нескольких скрытых опций, которые могут оказаться полезными. В дополнение к http://kb.mozillazine.org/Stop_threading_by_subject: * mailnews.sort_threads_by_root - если кому-то хочется, что бы при сортировке по дате обсуждений использовалась дата корневого письма, а не самого последнее. Не знаю, кому такое может пригодиться, но полезно знать, на случай, если какое-то расширение изменит эту настройку в true. * mail.operate_on_msgs_in_collapsed_threads - управляет поведением на свёрнутых обсуждениях: показывать не-conversation вариант (true - по-умолчанию) или показывает корневое сообщение (false). Так как conversation-вариант попросту нефункциональный в TB, то я использую false.

Теперь ищу способ для: * Сделать свернутое обсуждение не просто подчёркнутым но выделенным жирным. Вроде как через пользовательский CSS можно. * Сделать так, что бы обсуждение было только с одним уровнем ветвления, а остальные сообщения были в порядке прихода. Для большинства обсуждений важна хронология, а контекст содержится в цитируемом сообщении. Этот бы вариант можно было бы решить группировкой по дискуссии (Group By Discussion), к сожалению поиск в интернете для этого не дал мне результатов (и вопрошание на SuperUser - тоже).

Ну а под катом немного расширений, которые могут показаться кому-то интересными в части организации дискуссий.

Oct 10, 2016 - 2 minute read - Comments - projects programming

CMake и Qt Creator: на пути к CMake server mode

В транке появилась пачка изменений, ориентированные на использование CMake Server Mode, в связи с чем плагин теперь может работать только с CMake версии 3.0 и более новым. Тобиас крепко взялся за плагин и будем надеяться, что, как минимум, скоро не будет требоваться: 1. промежуточная генерация CodeBlocks проекта, дабы распарсить цели, получить список файлов и параметров компилятора. 2. ручное парсирование файла кеша, для получения списка опций и их изменения.

Пока CMake Server Mode большего не предоставлят: в основном информация, но не изменение её. Так что ожидать автоматическое добавление файла к нужной цели или переименование файла в билд-системе средствами этого нового режима не стоит.

Ну а в самом QtC пока только инфраструктурные изменения, чтобы эту фичу начать поддерживать.

И от себя: в CMakeProjectManager2 добавил возможность использовать трюк от cmake, что бы задать варианты возможных значений для какого-то параметра и выводить их при редактировании в виде выпадающего списка. Фичу портировал в апстрим и завёл ревью, кому нужно, голосуйте: https://codereview.qt-project.org/#/c/173340

Про сам трюк: * https://blog.kitware.com/constraining-values-with-comboboxes-in-cmake-cmake-gui/ * http://blog.bethcodes.com/cmake-tips-tricks-drop-down-list * https://cmake.org/cmake/help/v3.3/prop_cache/STRINGS.html

Если коротко, то в вашем CMakeLists.txt, для задания возможных значений для параметра, нужно добавить конструкцию:

set_property(CACHE OptionName PROPERTY STRINGS PossibleValue1 PossibleValue2 PossibleValue3 ... PossibleValueN)

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

Ссылки по теме: * https://blog.qt.io/blog/2016/11/15/cmake-support-in-qt-creator-and-elsewhere/

Sep 22, 2016 - 1 minute read - Comments - programming c++

IncludeOS

Не мог обойти вниманием сиё творение.

Ребята запилили на суровом C++11/14 однозадачную сервисо-ориентированную операционку. Суть: операционка с минимальным футпринтом (образ 707кб), которая обслуживает ровно одну задачу (в их терминологии - сервис) и работает под управлением виртуальной машины: KVM, VirtualBox, используя возможности аппаратной виртуализации.

Сама операционка внутри представлена в виде асинхронного фреймворка, призванного, в первую очередь, строить сетевые приложения. Т.е. внутри реализован стек TCP/IP (судя по описанию, пока только IPv4, но IPv6 активно пилится). Многопоточность не поддерживается, реализован подход с кооперативной многозадачностью, которых очень хорошо ложится на асинхронную модель. Есть базовая поддержка файловых и дисковых операций (как минимум есть поддержка RAM-диска и файловых систем Ext4 и FAT).

При всём этом доступны для использования libc++ от LLVM (в том числе исключения), stdc в лице newlib.

В общем, интересное решение для сервис-ориентированных архитектур, для создания выделенных микросервисов. Плюс приятная лицензия: Apache2.

Ну и ссылки: * http://www.includeos.org/ * https://github.com/hioa-cs/IncludeOS * http://www.slideshare.net/IncludeOS/include-ltos-from-bootloader-to-rest-api-with-the-new-c - слайды-перезентация для получения представления об системе.

Aug 27, 2016 - 2 minute read - Comments -

Батареи для Lenovo Thinkpad T530

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

Aug 26, 2016 - 6 minute read - Comments - linux

Обновление Linux Mint 17.3 до 18...

Или разлепляем пельмени, а потом собираем их обратно. Пару заметок.

Собственно разработчики Linux Mint всегда рекомендовали использовать новую установку вместо того, что бы просто обновлять систему. Несколько релизов я всё же обновлялся путём исправления репозиториев и apg-get upgrade / apt-get dist-upgrade. При выходе 18 версии дистрибутива авторы выложили инструмент и инструкцию для сего обновления: * http://blog.linuxmint.com/?p=3068 * https://community.linuxmint.com/tutorial/view/2316

Как обычно проблемы кроятся в мелочах. А именно: не учитывается влияние PPA от слова совсем.

Jul 8, 2016 - 1 minute read - Comments - linux

Thinkpad T530 BIOS Update

Снова мемориз.

  1. Находим BIOS тут или по модели тут. Скачиваем ISO. Не смущаемся наличием в описании разных Windows.
  2. Используем руководство отсюда. В частности, как использовать GRUB2, что бы не шить ISO никуда. У меня не сработало - зависание программы прошивальщика после первого подтверждения своих намерений. Помог способ с загрузочной флешкой. Конспективно:bash ./geteltorito.pl -o xxx.img xxx.iso sudo dd if=xxx.img of=/dev/sdX
    • Перезагружаемся, выбираем флешку как источник загрузки и грузимся с неё. Дальше всё понятно.

Опционально проверяем версию BIOS и время релиза из системы:

sudo dmidecode -s bios-version
sudo dmidecode -s bios-release-date

Jul 7, 2016 - 1 minute read - Comments - туризм maps

Garmin GPSMAP 62s/64s: обновления

Это просто мемориз, а то задолбался каждый раз искать где и как брать свежий фирмварь и патчер для JNX.

  1. Прошивка:
  2. Патчер:

Инструкция по обновлению (подсматривается на официальной странице прошивки нажав Ctrl-U :simple_smile:):

NOTE FOR USERS WANTING TO DOWNLOAD SOFTWARE ON ONE COMPUTER AND THEN INSTALL IT TO THEIR
DEVICE USING A DIFFERENT COMPUTER:

1) To download the region file used by WebUpdater, copy and paste this link into your browser
   on computer #1:

   http://download.garmin.com/software/GPSMAP62_78_WebUpdater__630.gcd

2) Bring GPSMAP62_78_WebUpdater__630.gcd to computer #2 where your device is attached.

3a) Then you can drag-and-drop GPSMAP62_78_WebUpdater__630.gcd onto the WebUpdater icon on your desktop.

3b) Or you can invoke WebUpdater at the command line, passing in the region file as a parameter:

   C:<br/>>WebUpdater.exe c:<br/>path<br/>to<br/>GPSMAP62_78_WebUpdater__630.gcd

Что они нормальным путём этого не предлагают мне не понятно.

Инструкция тоже не полная. Нужно: 1. Скачать файл прошивки 2. Переименовать его в GUPDATE.GCD 3. Закачать на флешку в папочку Garmin 4. Перезагрузите навигатор, прошивка начнётся сама.

Jul 7, 2016 - 1 minute read - Comments - linux

Обновление в статьях

Изрядно обновил статью [](/blog/2014/11/13/linux_thinkpad_t530_i_minidp_displayport/), поместил ссылку на неё в статьи. Если коротко: то в общем и целом настройка чуть упростилась и улучшилась. Но дёготь остался, куда без него.