спешу поделиться с вами радостью!
в совсем недавно вышедший питон 3.13 вошел мой фикс 😃 ууууууррррааааааа 🥳 несказанно счастлив и горжусь 💪
бага была зарепорчена мною еще года три назад, и пофикшена тогда же:
argparse incorrectly shows help string on a new line in case of long command string (https://github.com/python/cpython/issues/87041)
а вот и сам фикс: https://github.com/python/cpython/commit/8d3a0fecbe2edb69cf66db82f1c59601aac94651
так что вот, приложил свою руку 😎☺️
#python
в совсем недавно вышедший питон 3.13 вошел мой фикс 😃 ууууууррррааааааа 🥳 несказанно счастлив и горжусь 💪
бага была зарепорчена мною еще года три назад, и пофикшена тогда же:
argparse incorrectly shows help string on a new line in case of long command string (https://github.com/python/cpython/issues/87041)
а вот и сам фикс: https://github.com/python/cpython/commit/8d3a0fecbe2edb69cf66db82f1c59601aac94651
так что вот, приложил свою руку 😎☺️
#python
GitHub
argparse incorrectly shows help string on a new line in case of long command string · Issue #87041 · python/cpython
BPO 42875 Nosy @rhettinger, @DiPaolo PRs #24177 Files argparse-indent-sample.py Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state...
🔥3👍2👎2❤1👏1🤔1🤓1
что же касается самого релиза, то я для себя отметил следующее:
- PEP 703 – Making the Global Interpreter Lock Optional in CPython (https://peps.python.org/pep-0703/)
- вместо него есть штука Free-threaded CPython (https://docs.python.org/3/whatsnew/3.13.html#free-threaded-cpython)
- A better interactive interpreter (https://docs.python.org/3/whatsnew/3.13.html#whatsnew313-better-interactive-interpreter)
- PEP 730 – Adding iOS as a supported platform (https://peps.python.org/pep-0730/)
- PEP 738 – Adding Android as a supported platform (https://peps.python.org/pep-0738/)
полный список фич и обновлений тут https://www.python.org/downloads/release/python-3130/
🐍
#python #release
- PEP 703 – Making the Global Interpreter Lock Optional in CPython (https://peps.python.org/pep-0703/)
- вместо него есть штука Free-threaded CPython (https://docs.python.org/3/whatsnew/3.13.html#free-threaded-cpython)
- A better interactive interpreter (https://docs.python.org/3/whatsnew/3.13.html#whatsnew313-better-interactive-interpreter)
- PEP 730 – Adding iOS as a supported platform (https://peps.python.org/pep-0730/)
- PEP 738 – Adding Android as a supported platform (https://peps.python.org/pep-0738/)
полный список фич и обновлений тут https://www.python.org/downloads/release/python-3130/
🐍
#python #release
👍5👎2🤔2
Forwarded from Yandex Infrastructure
Не бойся! Я всего лишь баг на проде, обнаруженный в пятницу вечером. Давай смотреть друг на друга до тех пор, пока меня не заметят все остальные 💀🔥
😁4🫡4😱2
как ускорить своего бота в 10x раз 🚀
сегодня покажу одну маленькую вещь, которая может значительно ускорить вашу систему. Эта вещь – кэширование. Кэширование активно применяется на всех уровнях: от кэша процессора L1/L2/L3 и до кэширующих баз данных типа Redis
вкратце, суть такова: если есть сложные вычисления либо доступ к данным занимает длительное время, и данные какое-то время будут актуальны – можно их сохранить «поближе» к себе в более скоростном месте
например, доступ к оперативной памяти значительно быстрее доступа к диску, а доступ к диску значительно быстрее, чем получить данные по сети
надеюсь, тут все понятно. теперь к мааааааааленькому одному конкретному примеру, как я это сделал на практике
есть у меня бот, который показывает погоду в нескольких городах. Погоду он берет с некоторого погодного АПИ. На каждый город (допустим их 4) нужно сходить с запросом к серверу
но мы понимаем, что в течение часа погода сильно не изменится. Потому я решаю е ходить в течение часа за погодой в том же регионе, а сохранить ее у себя. ВАЖНО я бы не мог сделать такое допущение, если бы это был сервис предупреждения о бурях и другой непогоде где-нибудь в горах. Мой бот позволяет мне пренебречь этим и показывать «старую» погода в пределах часа
в Питоне есть встроенный удобные декоратор – @lru_cache (https://docs.python.org/3/library/functools.html). Однако в нем нету TTL (time to live – то есть сколько наши данные не будут «протухшими» по времени)
чтобы не городить огород самому с этим TTL вокруг стандартной функции, я легко нашел и воспользовался библиотеку с такой функциональностью – https://pypi.org/project/cachetools/
вот что получилось:
теперь, сделав запрос один раз, декоратор у себя в мапяти(!) сохранят значение (да-да! прямо JSON). И в следующий раз приобращении к этой функции с теми же аргументами, не будет выполнять код функции, а вместо этого вернет уже готовый результат. При этом, чере час он очистит кэш для этих входных аргументов функции, чтобы снова сходить на сервер по АПИ и получить актуальную погоду
вот результат – 10x в скорости ответа. А это значит, что мои пользователи увидят ответ значительно быстрее 😀
вот запрос первый раз (некэшированные данные)
после этого запроса они закэшировались, и то же обращение за погодой отрабатывает уже в 10 раз быстрее!
и так происходит в течение часа (обратите внимание на время):
по истечению же часа мы вновь тратим чуть больше времени, чтобы обновить данные и снова записать их в кэш:
после чего – опять быстро выдаем ответ пользователю:
вот такие дела… на все про все – 15 минут и 10x быстрее работа бота 😎
#python #cache #ускоряем #боты
сегодня покажу одну маленькую вещь, которая может значительно ускорить вашу систему. Эта вещь – кэширование. Кэширование активно применяется на всех уровнях: от кэша процессора L1/L2/L3 и до кэширующих баз данных типа Redis
вкратце, суть такова: если есть сложные вычисления либо доступ к данным занимает длительное время, и данные какое-то время будут актуальны – можно их сохранить «поближе» к себе в более скоростном месте
например, доступ к оперативной памяти значительно быстрее доступа к диску, а доступ к диску значительно быстрее, чем получить данные по сети
надеюсь, тут все понятно. теперь к мааааааааленькому одному конкретному примеру, как я это сделал на практике
есть у меня бот, который показывает погоду в нескольких городах. Погоду он берет с некоторого погодного АПИ. На каждый город (допустим их 4) нужно сходить с запросом к серверу
но мы понимаем, что в течение часа погода сильно не изменится. Потому я решаю е ходить в течение часа за погодой в том же регионе, а сохранить ее у себя. ВАЖНО я бы не мог сделать такое допущение, если бы это был сервис предупреждения о бурях и другой непогоде где-нибудь в горах. Мой бот позволяет мне пренебречь этим и показывать «старую» погода в пределах часа
в Питоне есть встроенный удобные декоратор – @lru_cache (https://docs.python.org/3/library/functools.html). Однако в нем нету TTL (time to live – то есть сколько наши данные не будут «протухшими» по времени)
чтобы не городить огород самому с этим TTL вокруг стандартной функции, я легко нашел и воспользовался библиотеку с такой функциональностью – https://pypi.org/project/cachetools/
вот что получилось:
@cached(cache=TTLCache(maxsize=512, ttl=60*60))
def get_weather_at_location(latitude, longitude):
ret = requests.get(
f"https://api.open-meteo.com/v1/forecast?latitude={latitude}&longitude={longitude}"
f"&hourly=temperature_2m,weather_code,wind_speed_10m&wind_speed_unit=ms¤t_weather=true&timezone=Asia%2FNovosibirsk")
return ret.json()
теперь, сделав запрос один раз, декоратор у себя в мапяти(!) сохранят значение (да-да! прямо JSON). И в следующий раз приобращении к этой функции с теми же аргументами, не будет выполнять код функции, а вместо этого вернет уже готовый результат. При этом, чере час он очистит кэш для этих входных аргументов функции, чтобы снова сходить на сервер по АПИ и получить актуальную погоду
вот результат – 10x в скорости ответа. А это значит, что мои пользователи увидят ответ значительно быстрее 😀
вот запрос первый раз (некэшированные данные)
2024-11-04 13:57:58,786 - root - INFO - request stats (chat_id=218988127, message_id=121, time_sec=1.85)
после этого запроса они закэшировались, и то же обращение за погодой отрабатывает уже в 10 раз быстрее!
2024-11-04 13:58:02,425 - root - INFO - request stats (chat_id=218988127, message_id=123, time_sec=0.17)
и так происходит в течение часа (обратите внимание на время):
2024-11-04 14:18:35,425 - root - INFO - request stats (chat_id=218988127, message_id=133, time_sec=0.139)
по истечению же часа мы вновь тратим чуть больше времени, чтобы обновить данные и снова записать их в кэш:
2024-11-04 15:10:33,043 - root - INFO - request stats (chat_id=218988127, message_id=137, time_sec=1.89)
после чего – опять быстро выдаем ответ пользователю:
2024-11-04 15:10:36,277 - root - INFO - request stats (chat_id=218988127, message_id=139, time_sec=0.215)
вот такие дела… на все про все – 15 минут и 10x быстрее работа бота 😎
#python #cache #ускоряем #боты
👍3👎2🔥2🤔1🤓1
Реальный Код
Формат времени и даты Сегодня расскажу вам о стандарте представления времени и дат, который часто используется в разработке. Стандарт этот именуется ISO 8601. Почему важно знать о нем? Потому что он часто используется при разработке ПО: хранение логов, передача…
храните даты в UTC формате
хочу сегодня апнуть тему про формат дат и дать совет из заголовка
общее правило такое: данные хранятся в общепринятом стандартном формате (вообще все данные в-принципе, и даты, в частности) и переводите их в специфичный для пользователя формат на стороне клиента (мобильное приложение, фронтенд, телеграм-бот, десктоп-приложение)
то есть, еще раз: в базе лежат даты в ISO формате и только в UTC, никаких специфичных +3/+7 и прочее…
то же самое касается логов – только в UTC
объяснение простое:
* клиенты пирложения/системы могут находиться в разных часовых поясах
* пользователь может перемещаться по миру и вносить данные в приложение из разных часовых поясов
* распределенная система может иметь сервера (которые пишут в базу и в логи), которые находятся в разных территориальных локациях
во всех этих случаях, если не придерживаться правила из заголовка, в базе/логах/проектных файлах и т.д. может случиться мешанина… а оно вам надо? 😁
когда-нибудь скажете мне спасибо за этот совет 😉
#совет #дата #логи
хочу сегодня апнуть тему про формат дат и дать совет из заголовка
общее правило такое: данные хранятся в общепринятом стандартном формате (вообще все данные в-принципе, и даты, в частности) и переводите их в специфичный для пользователя формат на стороне клиента (мобильное приложение, фронтенд, телеграм-бот, десктоп-приложение)
то есть, еще раз: в базе лежат даты в ISO формате и только в UTC, никаких специфичных +3/+7 и прочее…
то же самое касается логов – только в UTC
объяснение простое:
* клиенты пирложения/системы могут находиться в разных часовых поясах
* пользователь может перемещаться по миру и вносить данные в приложение из разных часовых поясов
* распределенная система может иметь сервера (которые пишут в базу и в логи), которые находятся в разных территориальных локациях
во всех этих случаях, если не придерживаться правила из заголовка, в базе/логах/проектных файлах и т.д. может случиться мешанина… а оно вам надо? 😁
когда-нибудь скажете мне спасибо за этот совет 😉
#совет #дата #логи
👍5👎2🤔1🙏1
просьба
коллеги… товарищи… друзья… вкатуны и просто сочувствующие 🤗
я вот начал чуть-по-чуть опять писать сюда… и грустно видеть всего 13 подписчиков 🥺
поделитесь, пожалуйста, канальчиком с теми, кому это может быть интересно, полезно, ну или кому просто нечего делать 🤭
мне будет приятно и чуть больше мотивировать писать сюда чаще
ну и кстати, не стесняйтесь писать свои вопросы в коментах. есть вопрос у вас – он всяко может интересовать и других
#просьба
коллеги… товарищи… друзья… вкатуны и просто сочувствующие 🤗
я вот начал чуть-по-чуть опять писать сюда… и грустно видеть всего 13 подписчиков 🥺
поделитесь, пожалуйста, канальчиком с теми, кому это может быть интересно, полезно, ну или кому просто нечего делать 🤭
мне будет приятно и чуть больше мотивировать писать сюда чаще
ну и кстати, не стесняйтесь писать свои вопросы в коментах. есть вопрос у вас – он всяко может интересовать и других
#просьба
👍7🤔2👎1
накину про чистый код 😈
держите свои пуканы 🔥🔥🔥
попалась мне тут статья и видос чувака, который раскидывает, что чистый код-то чистый, но перформанс у него – как будто на 15 лет назад откинули по железу
вот статья на английском. там же есть ссылка на YouTube
https://www.computerenhance.com/p/clean-code-horrible-performance
свое мнение озвучивать не буду 😆 может как-нибудь потом отдельным постом
#холивар #чистыйКод #ссылки
держите свои пуканы 🔥🔥🔥
попалась мне тут статья и видос чувака, который раскидывает, что чистый код-то чистый, но перформанс у него – как будто на 15 лет назад откинули по железу
вот статья на английском. там же есть ссылка на YouTube
https://www.computerenhance.com/p/clean-code-horrible-performance
свое мнение озвучивать не буду 😆 может как-нибудь потом отдельным постом
#холивар #чистыйКод #ссылки
Computerenhance
"Clean" Code, Horrible Performance
Many programming "best practices" taught today are performance disasters waiting to happen.
🔥3🤓3😈2
Не первый раз попадается вакансия, в которой указывается подход к документации как Docs as a Code (DAAC, получается 😄).
Так вот, это именно тот подход, что я интуитивно пропагандирую и внедряю последние лет 7-8.
Ведь это очевидно (ну для меня по-крайней мере), что дока должна:
// лежать рядом с кодом, чтобы соответствовать и отражать изменения в коде (добавил фичу в фиче-бранче – обновил доку)
// быть в виде .md-файла, чтобы его легко было менять и трекать изменения
// собираться как часть продукта, например, генерации pdf как офлайн часть + встраиваться в продукт во время сборки для онлайн формата
// тестироваться ровно также, как и остальные части продукта
// скриншоты должны автоматически генериться также на этапе сборки продукта, чтобы отражать его актуальную часть (+закрываем вопрос автоматизации создания и унификации скриншотов)
#документация #daac
Так вот, это именно тот подход, что я интуитивно пропагандирую и внедряю последние лет 7-8.
Ведь это очевидно (ну для меня по-крайней мере), что дока должна:
// лежать рядом с кодом, чтобы соответствовать и отражать изменения в коде (добавил фичу в фиче-бранче – обновил доку)
// быть в виде .md-файла, чтобы его легко было менять и трекать изменения
// собираться как часть продукта, например, генерации pdf как офлайн часть + встраиваться в продукт во время сборки для онлайн формата
// тестироваться ровно также, как и остальные части продукта
// скриншоты должны автоматически генериться также на этапе сборки продукта, чтобы отражать его актуальную часть (+закрываем вопрос автоматизации создания и унификации скриншотов)
#документация #daac
🔥3👍1💯1
Forwarded from Job in IT&Digital
Ведущий технический писатель (docs as code)
Удаленный формат (только по России) или гибрид (по желанию), офис в Москве.
180К — 280К
Известная российская компания, есть аккредитация.
Уникальный для России проект, которым пользуются 350К разработчиков.
Задачи:
— разработка документации и методических материалов для нескольких продуктов: описание новой функциональности, проработка существующей документации, вся документация на русском языке;
— исследование предметной области и сбор недостающей информации для подготовки технической документации;
— взаимодействие с разработчиками технологии.
Подробнее
Ищет Оксана Полякова op@new.hr
Удаленный формат (только по России) или гибрид (по желанию), офис в Москве.
180К — 280К
Известная российская компания, есть аккредитация.
Уникальный для России проект, которым пользуются 350К разработчиков.
Задачи:
— разработка документации и методических материалов для нескольких продуктов: описание новой функциональности, проработка существующей документации, вся документация на русском языке;
— исследование предметной области и сбор недостающей информации для подготовки технической документации;
— взаимодействие с разработчиками технологии.
Подробнее
Ищет Оксана Полякова op@new.hr
👀2
лист компрехэншн
если вы хоть раз задумывались, зачем нужны list comprehension в питоне, и, может быть думали, что они быстрее, то все просто и однозначный ответ раскрыт в PEP 202 (https://peps.python.org/pep-0202/):
так что это всего лишь для краткости записи
#python #pep #comprehension
если вы хоть раз задумывались, зачем нужны list comprehension в питоне, и, может быть думали, что они быстрее, то все просто и однозначный ответ раскрыт в PEP 202 (https://peps.python.org/pep-0202/):
Rationale
List comprehensions provide a more concise way to create lists in situations where map() and filter() and/or nested loops would currently be used.
так что это всего лишь для краткости записи
[subscriber.add_mark(random.choice(['👍', '👎', '🤔'])) for subscriber in get_subscribers()]
#python #pep #comprehension
👍4❤2🔥2🤓1👀1
Реальный Код
хотелось написать сюда, но не знал о чем… 🤔 … и накидал скрипт, который считает статистику использования мною команд в терминале что получилось – ниже 👇 выше ☝️ можно такое на собесах спрашивать, чтобы больше узнать о человеке: чем пользуется, какой стек…
вот оформил код. Пробуйте и делитесь, что получилось у вас 🤗
https://github.com/DiPaolo/deepeasy-terminal-stats
#gitHub #sourceCode #link #python #terminal #stats
https://github.com/DiPaolo/deepeasy-terminal-stats
#gitHub #sourceCode #link #python #terminal #stats
🔥4🥰3❤2🤓1
а вот вам немножечко раскрытие меня и моих локов 🤭 (LOC, Lines f Code) и как оно менялось за год
первая картинка – 14 сентября 2023, вторая – 13 ноября 2024
видно, что питона стало сильно больше. вообще, в последнее время питон – мой основной и очень любимый инструмент
также видно, что чутка щупал плюсы и немного Го
ну и видно, что питон просто жутко вырвался вперед – более половины моего кода – на питоне!
и в целом, ±25K строк кода за год только лишь на питоне и только лишь пет- и сайд-проектов – это мощно! 💪 горжусь собой 😇
да, это только лишь мой код не включая third-party и dependencies, конечно же
ну а сделать такие же графики и запулить их к себе в ГитХаб можно с помощью утилиты https://github.com/DiPaolo/git-stats-plate-gen
да, она может не так легко завестись. может дойдут руки и сделаю веб-сервис, чтобы каждый легко и просто мог такое сделать для себя. опять же, тут есть нюанс: фишка в безопасности и приватности – утилита запускается на вашем компе и ничего никуда не отправляет! это ее главная отличительная выгодная особенность
потому – будут проблемы с запуском и буду видеть, что кому-то это нужно – доработаю ее, чтобы легко было запускать на любом компе без плясок с бубном (как мыне любим 🤣🤣)
#sourceCode #tools #loc
первая картинка – 14 сентября 2023, вторая – 13 ноября 2024
видно, что питона стало сильно больше. вообще, в последнее время питон – мой основной и очень любимый инструмент
также видно, что чутка щупал плюсы и немного Го
ну и видно, что питон просто жутко вырвался вперед – более половины моего кода – на питоне!
и в целом, ±25K строк кода за год только лишь на питоне и только лишь пет- и сайд-проектов – это мощно! 💪 горжусь собой 😇
да, это только лишь мой код не включая third-party и dependencies, конечно же
ну а сделать такие же графики и запулить их к себе в ГитХаб можно с помощью утилиты https://github.com/DiPaolo/git-stats-plate-gen
да, она может не так легко завестись. может дойдут руки и сделаю веб-сервис, чтобы каждый легко и просто мог такое сделать для себя. опять же, тут есть нюанс: фишка в безопасности и приватности – утилита запускается на вашем компе и ничего никуда не отправляет! это ее главная отличительная выгодная особенность
потому – будут проблемы с запуском и буду видеть, что кому-то это нужно – доработаю ее, чтобы легко было запускать на любом компе без плясок с бубном (как мы
#sourceCode #tools #loc
👏4🔥3🏆3😎1
finita la comedia
нет-нет, все хорошо, просто речь сегодня пойдет про ключевое слово (а точнее – аннотацию) final в питоне
надо сказать, что я лично узнал об этой фиче совсем недавно, тогда как в языке она присутствует с версии 3.8
ну и сразу дам ссылку на PEP – https://peps.python.org/pep-0591/
если говорить кратко – это аналог ключевого слова const в других языках. тем самым мы говорим, что значение переменной не будет меняться
хотя погодите! все ли так очевидно? давайте смотреть на примере…
вывод:
хммммм…. но как же так?! я же сам сказал, что это константа, как мы смогли поменять ее значение??
все дело в том, что мы должны помнить, питон – нетипизированный язык! и все эти задания типов, в том числе и рассматриваемая сегодня аннотация final – это не строгое правило, а лишь подсказка (так и называется – type hint) для IDE и для утилит статического анализа
то есть, в ИДЕшке-то оно вам подсветит возможную проблему, а статический анализатор навроде ruff – ругнется и скажет, что у вас ошибка в коде. при всем при это код вы сможете запустить и он будет изменять значение вашей переменной, обозначенной как final!
так что имейте ввиду эту особенность, ну и конечно крайне рекомендую – используйте аннотацию final везде, где только возможно. этим вы еще дополнительно скажете человеку, который будет читать ваш код, что это – константа, и не предполагается ее изменение. хотя, теперь вы знаете, что если очень хочется… 😁
#python #final
нет-нет, все хорошо, просто речь сегодня пойдет про ключевое слово (а точнее – аннотацию) final в питоне
надо сказать, что я лично узнал об этой фиче совсем недавно, тогда как в языке она присутствует с версии 3.8
ну и сразу дам ссылку на PEP – https://peps.python.org/pep-0591/
если говорить кратко – это аналог ключевого слова const в других языках. тем самым мы говорим, что значение переменной не будет меняться
хотя погодите! все ли так очевидно? давайте смотреть на примере…
from typing import Final
TEST = 11
print(f'TEST before: {TEST}')
TEST += 1
print(f'TEST after: {TEST}')
TEST_CONST: Final = 12
print(f'TEST_CONST before: {TEST_CONST}')
TEST_CONST += 1
print(f'TEST_CONST after: {TEST_CONST}')
вывод:
TEST before: 11
TEST after: 12
TEST_CONST before: 12
TEST_CONST after: 13
хммммм…. но как же так?! я же сам сказал, что это константа, как мы смогли поменять ее значение??
все дело в том, что мы должны помнить, питон – нетипизированный язык! и все эти задания типов, в том числе и рассматриваемая сегодня аннотация final – это не строгое правило, а лишь подсказка (так и называется – type hint) для IDE и для утилит статического анализа
то есть, в ИДЕшке-то оно вам подсветит возможную проблему, а статический анализатор навроде ruff – ругнется и скажет, что у вас ошибка в коде. при всем при это код вы сможете запустить и он будет изменять значение вашей переменной, обозначенной как final!
так что имейте ввиду эту особенность, ну и конечно крайне рекомендую – используйте аннотацию final везде, где только возможно. этим вы еще дополнительно скажете человеку, который будет читать ваш код, что это – константа, и не предполагается ее изменение. хотя, теперь вы знаете, что если очень хочется… 😁
#python #final
🤔3😱3👀3
я завалил собес по питону 😒
это было ожидаемо, на самом деле… ввиду моей особенности. те, кто знакомы со мной лично, могут знать: я очень плох в технических собесах
я могу что угодно написать: написать быстро, хорошо, качественно, практически на любом языке и независимо от фреймворка… я легко переключаюсь между языками и фреймворками, даже стеками… но на собесе… 😒😒😒 на собесе совсем не так
такая вот у меня особенность 🤷♂️ да, я хорош в практике и очень плох в теории. а готовиться-зубрить… ну честно говоря не хочется, да и смысла большого не вижу
вообще, собес был ну очень простой 🤦♂️
но вот эта моя особенность не позволила мне его пройти. но как сказал в начале – я особо и не возлагал на него надежд. позиция кстати была изначалльно на юнит-лида, но потом перешла на тимлида. так что да – это был собес по питону на тимлида
что ваще смешно: была задача, которую я сам делал 2 недели назад 😅 в своем рабочем коде. мне там понадобилось считать длительность отработки запроса, и я прикрутил декоратор, который это делает. ну прикрутил за 20 минут и забыл
да, так это работает у меня: я могу быстро найти решение, запилить его и дальше забыть. но при этом буду помнить, где, что, для чего и как в общих чертах я это делал
и тут они значит дают задачу: написать декоратор, который запускает функцию N раз и считает длительность ее выполнения. и я не смог его написать! 😩 я помнил, когда, где и для чего писал такой же декоратор, а вот вспомнить наизусть синтаксис я не смог 🤷♂️
короче, такие у меня дела…
это я все к чему… ну во-первых, поделиться с вами. во-вторых, вас ждут решения этих задач 😅
#python #собес
это было ожидаемо, на самом деле… ввиду моей особенности. те, кто знакомы со мной лично, могут знать: я очень плох в технических собесах
я могу что угодно написать: написать быстро, хорошо, качественно, практически на любом языке и независимо от фреймворка… я легко переключаюсь между языками и фреймворками, даже стеками… но на собесе… 😒😒😒 на собесе совсем не так
такая вот у меня особенность 🤷♂️ да, я хорош в практике и очень плох в теории. а готовиться-зубрить… ну честно говоря не хочется, да и смысла большого не вижу
вообще, собес был ну очень простой 🤦♂️
но вот эта моя особенность не позволила мне его пройти. но как сказал в начале – я особо и не возлагал на него надежд. позиция кстати была изначалльно на юнит-лида, но потом перешла на тимлида. так что да – это был собес по питону на тимлида
что ваще смешно: была задача, которую я сам делал 2 недели назад 😅 в своем рабочем коде. мне там понадобилось считать длительность отработки запроса, и я прикрутил декоратор, который это делает. ну прикрутил за 20 минут и забыл
да, так это работает у меня: я могу быстро найти решение, запилить его и дальше забыть. но при этом буду помнить, где, что, для чего и как в общих чертах я это делал
и тут они значит дают задачу: написать декоратор, который запускает функцию N раз и считает длительность ее выполнения. и я не смог его написать! 😩 я помнил, когда, где и для чего писал такой же декоратор, а вот вспомнить наизусть синтаксис я не смог 🤷♂️
короче, такие у меня дела…
это я все к чему… ну во-первых, поделиться с вами. во-вторых, вас ждут решения этих задач 😅
#python #собес
😱2😢2😭2😨1😎1
эффект Зейгарник
ну и еще дополню предыдущий пост… я сначала хотел написать, потом стер: решил, что лишнее и не по теме. и все же хочется чуть выйти за рамки только лишь кода и поделиться с вами…
не так давно узнал одну штуку – так называемый эффект Зейгарник. открыт был как раз той самой дамой с такой фамилией сто лет назад
заключается он в том, что незавершенные задачи запоминаются нашим мозгом лучше, чем завершенные
это перекликается с программами: положил данные в стек, выполнил задачу – попнул 😅 из стека. и все – забыли-едем дальше. а вот если данные из стека по какой-то причине не выбрасываются – то происходит memory leak (утечка памяти) – плохая, вредная и порой трудноуловимая штука (как раз кстати щас такую исследую в ffmpeg на определенных данных – но это другая история…)
также и в человеческом мозге: то, что актуальное – помнится хорошо. а если по какой-то причине это все начинает застревать в мозгу/памяти – начинаются проблемы с психикой…
все это еще сильно перекликается с гештальт-подходом
интересеная, в общем, штука... рекомендую ознакомиться, кому интересно
ну так вот, у себя я действие этого эффекта замечаю постоянно. это вообще мне очень свойственно – сделал и забыл. вот и на собесе то же самое случилось: две недели назад для продакшн-кода делал, сделал, забыл, то есть все – вымылось из памяти. на собесе то же самое не смог вспомнить…
в общем, возьмите на заметку 😉 не все ж нам про кодинг тут разговаривать…
#психология #неКодинг
ну и еще дополню предыдущий пост… я сначала хотел написать, потом стер: решил, что лишнее и не по теме. и все же хочется чуть выйти за рамки только лишь кода и поделиться с вами…
не так давно узнал одну штуку – так называемый эффект Зейгарник. открыт был как раз той самой дамой с такой фамилией сто лет назад
заключается он в том, что незавершенные задачи запоминаются нашим мозгом лучше, чем завершенные
это перекликается с программами: положил данные в стек, выполнил задачу – попнул 😅 из стека. и все – забыли-едем дальше. а вот если данные из стека по какой-то причине не выбрасываются – то происходит memory leak (утечка памяти) – плохая, вредная и порой трудноуловимая штука (как раз кстати щас такую исследую в ffmpeg на определенных данных – но это другая история…)
также и в человеческом мозге: то, что актуальное – помнится хорошо. а если по какой-то причине это все начинает застревать в мозгу/памяти – начинаются проблемы с психикой…
все это еще сильно перекликается с гештальт-подходом
интересеная, в общем, штука... рекомендую ознакомиться, кому интересно
ну так вот, у себя я действие этого эффекта замечаю постоянно. это вообще мне очень свойственно – сделал и забыл. вот и на собесе то же самое случилось: две недели назад для продакшн-кода делал, сделал, забыл, то есть все – вымылось из памяти. на собесе то же самое не смог вспомнить…
в общем, возьмите на заметку 😉 не все ж нам про кодинг тут разговаривать…
#психология #неКодинг
👍3🔥3❤2🤔1👀1
вообще, очень часто и много хочется в последнее время писать сюда. потому ждите… 😜
ну и рассказывайте про канальчик своим друзьям/знакомым/коллегам. мне будет невероятно приятно, если число подписчиков будет расти ☺️
ну и рассказывайте про канальчик своим друзьям/знакомым/коллегам. мне будет невероятно приятно, если число подписчиков будет расти ☺️
🔥2🥰2🎉2❤1🦄1
то самое слово – корутины 😱
читаю сейчас первоисточник про корутины в питоне – PEP 492 – Coroutines with async and await syntax (https://peps.python.org/pep-0492/)
позже приду к вам с мыслями и информацией по поводу асинхронщины нашей любимой 😆 … и такой полезной 🔥
#python #pep #coroutines #async
читаю сейчас первоисточник про корутины в питоне – PEP 492 – Coroutines with async and await syntax (https://peps.python.org/pep-0492/)
позже приду к вам с мыслями и информацией по поводу асинхронщины нашей любимой 😆 … и такой полезной 🔥
#python #pep #coroutines #async
🔥3🤓2👀2