progerdan

progerdan

Студия разработки веб-сервисов, онлайн-платформ и ботов: https://spravtsev.pro Телеграм канал: https://t.me/progerdan
На Пикабу
209 рейтинг 6 подписчиков 3 подписки 6 постов 1 в горячем
132

Как я ускорил SSH-аутентификацию в 178 раз

Если каждое SSH-подключение тормозит на несколько секунд, со временем это выливается в часы потерянного времени. Особенно, если ты постоянно работаешь с серверами для автоматизации действий. В моём случае расшифровка SSH-ключа при коннекте занимала 4.6508 секунды – пока я не оптимизировал процесс, сократив его до 0.0261 секунды. Рассказываю, как именно.

Бенчмарк

Бенчмарк

Почему всё было так медленно

🔹 OpenSSH + пароль  

Я использовал SSH-ключи в OpenSSH-формате с паролем (passphrase). OpenSSH шифрует их с помощью bcrypt (или аналога KDF) с огромным числом итераций – это круто для безопасности (хотя и другие методы не менее безопасные), но ОЧЕНЬ медленно.  

Когда исполнительный сервер пытался расшифровать ключ, процесс занимал 4+ секунды.

🔹 Ключ загружался постоянно  

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

---

Как ускорить SSH-авторизацию?

1️⃣ Перешёл с OpenSSH на PKCS8  

Главный трюк – отказаться от шифрования bcrypt внутри OpenSSH и использовать PKCS8 с PBKDF2, где можно настроить разумное количество итераций или использовать дефолтные настройки

📌 Разница:  

OpenSSH (bcrypt, cost=16–18)секунды расшифровки  

PKCS8 (PBKDF2, 10k–20k итераций | дефолт)миллисекунды  

Публичная часть ключа всё ещё в OpenSSH-формате (для `authorized_keys`), но приватная теперь PKCS8.

2️⃣ Дополнительное шифрование AES-256  

Чтобы ключ не лежал в открытом виде, сверху добавил AES-256.  

Это дешёвая по вычислениям операция, но она не даёт ключу валяться в чистом виде на диске (даже если это S3).

Теперь процесс:

🔸 AES-256≈0.001s  

🔸 PKCS8 (PBKDF2)<0.02s  

Общее время расшифровки < 0.03 секунды вместо 4.6508 секунд.

Итог: ускорение в 178 раз 🚀  

Бенчмарк показал разницу в 17 739%. Теперь SSH-аутентификация работает в сотни раз быстрее, что значительно ускоряет деплой и управление серверами.

---

Дополнительные советы:

Отключить UseDNS и GSSAPIAuthentication в sshd_config, если задержка handshake.  

Убедись, что используешь gmp/openssl/sodium, а не чистый ЯП (иначе будут тормоза)  

Такая небольшая оптимизация дала огромный прирост скорости. Если у вас долго проходит авторизация – попробуйте такой подход 🥸

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

Автоматизация действий браузера

Периодически работаю с автоматизацией работы в браузере (например, чтобы каждый день бронировать себе место в опенспейсе офиса).

И каждый раз приходится искать новую программулину, потому что:

1. Она работала только на Windows.... а как на маке...((

2. Теперь она только платная......🤔

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

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

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

Собственно, представляю свою реализацию 🥸

Я решил пойти простым путём, не забираться в .NET и просто сделать всё на вебе.

Страница загружается через CURL, после чего отправляется в iframe, и на него добавляется скрипт для обработки курсора и его действий.

P.S. Это самая первая демо-версия. Позже я перешёл на работу с headless-браузером, и в ходе тестов выяснилось, что всё ломается на всплывающих элементах (потому что при передаче HTML iframe не отображает выполненный в браузере JavaScript — т.е. различные всплывающие окошки и т.д.).

Поэтому  чуть позже покажу новую версию и то, как я это решил 😮‍💨


https://t.me/progerdan

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

Меня бесил фэтсикрет и я создал свой... а потом забил

Получившийся бот

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

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

После этого у меня родилась 💡идея разработки проекта, который решал бы для меня эту проблему и упростил бы процесс подсчета калорий

Отсюда появляются 2 челенджащих вопроса:

1. Как записывать «:блюдо»?

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

Картошка [10, 5, 8] (белки, жиры, углеводы)

Морковь [……]

Сливки 20% [……]

2. Откуда взять базу основных продуктов? (овощи, самые популярные: молоко, яйца)

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

Для решения второго вопроса, в первую очередь я проанализировал все общедоступные базы/API с продуктами питания.

Все они были либо платными, либо особо бесполезными (маленькая база). У того же FatSecret’a бесплатна только база на Английском (ну спасибо ☕️) и с большими ограничениями

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

Как результат — спроектировал архитектуру для сбора и хранения продуктов любых типов с поддержкой брендинга (Домик в деревне, ВкусВилл и т.п.) и телеграм бота, позволяющего искать по базе продуктов и просматривать КБЖУ

В итоге получилось собрать базу КБЖУ в 170.000 продуктов

А на этом все, дальше я забил, переключился на другой проект и добро пожаловать в #замороженные_проекты

А вообще, если дойдут руки, я бы сделал небольшой каталог в виде веб-сайта с SEO и посмотрел бы, к чему это приведет

Если интересно пощупать получившийся результат, пожалуйста — ссылка на бота (https://t.me/calorytrackbot) , просто отправьте название продукта

А вот мой канал в Телеграм (https://t.me/progerdan)

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

Разработка сервиса управления серверами

Привет всем! 🚀

С сегодняшнего дня я начинаю делиться процессом разработки своего сервиса для управления серверами и деплою проектов.

Страница управления пакетами

Страница управления пакетами

Ключевые возможности:

Быстрое развертывание серверов: автоматическая подготовка и установка сервера, поддержка различных провайдеров (timeweb, ihor, regru и другие) (автоматический заказ услуг и дальнейшая работа с ними)

Управление окружением: Установка пакетов и управление конфигурациями (nginx, bunker, sudo)

Управление сайтами: простое создание и настройка сайтов с поддержкой популярных платформ: Laravel, WordPress, NodeJS

Управление DNS: легкое управление DNS-записями через удобный интерфейс.

Балансировка нагрузки: настройка балансировщиков нагрузки в один клик для распределения трафика между серверами.

Уведомления: интеграция с e-mail, Telegram и другими сервисами для получения уведомлений о деплоях и событиях.

SSL-сертификаты: поддержка Let’s Encrypt с установкой в один клик.

Управление очередями: автоматическое создание и управление конфигурациями Supervisor для обработки очередей.

На первом этапе сосредоточусь на работе с пакетами, после чего перейду к поддержке веб-сайтов, интеграции с VCS (пока только Github), деплою и SSL.

Следите за апдейтами — впереди будет много интересного

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

Как я разрабатывал грозу всея Авито — рандомизатор текста

Вы думаете, что это разный текст? А на самом деле — один и тот же.
Разбираемся, что такое рандомизация и для чего она используется.

Пример рандомизации одного и того же текста для двух объявлений на Авито

Пример рандомизации одного и того же текста для двух объявлений на Авито

Приветствую! Меня зовут Данила Справцев, я — веб-разработчик. Специализируюсь на разработке, запуске и сопровождении веб-сервисов, онлайн-платформ и ботов.

https://spravtsev.pro

Пришел запрос

Ко мне обратился клиент с запросом разработки сервиса автоматической публикации объявлений на Авито с возможностью рандомизации любого текста.

Автоматическая публикация — дело весьма интересное и заслуживает отдельного материала 😀

В данной статье рассказываю про основополагающую по работе с любыми текстами и сервисами объявлений — рандомизацию и генерацию текстов.

Что такое рандомизация текста

Это изменение оригинального текста, путем выбора, перестановки или перебора заранее заготовленных слов по формулам

Например, если мы введем в фигурных скобках и разделим через символ "|" {Здравствуйте|Привет} после рандомизации получим один из вариантов:

  • Здравствуйте

  • Привет

Это является формулой выбора из множества

Пример генерации через случайный выбор

Пример генерации через случайный выбор

Возможности рандомизации

Большинство рандомизаторов поддерживают следующие формулы

  • {слово 1|слово 2} — случайный выбор => слово 1

  • [слово 1|слово 2+, +] — перестановка => слово 1, слово 2

В случае с перестановкой, между знаками + (плюс) указывается разделитель, в данном случае это запятая и пробел

И как бы на этом все, погуглив пару десятков рандомизаторов, никакого больше функционала я не нашел

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

  • [буква] [БУКВА] - Случайная буква, обычно используется для артикулов

  • [letter] [LETTER] — случайная английская буква

  • [артикул] [АРТИКУЛ] — готовый артикул

  • [число] — цифра от 1 до 9

  • [от:число-число] ([от:1-999]) — случайное число в заданном диапазоне

  • %позавчера% — дата в формате д.м.г

  • %вчера%— дата в формате д.м.г

  • %сегодня%— дата в формате д.м.г

  • %завтра%— дата в формате д.м.г

  • %послезавтра%— дата в формате д.м.г

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

Как это можно применить

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

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

Давайте попробуем, я не буду долго выдумывать текст, в котором смогу применить все формулы, напишу буквально парочку строк для примера

Представим, что вы владеете бизнесом по производству столов в стиле лофт и составляете следующий текст для своего объявления:

Производим для Вас стoлы в стилe лофт. Мы являемся производителем продукции

Hаши cтолы пoдxoдят кaк компьютерный cтoл, письмeнный cтoл, oфиcный стол или paбочие cтолы, тaк жe oни oтлично впишутся в любой интерьeр как куxoнный стол так и обеденный стoл.

📦 Стoлы индивидуaльно зaпaкованы в коробки кoмплeктацией из:
- Столешницы из ЛДСП толщиной 25мм.
- Усиленного подстолья высотой 75 см с регулировкой неровностей ±2 см., фурнитура и инструкция идут в комплекте!

⚡Размеры и цена:
140х70х75 --- 6200 ₽
120х70х75 --- 5600 ₽
90х60х75 --- 4900 ₽
120х60х75 --- 5100 ₽

⚡Так же изготавливаем столешницы под любые ваши размеры, звоните и запрашивайте цены!

💴 Оплата: перевод, нал, безнал.

🎨 Цвета доступные к заказу:
- Дуб табачный крафт
- Дуб белый крафт
- Венге
- Дуб золотой крафт
- Дуб серый
- Дуб бронза
- Аррива
- Шимо светлый
- Сонома
- Ателье темный
- Ателье светлый
- Белый

В данном объявлении у нас как минимум 3 неизменяемых блока:

  • Размеры и цены

  • Варианты оплаты

  • Возможные цвета

Которые нам точно потребуются в новом объявлении, но если их никак не изменить, Авито может заблокировать объявлением с пометкой "Дубль"

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

По остальному тексту будем применять формулу "выбор"

Получаем следующий шаблон

{Производим для Вас|Пpедлaгaем Вам} {новые|современные|дизайнерские} стoлы в стилe лофт.
{Столы пpoизводятcя на сoбcтвeннoм пpоизводствe🔥|Собственное производство🔥|Мы являемся производителем продукции🔥}

Hаши cтолы {отличнo|} {могут использоваться|пoдxoдят} кaк [письмeнный cтoл|oфиcный стол|компьютерный cтoл+, +] или paбочие cтолы, тaк жe oни oтлично впишутся в {любой|} интерьeр как куxoнный стол так и обеденный стoл.

📦 Стoлы индивидуaльно зaпaкованы в коробки кoмплeктацией из:
[- Столешницы из ЛДСП толщиной {20|25}мм.|- Усиленного подстолья высотой {70|75} см с регулировкой неровностей ±[от:1-5] см., фурнитура и инструкция идут в комплекте!+
+]

⚡Размеры и цена: [90х60х75 --- {4900|4800} ₽|120х60х75 --- {5000|5100} ₽|120х70х75 --- {5500|5600} ₽|140х70х75 --- {6000|6100|6200} ₽+
+]

⚡Так же {производим|изготавливаем} {столы|столешницы} под {любые|} ваши размеры, {пишите и|звоните и} запрашивайте {цены|прайс-лист}!

💴 Оплата{ возможна|}: [перевод|наличные|безнал+, +].

🎨 Цвета доступные к заказу:
[- Дуб золотой крафт|- Дуб табачный крафт|- Дуб белый крафт|- Дуб серый|- Дуб бронза|- Венге|- Аррива|- Шимо светлый|- Сонома|- Ателье темный|- Ателье светлый|- Белый+
+]

Артикул {товарного|} предложения: [АРТИКУЛ]

🤝 Ждем ваших сообщений и звонков, добавьте наше объявление в избранное что бы не потерять 🤝

Результат

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

Сгенерированный текст после рандомизации:

Пpедлaгaем Вам современные стoлы в стилe лофт. Собственное производство🔥

Hаши cтолы могут использоваться кaк компьютерный cтoл, письмeнный cтoл, oфиcный стол или paбочие cтолы, тaк жe oни oтлично впишутся в интерьeр как куxoнный стол так и обеденный стoл.

📦 Стoлы индивидуaльно зaпaкованы в коробки кoмплeктацией из:
- Столешницы из ЛДСП толщиной 20мм.
- Усиленного подстолья высотой 75 см с регулировкой неровностей ±6 см., фурнитура и инструкция идут в комплекте!

⚡Размеры и цена:
90х60х75 --- 4900 ₽
140х70х75 --- 6100 ₽
120х60х75 --- 5100 ₽
120х70х75 --- 5500 ₽

⚡Так же изготавливаем столешницы под любые ваши размеры, звоните и запрашивайте прайс-лист!

💴 Оплата: перевод, наличные, безнал.

🎨 Цвета доступные к заказу:
- Аррива
- Дуб табачный крафт
- Дуб серый
- Белый
- Сонома
- Дуб белый крафт
- Ателье светлый
- Шимо светлый
- Дуб бронза
- Ателье темный
- Дуб золотой крафт
- Венге

Артикул предложения: H6LPJCP8

🤝 Ждем ваших сообщений и звонков, добавьте наше объявление в избранное что бы не потерять 🤝

Немного фишек о формулах

Между + + (знак плюса) я использую перенос на новую строчку (энтер), чтобы каждый текст из перечисления был на новой строчке, а если мне нужно чтобы слово либо было, либо вообще не было, то использую пустой второй вариант — {1 вариант|} как в этом примере.

Так же отмечу, что можно использовать все, не только текст, но и цифры и символы {1|2}, {$|₽}

Результат генерации текста в рандомизаторе

Результат генерации текста в рандомизаторе

Рандомизиторовать можно не только описания, но и заголовки объявлений

Пример использования рандомизации заголовков для массовой публикации объявлений. Случайный профиль

Пример использования рандомизации заголовков для массовой публикации объявлений. Случайный профиль

Заключение

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

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

Можно ссылку на рандомизатор?

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

Ссылка на рандомизатор

Спасибо, что дочитали!

Вас интересует разработка веб-сервиса или бота?

Вам необходим собственный рандомизатор со своими правилами в формате веб-сервиса или телеграм бота?

Напишите мне в телеграм и получите бесплатную консультацию по реализации Вашей идеи под ключ. ↴

https://t.me/DanielSpravtsev

Либо сначала можно посмотреть другие мои кейсы на сайте ↴

https://spravtsev.pro/projects

Пользовались когда-нибудь рандомизацией текста
Всего голосов:
Показать полностью 3 1

Сервис автоматической публикации объявлений на Авито

Недавно я разработал и запустил сервис автоматической публикации объявлений на Авито. Сервис позволяет бизнесу максимально эффективно использовать рекламный потенциал, полностью автоматизируя процесс публикации и управления объявлениями.

Предпросмотр объявления в интерфейсе сервиса

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

Основными фишками сервиса являются:

  • Быстрая и простая настройка объявлений

  • Поддержка шаблонизации любых текстовых полей

Пример: {Собственное|Локальное} производство мебели – в объявлении будет использовано одно из слов (”Собственное” либо “Локальное”)

Пример 2: случайная стоимость в объявлении {130000|120000|125000|135000|137500} (см. пример на фото)

  • Автоматическая публикация в выбранных категориях и регионах

  • Возможность устанавливать периодичность и время публикации

  • Поддержка работы с несколькими аккаунтами Авито из единого интерфейса

Я рад, что сервис стал незаменимым инструментом для многих бизнесов, позволяя им максимально эффективно использовать потенциал Авито и увеличивать продажи своих товаров и услуг в десятки раз!


Ниже прикладываю скриншоты сервиса с небольшим описанием

Добавление аккаунта Авито в систему.

Можно добавить неограниченное количество аккаунтов и управлять объявлениями по всем аккаунтам в едином интерфейсе (с возможностью фильтрации)

Импортирование файла объявлений Авито

Если до этого аккаунтом использовался функционал "автозагрузки Авито", файл с объявлениями можно импортировать и все объявления появятся в сервисе

Автозаполнение

Если заполнить эти поля, они будут автоматически заполняться для всех создаваемых объявлений

Страница объявлений

Фильтрация и возможность скрыть / показать дополнительные поля

Предпросмотр объявления из интерфейса сервиса (как оно будет выглядеть на Авито)

Описание объявления с возможностью использовать формулы для шаблонизации

Настройки объявления

Настройка сроков размещения, для удобства можно выбрать временную зону города

На текущий момент сервис находится на закрытом тестировании.


Спасибо, что дочитали :)

*
Вас интересует разработка сложного сайта, веб-сервиса или онлайн-платформы?

Напишите мне в Telegram «консультация» и я бесплатно проконсультирую Вас по реализации Вашей идеи «под ключ». ⤵️

Показать полностью 10
Отличная работа, все прочитано!

Темы

Политика

Теги

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

Сообщества

18+

Теги

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

Сообщества

Игры

Теги

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

Сообщества

Юмор

Теги

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

Сообщества

Отношения

Теги

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

Сообщества

Здоровье

Теги

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

Сообщества

Путешествия

Теги

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

Сообщества

Спорт

Теги

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

Сообщества

Хобби

Теги

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

Сообщества

Сервис

Теги

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

Сообщества

Природа

Теги

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

Сообщества

Бизнес

Теги

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

Сообщества

Транспорт

Теги

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

Сообщества

Общение

Теги

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

Сообщества

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

Теги

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

Сообщества

Наука

Теги

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

Сообщества

IT

Теги

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

Сообщества

Животные

Теги

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

Сообщества

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

Теги

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

Сообщества

Экономика

Теги

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

Сообщества

Кулинария

Теги

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

Сообщества

История

Теги

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

Сообщества