Опросник свидетеля воздушного явления (НЛО) из проекта «Синяя книга»

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

Проект «Синяя (Голубая) книга» — один из серии проектов систематических исследований поступающих сообщений о неопознанных летающих объектах (НЛО), проводившихся ВВС США в середине XX века. Начавшись в 1952 году, он представлял собой вторую волну таких исследований (первая включала в себя два подобных проекта — Sign и Grudge). Исследования были прекращены в конце 1969 года.

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

Вообще хочу еще выложить и оригинальную методичку аналогичного советского проекта «Сетка», но найти ее пока не могу, ссылки в статьях на нее есть, а ее самой нет. У кого есть — поделитесь.

Оригиналы опросника

Скачать в одном архиве

Оригиналы + перевод (DOC, PDF) с Mega.NZ

Опросник © ВВС США, перевод © treeshateorcs, редактура и оформление (L) Tolik Punkoff и Независимая исследовательская группа «Дельта».

Пропал значок клавиатуры в Windows 7 (языковая панель).

И как я это поборол.

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

Забегая вперед, дело, похоже, было в антивирусе, то ли Касперский, то ли какая-то древняя версия Авиры нагадила в автозагрузку и Планировщик задач, похерив запуск языковой панели. У клиента сначала стояло одно, потом другое, глюк он заметил где-то между, потому сразу не обратился, а кто конкретно виноват, я выяснять, естественно не стал.

Шаг первый. Стандартная проверка.

1. Заходим в Панель управления —> Язык и региональные стандарты или через Выполнить (клавиши Win+R): команда: intl.cpl

2. Переключаемся на вкладку Языки и клавиатуры, нажимаем кнопку Изменить клавиатуру.

Откроется окно Языки и службы текстового ввода.

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

rundll32 shell32.dll,Control_RunDLL input.dll

В этом окне переходим на вкладку Языковая панель и проверяем, чтобы переключатель (радиокнопка) была в положении Закреплена в панели задач.

Если это так, но значка клавиатуры нет, то можно попробовать переключить радиокнопку в положение Скрыта или Располагается в произвольном месте рабочего стола, потом нажать кнопку Применить, вернуть радиокнопку в положение Закреплена в панели задач, вновь нажать Применить или OK. Если значок клавиатуры вернулся, то все хорошо, открываем шампанское и празднуем. Если нет, переходим к следующему шагу.

ВНИМАНИЕ!

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

1. Ищем в поиске меню Пуск «Создание точки восстановления» и запускаем соответствующий ярлык, или вводим команду systempropertiesprotection в окне Выполнить или командной строке. Также, можно щелкнуть правой клавишей мыши по значку Компьютер, в контекстном меню выбрать пункт Свойства, далее щелкнуть по ссылке Дополнительные параметры системы, и в появившемся окне перейти на вкладку Защита системы. Нажимаем кнопку Создать

В следующем окне вводим имя точки восстановления, любое, главное, чтоб сами потом нашли, например RestoreLangPanel.

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

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

Далее, надо проверить, прописан ли запуск ctfmon.exe в Реестре Windows. Запускаем Regedit и переходим по адресу HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

Если там нет строкового параметра, содержащего путь к ctfmon.exe,

то необходимо добавить его вручную, или воспользоваться готовым REG-файлом (сработает, если каталог Windows называется Windows и расположен на диске C:\)

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]

"ctfmon.exe"="C:\\Windows\\System32\\ctfmon.exe"

Скачать файл с Mega.NZ
Скачать файл с Google.Drive
Файл на PasteBin

После внесения изменений в Реестр, нужно перезагрузить компьютер.

У меня все получилось:

Программа для теста клавиатуры 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 Кб)

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

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

Меня похитили инопланетяне, впрочем, самих инопланетян я не видел, т.к. находился в изолированном помещении, насколько понимаю, тому ще у них другая атмосфера, непригодная для дыхания землян. Существа, которые называют себя Варкаранаи, оказались сверхцивилизацией, ведущей «оперативную деятельность и военные операции» сразу в нескольких галактиках, в т.ч. и в нашей.

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

Следующий кадр.

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

Следующий кадр.

Мне дали довольно небольшой, по их меркам, корабль. Размером, примерно, с Санкт-Петербург. Из живых существ я на нем вообще был один, других членов экипажа не было, тем не менее, я будто бы чувствовал каждый прибор, каждый механизм корабля, и знал, как всем \этим управлять, причем, так кайфово было, что вообще описать сложно.

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

И я увидел пульсар! Невероятно красивый ярко-голубой шар, покрытый черной сетью разломов, его «стробоскоп» периодически светил мне в лицо.

Если бы не защитное поле, то меня и корабль уничтожило бы в мгновение. После этой мысли я проснулся.

ЗЫ. Картинка пульсара просто для иллюстрации, то, что видел во сне, так найти и не смог, даже примерно.

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 (копия)