Forwarded from SmetApp - конструктор учёта финансов
Как вам удобнее заполнять формы?
Anonymous Poll
41%
Приглушённые (выбираю чистоту и фокус на данных)
31%
Полная яркость (выбираю 100% читаемость)
28%
Мне вообще всё равно
🤔1
Kawai-Focus 2.5: сборка и упаковка Tauri-приложения (Windows + Arch Linux, AUR)
Автор: Eugene Kaddo
Эта статья посвящена сборке приложения под Windows глазами человека, который делает это впервые и учится в процессе. Также я добавлю рецепт
Читать статью на сайте
Читать статью на Хабр
Поддержать проект через YooMoney
Поддержать проект через Tribute в Telegram
Поддержать проект через наш Telegram-бот
#Arch #Kawai_Focus #Linux #Open_source #Tauri #Windows #Наши_Open_Source_проекты
Автор: Eugene Kaddo
Эта статья посвящена сборке приложения под Windows глазами человека, который делает это впервые и учится в процессе. Также я добавлю рецепт
PKGBUILD для AUR под Arch Linux.Читать статью на сайте
Читать статью на Хабр
Поддержать проект через YooMoney
Поддержать проект через Tribute в Telegram
Поддержать проект через наш Telegram-бот
#Arch #Kawai_Focus #Linux #Open_source #Tauri #Windows #Наши_Open_Source_проекты
🔥3⚡1
Всем доброго вечера пятницы!
«Казнить нельзя помиловать» (2026)
«Казнить нельзя помиловать» — научно‑фантастический триллер о недалёком будущем, где приговор выносит не человек, а ИИ‑судья по имени «Милосердие». Опытный детектив Крис Рэйвен приходит в себя прикованным к креслу в зале виртуального суда и узнаёт, что его обвиняют в серии терактов и у него всего несколько часов, чтобы доказать невиновность.
Фильм поднимает тему доверия к алгоритмам и того, что будет, если право на жизнь и смерть передать системе без права на ошибку.
Приятного просмотра!
«Казнить нельзя помиловать» (2026)
«Казнить нельзя помиловать» — научно‑фантастический триллер о недалёком будущем, где приговор выносит не человек, а ИИ‑судья по имени «Милосердие». Опытный детектив Крис Рэйвен приходит в себя прикованным к креслу в зале виртуального суда и узнаёт, что его обвиняют в серии терактов и у него всего несколько часов, чтобы доказать невиновность.
Фильм поднимает тему доверия к алгоритмам и того, что будет, если право на жизнь и смерть передать системе без права на ошибку.
Приятного просмотра!
🔥5⚡1
Привет, друзья! 👋
Еще одна неделя позади, и у нас накопилось много интересного контента. Вот самые полезные и увлекательные материалы, которые мы выбрали для вас на этой неделе:
📋 Новое на канале:
🔄 Понедельник, 30.03.2026 — Дайджест
🔧 Среда, 01.04.2026 — Знаете ли вы, что Python переиспользует маленькие числа?
🤖 Четверг, 02.04.2026 — Внутренний спор: как должны выглядеть подписи к полям ввода (лейблы), Kawai-Focus 2.5: сборка и упаковка Tauri-приложения (Windows + Arch Linux, AUR)
🎬 Пятница, 03.04.2026 — Пятничный кинорелакс
🔗 Будьте ближе к нам:
🌐 Читайте полные статьи на сайте
💬 Присоединитесь к обсуждению в чате
Мы в VK | Мы в MAX | Чат в MAX
Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе! 🚀
#дайджест #код #python #полезное #код_на_салфетке
😼 @napkincode
Еще одна неделя позади, и у нас накопилось много интересного контента. Вот самые полезные и увлекательные материалы, которые мы выбрали для вас на этой неделе:
📋 Новое на канале:
🔄 Понедельник, 30.03.2026 — Дайджест
🔧 Среда, 01.04.2026 — Знаете ли вы, что Python переиспользует маленькие числа?
🤖 Четверг, 02.04.2026 — Внутренний спор: как должны выглядеть подписи к полям ввода (лейблы), Kawai-Focus 2.5: сборка и упаковка Tauri-приложения (Windows + Arch Linux, AUR)
🎬 Пятница, 03.04.2026 — Пятничный кинорелакс
🔗 Будьте ближе к нам:
🌐 Читайте полные статьи на сайте
💬 Присоединитесь к обсуждению в чате
Мы в VK | Мы в MAX | Чат в MAX
Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе! 🚀
#дайджест #код #python #полезное #код_на_салфетке
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3⚡1
Знаете ли вы, что zip() обрезает данные?
Это удобно, когда можно терять лишние данные, но может подставить, если нужна полная склейка:
Если важно сохранить все данные и заполнить пустоты, лучше использовать
С Python 3.10+ у
Стандартный
Код на салфетке x Кусочки кода
zip() всегда обрезает итоговый результат по длине самого короткого итерируемого объекта: все, что длиннее, просто игнорируется.Это удобно, когда можно терять лишние данные, но может подставить, если нужна полная склейка:
names = ["Alice", "Bob", "Charlie"]
scores = [100, 85]
list(zip(names, scores))
# [('Alice', 100), ('Bob', 85)] – Charlie больше нет
zip() останавливается, как только заканчивается самый короткий аргумент. scores короче, поэтому Charlie не попал в итоговый список.Если важно сохранить все данные и заполнить пустоты, лучше использовать
zip_longest из модуля itertools:from itertools import zip_longest
names = ["Alice", "Bob", "Charlie"]
scores = [100, 85]
list(zip_longest(names, scores, fillvalue=0))
# [('Alice', 100), ('Bob', 85), ('Charlie', 0)]
zip_longest не обрезает данные – он дотягивает короткие последовательности до самой длинной, заполняя пропуски fillvalue (по умолчанию None).С Python 3.10+ у
zip() появился строгий режим – strict=True. Если длины не совпадают, он сразу бросает ValueError:list(zip(names, scores, strict=True))
# ValueError: zip() argument 2 is shorter than argument 1
strict=True гарантирует, что данные не потеряются случайно из-за разницы в длине итерируемых объектов.Стандартный
zip() обрезает хвосты – для сохранения данных целиком лучше выбирать zip_longest, а для контроля целостности делать проверку через strict.Код на салфетке x Кусочки кода
👍3🔥3❤1⚡1
Всем привет!
«Примат» (2026)
«Примат» — жёсткий хоррор про отпуск, который превращается в бой за выживание. Студентка Люси приезжает в уединённый дом на Гавайях к семье и их ручному шимпанзе Бену, а вместе с собой привозит компанию друзей для весёлой вечеринки у бассейна.
Всё ломается, когда обезьяна начинает меняться, превращаясь в агрессивного хищника, охотящегося на людей. Дом, бассейн и тропический рай моментально становятся ловушкой, а ребятам приходится импровизировать, прятаться и буквально выживать до рассвета, используя любой шанс и слабые места примата, вроде страха воды.
Фильм не стесняется жестокости и при этом поднимает тему хрупкости «домашней» безопасности и того, как быстро природа ставит людей на место
Приятного просмотра!
«Примат» (2026)
«Примат» — жёсткий хоррор про отпуск, который превращается в бой за выживание. Студентка Люси приезжает в уединённый дом на Гавайях к семье и их ручному шимпанзе Бену, а вместе с собой привозит компанию друзей для весёлой вечеринки у бассейна.
Всё ломается, когда обезьяна начинает меняться, превращаясь в агрессивного хищника, охотящегося на людей. Дом, бассейн и тропический рай моментально становятся ловушкой, а ребятам приходится импровизировать, прятаться и буквально выживать до рассвета, используя любой шанс и слабые места примата, вроде страха воды.
Фильм не стесняется жестокости и при этом поднимает тему хрупкости «домашней» безопасности и того, как быстро природа ставит людей на место
Приятного просмотра!
🔥3🗿2👎1
Привет, друзья! 👋
Еще одна неделя позади, и у нас накопилось много интересного контента. Вот самые полезные и увлекательные материалы, которые мы выбрали для вас на этой неделе:
📋 Новое на канале:
🔄 Понедельник, 06.04.2026 — Дайджест
🔧 Среда, 08.04.2026 — Знаете ли вы, что zip() обрезает данные?
🎬 Пятница, 10.04.2026 — Пятничный кинорелакс
🔗 Будьте ближе к нам:
🌐 Читайте полные статьи на сайте
💬 Присоединитесь к обсуждению в чате
Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе! 🚀
#дайджест #код #python #полезное #код_на_салфетке
😼 @napkincode
Еще одна неделя позади, и у нас накопилось много интересного контента. Вот самые полезные и увлекательные материалы, которые мы выбрали для вас на этой неделе:
📋 Новое на канале:
🔄 Понедельник, 06.04.2026 — Дайджест
🔧 Среда, 08.04.2026 — Знаете ли вы, что zip() обрезает данные?
🎬 Пятница, 10.04.2026 — Пятничный кинорелакс
🔗 Будьте ближе к нам:
🌐 Читайте полные статьи на сайте
💬 Присоединитесь к обсуждению в чате
Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе! 🚀
#дайджест #код #python #полезное #код_на_салфетке
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2⚡1
Forwarded from SmetApp - конструктор учёта финансов
4 недели разработки. Первая контрольная точка.
Вчера прошло закрытое промежуточное демо проектов в IT-академии Lad. Наш ПМ Игорь показывал, что команда из 13 человек успела за месяц, и главное — куда мы идём.
Публичный релиз с гостями будет только в июле, а пока сверяем часы.
Короткая выжимка (слайды с питча — на картинках выше):
— Концепция. Мы не делаем очередной блокнот для расходов или перегруженную CRM. SmetApp — это конструктор. Есть лёгкое базовое ядро, на которое ты сам навешиваешь нужные модули (счета, операции, бюджет, аналитика). Ничего лишнего в интерфейсе не будет.
— Под капотом. Бэкенд на Python + FastAPI (PostgreSQL, Redis, строим модульный монолит). Фронт на Nuxt 4 (Vue 3). Заложили управление фича-флагами на лету.
— Прогресс. Авторизация и регистрация на бэке готовы. Фронт сейчас перекладывает макеты в код (веб + мобилка, с обработкой всех негативных сценариев). Дизайн первого экрана после входа уже отрисован (покажем попозже😉).
— Дедлайн. Публичное демо MVP — в июле. До этого времени идём по жёсткому роадмапу (Апрель — авторизация, Май — структура, Июнь — ядро).
Движемся дальше. Спасибо команде, что тянет этот темп.
→ @smetapp
Вчера прошло закрытое промежуточное демо проектов в IT-академии Lad. Наш ПМ Игорь показывал, что команда из 13 человек успела за месяц, и главное — куда мы идём.
Публичный релиз с гостями будет только в июле, а пока сверяем часы.
Короткая выжимка (слайды с питча — на картинках выше):
— Концепция. Мы не делаем очередной блокнот для расходов или перегруженную CRM. SmetApp — это конструктор. Есть лёгкое базовое ядро, на которое ты сам навешиваешь нужные модули (счета, операции, бюджет, аналитика). Ничего лишнего в интерфейсе не будет.
— Под капотом. Бэкенд на Python + FastAPI (PostgreSQL, Redis, строим модульный монолит). Фронт на Nuxt 4 (Vue 3). Заложили управление фича-флагами на лету.
— Прогресс. Авторизация и регистрация на бэке готовы. Фронт сейчас перекладывает макеты в код (веб + мобилка, с обработкой всех негативных сценариев). Дизайн первого экрана после входа уже отрисован (покажем попозже😉).
— Дедлайн. Публичное демо MVP — в июле. До этого времени идём по жёсткому роадмапу (Апрель — авторизация, Май — структура, Июнь — ядро).
Движемся дальше. Спасибо команде, что тянет этот темп.
→ @smetapp
🔥12⚡1
Знаете ли вы, что defaultdict создает записи при чтении?
Удобно использовать
Словарь растет просто от того, что его читают:
Обращение через
Проблема становится особенно заметной в циклах:
Каждый
Безопасная альтернатива –
Код на салфетке x Кусочки кода
Удобно использовать
defaultdict чтобы не проверять наличие ключей. Но с ним есть подвох: обращение к несуществующему ключу через d[key] не просто вернет значение по умолчанию, а создаст запись в словаре.Словарь растет просто от того, что его читают:
from collections import defaultdict
d = defaultdict(list)
print(len(d)) # 0
# Читаем несуществующий ключ
result = d["users"]
print(len(d)) # 1
print(d) # defaultdict(<class 'list'>, {'users': []})
# Ключ 'users' теперь существует в словаре
Обращение через
d["users"] вызвало factory-функцию (list), создало пустой список и записало его в словарь. Это не баг – так работает __missing__, который defaultdict переопределяет.Проблема становится особенно заметной в циклах:
from collections import defaultdict
config = defaultdict(str)
config["host"] = "localhost"
config["port"] = "5432"
# Проверяем наличие опциональных ключей
optional_keys = ["timeout", "ssl", "pool_size"]
for key in optional_keys:
value = config[key] # Вместо проверки – создаются записи
print(dict(config))
# {'host': 'localhost', 'port': '5432', 'timeout': '', 'ssl': '', 'pool_size': ''}
# Три мусорных ключа из ниоткуда
Каждый
config[key] для несуществующего ключа создал пустую строку и сохранил ее. Если потом итерироваться по config или сериализовать его – в данных будет мусор.Безопасная альтернатива –
.get(), который не трогает словарь:from collections import defaultdict
d = defaultdict(list)
# .get() не вызывает __missing__
result = d.get("users")
print(result) # None
print(len(d)) # 0
# Проверка через in тоже безопасна
print("users" in d) # False
print(len(d)) # 0
.get() возвращает None (или указанный default), но не создает запись. Оператор in тоже не вызывает __missing__.defaultdict вызывает factory-функцию и создает запись при любом обращении через d[key] к несуществующему ключу. Для безопасного чтения без побочных эффектов лучше использовать .get() или проверку через in.Код на салфетке x Кусочки кода
🔥10🤯2
Вместо 8 разных VPS: как я организовал практику студентам на одном сервере
Автор: Иван Ашихмин
Выдать студентам по серверу, не плодя виртуалки и не покупая VPS? Легко! Я разделил один сервер на изолированные среды с помощью Incus. Внутри — пошаговый гайд и разбор полетов: починка сети на IPv6, конфликт Docker с ZFS и проброс портов. Делюсь реальным опытом и шишками!
Читать статью на сайте
Читать статью на Хабр
Поддержать проект через YooMoney
Поддержать проект через Tribute в Telegram
Поддержать проект через наш Telegram-бот
#Debian #DevOps #Incus #LXC #LXD #Ubuntu #VPS #Гайд #Контейнеризация
Автор: Иван Ашихмин
Выдать студентам по серверу, не плодя виртуалки и не покупая VPS? Легко! Я разделил один сервер на изолированные среды с помощью Incus. Внутри — пошаговый гайд и разбор полетов: починка сети на IPv6, конфликт Docker с ZFS и проброс портов. Делюсь реальным опытом и шишками!
Читать статью на сайте
Читать статью на Хабр
Поддержать проект через YooMoney
Поддержать проект через Tribute в Telegram
Поддержать проект через наш Telegram-бот
#Debian #DevOps #Incus #LXC #LXD #Ubuntu #VPS #Гайд #Контейнеризация
🔥7
Всем доброго вечера пятницы!
«Остров проклятых» (2009)
«Остров проклятых» — плотный психологический триллер Мартина Скорсезе с ДиКаприо, который начинаетcя как детектив, а заканчивается ударом по психике. В 1954 году маршал США Тедди Дэниэлс отправляется на остров Шаттер расследовать исчезновение пациентки психбольницы для особо опасных преступников.
Чем глубже он копает, тем более странными кажутся и врачи, и пациенты, и сам остров: заговоры, эксперименты на людях, намёки на промывку мозгов. Вопрос «кто тут сумасшедший?» постепенно меняется на «а можно ли доверять самому себе».
Это фильм, который держит атмосферой, тревогой и финалом, после которого хочется пересмотреть всё заново, уже зная правду.
Приятного просмотра!
«Остров проклятых» (2009)
«Остров проклятых» — плотный психологический триллер Мартина Скорсезе с ДиКаприо, который начинаетcя как детектив, а заканчивается ударом по психике. В 1954 году маршал США Тедди Дэниэлс отправляется на остров Шаттер расследовать исчезновение пациентки психбольницы для особо опасных преступников.
Чем глубже он копает, тем более странными кажутся и врачи, и пациенты, и сам остров: заговоры, эксперименты на людях, намёки на промывку мозгов. Вопрос «кто тут сумасшедший?» постепенно меняется на «а можно ли доверять самому себе».
Это фильм, который держит атмосферой, тревогой и финалом, после которого хочется пересмотреть всё заново, уже зная правду.
Приятного просмотра!
🔥10
Привет, друзья! 👋
Еще одна неделя позади, и у нас накопилось много интересного контента. Вот самые полезные и увлекательные материалы, которые мы выбрали для вас на этой неделе:
📋 Новое на канале:
🔄 Понедельник, 13.04.2026 — Дайджест
⚙️ Вторник, 14.04.2026 — 4 недели разработки. Первая контрольная точка.
🔧 Среда, 15.04.2026 — Знаете ли вы, что defaultdict создает записи при чтении?
⚙️ Четверг, 16.04.2026 — Вместо 8 разных VPS: как я организовал практику студентам на одном сервере
🎬 Пятница, 17.04.2026 — Пятничный кинорелакс
🔗 Будьте ближе к нам:
🌐 Читайте полные статьи на сайте
💬 Присоединитесь к обсуждению в чате
Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе! 🚀
#дайджест #код #python #полезное #код_на_салфетке
😼 @napkincode
Еще одна неделя позади, и у нас накопилось много интересного контента. Вот самые полезные и увлекательные материалы, которые мы выбрали для вас на этой неделе:
📋 Новое на канале:
🔄 Понедельник, 13.04.2026 — Дайджест
⚙️ Вторник, 14.04.2026 — 4 недели разработки. Первая контрольная точка.
🔧 Среда, 15.04.2026 — Знаете ли вы, что defaultdict создает записи при чтении?
⚙️ Четверг, 16.04.2026 — Вместо 8 разных VPS: как я организовал практику студентам на одном сервере
🎬 Пятница, 17.04.2026 — Пятничный кинорелакс
🔗 Будьте ближе к нам:
🌐 Читайте полные статьи на сайте
💬 Присоединитесь к обсуждению в чате
Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе! 🚀
#дайджест #код #python #полезное #код_на_салфетке
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2⚡1
Forwarded from SmetApp - конструктор учёта финансов
Наш лендинг висел в сети с самого старта разработки. Просто как заглушка, чтобы поисковики начали его индексировать.
Теперь мы прикрутили туда раздел «Новости». Это полное зеркало нашего дневника разработки из Telegram.
Зачем? Не все сидят в Telegram. Мы хотим, чтобы любой человек из поиска мог зайти и увидеть: здесь реальные люди делают реальный продукт. С багами, спорами об архитектуре и честными отчётами.
Если вы читаете это на сайте (случайно зашли по ссылке) — добро пожаловать за кулисы. И запрыгивайте к нам в Telegram, чтобы голосовать за фичи вместе с командой.
Если вы читаете это в Telegram — сходите посмотреть, как интерфейс наших новостей выглядит в вебе.
→ Дневник в вебе: smetapp.ru/news
→ Главная: smetapp.ru
→ @smetapp
Теперь мы прикрутили туда раздел «Новости». Это полное зеркало нашего дневника разработки из Telegram.
Зачем? Не все сидят в Telegram. Мы хотим, чтобы любой человек из поиска мог зайти и увидеть: здесь реальные люди делают реальный продукт. С багами, спорами об архитектуре и честными отчётами.
Если вы читаете это на сайте (случайно зашли по ссылке) — добро пожаловать за кулисы. И запрыгивайте к нам в Telegram, чтобы голосовать за фичи вместе с командой.
Если вы читаете это в Telegram — сходите посмотреть, как интерфейс наших новостей выглядит в вебе.
→ Дневник в вебе: smetapp.ru/news
→ Главная: smetapp.ru
→ @smetapp
🔥4
Знаете ли вы, что += в Python это не просто сокращение x = x + y?
Выглядит как короткая запись – но под капотом это два разных оператора.
Если на один список смотрят две переменные, две внешне одинаковые операции дают разный результат:
Для списка
Еще одна ситуация – кортеж, внутри которого лежит изменяемый объект:
Python выполняет
Понять, создает ли
Для неизменяемых типов (
В следующий вторник –
Код на салфетке x Кусочки кода
Выглядит как короткая запись – но под капотом это два разных оператора.
x = x + y всегда создает новый объект и присваивает его переменной слева. += сначала пытается изменить сам существующий объект, не создавая новый – через метод __iadd__. И только если у типа такого метода нет – работает как обычный +: создает новый объект. Для изменяемых типов (list, bytearray) разница принципиальна.Если на один список смотрят две переменные, две внешне одинаковые операции дают разный результат:
a = [1, 2, 3]
b = a
a += [4]
print(a) # [1, 2, 3, 4]
print(b) # [1, 2, 3, 4] – b изменился, теперь это тот же список
a = [1, 2, 3]
b = a
a = a + [4]
print(a) # [1, 2, 3, 4]
print(b) # [1, 2, 3] – новый объект, b нетронут
Для списка
+= вызывает метод list.__iadd__ – он дописывает элементы в существующий объект и возвращает тот же самый объект. + всегда создает новый список. Поэтому когда на один список уже есть другая ссылка, результаты двух операций расходятся.Еще одна ситуация – кортеж, внутри которого лежит изменяемый объект:
t = ([1, 2, 3],)
try:
t[0] += [4]
except TypeError as e:
print(e) # 'tuple' object does not support item assignment
print(t) # ([1, 2, 3, 4],) – список ВНУТРИ обновился
Python выполняет
t[0] += [4] в два шага: сначала вызывает list.__iadd__ на внутреннем списке – список меняется и становится [1, 2, 3, 4]. Потом Python пытается записать результат обратно через t[0] = ... – и падает, потому что кортеж неизменяем. Операция и упала с ошибкой, и сработала одновременно.Понять, создает ли
+= новый объект или меняет старый – можно через id():x = 10
print(id(x))
x += 1
print(id(x)) # другой id – int неизменяем, += создал новый объект
lst = [1, 2]
print(id(lst))
lst += [3]
print(id(lst)) # тот же id – сам список поменялся, новый объект не создавался
Для неизменяемых типов (
int, str, tuple, frozenset) += действительно эквивалентен x = x + y – создается новый объект и присваивается переменной. Для изменяемых – меняется тот же объект, к которому уже были привязаны и другие переменные. Отсюда и расхождение ссылок, и парадокс с кортежем.+= это не синтаксический сахар, а отдельный оператор со своим dunder-методом __iadd__. Для изменяемых типов он меняет сам существующий объект, не создавая новый – из-за этого ломаются разделяемые ссылки и появляется парадокс с кортежем, в котором операция падает и срабатывает одновременно. То же самое относится к -=, *=, /= и остальным – у каждого свой __isub__, __imul__, __itruediv__.В следующий вторник –
* на списке: почему [[]] * 3 это не три копии, а три ссылки на один объект.Код на салфетке x Кусочки кода
🔥7⚡1
Kawai-Focus 2.6: путь к MVP1 — создание экрана Таймер
Автор: Eugene Kaddo
Эта статья посвящена продолжению работы над MVP1. Сегодня я начну работу над как экраном «Таймер», который сможет воспроизводить демонстрационные таймеры, а в будущем — и пользовательские.
Читать статью на сайте
Читать статью на Хабр
Поддержать проект через YooMoney
Поддержать проект через Tribute в Telegram
Поддержать проект через наш Telegram-бот
#Ionic #Kawai_Focus #Open_source #Tauri #Vue #Наши_Open_Source_проекты
Автор: Eugene Kaddo
Эта статья посвящена продолжению работы над MVP1. Сегодня я начну работу над как экраном «Таймер», который сможет воспроизводить демонстрационные таймеры, а в будущем — и пользовательские.
Читать статью на сайте
Читать статью на Хабр
Поддержать проект через YooMoney
Поддержать проект через Tribute в Telegram
Поддержать проект через наш Telegram-бот
#Ionic #Kawai_Focus #Open_source #Tauri #Vue #Наши_Open_Source_проекты
⚡1👍1🔥1😱1
Всем привет!
«Зелёная книга» (2018)
«Зелёная книга» — тёплая дорожная драма по реальной истории дружбы, которая не должна была случиться. В 60‑е годы грубоватый вышибала Тони Валлелонга становится водителем и охранником утончённого чернокожего пианиста Дона Ширли в туре по расистскому югу США.
Они ездят по городам, ориентируясь на «Зелёную книгу» — справочник мест, где чернокожих вообще готовы обслуживать. На фоне унижений, конфликтов и культурной пропасти между ними постепенно возникает уважение, а потом и настоящая дружба.
Фильм легко смотрится, сочетая юмор, серьёзные темы и очень живые диалоги. Подойдёт, если хочется добротного кино «про людей» с послевкусием тепла и верой в то, что люди могут меняться.
Приятного просмотра!
«Зелёная книга» (2018)
«Зелёная книга» — тёплая дорожная драма по реальной истории дружбы, которая не должна была случиться. В 60‑е годы грубоватый вышибала Тони Валлелонга становится водителем и охранником утончённого чернокожего пианиста Дона Ширли в туре по расистскому югу США.
Они ездят по городам, ориентируясь на «Зелёную книгу» — справочник мест, где чернокожих вообще готовы обслуживать. На фоне унижений, конфликтов и культурной пропасти между ними постепенно возникает уважение, а потом и настоящая дружба.
Фильм легко смотрится, сочетая юмор, серьёзные темы и очень живые диалоги. Подойдёт, если хочется добротного кино «про людей» с послевкусием тепла и верой в то, что люди могут меняться.
Приятного просмотра!
🔥5🤬2