C#, вывод цветного текста на консоль и изменение цвета фона консоли.

Делается очень просто, цветом текста управляет свойство ForegroundColor объекта Console, а цветом фона — свойство BackgroundColor, которые принимают значения из перечисления ConsoleColor.

Например, если установить свойства таким образом:

Console.BackgroundColor = ConsoleColor.DarkGray;
Console.ForegroundColor = ConsoleColor.Green;

то при выводе текста, например, командой:

Console.WriteLine("Demo Text");

мы получим зеленый текст:

Demo Text

на темно-сером фоне.

Всего консоль поддерживает 16 цветов.

Сброс цветовой схемы консоли

Для возврата к цветовой схеме по умолчанию используется метод Console.ResetColor();

Пример

Демонстрационный пример на GitHub (выводит все цвета текста и фона)

Скриншоты

Браузеры для Pentium II/III для процессоров без поддержки инструкций SSE2

Нашел еще одну подборку браузеров для процессоров без поддержки инструкций SSE2, способных работать на старых компьютерах Pentium III (некоторые должны и на Pentium II) под Windows XP.

Продолжая эту тему (копия)

Скачать с Mega.nz

Chrome 33 (Standalone Setup)
Firefox Setup 45.9.0 ESR none SSE2
Firefox Setup 48.0.2 none SSE2
Opera 20.0.1387.91 none SSE2
Chromium 35.0.1870.2 portable

Программа для генерации и чтения 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

C#, как сделать транслитерацию. Перевод русской строки в latinitsu.

Преамбула

Думаю, что объяснять, что такое транслит, никому не нужно — это написание русских слов latinskimi bukvami, понадобилось сделать это на C#.

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

Русская буква А Б В Г Д Е Ё Ж
Латинская буква или буквосочетание A B V G D E Yo Zh
Русская буква З И Й К Л М Н О
Латинская буква или буквосочетание Z I J K L M N O
Русская буква П Р С Т У Ф Х Ц
Латинская буква или буквосочетание P R S T U F Kh Ts
Русская буква Ч Ш Щ Ъ Ы Ь Э Ю
Латинская буква или буквосочетание Ch Sh Shch » Y E Ju
Русская буква Я
Латинская буква или буквосочетание Ja

Вторая проблема — этот стандарт проблематично использовать для транслитерации URL или имен файлов, надо что-то делать с пробелом (который в именах файлов и URL смотрится, как говно), так что в другом варианте таблицы, для замены Ъ, Ь и пробела, был выбран знак подчеркивания (_).

Класс, для транслитерации символов и строк

Создаем новый класс Translit:

public class Translit
{
	
}

В класс Translit добавляем словарь (Dictionary), который, в качестве ключа, будет использовать тип char (русскую букву), а в качестве значения string, содержащий ее латинский эквивалент. Думаю, ясно, почему string — некоторые русские буквы передаются латинскими буквосочетаниями:

private Dictionary<char, string> TranslitDict = new Dictionary<char,string>();

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

Для общего случая:

private void FormDictStandart()
{
    TranslitDict.Clear();

    //Заглавные буквы (общий случай)
    TranslitDict.Add('А', "A");
	
    //часть кода вырезана для экономии места
    
    TranslitDict.Add('Ъ', "''");
    TranslitDict.Add('Ы', "Y");
    TranslitDict.Add('Ь', "'");
    TranslitDict.Add('Э', "E");
    TranslitDict.Add('Ю', "Ju");
    TranslitDict.Add('Я', "Ja");

    //строчные буквы (общий случай)
    TranslitDict.Add('а', "a");
	
    //часть кода вырезана для экономии места
    
    TranslitDict.Add('ъ', "''");
    TranslitDict.Add('ы', "y");
    TranslitDict.Add('ь', "'");
    TranslitDict.Add('э', "e");
    TranslitDict.Add('ю', "ju");
    TranslitDict.Add('я', "ja");
}

И для «режима совместимости»:

private void FormDictCompat()
{
    TranslitDict.Clear();

    //Заглавные буквы (режим совместимости)
    TranslitDict.Add('А', "A");
	
    //часть кода вырезана для экономии места
    
    TranslitDict.Add('Ъ', "_");
    TranslitDict.Add('Ы', "Y");
    TranslitDict.Add('Ь', "_");
    TranslitDict.Add('Э', "E");
    TranslitDict.Add('Ю', "Ju");
    TranslitDict.Add('Я', "Ja");

    //строчные буквы (режим совместимости)
    TranslitDict.Add('а', "a");
	
    //часть кода вырезана для экономии места
    
    TranslitDict.Add('ъ', "_");
    TranslitDict.Add('ы', "y");
    TranslitDict.Add('ь', "_");
    TranslitDict.Add('э', "e");
    TranslitDict.Add('ю', "ju");
    TranslitDict.Add('я', "ja");
	
    //пробел
    TranslitDict.Add(' ', "_");
}

Теперь необходимо добавить в класс свойство, чтобы переключать режимы и переформировывать словарь. Классически, добавляем внутреннюю переменную compatibility типа bool, для хранения текущего значения свойства, и само свойство, при изменении которого, будет вызываться одна из вышеуказанных функций:

private bool compatibility = false;
  
public bool Compatibility
{
    get
    {
        return compatibility;
    }
    set
    {
        if (value)
        {
            FormDictCompat();
            compatibility = true;
        }
        else
        {
            FormDictStandart();
            compatibility = false;
        }
    }
}

Добавим простой конструктор класса:

public Translit(bool Compat)
{
    Compatibility = Compat;
}

Транслитерация символа

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

public string TranslitChar(char Rus)
{
    if (TranslitDict.ContainsKey(Rus))
    {
        return TranslitDict[Rus];
    }
    else
    {
        return Rus.ToString();
    }
}

Проверка строки на наличие русских символов.

Это я уже делал в маленьком примере (копия), так что просто вставлю функции оттуда:

//русские буквы
public static bool ContainsRus(string TestString)
{
    return
        Regex.IsMatch(TestString, @"[а-я]", RegexOptions.IgnoreCase);
}

//русские буквы и пробелы
public static bool ContainsRusOrSpace(string TestString)
{
    return
        Regex.IsMatch(TestString, @"[а-я]|\s", RegexOptions.IgnoreCase);
}

Транслитерация строки

1. Проверяем, содержит ли строка русские буквы или русские буквы и пробел, в зависимости от режима работы.

Примечание: Сильно работу алгоритма это замедлить не должно, а вот ускорить, в случае какой-нибудь гигантской строки может, т.к. Regex, который используется в функции поверки, работает со строкой напрямую в памяти, средствами .NET.

Если искомого нет — возвращаем оригинальную строку.

2. Проходимся по символам строки, транслитерируем их, возвращаем новую строку.

Примечание: Для формирования новой строки лучше использовать StringBuilder вместо простой конкатенации, опять же, на случай, если строка может оказаться гигантской. См. подробности в статье на Хабре

public string TranslitString(string Rus)
{
    string sBuf = "";
    StringBuilder sb = new StringBuilder();

    if (compatibility)
    {
        if (!ContainsRusOrSpace(Rus)) return Rus;
    }
    else
    {
        if (!ContainsRus(Rus)) return Rus;
    }

    for (int i = 0; i < Rus.Length; i++)
    {
        if (TranslitDict.ContainsKey(Rus[i]))
        {
            sBuf = TranslitDict[Rus[i]];
        }
        else
        {
            sBuf = Rus[i].ToString();
        }
        
        sb.Append(sBuf);
    }

    return sb.ToString();
}

Исходники

Класс Translit на GitHub
Тестовый пример на GitHub

C#, как присвоить char значение null или его аналог.

Пост из серии спрашивали — отвечаем.

Значение null переменной типа char не присвоить никак, т.к. char относится к «простым» (в другой литературе «базовым») типам, которые не могут принимать значение null, и обязательно должны быть проинициализированы каким-то значением.

Но иногда надо объявить переменную типа char, с которой работать будем потом, например, в цикле. Как тогда быть? Можно инициализировать переменную символом с кодом 0 (0x00). Проще всего сделать это так:

char Chr = '\0';

Но можно и другими способами:

char Chr = char.MinValue;
char Chr = (char)0;

Или даже с извращениями:

char Chr = "\0".ToCharArray()[0];

Или с извращениями, используя большой и тяжелый класс Convert, который лучше избегать, если он не очень нужен:

char Chr = Convert.ToChar(0);

C#, регулярное выражение для кириллицы.

Понадобилось тут узнать, содержит ли строка кириллицу. Решение через Regexp.

Кириллица

[а-я]

Кириллица или пробел

[а-я]|\s

Пример использования

Подключаем System.Text.RegularExpressions:

using System.Text.RegularExpressions;

Код:

public static bool ContainsRus(string TestString)
{
    return
        Regex.IsMatch(TestString, @"[а-я]", RegexOptions.IgnoreCase);
}

public static bool ContainsRusOrSpace(string TestString)
{
    return
        Regex.IsMatch(TestString, @"[а-я]|\s", 	RegexOptions.IgnoreCase);
}

Код на PasteBin

Анализ и распаковка установщика QTInstaller вручную. С помощью HEX-редактора и такой-то матери.

Преамбула

Понадобилась мне одна программка, которая, почему-то не захотела ставиться на мою систему, причем не захотела без всяких ошибок и вылетаний. Инсталлятор просто висел на 1% и дальше двигаться не хотел. Зная, что поддержка винды у этой софтины зависит исключительно от бодуна разработчиков (то они винду вообще не поддерживали, потом прошлая версия прекрасно ставилась и работала, а тут вдруг опять нет), решил я в софтине поковыряться, небось, софтина-то работает, а инсталлятор кривой. Но о том, как я возился с софтиной, напишу как-нибудь позже. А тут будет такой простенький заметк про реверсинг инсталлятора.

Определение инсталлятора

Я уже как-то упоминал (копия), что инсталляторов и упаковщиков есть туева хуча на свете, и для начала надо определить, с каким именно инсталлером мы имеем дело. Для этого воспользуюсь программкой Detect It Easy (DiE), которая по своей базе сигнатур может определять тип экзешника, чем он упакован, чем скомпилирован, а если это инсталлятор — определить и его тип. Программка работает примерно также, как антивирусный сканер, определяя по сигнатурам, с чем мы имеем дело. Благо, почти все упаковщики, компиляторы или сборщики инсталляционных пакетов, так или иначе оставляют свою сигнатуру в файле.

Итак, скармливаю DiE исследуемый инсталлятор.

Видим тип — QT installer.

Об автоматической распаковке и дальнейших мыслях

Естественно, о ней я и подумал сразу же, не изобретать же велосипед, до нас его более умные люди изобрели. А не тут-то было! Автоматического распаковщика не нашел, так что стал думать… Qt проект открытый, значит, скорее всего, они особо не заморачивались, и инсталлятор представляет из себя самораспаковывающийся архив, который по структуре выглядит как-то так, как выглядят самораспаковывающиеся архивы RAR WinZip или 7Zip — в начале файла EXE-модуль, а после него данные, которые EXE-модуль распаковывает:

В принципе, что я иду верным путем, можно было понять из главного окна DiE, тот недвусмысленно сообщал про overlay (оверлей), в котором находятся QT installer data, т.е. данные QT-установщика.

Далее под катом

Инструменты

Detect It Easy (DiE):

На Exe-Lab
На Mega.nz

qresExtract:

Binary for Windows x86
Sources

WinHex 19.9:

Скачать с rutracker.org
Ссылка на Torrent-файл

Niet, Molotoff, клип от студии Психозмультфильм

Когда-то сто лет назад один из друзей его даже размещал на только что появившемся Ютубе (по просьбе [info]rutopist@lj), но теперь уж не той записи, и того ролика найти нельзя. А вот флешка нашлась — конвертнул в экзешник, кому надо — берите. Песня почему-то без третьего куплета, но это косяк авторов оригинального ролика.

Скачать оригинал можно на Mega.NZ (RAR: SWF+EXE)

Установка аналога apt-get в Cygwin

У Cygwin есть свой пакетный менеджер, встроенный, собственно, в установщик. Однако, если надо установить что-нибудь небольшое, то выходить из консоли и запускать инсталлятор лень. Можно установить аналог убунтовского apt-get.

1. В установщике сначала устанавливаем wget, если раньше этого не сделали (в окне мастера со списком пакетов выбираем Full [1]) и в поиске[2] вводим wget. Выбираем последнюю версию в столбце New[3].

Картинка в полном разрешении

2. Скачиваем скрипт apt-cyg (в консоли Cygwin):

wget https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg

3. Даем скрипту права на исполнение:

chmod +x apt-cyg

4. Перемещаем скрипт в /usr/local/bin:

mv apt-cyg /usr/local/bin

Пользоваться apt-cyg так же, как убунтовским apt-get. Все зависимости от устанавливаемого пакета подтянутся автоматически. Например, можно установить mc:

apt-cyg install mc

После того, как скрипт отработает, запускаем:

mc

ФАНФАРЫ!

Ошибка при установке Сygwin, Cygwin не видит списка репозиториев.

И не может скачать пакеты с репозиториев.

Преамбула

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

При попытке добавить зеркало вручную, скачивания все равно не происходит.

Как пофиксить

1. Заходим в Свойства браузера (Свойства: Интернет) через Панель управления или Пуск —> Выполнить (Win+R) и вводим и запускаем inetcpl.cpl.
2. Переключаемся на вкладку Дополнительно
3. Ставим галочки напротив пунктов Использовать TLS 1.1 и Использовать TLS 1.2

Готово

Список зеркал:

Список пакетов для установки:

ЗЫ. Пишут, что на некоторых системах не помогает, точнее помогает только после обновления IE и установки кумулятивного обновления для Windows 7 (копия)

Оффлайновые (кумулятивные) обновления для Windows.

Лично я все обновления винды всегда отрубал, отчасти из-за того, что оно часто бывало не совсем лицензионным (от откровенно крякнутых, до кастомных сборок), а отчасти от того, что обновления от M$ «не все одинаково полезны». Некоторые крашили систему, причем внезапно, некоторые делались исключительно для какой-нибудь гадости, как принудительная вакцинация переход с Win7 на Win10

Но, обновления бывают и полезными, от всяких затычек дыр, типа которых (дыр) использовали вирусы WannaCry и NotPetya, до обновления корневых сертификатов.

Так как же получить полезные обновления, но пропустить вредные?

Я уже как-то упоминал сайт Simplix’а. Товарищ аккуратно следит за всеми выходящими обновлениями для Windows и формирует кумулятивные (общие) пакеты обновлений, которые можно накатывать на свежую систему, желательно, с предварительно отключенным автообновлением, чтоб до кумулятивного не попала всякая копирастическая дрянь.

Не реклама. Я сам уже 3 года пользуюсь его пакетами обновлений на нескольких десятках машин, где установлены Windows 7 и даже Windows XP. Сбоев после обновления Simplix еще не бывало.

И еще это бывает полезно там, где интернета нет, или он совсем медленный. Скачал заранее и припер на флешке.

Для XP он уже не формирует пакет обновлений, т.к. обновления окончательно перестал выпускать сам M$, но последний пакет хранится на сайте. Без зазрения совести, его можно назвать Windows XP SP4! Дембельский аккорд уходящей ОС.

Ссылки

Сайт Simplix
Кумулятивные обновления для Windows XP SP3 (новые выходить перестали)
Кумулятивные обновления Windows 7 (обновляются)

Запись из BAT/CMD-файла в STDERR.

Небольшой пост из серии спрашивали — отвечаем.

Примечание: это работает только в версиях Windows, где командный процессор умеет в расширенную обработку команд, т.е., начиная с Windows 2000.

Расширенная обработка команд по умолчанию включена в Windows Server 2003/Windows XP, но может быть отключена через Реестр, так что для совместимости лучше ее включить явно:

SetLocal EnableExtensions

Команда echo по умолчанию выводит на STDOUT, т.е., например, команда:

echo I write to STDOUT

Выведет текст I write to STDOUT на STDOUT, да на мне капитанская фуражка 🙂

Для вывода текста на STDERR необходимо использовать переопределение вывода, синтаксис которого похож на аналогичный синтаксис в Linux, т.е. в современных Windows тоже есть три канала ввода/вывода, с номерами, аналогичными Linux, т.е.:

1STDOUT
2STDERR
3STDIN

Стандартные потоки

Переопределяется вывод на STDERR конструкцией 1>&2, т.е. команда

echo I write to STDERR 1>&2

Выведет текст I write to STDERR на STDERR.

BAT-файл writeto.bat целиком:

@echo off
SetLocal EnableExtensions
rem This BAT file write in stdout and stderr

echo I write to STDOUT
echo I write to STDERR 1>&2

Проверка

Для проверки работы BAT-файла можно создать тестовый BAT-файл, который будет вызывать файл writeto.bat и перенаправлять потоки вывода STDOUT и STDERR в текстовые файлы.
Содержимое файла writeto_test.bat:

@echo off
SetLocal EnableExtensions
rem This BAT file test for writeto.bat

call writeto.bat 1>_stdout.txt 2>_stderr.txt

Данный файл надо создать в каталоге с writeto.bat.

После запуска файла writeto_test.bat в текущем каталоге появятся файлы _stdout.txt и _stderr.txt со следующим содержимым:

_stdout.txt:
	I write to STDOUT

_stderr.txt:
	I write to STDERR

ФАНФАРЫ!

Пример на GitHub

HUILO.EXE: Не дай Украине остаться без газа!

Пересобрал в экзешник прикольную старую флешевскую игрушку, как раз на злобу дня.

Правила простые — кидайтесь яйцами в Хуйло, и не забывайте закрывать вентили, которые Хуйло успело открутить (кликом по ним).

Скачать с Mega.NZ (RAR: SWF+EXE)

OT VINTA — Не мала баба клопоту…

Спрашивали — отвечаем. Да, я знаю эту песню и люблю ее, как очень многое из украинского рока (в данном случае — рокабилли).

Есть ютубная версия:

Прямая ссылка: https://youtu.be/u7DhIEm6BDI

Но для моих дорогих подпизчиков мне удалось сохранить самую первую версию клипа во Flash, которая откроет все его грани в УльтраHD-качестве, и да, вряд ли, за давностью лет, она сохранилась у самих Ot Vinta.

Скачать SWF+EXE с Mega.NZ

БрокаЦентр — ДЕрьМО [Full album, 2003]

Прямая ссылка https://youtu.be/3ch8qdiOXB0:

Tracklist:

00:00 — Хой!
03:40 — Сыпь, гармоника (стихи С. Есенина)
06:00 — Рожь
08:29 — Ботинки и пиво
10:24 — Мой друг
12:08 — Ода конопле
13:33 — Пьяница (стихи С. Есенина)
16:41 — Бои без правил (skinhead music)
20:41 — Настёна

На Realrock/Realmusic

Альбом на MEGA.NZ (RAR and MP3)

ЗЫ. Красно-черную в хорошем качестве не нашел, но может чего другое М.В. зайдет, ИМХО, так «Хой!» годная. Или «Бои без правил». Ну «Ода конопле» должна Глебу зайти.

C#, как записать в STDERR сообщение об ошибке из консольного приложения.

Пост из серии спрашивали — отвечаем.

Итак, как в C# записать в STDERR. STDERR — это стандартный поток вывода для сообщений об ошибках, туда правильно организованные консольные приложения отправляют, собственно, сообщения об ошибках. Отправить в STDERR сообщение можно с помощью объекта Console.Error:

Console.Error.WriteLine("Write to STDERR.");

Код тестового приложения

static void Main(string[] args)
{
    Console.WriteLine("Write to STDOUT.");
    Console.Error.WriteLine("Write to STDERR.");
}

Проверка

Для проверки можно создать BAT-файл, вызывающий тестовое приложение и переопределяющий (копия) вывод со стандартных потоков в файлы stderr_.txt и stdout_.txt. stderr и stdout являются зарезервированными системными именами, потому к именам файлов надо что-то добавить, знак _ в данном случае:

Экран при выполнении тестового приложения:

Z:\...\write2stderr\write2stderr\bin\Debug>write2stderr.exe
Write to STDOUT.
Write to STDERR.

При выполнении BAT-файла экран останется пустым, но в директории с файлом появятся два файла stderr_.txt и stdout_.txt со следующим содержимым.

stderr_.txt:
	Write to STDERR.

stdout_.txt:
	Write to STDOUT.

Пример на GitHub

Исходник
Тестовый BAT-файл
BAT-файл и скомпилированный EXE

Мухоморовые недотрипы или (псевдо)научный эксперимент на себе.

Диклеймер

В этом тексте описываются опасные эксперименты. Пожалуйста, не повторяйте их дома. Автор и редакция отказываются от любой ответственности, если вы повторите опыты на себе.

Красный мухомор не содержит наркотических или иных запрещенных веществ, внесенных в списки таковых в Российской Федерации, США, Украине, Великобритании, Австралии или Европейском Союзе. Данный текст является любительским научным исследованием и не пропагандирует употребление запрещенных веществ. Красный мухомор относится к ядовитым, условно ядовитым или несъедобным грибам, в зависимости от классификации в различных научных исследованиях. Мы не рекомендуем его употребление. При самостоятельном сборе, при отсутствии твердых знаний в определении видов грибов, можно перепутать мухомор красный с другими схожими видами (мухомор вонючий, мухомор поганковидный, и даже с бледной поганкой), что несет прямую угрозу жизни и здоровью. Если Вы не обладаете соответствующими знаниями, не пытайтесь самостоятельно собирать грибы.

Преамбула

Давно хотел написать про сабж, а сегодня вот [info]glebo@ljr с началом сезона поздравляет. Я уже пару лет назад насмотрелся и наслушался Вишневского, и все хотел проверить на себе, як воно.

Естественно, перед всеми экспериментами 5 дней не употреблялось других психоактивных веществ, в т.ч. и алкоголя. Исключение — никотин.

Недотрип первый

В прошлом 2020 году, где-то в начале сентября, я таки собрался за мухоморами, собрал. Доза — две средних взрослых (раскрывшихся) шляпки, и две молодых (нераскрывшихся). Фото в прошлый раз, к сожалению, не делал.
Употребление: необработанными с солью.
Эффект: где-то минут через 40 появился звон в ушах, немного затормозилось восприятие окружающего, были очень слабые визуалы, буквально на периферии зрения, вроде как капли воды на объективе фотоаппарата, когда в визор смотришь, впрочем, они быстро пропадали. Постепенно к горлу подкатывал ком, потом я попросил ассистента принести мне таз, сам принял лежачее положение, т.к. просто «поплохело» по общему состоянию.

В голову начали лезть странные фразы и мысли, причем по типу «Гастронома на улице Герцена», т.е. все слова нормальные, а смысла в них мало, одну даже запомнил: «Справедливость находится не на каждом разводе милиции».

Потом меня стошнило в таз, довольно мощно. Поскольку употреблял почти на голодный желудок, то вырвало довольно беспроблемно и не очень противно. Выпил сладкого морса, опять стошнило сладеньким, второй раз блевать было даже как-то по кайфу.

После рвоты расслабило, неприятные ощущения ушли, стало как-то кайфово, не сильно, скорее как «дички», т.е. очень лайтовой травы покурил. Включил плейлист с Ragga-Jungle миксами и просто валялся на диване, наслаждаясь музыкой и расслабоном.

Опыт второй

Буквально по горячим следам. Почему-то получился более негативным, хотя я последовал совету опытного «грибника» [info]glebo@ljr, который он давал анонимусу, также столкнувшемуся с проблемой тошноты: слегка обжарить мухоморы на сливочном масле.

Вот сырье:

Из пожаренного съел примерно три четверти, потом как-то резко не полезло, хотя, ярко выраженного кома в горле тоже не возникло, на вкус приемлемо, хотя и необычно. Но кулинар из меня говно в любом случае, так что ничего страшного. Опять все пошло во тому же сценарию, что и в предыдущем случае — какие-то легкие визуалы, когда смотрел на бетонную стену в дальнем помещении офиса, она как бы «дышала», но очень незначительно, и звон в ушах.

Потом меня отвлекли от самосозерцания — приперся какой-то коммивояжер, но я был поглощен экспериментом, потому, с одной стороны, ему повезло, я ему открыл. А с другой стороны, он меня, наверное, за наркомана ебаного принял, т.к. я просто тупо отвечал «нет» на любые его вопросы, даже по поводу, бывал ли я в «Тетрисе» (это крупный торговый центр в ПТЗ). Комми ушел несолоно хлебавши, и ему, внезапно, в этом повезло, т.к. только он ушел, мне потребовалось очень срочно блевануть, аж так срочно и неожиданно, что еле добежал до сортира. Если бы он не ушел, то был бы заблеван он, его товары, и вообще нахуй все вокруг.

После того, как протошнило, легкости, как в прошлом эксперименте, не наступило, наоборот, стало как-то тяжко и погано. Дошел до диванчика, прилег. На ютубе автоматом включился какой-то исторический выпуск с Тамарой Эдельман, от ее голоса немного полегчало, и я провалился в какой-то недосон, в котором опять же были какие-то не совсем логичные фразы и незнакомые термины, запомнил только то, что все крутилось вокруг Короля в Желтом (лавкрафтовского Хастура, как я после пробуждения понял), еще в этом какие-то то ли эльджели то ли что-то похожее по звучанию, участвовали и вроде как менты, в общем, как я потом понял, мозг что-то себе сам около-лавкрафтовское конструировал из прочитанного и окружающей действительности.

Когда недосон прошел, оставалось какое-то тяжелое состояние, примерно как около-гриппозное. Прошло вот совсем недавно, и то не полностью.

Выводы

Выводы не окончательные, скорее, очень промежуточные. Похоже, мухомор, очень индивидуальный гриб. Например, на [info]glebo@ljr и еще одного блоггера с LJR он влияет как легкий галлюциноген/энтеоген, как и на моего друга РыББу из реала. Мне не подходит в «шаманском» или «рекреационном» смысле, возможно, подойдет в более «медицинском». Заготавливаю сырье для проверки некоторых рецептов от Вишневского, и использования в микродозинге от западных исследователей.