Веб-версияОткрыть в Telegram
PPython Заметки - Чат

Python Заметки - Чат

@pythonoteschat · группа · Технологии · в индексе с 2026-07-19
34участников
1пишущих за 30 дней
1сообщений за 30 дней
1 985сообщений в индексе
С
  1. P
    Python Заметки - Чат
    Ну вроде контексты разные, не должны пересекаться в большинстве случаев.
      1. P
        Python Заметки - Чат
        А представь как живется одинесникам. Там все ключевые слова постоянно спорят с повседневностью😖.
Вся ветка · 3 ответа →
P
  1. С
    Речь не о кешировании. Речь о том, что хранить сессии в браузере фу. memcached это бд типа ключ-значение и хранит данные в памяти, доступ через сокет или по IP. То есть разные процессы и разные Хосты туда могут ходить одновременно. Запись атомарная итп. Удобная штука. Скорость вах отличная.
    1. P
      Python Заметки - Чат
      Это просто еще один подход. Использовать тот или иной способ - решается под задачу. Если вернуться к посту, то тема просто другая. Но дополнение засчитано 👍
Вся ветка · 3 ответа →
С
  1. P
    Python Заметки - Чат
    Спасибо, давно юзаю)
Вся ветка · 2 ответа →
P
Ссылка
нажмите — покажем
В прошлый раз был пример с понижением привелегий процесса. Проблема в том, что обратно поднять привилегии нельзя. Чтобы не потерять уровень доступа текущего процесса, нужно выполнять понижение в дочернем процессе. Для этого можно использовать os.fork(). # example.py from pathlib import Path import os import sys import pwd def example(username): # получаем pwd юзера по имени try: pw_record = pwd.getpwnam(username) except KeyError: raise Exception(f"User {username} not found") return # создаем форк процесса pid = os.fork() if pid == 0: # если мы в дочернем процессе - сбрасываем привилегии os.setgid(pw_record.pw_gid) os.setuid(pw_record.pw_uid) # создаем файл от имени другого юзера Path('user-file.txt').touch() sys.exit(0) else: # родительский процесс, создаем файл от имени исходного юзера Path('root-file.txt').touch() os.waitpid(pid, 0) example('paul') # проверяем владельца файлов print('user-file.txt', Path('user-file.txt').owner()) print('root-file.txt', Path('root-file.txt').owner()) Теперь запустите скрипт от root. У файлов будут разные владельцы. ~$ sudo python example.py user-file.txt paul root-file.txt root PS. В дочернем процессе os.fork() вернёт 0, чтобы можно было понять в каком процессе продолжает исполняться код. В родительском это будет реальный PID. Это написано в документации. # tricks
4 · 662 ·
P
Ссылка
нажмите — покажем
У меня основная ОС это Linux. Но нередко требуется делать сборку клиента под Windows. Собираю обычно через Pynstaller/Nuitka. И вот этапы борьбы поиска удобного решения. ▫️ Dual Boot Пока был дуалбут, я перезагружался в Windows, копировал исходники и запускал сборку. Рабочий вариант, но времени занимает слишком уж много. К тому же дуалбута давно нет. ▫️ VirtualBox Если нет дуалбута, то выручает VirtualBox. Тут стало проще, я расшарил папку с проектом в Windows как сетевой диск. Просто запускаю готовый скрипт сборки и готово. Файл сохраняется сразу на место. Но горький опыт заставил делать шару ReadOnly, что требует сначала копировать проект на локальный диск в виртуалку и только потом запускать сборку. После чего перебрасывать результат. В общем, тоже так себе вариант 😖 Ясное дело, что эти два способа достаточно наивны и никакой автоматики. Поэтому пошли далее... ▫️ Wine Выглядит всё просто. Выполняем обычные виндовые команды в терминале, просто в начале нужно дописывать wine. Попробуйте выполнить команду wine cmd и вы окажетесь в "обычной" виндовой консоли. Ну а там просто выполняем команды сборки. Главное - установить все необходимые зависимости. В целом запускается, но дебажить не удобно. Проверить запуск на "чистой винде" тоже не получится, только через тот же Wine. Поэтому в итоге я остановился на следующем варианте. ▫️ VirtualBox CLI Это тоже самое что пункт 2 но полностью на автомате. Используя команду VBoxManage можно манипулировать виртуалкой. - VBoxManage startvm - запускает виртуалку по имени, в том числе headless - VBoxManage guestcontrol "VM_NAME" "CMD" позволяет запускать шел-команды - copyto и copyfrom - позволяет копировать туда-сюда файлы В результате, мы можем кодом запустить виртуалку, выполнить необходимые действия, забрать результат и погасить виртуалку! В скрипте я запускаю VM, копирую в неë батник сборки и исходники и запускаю. После сборки файл копируется обратно на хост в dest. А если надо, запускаем виртуалку в обычном режиме и в
6 · 686 ·
  1. С
    Есть же qemu/kvm. Зачем городить огород? Если хотите обвязку, то самое простое - libvirt. Если надо гуй, то aqemu.
    1. P
      Python Заметки - Чат
      Это следующий этап поисков)
  2. С
    винду гонять для сборки чего-то там. можно поставить либвирт с кему и там можно разбудить машинку с виндой, пихнуть там сборку, скрипт в винде высосет из гита репу или шареный диск обновит, запустит всякие питоны и вижуалкоды, положит куда надо результат. потом либвирт усыпит машинку, чтоб не мешала и не жрала ресурсы.
    1. P
      Python Заметки - Чат
      Спасиб, посмотрю
  3. С
    там есть и модуль к питону, чтобы прямо из питона всем этим управлять
  4. С
    Я больше на шеле писал обвязки к либвирту без питона. Там есть virsh тула, ею можно сделать всё нужное. Для гуя, если кушать не сможете без нуя, есть vnc на машинки автоматом. Либвирт умеет lxc, если линухи в контейнерах запускать. Это как докер, только маленький и лёгкий.
Вся ветка · 10 ответов →
P
Ссылка
нажмите — покажем
Не так давно столкнулся с API который в ответе с ошибкой присылал только статус-код. Без подробностей и текста ошибки. Неудобно когда нет явного описания что произошло, но вот такой сервис достался 😐 Чтобы сообщение совсем не было пустым хотелось бы показывать хоть что-то, например стандартный текст ошибок соответствующего кода. В стандартных библиотеках текст статус-кодов можно достать из модуля http. from http import HTTPStatus HTTPStatus(404).phrase # 'Not Found' HTTPStatus(201).phrase # 'Created' HTTPStatus(418).phrase # "I'm a Teapot" #libs 🫖
3 · 597 ·
P
­ WebAssembly это мощная технология позволяющая загружать практически любое приложение в браузер. Это специально собранный бинарник .wasm (не dll и не so) который одинаково запустится в браузере на любой ос. ✅ Что то дает: ▫️Скорость работы. В данный момент лидером по совместимости является Rust, а значит вы можете написать сложное приложение не  на JS а сразу на Rust и встроить это в страницу сайта. На wasm работают различные графические и видеоредакторы где скорость выполнения важна! Например Figma. ▫️Портирование приложений ранее недоступных в браузере. Например вот вам браузерная сборка ffmpeg ▫️Выполнения тяжелого кода на стороне клиента. Это важная возможность! Вместо того, чтобы грузить свой бэкенд тяжелыми расчетам, недоступными в JS приложениями, мы просто переносим это на сторону юзера. Каждый клиент загружает своё железо. 😎 Ну и конечно же есть сборка Python для wasm, это библиотека pyodide ▫️настоящий интерпретатор прямо в браузере! ▫️поддерживает обычный py-код ▫️поддерживает async ▫️есть все популярные c/rust-библиотеки собранные под wasm ▫️доступна виртуальная файловая система для работы с файлами 😖 Есть и ограничения: ▫️Нет чистых TCP/UDP сокетов. Используется браузерное API. А значит все ограничения запросов от браузера (CORS например). ▫️Нет multiprocessing. Это вам не ос, а браузер. Тут процессы не имеют смысла. ▫️threading тоже ограничен, обычно используется Web Workers браузера. ▫️Расширения на С не поддерживаются совсем, но в официальной коллекции пакетов pyodide есть всё нужное уже собранное под wasm32. Но таких библиотек как psutil по понятным причинам нет и не будет. ▫️Производительность ниже чем чистый CPython ▫️Файловая система в RAM, а значит много не запишешь, сохранять там что-то бесполезно. Нужно выводить файлы в Local Storage браузера. ▫️Установка пакетов только из whl и zip, включая скачивание по URL. Никакой установки через git так как самого git нет. Сделал пример HTML файла с библиотекой Pillow↗️. Всё считается на стороне к
6 · 312 ·

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Чего мы не делаем · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем