В разделах программирование и софт
Андрей Баксаляр  :: 25 янв, в 20:19

Как правильно сравнить содержимое вывода какой-то команды с содержимым текстового файла? Например, у нас есть requirements.txt, в котором содержится информация о зависимостях проекта. По сути, содержимое этого файла является записанным выводом команды pip freeze. И вот, по прошествии какого то времени, нам надо сравнить содержимое этого файла с актуальным выводом все той же команды.

Для этого достаточно просто воспользоваться конвейерным механизмом (unix pipes):

$ pip freeze | diff requirements.txt -
3c3
< django-extensions==1.7.1
---
> django-extensions==1.7.4

Что здесь происходит? Во-первых, сначала выполняется pip freeze, вывод которого подается дальше по конвейеру, передача обозначается символом |. Во второй части команды diff принимает первым аргументом файл requirements.txt, а вторым аргументом, обозначенным дефисом -, принимает стандартный ввод, в котором содержится переданная по конвейеру информация из левой части команды (т.е. вывод pip freeze). Программа diff сравнивает два текста и выдает найденную разницу.

Любопытно, что в Linux-е файл тоже может иметь название "-", и тут есть вероятность небольшой путаницы. Из этой ситуации можно выйти элегантным образом, явно указывая bash-у, что это файл, а не stdin:

$ cat ./-
Wow, very strange! Such pipy!

Где вместо точки интерпретатор подставляет текущую директорию. Естественно, можно просто указать полный путь — например, cat /home/andrey/-.

Та же самая техника применяется в тех случаях, когда bash должен отличить название файла от опций, например, ./-e будет рассматриваться именно как название файла -e, а не как опция -e.

К слову, первый пример с конвейером можно реализовать немного по-другому:

$ diff requirements.txt <(pip freeze)
3c3
< django-extensions==1.7.1
---
> django-extensions==1.7.4

Здесь при выполнении интерпретатором сначала «раскрываются скобки», а потом вывод передается по конвейеру в левую часть команды.

Кстати, через конвейеры удобно сравнивать вывод команд и/или файлы не только локальные, но и удаленные. Например, сравнить два файла (локальный и удаленный) можно примерно так:

$ diff requirements.txt <(ssh -A user@host.com "cat /www/project/requirements.txt")

Здесь мы подключаемся к удаленному серверу (естественно, все это должно быть настроено заранее), там выводим содержимое requirements.txt и через конвейер сравниваем это с аналогичным локальным файлом.

Пока комментариев нет, будь первым!


В разделах программирование и софт
Андрей Баксаляр  :: 20 июл 2016, в 04:58

Порой случается такое, что нужно проверить вывод какого-то API в консоли. Запрашиваешь у сервера информацию (возьмем для примера API OpenWeather) и тебе вываливается что-то подобное:

Нечитаемый JSON

И это еще в лучшем случае, т.к. здесь иерархия не такая ветвистая и мало узлов. Бывают случаи, где вывод совершенно нечитаем человеком. И вот в таких случаях можно использовать какой-то инструмент для того, чтобы «причесать JSON» (еще это называют термином pretty print).

Один из нескольких вариантов — замечательная утилита jq, делающая JSON вполне удобочитаемым и визуально структурированным:

Легко читаемый JSON в консоли

Как видно, запрос curl-лом мы отправили по конвейеру в jq ., в данном случае точка после команды является аргументом, означающим, что от jq требуется выдать все узлы, находящиеся в корне иерархии. Вместо точки можно указывать конкретный путь, состоящий из ключей, разделяемых точками — например:

Вывод отдельной ветки иерархии JSON при помощи jq

В данном примере мы попросили вывести jq лишь необходимую часть JSON, а именно — раздел weather со всем содержимым. Можно фильтровать и дальше по дереву. Например, jq .person.name.surname.

Информация об установке (например, в Ubuntu jq уже есть в репозитариях — sudo apt install jq) и примеры фильтров доступны на официальном сайте jq.


В разделах программирование и софт
Андрей Баксаляр  :: 1 май 2016, в 05:55

Скриншот Termux

Приложение Termux — настоящая находка для сисадмина или разработчика, привыкшего к окружению Linux, имеющего свежее Android-устройство и компактную беспроводную bluetooth-клавиатуру. Теперь можно устроить рай в шалаше, с родной средой, ssh, apt-get-ом, Grep-ом по SMS-кам (и контактам), Emacs-ом, Vim-ом, Python-ом, Perl-ом, Node.js, Ruby, полноценным башем, fish-ем или zsh, и прочей тяжелой артиллерией без «большого компьютера».

Скриншот Termux

Очень и очень круто, телефоны уже умеют практически 100% того, что умеют десктопы — с ростом производительности полным ходом подтягивается и десктопный софт. Вообще, не перестаю удивляться, в какое интересное время живем! Ждем Termux на умных часах и в умных очках (шутка).


Исследователи из университетов Беркли и Джорджтауна (США) разработали звуковые команды для Siri и Google Now, нераспознаваемые для человеческого слуха. Эти команды звучат как белый шум с примесями человеческого голоса и могут использоваться для взлома и заражения телефонов, сообщает Popular Science.

Вредоносный шум для устройств под Android и iOS различается. Услышав команду, браузер загружает определенную страницу или вредоносную программу без ведома владельца устройства. В ходе экспериментов устройства распознали 90% таких команд. Эти сигналы, незаметные для человеческого слуха, можно передавать даже через радиопередачи.

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


В разделе софт
Андрей Баксаляр  :: 23 мар 2016, в 18:42

Самый замечательный в плане функционала, а также наиболее симпатичный и удобный в плане интерфейса двухпанельный файловый менеджер в Linux на данный момент — это Double Commander. Я перепробовал много всяких поделок, 99% из которых не то чтобы далеки от идеала, а даже близко к нему не приближаются. То это уродливый кривой монстр с диким интерфейсом, могущий все-все-все, и тянущий с собой миллион зависимостей KDE, то это унылая программа, в которой ничего нет, и которая отличается от банального примитивного однооконного менеджера только своей двухпанельностью (но этого явно недостаточно).

Скриншот файлового менеджера Double Commander под Linux

В общем, до того, как я наткнулся на Double Commander (Википедия), для меня в природе не существовало хорошего аналога для каноничного™ Total Commander'а — а он является ярким образчиком (почти) идеального двухпанельного менеджера, который может кучу всего, имеет лаконичный интерфейс, а также быстр и компактен.

Double Commander же максимально приблизился к этому идеалу. Он даже разрабатывается в той же среде — Free Pascal (в IDE Lazarus, что является прямой наследницей старого доброго Delphi), что интересно, в том же ФриПаскале скомпилирована 64-разрядная редакция Total Commander'а. Создан Александром Кобловым (и сообществом — это открытое ПО) в начале 2008 года. Продукт пока находится в активной стадии разработки и не добрался до первого релиза, на данный момент крайняя версия — 0.7.

Однако уже сейчас он прекрасно работает и отлично выполняет все свои функции, и без него уже никак не обойтись — DC стал настоящим инструментом, который активно применяется ежедневно. Я не буду перечислять то, что он умеет — привыкшие к Total Commander'у в Windows и затем перешедшие на Linux, лишившись любимого инструмента, оценят и все поймут, опробовав Double Commander в деле. К слову, о Windows — DC есть и под эту платформу (а также под Mac OS X и FreeBSD).

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

Увы, пока Double Commander сложно найти в репозиториях популярных дистрибутивов, поэтому придется подключать PPA и прочие сторонние репозитории (в 23-й Федоре, например, Коммандер нашелся в «русском репозитории Fedora»). Официальный сайт Double Commander'а находится по данной ссылке, страница загрузки.


В разделе софт
Андрей Баксаляр  :: 23 мар 2016, в 03:52

Если у вас в качестве Desktop Environment используется Gnome2 или аналог (а также если это перелицованный Gnome3 в форме какого-нибудь Cinnamon), то включить типографскую раскладку Бирмана не проблема — я уже довольно детально описывал способ ранее.

Раскладка Бирмана

Однако, если у вас Gnome 3, или другая среда рабочего стола, где типографской раскладки «из коробки» попросту нет, то задача может оказаться слегка нетривиальной. Типографская раскладка в работе (и вообще) пригождается довольно часто, и перейдя на Fedora 23, где по умолчанию включен Gnome 3, пришлось немного повозиться. С результатами возни делюсь с читателем:

Раскладки, как таковые, не привязаны к конкретной DE — интерпретацией ввода с клавиатуры занимается подсистема xkb, встроенная в оконную систему X Window System (X11, или те самые «иксы»). И все раскладки, банально, лежат в директории X11, в виде текстовых конфигов. Типографская раскладка в 23-й Федоре, например, обнаружилась по адресу /usr/share/X11/xkb/symbols/typo, в других дистрибутивах она может располагаться аналогичным образом, но в подкаталогах /etc/X11/xkb/.... Заголовок обнаруженного конфига гласит:

// Typographic Keyboard
// Sergei Stolyarov <sergei@regolit.com>

// Initial contribution by Alexey Ten <alexeyten+deb@gmail.com>
// Additional contribution and code cleanup by Artur Dryomov <artur.dryomov@gmail.com>

// Mainly based on the layout proposed by Ilya Birman
// http://ilyabirman.ru/projects/typography-layout/

Как подключать

Итак, раскладка найдена, теперь ее необходимо подключить. Как оказалось, делается это довольно просто, командой в терминале:

setxkbmap -option "lv3:ralt_switch,misc:typo"

Синтаксис команды, в принципе, прост: программа setxkbmap с ключом -option меняет лишь дополнительные настройки клавиатуры не затрагивая остальное, а именно — в данном случае устанавливает правый альт (ralt_switch) в качестве модификатора для клавиш третьего уровня (lv3), а также подключает типографскую клавиатуру в качестве своеобразной «маски», добавляющей третий слой поверх любой вашей раскладки (будь то английская, русская или таджикская).

Опции устанавливаются на время сессии (или до того момента, как Gnome не решит их переписать своими), поэтому после перезагрузки или перелогина установленные настройки пропадут. И именно поэтому можно включить вышеупомянутую строку в какой-нибудь $HOME/.bashrc, чтобы опция устанавливалась при старте системы, но лучше так не делать.

Самым правильным вариантом будет воспользоваться механизмом инициализации X11, и поместить такой текст:

-option "lv3:ralt_switch,misc:typo"

...в текстовый файл .Xkbmap, расположенный прямо в домашней директории пользователя ($HOME/.Xkbmap). Скрипты инициализации (конкретнее — xinitrc-common) найдут его там при старте X11 и применят лежащие в нем настройки.

К слову, вышеупомянутый конфиг typo можно скопировать, обозвать его, например, mytypo и изменить по своему вкусу (изменения раскладки ограничены лишь фантазией), подключив свой вариант, формат объявлений там весьма простой:

key <код клавиши> {[ NoSymbol, NoSymbol, результат применения модификатора Level3 (обычно AltGr), аналогично для Shift+Level3  ]};

В качестве второго варианта

...можно установить приложение dconf-editor (в смысле, sudo apt-get install dconf-editor, sudo dnf install dconf-editor и т.д.), и в нем уже задать необходимые параметры, пройдя по пути org/gnome/desktop/input-sources/xkb-options:

Окно dconf-editor для изменения параметров раскладок клавиатуры xkb-options

В поле Custom value будет что-то вроде ['grp:alt_shift_toggle'], дописываем в квадратные скобки свои параметры, чтобы стало так — ['grp:alt_shift_toggle', 'lv3:ralt_switch', 'misc:typo']

Вариант с Gnome Tweak Tool

...наиболее простой. Устанавливаем программу (в пакетных менеджерах это gnome-tweak-tool).

Окно настроек клавиатуры в программе Gnome Tweak Tool

В ней на вкладке «Клавиатура» отмечаем чекбоксы «Включить дополнительные типографские символы» в разделе «Разные параметры совместимости» и «Правая клавиша Alt» в разделе «Клавиша для выбора 3-го ряда». После этого типографская клавиатура должна заработать.


Stack Overflow провел традиционный опрос и исследование по имеющимся у сервиса данным о разработчиках. Пожалуй, самые интересные моменты этого исследования:

По данным SO, в Таджикистане 350 профессиональных разработчиков, в России — 300 000, в Великобритании 783 000, в Индии… 1 860 000! США пока держит первенство с 3 869 000 профессиональными разработчиками.

Исследование Stack Overflow

Большинство (28%) считает себя full-stack веб-разработчиками, 12% занимаются исключительно серверной частью приложений и сервисов. Фронтэндеров всего 5,8%.

В лидерах по популярности среди технологий — ожидаемо Java Script (90% в фронтэнде, 85% — доля выбравших ее из тех, кто входит в группу full-stack, и даже среди бекэндеров — 54%). В мобильном мире с большим отрывом рулит Android (61,9%). PHP теряет в популярности из-за роста NodeJS и в 2016-м идет примерно на равных с Python-ом (26% / 25%). Вторая после JS по популярности среди технологий — SQL, третья — Java. C / C++ на протяжении последних лет заметно теряют в весе.

Исследование Stack Overflow

Больше всего из технологий разработчики «любят» относительно новые языки Rust и Swift. Наиболее одеозные технологии, к которым все испытывают отвращение — Visual Basic и Wordpress (ха-ха). Наиболее желанные для изучения направления — разработка под Android и NodeJS.

Читать далее »


В разделах юмор и софт
Андрей Баксаляр  :: 4 мар 2016, в 22:17

К сожалению, Земля остановилась:

Unfortunately, Earth has stopped

К сожалению, Время остановилось:

Unfortunately, Time has stopped

Теги: Android, приложения, неисправности, смешное, шутки, юмор

Пока комментариев нет, будь первым!


В разделе софт
Андрей Баксаляр  :: 8 фев 2016, в 03:21

Сервис, расшифровывающий правил в cron-е — crontab.guru

Crontab.guru — очень удобный сервис для проверки/составления правил планировщика cron. Вбиваете в пять полей цифры и смотрите по описанию сверху — совпадает ли «формула» с желаемым поведением.


В разделе софт
Андрей Баксаляр  :: 16 май 2015, в 18:50

Cостоялся релиз первой стабильной версии операционной системы MenuetOS 64.

Стабильный релиз MenuetOS

Операционная система написана полностью на ассемблере (!), уже поддерживает работу с сетью (TCP/IP, адаптеры Ethernet), различные устройства вроде принтеров, веб-камер, USB-накопителей и даже DVB-тюнеров. Имеется поддержка аудиокодеков AC97 и Intel HDA (ALC662/888).

Ах да, работа над проектом ведется 15 лет, и, как упоминается на официальном сайте, ОС умещается на одном флоппи-диске (а это 1,4 мегабайта).

Под катом еще несколько любопытных скриншотов...

Стабильный релиз MenuetOS

Стабильный релиз MenuetOS

Стабильный релиз MenuetOS

Стабильный релиз MenuetOS

Стабильный релиз MenuetOS

Стабильный релиз MenuetOS

Стабильный релиз MenuetOS

Это первая страница
1 / 4

Войти через...


Это даст читателю возможность голоса, комментария, создания закладки, и даже написания поста, не говоря о множестве других мелких ништяков.

Соациализируемся


Также найти меня можно в других злачных местах:

Все еще использую электронную почту:
andreybaksalyar@ya.ru