Компиляция из Notepad++

Преамбула

Точнее, конечно же, просто запуск стороннего компилятора, причем любого, имеющего поддержку командной строки (а они почти все такие, кроме совсем уж редких). Пока малому приятелю помогал написать Hello World на ассемблере, задолбался переключаться между редактором Far’а и батниками для сборки. MultiEdit или любимый FOTON, к которым можно привинтить компилятор, под Win7 не работают, но возможность запускать сторонние компиляторы оказалась у Notepad++

Установка плагина NppExec

Современные версии Notepad++ позволяют установить плагин из самого редактора.
Заходим в Плагины —> Управление Плагинами… и в появившемся окне вбиваем в строку поиска NppExec. Ставим напротив него галочку, и нажимаем ставшей активной кнопку Установить.

Notepad++ попросит перезагрузиться, скачает плагин и установит его.

После чего, в меню Плагины появится новое подменю NppExec.

В данном меню надо снять галочки напротив всех пунктов, выделенных по умолчанию, а поставить напротив пункта Follow $(CURRENT_DIRECTORY).

Написание скрипта

Осталось написать нужный скрипт для вызова компилятора и линковщика, покажу на примере TASM32.

Нажимаем F6 или в меню Плагины —> NppExec —> Execute NppExec Script…

Попадаем в пустое окно, где можно вводить команды скрипта:

Синтаксис скрипта мало отличается от BAT/CMD, за исключением того, что доступны внутренние команды Notepad++ и специальные внутренние переменные.

Для простейшего случая понадобится одна внутренняя команда и две специальных переменных. Сначала приведу пример скрипта, а потом опишу, что он делает.

npp_save
cd "$(CURRENT_DIRECTORY)"
N:\TASM\BIN\tasm32.exe /ml $(FILE_NAME)
if $(EXITCODE) !=0 goto exit

N:\TASM\BIN\tlink32 /Tpe /aa $(NAME_PART).obj,,,"N:\TASM\LIB\IMPORT32.LIB"

:exit

Скрипт выполняет компиляцию ассемблером TASM32 и линковку без запуска получившейся программы.

npp_save — внутренняя команда Notepad++, сохранить текущий файл.

Примечание: Для нового файла появится окно сохранения.

Примечание #2: Стоит сохранять несохраненный файл под именем, содержащим только латиницу, а также выбрав нужный тип файла в окне сохранения. В противном случае могут быть глюки, зависящие от совокупности глюков плагина и компилятора.

cd — аналогично команде BAT/CMD, перейти в указанную директорию.

"$(CURRENT_DIRECTORY)" — внутренняя переменная с текущей директорией. Текущей директорией считается та, где сохранен файл, открытый в активной вкладке редактора (т.е. файл, который редактируем).

N:\TASM\BIN\tasm32.exe /ml $(FILE_NAME) — вызов компилятора с нужными параметрами.

$(FILE_NAME) — полное имя файла без пути, например, hello.asm, если этот файл открыт на активной вкладке редактора.

if $(EXITCODE) !=0 goto exit

Команды if и goto работают почти также, как и в BAT-файлах. Некоторое различие в оформлении условий.

$(EXITCODE) — внутренняя переменная, получающая код возврата ранее вызванного приложения. Аналог %ERRORLEVEL% в BAT/CMD. Вызванные внешние компиляторы TASM/TASM32 завершаются с кодом 0, если компиляция прошла успешно.

Далее вызывается линковщик:

N:\TASM\BIN\tlink32 /Tpe /aa $(NAME_PART).obj,,,"N:\TASM\LIB\IMPORT32.LIB"

$(NAME_PART) — внутренняя переменная, содержащая имя файла без расширения и точки. Например, если на активной вкладке открыт файл hello.asm, переменная $(NAME_PART) содержит значение hello.

В конце скрипта ставим метку :exit — метка начинается с двоеточия (:).

Чтобы пользоваться скриптом постоянно, нужно его сохранить (кнопка Save…) и ввести имя, например TASM COMPILE:

Скрипт можно модифицировать так, чтобы после компиляции и линковки сразу выполнять программу:

npp_save
cd "$(CURRENT_DIRECTORY)"
N:\TASM\BIN\tasm32.exe /ml $(FILE_NAME)
if $(EXITCODE) !=0 goto exit

N:\TASM\BIN\tlink32 /Tpe /aa $(NAME_PART).obj,,,"N:\TASM\LIB\IMPORT32.LIB"
if $(EXITCODE) !=0 goto exit

$(NAME_PART).exe

:exit

Можно сохранить модифицированный скрипт под другим именем, например, TASM COMPILE AND RUN.

При запуске плагин запоминает последний выполненный скрипт, и при новом запуске по F6 он уже будет открыт в окне NppExec, что, конечно же, удобно.

При выполнении скрипта откроется окно консоли, в котором можно наблюдать за ходом его выполнения:

NPP_SAVE: N:\SimpleAsm\hello.asm
CD: N:\SimpleAsm
Current directory: N:\SimpleAsm
N:\TASM\BIN\tasm32.exe /ml hello.asm
Process started (PID=7964) >>>
Turbo Assembler Version 5.0 Copyright (c) 1988, 1996 Borland International

Assembling file: hello.asm
Error messages: None
Warning messages: None
Passes: 1

<<< Process finished (PID=7964). (Exit code 0)
IF: $(EXITCODE) !=0 goto exit
N:\TASM\BIN\tlink32 /Tpe /aa hello.obj,,,"N:\TASM\LIB\IMPORT32.LIB"
Process started (PID=2784) >>>
Turbo Link Version 1.6.71.0 Copyright (c) 1993,1996 Borland International
<<< Process finished (PID=2784). (Exit code 0)
IF: $(EXITCODE) !=0 goto exit
hello.exe
Process started (PID=6360) >>>
<<< Process finished (PID=6360). (Exit code 0)
================ READY ================

Бэкап скриптов

NppExec хранит скрипты в каталоге
C:\Users\<username>\Application Data\Notepad++\plugins\config\

где:
<username> — ваше имя пользователя.

В файлах:

npes_last.txt — хранится последний использованный скрипт.
npes_saved.txt — хранятся все скрипты, его можно забэкапить.

Источник

Компиляция программ с помощью Notepad++ — большая и несколько сумбурная статья на Habr.

Программа для теста клавиатуры Keyboard Test Utility 1.4.0

Решил перебрать на складе залежи клавиатур, дабы определить, которые выкинуть, которые себе забрать, а которые еще годные. А то об эту стопку бухгалтересса постоянно спотыкается, не дай Ктулху, каблук сломает. Съест же, как КПСС. Понадобилась программка для тестирования. Нашел вот Keyboard Test Utility 1.4.0.

Плюсы:

+ Запускается без установки.
+ Размер 2 Мб.
+ Freeware (но вроде не Opensource).
+ Поддерживает клавиатуры ANSI (стандартная), SL-91 (хз что такое, не нашел) и DP-72


SL-91


DP-72

+ Самый главный: отображает нажатия на сразу несколько клавиш. Очень удобно, если клава не работает, от того, что засралась, нажимаются сразу несколько клавиш, и надо определить, какие клавиши отковырять и почистить.

Совместимость:

— Windows XP/7/8/8.1/10
— USB и PS/2 клавиатуры

Скачать

С Mega.NZ (7zip, 711 Кб)

Программа для генерации и чтения QR-кодов для Windows

Преамбула

На самом деле достали эти QR-коды и не только «от модной болезни», но и вообще. Лезут таки изо всех щелей. А лопат идиот-фонов я с собой не ношу, во всяком случае в ГОРФ, они мне тут без надобности, благо есть мягенькое креслице и уютный десктоп с полноценной клавой и мышью, ну или, на на худой конец, ноутбук. А телефон должен звонить и принимать СМС (от банка, о поступлениях на счет). Впрочем, преамбула превращается в минутку ворчания…

Итак, как же генерировать и читать QR-коды на десктопе или ноутбуке под Windows?

Нашел программу CodeTwo QR Code Desktop Reader & Generator.

Возможности программы

+ Работает полностью оффлайн, не требует соединение с Интернетом.
+ Небольшие системные требования (см. ниже)
+ Бесплатная, как для домашнего, так и для коммерческого использования
+ Может генерировать QR-коды
+ Имеется возможность читать и декодировать QR-код с экрана (захват экрана с выделением области)
+ Из буфера обмена
+ С изображений с веб-камеры
+ Из файла

— Не OpenSource

Системные требования

+ Поддерживает версии Windows от Windows XP SP3 до Windows 10
+ Поддерживаются как x86 (32-разрядные), так и 64-разрядные версии ОС
+ Размер на диске 2,5 Мб

Необходим .NET Framework 4.0 или выше.

Скачать

Сайт разработчика

Официальная страница (краткая инструкция на буржуйском, скрины, ссылка на скачивание)

Копия установщика на mega.nz

Pinball Space Cadet, легендарный Пинболл из Windows XP.

Как установить в Windows 7-10.

Преамбула

Пинболл в старых версиях винды действительно был прикольной залипалкой, но в Windows 7 он пропал, причем по довольно смешной причине. Игрушку для M$ писали какие-то сторонние инди-разработчики, и в их исходниках хренженеры M$ не смогли разобраться, во всяком случае, так гласит сетевая легенда. Но позалипать хочется, а нету.

Ну хуй с ним, посоны, я создал, точнее, выдрал из Windows XP.

Работает как в Windows 7 x86 и x64,так и в Windows 10

Скачать инсталлятор с Mega.NZ
Исходный код инсталлятора на NSIS

Блокировка рекламы на Youtube в Chrome, глюки и борьба с ними.

Преамбула

Доконала меня окончательно реклама внаютубе, т.к. ютуб окончательно охамел и стал вставлять рекламу по полчаса, причем рекламу каких-то лохотронов: «Я был печальный лох, но потом мой друг дал мне 100$ и доступ к уникальной программе заработка. Я трачу час в день и теперь у меня личный вертолет, замок на личном острове, а еще я отдал кредиты и ипотеку». В общем откровенный развод.
Нашел я плагин, который рекламу душил и при этом не ломал автопереключение и прочие плюшки, однако, после очередного обновления гуглевского поделия реклама вернулась. Переустановка плагина, установка других плагинов не помогла, наконец, я нашел небольшую инструкцию, которая, впрочем, в изначальном виде так же не сработала, пришлось допиливать. Вот моя версия.

Блокировка рекламы на Youtube в Google Chrome.

1. На всякий случай копируем профиль Chrome, чтоб если что, можно было все вернуть.

В Windows 7 и выше он обычно здесь:

C:\Users\<username>\AppData\Local\Google\Chrome\User Data\Default

А в Linux здесь:

/home/<username>/.config/google-chrome/default

<username> меняем на свое имя пользователя.

2. Удаляем плагины блокировщики рекламы.
3. Перезапускаем браузер.
4. В адресной строке Chrome набираем: chrome://apps/

5. Теперь надо удалить приложение YouTube, т.к. основной глюк связан именно с ним: вся проблема содержится в новом коде Web Request, внедрённом разработчиками Google в браузер. Он позволяет браузеру рассматривать приложения YouTube и Spotify как расширения браузера, на которые не распространяется действие блокировщиков рекламы.
6. Перезапускаем браузер.
7. Ставим плагин uBlockOrigin
8. Ставим плагин Блокировка рекламы для Youtube Неизвестно почему, но в паре они работают лучше.
9. Перезапускаем браузер.

ФАНФАРЫ!

Если при следующем обновлении реклама появится вновь, то следует посмотреть, не появилось ли опять приложение Youtube и переустановить плагины, т.е. снести, перезапустить браузер, установить их обратно и вновь перезапустить браузер.

Файл фрагмента (SHS), что это, чем и как открывать.

Файл SHS — это файл Windows Shell Scrap Object, т.е. файл обмена, позволяющий обмениваться данными между программами, или временно сохранять содержимое буфера обмена на диск. Служба Windows Shell Scrap Object была удалена из Windows версий, начиная с Vista, так что открыть его в другой ОС, кроме Windows XP не получится.

Поскольку SHS — файл обмена, т.е. фактически файл-контейнер, то внутренний формат файла может быть любым, однако, некоторые способы открыть его есть.

scrap2rtf

Если в файле SHS сохранен формат текста Word или TXT, то можно применить утилиту scrap2rtf. Есть версии под Windows и Linux, как с графическим интерфейсом, так и для командной строки.

Скачать из архива Google.Code

Копии:

Версии для Windows
Версии для Linux

Восстановление работы Windows Shell Scrap Object в Windows 7

Если первый способ не помог, можно попробовать установить службу Windows Shell Scrap Object в Windows 7 из Windows XP. AfiX написал для этого утилиту.

SHSSupportW7.exe
Исходники

Простой, но долгий способ

1. Установить Windows XP на виртуальную машину.
2. Перенести на виртуальную машину файл SHS.
3. Установить нужный (или предполагаемый) софт, данные которого были в файле фрагмента.
4. Открыть фрагмент двойным кликом мыши.

ФАНФАРЫ!

Коды стран (ISO 3166-1), CSV, XLS

Искал готовые справочники в удобоваримых форматах, не нашел. А на сайте самой ISO за скачивание в CSV или XLS надо платить деньги (тут должна быть реплика известного сумасшедшего Вениамина, в стиле, » ну каковы же сволочи») В общем, хочешь сделать хорошо — сделай это сам.

Скачать справочники кодов стран ISO

Состав архива:

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 их бесплатно нету, только на французском (тьфу, буэ), ладно, полез в конторе в «Гарант» (это типа юридическая БД, конкурент «Консультанта+»). Оказалось, что у них, сцуко, коды не обновлялись с прошлого века — Югославия есть, а вот всяких Сербий и Черногорий нет. Пришлось сверять два списка по кодам и гуглить недостающие страны, штук семь.

Отключение всплывающих уведомлений в Firefox.

А заодно и другой лишней ерунды вроде доступа к микрофону или запроса геолокации.

1. Заходим в Инструменты —> Настройки
2. Переходим на вкладку «Приватность и защита»
Или сразу пишем в строке адреса: about:preferences#privacy
3. Мотаем вниз до раздела Разрешения:

4. Жмем кнопку «Параметры» напротив уведомлений, очищаем список, если в нем что-то есть, и ставим галочку Блокировать новые запросы на отправку вам уведомлений

5. Жмем Сохранить изменения
6. ФАНФАРЫ!

Таким же образом можно поступить с местоположением, камерой и микрофоном.

EEE PC 2G SURF драйвера и программы

Принесли тут в починку (причем уже второй) такой вот недобук. Убил полдня на него, пришлось делать отдельный дистрибутив XP, из которого было выкинуто почти все лишнее, чтоб влез.

А вот архив для него с родными дровами, софтом и всем прочим. На всякий случай, мало ли кому надо будет.

Скачать с mega.nz

Коллекции значков. Флаги всех стран.

Коллекция #1

Коллекция флагов стран в двух исполнениях
Flat — обычные плоские значки и Shiny — слегка выпуклые, с отблеском

Разрешения:
-16×16
-24×24
-32×32
-48×48
-64×64

Форматы:
-PNG
-ICO
-ICNS

Наименования отдельно:
-По названию страны
-По коду ISO

Дополнительно:
Есть флаги некоторых непризнанных республик и международных организаций.

Скачать с Mega.nz
Скачать с Google.Drive

Коллекция #2

Иконки плоские

Разрешения:
-32×32
-128×128

Форматы:
-PNG

Наименования:
-По коду ISO

Скачать с Mega.nz
Скачать c Google.Drive

NodeJS для Slackware 14.2

Ох и запарился я ее собирать… Не, собралась автоматом, просто долго. А готовые пакеты у них на сайте почему-то только под Linux x64. Поэтому, чтоб не пролюбить пакеты:

node-v10.16.1-i486.txz

node-v12.7.0-i486-1.txz

На всякий случай еще и исходники сохраню.

node-v12.7.0.tar.gz

Смешно, из-за нее не так давно умудрился уронить 12 слакварь, точнее Absolute Linux, который был на ней основан, вертелся-крутился года три и никого не трогал, так и перешел на 14-ую.

Знаменитый визг свиньи Касперского.

Мне периодически задают вопрос, а где взять тот самый Визг Свиньи, которым визжал ранее Антивирус Касперского при обнаружении зловреда?

Вот, выдрал специально для вас из какой-то старой версии (еще под Win98) KAV’а.
Насколько я понимаю, сам по себе звук некопирайтный, ибо Евгений Валентинович его сам откуда-то сгайдарил и счубайсил. Так что смело качайте, ставьте на будильник, звонок или СМС.

https://youtu.be/esP4sg-JqOk

Файл в формате WAV

Как добавить картинку в readme на GitHub

Очередная заметка «от склероза». Товарищ [info]is3@ljr посоветовал добавить скриншоты в readme проекта ASCII-капчи, а я ж, как обычно, мануалы читаю в последнюю очередь, и даже не знал о такой возможности. А она есть.

1. Грузим картинки на GitHub, желательно в отдельный каталог, например screnshoots. Лучше грузить скрины в сам репозиторий, хотя GitHub позволяет вставку картинок и с других сайтов.

2. Добавляем следующий код в README.md:

![Описание](http(s)://адрес_картинки.png(jpg))

3. Пример:

# Screenshoots

ASCII captcha:

![ASCII captcha](https://raw.githubusercontent.com/tolik-punkoff/ascii-captcha/master/screnshoots/test01.png)

ASCII captcha on real HTML page:

![ASCII captcha on real HTML page](https://raw.githubusercontent.com/tolik-punkoff/ascii-captcha/master/screnshoots/on_page1.png)

User send wrong code:

![User send wrong code](https://raw.githubusercontent.com/tolik-punkoff/ascii-captcha/master/screnshoots/on_page2_wrong%20code.png)

Правда описание у меня нигде не всплыло, но наверное потому, что я использовал браузер в параноидальном режиме, без js.

Вывод на экран и сохранение в файл дерева каталогов в Linux

Вывести на экран дерево каталогов в Linux можно следующей командой:

tree -d -R

-d — выводит только каталоги
-R — выводить рекурсивно (т.е. до последнего вложенного каталога)

Если вместо -d использовать параметр -a, команда выведет и все файлы.

Команда начинает работу с текущего каталога.

Для записи в файл достаточно использовать стандартный метод перенаправления, например:

tree -d -R >/tmp/tree.txt

Если вы находитесь в каталоге, скажем /home/user, утилита запишет в файл /tmp/tree.txt все дерево каталогов, начиная с /home/user

Простой скрипт, добавляющий текущий каталог в архив.

Задача

1. Добавить текущий каталог в архив со всеми подкаталогами и файлами.
Т.е., если вы находитесь в каталоге /home/user/directory, то скрипт должен добавить в архив сам каталог, и все содержимое.
2. Добавить только содержимое (т.е. в архиве присутствует только содержимое каталога, но не сам каталог).
3. Вывод справки об использовании скрипта по ключу -h или --help

Ход мысли (описание алгоритма)

Чтобы заархивировать текущий каталог разными способами, надо добавить параметр. Пусть скрипт, запущенный без параметров, архивирует текущий каталог вместе с ним самим, а скрипт, запущенный с параметром -nc (no catalog), архивирует только содержимое. Еще надо вывести помощь, а если подсунули какой-то другой параметр, то отругаться и вывести помощь.
Уточнение. Архив, из-за алгоритма работы архиватора, не сможет находиться в текущем каталоге, вне зависимости от того, с самим каталогом создается архив, или без. Архив надо создать в каталоге уровнем выше, а соответственно, предусмотреть ситуацию, когда пользователь вызывает скрипт из корневого каталога (выше него нет ничего).
Уточнение #2. Поскольку, про имя архива ничего не сказано, имя архива будет текущий_каталог.tar.gz

Решение

1. Поскольку, помощь будет вызываться в двух случаях, напишем отдельную функцию, чтоб вызывать помощь, когда нужно:

print_help()
{
    echo "Add current directory and subdirectories to tar.gz archive"
    echo "Use "`basename $0`" [-nc]"
    echo "[-nc] - add only content current directory (and subdirectories)."
    echo
    echo "Archive name == current directory name."
    echo "Archive will be created to up-directory."
    exit 1
}

2. Проверяем вызов помощи пользователем (в параметрах скрипта задано -h или --help):

if [[ "$1" == "-h" || "$1" == "--help" ]]; then
    print_help
fi

3. Проверяем, не запущен ли скрипт в корневом каталоге (/):

CURDIR=`pwd`

if [ "$CURDIR" == "/" ]; then
    echo "Oh, no! It's root directory!"
    exit 1
fi

Пояснение: `` обратные кавычки — те, которые, на клавише Ё, отправляют вывод работы команды в переменную. pwd выводит текущую директорию

4. Формируем имя архива и путь к нему и получаем имя текущего каталога

DIRNAME=`basename $CURDIR`
ARHNAME="../"$DIRNAME".tar.gz"

Пояснение: команда basename без дополнительных параметров, отрезает весь путь от имени файла, т.е. выводит на консоль только имя файла без относительного или абсолютного пути.

5. Если скрипту не заданы аргументы:

if [ $# -ne 1 ]; then

Пояснение: системная переменная $# хранит количество аргументов скрипта, заданных в командной строке.
запускаем архиватор, для создания архива вместе с текущим каталогом:

tar -czvf $ARHNAME "../"$DIRNAME

Пояснение: tar сам обрежет символы ../ и добавит, что надо.

6. Если параметр #1 скрипта присутствует, то проверяется, равен ли он -nc.

else
    if [ "$1" == "-nc" ]; then

7. Если да, вызывается архиватор, архивирующий содержимое текущего каталога (без самого каталога):

tar -czvf $ARHNAME "."

8. Иначе, выводится сообщение о недопустимом значении параметра и помощь по использованию скрипта:

else
	echo "Wrong parameter(s)!"
	echo
	print_help

Итог

Скрипт целиком на GitHub
На PasteBin

Заодно нашел кучу утилит для подбора паролей в Windows.

Утилиты не первой свежести, но запускаются из WinPE (надо положить их в шару, если использовать PXE), некоторые умеют работать с ОС на диске.

Скачать

На некоторые ругаются антивирусы, так что архив запаролен. Пароль:111

Консольные Live-дистрибутивы Linux.

Искал тут себе маленькие консольные (чтоб без иксов при старте) дистрибутивы Линукс. Перелопатил весь гугль. Вот меня пока два устроили, старейший, из мне известных System Rescue CD и INX, на основе Ubuntu, но без X-сервера. Он так и называется INX (Is Not X).

А вы что посоветуете?