Обещал я вам показать Россию как есть на самом деле.
Зрелище неприятное. Но необходимое.
Экспорт с 2000 по 2021 годы топово держат 4 кода hs4
Нефть сырая.
1. 2709 - Petroleum oils and oils obtained from bituminous minerals; crude
Нефтяные смеси и масла.
2. 2710 - Petroleum oils, oils from bituminous minerals, not crude; preparations n.e.s. containing less than 70% petroleum oils, oils from bituminous minerals; these being the basic constituents of the preparations
Газ.
3. 2711 - Petroleum gases and other gaseous hydrocarbons
Уголь.
4. 2701 - Coal; briquettes, ovoids and similar solid fuels manufactured from coal
В сумме они составляют от 45% в 2000м, до 52% в 2021 всего экспорта России. С пиком в 75% в 2010. Шкала Y - 200 млрд. $
Еще 16 кодов я спрячу в комменты, они вместе тянут еще от 25% в 2000м, до 15% в 2021. Шкала Y второго графика 13 млрд. $
Но там тоже в основном сырье, удобрения, и металлы. К хайтеху, причем высокому, относится только 20ая по стоимости статья экспорта.
Вместе, этот топ 20 составляет 70% всего нашего экспорта. И перекос в сторону сырья даже стал больше за 20 лет, а не меньше.
Зрелище неприятное. Но необходимое.
Экспорт с 2000 по 2021 годы топово держат 4 кода hs4
Нефть сырая.
1. 2709 - Petroleum oils and oils obtained from bituminous minerals; crude
Нефтяные смеси и масла.
2. 2710 - Petroleum oils, oils from bituminous minerals, not crude; preparations n.e.s. containing less than 70% petroleum oils, oils from bituminous minerals; these being the basic constituents of the preparations
Газ.
3. 2711 - Petroleum gases and other gaseous hydrocarbons
Уголь.
4. 2701 - Coal; briquettes, ovoids and similar solid fuels manufactured from coal
В сумме они составляют от 45% в 2000м, до 52% в 2021 всего экспорта России. С пиком в 75% в 2010. Шкала Y - 200 млрд. $
Еще 16 кодов я спрячу в комменты, они вместе тянут еще от 25% в 2000м, до 15% в 2021. Шкала Y второго графика 13 млрд. $
Но там тоже в основном сырье, удобрения, и металлы. К хайтеху, причем высокому, относится только 20ая по стоимости статья экспорта.
Вместе, этот топ 20 составляет 70% всего нашего экспорта. И перекос в сторону сырья даже стал больше за 20 лет, а не меньше.
В очередной раз, в интернете вспомнили о трупе Intel Эльбрус Itanium® (в этот раз, по поводу удаления его кода из ядра Linux).
И попалась мне прекрасная картинка, характерная для индустрии в целом, и не только ИТ.
Прогнозы аналитиков, по поводу продаж будущего продукта, вначале можно смело уменьшать в 40 раз, а ближе к дате выхода продукта на рынок, в 25 раз.
Получится что-то похожее на реальность.
И касается это любого хайпожорства, в том числе нынешнегопузыря "бума" AI технологий :)
И попалась мне прекрасная картинка, характерная для индустрии в целом, и не только ИТ.
Прогнозы аналитиков, по поводу продаж будущего продукта, вначале можно смело уменьшать в 40 раз, а ближе к дате выхода продукта на рынок, в 25 раз.
Получится что-то похожее на реальность.
И касается это любого хайпожорства, в том числе нынешнего
👍3🔥3
Оскоромился использованием python venv на продакшене (на 2571 рестарте сервиса одного бота за 3 дня, меня немного утомило на это смотреть).
Выяснилось, что 99% инструкций по теме, копируют пасту, написанную лет 5-6 назад и уже не сильно актуальную.
Восполним этот пробел, я немного почитал доки к современным 🐍 и вот инструкция.
Речь идет в первую очередь о Debian-based системах, включая Ubuntu и питоне версий 3.6 и выше.
Конкретная задача - даунгрейд версии библиотеки telethon для одного бота.
Хорошая новость - сложная активация среды для запуска любого скрипта больше не нужна.
Теперь пошагово.
Установка самого venv
Создание среды для вашего проекта
Входим в настройки среды
Моя задача, поставить одну библиотеку конкретной версии, но можно ставить сколько и чего вам угодно, pip3 уже есть и вызывается через pip
Выходим из venv
По умолчанию, venv полностью изолирован от установленных в системе библиотек, но вам вряд ли такое нужно (иначе придется ставить вообще все руками).
Редактируем файл . venv/pyvenv.cfg, устанавливаем флаг в true
После этого, venv берет вместо системных только те библиотеки, которые были в него установлены, а остальное берет из общесистемных.
Что в разы упрощает развертывание, в моем случае до 1 библиотеки всего :)
А самое интересное, что для скриптов активация среды больше не нужна от слова совсем.
Просто меняем первую строку стандартной программы, указатель интерпретатора:
На
И все. Никаких проблем и мучений с башем, среда сама себя инициализирует, запустит и все сделает.
P. S. Синхронизация venv с машины разработчика на продакшен, путь к большим проблемам, если системы не идентичны полностью.
Даже разные линуксы, с одной версией питона, порождают совсем разные среды.
Выяснилось, что 99% инструкций по теме, копируют пасту, написанную лет 5-6 назад и уже не сильно актуальную.
Восполним этот пробел, я немного почитал доки к современным 🐍 и вот инструкция.
Речь идет в первую очередь о Debian-based системах, включая Ubuntu и питоне версий 3.6 и выше.
Конкретная задача - даунгрейд версии библиотеки telethon для одного бота.
Хорошая новость - сложная активация среды для запуска любого скрипта больше не нужна.
Теперь пошагово.
Установка самого venv
apt install python3.10-venvСоздание среды для вашего проекта
cd /home/bots/my_bot
python3 -m venv .venvВходим в настройки среды
source .venv/bin/activateМоя задача, поставить одну библиотеку конкретной версии, но можно ставить сколько и чего вам угодно, pip3 уже есть и вызывается через pip
pip install --force-reinstall "telethon==1.31"Выходим из venv
deactivateПо умолчанию, venv полностью изолирован от установленных в системе библиотек, но вам вряд ли такое нужно (иначе придется ставить вообще все руками).
Редактируем файл . venv/pyvenv.cfg, устанавливаем флаг в true
include-system-site-packages = trueПосле этого, venv берет вместо системных только те библиотеки, которые были в него установлены, а остальное берет из общесистемных.
Что в разы упрощает развертывание, в моем случае до 1 библиотеки всего :)
А самое интересное, что для скриптов активация среды больше не нужна от слова совсем.
Просто меняем первую строку стандартной программы, указатель интерпретатора:
#!/usr/bin/env python3На
#!.venv/bin/python3И все. Никаких проблем и мучений с башем, среда сама себя инициализирует, запустит и все сделает.
P. S. Синхронизация venv с машины разработчика на продакшен, путь к большим проблемам, если системы не идентичны полностью.
Даже разные линуксы, с одной версией питона, порождают совсем разные среды.
👍4🥴3
Маленький хак.
Если syslog из-за сбойного сервиса раздулся до десятков мегабайт, то после его остановки, можно получить новый лог принудительно.
И в нем уже смотреть как отлаживается сервис.
Если syslog из-за сбойного сервиса раздулся до десятков мегабайт, то после его остановки, можно получить новый лог принудительно.
И в нем уже смотреть как отлаживается сервис.
logrotate -f /etc/logrotate.confВ чате возник запрос на сигнал об окончании работы многочасовых скриптов.
Идея - сделать бота, который будет присылать уведомление в телеграм, владельцу скрипта. Для этого ему надо будет дернуть https запрос в конце и все.
Идея - сделать бота, который будет присылать уведомление в телеграм, владельцу скрипта. Для этого ему надо будет дернуть https запрос в конце и все.
Anonymous Poll
32%
Да, такое надо, буду пользоваться
14%
Нет, нинужон
54%
Мне пофиг, ответы посмотрю
В процессе создания бота уведомлений, выяснилось забавное.
Телега пытается пролезть по любым ссылкам, даже сгенерированным ботом для пользователей.
Что привело к ложным срабатываниям: клиент только получает ссылку на API, и сразу получает уведомление.
Я сначала удивился, потом посмотрел лог nginx, потом решил проблему.
Решение на скрине :)
Телега пытается пролезть по любым ссылкам, даже сгенерированным ботом для пользователей.
Что привело к ложным срабатываниям: клиент только получает ссылку на API, и сразу получает уведомление.
Я сначала удивился, потом посмотрел лог nginx, потом решил проблему.
Решение на скрине :)
😁5👍1🤡1
Представляю вам нового бота:
@this_is_the_end_notification_bot
Это то, что вчера придумали и голосовали.
Теперь любые события, происходящие с вашими программами/скриптами на серверах могут быть доставлены прямо в ваш телеграм или чат в телеграме, в котором эта информация нужна.
Причем, доставка всего за 1 секунду.
Тестируйте и пользуйтесь на здоровье.
P. S. Если закинете этот пост в чаты программистов, буду благодарен.
@this_is_the_end_notification_bot
Это то, что вчера придумали и голосовали.
Теперь любые события, происходящие с вашими программами/скриптами на серверах могут быть доставлены прямо в ваш телеграм или чат в телеграме, в котором эта информация нужна.
Причем, доставка всего за 1 секунду.
Тестируйте и пользуйтесь на здоровье.
P. S. Если закинете этот пост в чаты программистов, буду благодарен.
🔥11
К дискуссии в чате.
Хохлы придумали миллион оскорблений, но только одно я взял на вооружение себе.
Ибо оно мне нравится.
Лаптеногие!
И это обьясняет очень многое о русских вообще и о существовании до сих пор Украины в частности ;)
Хохлы придумали миллион оскорблений, но только одно я взял на вооружение себе.
Ибо оно мне нравится.
Лаптеногие!
И это обьясняет очень многое о русских вообще и о существовании до сих пор Украины в частности ;)
😁5👍1🔥1👏1🤡1
Тем временем, прибыль, не выручка https://ssleg.tech перевалила 500 тысяч рублей.
Мелочь, а приятно.
Мелочь, а приятно.
👍10🔥6
Когда я выбирал название канала, я хотел назвать его sleg в честь волнового наркотика Стругацких.
В книге которых мы и живем, хех. Они в 60х увидели вообще все про нас из 2010х.
Но у телеги есть ограничение - имя канала от 5 букв. Я удвоил первую s и забыл.
Недавно узнал, что ssleg это редкая латинская аббревиатура - supra scripti legionis. Вышеописанные легионы.
И теперь у меня нет выбора. Только сражаться до победы. Легионы не сдаются (почти) никогда.
В книге которых мы и живем, хех. Они в 60х увидели вообще все про нас из 2010х.
Но у телеги есть ограничение - имя канала от 5 букв. Я удвоил первую s и забыл.
Недавно узнал, что ssleg это редкая латинская аббревиатура - supra scripti legionis. Вышеописанные легионы.
И теперь у меня нет выбора. Только сражаться до победы. Легионы не сдаются (почти) никогда.
👍13🔥4
Я в циву не играл где-то с третьей.
И тут Яндекс-музыка притаскивает великолепное:
Civilization VI. Россия (атомная эра) на мотив "Калинка моя". А для недогадливых, с середины хор поет слова.
Ору чаечкой.
И тут Яндекс-музыка притаскивает великолепное:
Civilization VI. Россия (атомная эра) на мотив "Калинка моя". А для недогадливых, с середины хор поет слова.
Ору чаечкой.
👍1🔥1🥴1
Как отучить срать в syslog.
Некоторые сетевые сервисы считают, что каждый пакет надо скидывать в журнал системы, что в корне неверно.
Syslog это первое место, куда надо смотреть, если что-то на сервере упало. То есть файл должен быть небольшого размера и содержать действительно важную информацию.
Со временем у меня накопилось несколько рецептов для решения этой проблемы, ради которых пришлось копаться в документации.
UFW (файерволл):
Редактируем файл
После чего перезапустить службу логирования системы
Лог UFW будет жить в отдельном файле
UWSGI (сервер web приложений flask/django etc):
Приложение должно вести свои логи, если необходимо, а c uwsgi делаем так:
Редактируем app.ini, в секцию
добавляем
По необходимости, можно использовать еще два флага - логировать только http ответы 400х и 500х серий. Они работают независимо от того, включен общий лог или нет.
Gitea (это вообще ван лав💋):
По умолчанию, эти красавцы все события выдают в stdout, откуда оно падает в syslog.
Редактируем конфиг:
Вместо стандартной секции
Делаем свой файловый лог:
После редактирования не забудьте перезапустить:
Тут пояснения вроде ненужны, ротация лога раз в сутки, хранить 2 недели, архивы сжимать.
В доках Gitea ошибка в последнем параметре "уровень сжатия", они пишут, что он от -1 до -9, от чего gzip удивляется и выпадает в осадок. Правильно писать от 1 (минимум) до 9 (максимум сжатия).
В итоге такой расчистки конюшен, у меня syslog порядка сотен килобайт в сутки, легко и быстро читаем и не замусорен.
А все детали, если они необходимы, можно уточнить в других логах.
Некоторые сетевые сервисы считают, что каждый пакет надо скидывать в журнал системы, что в корне неверно.
Syslog это первое место, куда надо смотреть, если что-то на сервере упало. То есть файл должен быть небольшого размера и содержать действительно важную информацию.
Со временем у меня накопилось несколько рецептов для решения этой проблемы, ради которых пришлось копаться в документации.
UFW (файерволл):
Редактируем файл
/etc/rsyslog.d/20-ufw.conf, нужно раскомментировать последнюю строку #& stopПосле чего перезапустить службу логирования системы
systemctl restart rsyslogЛог UFW будет жить в отдельном файле
/var/log/ufw.logUWSGI (сервер web приложений flask/django etc):
Приложение должно вести свои логи, если необходимо, а c uwsgi делаем так:
Редактируем app.ini, в секцию
[uwsgi]добавляем
disable-logging = trueПо необходимости, можно использовать еще два флага - логировать только http ответы 400х и 500х серий. Они работают независимо от того, включен общий лог или нет.
log-4xx = true
log-5xx = trueGitea (это вообще ван лав💋):
По умолчанию, эти красавцы все события выдают в stdout, откуда оно падает в syslog.
Редактируем конфиг:
/etc/gitea/app.iniВместо стандартной секции
[log]
MODE = console
LEVEL = info
ROOT_PATH = /var/lib/gitea/logДелаем свой файловый лог:
[log]
MODE = file
LEVEL = info
ROOT_PATH = /var/lib/gitea/log
FILE_NAME = gitea.log
LOG_ROTATE = true
DAILY_ROTATE = true
MAX_DAYS = 14
COMPRESS = true
COMPRESSION_LEVEL = 9После редактирования не забудьте перезапустить:
systemctl restart giteaТут пояснения вроде ненужны, ротация лога раз в сутки, хранить 2 недели, архивы сжимать.
В доках Gitea ошибка в последнем параметре "уровень сжатия", они пишут, что он от -1 до -9, от чего gzip удивляется и выпадает в осадок. Правильно писать от 1 (минимум) до 9 (максимум сжатия).
В итоге такой расчистки конюшен, у меня syslog порядка сотен килобайт в сутки, легко и быстро читаем и не замусорен.
А все детали, если они необходимы, можно уточнить в других логах.
👍2🔥1👌1
Один очень скромный админ из @mikrotikclub (поэтому имя его неназываемо), рассказал мне, что видел в bot api параметр, прекращающий лазание телеги по всем доступным ссылкам.
Я углубился в документацию и проверил эффект. Реально работает, но флаг надо ставить в каждом сообщении со ссылкой.
Поведение телеграм по умолчанию изменить нельзя.
В telethon код выглядит так:
Я углубился в документацию и проверил эффект. Реально работает, но флаг надо ставить в каждом сообщении со ссылкой.
Поведение телеграм по умолчанию изменить нельзя.
В telethon код выглядит так:
result = await client.send_message(user_id, message, files, buttons, link_preview=False)Telegram
СЛЕГ! <Z> ️
В процессе создания бота уведомлений, выяснилось забавное.
Телега пытается пролезть по любым ссылкам, даже сгенерированным ботом для пользователей.
Что привело к ложным срабатываниям: клиент только получает ссылку на API, и сразу получает уведомление.
…
Телега пытается пролезть по любым ссылкам, даже сгенерированным ботом для пользователей.
Что привело к ложным срабатываниям: клиент только получает ссылку на API, и сразу получает уведомление.
…
👍5
Forwarded from Стихи и книги Дмитрия Мельникова (Dmitry Melnikoff)
Опять патриоты и либералы выясняют, кто из них более прав. Тема бесконечная.
Да это вообще не важно.
Россия идет своим историческим путем, а вы
висите на бортах и днище этого корабля ракушками.
Прав тот, кто воюет, строит, лечит, хлеб печет и так далее.
Вот они правы.
А вы просто балаболы, потому что у вас нет настощего дела в руках и все, что вы можете -
это трындеть в
соцсетях.
Объединитесь уже, помиритесь и сделайте для России что-нибудь полезное.
Руками. Я не говорю головой - ее у вас нет.
Для этого есть масса возможностей.
Приезжайте ко мне, я всем вам найду работу.
А, у вас лапки. Ну тогда спорьте дальше.
Прилепин, ты теперь слабомощный, будешь курам по полведра зерна носить.
Кормить буду хорошо, у меня собака и то каждый день мясо ест.
А то тебе скучно там в больнице, как я вижу.
Можешь Собчак взять с собой. Будет корову доить.
Ну, если корова захочет.
Да это вообще не важно.
Россия идет своим историческим путем, а вы
висите на бортах и днище этого корабля ракушками.
Прав тот, кто воюет, строит, лечит, хлеб печет и так далее.
Вот они правы.
А вы просто балаболы, потому что у вас нет настощего дела в руках и все, что вы можете -
это трындеть в
соцсетях.
Объединитесь уже, помиритесь и сделайте для России что-нибудь полезное.
Руками. Я не говорю головой - ее у вас нет.
Для этого есть масса возможностей.
Приезжайте ко мне, я всем вам найду работу.
А, у вас лапки. Ну тогда спорьте дальше.
Прилепин, ты теперь слабомощный, будешь курам по полведра зерна носить.
Кормить буду хорошо, у меня собака и то каждый день мясо ест.
А то тебе скучно там в больнице, как я вижу.
Можешь Собчак взять с собой. Будет корову доить.
Ну, если корова захочет.
🔥5🥱2
Forwarded from Стихи и книги Дмитрия Мельникова (Dmitry Melnikoff)
И такой Прилепин, прихрамывая, заходит в сарай. Погромыхивая полупустым ведром.
А там сидят два боевых петуха.
У меня были такие, там одни мышцы, тугая резина, дрались, как машины, боли не боялись вообще. Ничего не боялись, у меня два шрама остались от шпор на руках, пока я им головы скручивал.
Я их потом варил часа три, бесполезно, отдали алабаю.
Тот, понятно, схрумкал за здорово живешь. Ему все равно, он и оглоблю съест, если проголодается.
И тут такой впзр - здрасьти, можно я вам зерна насыплю.
Не, лучше в больнице сиди.
А там сидят два боевых петуха.
У меня были такие, там одни мышцы, тугая резина, дрались, как машины, боли не боялись вообще. Ничего не боялись, у меня два шрама остались от шпор на руках, пока я им головы скручивал.
Я их потом варил часа три, бесполезно, отдали алабаю.
Тот, понятно, схрумкал за здорово живешь. Ему все равно, он и оглоблю съест, если проголодается.
И тут такой впзр - здрасьти, можно я вам зерна насыплю.
Не, лучше в больнице сиди.
👏5🔥1
Чорт, 20 лет прошло, как я реально писал на плюсах.
И все равно, пишу
Рефлексы, наработанные в юности - сила.
И все равно, пишу
while i<len(array): и сразу пишу i++. Не думая вообще.Рефлексы, наработанные в юности - сила.
👍3