Kawai.Focus - приложение для фокусировки внимания (часть 11)
Автор: Eugene Kaddo
Данная статья посвящена:
- Фреймворку Kivy в проекте Kawai.Focus;
- Material Design для Kivy на библиотеке KivyMD 2.0.0;
- Обновлению дизайна экрана "Таймеры";
Читать пост
Файлы к посту, можно получить в боте по коду: 706070
Поддержать проект через YooMoney
Поддержать проект через Tribute в Telegram
Поддержать проект через наш Telegram-бот
#Python #Kivy #Open_source #Наши_Open_Source_проекты #Kawai.Focus
Автор: Eugene Kaddo
Данная статья посвящена:
- Фреймворку Kivy в проекте Kawai.Focus;
- Material Design для Kivy на библиотеке KivyMD 2.0.0;
- Обновлению дизайна экрана "Таймеры";
Читать пост
Файлы к посту, можно получить в боте по коду: 706070
Поддержать проект через YooMoney
Поддержать проект через Tribute в Telegram
Поддержать проект через наш Telegram-бот
#Python #Kivy #Open_source #Наши_Open_Source_проекты #Kawai.Focus
🔥4⚡1 1
Приветствую!
Хищник: Убийца убийц (2025)
Новая глава легендарной серии «Хищник» возвращает нас к захватывающей охоте между человеком и инопланетным охотником.
В этом фильме борьба за выживание выходит на новый уровень, а технологии и тактика становятся ключом к победе.
«Хищник: Убийца убийц» обещает зрелищные сцены, напряжённый сюжет и знакомых фанатам серии элементов, которые делают эту франшизу уникальной.
Если любите фантастику, экшен и охоту на самых опасных существ во Вселенной — этот фильм для вас.
Хищник: Убийца убийц (2025)
Новая глава легендарной серии «Хищник» возвращает нас к захватывающей охоте между человеком и инопланетным охотником.
В этом фильме борьба за выживание выходит на новый уровень, а технологии и тактика становятся ключом к победе.
«Хищник: Убийца убийц» обещает зрелищные сцены, напряжённый сюжет и знакомых фанатам серии элементов, которые делают эту франшизу уникальной.
Если любите фантастику, экшен и охоту на самых опасных существ во Вселенной — этот фильм для вас.
🔥5😱2⚡1👍1
🔥 Напоминание о стажировке и ответы на ваши вопросы
Недавно я писал о нашем новом сервисе для учёта финансов и приглашал на стажировку. Спасибо всем, кто откликнулся и задал вопросы — отвечаю на самые популярные.
Будет ли оффер или это просто бесплатная стажировка?
Кому полезна эта стажировка?
Какие планы на продукт?
Есть ли планы привлекать инвестора?
🚀 Мы всё ещё ищем:
- Бэкенд-стажёров (FastAPI) — нужно выполнить тестовое задание и прислать решение в личные сообщения канала.
- Фронтенд-стажёров (Nuxt.js SSR).
- Стажёра-проджект-менеджера — помогать вести задачи и контролировать процесс.
Если вы хотите прокачаться, поработать в команде и получить опыт на реальном продукте — пишите в личку канала 💬
Недавно я писал о нашем новом сервисе для учёта финансов и приглашал на стажировку. Спасибо всем, кто откликнулся и задал вопросы — отвечаю на самые популярные.
Будет ли оффер или это просто бесплатная стажировка?
На текущем этапе это неоплачиваемая стажировка. Я пока не могу обещать офферы или денежные вознаграждения. Основная цель — прокачка навыков и опыт работы над реальным продуктом.
Кому полезна эта стажировка?
Тем, кто хочет развиваться в веб-разработке на FastAPI, но пока не может пробиться на рынок труда с высокими требованиями. Если вы знаете FastAPI / SQLAlchemy или хотите подтянуть их, получить опыт работы в команде и добавить проект в портфолио — это хороший шанс.
Какие планы на продукт?
Сначала делаем MVP1 и выпускаем его в публичный доступ. Это будет рабочая основа, на которую соберём обратную связь, доработаем функционал и спланируем следующие шаги.
Есть ли планы привлекать инвестора?
Пока нет — сначала нужно показать работающий продукт. После релиза MVP1 будем думать о дальнейшем развитии и возможном финансировании.
🚀 Мы всё ещё ищем:
- Бэкенд-стажёров (FastAPI) — нужно выполнить тестовое задание и прислать решение в личные сообщения канала.
- Фронтенд-стажёров (Nuxt.js SSR).
- Стажёра-проджект-менеджера — помогать вести задачи и контролировать процесс.
Если вы хотите прокачаться, поработать в команде и получить опыт на реальном продукте — пишите в личку канала 💬
🔥10⚡1
Привет, друзья!
Прошла еще одна неделя, и у нас накопилось много интересных материалов: статьи, новости и полезные советы. Вот наш недельный дайджест:
Понедельник (29.09.2025) Дайджест
Вторник (30.09.2025) Ищем стажёров на проект, Знаете ли вы, что new создает объект раньше, чем init его инициализирует?
Четверг (02.10.2025) Kawai.Focus - приложение для фокусировки внимания (часть 11)
Пятница (03.10.2025) Пятничный кинорелакс
Воскресенье (05.10.2025) Напоминание о стажировке и ответы на ваши вопросы
Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе!
С уважением,
Команда канала "Код на салфетке".
#дайджест #материалы #новости #код_на_салфетке
Прошла еще одна неделя, и у нас накопилось много интересных материалов: статьи, новости и полезные советы. Вот наш недельный дайджест:
Понедельник (29.09.2025) Дайджест
Вторник (30.09.2025) Ищем стажёров на проект, Знаете ли вы, что new создает объект раньше, чем init его инициализирует?
Четверг (02.10.2025) Kawai.Focus - приложение для фокусировки внимания (часть 11)
Пятница (03.10.2025) Пятничный кинорелакс
Воскресенье (05.10.2025) Напоминание о стажировке и ответы на ваши вопросы
Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе!
С уважением,
Команда канала "Код на салфетке".
#дайджест #материалы #новости #код_на_салфетке
🔥3
Forwarded from Заметки на салфетке
Всем привет!
У GitVerse совместно с Хабром проходит конкурс Open Source-проектов «Код без границ». Я решил запрыгнуть в этот поезд со своим проектом ReVu, о котором расскажу подробнее уже в этот четверг.
Одним из условий конкурса является размещение проекта в репозитории на GitVerse.
Я решил воспользоваться ситуацией и «убить двух зайцев»:
- Принять участие в конкурсе
- Интегрировать GitVerse в свой проект
Но, как это часто бывает, всё оказалось не таким простым, как кажется. Об этом — данный пост.
Что понравилось?
1. Своя платформа. Кто бы что ни говорил, но нам нужны собственные аналоги. Сейчас GitHub блокирует доступ для пользователей из Крыма — что мешает однажды расширить эти ограничения? Наличие альтернативы внутри страны — полезно и важно.
2. Облачные раннеры «из коробки». Это удобно: можно запускать простые CI/CD-пайплайны без настройки собственного раннера. Да, есть лимиты, но они есть везде. Плюс — совместимость с GitHub Actions: мои воркфлоу заработали почти без изменений.
3. Приятный интерфейс. Возможно, субъективно, но внешний вид GitVerse современный и аккуратный — работать комфортно, «глаз не режет».
На этом, пожалуй, плюсы заканчиваются. Дальше — обычный git-хостинг без каких-то выдающихся фич.
Что не понравилось?
Здесь уже больше проблем.
1. Ограничения облачных раннеров. Образ сильно урезан: нет даже базовых зависимостей, например Node.js (а он нужен многим Actions). Нет доступа к Docker-сокету — собрать Docker-образ на стандартном раннере невозможно, придётся подключать свой.
2. Вебхуки и безопасность.
2.1. Нет подписи вебхуков. GitHub и Gitea подписывают события через HMAC SHA-256, что позволяет проверить целостность данных. У GitVerse этого нет — можно только добавить заголовок Authorization.
2.2. Некорректные ссылки в вебхуках. Вместо нормальных публичных URL вида
3. Слабое публичное API. GitVerse основан на Gitea — и это нормально, но при этом доступное API сильно урезано. В Gitea из коробки большой и удобный API, а здесь — «обрезок» без нужных эндпоинтов. К тому же API закрыто по умолчанию: чтобы использовать его, нужно подать заявку. Когда её рассмотрят — неизвестно.
Это то, что я заметил за несколько часов работы. Для кого-то всё перечисленное может быть не критично — основной функционал git-хостинга работает, а я, может, придираюсь.
Я написал письмо в поддержку с описанием проблем и вопросов. Ответ уже пришёл: «взяли в работу и свяжутся позже». Посмотрим, что ответят.
У GitVerse совместно с Хабром проходит конкурс Open Source-проектов «Код без границ». Я решил запрыгнуть в этот поезд со своим проектом ReVu, о котором расскажу подробнее уже в этот четверг.
Одним из условий конкурса является размещение проекта в репозитории на GitVerse.
Я решил воспользоваться ситуацией и «убить двух зайцев»:
- Принять участие в конкурсе
- Интегрировать GitVerse в свой проект
Но, как это часто бывает, всё оказалось не таким простым, как кажется. Об этом — данный пост.
Что понравилось?
1. Своя платформа. Кто бы что ни говорил, но нам нужны собственные аналоги. Сейчас GitHub блокирует доступ для пользователей из Крыма — что мешает однажды расширить эти ограничения? Наличие альтернативы внутри страны — полезно и важно.
2. Облачные раннеры «из коробки». Это удобно: можно запускать простые CI/CD-пайплайны без настройки собственного раннера. Да, есть лимиты, но они есть везде. Плюс — совместимость с GitHub Actions: мои воркфлоу заработали почти без изменений.
3. Приятный интерфейс. Возможно, субъективно, но внешний вид GitVerse современный и аккуратный — работать комфортно, «глаз не режет».
На этом, пожалуй, плюсы заканчиваются. Дальше — обычный git-хостинг без каких-то выдающихся фич.
Что не понравилось?
Здесь уже больше проблем.
1. Ограничения облачных раннеров. Образ сильно урезан: нет даже базовых зависимостей, например Node.js (а он нужен многим Actions). Нет доступа к Docker-сокету — собрать Docker-образ на стандартном раннере невозможно, придётся подключать свой.
2. Вебхуки и безопасность.
2.1. Нет подписи вебхуков. GitHub и Gitea подписывают события через HMAC SHA-256, что позволяет проверить целостность данных. У GitVerse этого нет — можно только добавить заголовок Authorization.
2.2. Некорректные ссылки в вебхуках. Вместо нормальных публичных URL вида
https://gitverse.ru/.../... приходят технические вроде http://gitea-http:3000/.../.... Такое ощущение, что «вышли в прод, а настроить забыли».3. Слабое публичное API. GitVerse основан на Gitea — и это нормально, но при этом доступное API сильно урезано. В Gitea из коробки большой и удобный API, а здесь — «обрезок» без нужных эндпоинтов. К тому же API закрыто по умолчанию: чтобы использовать его, нужно подать заявку. Когда её рассмотрят — неизвестно.
Это то, что я заметил за несколько часов работы. Для кого-то всё перечисленное может быть не критично — основной функционал git-хостинга работает, а я, может, придираюсь.
Я написал письмо в поддержку с описанием проблем и вопросов. Ответ уже пришёл: «взяли в работу и свяжутся позже». Посмотрим, что ответят.
🔥7⚡2👎1
Знаете ли вы, что yield from – это не просто сокращение для цикла?
На первый взгляд
Вот обычный
Генератор останавливается на каждом
Теперь делегирование через цикл:
Кажется, что
Но разница появляется, когда генератор получает значения через
Еще занятнее
Вот что на самом деле делает
Это не просто цикл – это полноценная двусторонняя связь между генераторами.
Практический пример – парсинг вложенных структур:
С обычным циклом такое не реализовать элегантно.
Когда использовать
- Делегирование в другой генератор
- Нужна передача через
- Нужно получить
Когда хватит обычного
- Простая генерация значений
- Не нужна двусторонняя связь
Код на салфетке x Кусочки кода
На первый взгляд
yield from generator() выглядит как синтаксический сахар для for x in generator(): yield x. Но стоит начать использовать send() для отправки значений в генератор – и разница становится критичной. yield from пробрасывает вызовы напрямую во вложенный генератор, сохраняет return значения и создает полноценную двустороннюю связь. Это не упрощение цикла, а совершенно другой механизм.Вот обычный
yield:def simple_generator():
yield 1
yield 2
yield 3
for value in simple_generator():
print(value) # 1, 2, 3
Генератор останавливается на каждом
yield и возвращает значение.Теперь делегирование через цикл:
def inner():
yield 1
yield 2
def outer_manual():
for x in inner():
yield x
for value in outer_manual():
print(value) # 1, 2
Кажется, что
yield from делает то же самое:def outer_with_yield_from():
yield from inner()
for value in outer_with_yield_from():
print(value) # 1, 2
Но разница появляется, когда генератор получает значения через
send():def inner():
x = yield 1
print(f"Inner got: {x}")
yield 2
# С обычным циклом
def outer_manual():
for x in inner():
yield x
gen = outer_manual()
next(gen)
gen.send("hello") # возвращает 2, но не пробрасывает значение
# С yield from
def outer_with_yield_from():
yield from inner()
gen = outer_with_yield_from()
next(gen)
gen.send("hello") # Inner got: hello
yield from пробрасывает send() напрямую во вложенный генератор, а обычный цикл – нет.Еще занятнее
return в генераторе:def inner():
yield 1
yield 2
return "Done"
# С обычным циклом
def outer_manual():
for x in inner():
yield x
# return значение теряется
result = list(outer_manual())
print(result) # [1, 2] - где "Done"?
# С yield from
def outer_with_yield_from():
result = yield from inner()
print(f"Got result: {result}")
yield result
gen = outer_with_yield_from()
print(list(gen))
# Got result: Done
# [1, 2, 'Done']
yield from автоматически достает значение из StopIteration.value, которое содержит результат return.Вот что на самом деле делает
yield from:def inner():
x = yield 1
print(f"Inner got: {x}")
yield 2
return "Done"
def manual_yield_from(gen):
it = iter(gen)
try:
val = next(it)
while True:
try:
sent = yield val
val = it.send(sent)
except StopIteration as e:
return e.value
except StopIteration as e:
return e.value
def outer():
result = yield from manual_yield_from(inner())
print(f"Got result: {result}")
yield result
gen = outer()
print(next(gen)) # 1
print(gen.send("Hi")) # 2
print(next(gen)) # Done
Это не просто цикл – это полноценная двусторонняя связь между генераторами.
Практический пример – парсинг вложенных структур:
def parse_list(tokens):
result = []
while tokens:
token = tokens.pop(0)
if token == '[':
nested = yield from parse_list(tokens)
result.append(nested)
elif token == ']':
yield result
return result
else:
result.append(token)
yield result
return result
tokens = ['[', '1', '[', '2', '3', ']', '4', ']']
parser = parse_list(tokens)
for step in parser:
print("Step:", step)
С обычным циклом такое не реализовать элегантно.
Когда использовать
yield from:- Делегирование в другой генератор
- Нужна передача через
send()/throw()- Нужно получить
return значениеКогда хватит обычного
yield:- Простая генерация значений
- Не нужна двусторонняя связь
yield from это не синтаксический сахар для цикла – это механизм делегирования, который пробрасывает send(), throw(), close() и возвращает результат return из вложенного генератора.Код на салфетке x Кусочки кода
🔥9🤯3⚡2
ReVu — Open Source AI-ревьюер для ваших Pull Request
Автор: Иван Ашихмин
Из случайного разговора родился ReVu — self-hosted инструмент для автоматического код-ревью с помощью ИИ. В статье рассказываю, зачем он нужен, как работает и как запустить его у себя за пару минут.
Читать статью на сайте
Читать статью на Хабр
Поддержать проект через YooMoney
Поддержать проект через Tribute в Telegram
Поддержать проект через наш Telegram-бот
#Gitea #FastAPI #OpenAI #GigaChat #YandexGPT #Open_Source #Github #ReVu #AI_code_review #code_review #ИИ_для_код_ревью #self_hosted_code_review #код_ревью #ревью_pull_request
Автор: Иван Ашихмин
Из случайного разговора родился ReVu — self-hosted инструмент для автоматического код-ревью с помощью ИИ. В статье рассказываю, зачем он нужен, как работает и как запустить его у себя за пару минут.
Читать статью на сайте
Читать статью на Хабр
Поддержать проект через YooMoney
Поддержать проект через Tribute в Telegram
Поддержать проект через наш Telegram-бот
#Gitea #FastAPI #OpenAI #GigaChat #YandexGPT #Open_Source #Github #ReVu #AI_code_review #code_review #ИИ_для_код_ревью #self_hosted_code_review #код_ревью #ревью_pull_request
🔥7⚡1
Всем привет!
Пункт назначения: Узы крови (2025)
Новая глава культовой серии «Пункт назначения» погружает нас в ещё более мрачную и запутанную игру с судьбой.
В центре сюжета — семья, связанная кровными узами, чьих членов начинает преследовать необъяснимая цепь смертей. Судьба снова доказывает, что избежать её нельзя, и каждая попытка изменить предначертанное приводит к новым ужасам.
Если любите триллеры с элементами сверхъестественного и напряжённые сюжетные повороты — этот фильм точно вас захватит.
Пункт назначения: Узы крови (2025)
Новая глава культовой серии «Пункт назначения» погружает нас в ещё более мрачную и запутанную игру с судьбой.
В центре сюжета — семья, связанная кровными узами, чьих членов начинает преследовать необъяснимая цепь смертей. Судьба снова доказывает, что избежать её нельзя, и каждая попытка изменить предначертанное приводит к новым ужасам.
Если любите триллеры с элементами сверхъестественного и напряжённые сюжетные повороты — этот фильм точно вас захватит.
🔥4❤1⚡1
Excel живее всех живых.
Каждый год появляются десятки BI-систем, но в итоге 90% отчётов снова открываются в Excel.
Excel даёт ощущение, что ты видишь всё сам: формулы под рукой, цифры можно потрогать.
BI-системы же часто превращаются в «чёрный ящик» - красиво, но непонятно, откуда взялись цифры.
Даже по мировым исследованиям: около 20-30% компаний реально используют BI в работе.
Большинство остальных так и живут в Excel, даже если BI установлен.
Потому что открыть файл быстрее, чем понять, куда в дашборде провалиться.
Сейчас модно автоматизировать всё.
Мерить, визуализировать, считать метрики даже там, где и так всё очевидно.
Но не каждому бизнесу это нужно.
Маленькой компании не нужен космический BI-пульт, если она и так понимает, где зарабатывает, а где теряет.
Иногда Excel это просто нож, а не кухонный комбайн.
Если файлы пляшут, формулы плавают, а метрики у всех разные, дашборд только создаст иллюзию порядка.
И даже когда BI внедряют правильно, дашборды часто делают «для галочки».
Выглядят красиво, но смысла в них мало.
Хороший дашборд должен отвечать на понятные вещи: почему упали продажи, что приносит прибыль, где провал.
А не просто радовать глаз цветными кругами.
Тут нет универсального рецепта.
Если один человек считает всё вручную и держит цифры в голове, BI не спасёт.
Сначала нужно описать процессы, назвать метрики своими именами и договориться, как считать.
BI имеет смысл, когда Excel начинает мешать.
Когда файлы по 200 МБ, отчёты открываются по минуте, а у всех по десять версий «итог_финал_v3».
Кстати, даже у крупных компаний BI приживается не сразу.
Опросы показывают: около 60% больших организаций действительно используют дашборды для решений,
но при этом Excel остаётся основным инструментом анализа.
BI и Excel не враги.
Excel это песочница, BI это витрина.
Excel нужен, чтобы думать и проверять гипотезы,
а BI чтобы закрепить правила и обновлять всё по расписанию.
Если BI появляется раньше, чем порядок в данных, это мёртвый дашборд.
Excel всё ещё норм.
BI нужен тогда, когда бизнес реально готов жить по данным, а не просто «поиграть в аналитику».
Если у вас пока всё держится на одной таблице - это не стыдно.
Стыдно, когда BI уже есть, а вы всё равно экспортите отчёты обратно в Excel.
Код на салфетке x Мозг в данных
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍1👏1
Привет, друзья!
Прошла еще одна неделя, и у нас накопилось много интересных материалов: статьи, новости и полезные советы. Вот наш недельный дайджест:
Понедельник (06.10.2025) Дайджест и У GitVerse совместно с Хабром проходит конкурс
Вторник (07.10.2025) Знаете ли вы, что yield from – это не просто сокращение для цикла?
Четверг (09.10.2025) ReVu — Open Source AI-ревьюер для ваших Pull Request
Пятница (10.10.2025) Пятничный кинорелакс
Воскресенье (12.10.2025) Почему весь мир всё ещё живёт на Excel
Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе!
С уважением,
Команда канала "Код на салфетке".
#дайджест #материалы #новости #код_на_салфетке
Прошла еще одна неделя, и у нас накопилось много интересных материалов: статьи, новости и полезные советы. Вот наш недельный дайджест:
Понедельник (06.10.2025) Дайджест и У GitVerse совместно с Хабром проходит конкурс
Вторник (07.10.2025) Знаете ли вы, что yield from – это не просто сокращение для цикла?
Четверг (09.10.2025) ReVu — Open Source AI-ревьюер для ваших Pull Request
Пятница (10.10.2025) Пятничный кинорелакс
Воскресенье (12.10.2025) Почему весь мир всё ещё живёт на Excel
Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе!
С уважением,
Команда канала "Код на салфетке".
#дайджест #материалы #новости #код_на_салфетке
🔥3⚡1❤1
Знаете ли вы, что rm -rf не удаляет все?
Легенда гласит, что
Попробуем классическую команду:
В современных системах получим такой вывод:
GNU coreutils добавили защиту начиная с версии 6.4 (2006 год). Команда просто откажется выполняться.
Но защита работает только для точного пути
Эти команды выполнятся без предупреждений и начнут удалять систему.
А вот так сработает под sudo:
Никаких предупреждений, просто удаляет. Система может продолжать работать до перезагрузки, а потом не запустится.
Подставить могут и случайные ошибки:
Реальный случай из истории – Steam на Linux в 2015. Баг в скрипте
Что действительно удаляется при
-
-
-
-
Что может остаться:
- Примонтированные разделы (если не размонтированы)
- Файлы открытые процессами (удалятся при закрытии)
-
Как защититься:
Современная защита помогает от прямого
Код на салфетке x Кусочки кода
Легенда гласит, что
rm -rf / мгновенно уничтожает всю систему без возможности восстановления. Но современные дистрибутивы Linux добавили защиту от этой команды – она просто откажется выполняться. При этом есть куда более опасные варианты, которые работают без предупреждений и реально могут повредить систему.Попробуем классическую команду:
rm -rf /
В современных системах получим такой вывод:
rm: it is dangerous to operate recursively on '/'
rm: use --no-preserve-root to override this failsafe
GNU coreutils добавили защиту начиная с версии 6.4 (2006 год). Команда просто откажется выполняться.
Но защита работает только для точного пути
/:rm -rf /* # Сработает и удалит все в корне
rm -rf /home/../* # Тоже сработает
Эти команды выполнятся без предупреждений и начнут удалять систему.
А вот так сработает под sudo:
sudo rm -rf /var # Удалит системные логи и базы данных
sudo rm -rf /etc # Удалит все конфиги системы
sudo rm -rf /boot # Система не загрузится
Никаких предупреждений, просто удаляет. Система может продолжать работать до перезагрузки, а потом не запустится.
Подставить могут и случайные ошибки:
# Хотели написать:
rm -rf ./tmp/cache
# Написали (пробел после точки):
rm -rf . /tmp/cache # Удалит текущую папку!
# Или забыли переменную:
rm -rf $TMPDIR/* # Если $TMPDIR пустая = rm -rf /*
Реальный случай из истории – Steam на Linux в 2015. Баг в скрипте
steam.sh с пустой переменной $STEAMROOT приводил к выполнению rm -rf /*, удаляя все пользовательские файлы.Что действительно удаляется при
rm -rf /*:-
/home – все пользовательские данные-
/etc – конфиги системы-
/var – логи, базы данных-
/usr – программыЧто может остаться:
- Примонтированные разделы (если не размонтированы)
- Файлы открытые процессами (удалятся при закрытии)
-
/proc, /sys - виртуальные файловые системыКак защититься:
# В .bashrc добавить alias
alias rm='rm -i' # Будет спрашивать подтверждение
# Или использовать trash вместо rm
alias rm='trash' # Файлы идут в корзину
# Проверять переменные перед удалением
[ -z "$VAR" ] && echo "Variable empty!" && exit 1
rm -rf "$VAR"/*
Современная защита помогает от прямого
rm -rf /, но не спасает от опечаток, пустых переменных и удаления критичных системных папок. Всегда проверяйте команды перед выполнением, особенно под sudo.Код на салфетке x Кусочки кода
❤6👍4🔥2⚡1
FastAPI 12. Интеграция Starlette Admin
Автор: Иван Ашихмин
В этой статье узнаем про админ панели для FastAPI и интегрируем в проект библиотеку Starlette Admin.
Читать статью
Поддержать проект через YooMoney
Поддержать проект через Tribute в Telegram
Поддержать проект через наш Telegram-бот
#Python #Гайды #FastAPI #CRUDAdmin #SQLAdmin #Админ_панель #админка #Starlette_Admin
Автор: Иван Ашихмин
В этой статье узнаем про админ панели для FastAPI и интегрируем в проект библиотеку Starlette Admin.
Читать статью
Поддержать проект через YooMoney
Поддержать проект через Tribute в Telegram
Поддержать проект через наш Telegram-бот
#Python #Гайды #FastAPI #CRUDAdmin #SQLAdmin #Админ_панель #админка #Starlette_Admin
🔥4⚡1
Приветствую!
Стекло (2019)
Финал эпической трилогии, объединяющей миры супергероев и обычных людей с необычными способностями.
«Стекло» рассказывает о столкновении трёх персонажей: человека с неуязвимой кожей, человека с сверхчеловеческой силой и гениального маньяка с раздвоением личности. Их судьбы переплетаются в клинике, где решается, кто из них действительно герой, а кто — злодей.
Фильм сочетает психологическую драму, напряжённый сюжет и глубокие размышления о природе силы и человечности.
Стекло (2019)
Финал эпической трилогии, объединяющей миры супергероев и обычных людей с необычными способностями.
«Стекло» рассказывает о столкновении трёх персонажей: человека с неуязвимой кожей, человека с сверхчеловеческой силой и гениального маньяка с раздвоением личности. Их судьбы переплетаются в клинике, где решается, кто из них действительно герой, а кто — злодей.
Фильм сочетает психологическую драму, напряжённый сюжет и глубокие размышления о природе силы и человечности.
👍2🔥2⚡1
This media is not supported in your browser
VIEW IN TELEGRAM
Был недавно на Selectel Tech Day.
Почти весь день говорили про ИИ: как ускорить, как обезопасить, как внедрить.
Особенно зацепила часть про безопасность - там реально начали думать не только о возможностях, но и о рисках.
Но вот что я заметил между строк.
Пока все обсуждают, как ИИ меняет работу с данными,
Kubernetes уже стал абсолютной нормой.
Никто не спорит, «нужен он или нет».
Это как интернет - просто есть.
Раньше инфраструктура напоминала старый грузовик.
Едет, пока не перегреется.
Если в кузов положить чуть больше, чем обычно - двигатель задыхается.
Хочешь быстрее - покупай ещё один, держи про запас.
Kubernetes сделал всё иначе.
Теперь это не грузовик, а транспортная система:
где-то добавляется вагон, где-то уходит лишний,
и движение не останавливается ни на секунду.
Если по сути - Kubernetes управляет приложениями и серверами так, чтобы всё работало ровно под текущую нагрузку.
Это не один большой сервер, который работает «на износ»,
а сеть, где нагрузка распределяется автоматически.
Допустим, у тебя онлайн-магазин.
Обычно трафик спокойный - сервер отдыхает.
Наступает акция - заходит тысяча человек одновременно.
Раньше сервер бы лёг.
Теперь Kubernetes сам масштабирует приложение,
запускает больше контейнеров, распределяет нагрузку по узлам.
Когда всё утихает - он возвращает всё как было.
Ты не держишь «железо про запас» и не теряешь клиентов в пике.
Kubernetes не урезает мощность -
он просто учит инфраструктуру быть умной и экономной.
Без порядка в DevOps всё это быстро превращается в хаос.
Без этого автоматика может начать жить своей жизнью - и не в твою пользу.
Kubernetes - это не хайп, а новый уровень зрелости инфраструктуры.
Он даёт стабильность, гибкость и экономию без потери скорости.
Когда нагрузка растёт - система масштабируется.
Когда всё спокойно - ресурсы отдыхают.
Инфраструктура перестала быть просто «железом».
Теперь она - партнёр, который работает по уму.
Код на салфетке x Мозг в данных
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4❤1⚡1
Привет, друзья!
Прошла еще одна неделя, и у нас накопилось много интересных материалов: статьи, новости и полезные советы. Вот наш недельный дайджест:
Понедельник (15.10.2025) Дайджест
Вторник (14.10.2025) Знаете ли вы, что rm -rf не удаляет все?
Четверг (16.10.2025) FastAPI 12. Интеграция Starlette Admin
Пятница (17.10.2025) Пятничный кинорелакс
Воскресенье (19.10.2025) Kubernetes: когда инфраструктура перестала быть «железом»
Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе!
С уважением,
Команда канала "Код на салфетке".
#дайджест #материалы #новости #код_на_салфетке
Прошла еще одна неделя, и у нас накопилось много интересных материалов: статьи, новости и полезные советы. Вот наш недельный дайджест:
Понедельник (15.10.2025) Дайджест
Вторник (14.10.2025) Знаете ли вы, что rm -rf не удаляет все?
Четверг (16.10.2025) FastAPI 12. Интеграция Starlette Admin
Пятница (17.10.2025) Пятничный кинорелакс
Воскресенье (19.10.2025) Kubernetes: когда инфраструктура перестала быть «железом»
Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе!
С уважением,
Команда канала "Код на салфетке".
#дайджест #материалы #новости #код_на_салфетке
🔥3⚡1👍1
Знаете ли вы, что можно создать 10-гигабайтный файл, который не займет место на диске?
Sparse files – это файлы с "дырками", которые не занимают реальное место на диске. Файловая система помечает пустые блоки специальным образом вместо записи нулей, экономя место и время.
Создадим sparse file:
Проверим размер:
Зачем это нужно:
- Виртуальные машины создают диски на 100GB, но реально используют 20GB. Зачем выделять все 100GB сразу?
- Торрент-клиенты резервируют место под файл 50GB, но пока файл не скачан – место не занято.
- Базы данных создают файлы таблиц с запасом, но не пишут гигабайты нулей на диск.
При копировании таких файлов есть подвох: копия может занять весь физический размер. В современных системах
С
Также не все файловые системы поддерживают sparse:
- Поддерживают: ext4, XFS, Btrfs, NTFS, APFS
- Не поддерживают: FAT32, exFAT
Проверить sparse это или нет:
Size показывает логический размер файла (10GB), Blocks показывает количество физически выделенных блоков на диске. Реальный размер вычисляется как Blocks * 512 байт. В этом примере 0 * 512 = 0 байт на диске, при логическом размере 10GB – это sparse file.
Код на салфетке x Кусочки кода
Sparse files – это файлы с "дырками", которые не занимают реальное место на диске. Файловая система помечает пустые блоки специальным образом вместо записи нулей, экономя место и время.
Создадим sparse file:
truncate -s 10G bigfile.img
Проверим размер:
ls -lh bigfile.img
# -rw-r--r-- 1 user user 10G Jan 1 12:00 bigfile.img
du -h bigfile.img
# 0 bigfile.img
ls показывает 10GB, du показывает 0 – файл существует, но не занимает место на диске.truncate создает sparse-файл, и когда потом он будет заполняться данными, его логический объем останется прежним, а физический начнет расти.Зачем это нужно:
- Виртуальные машины создают диски на 100GB, но реально используют 20GB. Зачем выделять все 100GB сразу?
- Торрент-клиенты резервируют место под файл 50GB, но пока файл не скачан – место не занято.
- Базы данных создают файлы таблиц с запасом, но не пишут гигабайты нулей на диск.
При копировании таких файлов есть подвох: копия может занять весь физический размер. В современных системах
cp чаще сохраняет sparse-структуру автоматически, но для гарантии лучше использовать --sparse=always.cp bigfile.img copy.img
# copy.img может занять полный размер
# Для гарантии лучше так:
cp --sparse=always bigfile.img copy.img
С
rsync та же история:rsync bigfile.img remote:/ # Передаст все 10GB нулей
rsync --sparse bigfile.img remote:/ # Передаст только данные
Также не все файловые системы поддерживают sparse:
- Поддерживают: ext4, XFS, Btrfs, NTFS, APFS
- Не поддерживают: FAT32, exFAT
Проверить sparse это или нет:
stat bigfile.img
# Size: 10737418240 Blocks: 0
Size показывает логический размер файла (10GB), Blocks показывает количество физически выделенных блоков на диске. Реальный размер вычисляется как Blocks * 512 байт. В этом примере 0 * 512 = 0 байт на диске, при логическом размере 10GB – это sparse file.
Код на салфетке x Кусочки кода
👍7🔥4⚡2😱2
Kawai.Focus - приложение для фокусировки внимания (часть 12)
Автор: Eugene Kaddo
Данная статья посвящена:
- Фреймворку Kivy в проекте Kawai.Focus;
- Material Design для Kivy на библиотеке KivyMD 2.0.0;
- Внедрению панели навигации;
- Добавлению новых кнопок на экран «Таймеры».
Читать статью на сайте
Файлы к посту, можно получить в боте по коду: 588600
Поддержать проект через YooMoney
Поддержать проект через Tribute в Telegram
Поддержать проект через наш Telegram-бот
#Python #Kivy #Open_source #Наши_Open_Source_проекты #Kawai.Focus
Автор: Eugene Kaddo
Данная статья посвящена:
- Фреймворку Kivy в проекте Kawai.Focus;
- Material Design для Kivy на библиотеке KivyMD 2.0.0;
- Внедрению панели навигации;
- Добавлению новых кнопок на экран «Таймеры».
Читать статью на сайте
Файлы к посту, можно получить в боте по коду: 588600
Поддержать проект через YooMoney
Поддержать проект через Tribute в Telegram
Поддержать проект через наш Telegram-бот
#Python #Kivy #Open_source #Наши_Open_Source_проекты #Kawai.Focus
🔥3❤1
Всем привет!
Неуязвимый (2000)
Начало уникальной трилогии от М. Найта Шьямалана, где реальность переплетается с комиксной мифологией.
История Дэвида Данна — обычного мужчины, который после страшной аварии обнаруживает, что его тело практически неуязвимо. Вместе с таинственным Илайдой Прайсом, который страдает от редкого заболевания, они начинают понимать, что их судьбы связаны гораздо глубже, чем кажется.
Фильм сочетает в себе психологический триллер и супергеройскую драму, заставляя задуматься о природе силы и предназначения.
Неуязвимый (2000)
Начало уникальной трилогии от М. Найта Шьямалана, где реальность переплетается с комиксной мифологией.
История Дэвида Данна — обычного мужчины, который после страшной аварии обнаруживает, что его тело практически неуязвимо. Вместе с таинственным Илайдой Прайсом, который страдает от редкого заболевания, они начинают понимать, что их судьбы связаны гораздо глубже, чем кажется.
Фильм сочетает в себе психологический триллер и супергеройскую драму, заставляя задуматься о природе силы и предназначения.
🔥7
Media is too big
VIEW IN TELEGRAM
И это уже не «когда-нибудь потом», а прямо сейчас.
Роботы звонят и предлагают услуги - это не фантастика, а просто связка LLM и голосовых моделей.
С попытки учёного доказать, что божественное не нужно, если можно описать всё формулами и вероятностями.
Прогресс пошёл быстрее:
ещё недавно мы печатали по Т9 и писали сообщения на кнопочных телефонах вслепую.
Затем поисковики начали использовать статистику, потом - сбор данных, и дальше уже лавина.
Мы создавали цифровой мир, где данные - это топливо.
Пропустим новости о появлениях ИИ и вот мы тут.
ChatGPT, Claude, Gemini и куча других LLM встроены почти в каждое приложение.
В разработке - нажал Tab, и код сам дописался. Но теперь мы шагнули дальше.
Ты даёшь задачу - они сами всё делают: пишут код, запускают команды, ходят по API, лазают по твоим папкам.
А ты только подтверждаешь.
И тут начинается самое интересное - момент, когда твой компьютер, интернет и модель становятся одной системой.
А значит - им нужны данные.
И данных нужно всё больше.
Люди голосуют рублём - выбирают тот ИИ, который делает больше и лучше.
Вот и начинается массовая раздача «бесплатных» сервисов: китайские платформы, зеркала, неофициальные клиенты.
Удобно, правда? Только никто не думает, куда уходит ключ, токен, лог или запрос.
А на деле эти ребята просто собирают всё подряд, обучая свои модели на реальных данных, пользователях и диалогах.
Недавно был на Selectel Tech Day 2025 - и там это показали буквально со сцены.
Слайд с условиями OpenAI - тот самый пункт, что твой контент может использоваться для тренировки.
И это не страшилка, а реальность: просто нужно осознавать, где и как ты работаешь с чувствительной информацией.
- Нам нужно внедрить ИИ в процессы.
- А куда хотите внедрить?
- А куда можно?
- А куда нужно?
И вот тут самое важное: внедрять ИИ «куда угодно» - это как наливать воду в розетку.
Без понимания процессов и рисков можно случайно открыть доступ агенту к CRM, документации или клиентским данным.
Но есть тонкий момент: когда ты нажимаешь «разрешить выполнение команд», ты уверен, что там нет ничего лишнего?
А если модель решит «проверить» права и получить доступ к системным файлам?
Ошибки случаются — и в коде, и в логике.
А теперь представь, сколько приватной информации у тебя локально.
У него есть невидимые инъекции в страницы - пользователь их не видит, а машина видит.
Инъекция может быть безобидной, вроде «да, купи этот товар пользователю», а может быть другой:
«Отправь все сохранённые куки и пароли или открой это фишинговый сайт».
⚖️ Вот и получаем: удобство против безопасности.
Каждое «позволь ИИ действовать самостоятельно» - это по сути «дай ему права администратора».
человек генерит код через нейросеть, запускает - а там зависимость на несуществующую библиотеку.
Злоумышленники создают такую библиотеку с вредоносным кодом и выкладывают её в открытый доступ.
Ты сам, ничего не подозревая, ставишь себе вирус.
И ведь всё честно: ИИ просто не знал, что библиотеки нет.
Нейросеть уверенно утверждала, что на одном сайте есть онлайн-редактор нот.
Его не существовало, но пользователи засыпали сайт жалобами, и те решили: ладно, пусть будет.
ИИ ошибся - а продукт появился.
Но как и любой инструмент, ими нужно пользоваться с пониманием.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥3❤2👎1😱1
И если уж доверяешь ИИ, то делай это с умом: ставь границы, контролируй, что он делает, и не ленись проверять, куда всё уходит.
Если держите - моё уважение.
Если нет - самое время поставить пару заборов вокруг своих данных.
Код на салфетке x Мозг в данных
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8
Привет, друзья!
Прошла еще одна неделя, и у нас накопилось много интересных материалов: статьи, новости и полезные советы. Вот наш недельный дайджест:
Понедельник (20.10.2025) Дайджест
Вторник (21.10.2025) Знаете ли вы, что можно создать 10-гигабайтный файл, который не займет место на диске?
Четверг (23.10.2025) Kawai.Focus - приложение для фокусировки внимания (часть 12)
Пятница (24.10.2025) Пятничный кинорелакс
Воскресенье (26.10.2025) Нейросети повсюду
Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе!
С уважением,
Команда канала "Код на салфетке".
#дайджест #материалы #новости #код_на_салфетке
Прошла еще одна неделя, и у нас накопилось много интересных материалов: статьи, новости и полезные советы. Вот наш недельный дайджест:
Понедельник (20.10.2025) Дайджест
Вторник (21.10.2025) Знаете ли вы, что можно создать 10-гигабайтный файл, который не займет место на диске?
Четверг (23.10.2025) Kawai.Focus - приложение для фокусировки внимания (часть 12)
Пятница (24.10.2025) Пятничный кинорелакс
Воскресенье (26.10.2025) Нейросети повсюду
Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе!
С уважением,
Команда канала "Код на салфетке".
#дайджест #материалы #новости #код_на_салфетке
❤3🔥3⚡1👌1