Pull to refresh
2
0

WEB-программист, сетевой администратор

Send message

Простая защита скрипта на Python

Level of difficultyEasy
Reading time6 min
Views7.2K

Стек: Python 3.11.7, ntplib, subprocess, getpass для времени, системы, пароля,

PyArmor 8+ для обфускации.

Сценарий: Разработано приложение, которое дает преимущество перед конкурентами, или ваш код содержит конфиденциальные данные. Приложение предстоит установить нескольким сотрудникам (можно увеличить количество немного изменив подход), при этом вы не планируете переносить часть логики на сервер.

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

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

Читать далее
Total votes 16: ↑12 and ↓4+10
Comments19

Гайд по деплою web-приложений для новичков. Часть 3. Простая автоматизация

Level of difficultyMedium
Reading time7 min
Views4.6K

Продолжаем цикл статей, посвященных деплою приложений на сервер. 

Сегодня покажу, как можно автоматизировать деплой. Два варианта, которые отлично подойдут новичкам для ускорения деплоя:

- bash-скрипт

- GitHub actions

Читать далее
Total votes 12: ↑10 and ↓2+9
Comments17

Mount — ещё один способ уменьшения размера Docker-образа

Level of difficultyMedium
Reading time3 min
Views7.9K

Делюсь лайфхаком по уменьшению размеров Docker-образов. Как-то нам попалась на поддержку и развитие CRM-система, написанная на Ruby...

Обновили Ruby-пакеты и под них код, написали Dockerfile. Первая сборка была удручающей: образ в 2Гб. Это нормальный размер, если ты собираешь образ с Torch и другой ML-штуковиной, но CRM - нет. В результате дальнейших действий, удалось сократить размер образа до 200Мб.

Cделали следующее, чтобы сократить размер
Total votes 29: ↑26 and ↓3+27
Comments14

Подборка Бесплатных Telegram Ботов с ChatGPT на русском в 2024 году

Level of difficultyEasy
Reading time14 min
Views20K

Благодаря нейросетям бизнес, работа и обучение стали значительно проще и доступнее. Также появились новые варианты для творчества. Нейросети стали прекрасными помощниками в различных сферах. Однако для россиян множество из них стали недоступны из-за региональных ограничений. Например, Chat GPT на русском вполне работает, но пользователям нужно искать европейские сим-карты, чтобы пройти регистрацию и получить доступ. Midjourney бесплатно также можно получить только через VPN.
Однако есть и другой вариант, к примеру, Dall-e 3 бесплатно или Stable Diffusion скачать можно в Телеграме. Проще всего использовать ботов, которые предлагают возможность использовать все популярные нейросети практически без ограничений. При этом использовать зарубежные сим-карты или VPN сервисы не нужно.

Топ - 14 лучших ботов с нейросетями

В Telegram существует огромное количество ботов, работающих с различными нейросетями. Многие из них предоставляют доступ сразу к нескольким: Chat GPT онлайн, Midjourney 2024, Dall-e 3 на русском, Stable Diffusion AI, Llama 3 и т.д. Пользоваться ботом достаточно просто. Есть пробные, бесплатные версии. Однако в большинстве своем они платные и могут отличаться в цене существенно. Мы подготовили ТОП-14 лучших ботов с нейросетями, которые отлично справляются с поставленными задачами.

Читать далее
Total votes 12: ↑7 and ↓5+4
Comments14

Это база. Алгоритмы сортировки для начинающих

Reading time11 min
Views7.8K

Привет! В этой статье я расскажу о двух алгоритмах сортировки: Quick Sort и Merge Sort. Объясню, как они работают, как выглядят примеры кода на Python и Java, а также — как выбрать подходящий алгоритм под ваши задачи. Подробности — под катом.
Читать дальше →
Total votes 31: ↑29 and ↓2+39
Comments7

Готовим SQLAlchemy правильно

Level of difficultyMedium
Reading time15 min
Views3.8K

ORM были призваны восполнить пробел между объектно-ориентированными языками программирования, которые предоставляют разработчикам возможность работать с сущностями путем обращения к их интерфейсам, определяемым их чертежами (интерфейсы, классы, структуры), и процедурным подходом, реализуемым движками SQL-серверов. В некоторых случаях сюда же пытаются включить и адаптеры NoSQL хранилищ, вроде MongoDB, но конкретно с ней сильно проще, поскольку документ и так, в целом, предствляет из себя вполне себе сносно организованный объект с полями, маппинг которых в объекты языка программирования весьма тривиален, по сравнению с SQL.

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

Читать далее
Total votes 14: ↑13 and ↓1+16
Comments10

Ddos-атака c Kali Linux — простейший пример

Level of difficultyEasy
Reading time3 min
Views10K

В данной статье я поделюсь опытом ddos атаки уязвимой машины metasploitable.
Как ее устанавливать в виртуалбокс и настраивать я писал в этой статье:
https://habr.com/ru/articles/850188/

Еще раз напоминаю правовую информацию:

Данная статья создана исключительно в ознакомительных/образовательных/развивающих целях.
Автор статьи не несет ответственности за ваши действия.
Автор статьи ни к чему не призывает, более того напоминаю о существовании некоторых статей в уголовном кодексе РФ, их никто не отменял:
УК РФ Статья 272. Неправомерный доступ к компьютерной информации
УК РФ Статья 273. Создание, использование и распространение вредоносных компьютерных программ
УК РФ Статья 274. Нарушение правил эксплуатации средств хранения, обработки или передачи компьютерной информации и информационно-телекоммуникационных сетей

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

Вообще данный тип атак называется стресс-тестинг, ддос, или переполнение буфера. Суть такова: внешней атакующей машиной посылается большое количество запросов, и машина-сервер не справляется со всеми запросами. Кстати таким образом можно нагружать не только сервера, но и роутеры, отдельные хосты, шлюзы, и любой другой узел. Если речь идет о крупных серверах или агрегаторах то такой метод нагрузки практически бесполезен, в таких случая злоумышленник(и) (или же аудиторы если стресс-тест санкционированный) пишут особый вид вредоносных программ - ботнет (суть такова что это вредоносное ПО заражает устройства обычных пользователей с целью ддос атаки на сервера-жертвы для массовости атаки).

Читать далее
Total votes 7: ↑2 and ↓5-1
Comments8

REST API и архитектура сервиса

Level of difficultyEasy
Reading time9 min
Views3K

Доброго времени суток!

Хочу предложить вниманию читателей немного поговорить о такой немодной теме, как REST API. Если не углубляться в различия между REST API и REST-подобным API, то с такой вещью имел дело каждый: от junior до senior. Более того, проходя собеседование, можно услышать вполне естественный вопрос: что такое REST API? Если сильно не задумываться, а лишь вспомнить, с чем имел дело, проектируя API очередного сервиса, то можно ответить: ну, там используется http 1.1. Также есть глаголы GET, PUT, POST, DELETE, PATCH и ещё некоторые. Каждый глагол отвечает за что-то одно: создание, изменение, удаление, чтение и т.д. В ответе используются коды ошибок: 200, 301, 401, 404, 500 и т.д. Каждый код обозначает, что всё прошло успешно, или возникли некоторые проблемы: нет прав, страница не найдена, внутренняя ошибка сервера и т.д. И в принципе, такой ответ нельзя назвать некорректным. Всё так, но он поверхностный - не отражает сути REST API. Без понимания сути сложно не допустить ошибку при проектировании. А для понимания необходимо осознать название REST API, то есть дать корректное определение.

Читать далее
Total votes 5: ↑2 and ↓3+1
Comments35

Сервис для обхода блокировки OpenAI API в России или ваш первый API

Level of difficultyEasy
Reading time5 min
Views5.4K

Всем привет! Сегодня я расскажу вам, как я сделал сервис для обхода блокировки OpenAI в россии со стороны OpenAI (не Роскомнадзор даже) с использованием FastAPI и Docker. Мотивация проста. У меня в РФ есть сервер на котором работают сервисы и я хочу подключить к ним OpenAI, но они не дают доступ, распознавая IP из россии. Подумал что напишу сервер для пересылки запроса. Если вам интересно, как за несколько шагов запаковать работу с ИИ в красивую и простую оболочку, то устраивайтесь поудобнее. Мы вместе погрузимся в этот увлекательный процесс!

Читать далее
Total votes 10: ↑7 and ↓3+6
Comments28

Принципы SOLID на примерах из жизни и разработки

Level of difficultyEasy
Reading time8 min
Views11K

Задача этой статьи только одна - попробовать уложить принципы SOLID на понятных «бытовых» примерах, а уже потом посмотреть, как оно может работать на практике - в коде.

Итак, SOLID - это 5 принципов, которые используются при разработке приложений. На каждый принцип по букве:

1. S — Single Responsibility Principle (Принцип единственной ответственности)

Определение: Каждый класс должен выполнять только одну задачу.

Пример из жизни:

Например, мы купили шкаф для одежды. 

Читать далее
Total votes 23: ↑17 and ↓6+15
Comments26

Настройка CI/CD для GitLab-репозитория: работа с микросервисами

Level of difficultyMedium
Reading time20 min
Views8.4K

Рассказываем о полезных практиках конфигурации пайплайна с помощью GitLab CI/CD в контексте микросервисной архитектуры. Рассмотрим: добавление заданий в пайплайн путём проверки изменений в определённых микросервисах, концепцию модульных пайплайнов и явное указание зависимостей между заданиями для их выполнения не по этапам.

Читать далее
Total votes 6: ↑6 and ↓0+8
Comments2

Postgres, как настроить запросы между разными БД

Level of difficultyEasy
Reading time3 min
Views4K

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

Ниже речь будет идти о чтении данных одной БД из другой БД. В частности я решал такую проблему:

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

То есть запрос вида:

select a.id from auth.public.user a join trade.public.tenders t on a.id = t.user_id;

Вызовет ошибку "[0A000] ERROR: cross-database references are not implemented".

Что делать ?

Читать далее
Total votes 11: ↑6 and ↓5+4
Comments11

ИПР — то, чем вы сможете похвастаться на собеседовании или в баре

Reading time6 min
Views46K

Мы на Хабр Карьере помогаем IT-специалистам зарабатывать больше, а компаниям — быть в курсе трендов на рынке найма. 

Не так давно мы стали внедрять Индивидуальные Планы Развития (ИПР-ы) в Хабре и это оказалось непросто. Нам стало любопытно: каким специалистам они подходят, как влияют на мотивацию, повышение и как их собирать, чтобы сотрудникам было по-настоящему интересно по ним идти. 

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

К исследованию подключили команду платформы корпоративного обучения Грейд от Яндекс Практикума — оказалось, что ребята умеют круто наполнять ИПР-ы и собирают индивидуальные образовательные треки под каждого специалиста. 

А чтобы пользы от статьи было больше, мы в Хабре сделали сервис для составления ИПР-а, в котором можно выбрать цель, сроки и планировать задачи для достижения результата.

Читать исследование
Total votes 33: ↑24 and ↓9+38
Comments24

История Git: на этот раз не так весело

Reading time23 min
Views28K

Линус Торвальдс как-то написал в своей книге, что создавал Linux для развлечения, но в итоге это привело к революции. Git, его второе творение, также оказалось «случайной революцией» — и сегодня это стандартный инструмент для людей в ИТ. Однако процесс его создания был уже не таким «весёлым» — по крайней мере, для самого Линуса. 

Читать далее
Total votes 96: ↑95 and ↓1+111
Comments41

Как устроены серийники для Windows, и как восстановить стёршийся COA

Level of difficultyMedium
Reading time9 min
Views21K

Эта история начинается с того, что я попытался переустановить Windows на ноутбуке, доставшемся мне вот с такой наклейкой Certificate of Authenticity (COA): часть символов серийника видны хорошо, остальные – в большей или меньшей степени угадываются; но несколько попыток ввести серийник «на глаз» успехом не увенчались. Пришлось углубляться в вопрос подробнее.

Читать далее
Total votes 118: ↑117 and ↓1+154
Comments29

Изучение различных видов сортировок

Level of difficultyEasy
Reading time22 min
Views7K

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

Читать далее
Total votes 19: ↑6 and ↓13-2
Comments17

Альтернативный список заблокированных в РФ ресурсов Re:filter

Reading time5 min
Views34K

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

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

Читать далее
Total votes 116: ↑116 and ↓0+134
Comments52

Всё своё ношу с собой. Мои простые правила организации личной базы знаний

Reading time4 min
Views44K

Помните те времена, когда Интернет был маленьким, модемы — медленными, а провайдеры — жадными? Мы сохраняли всё полезное у себя на винчестерах, героически пытаясь вместить всё нужное в скромный объём дискового пространства. Раньше это был единственный способ обеспечить себе быстрый и эффективный доступ к информации.

А потом высокоскоростной Интернет нас избаловал — мы перестали скачивать файлы и формировать свои собственные локальные библиотеки знаний и контента. Теперь всё лежит на сайтах и в облаках. Зачем что-то скачивать, если всё это моментально доступно по одному клику?

Но, похоже, настало время вернуться к истокам. Всё чаще оказывается, что нужный контент становится недоступным или меняется до неузнаваемости...

Читать далее
Total votes 72: ↑64 and ↓8+72
Comments126

Асинхронный SQLAlchemy 2: простой пошаговый гайд по настройке, моделям, связям и миграциям с использованием Alembic

Reading time30 min
Views6.9K

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

Для начала, давайте разберёмся, что такое SQLAlchemy и почему каждый разработчик, работающий с реляционными базами данных (такими как SQLite, PostgreSQL, MySQL и т. д.), должен знать о ней. После этого — настройка. Мы будем работать с PostgreSQL, но не переживайте: код, который мы напишем, универсален для всех реляционных баз данных. Мы начнем с базовой настройки SQLAlchemy для асинхронного взаимодействия, а затем перейдём к созданию таблиц в современном декларативном стиле.

Читать далее
Total votes 22: ↑21 and ↓1+23
Comments19

Почтовый сервер с нуля. Часть третья

Level of difficultyHard
Reading time17 min
Views11K

В этой заключительной статье мы подробно рассмотрим процесс настройки почтового сервера с использованием Docker и Exim4, Dovecot, PostfixAdmin и RainLoop. Наша цель — создать полностью функциональный и масштабируемый почтовый сервер, который легко управляется благодаря контейнеризации.

Давайте настраивать
Total votes 21: ↑21 and ↓0+24
Comments15
1
23 ...

Information

Rating
Does not participate
Location
Екатеринбург, Свердловская обл., Россия
Date of birth
Registered
Activity