C#, ввод только цифр (чисел) в текстовое поле (TextBox).

Или окончательное решение цифирьного вопроса.

Преамбула

Ранее мы показывали простые способы, как обеспечить, чтобы в TextBox можно было ввести только цифры, т.е. целое число (копия), а потом расширили пример до ввода в TextBox отрицательных (копия) и дробных чисел (копия)

К сожалению, во всех этих примерах есть фатальный недостаток, текст в них все-таки вставить можно, если воспользоваться стандартным контекстным меню или комбинацией клавиш CTRL+V. На уровне простого взаимодействия с формой и контролами это перехватить невозможно, придется несколько извернуться, т.к. для перехвата события «вставить», придется перехватить сообщение Windows WM_PASTE, которое отправляется окну, или элементу управления окна при выполнении операции вставки. Для Windows, тащемта, однохуйственно, кому отправлять сообщение, форме (окну) или, например, текстовому полю. Т.к. для Windows, и текстовое поле на самом деле окно, просто дочернее, т.е. размещенное в другом окне (форме, в нашем случае). Но это я залез глубоко в бок. Нам нужно добраться до сообщений. А это можно сделать только изнутри самого контрола, но не из событий стандартных контролов, так что будем писать свой!

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

Начало

Подключим необходимые пространства имен:

using System.Windows.Forms;
using System.ComponentModel;
using System.Globalization;

Начнем делать свой контрол, наследуемый от TextBox. Т.е. создадим новый класс:

public class InputDigitControl:TextBox
{
	//тут будет код :)
}

Для начала необходимо определить сообщения, которые будем перехватывать. Заводим в классе константы, определяющие коды нужных сообщений:

const int WM_PASTE = 0x0302; //Сообщение "Вставка" (через к.м. и комбинацию клавиш)
const int WM_CHAR = 0x0102; //Сообщение - нажатие алфавитно-цифровой клавиши

WM_CHAR будет отправлено форме системой только тогда, когда будет нажата алфавитно-цифровая клавиша, его будем перехватывать для отслеживания цифр (и прочего). Правда есть важный нюанс — WM_CHAR посылается и при нажатии комбинаций клавиш, например Ctrl+C и т.д., а также некоторых клавиш, которые не совсем подходят под понятие «алфавитно-цифровая», например BACKSPACE. Это надо будет учесть.

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

Т.е. алгоритм действий таков — мы проверяем входящий символ на соответствие, и, либо пропускаем его дальше (возвращаем base.PreProcessMessage(ref msg) или false), либо что-то делаем с содержимым текстового поля, если символ нужен (это понадобится при вводе отрицательных и дробей) и возвращаем true. Или ничего не делаем, если символ нежелательный, и просто вызываем true. В последнем случае, символ просто не попадет в поле ввода, т.к. контрол будет думать, что он уже обработан.

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

Исходники

Контрол

Тестовое приложение

Репозиторий

C#, перехват вывода консольной программы в реальном времени из собственного приложения.

Преамбула.

Итак, необходимо перехватить в реальном времени вывод консольной программы, которая запущена собственным приложением в фоновом режиме, например, как это делает GUI Openvpn для Windows.

На моделировании формы приложения особо останавливаться не буду, сделаем там элемент управления для вывода данных, организуем возможность выбора консольного приложения или BAT/CMD-файла, вывод которого будем перехватывать, кнопки для запуска, останова внешнего приложения, и кнопку для очистки лога.

Замечу только, что для вывода перехваченных сообщений использовал немного модифицированный ListView (копия)


Главное окно основной программы

Консольные тестовые приложения и командные файлы.

Теперь надо подготовить несколько приложений для теста, одно будет консольное приложение на C#, которое генерирует случайное число, выводит его на консоль, ожидает 250 мс, и так повторяет в бесконечном цикле:

Бинарник testapp.exe
Исходный код

И несколько вариантов BAT-файлов, реализующий тот же функционал, только время ожидания составляет 1 секунду.

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

Еще одна вводная

1. В более современных версиях .NET можно использовать оператор async, но я решил обойтись без него, т.к. все возможности для перехвата данных с консоли были еще в .NET Framework 2.0. были, а слова такого не было. Как в анекдоте про Вовочку.
2. Запускать вызываемую консольную программу следует в отдельном потоке, с которым мы будем общаться как обычно — с помощью событий. Иначе чуда не получится — все будет висеть и не работать.

Т.е алгоритм примерно понятен — надо запустить вызываемую консольную программу в отдельном потоке, а потом рулить основной программой, перехватывая данные при наличии события (т.е вывода запущенной программой новых данных).

Основной класс.

Создадим новый класс, например Runner:

public class Runner

Выше класса добавляем публичный делегат (он нам потом для события понадобится)

public delegate void LogMessage(string Data);

Подключаем нужные пространства имен:

using System.Threading;
using System.Diagnostics;

Внутри класса заводим публичное свойство, определяющее путь к процессу:

public string ProcessPath { get; set; }

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

public event LogMessage LogSend;

И приватные переменные типов ProcessStartInfo, Process, для управления вызываемым процессом и типа Thread, для управления потоком, в котором будет запущен дочерний процесс.

private ProcessStartInfo Info = null;
private Process Proc = null;
private Thread t = null;

В конструкторе инициализируем переменную Info:

public Runner(string processpath)
{
    ProcessPath = processpath; //устанавливаем значение свойства ProcessPath
    Info = new ProcessStartInfo(ProcessPath);
    Info.RedirectStandardError = true; //перехват STDERR
    Info.RedirectStandardOutput = true; //перехват STDOUT
    Info.UseShellExecute = false; //иначе перехват работать не будет, см. MSDN
    Info.CreateNoWindow = true; //не запускать процесс в новом окне
                                //это скроет консоль запускаемой программы
}

Примечание: Присвоение свойству ShellExecute значения false позволяет перенаправлять потоки ввода, вывода и ошибки.

Запуск процесса и перехват вывода консоли

В функции StartProcess() непосредственно выполняем запуск процесса и перехват.

try
{
    Proc = Process.Start(Info);
}
catch (Exception ex)
{
    LogSend("INTERNAL ERROR: "+ex.Message);
    return;
}

Запускаем процесс, если произошла ошибка, вызываем событие, ответственное за отправку сообщения и выходим.

Для перехвата создаем цикл, в котором вызываем Process.StandardOutput.ReadLine(), пока результат не будет равен null.

StandardOutput.ReadLine() будет ждать, пока программа не выведет на консоль строку, и тогда вернет ее, или же вернет null, когда программа завершится.

string ConOut = "";

do
{
    ConOut = Proc.StandardOutput.ReadLine();
    if (ConOut != null)
    {
        LogSend(ConOut);
    }                

} while (ConOut != null);

Поскольку запуск этой функции вызовет «зависание», если запустить ее в основном потоке, то вызывать ее нужно в отдельном:

public void Start()
{
    t = new Thread(StartProcess);
    t.Start();
}

Ну и функция для остановки вызванного процесса:

public void Stop()
{
    if (Proc != null)
    {
        Proc.Kill();
        Proc = null;
    }

    if (t != null)
    {
        t.Abort();
        t = null;
    }
}

Основная форма

В коде основной формы создаем объект Runner, регистрируем обработчик событий, запускаем перехват, не забывая про останов по нажатию нужной кнопки:

Runner runner = null;
//...
private void btnStart_Click(object sender, EventArgs e)
{
    runner = new Runner(txtPath.Text);
    runner.LogSend += new LogMessage(runner_LogSend);            
    runner.Start();
}

private void btnStop_Click(object sender, EventArgs e)
{
    if (runner != null)
    {
        runner.Stop();
    }
}

В обработчике события отправляем данные в нужный элемент управления, не забывая про Invoke:

void runner_LogSend(string Data)
{
    Invoke((MethodInvoker)delegate
    {
        lvConsole.Items.Add(Data);
        lvConsole.EnsureVisible(lvConsole.Items.Count - 1);
    });
}

Результат

Перехват вывода из BAT-файла

Исходники

На GitHub

BAT/CMD. Задержка (тайм-аут), пауза, аналог команды sleep Linux в DOS/Windows

Преамбула

Почему-то Вовчик Воротов еще со времен DOS не мог в командный процессор добавить встроенную команду sleep <секунд>, которая обеспечивает паузу в скрипте BAT/CMD, как это делается в том же bash. Но есть насколько решений.

Использование утилиты CHOICE.

Совместимость: командные процессоры, начиная с DOS 6.00, включая все версии Windows.

Утилита CHOICE.EXE изначально предназначена для запроса ответа пользователя (Да/нет), например, вызов команды

choice /M "Request Text"

где,
"Request Text" — текст вопроса

отобразит в консоли следующее:

Request Text [Y,N]?

Пользователь должен будет нажать клавишу Y или N, код возврата можно будет отследить в BAT-скрипте в переменной %ERRORLEVEL%, Y1 N2.

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

choice /T [секунд] /D [любой_символ] >nul

где,
/T [секунд] — включить задержку на [секунд] секунд.
/D [любой_символ] — ответ по умолчанию (без него не будет работать параметр /T).
>nul — отправить вывод сообщения команды в >nul, дабы не загрязнять вывод скрипта.

Например:

choice /T 1 /D y >nul

установит задержку в одну секунду.

+ Максимально совместимая команда, начиная с DOS 6.00.
— Не является встроенной командой, может отсутствовать в сборках Windows/DOS или образах Windows PE/загрузочных образах DOS
— Команда может спровоцировать зависание скрипта на неопределенный срок, если скрипт был вызван в определенных условиях, когда командный процессор cmd.exe был вызван иным приложением Windows, выполняющим перехват STDOUT консоли.

Справка по команде

Команда TIMEOUT

Совместимость: Windows 7 и выше.

Синтаксис:

timeout /T [секунд]
или
timeout [секунд]

где,
[секунд] — время в секундах.

+ К Windows 7 Вовчик Воротов таки озаботился командой, позволяющей делать стандартную задержку в BAT-скриптах.
— Нет в более ранних версиях Windows и DOS
— Если BAT-файл запущен в приложении, перехватывающем STDOUT (консольный вывод), могут случиться необоснованные глюки.
— Не является встроенной командой, может отсутствовать в сборках Windows или образах Windows PE

Пример:

timeout /T 1 >nul

Справка по команде

Команда WAITFOR

Совместимость: Windows 7 Professional и выше.

Вообще эта команда предназначена для другого, она отправляет или ожидает системного сообщения. Примерно того же, чем являются системные сообщения в Linux, например SIGTERM и SIGKILL, хотя и весьма условно — в Windows они устроены несколько по-другому. Если программе указать заведомо несуществующее системное сообщение и время ожидания — программа сработает как пауза в BAT/CMD скрипте:

waitfor /T [время] [сообщение(строка)] 1>nul 2>nul

где,

/T [время][время] время ожидания, секунд.
[сообщение(строка)] — можно использовать любую случайную строку, не совпадающую с известными системными сообщениями.
1>nul — перенаправление стандартного потока вывода (STDOUT) в устройство nul.
2>nul — перенаправление стандартного потока ошибок (STDERR) в устройство nul.
Два последних переопределения используются для того, чтобы не замусоривать вывод скрипта.

Пример (скрипт будет ожидать 1 секунду):

waitfor /T 1 zhzhz 1>nul 2>nul

+ Не вызывает зависаний при перехвате консольного вывода скрипта внешним приложением
— Нет в более ранних версиях Windows/DOS
— Не является встроенной командой, может отсутствовать в сборках Windows или образах Windows PE

Справка по команде

Нестандартное использование команды ping

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

ping на locallhost можно использовать, как команду для задержки в BAT-файле. Хотя, этот способ не рекомендуется использовать, т.к. время задержки может отличаться в зависимости от количества отправленных пакетов, «железа» компьютера или версии ОС.

Пример:

ping -n 3 127.0.0.1 >nul

127.0.0.1 — IP-адрес localhost

-n 3, т.е. 3 пакета отправленные на localhost дают примерное время ожидания в 1 секунду на Windows 7, на ноутбуке HP Pavilion

+ Есть во всех версиях Windows/DOS где есть стандартная поддержка сети от MS
+ При перехвате STDOUT не глючит
— Время задержки определяется весьма приблизительно.

Внешние утилиты

Самостоятельных реализаций sleep/timeout написана вагон и маленькая тележка. Например, одну из них можно скачать на GitHub:

sleep (console application)

Запуск:

sleep <секунд>

Пример:

sleep 1 >nul

+ Сбоев не обнаружено
+ Совместимость: Все версии Windows x86/x64
+ Имеются исходники, можно пересобрать под DOS при наличии компилятора Freepascal.
— Внешняя нестандартная утилита, придется таскать вместе с BAT/CMD файлом.

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

CMD/BAT, генерация случайных чисел.

Применимо к линейке ОС Windows NT, начиная, как минимум с Windows 2000, x86 и x64 версий[прим. ред.]

Командный процессор Windows (CMD) содержит встроенную переменную %RANDOM%, которую можно использовать для генерации случайных чисел.

%RANDOM% генерирует случайное целое число от 0 до 32767 (включительно).

echo %RANDOM%

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

Например, можно сгенерировать случайные числа в диапазоне от 1 до 500:

@ECHO OFF
SET /a _rand=(%RANDOM%*500/32768)+1
ECHO Random number: %_rand%

Если попытаться сгенерировать случайные числа больше чем 32767, то это приведет к проблемам, хотя с виду все будет работать. Например, если в вышеприведенном коде заменить 500 на 65536, то это приведет к генерации последовательности «случайных» чисел, которая будет состоять только из нечетных чисел.

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

Например, если вы генерируете числа в диапазоне от 1 до 100 то в среднем:

— При генерации 10 чисел, примерно 6% будут дублироваться
— При генерации 100 чисел, этот процент вырастет до 63, т.е. 63% сгенерированных чисел будут дубликатами, т.е. совпадать с одним или несколькими из остальных 99 чисел.
— Если сгенерировать 1000 чисел, почти все будут дублироваться, т.к. есть только 100 возможных значений.

Случайные и псевдослучайные числа

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

В случае %RANDOM%, начальное значение зависит от текущего времени (системного таймера), когда произошел запуск экземпляра командного процессора. Это может создать проблему, когда проходит примерно одно и то же время перед обращением к переменной %RANDOM% и запуском самого скрипта, одновременно со стартом экземпляра командного процессора. Возвращаемое число будет находиться в небольшом предсказуемом диапазоне.

В качестве примера создайте файл numbers.cmd, содержащий следующий код:

@Echo off
Echo %RANDOM%

И запустите его следующим образом:

cmd /c numbers.cmd
cmd /c numbers.cmd
cmd /c numbers.cmd
...

Раймонд Чен из MSFT подробно описывает, почему %RANDOM% в cmd.exe не такой уж случайный.

Йоханнес Баагё опубликовал сравнение лучших алгоритмов генерации случайных чисел на javascript. Самый быстрый из них — Alea(), копия которого представлена по ссылкам ниже или в источнике.

Эта реализация имеет ряд преимуществ: можно генерировать числа большие, чем позволяет %RANDOM%, можно быстро сгенерировать много чисел, можно создавать псевдослучайные последовательности, т.е., результаты станут повторяемы, если вы вызовете скрипт с указанием одного и того же начального числа, т.е сами зададите начальные условия.

Впрочем, не стоит использовать эти «случайные числа» для чего-то серьезного, в винде так и нет нормального штатного генератора случайных чисел, и изначально не было. В худшем случае стоит пользоваться библиотеками криптопровайдера, в лучшем — аппаратным генератором. (прим. ред.)

Скрипт random.js на PasteBin
Источник

Перевел Серёга «PTZSnake jr.» Неклюев
Специально для Tolik-punkoff.com
Редактор: Leha Silent

Все права идут нахуй.

CMD/BAT Переопределение (redirect) STDERR (стандартного потока вывода ошибок) куда-нибудь.

Ну, например, в файл или в nul.

Не знал, что в Windows работает линуксовый синтаксис:

someprogramm.exe parameters 1>nul 2>nul

Или так:

someprogramm.exe parameters >nul 2>nul

1> или > — стандартный поток вывода (STDOUT)
2> — стандартный поток вывода ошибок (STDERR)

Причем, если бы в грозу не вырубило интернет, хрен бы узнал. Никогда не надо было, а тут понадобилось. Психанул и написал как в Линуксе, ВНЕЗАПНО, сработало.

Вовчик Воротов даже куски синтаксиса у никсоидов тырил?

C#, тайм-аут (sleep) в консольной программе.

Проще всего это сделать с помощью остановки потока (thread):

System.Threading.Thread.Sleep(время_в_миллисекундах);

Например:

System.Threading.Thread.Sleep(250);

остановит выполнение основного потока программы (если поток один, соответственно, программу) на 250 миллисекунд:

static void Main(string[] args)
        {
            
           //какой-то код

            System.Threading.Thread.Sleep(250);
            
            //какой-то код
			
        }

C#, получение списка дисков, доступных в системе, и некоторых их параметров

Заметка от склероза.

Делается с помощью функции DriveInfo[] Drives = DriveInfo.GetDrives(); из пространства имен System.IO.

Ссылки

DriveInfo.GetDrives() на MSDN
Класс DriveInfo на MSDN
Пример кода на PasteBin

Менеджер отложенной автозагрузки / StartupDelayed v 0.0.2

Первая версия (копия)

+ Исправлен баг с сохранением конфигурации при удалении записей (спасибо SCPicker за тестирование и сообщение).

+ Убран режим выбора каталога конфигурации из командной строки, оставлен только обычный (файлы конфигурации в LocalApplicationData\StartupDelayed\) и портативный (файлы конфигурации в директории с программой).

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

+ Исправлены прочие мелкие недочеты.

+ Инсталлятор изменен на NSIS.

Скачать

Портабельная версия (ZIP)

Инсталлятор

Исходники на GitHub

Включение, отключение и настройка режима гибернации в Windows 7 и выше.

Сон, гибернация, ждущий режим и все все все. Немного терминов и определений.

Сон (Windows Vista и выше) или Ждущий режим (Windows XP) — временное завершение работы ОС без выгрузки оперативной памяти в файл и закрытия приложений, т.е. ОС приостанавливает активную работу, снижает нагрузку на процессор, «гасит» ненужную периферию (монитор, жесткие диски, и даже останавливает вентиляторы, один фиг нагрузка на процессор минимальна). Выход из этого режима и возвращение к работе происходит по нажатию клавиш клавиатуры или кнопки питания на системном блоке ATX (они все сейчас ATX), или по прерыванию от мыши (можно изменить в настройках) или модема (у кого есть аналоговый модем? :)) .

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

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

Гибернация (Windows Vista и выше) или Сон (Windows XP) — завершение работы ОС и компьютера с предварительной выгрузкой оперативной памяти в файл hiberfil.sys с последующим полным отключением питания ПК. При повторном включении, ОС загружает содержимое файла hiberfil.sys обратно в оперативную память и продолжает работу.

Минусы:
— Требуется дополнительное место на диске.
— Если злоумышленнику удастся получить доступ к hiberfil.sys, то возможна атака даже на систему, защищенную TrueCrypt и VeraCrypt (вроде как не всех версий). Пример атаки (копия)
— Более долгое время для перехода в рабочее состояние, по сравнению с режимом сна.

Плюсы:
+ В случае отключения электропитания в режиме гибернации, данные не потеряются.
+ Если системный диск зашифрован TrueCrypt/VeraCrypt потребуется ввод пароля

Гибридный спящий режим (присутствует, начиная с Windows Vista, включен по умолчанию) — сочетание первого и второго режима, электропитание компьютера не отключается полностью, а «гасится» только ненужная периферия, при этом оперативная память сбрасывается в hiberfil.sys. Восстанавливает информацию из оперативной памяти, если во время спящего режима возник сбой питания (да, работает, я проверил). Сочетает плюсы и минусы предыдущих режимов.

Включение режима гибернации.

Если «Сон» по умолчанию присутствует в меню «Завершение работы», то пункт «Гибернация» приходится включать вручную.

1. Проверяем, включен ли режим гибернации (или гибридный спящий режим), для этого открываем диск C: и смотрим, присутствует ли в корне диска файл hiberfil.sys. Файл является скрытым, потому включаем отображение скрытых файлов (ну или смотрим через Far Manager, например).

Если файла нет, как на иллюстрации, значит, режим гибернации полностью отключен. Если файл есть, переходим к пункту 5.

2. Запускаем командную строку от имени администратора (Пуск —> Все программы —> Стандартные)

3. Выполняем команду:

powercfg /h on

4. Перезагружаем компьютер.

Файл hiberfil.sys появился.

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

Полное отключение режима гибернации и гибридного спящего режима.

Если необходимо полностью отключить режим гибернации и гибридный спящий режим, а также удалить файл hiberfil.sys:

1. Нужно запустить командную строку в режиме администратора.
2. В командной строке ввести команду:

powercfg /h off

3. Параноики могут после этого запустить очистку свободного места на диске в любой программе безопасного удаления файлов, например, в Eraser’е.

Почему не происходит переход в спящий режим/режим гибернации

Наиболее частая причина состоит в том, что этому может мешать какая-то программа:

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

Сброс пароля Windows 7 при наличии доступа к системе.

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

Внимание! Способ не сработает, если доступа к десктопу нет, и если запись Администратора тоже запаролена, и вы не знаете пароля и от нее.

1. Запускаем командную строку от имени Администратора (Пуск —> Все программы —> Командная строка, кликаем по ярлыку правой кнопкой мыши и выбираем Запуск от имени администратора)

2. В командной строке вводим:

net user <username> <new_password>,

где:
<username> — имя пользователя
<new_password> — новый пароль

Например:

net user paulzovatel 666999

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

Блокировка рекламы на 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 и переустановить плагины, т.е. снести, перезапустить браузер, установить их обратно и вновь перезапустить браузер.

Как попасть в LJR

У самого свободного блогосервиса Рунета lj.rossia.org (там даже негров можно называть неграми, а Путина — Хуйлом) опять проблемы, случился сбой DNS и у них отвалился домен. Расскажу, как поправить

Windows

1. Отключаем антивирус.
2. Идем в папку C:\Windows\System32\drivers\etc\
3. Открываем в Блокноте (откроете в Ворде, чуда не получится) файл hosts
4. Дописываем в конец файла строчку:

192.155.89.253  lj.rossia.org

Linux

Вносим строчку

192.155.89.253  lj.rossia.org

в файл /etc/hosts

Такие дела.

Калькулятор пропорций v 0.2

Задолбало меня считать сумму внесения платежей с комиссией, через терминалы (или с международными переводами, один хрен, там с комиссией), так что запряг друга $EG’у, чтоб он разобрался в вопросе и допилил эту функцию в калькулятор пропорций. Он, ВНЕЗАПНО, допилил:

Формула

var paymentWithCommission = payment / (1 - 100 / proc);

где:
payment — необходимая сумма платежа
proc — процент комиссии

Скачать

Установщик
Бинарник без установки (ZIP)

Исходник

На GitHub

Гимн Программистов и другие приключения Пухлого.

О, нашел еще один офигенный старый мультик, «Гимн программистов и другие приключения Пухлого», он тоже был флэшевский. Так что я его обэкзешил, как было описано тут (копия)

Скачать RAR (SWF+EXE) с mega.nz

Flash умер, да здравствует Flash!

Преамбула

Прислал мне тут товарищ письмо, что не может просмотреть старые мультики во Flash, я думал, что смогу их довольно быстро переконвертировать, но у меня тоже прямо сразу не получилось, т.к. в системе не оказалось соответствующего плеера/плагинов (просто забыл их поставить при установке).

Немного истории. Flash в свое время был практически революционной технологией — на маленькой (даже модемной) скорости прямо в браузере можно было смотреть 2D-мультфильмы или играть в мини-игры. Впрочем, на Flash писались и весьма неплохие проекты типа Punk’s Not Dead (копия), которые работали и в оффлайне. Вообще для простой мини-игры или мультика достаточно было скачать SWF-файл и запускать его в оффлайне с помощью специального плеера от Adobe, разработчика Flash.

Были даже целые сайты и полутекстовые онлайн-RPG, основанные на Flash. Например, когда я учился в универе, то залипал в Бойцовский Клуб

Сама технология Flash сочетала векторную графику, которая не зависит от разрешения, т.е. она может масштабироваться, и простой C-подобный язык программирования Actionscript, который позволял управлять объектами в мультфильме или игре. Порог вхождения во Flash был очень низким, что позволяло рисовать мультики или писать приложения кому угодно. К сожалению, формат был закрытым, и никто не сделал опенсорсную реализацию.

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

Как исправить?

Дело в том, что можно было объединить файл SWF с самим плеером, т.е. к файлу SWF прикреплялся модуль EXE и его можно было запускать без плеера, как приложение Windows, плеер был встроен, примерно как самораспаковывающийся архив. Этим и воспользуемся.
Это, кстати, даже имелось как возможность при разработке во Flash, как опция, предоставленная Adobe, собрать ролик в SWF или EXE.

1. Нам понадобится программа Flash Builder (ссылки в конце заметки). Скачиваем, распаковываем, устанавливаем, запускаем.

2. В верхней части окна напротив поля SWF file нажимаем кнопку Browse (1) и выбираем нужный SWF-файл.

3. Остальные опции (Icon File и Splash Screen File) можно пропустить.

4. В нижнем списке (3) выбираем режим окна Flash-приложения:
— Полный экран (Full Screen)

— Окно без заголовка (Window without title bar)

— Окно с заголовком (Window with title bar)

— Окно с заголовком и кнопкой масштабирования окна (Window with title bar and Maximize Button)

— Окно без рамки (Window without Border). Выглядит также, как и на полный экран, только в окне, так что без картинки 🙂

Рекомендую выбирать режим «Окно с заголовком и кнопкой масштабирования окна (Window with title bar and Maximize Button)«, т.к. он самый удобный. На полный экран ролик может стать незакрываемым, а с кнопкой масштабирования у пользователя останется возможность развернуть ролик на весь экран.

Также рекомендую изменить фон ролика (2) c Transparent Background (прозрачный фон) или Transparent Background with text fix (прозрачный фон с исправлением текста) на Solid Background (непрозрачный фон) и выбрать кнопкой рядом с выпадающим списком (2) цвет из палитры.

Прозрачный фон не дает возможность изменить вид окна (доступен только Full Screen), да и выглядит эта прозрачность довольно противно.

Обычно для роликов следует выбирать черный или белый фон, но иногда приходится экспериментировать. Например, для Padonki in da flash (копия) лучше всего подошел серый фон.

Скачать

Flash Builder 1.40 с официального сайта
Flash Builder 1.40, копия на Mega.NZ

О шмоньке Соловьеве, aka Вечерний Мудозвон и о накрутках.

Вместо преамбулы скажу сразу вывод, да Соловьева абсолютно законно выпиздил из трендов Ютуб. И абсолютно в соответствии со своими правилами. И зря Роскомнадзор запрещает аниме, т.к. им же реклама на некоторых аниме-сайтах просмотры и накручивает.

Бредыстория

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

Суть

Сижу я, никого не трогаю, примус починяю , в смысле аниме смотрю, тут вдруг вижу вот это:


(полное разрешение)


(полное разрешение)

Небольшое расследование

Оно совсем небольшое, но тем не менее. У плеера kodik.info, где он был внедрен на сайт каталога аниме, есть некая база аниме (что вообще так-то хорошо, информация должна быть свободной). Ну так вот, сайты с контентом не держат контент у себя, а подключают плеер, а плеер (точнее, хозяева плеера) показывают рекламу и аниме. А чтобы купить показ в плеере kodik, нужно потратить несколько мертвых президентов США. И, они не на хеллоуин, они на долларовых купюрах. Пока не буду говорить, как я купил рекламу у kodik.info, мы придержим. Но просьба распространить, чтоб у вечернего М. пукан подорвался. Так что Ютуб вполне норм выебал Соловьева, вечернего М. за накрутку.

Удачи вам и любви!

Пакетный конвертер (перекодировщик) текстовых файлов v 0.0.3b

Обновление пакетного конвертера текстовых файлов.

Благодарим всех, кто сообщил о багах.

Изменения в версии v 0.0.3b

+ Изменения в алгоритме поиска файлов
+ Поправлен баг с сохранением конфигурации (масок файлов)

Исходники

Репозиторий на GitHub

Скачать

Портативная версия

Постоянная страничка программы (копия)