Когда показатели жизни слишком низкие
В любой игре-выживалке жизненно необходимо следить за множеством метрик, которые показывают текущее состояние персонажа. Это и жажда, и голод и отравление и сон, и еще уйма всего. Чтобы поддерживать показатели на должном уровне нужны ресурсы, а они очень ограничены в таких играх. А если игрок слишком сильно запустил свои метрики, иногда легче не тратить ресурсы, а просто начать заново...
Как насчёт порубиться в Rust на мобилке?
Facepunch Studios официально анонсировала Rust Mobile – мобильную версию одного из самых известных симуляторов выживания.
Разработкой занимается студия Level Infinite, известная такими хитами, как PUBG Mobile и Assassin’s Creed: Jade. Думаем, это гарантирует высокий уровень графики и геймплея, ведь команда точно знает, как перенести атмосферу игры на мобильные устройства.
Когда ждать?
По слухам, первые этапы тестирования начнутся уже в начале следующего года. И что круто – разработчики приглашают всех желающих присоединиться к тестам и помочь сделать игру лучше!
Готовы окунуться в выживание и раскалить свои смартфоны?
Хороший пре-коммит хук для Python разработчиков
Что такое pre-commit hook? Возможность автоматически проверять код перед коммитом. Может быть разное: прогонять тесты, линтеры, форматтеры...
И я собрал для вас быстрый набор из прекоммит хуков, которые вы можете использовать на любых проектах.
Что в него входит:
- ruff (быстрейший форматтер, делает код красивым)
- pyright (один из быстрейших статических анализаторов кода на Python, посвечивает ошибки в тайп-хинтах. что-то типа проверки типов при компиляции)
- pytest с расширением doctest (прогоняет имеющиеся юнит тесты вместе с тестами в документации, про которые я писал ранее. я еле как нашёл пре коммит хук для этого...)
Как установить?
1. сначала
pip install pre-commit
2. потом создаётё .pre-commit-config.yaml
3. потом вставляете туда
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.1.5
hooks:
- id: ruff
args: [ --fix, --exit-non-zero-on-fix, --show-fixes ]
- id: ruff-format
- repo: local
hooks:
- id: pytest
args: [ --doctest-modules ]
name: pytest
entry: pytest .
language: system
types: [python]
pass_filenames: false
always_run: true
- repo: https://github.com/RobertCraigie/pyright-python
rev: v1.1.385
hooks:
- id: pyright
4. пишете
pre-commit install
Энджой :)
Ссылка на оригинальный пост:
https://t.me/sh1nke9/375
Обработка ошибок. Исключения vs Монады
Чуваки из интернета говорят, что исключения - зло, а монады - лучше и вообще будущее. Я потратил 5 часов на то, чтобы разобраться в теме того, как можно обрабатывать ошибки, и в чем разница
Исключения
Что-то ломается, у тебя вылезает ошибка, программа останавливается. При этом, указывается traceback ошибки
Монады
Все значения, которые функции возвращают, у нас оборачиваются в прослойку, она может быть Ok или Wrong (для примера. Ok - ошибки нет. Wrong - ошибка есть. мы сами з коде пишем, какие значения к каким категориям относятся)
И мы вручную проверяем, вернула ли програма Ok или Wrong. Если Ok - продолжаем программа, если Wrong - выводим ограниченную информацию об ошибке и стопаем программу
Я скажу две вещи:
Первая -
НЕТ НИКАКОЙ РАЗНИЦЫ. В ОБОИХ СЛУЧАЯХ ТЫ ПРОСТО ПРОПИСЫВАЕШЬ ИНФОРМАЦИЮ ОБ ОШИБКЕ И СТОПАЕШЬ ПРОГРАММУ (в большинстве случаев)
Вторая -
то, как реализованы монады в Go - это уродство. в Go тебе надо при каждом вызове функции писать
result, err := func()
if err != nil {...}
то есть при каждом вызове функции тебе надо говорить, че делать, если функция вернула ошибку (в большинстве случаев выбрасывать panic). это ничуть не лучше try... except, это не элегантно. в Rust чуть получше сделали с паттерн-матчингом результатов функции
Короче, тема непрактичная и оверхайп. Опять программисты по хуйне в интернете сруться
Но это я знаю точно:
- если ты обрабатываешь ошибки так, то тебя надо уволить:
try:
...
except:
pass
- если ты возвращаешь None в случае неуспеха программы, и не райзишь эксепшн, то так тоже делать нежелательно
Ссылка на оригинальный пост: https://t.me/sh1nke9/354
Узнать про «Много призов»
ПерейтиУгадайте фильм по пицце! Промокод внутри!
Пиццу обожают все — от супергероев до сказочных красавиц. Обычно угадать фильм по кадру не составляет труда, но в этот раз придется постараться: мы закрыли главных героев. Помогут наши подсказки и ароматные кусочки пиццы! Проверить себя и найти промокод на любимые блюда можно в конце ;)
Герой этого фильма по ошибке улетает в другой город, шикует на полную, борется с преступностью и находит нового друга.
Чтобы себя побаловать, не обязательно заказывать лимузин. Попробуйте хит от Додо Пиццы «Сырный цыпленок» с моцареллой, чеддером и пармезаном под фирменным соусом альфредо. И примите участие в большом розыгрыше «Много призов». На кону путешествия, годовые запасы пиццы и сертификаты OZON, Lamoda, M.Видео и Giftery.
2. Героиня этой сказочной истории попадает в реальный мир, где не бывает хеппи-эндов. Но встречает там настоящую любовь и становится успешной бизнесвумен.
Пицца выглядит очень аппетитно, правда? Если захотите повторить, советуем «Сырную», «Цыпленок Ранч» или «Песто» от Додо Пиццы. Доставят быстро и в Москве, и в Сыктывкаре.
3. Герои этого сериала в представлении не нуждаются. Никто не умеет так шутить, решать проблемы и наслаждаться вкусной едой, как они!
В кадре абсолютно точно «Пепперони». И у нас отличная новость для любителей пикантной колбаски — эта пицца участвует в большом розыгрыше от Додо Пиццы. Играйте в приложении и заказывайте продукты со специальной плашкой «многопризов», чтобы увеличить шансы на победу.
4. Находчивая парочка из этого фильма не гнушается афер, но милая внешность и добрые сердца помогают им найти семью и дом.
5. В этой истории персонаж пытается отказаться от геройств, сбалансировать свою жизнь и наладить отношения с девушкой. Но зло не дремлет и нужно снова спасать город.
В Додо Пицце тоже есть люди с суперспособностями. Они каждый день готовят и развозят ваши любимые блюда по всей стране — в сети уже 1340 пиццерий! Во всех — единые стандарты, так что вкус и качество всегда на высоте.
6. Герои этого фильма обожают готовить и даже участвуют в кулинарном состязании. Ставки высоки, на кону честь семьи, но в результаты вмешивается любовь.
Пицца героев похожа на «Пикантные колбаски» от Додо Пиццы. Заглядывайте в приложение, чтобы попробовать новинку или насладиться любимыми вкусами. А еще за заказ продуктов из подборки «Много призов» можно собрать кусочки для участия в большом розыгрыше. Полные правила акции здесь.
А прямо сейчас ловите скидку на заказ и выбирайте фильм на вечер!
Правильные ответы:
Один дома 2
Зачарованная
Друзья
Кудряшка Сью
Человек-паук 2
Маленькая Италия
Реклама 12+. ООО «Додо Франчайзинг», ОГРН 1131101001844, ИНН 1101140415, 167001, Республика Коми, г. Сыктывкар, Октябрьский проспект, 16. Акция «Много призов» действует с 10.06.25 по 11.08.25. Правила акции, информация об организаторе, об условиях участия, о призах, их количестве, сроках, месте и порядке их получения — на dodopizza.ru. Организатор вправе изменить условия акции. «Путешествие на море» — сертификат на 300 000 на покупку тура у туроператора, 3 шт. «Годовой запас пиццы» — промокод на одну пиццу 25 см за 1 , действует 24 раза до 12.08.26, 100 шт.
Языки нового поколения
Большинство нынче популярных языков (C#, Java, C++, JS, Python) не работают с многопоточною настолько хорошо, насколько бы нам того хотелось. Почему так?
Потому что они были придуманы в то время, когда ещё не был придуман процессор с двумя ядрами. Они были придуманы для работы на одном ядре, без нормальных (оптимизированных и простых) инструментов параллелизации кода
То, что я назвал выше - признак старых языков. Go и Rust под эту категорию не подходят, потому что к моменту их создания, многоядерные процессоры уже были... были. За счёт этого, они относительно просто и эффективно работают с многопоточностью (жрут меньше памяти, работают быстрее, работать с ними программисту проще)
Технологическое будущее за нативной многопоточностью
Ссылка на оригинальный пост: https://t.me/sh1nke9/328