Прямая ссылка: https://youtu.be/_1mlJsDWoMY
Category Archives: Блог
Grep и awk для Windows
Понадобилось тут на винде работать с некоторыми логами. И Линукса под рукой не было, нашел, в общем grep и awk под винды, вроде, из официального SourceForge GNU.
Правда, официальные версии сделаны кривовато, в том смысле, что когда хочешь скачать только бинарники, в архиве оказываются только EXE (плюс куча ненужного мусора), но не оказалось DLL, которые нужны экзешникам. Скачиваешь инсталлер — он ставит и EXE и DLL, но в PATH надо каталог вручную добавлять.
В общем, я все это дело перепаковал, в обычный RAR SFX архив, который распаковывается в %WINDIR% (обычно C:\Windows), никакого инсталлятора/анинсталлера не приделывал, и вообще это для себя и стаи товарищей. Хотите качайте, хотите нет.
Содержимое архива:
awk.exe
egrep.exe
fgrep.exe
gawk-3.1.6.exe
gawk.exe
grep.exe
libiconv2.dll
libintl3.dll
pcre3.dll
pgawk-3.1.6.exe
pgawk.exe
regex2.dll
Работает в Windows 7 x86, Windows 7 x64 и в Windows XP. В десятке, наверное, работает, но я не проверял.
GNU grep 2.5.4
GNU Awk 3.1.6
В любом случае, прикольно, что эти утилиты под винду есть. Иногда в винде их не хватает.
Коды стран (ISO 3166-1), CSV, XLS
Искал готовые справочники в удобоваримых форматах, не нашел. А на сайте самой ISO за скачивание в CSV или XLS надо платить деньги (тут должна быть реплика известного сумасшедшего Вениамина, в стиле, » ну каковы же сволочи») В общем, хочешь сделать хорошо — сделай это сам.
Состав архива:
iso.csv — только двухбуквенные (Alpha-2) коды и наименования стран на английском, разделитель — точка с запятой (;). Отсортировано по коду.
Пример:
Andorra;AD
United Arab Emirates;AE
Afghanistan;AF
Antigua and Barbuda;AG
Anguilla;AI
Albania;AL
isofull.csv — Код Alpha-2 (двухбуквенный), Alpha-3 (трехбуквенный), числовой, название на английском, название на русском. Отсортировано по коду. Формат — UTF-8, разделитель — точка с запятой.
Пример:
AD;AND;20;Andorra;Андорра
AE;ARE;784;United Arab Emirates;Объединенные Арабские Эмираты
AF;AFG;4;Afghanistan;Афганистан
AG;ATG;28;Antigua and Barbuda;Антигуа и Барбуда
AI;AIA;660;Anguilla;Ангилья
isofull.xls — то же самое, только в формате Microsoft Excel 2003.
Скачать с mega.nz, RAR, 20 Кб
ЗЫ. Отдельный геморрой вышел с русскими названиями стран. На сайте ISO их бесплатно нету, только на французском (тьфу, буэ), ладно, полез в конторе в «Гарант» (это типа юридическая БД, конкурент «Консультанта+»). Оказалось, что у них, сцуко, коды не обновлялись с прошлого века — Югославия есть, а вот всяких Сербий и Черногорий нет. Пришлось сверять два списка по кодам и гуглить недостающие страны, штук семь.
Sony Vegas. Два видео в одном кадре. Отображение двух видео одновременно. Видеоинструкция.
Sony Vegas, два видео в одном кадре, два видео воспроизводящихся одновременно.
На Ютубе куча мануалов разной степени полезности, как можно показывать на одном экране (в одном кадре) в Vegas 3, 10, 100500 видео одновременно, как сделать «видеостену». Но хрен кто нормально объяснил, как можно разделить экран только на две части, и добиться того, чтоб исходные видео не превратились в кашу, не были слишком мелкими и т.д. А оказывается, есть нюансы, которые многими «профессионалами» и «видеоблогерами» по Vegas не замечены.
Добиться надо (если абстрагироваться от содержания), показа зрителю двух процессов одновременно. В одной половине кадра происходит один процесс, во второй — параллельно ему следующий. Например, это может быть гость в студии (и видимый одновременно ведущий), прямая трансляция с одновременным комментированием ведущего, или просто запись двух мониторов. Вот пример с ютуб-канала:

1. Подбираем видео примерно одинакового разрешения, нет одинакового, ориентируемся на большее разрешение.
2. ОК, видео есть, в примере будет два с одинаковым разрешением. Смотрим в MediaInfo:
Width : 640 pixels Height : 360 pixels Display aspect ratio : 16:9 Frame rate : 29.970 (30000/1001) FPS
Нас интересует разрешение и частота кадров.
Умножаем значение высоты и ширины на 2, чтоб показать исходные видео в полном размере 640x2=1280 360x2=720, это параметры для будущего проекта Vegas
3. Запускаем Vegas и создаем новый проект, взяв за основу вычисленные ранее параметры. У нас даже готовый пресет нашелся.
4. Обязательно снимаем галочку Настроить источник мультимедиа для лучшего соответствия проекту или настройкам визуализации. Т.к. нам не надо, чтоб Vegas подтягивал наши видео под размер проекта (1280x720), а обрабатывал их в оригинальном разрешении.

5. Создаем в проекте пустую видеодорожку, вставляем туда пустое событие:

6. Растягиваем его, можно побольше, потом подгоним.

7. Настраиваем сетку, для удобства размещения видео. Идем в Настройки —> Параметры, переключаемся на вкладку Видео, устанавливаем количество клеток сетки по вертикали и по горизонтали. У нас 2 видео, потому оставляем 2 ячейки. В переводе, похоже, перепутаны горизонталь и вертикаль.

8. Включаем сетку в разметке. Нажимаем треугольник (меню) рядом с кнопкой
, выбираем Сетка:

Сетка появляется:

9. Добавляем еще две видеодорожки и размещаем на них видео. На вопрос, подгонять ли проект к видео, отвечаем Нет!


10. Удаляем аудиодорожки, когда будем совмещать видео, они будут только мешать, т.к. при наложении образуется какофония, так что если нужен звук — отдельно совмещаем его в аудиоредакторе, а потом аудиодорожкой добавляем в проект Vegas.

Проект котов готов — можно рендерить.
Прямая ссылка: https://youtu.be/WsqU-xaYAu0
Пузыри — Её нет
Че-т пора разбавить карельский панк карельским же хардкором. Леша подпездывает, что сие произведение стоит отнести к жанру карельского гоп-хардкора, но чья бы корова мычала, на 2004 год он был малолетним нацистом. И хоть ща он целый редактор, но в детстве таки побыл имперцем и нацистом 🙂
Прямая ссылка: https://youtu.be/yEXivW8jhMc
Фразочка
Два солдата з укрстройбата
Заменяют экскаватор!
А наемник з ОРДЛО
Заменяет усе лайно!
Группа «Позитив», г. Кондопога
Прямая ссылка: https://youtu.be/kyrfRcp7TcE
Концерт в Кондопоге, KondoR, 2007 год
Прямая ссылка: https://youtu.be/jkEP_aan6q4
Да, там еще есть я на сцене, найди и заимеешь уникальное кольцо!
Кольцо уже уехало в Астану, aka Нурсултан
Запись с экрана в Slackware Linux
Итак, продолжаем разбираться с записью с экрана в Linux.
Для начала, я почитал обзор Losst на соответствующие программы, и вот, что имею сказать:
RecordMyDesktop — кривой и глючный, пропускает кадры, пишет только в формате OGV, который ни одна собака не поддерживает.
Vokoscreen — не собрался, не смог найти файл своего же исходника, хотя и файл был и права на месте.
ScreenStudio — для потокового видео, мне лично не подходит.
Kazam ScreenCaster — нет возможности записи конкретного окна или произвольной области экрана.
Byzanz-record — только командная строка (да, хочу программу с графическим интерфейсом для работы с видео).
VLC Media Player — записывает, но опять же, весь рабочий стол
OBS — вообще не про «запись с экрана», а про стриминг, так что если там запись с экрана и есть, то в качестве приятного бонуса, для простой записи с экрана, это из пушки по воробьям.
Так что остановился на Simple Screen Recoder.
В Slackware он штатно устанавливается через sbopkg, вводим в поиске ssr и ставим, из зависимостей нужен ffmpeg.
Программа простая и удобная, выполнена в виде мастера, так что работа не доставляет никакого геморроя.

На первом шаге выбираем, что будем записывать — весь десктоп, произвольную область экрана или конкретное окно, или записывать, следуя за курсором. Можно записывать и OpenGL’ные игры. Также можно включить запись звука и записывать или убрать из записи курсор.

На втором шаге выбираем кодек и формат файла, основные форматы следующие:
— MKV (Кодеки H.264, VP8, Theora)
— MP4 (H.264)
— WebM (VP8)
— OGG/OGV (Theora)
Также выбираем файл, в который будем писать, и отрубаем пропуск кадров.
Писать лучше в MP4, т.к. его любой видеоредактор поддерживает.
Можно в списке кодеков и форматов выбрать Other… и будет доступна тонкая настройка контейнера (формата файла) и кодека.

На третьем шаге включаем запись и сворачиваем программу (она спрячется в трей).

Причины ошибки:
1. Кодек не установлен, заходим в sbopkg и устанавливаем пакеты:
— aom (выбираем multimedia/aom в меню sbopkg)
— libass
— libwebp
— x264 (выбираем multimedia/x264 в меню sbopkg)
— x265
— ffmpeg4
Перезапускаем программу, если ошибка повторяется, значит установлен кривой ffmpeg (а официальный пакет ffmpeg в Slackware кривой). Сносим пакет ffmpeg и устанавливаем нормальный от Alien: качать здесь
В общем, поступаем как в заметке Перекодировка OGV в MP4 и решение ошибки Unknown encoder ‘libx264’ в Slackware Linux (копия)
Все работает:

ФАНФАРЫ!
Распаковка инсталлятора (на примере инсталлятора Foxit PDF Reader)
В заметке про пропавший из Foxit PDF Reader PDF-принтер (копия) я упомянул, что хотел расковырять старый инсталлятор, чтоб принтер оттуда вытащить (если это возможно).
Пользователь спросил, а как, собственно, распаковать инсталлятор, что ж, постараюсь кратко пояснить.
Примечание: это не инструкция «как распаковать совсем вообще любой инсталлятор», ибо типов инсталляторов довольно много и появляются новые, а бывают вообще самописные со свистелками и вувузелами, так что покажу общий подход и совсем простой пример, на том же инсталляторе Foxit PDF Reader’а
Ссылки на все инструменты в конце заметки.
Как я сказал, типов инсталляторов очень много: Nullsoft Installer, WISE, Inno Setup, Microsoft Installer (MSI), InstallShield, и это те, которые я вспомнил просто так, не посещая гугль.
Соответственно, надо определить, с чем мы имеем дело. Как говорится, знай своего врага в лицо. И это не только первый принцип разведчика, но и первый принцип реверсера, т.е. того, кто занимается обратным инженерингом, или, говоря вульгарно, взломом, крякингом программ. За «крякиннг», котики, от настоящего реверсера можно получить кружкой пива по голове. Крякают утки, а мы будем исследовать. Но что-то я запизделся.
С виду тип инсталлятора определить довольно непросто (хотя гуру могут), так что воспользуемся специальной программой DiE (Detect it easy) 2.05, которая пришла на смену PEiD. Что это такое? Это специальная утилита, способная определять что за экзешник перед нами: тип инсталлятора (если это инсталлятор), тип компилятора, которым экзешник скомпилирован, EXE-упаковщик или т.н. «навесную защиту», если экзешник упакован или защищен от взлома специальной программой. Делает это он также, как антивирус определяет наличие вируса, по сигнатурам, т.е. определенным последовательностям байт, характерных для того или иного компилятора, упаковщика, инсталлятора и т.д.
Итак, запускаем DiE и скармливаем ей наш инсталлятор:

Как видим, инсталлятор создан в Inno Setup, осталось найти распаковщик, и в данном случае это просто (потому и взял, как простой пример). Распаковщик есть. Кладем инсталлятор в отдельную папку, копируем распаковщик в нее же, или же в папку, которая есть в переменной PATH и выполняем:
innounp -x FoxitReader806.909_prom_L10N_Setup.exe
Идет распаковка:

В результате образовалась структура каталогов, характерных для этого инсталлятора, где каталог {app}, то, что будет распаковано в каталог программы (например C:\Program Files\Foxit Reader), каталог {sd} — ProgramData, а каталог {tmp}, то, что будет распаковано во временный каталог системы. К тому же есть и install_script.iss — скрипт установщика (в его формате, и оттуда можно почерпнуть информацию, как и что делает установщик, если знаете формат скрипта).
А еще его можно интегрировать в Far-manager, см. Readme.

Ну вот, это был маленький урок реверсинга для комментатора, определили установщик и его распаковали.
Заодно, если вы хотите заняться реверсингом, рекомендую посетить сайт https://exelab.ru/
DiE (Detect it easy):
— На Exelab
— C Mega.nz
innounp:
— Официальный сайт
— Мой пакет (innounp распаковывается в C:\Windows)
Перекодировка OGV в MP4 и решение ошибки Unknown encoder ‘libx264’ в Slackware Linux.
Пришлось некоторое время решать проблемы с записью видео в Linux. Изначально задача была в записи видео с экрана, но в процессе решения добавились и web/ip-камеры (заодно уж), и общие проблемы с перекодировкой видео из одного формата в другой. Начнем как раз с конца, т.е. с перекодировки.
Леша уже плюнул на попытки заставить непокорную софтину записывать для начала экран в удобоваримом формате MP4, и прислал мне ролик в формате OGG (ну не OGG, OGV), чтоб я разобрался с его перекодированием во что-то более удобоваримое, т.к. не один из наших видеоредакторов формат OGV (кстати, открытый) «из коробки» не поддерживал.
В качестве видеокодека в формате OGV используется кодек Theora, а в MP4 AVC/H.264
OGG — изначально, открытый звуковой формат, разработанный как альтернатива закрытым (WMA, MP3). Через некоторое время, данный формат был расширен с добавлением поддержки видео. Но некоторые (несознательные) линуксовые программы пишут видео, а файлы создают с расширением .ogg. Линуксовому софту, типа плееров, вообще на это плевать, но линуксовому софту всегда было плевать на расширения имени файлов, а вот винде нет. Потому, если вам прислали видео в файле с расширением .ogg, то попробуйте поменять расширение на .ogv, скорее всего файл нормально откроется. В K-Lite Mega Codec Pack и в VLC для Windows поддержка, что OGG, что OGV есть точно.
Но все-таки вернемся в Slackware и к преобразованию форматов.
В связи с диким онанизмом на «авторские» «права» и зоопарком форматов видео/аудио в Линуксе преобразование одного формата в другой превращается в наркоманский квест. У нас было десять мегабайт библиотек, две сотни кодеков, пакет с разными пакетами, 200 грамм укуреных лицензий… Тьфу, к делу.
Для установки некоторых необходимых пакетов можно воспользоваться sbopkg.
Вообще, для работы с видео и аудио используется программа ffmpeg (v3), но не спешите ставить ее из «официального» репозитория Slackware, как оказалось, чтоб все заработало, пришлось переустанавливать из альтернативного.
Пока вводим в поиске и ставим:
aom (выбираем multimedia/aom в меню sbopkg)
libass
libwebp
x264 (выбираем multimedia/x264 в меню sbopkg)
x265
ffmpeg4
ffmpeg (v3) у меня уже был установлен ранее, так же из официального репозитория Slackware. А вот и зря.
ffmpeg -i input.ogv \
-c:v libx264 -preset veryslow -crf 22 \
-c:a libmp3lame -qscale:a 2 -ac 2 -ar 44100 \
output.mp4
Преобразование будет медленным, но практически без потери качества. Свои варианты параметров можете кидать в комментарии, вдруг пригодится.
Как я сказал ранее, ffmpeg из репозитория sbopkg у меня уже стоял. Сначала я подумал, что поможет его полная переустановка с пересборкой пакета (мало ли, свежеустановленные кодеки не видятся). Не помогло.
Решение нашлось здесь
В общем да, из-за голливудских уродов патентных ограничений и прочей юридической хуйни, официальный пакет ffmpeg в Slackware не включает поддержку H.264. Но, слава Великим Древним, проблему решили без нас, и даже в опциях компиляции ковыряться не нужно:
Just to clarify, you’d want the «restricted» ffmpeg that Alien Bob offers, as that includes support for various things that have patent restrictions (like x264 encoding).
Есть готовый альтернативный пакет:
Конверсия (пережатие) DVD в MKV без потери качества
Понадобилось вот в процессе восстановления древнего DVD (это отдельная история) перегнать формат DVD во что-то более удобоваримое, перелопатил кучу конвертеров, то кривые, то косые, то платные, то с невменяемыми пресетами и настройками — например оригинальное DVD-разрешение 720x576, а у конвертера или 1920x1080 или, блин, 320x240. Были еще уродливо пережимающие звук или невменяемо долго работающие.
Наконец, нашел.
Все опции формата программа берет из самого DVD:
Видео:

Данные оригинального DVD:
Format : MPEG Video Format version : Version 2 Width : 720 pixels Height : 576 pixels Display aspect ratio : 4:3 Frame rate : 25.000 FPS
Аудио:

Данные оригинального DVD:
Format : AC-3 Format/Info : Audio Coding 3 Commercial name : Dolby Digital Bit rate : 256 kb/s Channel(s) : 2 channels Channel layout : L R Sampling rate : 48.0 kHz
Программа маленькая (13 Мб) и абсолютно бесплатная. Работает, начиная с Windows XP (и выше), под x86 и x64 архитектуры
Официальный сайт: https://www.makemkv.com/
Копия
В Беларуси — Тихановская, а в России — Витухновская!

Скачать вариант для печати: https://bit.ly/bel_rus
Автор
paperdaemon@ljr
Репост отсюда http://lj.rossia.org/users/paperdaemon/2515298.html
Linux. Вывод одновременно на консоль и в файл. Команда tee.
На самом деле я искал перенаправление вывода сразу в два отдельных потока, но оказалось, что это не нужно, ибо задача сводилась к тому, чтобы отображать вывод некоей программы на экран и одновременно писать этот же вывод в log-файл.
В Linux нашлось готовое решение: команда tee
Команда tee делает следующее — берет переданный ей от другой команды или потока команд (pipe) вывод, пишет его в файл и одновременно выводит на stdout. Вывод на stdout можно переопределить дальше, например, устроить вывод на отдельный терминал, но об этом далее.
Общий синтаксис таков:
<команда>|tee [параметры] файл1 [файл2 файл3 ...]
где:
<команда> — любая команда оболочки Linux
| — обозначение перенаправления, вывод команды <команда> передается tee
файл1 [файл2 файл3 ...] — файлы, в которые необходимо вести запись.
ls | tee log.txt
Выведет список файлов текущего каталога на консоль и одновременно сохранит вывод в файл log.txt
Если добавить к команде tee параметр -a, то информация будет дозаписываться в указанные файлы. Без этого параметра файлы будут перезаписаны.
Чтобы не использовать какие-то команды, создадим тестовый скрипт tscript, десять раз выводящий на консоль случайное число:
#!/bin/bash
SEC=1
CTR=10
echo "Test script, write to STDOUT random number after $SEC sec."
while [ "$CTR" -ne 0 ];do
let "CTR=CTR-1"
printf '%x Number: %x\n' $CTR $RANDOM
sleep $SEC
done
echo "Complete!"
Теперь в каталоге со скриптом выполним:
./tscript | tee log.txt
На экран будут выведены случайные числа, они же будут в файле log.txt
./tscript | tee -a log.txt
Аналогично, только log-файл будет дополнен новыми случайными числами.
После команды tee, вывод можно перенаправить и дальше, например, можно совместить этот пример с выводом на другой терминал (копия):
./tscript | tee ./test.log >/dev/tty4
Можно пойти дальше и скрипт сделать автономным, «демонизировать» его, тогда можем, запустив следующую команду, или использовав ее в скрипте, освободить и/или текущую консоль или запускающий скрипт для дальнейших действий:
./tscript | tee ./test.log >/dev/tty4 &
Вывод на консоль четвертого терминала (tty4):

Вывод в test.log:
Test script, write to STDOUT random number after 1 sec.
9 Number: 2378
8 Number: 2cf9
7 Number: 132c
6 Number: 4a3c
5 Number: 6367
4 Number: 3384
3 Number: 5660
2 Number: 6655
1 Number: 6141
0 Number: 1870
Complete!
Кстати, обязательно загляните, там есть дополнительные примеры использования:
Jean Bellis, восстановленная запись
Linux, узнать текущий терминал, узнать свой терминал, узнать текущий tty.
Команда, вы будете смеяться, очень простая:
tty
Результат работы на локальном терминале (с консоли, «с клавиатуры») и «без иксов»:
/dev/tty1
Эмуляторам терминала (из иксов или PuTTY), естественно, выделяется виртуальный терминал:
Иксы:

PuTTY:

В некоторых встраиваемых системах команда tty может не работать.
В переменную скрипта можно сохранить результат выполнения команды:
#!/bin/bash
CUR_TTY=`tty`
echo $CUR_TTY
Вывод (для первого случая):
/dev/tty1
Обновление своего плагина для Firefox
В прошлом году писал заметку Делаем свое расширение для Firefox (копия), теперь краткая инструкция, как его обновить, если внесены изменения.
1. Правим код, не забываем изменить номер версии в manifest.json, добавляем нужные файлы, упаковываем в ZIP-архив, переименовываем файл в *.xpi
2. Идем на https://addons.mozilla.org/ru/developers, жмем большую кнопку Отправить или управлять расширениями, логинимся.
3. Жмем в верхнем меню Мои дополнения, проваливаемся сюда:

Жмем Новая версия.
4. Загружаем файл дополнения кнопкой Выбрать файл…

У меня проверка прошла с первого раза.
5. Далее попадаем сюда:

Нас спрашивают, не использовали ли мы обфускаторы кода. Мы не использовали, если была использована библиотека jquery-?.?.?.min.js, чей код ужат, чтоб занимал меньше места — ничего страшного, Мозилла автоматом определяет, что используется известная версия библиотеки. Жмем Продолжить, попадаем на страничку, где можно ввести описание изменений (видно всем пользователям) и комментарий для проверяющих.

Одобрение, видимо из-за небольших изменений в дополнении, пришло практически моментально, похоже, в автоматическом режиме.
Обновление дополнения External IP Geo IP для Firefox.
В прошлом году сделал вот такое вот дополнение для Firefox (копия) и обнаружился в нем досадный баг.
Если IP не был известен сайту https://api.myip.com/, то он, в качестве кода страны, возвращал XX, а для этого кода в плагине не было иконки, соответственно, на панели браузера кнопка оставалась без иконки, и в панели самого плагина иконка не отображалась.
Исправил.

БрокаЦентр — Сон
Прямая ссылка: https://youtu.be/ZHJYBrUMSgA
Че-то меня опять на малоизвестный карельский панк потянуло…