METANIT.COM
6.24K subscribers
1.79K photos
86 videos
10 files
1.26K links
Канал о программировании и разработке сайта metanit.com
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Cобытийная архитектура (EDA)

Значительная часть задач, которые приходится выполнять современным системам, связана с реакцией на изменения состояния. Например, добавление товара в корзину, отметка «Нравится» под публикацией и оплата счета — все это изменения состояния, которые запускают набор задач в соответствующих системах.
Это требование проложило путь популярному подходу к архитектуре системы, известному как событийная архитектура (EDA).

Архитектура, управляемая событиями, состоит из четырех основных компонентов:

1) События
Это существенные изменения состояния. Например, регистрация пользователя на пробную версию может быть событием в продукте SaaS. Они обычно содержат информацию об изменении состояния.
2) Производители
Генерируют событие - изменения состояния системы. Это различные источники - системные процессы, внешние триггеры и т.д.
3) Потребители
Подписываются на события и выполняют их при возникновении событий
4) Каналы
Облегчают передачу событий между производителями и потребителями
👍7🥰2👏1
Наиболее распространенные API-протоколы, применяемые в приложениях
2
Управление структурой DOM на веб-странице с помощью JavaScript #javascript
👍6
Refactoring databases. Expand_Contract Pattern.jpeg
369.5 KB
Рефакторинг базы данных и "Expand/Contract ". Паттерн "Expand/Contract" обеспечивает плавную миграцию БД, позволяя адаптироваться, ничего не ломая

Процесс из 2 этапов:
• Расширение: внедрение новой структуры с сохранением старой
• Контракт: Удаление старой структуры, когда все системы начнут использовать новую

При переходе одновременно существуют как старая и новая версии.

Например, надо разделить столбец FullName на FirstName и LastName. При переходе:
• Добавляются новые столбцы FirstName и LastName, а существующий FullName сохраняется
• Перенос существующих данных с разделением значения FullName на FirstName и LastName для всех строк

Затем применяется триггер для гарантии совместимости:
• Если старая система вставляет/обновляет FullName, триггер обновляет FirstName и LastName
• Если новая система вставляет/обновляет FirstName и LastName, триггер обновляет FullName

Когда все системы начнут использовать столбцы FirstName и LastName:
• Удалите триггер
• Удалите старый столбец FullName
👍6
Генеральный директор Nvidia Дженсен Хуанг считает, что в будущем IT-индустрия станет «отделом кадров для ИИ-агентов». Об этом он рассказал во время презентации, которая прошла в рамках выставки CES 2025 в Лас-Вегасе.
Хуанг считает, что компании будут «нанимать» на работу ИИ-агентов, которые будут трудиться вместе с людьми. При этом нейросетям будут доверять всю работу от написания кода до решения проблем с клиентами. При этом на разработчиков ляжет задача управления и планирования задач: люди будут ставить задачи, следить за ходом выполнения и вносить правки.
При этом Хуанг уверен, что для этого сотрудникам IT-компаний надо будет освоить специальные навыки. Например, научиться формировать запросы и понимать, как нейросети «думают». Более успешными будут компании, которые первые эффективно внедрят нейросети в рабочий процесс.
https://fortune.com/2025/01/09/nvidia-ceo-jensen-huangt-take-over-hr-ai-agents/
🤡25🫡3👏2🤔2
Шпаргалка по команде ip в Linux #linux
👍4
Бывший сотрудник Microsoft под ником Barnacules Nerdgasm сообщил, что пиратство Windows 11 американскую компанию особо не волнует, так как сами пользователи и есть продукт.
«Microsoft просто не волнует, используете ли вы Windows 11 без надлежащей лицензии, потому что „вы и есть продукт“», — пояснил Barnacules Nerdgasm.
«Знаете ли вы, что можно активировать Windows 11 с помощью стороннего сервера активации в Интернете, описанного в десятках проектов GitHub, которые Microsoft намеренно не пытается остановить, потому что в конечном итоге в компании хотят, чтобы вы использовали Windows 11», — добавил Barnacules Nerdgasm.
«В Microsoft даже опубликовали ключи для многократной установки, которые можно использовать для активации через KMS. Черт, вы даже можете развернуть свой собственный сервер KMS и активировать свои собственные установки. Microsoft действительно хочет, чтобы вы использовали Windows 10/11, независимо от того, как вы это делаете!», — считает Barnacules Nerdgasm.
«Я также сообщал о десятках таких проектов GitHub в Microsoft и GitHub, и они не отвечают и не удаляют их, хотя я уже успешно удалял другие проекты в прошлом. Вот почему Microsoft в основном игнорирует продавцов ключей на сером рынке, даже когда пользователи сообщают о них», — заявил Barnacules Nerdgasm.
https://www.neowin.net/news/former-microsoft-employee-pedals-windows-11-piracy-says-microsoft-does-not-care/
😁21😐3👏2👍1
Тетрис в PDF в браузере
Разработчик Томас Ринсма представил проект pdftris — тетрис в PDF в браузере. Код написан на Python и опубликован на GitHub.
Как пояснил разработчик: «Я понял, что движки PDF современных настольных браузеров (PDFium и PDF.js) поддерживают JavaScript с достаточным количеством примитивов ввода‑вывода для создания простой игры вроде Tetris. Было немного сложно найти объединение функций, которые работают в обоих движках, но в итоге оказалось, что отображение/скрытие „полей“ аннотаций хорошо работает для создания монохромных пикселей, а ввод с клавиатуры можно осуществить, набрав текст в поле ввода. В целом это довольно криво, но это хорошее напоминание о том, насколько универсальным может быть скриптование PDF. Связанный PDF полностью в ASCII, поэтому вы можете просто открыть его в текстовом редакторе или посмотреть исходный код здесь: https://github.com/ThomasRinsma/pdftris/blob/main/gengrid.py».
Код: https://github.com/ThomasRinsma/pdftris
Демо: https://th0mas.nl/downloads/pdftris.pdf
👍13😁5🤯51👎1🥴1
Масштабируемость архитектуры — это способность системы справляться с возросшей рабочей нагрузкой, многократно применяя экономически эффективную стратегию.

Основные препятствия для масштабируемости:
1) Централизованные компоненты: могут стать единой точкой отказа в работе
2) Компоненты с высокой задержкой: они выполняют длительные по времени операции
3) Сильная связанность: затрудняет масштабирование компонентов

Поэтому для построения масштабируемой системы лучше следовать принципам отсутствия состояния, слабой связанности и асинхронной обработки.

Распространенные методы улучшения масштабируемости:
- Балансировка нагрузки: распределяйте запросы по нескольким серверам, чтобы не допустить превращения одного сервера в узкое место
- Кэширование: сохранение в памяти наиболее часто запрашиваемой информации
- Обработка на основе событий: применяйте асинхронность для обработки длительных задач
- Шардинг: разделение большого набора данных на более мелкие подмножества - шарды, для горизонтальной масштабируемости
1
C/C++ переживут всех своих "убийц"
🔥53💯7👍41
Шпаргалка по команде sed в Linux #linux
3🔥1🥰1
Системные журналы Linux из каталога /var/log вкратце:

syslog: основной файл журнала, в который поступают многие другие журналы, содержит сообщения от различных системных служб и приложений

auth.log: содержит сообщения аутентификации (успешные и неудачные попытки входа в систему, изменения паролей, события аутентификации пользователей)

kern.log: содержит сообщения, связанные с ядром (ошибки оборудования, загрузка модулей и другие действия ядра)

messages: содержит системные сообщения, как запуск системы, завершения работы и общие системные события

dmesg: содержит сообщения кольцевого буфера ядра, обеспечивая просмотр в реальном времени событий, связанных с ядром, и обнаружение оборудования во время загрузки системы

cron: содержит сообщения, связанные с заданиями cron и запланированными задачами (время их выполнения и любые ошибки, возникшие во время выполнения)

secure: содержит сообщения, связанные с безопасностью (попытки аутентификации, повышение привилегий и другие события, связанные с безопасностью)
🔥10🥰1👏1
Краткая шпаргалка по основам Docker #docker
🔥61👏1
HTTP vs HTTP/2 vs HTTP/3 #http
👍8🔥3🥰1