Мой хороший знакомый Никита Соболев (@sobolev_nikita) решил сделать (и начал делать) курс по Python

Никита контрибьютор в CPython, mypy, typeshed, TypedDjango, wemake-python-styleguide, dry-python, hypothesis и многих других.

Курс абсолютно бесплатный и открытый, доступен на канале https://www.youtube.com/@sobolevn, а материалы на GitHub - https://github.com/sobolevn/the-best-python-course

Для описания я процитирую автора

уникальность формата в том, что я рассматриваю одну узкую тему с трех уровней сложности: junior, middle, senior. так что, контент должен быть интересным для всех уровней python разработчиков!

например: во втором уроке мы разбираем оператор сложения +.
- junior специалисты повторяют свои знания про add, radd, iadd и NotImplemented
- middle разработчики узнают про ast и BinOp, атомарность операций и модуль operators
- seniorы же смогут посмотреть на CAPI для сложения, узнать про type slots для разных видов сложения и про tier1 оптимизацию байткода

круто, правда?

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


Плейлист с первыми лекциями
https://www.youtube.com/playlist?list=PLbr8rVGhPD0WQgO97Ao67Q-QVuSbm_Zpz

От себя ещё добавлю

Никиту я знаю много лет, он всегда создавал какие-то сообщества или движение вокруг них, где бы ни находился, постоянно где-то что-то рассказывает и т.д.

В Москве это был митап по Elixir
https://www.youtube.com/playlist?list=PLbr8rVGhPD0WBbYO4ECZvkoiEldJy3LaC

В Питере был докладчиком в том числе и на нашем митапе
"Путь к становлению SRE в компании"
https://www.youtube.com/watch?v=5uUc3yPLn8M

Сейчас Никита в Нижнем Новгороде и там он организовал митап питонистов @pytho_nn
https://www.youtube.com/playlist?list=PLbr8rVGhPD0WJxhx-Sc2In7OMGJndsQ4f

Надеюсь, что и всем интересующимся будут полезен курс
> Почтовый клиент Thunderbird теперь поставляется только в формате snap. DEB-пакет с Thunderbird содержит заглушку для установки snap-пакета

> при наличии одной программы в пакетах deb и snap по умолчанию выбирается snap)

Ставить себе это я конечно же не буду

Релиз дистрибутива Ubuntu 24.04 LTS
https://www.opennet.ru/opennews/art.shtml?num=61069
This media is not supported in your browser
VIEW IN TELEGRAM
Пятница!

Увлекательная игра для весёлой компании
Forwarded from Cross Join - канал о разработке (Anton Okolelov)
Написал статью про семантический поиск с помощью посгреса и OpenAI API.

Казалось бы, в посгресе и так есть неплохой полнотекстовый поиск (tsvector/tsquery), и вы из коробки можете проиндексировать ваши тексты, а потом поискать по ним. Но на самом деле это не совсем то, что нужно — такой поиск работает лишь по чётким совпадениям слов. Т.е. postgres не догадается, что "кошка гонится за мышью" — это довольно близко к "котёнок охотится на грызуна". Как же победить такую проблему?


TLDR:


1. Преобразовываем наши тексты в наборы чисел (векторы) при помощи API openAI.
2. Сохраняем векторы в базе с помощью pgvector.
3. Легко ищем близкие друг к другу векторы или ищем их по вектору-запросу.
4. Ускоряем индексами.

Как всегда, буду рад плюсикам на Хабре:

https://habr.com/ru/companies/karuna/articles/809305/

Канал Cross Join. Подпишись
Аналитики Securonix обнаружили новую кампанию Dev Popper, которая направлена на разработчиков ПО. Хакеры проводят фальшивые собеседования, чтобы склонить жертв к установке Python-трояна удаленного доступа (RAT).

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

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

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

Так, файл с «заданием» обычно представляет собой ZIP-архив, содержащий пакет NPM, в котором содержится README.md, а также каталоги frontend и backend. Когда разработчик запускает этот пакет NPM, активируется скрытый в директории backend обфусцированный JavaScript-файл (imageDetails.js), выполняющий через процесс Node.js команды curl для загрузки дополнительного архива (p.zi) с внешнего сервера.


На фальшивых собеседованиях разработчиков вынуждают установить Python-бэкдор
https://xakep.ru/2024/04/27/dev-popper/
Надо было ring0 назвать 🌝

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

В run0 вместо использования SUID осуществляется обращение к системному менеджеру с запросом запуска командной оболочки или процесса с указанным идентификатором пользователя, создания нового псевдотерминала (PTY) и пересылки данных между ним и текущим терминалом (TTY). Подобное поведение больше напоминает запуск при помощи ssh, чем выполнение при помощи классического sudo. Привилегированный процесс запускается в изолированном контексте, который порождается процессом PID 1, а не процессом пользователя, т.е. не наследует свойства окружения пользователя, за исключением проброса переменной окружения $TERM. Проброс регулируется через список явно разрешённых свойств, вместо попыток запретить опасные свойства (концепция белого списка, вместо чёрного).


Леннарт Поттеринг представил run0, замену sudo, интегрированную в systemd
https://www.opennewww.tg-me.com/opennews/art.shtml?num=61088

Оригинал
https://mastodon.social/@pid_eins/112353324518585654
Прямо сейчас идёт стрим из Томского хакспейса "Akiba" (время UTC+7:00)

17:15 — Проблемы инжектов в Linux и при чём тут ptrace
17:40 — Почему на кастомных прошивках работают не все Android-приложения и кто в этом виноват
18:05 — Разработка бэкенда LLVM: компилим Си куда не надо

18:30 — Перерыв

18:50 — Давай представим, что ты моя бабушка или как ломать LLM
19:15 — Когда поиска в HeadHunter не хватает, но у тебя есть Python
19:40 — На каком ты это сказал? Выдуманные языки в играх


Ссылка на трансляцию (сейчас перерыв)
https://www.youtube.com/watch?v=IhfwbaBG4EI

Чат хакспейса @hackspace_tomsk
The Russia-based LockBit ransomware group is one of the most active ransomware groups in the world and is best known for its ransomware variant of the same name. According to the Department of Justice, LockBit has targeted over 2,500 victims worldwide and is alleged to have received more than $500 million in ransom payments. Since January 2020, affiliates using LockBit have attacked organizations across an array of critical infrastructure sectors, including financial services, education, emergency services, and healthcare. 

United States Sanctions Senior Leader of the LockBit Ransomware Group
https://home.treasury.gov/news/press-releases/jy2326

> Email Address [email protected];
> alt. Email Address [email protected]

🙈

SPECIALLY DESIGNATED NATIONALS LIST UPDATE
https://ofac.treasury.gov/recent-actions/20240507
У мошенников появился новый вид обмана в Telegram.

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


Это слишком тупой развод. Каждый активный пользователь Телеги знает, что поддержка тут никак не работает вообще 🌝
UPD

Я списался с автором сообщения в личке, канал он не назвал

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


Изначальное сообщение он в чате удалил
Forwarded from Нарыл (Pavel Sorokin)
Есть такая общеизвестная проблема когда делаешь non-root в k8s: контейнерам нужно биндить порты до 1024, что по умолчанию в Linux запрещено.

Лично по-моему само по себе такое ограничение - архитектурная ошибка в Linux, которая привела к куче проблем и сложностей: сервису, например nginx, нужно стартовать от рута, забиндить порт, а потом дропнуть лишние привилегии. Что уже само по себе звучит не безопасно и разумеется приводило к множеству LPE. А профит с точки зрения ИБ крайне сомнительный. Может быть он был когда на одном сервере одновременно крутился важный сайт на 80 порту и еще сидели руками какие-то непривилегированные пользователи, но сейчас это кажется бесполезным чуть более чем полностью (попробуйте меня переубедить :D)

Параметр ядра net.ipv4.ip_unprivileged_port_start позволяет управлять этим поведением в Linux. Если его установить в значение 0, то любому пользователю будет доступен биндинг любых портов. Параметр net.ipv4.ip_unprivileged_port_start относится к сетевому неймспейсу и у каждого контейнера свой.

При внедрении non-root можно добавлять securityContext.sysctls (net.ipv4.ip_unprivileged_port_start=0) в манифесты, но это требует модификации всех манифестов.

И вот я тут обнаружил что есть другой путь - в конфиге containerd есть опция enable_unprivileged_ports, которая устанавливает net.ipv4.ip_unprivileged_port_start в 0 для всех создаваемых контейнеров.

Другими словами можно поменять один параметр на всех нодах и не возиться с манифестами.
Of the three, Supavisor is the one that requires more steps to begin using it. However, the way it handles tenants is convenient for modern cloud environments. Other than that, once the poolers are adequately set up, the only change required in your application is the connection string.

From my experiments, I found that PgCat performs better as it delivers higher throughput while supporting more concurrent clients. With more than 750 clients, PgCat achieves more than 2X qps compared to PgBouncer and Supavisor.

PgBouncer offers the best latency for low (<50) connection counts. However, its downsides are: (1) it is single-threaded, preventing it from fully utilizing the machine with a single instance, and (2) if there is a surge in the number of connection requests, clients would right away notice some performance degradation (at least in my environment). In comparison, PgCat and Supavisor keep their tps numbers when more clients are added.

So, according to these experiments, PgCat shows like it’s the best option when you have high connection counts.


Benchmarking PostgreSQL connection poolers: PgBouncer, PgCat and Supavisor
https://tembo.io/blog/postgres-connection-poolers/
2024/05/15 12:21:49
Back to Top
HTML Embed Code: