🌦 Linecast — погода, карты, радар, приливы, Солнце и Луна прямо в терминале
Open-source CLI превращает публичные данные в шесть интерактивных приложений:
-
-
-
-
-
-
Работает на macOS, Linux и Windows. Написан на Python, почти без зависимостей, не требует аккаунта или API-ключей и подстраивает цвета под тему терминала.
Можно даже запустить без установки:
GitHub:
https://github.com/ashuttl/linecast
Open-source CLI превращает публичные данные в шесть интерактивных приложений:
-
linecast weather — погода, почасовой прогноз, AQI и предупреждения-
linecast sunshine — восход, закат и длина дня-
linecast moon — фазы Луны, восход/заход и календарь-
linecast tides — график приливов и отливов-
linecast radar — анимированный радар и спутниковые данные-
linecast maps — карты, рельеф, поиск мест и маршрутыРаботает на macOS, Linux и Windows. Написан на Python, почти без зависимостей, не требует аккаунта или API-ключей и подстраивает цвета под тему терминала.
Можно даже запустить без установки:
uvx linecast weatherGitHub:
https://github.com/ashuttl/linecast
❤4🔥2👍1💋1
🐍 Как правильно использовать
Если несколько процессов одновременно пишут в общий ресурс — файл, stdout, shared memory — вывод или данные могут перемешиваться.
Для этого есть
Lock гарантирует, что критическую секцию в конкретный момент выполняет только один процесс.
Вместо ручных:
lock.acquire() → try/finally → lock.release()
обычно удобнее использовать:
with lock:
Особенно полезно при работе с файлами, логами и общими структурами данных между процессами.
Lock в Python multiprocessingЕсли несколько процессов одновременно пишут в общий ресурс — файл, stdout, shared memory — вывод или данные могут перемешиваться.
Для этого есть
multiprocessing.Lock:
from multiprocessing import Process, Lock
def printer(item, lock):
with lock:
print(item)
if __name__ == "__main__":
lock = Lock()
for item in ["tango", "foxtrot", 10]:
Process(target=printer, args=(item, lock)).start()
Lock гарантирует, что критическую секцию в конкретный момент выполняет только один процесс.
Вместо ручных:
lock.acquire() → try/finally → lock.release()
обычно удобнее использовать:
with lock:
Особенно полезно при работе с файлами, логами и общими структурами данных между процессами.
🔥5❤2👍2
🔥 Хочешь расти в IT быстрее остальных? Перестань учиться в одиночку
Можно годами смотреть курсы, читать документацию и всё равно топтаться на месте.
А можно попасть в правильное окружение, где каждый день обсуждают новые инструменты, вакансии, реальные кейсы, ошибки и то, что уже завтра станет стандартом.
Я собрал папки и каналы по разным направлениям IT, чтобы ты быстрее находил нужных людей, идеи и полезный контент - без бесконечного поиска.
AI: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Хакинг: t.me/linuxkalii
DevOps: t.me/DevOPSitsec
Docker: https://t.me/+90Z5TAyfuNU5YmRi
Golang: t.me/Golang_google
Rust: t.me/rust_code
C++: t.me/cpluspluc
C#: t.me/csharp_ci
Java: t.me/javatg
JavaScript: t.me/javascriptv
React: t.me/react_tg
Frontend: t.me/front
PHP: t.me/phpshka
Android: t.me/android_its
Мобильная разработка: t.me/mobdevelop
Базы данных: t.me/sqlhub
Data Science: t.me/data_analysis_ml
Big Data: t.me/bigdatai
Математика: t.me/data_math
Физика: t.me/fizmat
Kubernetes: t.me/kubernetc
GameDev: https://t.me/gamedev
Haskell: t.me/haskell_tg
Собеседования и карьера:
DS собеседования: t.me/machinelearning_interview
Python собеседования: t.me/python_job_interview
Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy
Папка Frontend: https://t.me/addlist/mzMMG3RPZhY2M2Iy
Полезное сверху:
ИТ-мемы: t.me/memes_prog
Английский для программистов: t.me/english_forprogrammers
ИИ и технологии: t.me/vistehno
954 ГБ open-source курсов: https://t.me/+rKBQEMccAA01MTcy
ИТ-книги бесплатно: https://t.me/addlist/BkskQciUW_FhNjEy
Max Ai: https://max.ru/ai_machinelearning_big_data
Max python: https://max.ru/pythonl
ТЕХНО: https://max.ru/vistehno
Max Go: https://max.ru/Golang_google
Max Linux: https://max.ru/linuxkalii
Devops: https://max.ru/DevOPSitsec
C#: https://max.ru/csharp_ci
C++: https://max.ru/cpluspluc
SQL: https://max.ru/sqlhub
Java: https://max.ru/javatg
Подпишись и сохрани, здесь регулярно появляются новые подборки, инструменты и материалы, которые реально помогают расти быстрее.
Можно годами смотреть курсы, читать документацию и всё равно топтаться на месте.
А можно попасть в правильное окружение, где каждый день обсуждают новые инструменты, вакансии, реальные кейсы, ошибки и то, что уже завтра станет стандартом.
Я собрал папки и каналы по разным направлениям IT, чтобы ты быстрее находил нужных людей, идеи и полезный контент - без бесконечного поиска.
AI: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Хакинг: t.me/linuxkalii
DevOps: t.me/DevOPSitsec
Docker: https://t.me/+90Z5TAyfuNU5YmRi
Golang: t.me/Golang_google
Rust: t.me/rust_code
C++: t.me/cpluspluc
C#: t.me/csharp_ci
Java: t.me/javatg
JavaScript: t.me/javascriptv
React: t.me/react_tg
Frontend: t.me/front
PHP: t.me/phpshka
Android: t.me/android_its
Мобильная разработка: t.me/mobdevelop
Базы данных: t.me/sqlhub
Data Science: t.me/data_analysis_ml
Big Data: t.me/bigdatai
Математика: t.me/data_math
Физика: t.me/fizmat
Kubernetes: t.me/kubernetc
GameDev: https://t.me/gamedev
Haskell: t.me/haskell_tg
Собеседования и карьера:
DS собеседования: t.me/machinelearning_interview
Python собеседования: t.me/python_job_interview
Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy
Папка Frontend: https://t.me/addlist/mzMMG3RPZhY2M2Iy
Полезное сверху:
ИТ-мемы: t.me/memes_prog
Английский для программистов: t.me/english_forprogrammers
ИИ и технологии: t.me/vistehno
954 ГБ open-source курсов: https://t.me/+rKBQEMccAA01MTcy
ИТ-книги бесплатно: https://t.me/addlist/BkskQciUW_FhNjEy
Max Ai: https://max.ru/ai_machinelearning_big_data
Max python: https://max.ru/pythonl
ТЕХНО: https://max.ru/vistehno
Max Go: https://max.ru/Golang_google
Max Linux: https://max.ru/linuxkalii
Devops: https://max.ru/DevOPSitsec
C#: https://max.ru/csharp_ci
C++: https://max.ru/cpluspluc
SQL: https://max.ru/sqlhub
Java: https://max.ru/javatg
Подпишись и сохрани, здесь регулярно появляются новые подборки, инструменты и материалы, которые реально помогают расти быстрее.
❤3👍2🔥2
🐍 Python:
На первый взгляд разницы почти нет. Но она есть.
❌
✅
Пример:
Поэтому в большинстве случаев лучше использовать:
isinstance(x, str)
Так код получается гибче и лучше работает с наследованием.
#Python #Programming #BestPractices
type(x) == str или isinstance(x, str)?На первый взгляд разницы почти нет. Но она есть.
❌
type(x) == str проверяет только точное совпадение типа.✅
isinstance(x, str) учитывает ещё и наследников str.Пример:
class MyString(str):
pass
x = MyString("hello")
print(type(x) == str) # False
print(isinstance(x, str)) # True
Поэтому в большинстве случаев лучше использовать:
isinstance(x, str)
Так код получается гибче и лучше работает с наследованием.
#Python #Programming #BestPractices
👍8😱2❤1🔥1
🔥 Один из лучших обучающих курсов на StepiK по SQL
SQL можно знать годами и всё равно теряться, когда запрос внезапно начинает тормозить в проде.
Этот курс про уровень, где ты не просто пишешь SELECT, а понимаешь, что происходит внутри MySQL, почему запрос работает медленно и как ускорить его без новых проблем. Здесь разбираются EXPLAIN, индексы, CTE, оконные функции, транзакции, аналитические паттерны, legacy SQL и работа с AI-ассистентами.
Каждый урок - с практикой и реальными SQL-задачами на MySQL 8 с автопроверкой.
После курса ты сможешь увереннее разбирать чужой код, находить узкие места и предлагать решения, которые действительно работают.
Для подписчиков скидка - 49% в течение 2 суток: https://stepik.org/a/298827/
SQL можно знать годами и всё равно теряться, когда запрос внезапно начинает тормозить в проде.
Этот курс про уровень, где ты не просто пишешь SELECT, а понимаешь, что происходит внутри MySQL, почему запрос работает медленно и как ускорить его без новых проблем. Здесь разбираются EXPLAIN, индексы, CTE, оконные функции, транзакции, аналитические паттерны, legacy SQL и работа с AI-ассистентами.
Каждый урок - с практикой и реальными SQL-задачами на MySQL 8 с автопроверкой.
После курса ты сможешь увереннее разбирать чужой код, находить узкие места и предлагать решения, которые действительно работают.
Для подписчиков скидка - 49% в течение 2 суток: https://stepik.org/a/298827/
❤2👍1🔥1
🐍 Python: как найти изменённое поле во вложенном словаре
Сравнение
Результат:
Библиотека находит изменения значений и типов, добавленные и удалённые элементы. Работает со вложенными словарями, списками и другими объектами.
Полезно для сравнения ответов API, конфигураций и результатов обработки данных. Можно исключать отдельные поля через
Установка:
Документация - https://zepworks.com/deepdiff/current/
Сравнение
before == after покажет, равны ли объекты. DeepDiff покажет, где именно они отличаются, включая старое и новое значения.
from deepdiff import DeepDiff
before = {"user": {"name": "Egor", "level": 3}}
after = {"user": {"name": "Egor", "level": 4}}
print(DeepDiff(before, after))
Результат:
{
"values_changed": {
"root['user']['level']": {
"old_value": 3,
"new_value": 4
}
}
}
Библиотека находит изменения значений и типов, добавленные и удалённые элементы. Работает со вложенными словарями, списками и другими объектами.
Полезно для сравнения ответов API, конфигураций и результатов обработки данных. Можно исключать отдельные поля через
exclude_paths и игнорировать порядок элементов через ignore_order=True.Установка:
pip install deepdiffДокументация - https://zepworks.com/deepdiff/current/
👍7
📚 Бесплатная книга по математике для Computer Science и Machine Learning - более 2200 страниц
Жан Галлье и Джоселин Куэйнтанс собрали в одном учебнике алгебру, топологию, дифференциальное исчисление и теорию оптимизации.
Материал для тех, кто хочет глубже разобраться в математической основе алгоритмов и машинного обучения. Книга на английском, полная рукопись доступна бесплатно в PDF.
https://www.cis.upenn.edu/~jean/gbooks/geomath.html
Жан Галлье и Джоселин Куэйнтанс собрали в одном учебнике алгебру, топологию, дифференциальное исчисление и теорию оптимизации.
Материал для тех, кто хочет глубже разобраться в математической основе алгоритмов и машинного обучения. Книга на английском, полная рукопись доступна бесплатно в PDF.
https://www.cis.upenn.edu/~jean/gbooks/geomath.html
👍2
Forwarded from Machinelearning
This media is not supported in your browser
VIEW IN TELEGRAM
Во второе поколение семейства вошли две модели - Arrow 2 и флагманская Arrow 2 Telos.
Обновление принесло скорость генерации, улучшенную геометрию и композицию. В готовом файле стало меньше опорных точек, меньше лишних узлов и перекрывающихся контуров, а отступы и выравнивание элементов держатся без дополнительных инструкций в промптах.
Telos добавляет доработку возможностями топовых языковых моделей.
QuiverAI советует брать Arrow 2, когда важны скорость и цена за одно изображение, а Telos - под сложные брифы.
Разделения моделей по тарифам в описании планов нет. Предлагаются подписки Go (8 долларов в месяц), Basic (20), Pro (40), плюс корпоративный план по запросу.
Для Go есть 14-дневный пробный доступ с привязкой карты. В тарифы входит недельная квота, которая обнуляется по понедельникам и не переносится, перерасход списывается с баланса.
API тарифицируется отдельно и тоже требует предоплаты.
@ai_machinelearning_big_data
#news #ai #ml
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Открытый инструмент для домашней лаборатории, офиса или нескольких филиалов. Собирает сведения об устройствах в одном веб-интерфейсе и помогает заметить неизвестное оборудование.
Что умеет:
— Обнаруживать устройства через ARP-сканирование, DHCP, Pi-hole, UniFi и SNMP.
— Отслеживать подключения, отключения и изменения IP-адресов.
— Отправлять уведомления в Telegram через Apprise, а также в ntfy, Pushover и другие сервисы.
— Объединять данные из разных VLAN и удалённых сетей через распределённые узлы Sync Nodes.
— Передавать события в Home Assistant, запускать автоматизации через вебхуки и экспортировать метрики в Prometheus.
Разворачивается на своём сервере, в том числе через Docker. По умолчанию данные хранятся локально; внешняя передача появляется при настройке уведомлений и интеграций.
https://github.com/netalertx/NetAlertX
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤3
Как правильно получить случайное число в Python
Если нужен диапазон от 1 до 100 включительно, используйте:
Можно импортировать функцию напрямую:
Второй вариант просто короче, но не делает код «профессиональнее».
Для паролей, токенов и других задач безопасности используйте
Если нужен диапазон от 1 до 100 включительно, используйте:
import random
x = random.randint(1, 100)
Можно импортировать функцию напрямую:
from random import randint
x = randint(1, 100)
Второй вариант просто короче, но не делает код «профессиональнее».
int(random.random() * 100) возвращает числа от 0 до 99, поэтому пример на изображении даёт другой диапазон.Для паролей, токенов и других задач безопасности используйте
secrets:
import secrets
x = secrets.randbelow(100) + 1
👍5❤2😁1