Реальный Код
хотелось написать сюда, но не знал о чем… 🤔 … и накидал скрипт, который считает статистику использования мною команд в терминале что получилось – ниже 👇 выше ☝️ можно такое на собесах спрашивать, чтобы больше узнать о человеке: чем пользуется, какой стек…
сегодня начинаю серию постов про мои топ утилиты/программы, которые я чаще всего использую
и начинаем мы... па-бааааааа-мммм... ну конечно же с питона 😆
python – это программа-интерпретатор одноименного языка программирования. что значит интерпретатор? а это такая программа, которая читает исходный код программы на этом языке и исполняет каждую строку за строкой
пробежимся по основным возможностям...
вообще, вот следующие три варианта можно использовать во всех unix-подобных операционных системах и частично с некоторыми особенностями – в Windows
// показать справку по аргументам программы и краткую информацию по ее использованию (вместо питона может быть любая программа):
в среде Windows исторически было принято вызывать страницу с описанием параметров с помощью аргумента /h или /?, однако сейчас все больше программ, которые используют unix-like стиль. да и в целом, кросс-платформенные программы обычно используют тот же unix-like подход
// вывести версию программы:
// получить развернутую помощь по программе (unix-like системы: Linux, MacOS и прочие):
еще раз подчеркну, что три варианта использования выше применимы к абсолютному большинству программ и утилит. рекомендую первым делом всегда начинать знакомство с новой утилитой через эти параметры
итак, к питону...
// запустить скрипт на выполнение:
// запустить пакет на выполнение:
например, вывести список установленных пакетов:
тут мы говорим интерпретатору запустить пакет (`-m`) с именем pip и передать ему параметр list. в итоге будет распечатан список установленных пакетов
// выполнить кусок питоновского кода:
например, вот так мы можем сгенерировать пароль:
этот код выведет что-то вроде:
или в другой раз:
// запустить интерактивную среду Python (она ещеназывается REPL, Read-Eval-Print Loop), или, проще говоря, ИДЕ на самых минималках, а скорее даже питонячий плейграунд для проверки каких-то конструкций языка:
при этом у вас появится в начале строки такой знак:
который означает, что вы находитесь как раз в интерактивном интерпретаторе питона
в нем вы можете также писать исходный код, включая многостроковые конструкции. после вбивания питоновских конструкций и жамканья Enter вы будете тут же получать результат. рекомендую: зайдите-поиграйтесь, если еще не пробовали
для выхода используйте функцию exit()
вот например как может это выглядеть:
на этом на сегодня все. happy питонинга вам 😉
#python #repl #terminal
и начинаем мы... па-бааааааа-мммм... ну конечно же с питона 😆
python – это программа-интерпретатор одноименного языка программирования. что значит интерпретатор? а это такая программа, которая читает исходный код программы на этом языке и исполняет каждую строку за строкой
пробежимся по основным возможностям...
вообще, вот следующие три варианта можно использовать во всех unix-подобных операционных системах и частично с некоторыми особенностями – в Windows
// показать справку по аргументам программы и краткую информацию по ее использованию (вместо питона может быть любая программа):
python --help
в среде Windows исторически было принято вызывать страницу с описанием параметров с помощью аргумента /h или /?, однако сейчас все больше программ, которые используют unix-like стиль. да и в целом, кросс-платформенные программы обычно используют тот же unix-like подход
// вывести версию программы:
python --version
// получить развернутую помощь по программе (unix-like системы: Linux, MacOS и прочие):
man python
еще раз подчеркну, что три варианта использования выше применимы к абсолютному большинству программ и утилит. рекомендую первым делом всегда начинать знакомство с новой утилитой через эти параметры
итак, к питону...
// запустить скрипт на выполнение:
python my_script.py
// запустить пакет на выполнение:
python -m package
например, вывести список установленных пакетов:
python -m pip list
тут мы говорим интерпретатору запустить пакет (`-m`) с именем pip и передать ему параметр list. в итоге будет распечатан список установленных пакетов
// выполнить кусок питоновского кода:
python -c <код>
например, вот так мы можем сгенерировать пароль:
python -c "import random; print(''.join(random.choice(string.ascii_letters + string.digits) for _ in range(8)))"
этот код выведет что-то вроде:
2Lqszm8l
или в другой раз:
WTgs90No
// запустить интерактивную среду Python (она ещеназывается REPL, Read-Eval-Print Loop), или, проще говоря, ИДЕ на самых минималках, а скорее даже питонячий плейграунд для проверки каких-то конструкций языка:
python
при этом у вас появится в начале строки такой знак:
>>>
который означает, что вы находитесь как раз в интерактивном интерпретаторе питона
в нем вы можете также писать исходный код, включая многостроковые конструкции. после вбивания питоновских конструкций и жамканья Enter вы будете тут же получать результат. рекомендую: зайдите-поиграйтесь, если еще не пробовали
для выхода используйте функцию exit()
вот например как может это выглядеть:
>>> import datetime
>>> datetime.datetime.now()
datetime.datetime(2024, 11, 16, 20, 9, 31, 518836)
>>> ll = [1, 2, 3, 4, 5]
>>> ll
[1, 2, 3, 4, 5]
>>> '-'.join(ll)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: sequence item 0: expected str instance, int found
>>> ', '.join(ll)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: sequence item 0: expected str instance, int found
>>> ll = ['a', 'b', 'c']
>>> '-'.join(ll)
'a-b-c'
>>> exit()
на этом на сегодня все. happy питонинга вам 😉
#python #repl #terminal
🔥3👍2❤1
о полезности чтения чужих исходников
я кажется уже упомниал, что крайне полезно читать чужой код. благо, егокак говна за баней очень много на ГитХабе: по любой тематике, любого качества, на любом языке
через это ты не только учишься быстро понимать и вникать в код (а это тоже навык), но самое главное – можешь учиться новому (к вопросу про мой предыдущий пост, кстати☝️), перенимать какие-то фишки, приемчики или даже узнавать новые конструкции языка или используемые бибилиотеки. ну а где-то, наоборот, можешь понять, почему ты бы написал лучше и чем данный код плох, какие есть минусы и почему его сложно читать (=поддерживать)
это, кстати, касается и код-ревью: важно читать и перенимать чужой опыт и фишечки написания кода
так вот… читаю я сегодня на досуге код OpenShot (это такой видеоредактор). а что примечательно – его ГУЕвая часть написана на связке Python+Qt
читаю-читаю, и натыкаюсь в разделе инициализации логов на такую конструкцию:
и узнаю, что в питоне, оказывается, из коробки есть log rotation (об этом в другой раз; вкратце, это когда лог пишется до определенного момента в файл, после чего начинает писаться в следующий файл, чтобы файлы не разрастались)
поглядел в доке: так там целая поляна всевозможных лог хендлеров, от null до отправления UDP-датаграмм
так что в очередной раз даю совет: читайте чужой код!
#python #log #sourceCode #опыт
я кажется уже упомниал, что крайне полезно читать чужой код. благо, его
через это ты не только учишься быстро понимать и вникать в код (а это тоже навык), но самое главное – можешь учиться новому (к вопросу про мой предыдущий пост, кстати☝️), перенимать какие-то фишки, приемчики или даже узнавать новые конструкции языка или используемые бибилиотеки. ну а где-то, наоборот, можешь понять, почему ты бы написал лучше и чем данный код плох, какие есть минусы и почему его сложно читать (=поддерживать)
это, кстати, касается и код-ревью: важно читать и перенимать чужой опыт и фишечки написания кода
так вот… читаю я сегодня на досуге код OpenShot (это такой видеоредактор). а что примечательно – его ГУЕвая часть написана на связке Python+Qt
читаю-читаю, и натыкаюсь в разделе инициализации логов на такую конструкцию:
#
# Create rotating file handler
#
if os.path.exists(info.USER_PATH):
fh = logging.handlers.RotatingFileHandler(
os.path.join(info.USER_PATH, 'openshot-qt.log'),
encoding="utf-8",
maxBytes=25*1024*1024, backupCount=3)
fh.setLevel(info.LOG_LEVEL_FILE)
fh.setFormatter(file_formatter)
log.addHandler(fh)
else:
class DummyHandler:
def setLevel(self, level):
return True
fh = DummyHandler()
и узнаю, что в питоне, оказывается, из коробки есть log rotation (об этом в другой раз; вкратце, это когда лог пишется до определенного момента в файл, после чего начинает писаться в следующий файл, чтобы файлы не разрастались)
поглядел в доке: так там целая поляна всевозможных лог хендлеров, от null до отправления UDP-датаграмм
так что в очередной раз даю совет: читайте чужой код!
#python #log #sourceCode #опыт
🔥2👍1👌1
в Питоне для генерации чего-то более-менее критичного к секьюрности рекомендуется использовать пакет
вот дока https://docs.python.org/3/library/secrets.html
а вот PEP 506 с деталями https://peps.python.org/pep-0506/
the rule of thumb:
почитайте – крайне полезные вещи там
#security #python
secrets
вместо random
вот дока https://docs.python.org/3/library/secrets.html
а вот PEP 506 с деталями https://peps.python.org/pep-0506/
the rule of thumb:
random
используем для всякого матмоделирования и некриитчного к безопасности. secrets
– для генерации токенов, паролей и всего прочего на проде, что нужно хранить безопасно. Кстати, там же есть удобная функция для генерации валидных рандомных частей УРЛов – secrets.token_urlsafe()
почитайте – крайне полезные вещи там
#security #python
👍1🔥1
да уж… питона у меня на ГХ все больше и больше
второй график – на начало этого года
третий – на начало 2024
четвертый – два года назад
кстати, также видно и развитие утилиты git-stats-plate-gen за те же два года
итого, что у нас по питону:
авг 2023 – 25К
янв 2024 – 33К
янв 2025 – 58К
авг 2025 – 77К
🤪
это только полностью мои репы, которые мейнтейню в одно лицо. Никаких форков или те, куда я контрибутил «вовне»
#python #stats #gitHub
второй график – на начало этого года
третий – на начало 2024
четвертый – два года назад
кстати, также видно и развитие утилиты git-stats-plate-gen за те же два года
итого, что у нас по питону:
авг 2023 – 25К
янв 2024 – 33К
янв 2025 – 58К
авг 2025 – 77К
🤪
это только полностью мои репы, которые мейнтейню в одно лицо. Никаких форков или те, куда я контрибутил «вовне»
#python #stats #gitHub
🔥1