Собрал через cookiecutter шаблон для FastAPI-проекта в стиле Clean Architecture.
Внутри
1. Все разложено на слои - Domain, Application, Presentation, Infrastructure
2. Все запаковано в docker
3. FastAPI в качестве основного фреймворка + Pydantic для валидации
4. dishka для DI
5. Faststream для работы с брокерами (опционально)
6. SQLAlchemy + alembic для работы с БД
7. httpx + stamina для работы с HTTP-запросами
8. pytest для тестов
9. Makefile для удобной работы
10. При создании проекта можно выбрать БД, кэш и брокер сообщений
11. Пример кода
Когда я изучал все это, мне сильно не хваталого такого репозитория, поэтому, надеюсь вам он будет полезен
https://github.com/Peopl3s/clean-architecture-fastapi-project-template
P.S. Если заметили какие-то ошибки, проблемы, неточности, то милости прошу в комментарии или PR'ы, давайте совместно дошлифуем)
P.S.S Выкачу аналогичный шаблон для Litestar + ролик. Но тут самое главное концепция, поэтому на основе этого уже можно разложить любой микро-фреймворк
Внутри
1. Все разложено на слои - Domain, Application, Presentation, Infrastructure
2. Все запаковано в docker
3. FastAPI в качестве основного фреймворка + Pydantic для валидации
4. dishka для DI
5. Faststream для работы с брокерами (опционально)
6. SQLAlchemy + alembic для работы с БД
7. httpx + stamina для работы с HTTP-запросами
8. pytest для тестов
9. Makefile для удобной работы
10. При создании проекта можно выбрать БД, кэш и брокер сообщений
11. Пример кода
Когда я изучал все это, мне сильно не хваталого такого репозитория, поэтому, надеюсь вам он будет полезен
https://github.com/Peopl3s/clean-architecture-fastapi-project-template
P.S. Если заметили какие-то ошибки, проблемы, неточности, то милости прошу в комментарии или PR'ы, давайте совместно дошлифуем)
P.S.S Выкачу аналогичный шаблон для Litestar + ролик. Но тут самое главное концепция, поэтому на основе этого уже можно разложить любой микро-фреймворк
🔥17👎1
Forwarded from Находки в опенсорсе
Минусы Litestar
Внезапно вспомнил, что я меинтейнер фреймворка Litestar.
Для тех, кто пропустил:
> Litestar не является микро-фреймворком. В отличие от таких фреймворков, как FastAPI, Starlette или Flask,
> Litestar изначально включает множество функций, необходимых для типичного современного веб-приложения,
> таких как интеграция с ORM, клиентские и серверные сессии, кэширование, поддержка OpenTelemetry и многое другое.
И он классный:
- Быстрый
- Работает с
- Предоставляет базовые примитивы для работы с логикой: DTOs, Repository, Service (часть из них в
- Умеет из коробки в аутентификацию, метрики, DI, CORS, CSRF, кеширование, логирование, мониторинг, вебсокеты, htmx, сессии, загрузку файлов, разные ORMки и много всего еще
- Можно делать не только API, но и нормальные шаблончики
- Он с нами уже несколько лет, он работает
- А еще его делает большая команда, а не один человек
Кароче, просто лучший фреймворк (кроме Django, конечно).
Но! Сегодня речь пройдет про минусы. Которые скоро пофиксят в
Минусы
1. Самое главное: DI на именах. Да. Вот так:
Что очень плохо. Тип
Планы? Я предложил использовать dishka в качестве дефолтного DI, а старый задеприкейтить.
Высказать свое обоснованное мнение можно тут (или просто лайкнуть пост): https://github.com/orgs/litestar-org/discussions/4377
Хочу верить, что мы сможем поправить данную проблему в
2. DI в middleware. А точнее отсутствие DI в middleware. Пока что приходится прокидывать зависимости через
3. Своя схема для OpenAPI. Litestar переписал дефолтную схему pydantic, что позволило использовать более строгую схему, но переодически новые типы отваливаются. Например,
4.
5. CLI местами разваливается, очень много багов и плохая читаемость
6. Очень сырая документация. Очень плохая навигация и структура, очень мало примеров, мало людей ее читало, мало людей находило проблемы, мало людей присылало PRы. Тут нужна ваша помощь очень сильно!
Итог
Отличный фреймворк, у которого есть некоторое количество детских проблем и ошибок проектирования. Но что отличает? Про них говорят, их исправляют.
Полный роадмап для версии
Обсуждение: Как вам Litestar? Какие минусы я забыл? Каких фичей не хватает? Что показалось сложным? Буду рад обратной связи :)
Внезапно вспомнил, что я меинтейнер фреймворка Litestar.
Для тех, кто пропустил:
> Litestar не является микро-фреймворком. В отличие от таких фреймворков, как FastAPI, Starlette или Flask,
> Litestar изначально включает множество функций, необходимых для типичного современного веб-приложения,
> таких как интеграция с ORM, клиентские и серверные сессии, кэширование, поддержка OpenTelemetry и многое другое.
from dataclasses import dataclass
from litestar import Litestar, post
@dataclass
class User:
name: str
@post(path="/")
async def index(data: User) -> User:
return data
app = Litestar(route_handlers=[index])
И он классный:
- Быстрый
- Работает с
Pydantic, msgspec и даже базовые dataclasses в качестве моделей- Предоставляет базовые примитивы для работы с логикой: DTOs, Repository, Service (часть из них в
advanced_sqlalchemy, очень удобно для крудов)- Умеет из коробки в аутентификацию, метрики, DI, CORS, CSRF, кеширование, логирование, мониторинг, вебсокеты, htmx, сессии, загрузку файлов, разные ORMки и много всего еще
- Можно делать не только API, но и нормальные шаблончики
- Он с нами уже несколько лет, он работает
- А еще его делает большая команда, а не один человек
Кароче, просто лучший фреймворк (кроме Django, конечно).
Но! Сегодня речь пройдет про минусы. Которые скоро пофиксят в
v3 (или которые все еще будут с нами)Минусы
1. Самое главное: DI на именах. Да. Вот так:
class UserController(Controller):
path = "/user"
dependencies = {"user": Provide(retrieve_db_user)}
@patch(path="/{user_id:uuid}") # <- тут тоже можно указывать `dependencies`
async def get_user(self, user: User) -> User: ...
Что очень плохо. Тип
user, который мы указываем в dependencies и в параметрах может не совпасть. Есть некоторая валидация для такого в рантайме, но все равно очень рисково. Планы? Я предложил использовать dishka в качестве дефолтного DI, а старый задеприкейтить.
Высказать свое обоснованное мнение можно тут (или просто лайкнуть пост): https://github.com/orgs/litestar-org/discussions/4377
Хочу верить, что мы сможем поправить данную проблему в
v3, ваши голоса – могут помочь :) 2. DI в middleware. А точнее отсутствие DI в middleware. Пока что приходится прокидывать зависимости через
app.state, что очень криво. Данная проблема признана ошибкой дизайна и будет исправлено в v3, ура!3. Своя схема для OpenAPI. Litestar переписал дефолтную схему pydantic, что позволило использовать более строгую схему, но переодически новые типы отваливаются. Например,
pydantic.Json не обработан, имеет кривую схему. Сейчас мы обсуждаем стоит ли откатиться до дефолтной схемы. Стоит ли?4.
PydanticPlugin игнорирует ConfigDict, который объявлен в самой моделе, в v3 будет пофикшено. Сейчас параметры вроде by_alias и round_trip надо передавать в плагин. Что свело меня с ума, искал ошибку несколько часов5. CLI местами разваливается, очень много багов и плохая читаемость
6. Очень сырая документация. Очень плохая навигация и структура, очень мало примеров, мало людей ее читало, мало людей находило проблемы, мало людей присылало PRы. Тут нужна ваша помощь очень сильно!
Итог
Отличный фреймворк, у которого есть некоторое количество детских проблем и ошибок проектирования. Но что отличает? Про них говорят, их исправляют.
Полный роадмап для версии
v3: https://github.com/litestar-org/litestar/issues/4009Обсуждение: Как вам Litestar? Какие минусы я забыл? Каких фичей не хватает? Что показалось сложным? Буду рад обратной связи :)
GitHub
litestar-org/litestar
Light, flexible and extensible ASGI framework | Built to scale - litestar-org/litestar
❤4👍2
💫 Закинул несколько небольших issues в Litestar. Если кто-то давно хотел попробовать в Open Source, но не знал с чего начать, то милости просим :)
https://github.com/litestar-org/litestar/issues/4401
https://github.com/litestar-org/litestar/issues/4400
https://github.com/litestar-org/litestar/issues/4399
А ещё есть сочнейший тг канал "Находки в опенсорс", там тоже интересно 😁
https://news.1rj.ru/str/opensource_findings_chat
https://github.com/litestar-org/litestar/issues/4401
https://github.com/litestar-org/litestar/issues/4400
https://github.com/litestar-org/litestar/issues/4399
А ещё есть сочнейший тг канал "Находки в опенсорс", там тоже интересно 😁
https://news.1rj.ru/str/opensource_findings_chat
GitHub
Bug: The LITESTAR_QUIET_CONSOLE environment variable is treated as a truthy string · Issue #4401 · litestar-org/litestar
Denoscription "0" or "false" behave like True. https://github.com/search?q=repo%3Alitestar-org%2Flitestar%20LITESTAR_QUIET_CONSOLE&type=code What to do: parse the boolean expl...
🔥5
Если есть любители gemini, то вас может заинтересовать Kilo
https://www.youtube.com/watch?v=q0fJwevyooU
https://www.youtube.com/watch?v=q0fJwevyooU
YouTube
Kilo Code — убийца Cursor? Бесплатная альтернатива с Gemini для PyCharm | 1000 запросов в сутки
В этом видео мы покажем, как использовать Kilo Code вместе с Gemini CLI. Он может вам бесплатно заменить Cursor IDE, Kiro IDE. Это отличный AI редактор, который можно встроить в Pycharm.
В этом видео будет подробный гайд по установке и подключению, протестируем…
В этом видео будет подробный гайд по установке и подключению, протестируем…
🥰4👍1
Django 6.0: Ключевые функции, критические изменения https://habr.com/p/954390/
Habr
Django 6.0: Ключевые функции, критические изменения
В Django 6.0 есть кое-что для вас. Давайте рассмотрим самые важные новые функции и изменения, о которых вам нужно знать. Сообщество Django представляет множество мощных нововведений, а также некоторые...
❤6
Forwarded from Находки в опенсорсе
PEP 810: Explicit lazy imports
На обсуждение вышел новый PEP, который предлагает добавить в Python 3.15 новый вид импортов.
https://peps.python.org/pep-0810/
Как будет работать?
Импорты не будут подгружаться до момента первого обращения к объекту.
Зачем?
- Быстрее загружать модули
- Позволит убрать много импортов из функций / методов
- Позволит убрать
- Позволит решать циклические импорты
- Убирает необходимость в
Детали реализации
Планируется добавить:
- Функцию
- Специальный атрибут на уровне модуля
-
-
-
- Байткод
- Ошибки в именах модулей тоже будут ленивыми https://peps.python.org/pep-0810/#reification
Из забавного:
Реализация: https://github.com/LazyImportsCabal/cpython/tree/lazy
Обсуждение: как вам?
Бонус: меня тут в комментах спрашивают, куда я пропал. Я пропал в опенсорсе, пилю
https://github.com/wemake-services/django-modern-rest
| Поддержать | YouTube | GitHub | Чат |
На обсуждение вышел новый PEP, который предлагает добавить в Python 3.15 новый вид импортов.
https://peps.python.org/pep-0810/
lazy import json
lazy from json import dumps
Как будет работать?
Импорты не будут подгружаться до момента первого обращения к объекту.
import sys
lazy import json
print('json' in sys.modules) # Модуля еще нет
# Загрузка начинается вот тут:
result = json.dumps({"hello": "world"})
print('json' in sys.modules) # Теперь он загружен
Зачем?
- Быстрее загружать модули
- Позволит убрать много импортов из функций / методов
- Позволит убрать
if TYPE_CHECKING: import some_module, было множество предложений по добавлению import type конструкции, пример: https://discuss.python.org/t/type-only-imports/96755- Позволит решать циклические импорты
- Убирает необходимость в
LazyLoader и страшных вещей вроде https://scientific-python.org/specs/spec-0001Детали реализации
Планируется добавить:
- Функцию
__lazy_import__ (аналог __import__ для импорта )- Специальный атрибут на уровне модуля
__lazy_modules__, где будут храниться ленивые импорты текущего модуля-
types.LazyImportType как тип нового "ленивого" модуля (аналог `types.ModuleType`)-
sys.lazy_modules для списка ленивых модулей глобально-
sys.set_lazy_imports_filter для глобальных настроек импортов, что? 🤯- Байткод
IMPORT_NAME получит флаг, является ли импорт ленивым- Ошибки в именах модулей тоже будут ленивыми https://peps.python.org/pep-0810/#reification
Из забавного:
import * не будет доступен в lazy режиме.
# SyntaxError: lazy from ... import * is not allowed
lazy from json import *
Реализация: https://github.com/LazyImportsCabal/cpython/tree/lazy
Обсуждение: как вам?
Бонус: меня тут в комментах спрашивают, куда я пропал. Я пропал в опенсорсе, пилю
django-modern-rest. Простую и удобную библиотеку для REST API в Django. Пока на стадии pre-alpha, но уже скоро будет первый релиз. Можно уже ставить ⭐, чтобы потом всем говорить, что первыми узнали про новую модную штуку!https://github.com/wemake-services/django-modern-rest
| Поддержать | YouTube | GitHub | Чат |
Python Enhancement Proposals (PEPs)
PEP 810 – Explicit lazy imports | peps.python.org
This PEP introduces syntax for lazy imports as an explicit language feature:
🔥9🤮1💩1
Постоянная рубрика МОИ КОРЕША
Недавно мой коллега из Самолета Лев сделал свой pre-commit-hook - shrimport (строго open source, как мы любим).
Этот хук позволяет прогнать Python-проект и привести относительные пути к абсолютным (по правилам PEP).
Лев уже апробировал инструмент и поправил импорты в django и django-mongodb-backend.
Пользуйтесь на здоровье. А еще можно накидать звездочек репозиторию, автору будет приятно 😉
https://github.com/lyova24/shrimport
Недавно мой коллега из Самолета Лев сделал свой pre-commit-hook - shrimport (строго open source, как мы любим).
Этот хук позволяет прогнать Python-проект и привести относительные пути к абсолютным (по правилам PEP).
Лев уже апробировал инструмент и поправил импорты в django и django-mongodb-backend.
Пользуйтесь на здоровье. А еще можно накидать звездочек репозиторию, автору будет приятно 😉
https://github.com/lyova24/shrimport
🔥13
🌟 💫 Clean Architecture Litestar Project Template
Не так давно я выкладывал cookiecutter шаблон FastAPI-проекта в стиле Clean Architecture. Не без шероховатостей, но благодаря вашему фидбеку удалось исправить большинство ошибок и причесать проект (но он будет допиливаться и дальше!).
Поэтому теперь, как и обещал, представляю вашему вниманию аналогичный шаблон только уже с Litestar вместо FastAPI. В часте Litestar я намерено ограничился только функционалом HTTP-фреймворка
https://github.com/Peopl3s/clean-architecture-litestar-project-template
P.S. Буду рад любому фидбеку, особенно фидбеку, который поможет улучшить шаблон :)
Не так давно я выкладывал cookiecutter шаблон FastAPI-проекта в стиле Clean Architecture. Не без шероховатостей, но благодаря вашему фидбеку удалось исправить большинство ошибок и причесать проект (но он будет допиливаться и дальше!).
Поэтому теперь, как и обещал, представляю вашему вниманию аналогичный шаблон только уже с Litestar вместо FastAPI. В часте Litestar я намерено ограничился только функционалом HTTP-фреймворка
https://github.com/Peopl3s/clean-architecture-litestar-project-template
P.S. Буду рад любому фидбеку, особенно фидбеку, который поможет улучшить шаблон :)
🔥4👍3🤩2
Там Никита Соболев (гений, миллиардер, филантроп, кор контрибьютер CPython) готовит альтернативу DRF - Django Modern Rest
Из более менее достойных замен DRF могу вспомнить разве что Django-Ninja да и то там всё не так гладко. Поэтому у DMR есть все шансы выстрелить - асинк есть, слои есть, валидация есть. Проект перерабатывает опыт DRF, Litestar, Django Ninja и улучшает его + привносит собственные идеи и концепции.
Проект в активной фазе разработки, поэтому если хотите помочь и вписать себя в историю - welcome :_)
https://github.com/wemake-services/django-modern-rest
Из более менее достойных замен DRF могу вспомнить разве что Django-Ninja да и то там всё не так гладко. Поэтому у DMR есть все шансы выстрелить - асинк есть, слои есть, валидация есть. Проект перерабатывает опыт DRF, Litestar, Django Ninja и улучшает его + привносит собственные идеи и концепции.
Проект в активной фазе разработки, поэтому если хотите помочь и вписать себя в историю - welcome :_)
https://github.com/wemake-services/django-modern-rest
🥰5❤4😁1🤮1
Тут еще канальчик есть https://news.1rj.ru/str/opensource_findings_python
Там публикуют issues в разных репозиториях (от litestar до cpython). Можно забирать и контрибутить в open source, улучшать проекты, которыми пользуются сотни тысяч человек)
По django-modern-rest тоже есть (будут)
Там публикуют issues в разных репозиториях (от litestar до cpython). Можно забирать и контрибутить в open source, улучшать проекты, которыми пользуются сотни тысяч человек)
По django-modern-rest тоже есть (будут)
Telegram
Находки в опенсорсе: Python
Легкие задачки в опенсорсе из мира Python
Чат: @opensource_findings_chat
Чат: @opensource_findings_chat
🔥5
Я недавно рассказывал про django-modern-rest. Появилось небольшое issues, которое отлично подходит для входа новичкам. Мб кому-то будет интересно
https://github.com/wemake-services/django-modern-rest/issues/107
https://github.com/wemake-services/django-modern-rest/issues/107
GitHub
GitHub - wemake-services/django-modern-rest: Modern REST framework for Django with types and async support!
Modern REST framework for Django with types and async support! - wemake-services/django-modern-rest
❤3👍3
Forwarded from Находки в опенсорсе
Зачем нужен новый REST API для Django?
Последний месяц я крайне увлечен созданием https://github.com/wemake-services/django-modern-rest
(Кстати, у нас уже >200 звезд и 26 контрибьюторов при 0 релизов)
Ключевой вопрос – зачем? Что будет нового?
Во-первых, я крайне сильно люблю Django. Основная причина – под него есть буквально любые библиотеки. Все то, что в FastAPI нужно героически писать руками – в джанге уже давно есть и работает.
Но, есть несколько основных причин, почему люди думают, что не любят джангу:
1. DRF, тут без лишних слов – он ужасен. Нет типизации, нет async, очень сложно работать с ним в сложных случаях
2. Многие считают, что джанга - сложная. Однако, она как FastAPI или Litestar может спокойно уместиться в один файл: https://django-modern-rest.readthedocs.io/en/latest/pages/micro-framework.html
3. Есть критика за архитектуру: тут нечего особо даже комментировать. На любом фреймворке можно писать хорошо, на любом можно писать плохо. Слой фреймворка очень тонкий
4. Медленный. А вот тут остановимся подробнее.
На скринах выше можно сравнить, что с
Во-вторых, Django на длительный срок был в плену DRF. Который морально устарел еще в середине десятых.
Потом появилась
Вот такие проблемы мы решаем.
Одной строкой:
- Супер строгая OpenAPI схема и валидация при разработке, что мы ее соблюдаем
- Полная типизация всего
- Нормальный способ создания АПИ, без god-functions a-la FastAPI
-
- Быстро:
- Пидантик,
- Полная поддержка всего существующего в Django. От декораторов до миддлварь (с полной валидацией и OpenAPI схемой!)
- OpenAPI схема из коробки
- Удобное тестирование с polyfactory
- property-based тесты вашего АПИ одной командой благодаря schemathesis
Что еще будет:
- RSGI (да, на #rust скорее всего) под granian, в теории можем побить FastAPI после такого
- SSE с автоматической OpenAPI спекой и умной валидацией схемы
- JWT или любая другая аутентификация
- Какие-то части (скорее всего валидацию) мы компильнем cython, чтобы было еще быстрее
Modern? Modern!
Осталось дождаться. Релиз скоро!
И еще скоро будут несколько новых видео.
Мы регулярно постим задачки в @opensource_findings_python, так что можно нам помочь.
А если кто хочет мне закинуть на развитие опенсорса (за написание 32500 строк кода за 2 недели), то мой бусти открыт: https://boosty.to/sobolevn
Ну и звезды можно ставить, конечно же. Там посмотрите, какие люди нас уже советуют.
Большое спасибо Александру, Алексею, Роману, Максиму и всем остальным за неоценимую помощь. Пацаны, без вас никак! Лучшее сообщество!
Обсуждение: а чего бы вам хотелось в modern rest фреймворке? Чего сильно не хватает сейчас?
Последний месяц я крайне увлечен созданием https://github.com/wemake-services/django-modern-rest
(Кстати, у нас уже >200 звезд и 26 контрибьюторов при 0 релизов)
Ключевой вопрос – зачем? Что будет нового?
Во-первых, я крайне сильно люблю Django. Основная причина – под него есть буквально любые библиотеки. Все то, что в FastAPI нужно героически писать руками – в джанге уже давно есть и работает.
Но, есть несколько основных причин, почему люди думают, что не любят джангу:
1. DRF, тут без лишних слов – он ужасен. Нет типизации, нет async, очень сложно работать с ним в сложных случаях
2. Многие считают, что джанга - сложная. Однако, она как FastAPI или Litestar может спокойно уместиться в один файл: https://django-modern-rest.readthedocs.io/en/latest/pages/micro-framework.html
3. Есть критика за архитектуру: тут нечего особо даже комментировать. На любом фреймворке можно писать хорошо, на любом можно писать плохо. Слой фреймворка очень тонкий
4. Медленный. А вот тут остановимся подробнее.
На скринах выше можно сравнить, что с
django-modern-rest, без нескольких будущих оптимизаций (привет cython и rust!), голая джанга начинает выглядеть не так уж и медленнее FastAPI: бенчи.Во-вторых, Django на длительный срок был в плену DRF. Который морально устарел еще в середине десятых.
Потом появилась
django-ninja, которая хоть и намного лучше, но все равно не решает главную задачу: интеграция с существующими тулами. Конечно, если затащить FastAPI дизайн в чужой мир, то ничего не будет нормально работать 🌚️️Вот такие проблемы мы решаем.
Одной строкой:
- Супер строгая OpenAPI схема и валидация при разработке, что мы ее соблюдаем
- Полная типизация всего
- Нормальный способ создания АПИ, без god-functions a-la FastAPI
-
async без sync_to_async- Быстро:
msgspec для парсинга json (самый быстрый способ в питоне), практически 0 работы в рантайме (все делаем при импорте), оптимизации роутера (быстрее дефолтного в 51 раз)- Пидантик,
msgspec, или любой другой способ выражать модели. Хоть adaptix- Полная поддержка всего существующего в Django. От декораторов до миддлварь (с полной валидацией и OpenAPI схемой!)
- OpenAPI схема из коробки
- Удобное тестирование с polyfactory
- property-based тесты вашего АПИ одной командой благодаря schemathesis
Что еще будет:
- RSGI (да, на #rust скорее всего) под granian, в теории можем побить FastAPI после такого
- SSE с автоматической OpenAPI спекой и умной валидацией схемы
- JWT или любая другая аутентификация
- Какие-то части (скорее всего валидацию) мы компильнем cython, чтобы было еще быстрее
Modern? Modern!
Осталось дождаться. Релиз скоро!
И еще скоро будут несколько новых видео.
Мы регулярно постим задачки в @opensource_findings_python, так что можно нам помочь.
А если кто хочет мне закинуть на развитие опенсорса (за написание 32500 строк кода за 2 недели), то мой бусти открыт: https://boosty.to/sobolevn
Ну и звезды можно ставить, конечно же. Там посмотрите, какие люди нас уже советуют.
Большое спасибо Александру, Алексею, Роману, Максиму и всем остальным за неоценимую помощь. Пацаны, без вас никак! Лучшее сообщество!
Обсуждение: а чего бы вам хотелось в modern rest фреймворке? Чего сильно не хватает сейчас?
👍10❤5🔥2
Есть мнение, что хорошего качественного контента для мидл и выше не существует. Он существует, просто его не так просто найти.
Делюсь подобным кладезем знаний от автора dishka - https://news.1rj.ru/str/advice17
Делюсь подобным кладезем знаний от автора dishka - https://news.1rj.ru/str/advice17
Telegram
Советы разработчикам (python и не только)
Советы для разработчиков ПО от @Tishka17
Поддержать материально https://www.tinkoff.ru/cf/2NkdXaljivI
Programming, python, software architecture и все такое
Поддержать материально https://www.tinkoff.ru/cf/2NkdXaljivI
Programming, python, software architecture и все такое
🔥10
А помните раньше было модно делиться папками-подборками разных тг-каналов? Тренд дошел и до меня (спустя 52 года)
Поэтому делюсь свой подборкой тг-каналов. Здесь много разного - от каналов с полезной инфой для прокачки до чатов и мемов. Залетайте, мб найдете для себя что-то интересное
https://news.1rj.ru/str/addlist/akUhw65HHcUxZjFi
Поэтому делюсь свой подборкой тг-каналов. Здесь много разного - от каналов с полезной инфой для прокачки до чатов и мемов. Залетайте, мб найдете для себя что-то интересное
https://news.1rj.ru/str/addlist/akUhw65HHcUxZjFi
Telegram
Pulp Fiction
Максим Мельников invites you to add the folder “Pulp Fiction”, which includes 21 chats.
👍6❤1🔥1💩1
Раскрываю тайное знание - без мам пап кредитов, смс и регистрации
https://www.youtube.com/watch?v=53n3bxYTQT0
https://www.youtube.com/watch?v=53n3bxYTQT0
YouTube
ТЫ БУДЕШЬ УСПЕШНЕЕ 99% ЛЮДЕЙ ЕСЛИ НАУЧИШЬСЯ ГОВОРИТЬ РТОМ
Почему 99% людей не добиваются успеха в карьере и отношениях? Они не умеют одной простой вещи — говорить ртом. В этом видео я объясняю, почему умение ясно проговаривать свои мысли — самый недооцененный навык современного человека.
Мы обсудим, почему люди…
Мы обсудим, почему люди…
🔥6