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

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

Формула

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

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

Скачать

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

Исходник

На GitHub

Детская крипота №1. Первые встречи.

Наверное, это были самые первые случаи встречи с неведомым, можно объяснить их и играми с памятью, и чем-то еще, но в раннем детстве помню, что у нас в квартире жили, как минимум, два аномальных существа, а также происходили некоторые аномальные события.

Крыса, со странным именем «Барашика» (ударение на «и»). Это было существо, которое я мог иногда видеть перед сном, в остальное время, оно шебуршило у меня под кроватью. Я спрашивал маму, что это может быть, она отвечала, что это крыса пытается пол прогрызть.

А потом я увидел, как нечто прячется под мою кровать. Настоящих крыс я до этого никогда не видел, поэтому подумал, что так выглядеть крыса и должна, так что страха оно не вызвало.

Выглядело существо как пятиугольник с лапками и крысиной мордочкой с длинными усами, кожа, натянутая между костями «пятиугольника» просвечивала, открывая взгляду губчатую материю внутри тела. Я спросил, как его (ее) зовут, оно ответило: «Барашика, ты меня не бойся». Я переспросил, а почему Барашика? Оно ответило — «ну я же шуршу», и скрылось под кроватью. Звук «к» был скорее чем-то средним, между «к» и «х», так что может быть, оно было Барашихой.

Я еще мелкий у мамы переспрашивал, что такое Барашиха, тогда мама ответила, что это крыса, но теперь она говорит, что и крыс у нас не было.

Потом был «Кирпич», выглядел он как обычный красный кирпич, как будто с завода, но появлялся он или на проигрывателе, на шпинделе, куда насаживают пластинку, либо в случайном месте на «стенке», т.е. на таком комплексе шкафов, который был тогда распространен.

Появляясь, он начинал вертеться вокруг продольной оси, т.е., примерно так:

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

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

Второе событие — это, скорее всего, сонный паралич. Моя кровать стояла в комнате родителей, родители спали на диване, и однажды я проснулся, и увидел высокую черную фигуру, которая склонилась над мамой, которая спала с краю дивана. Фигура, как мне тогда подумалось, увидела, что я проснулся, и отошла к окну. Немного поправила что-то типа длинного балахона, и просто осталась стоять, смотря на вид из окна. А как-то закричать или пошевелиться я не смог. Долгое время последний случай объяснял контактом с неведомым, но, когда прочитал про подобные явления, думаю, это был классический сонный паралич. Но реально стремный.

Такая вот детская крипота.

Вакцинация от COVID-19, личный опыт.

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

Да, вакцинировался «Спутником-V» (она же Гам-COVID-Вак), причем еще до начала массовой вакцинации, т.к. иначе было никак, надо было ехать. Впрочем да, послушал Латынину, которая посоветовала при первой возможности вакцинироваться «хоть тушкой, хоть чучелком». И из личного опыта, да, кое-кто помер от ковидлы, а кто переболел тяжело, рассказывал, как это погано. Трубка во рту мне не улыбалась.

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

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

К вечеру было ощущение, что резко ни с того ни с сего начался классический будун — голова тяжелая, подташнивает, и в целом тяжело. Температуру не мерил, лег спать. Уснул нормально, но на второй день проснулся рано, как с бодуна, но с явной температурой. Померил, ну да, самая неприятная по ощущениям, 37,5, а с учетом того, что у меня стабильно низкая, на уровне 35,8-36,1 — вообще противно. Употребил «Ибуклин», температура опустилась. И так еще два раза за день, поднимается, жру «Ибуклин», падает. На третий день все прошло.

Вакцинацию вторым компонентом делал уже в MSK. Первые симптомы все те же (жар в руке и легкая боль в месте укола), но температура на 37,5 поднялась где-то через три часа и уже не снижалась два дня, но сбивалась «Ибуклином». На третий день, опять же все прошло.

Да, прошло достаточное время, чтобы снять титры антител, обязательно поделюсь позже, как этот самый «Спутник-V» отработал.

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

Плакатов Пэйпердемона бояться не надо, пока я на стороне Латыниной, колитесь хоть западными вакцинами, хоть «Спутником». Шанс пострадать от вакцины гораздо меньше, чем получить трубку в горло от ковидлы.

Модель Солнечной системы.

Забавная моделька Солнечной системы с возможностью показывать положение планет на любую дату.


Большой скриншот можно посмотреть по клику

Основные возможности

— Отображение положения планет на любую дату, задав точную дату или передвинув специальный элемент управления.
— Возможность «перемотки» Солнечной системы вперед или назад специальным ползунком или клавишами управления курсором ( <--«влево» и «вправо» -->), остановка «перемотки» клавишей «вниз».
— Показ фазы Луны.
— Переключение модели между гелиоцентрической системой Коперника и гео-гелиоцентрической системой Тихо Браге
— Переключение между месяцами года и зодиакальным кругом.
— Приятная музыка (по необходимости), можно использовать программу, как заставку-залипашку.

Помощь

Скачать


С Mega.nz RAR (SWF + EXE)

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

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

Скачать 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

«Отключите Сервер», пародия на «Задержите поезд» Паука

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

Отключите сервер и убейте программиста
Отключите сервер номер шесть шесть шесть

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

Отключите сервер и убейте программиста
Отключите сервер номер шесть шесть шесть

Отключите сервер и убейте программиста
Отключите сервер номер шесть шесть шесть
Отключите сервер и убейте программиста
Отключите сервер номер шесть шесть шесть

ПАДОНКИ in da flash

Прислали абсолютно неполиткорректный мультик, аж 2004 г., созданный неким Дядей Федором с сайта udaff.com, про приключения падонка Падонок и его друга растамана Марли. Причем, по нынешним временам, мульт получился неполиткорректным с обоих сторон, что с западной (в первой серии ЛГБТ-демонстрацию давят бульдозером), что со стороны ГОРФ, бо герои постоянно употребляют РОСКОМНАДЗОР. Также имеется обкуренный колобок, а восьмая серия — не серия, а flash-игрушка, где надо в гей-клубе «КАКУНЕГРАВ» отстреливать посетителей (нечто наподобие известной «Куриной охоты»).

Вроде бы в сборнике нет 4 серии, но ее там могло и изначально не быть (была 3.1).
В общем, такой DIV-трэшачок для подростков, но мне нравится 🙂

Пересобрал оригинальные SWF-ки в EXE, так что смотреть можно в винде, где сдох или вообще не поставлен был Flash-player, который, один хрен блядиадобы удалили с сайта. Хорошо, что у меня все их продукты исключительно ворованные, ну не зря оракул местного разлива — сразу знал, что у анальных проушин воровать надо.

Скачать

ПАДОНКИ in da flash (RAR: SWF + SWF EXE) с Mega.nz
ПАДОНКИ in da flash (RAR: SWF + SWF EXE) с Google.Drive

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

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

Бредыстория

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

Суть

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


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


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

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

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

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

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

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

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

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

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

Исходники

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

Скачать

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

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

C#, поиск файла по маске, более правильное решение.

Преамбула

Когда-то уже говорил (копия) что стандартная функция C# Directory.GetFiles(); неправильно ищет файлы по маске. И даже сделал на скорую руку кривофикс, но кривофикс действительно оказался именно что криво. Во-первых, срабатывал только для некоторых масок, а во-вторых, оказался чувствительным к регистру имен файлов. Делаем более прямое исправление.

Вспомогательные функции

Заведем вспомогательную функцию, которая будет добавлять конечный слэш (\) к имени директории. Оно не особо надо, но пусть будет для порядка.

private static string AddSlash(string st)
{
    if (st.EndsWith("\\"))
    {
        return st;
    }

    return st + "\\";
}

И функцию, получающую имя файла из полного пути. Конечно, можно было бы воспользоваться классом FileInfo из System.IO, но тут операция совсем уж простая, а FileInfo может сгенерировать ненужный Exception. Проще получить имя файла с помощью строковой операции:

private static string GetNameOnly(string FullName)
{
    int LastSlash = FullName.LastIndexOf("\\");
    
    if (LastSlash == -1) return FullName;

    return FullName.Substring(LastSlash + 1);
}

Преобразование маски файла в регулярное выражение.

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

1. В имени файла могут встретиться символы, считающиеся служебными в регулярном выражении (.,^,$,{,},[,],(,),+), их необходимо экранировать, чтоб они воспринимались обработчиком регулярных выражений, как обычные, а не служебные символы.

//точка в маске файла должна быть точкой в регулярном выражении
//экранируем
Mask = Mask.Replace(".", "\\.");
//^,$,{,},[,],(,),+ в regexp служебные, в именах файла допустимые
//экранируем
Mask = Mask.Replace("^", "\\^");
Mask = Mask.Replace("$", "\\$");
Mask = Mask.Replace("{", "\\{");
Mask = Mask.Replace("}", "\\}");
Mask = Mask.Replace("[", "\\[");
Mask = Mask.Replace("[", "\\[");
Mask = Mask.Replace("(", "\\(");
Mask = Mask.Replace(")", "\\(");
Mask = Mask.Replace("+", "\\+");

2. * — в маске файла это любой символ, или их отсутствие. В регулярном выражении этому соответствует комбинация .*, заменяем:

Mask = Mask.Replace("*", ".*");

3. ? в маске файла — любой существующий символ. В регулярном выражении это символ . (точка), заменяем:

Mask = Mask.Replace("?", ".");

4. Осталось ограничить работу регулярного выражения началом и концом строки, строкой будет являться имя (маска) файла. Начало строки обозначается символом ^, конец символом $. Добавляем:

Mask = "^" + Mask + "$";

Функция целиком:

private static string Mask2Reg(string Mask)
{
    //точка в маске файла должна быть точкой в регулярном выражении
    //экранируем
    Mask = Mask.Replace(".", "\\.");
    //^,$,{,},[,],(,),+ в regexp служебные, в именах файла допустимые
    //экранируем
    Mask = Mask.Replace("^", "\\^");
    Mask = Mask.Replace("$", "\\$");
    Mask = Mask.Replace("{", "\\{");
    Mask = Mask.Replace("}", "\\}");
    Mask = Mask.Replace("[", "\\[");
    Mask = Mask.Replace("[", "\\[");
    Mask = Mask.Replace("(", "\\(");
    Mask = Mask.Replace(")", "\\(");
    Mask = Mask.Replace("+", "\\+");
    //* - любое количество любого символа, 
    //в regexp любой символ - точка, любое количество *
    Mask = Mask.Replace("*", ".*");
    //? - любой символ, в regexp любой символ - точка.
    Mask = Mask.Replace("?", ".");

    //добавляем начало и конец строки к имени файла.
    Mask = "^" + Mask + "$";

    return Mask;
}

Модификация функции поиска

В модифицированную функцию поиска передаются такие же параметры, как и в функцию Directory.GetFiles(); т.е. маска файла, путь до каталога и перечисление SearchOption, которое может принимать два значения: SearchOption.AllDirectories — поиск с подкаталогами и SearchOption.TopDirectoryOnly — поиск только в текущем каталоге.

Внутри функции:

1. Преобразуем маску файла в регулярное выражение:

string MaskRegStr = Mask2Reg(sMask);

2. Добавляем слеш к пути поиска (на всякий случай):

sPath = AddSlash(sPath);

3. Заводим List<string>, куда будем складировать отфильтрованные файлы из найденных (на то, как криво работает Directory.GetFiles() есть ссылки в начале заметки).

List<string> FoundFiles = new List<string>();

4. Создаем обработчик регулярных выражений с опцией RegexOptions.IgnoreCase, чтобы игнорировать регистр входной строки (в нашем случае — имени файла).

Regex MaskReg = new Regex(MaskRegStr, RegexOptions.IgnoreCase);

5. Вызываем функцию поиска из System.IO:

string[] files = Directory.GetFiles(sPath, sMask, SO);

6. Фильтруем вывод на предмет лишних файлов (см. подробнее по ссылке в начале заметки). Фильтрация производится путем сравнения имени файла с ранее сгенерированным регулярным выражением. Если имя файла соответствует регулярке, оно добавляется в List:

foreach (string filename in files)
{                                
    if (MaskReg.IsMatch(GetNameOnly(filename)))
    {
        FoundFiles.Add(filename);
    }
}

7. Результат возвращается в виде строкового массива:

return FoundFiles.ToArray();

Функция целиком:

public static string[] Find(string sPath, string sMask, SearchOption SO)
{
    string MaskRegStr = Mask2Reg(sMask);
    sPath = AddSlash(sPath);
    List<string> FoundFiles = new List<string>();
    Regex MaskReg = new Regex(MaskRegStr, RegexOptions.IgnoreCase);

    string[] files = Directory.GetFiles(sPath, sMask, SO);

    foreach (string filename in files)
    {                                
        if (MaskReg.IsMatch(GetNameOnly(filename)))
        {
            FoundFiles.Add(filename);
        }
    }
    return FoundFiles.ToArray();
}

Пример на GitHub

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

Пример на GitHub

Песня про НЛО.

Вспомнилась детская, почти крипи-стори. Итак, прикиньте, начало 90-х, по телеку идут 600 секунд и передача «НЛО — Необъявленный Визит» с Мягченковым. И вот, в садике я долго объяснял одногруппнику что НЛО существуют, и даже песня про них есть. Ее по радио передают.

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

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

Такие дела.

Марковые трипы.

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

Диклеймер №2. Специально для Администрации LJ.Rossia.Org
Пост не содержит активных ссылок и скрытой рекламы, или же продакт-плейсминга. Пост создан исключительно в научных целях, сам архив с записями сохранен на другом ресурсе, поставщика описанных марок не уже существует.

Примечание: Архив защищен паролем, пароль указан в комментарии архива. Формат архива RAR5, формат текстов TXT. Кодировка: Windows 1251 и UTF-8.

Скачать