Solto.net

Solto.net

На Пикабу
Дата рождения: 1 января
3244 рейтинг 3 подписчика 9 подписок 10 постов 2 в горячем
Награды:
5 лет на Пикабу
52

Вокруг виноваты все, но не я1

Грёбаная волна постов про требовательность женщин уже прям на ха-ха пробивает. Авторам этих замечательных опусов невдомёк, видимо, что и мужчина и женщина могут и будут себя оценивать ровно так, как хотят сами? Если дама желает только принца - это проблемы не принца, а дамы. И если джентльмену нужна минимум принцесса- это тоже проблемы нифига не принцессы. Платно, бесплатно, с тараканами или без. Ещё в древние времена изобрели прекрасное средство от подобных вещей - игнорирование. Можно просто пройти мимо дурачка или дурочки. То, что кто-то не может найти себе партнёра - это исключительно его недоработка. Если не получается - значит прилагаешь недостаточно усилий. И вот пофигу, какой у тебя пол, достаток и прочее. Просто ты ленивая жопа. Везение - неотъемлемая часть жизни, но если повезёт найти, то без работы над собой и отношениями - это ничем не поможет. Это распространяется не только на отношения, а на каждый аспект жизни: друзья, карьера, хобби и так далее. Работайте над собой и тогда не будет "я не соответствую этим завышенным требованиям", а вы сами будете выдвигать требования. Или не будете. Но в обоих случаях вас перестанет беспокоить ваше несоответствие фантазиям кого-то другого.

1

Как я писал генератор паролей

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

Сразу скажу, я не верстальщик и не дизайнер, но именно вот так вижу красивый интерфейс. Что у нас тут есть: ползуночки для регулирования соотношения разных категорий символов, поля с числовым отображением соотношения (в них можно и вписать сразу значение) в диапазоне от 0 (этой категории символов не будет) до 10, поле для заблокированных символов (ну вот не хочу в своём пароле я видеть например " * ") куда просто подряд вписываются все неприемлемые символы, выпадающий список с типами паролей (блочные: "qwer-tyui-1234-5678" и строковые: "qwertyui12345678") и настройки размеров. При выборе строчного пароля можно задать только его длину. А, да, ещё есть кнопка, самое важное же!

Быстренько сверстал карточки, и отправился создавать класс этого генератора. Использую я Blazor Server, значится писать мы будем на С#. Создаём наш PassGen и прописываем в него свойства и методы:

Давайте по порядку:
Result - это класс в котором у нас лежит password и error, оба свойства - это строки, сгенерированный пароль и сообщение при ошибке, соответственно.
Type - это у нас тип генерируемого пароля.
Characters - класс символов и всего к ним относящегося, остановимся на нём чуть подробней:

Тут мы храним numeric - число отражающее кол-во цифр в пароле, и аналогично с специальными символами, буквами нижнего регистра и верхнего. А ещё некий exclude - это строка с заблокированными символами. Дальше идут BlockBased и LineBased где по аналогии лежат настройки для размера блоков, количества блоков, разделителя и длина пароля в случае с линейным, ничего интересного. А внизу обитает Charset, он уже имеет парочку методов:

Тут у нас есть 4 листа для разных типов символов, в конструкторе они заполняются номерами по таблице ASCII. Я решил убрать все непечатные и тильту. А дальше метод Exclude в котором строка с забанеными символами убирается из каждого из этих массивов. Казалось бы, почему не собрать их все в один лист? Но нельзя пока, об этом дальше (вообще три из них можно, но упрощения это не даст). После идёт метод GetTotal, который собирает нам итоговый набор символов для генерации:

Создаём экземпляр класса Random, локальный буфер для итогового листа символов, а потом внезапно сортируем переданные переменные. Получаем самую маленькую из них и отправляем в цикл в качестве инициализирующего значения. Странный цикл, хрен пойми что вообще делает и за форматирование кода мне морду набьют. А этот цикл ищет наибольший общий делитель для всех четырёх переменных. Реализация странная, да и честно говоря это тут нахрен не нужно, но... Я могу себе это позволить. Дальше мы сокращаем все переменные соотношений и генерируем один большой массив согласно этим переменным. Если у нас соотношение 2:4:6:8, то мы добавим в итоговый набор одну пачку цифр, две пачки больших букв, три пачки маленьких и четыре пачки специальных символов. Самые внимательные заметили, что цифр мы добавляем в 3 раза больше, чем всего остального. и вот почему: в диапазоне от 33 до 125 у нас 27 малых букв, 27 больших и ~30 спецсимволов, а цифр всего 10, несправедливо это получается... А потом мы возвращаем этот лист не забыв предварительно его перемешать, да, тут и всплыл тот самый рандом, который создавался в самом начале. А создавался он там, чтоб растянуть по времени его инициализацию и инициализацию следующего рандома, так как это генератор ПСЕВДО случайных чисел и он опирается на состояние системы. (надо было использовать криптографический по-хорошему)

Замечательно, мы всё подготовили, теперь время ГЕНЕРИРОВАТЬ! А происходит это чуть ниже в методе Generate класса PassGen:

Тут мы создаём экземпляр Charset, чтоб он не висел в экземпляре постоянно. Просим очистить набор от мусора к которому добавляем и разделитель, чтоб он внутри блока не попался. Кормим ему соотношение символов, а получаем назад лист с номерами всех доступных для генерации символов в нужных пропорциях. Переписываем Result, чтоб новенький и чистенький был. Отсекаем хитрожопых "тестировщиков" пасхалочкой и переходим к самой генерации. Она крайне примитивна: для блоков берём их количество и запускаем цикл, в этом цикле проверяем, не первая ли это итерация, если первая - разделитель не суём. Генерируем размер текущего блока из промежутка min - max и запускаем цикл на это количество итераций. И в этом вложенном цикле просто к password приписываем случайно извлечённый из набора символ. Не забываем только его конвертировать в непосредственно символ, а то в наборе хранятся номера. С линейным всё ещё проще, там всего один цикл, но перед ним есть нюанс... Надо вернуть разделитель в коробку, а то мы его выше удалили. За сим всё, нужно присрать это к свёрстанной странице и назначить на кнопку этот самый Generate.

А вот скрин результата генерации с произвольными настройками:

Ну и по традиции: подписывайтесь на мой t.me/ ЗАЕБАЛИ СО СВОИМ ТЕЛЕГРАМОМ.
ПОЛЬЗОВАТЕЛЬ НЕ ВКЛЮЧАЛ ДОНАТЫ, ПЕРЕВЕСТИ ЕМУ ДЕНЬГИ НЕЛЬЗЯ, только пивом угостить лично.

Показать полностью 6

Какая ирония

Какая ирония

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

Показать полностью 1
2

ВДНХ

Когда-то я заливал сюда немного фотографий на телефон. Вот попала в руки техника немного серьёзней. Nikon D5300 18-55 F\3.5-5.6 Стилистика мрачновата, конечно, цвета очень насыщенные, но таки уж мои предпочтения. Ссылка на ЯД с нормальным качеством: https://disk.yandex.ru/d/X6tFgrfFJ3mAAw

Показать полностью 7
6

Бессмертник

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

239

Кольцо из кремния

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

Показать полностью 2

Подскажите хороший сервис в МСК специализирующийся на sony xperia

Утопил телефон sony xperia x немного. Быстро промакнул всё, но чего смог дотянуться салфетками, но кнопка/сканер и кнопка камеры перестала нормально работать, переодически сама активируется, на нажатия реагирует с 30-го раза. Посоветуйте сервис или мастера в Москве, так-как корпус монолитный, надо греть, чтоб снять заднюю крышку, а фена нет, да и опыта с телефонами тоже. Заранее благодарен.

Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества