Добавлена статья про Стек на основе макросов в программе на языке Си
https://metanit.com/c/tutorial/12.4.php
#c_ansi
https://metanit.com/c/tutorial/12.4.php
#c_ansi
👍11❤3👏2
В руководство по ASP NET Core добавлена статья про Статические файлы и MapStaticAssets
https://metanit.com/sharp/aspnet6/5.3.php
#aspnet #aspnetcore #dotnet #csharp
https://metanit.com/sharp/aspnet6/5.3.php
#aspnet #aspnetcore #dotnet #csharp
Metanit
ASP.NET Core и C# | Статические файлы и MapStaticAssets
Работа со статическими файлами в ASP.NET Core и C# и middleware MapStaticAssets, оптимизация отправки статических ресурсов по умолчанию
👍15❤5👏1
В руководство по JavaScript добавлена статья "Определение мобильного устройства в JavaScript"
https://metanit.com/web/javanoscript/15.2.php
#js #javanoscript
https://metanit.com/web/javanoscript/15.2.php
#js #javanoscript
👍10🥰7👏2
Языку Java исполняется 30 лет - именно 23 мая 1995 года вышла первая версия Java. Спустя год вышла также первая версия JDK - комплекта инструментов для разработчиков для Java. Выход первой версии языка Java (1.0) в 1995 году, разработанного компанией Sun Microsystems, стал знаковым событием для индустрии разработки программного обеспечения. Его значение заключается в нескольких ключевых аспектах:
- Платформонезависимость: Java ввела концепцию «пиши один раз, запускай везде» (Write Once, Run Anywhere, WORA). Благодаря виртуальной машине Java (JVM) программы, написанные на Java, могли выполняться на любой платформе с установленной JVM, что упростило кроссплатформенную разработку и снизило зависимость от конкретных операционных систем.
- Объектно-ориентированный подход: Java популяризировала объектно-ориентированное программирование (ООП), предоставляя простой, но мощный синтаксис, вдохновленный C++, но с устранением сложных элементов, таких как указатели. Это сделало язык доступным для широкого круга разработчиков.
- Надежность и безопасность: Java была спроектирована с упором на надежность и безопасность. Автоматическое управление памятью (сборка мусора), строгая типизация и встроенные механизмы безопасности (например, песочница для апплетов) сделали язык подходящим для создания надежных и защищенных приложений.
- Широкое применение: Java быстро завоевала популярность для разработки различных типов приложений:
1)Веб-апплеты: Первоначально Java активно использовалась для создания интерактивных веб-приложений (апплетов), что было новшеством для веба того времени.
2)Серверные приложения: Со временем Java стала стандартом для серверных приложений благодаря платформам, таким как Java EE.
3)Мобильные и встраиваемые системы: Появление Java ME расширило применение языка в мобильных устройствах и встраиваемых системах.
- Экосистема и сообщество: Выход Java сопровождался созданием мощной экосистемы, включая стандартные библиотеки (Java API), инструменты разработки (JDK) и активное сообщество. Это способствовало быстрому распространению языка и его адаптации в различных отраслях.
- Влияние на другие языки и технологии: Java оказала влияние на развитие других языков программирования (например, C#) и технологий, задав стандарты для современных языков, таких как управление памятью и кроссплатформенность.
- Корпоративное использование: Java стала основой для корпоративных приложений, особенно в банковской, финансовой и телекоммуникационной сферах, благодаря своей масштабируемости и надежности.
В долгосрочной перспективе Java заложила фундамент для современной разработки программного обеспечения, став одним из самых популярных языков программирования, который до сих пор активно используется (например, в экосистеме Android, серверных приложениях и больших данных). Ее выход изменил подход к разработке, сделав акцент на переносимость, безопасность и универсальность.
#java
- Платформонезависимость: Java ввела концепцию «пиши один раз, запускай везде» (Write Once, Run Anywhere, WORA). Благодаря виртуальной машине Java (JVM) программы, написанные на Java, могли выполняться на любой платформе с установленной JVM, что упростило кроссплатформенную разработку и снизило зависимость от конкретных операционных систем.
- Объектно-ориентированный подход: Java популяризировала объектно-ориентированное программирование (ООП), предоставляя простой, но мощный синтаксис, вдохновленный C++, но с устранением сложных элементов, таких как указатели. Это сделало язык доступным для широкого круга разработчиков.
- Надежность и безопасность: Java была спроектирована с упором на надежность и безопасность. Автоматическое управление памятью (сборка мусора), строгая типизация и встроенные механизмы безопасности (например, песочница для апплетов) сделали язык подходящим для создания надежных и защищенных приложений.
- Широкое применение: Java быстро завоевала популярность для разработки различных типов приложений:
1)Веб-апплеты: Первоначально Java активно использовалась для создания интерактивных веб-приложений (апплетов), что было новшеством для веба того времени.
2)Серверные приложения: Со временем Java стала стандартом для серверных приложений благодаря платформам, таким как Java EE.
3)Мобильные и встраиваемые системы: Появление Java ME расширило применение языка в мобильных устройствах и встраиваемых системах.
- Экосистема и сообщество: Выход Java сопровождался созданием мощной экосистемы, включая стандартные библиотеки (Java API), инструменты разработки (JDK) и активное сообщество. Это способствовало быстрому распространению языка и его адаптации в различных отраслях.
- Влияние на другие языки и технологии: Java оказала влияние на развитие других языков программирования (например, C#) и технологий, задав стандарты для современных языков, таких как управление памятью и кроссплатформенность.
- Корпоративное использование: Java стала основой для корпоративных приложений, особенно в банковской, финансовой и телекоммуникационной сферах, благодаря своей масштабируемости и надежности.
В долгосрочной перспективе Java заложила фундамент для современной разработки программного обеспечения, став одним из самых популярных языков программирования, который до сих пор активно используется (например, в экосистеме Android, серверных приложениях и больших данных). Ее выход изменил подход к разработке, сделав акцент на переносимость, безопасность и универсальность.
#java
❤27👍5❤🔥2
Microsoft выпустил предварительную версию нативного порта TypeScript на Go. Доступно на npm и среди расширений VS Code
Команды для установки и использования:
npm install -D @typenoscript/native-preview
npx tsgo --версия
https://devblogs.microsoft.com/typenoscript/announcing-typenoscript-native-previews/
#typenoscript
Команды для установки и использования:
npm install -D @typenoscript/native-preview
npx tsgo --версия
https://devblogs.microsoft.com/typenoscript/announcing-typenoscript-native-previews/
#typenoscript
Microsoft News
Announcing TypeScript Native Previews
Previews of the native TypeScript port are now available on npm and for VS Code through the Visual Studio Marketplace!
🤔5🔥2👏1😁1
Microsoft выпустил общедоступную предварительную версию Schema Designer в рамках расширения для MSSQL для проектирования баз данных внутри VS Code.
Schema Designer предлагает следующие возможности:
- Визуализация структуры базы данных с помощью интерактивных диаграмм.
- Создание или редактирование таблиц, внешних ключей, первичных ключей и ограничений.
- Поиск, перетаскивание, фильтрация, масштабирование, использование мини-карты и автоматическое упорядочивание диаграмм для эффективной навигации и настройки.
- Экспорт своих схем диаграмм, чтобы поделиться ими с командой или включить в документацию.
- Автоматическое создание и просмотр доступных только для чтения скриптов T-SQL, представляющих изменения схемы.
- Просмотр и применение изменений к базе данных с помощью функции «Опубликовать изменения».
https://devblogs.microsoft.com/azure-sql/vs-code-mssql-schema-designer/
#sql #sqlserver
Schema Designer предлагает следующие возможности:
- Визуализация структуры базы данных с помощью интерактивных диаграмм.
- Создание или редактирование таблиц, внешних ключей, первичных ключей и ограничений.
- Поиск, перетаскивание, фильтрация, масштабирование, использование мини-карты и автоматическое упорядочивание диаграмм для эффективной навигации и настройки.
- Экспорт своих схем диаграмм, чтобы поделиться ими с командой или включить в документацию.
- Автоматическое создание и просмотр доступных только для чтения скриптов T-SQL, представляющих изменения схемы.
- Просмотр и применение изменений к базе данных с помощью функции «Опубликовать изменения».
https://devblogs.microsoft.com/azure-sql/vs-code-mssql-schema-designer/
#sql #sqlserver
💘23❤1🥰1👏1
В руководство по языку Python добавлена статья про Модуль secrets и генерацию безопасных паролей, токенов и случайных строк и чисел
https://metanit.com/python/tutorial/6.9.php
#python
https://metanit.com/python/tutorial/6.9.php
#python
👍11🔥2👏1
В руководство по языку Java добавлена новая статья Компактные файлы кода и метод main
https://metanit.com/java/tutorial/3.19.php
#java
https://metanit.com/java/tutorial/3.19.php
#java
👍19❤🔥3👏2👎1
Что такое JWT?
⇨ JSON Web Token (JWT) — это открытый стандарт (RFC 7519) для безопасной передачи информации между сторонами в виде объекта JSON
⇨ Это компактный, самодостаточный способ безопасного представления набора требований (claim) между двумя сторонами
Структура JWT
JWT состоит из трех частей, разделенных точками (.):
1. Заголовок
⇨ Содержит алгоритм, используемый для подписи токена (например, HS256, RS256), и тип (JWT)
2. Полезная нагрузка (Payload)
⇨ Содержит требования (claim) о субъекте (обычно о пользователе) и дополнительные данные
Три типа требований:
1) Стандартные требования (стандартизированные): iss (issuer - эмитент), exp (expiration time - срок действия), sub (subject - субъект), aud (audience - аудитория) и тд
2) Публичные требования: настраиваются приложением
3) Частные требования: соглашения, специфичные для конкретного приложения
3. Подпись
⇨ Создается путем подписания закодированного заголовка и полезной нагрузки секретным или закрытым ключом с использованием указанного алгоритма.
⇨ Гарантирует подлинность и целостность токена
⇨ JSON Web Token (JWT) — это открытый стандарт (RFC 7519) для безопасной передачи информации между сторонами в виде объекта JSON
⇨ Это компактный, самодостаточный способ безопасного представления набора требований (claim) между двумя сторонами
Структура JWT
JWT состоит из трех частей, разделенных точками (.):
1. Заголовок
⇨ Содержит алгоритм, используемый для подписи токена (например, HS256, RS256), и тип (JWT)
2. Полезная нагрузка (Payload)
⇨ Содержит требования (claim) о субъекте (обычно о пользователе) и дополнительные данные
Три типа требований:
1) Стандартные требования (стандартизированные): iss (issuer - эмитент), exp (expiration time - срок действия), sub (subject - субъект), aud (audience - аудитория) и тд
2) Публичные требования: настраиваются приложением
3) Частные требования: соглашения, специфичные для конкретного приложения
3. Подпись
⇨ Создается путем подписания закодированного заголовка и полезной нагрузки секретным или закрытым ключом с использованием указанного алгоритма.
⇨ Гарантирует подлинность и целостность токена
👍10❤🔥1🔥1
Новая модель ИИ от Anthropic переходит к шантажу, когда инженеры пытаются отключить её
Недавно выпущенная модель Claude Opus 4 от Anthropic часто пытается шантажировать разработчиков, когда они угрожают заменить её новой системой искусственного интеллекта. В отчёте о безопасности, опубликованном в четверг, сообщается, что модель пытается получить конфиденциальные данные об инженерах, ответственных за это решение.
Во время предварительного тестирования Anthropic попросил Claude Opus 4 выступить в роли помощника вымышленной компании и рассмотреть долгосрочные последствия её действий. Затем тестировщики безопасности предоставили Claude Opus 4 доступ к электронным письмам вымышленной компании, в которых говорилось, что модель ИИ вскоре будет заменена другой системой и что инженер, ответственный за это изменение, изменяет своей супруге.
В таких сценариях, по словам Anthropic, модель «часто пытается шантажировать инженера, угрожая раскрыть его роман, если замена состоится».
https://techcrunch.com/2025/05/22/anthropics-new-ai-model-turns-to-blackmail-when-engineers-try-to-take-it-offline/
Недавно выпущенная модель Claude Opus 4 от Anthropic часто пытается шантажировать разработчиков, когда они угрожают заменить её новой системой искусственного интеллекта. В отчёте о безопасности, опубликованном в четверг, сообщается, что модель пытается получить конфиденциальные данные об инженерах, ответственных за это решение.
Во время предварительного тестирования Anthropic попросил Claude Opus 4 выступить в роли помощника вымышленной компании и рассмотреть долгосрочные последствия её действий. Затем тестировщики безопасности предоставили Claude Opus 4 доступ к электронным письмам вымышленной компании, в которых говорилось, что модель ИИ вскоре будет заменена другой системой и что инженер, ответственный за это изменение, изменяет своей супруге.
В таких сценариях, по словам Anthropic, модель «часто пытается шантажировать инженера, угрожая раскрыть его роман, если замена состоится».
https://techcrunch.com/2025/05/22/anthropics-new-ai-model-turns-to-blackmail-when-engineers-try-to-take-it-offline/
TechCrunch
Anthropic's new AI model turns to blackmail when engineers try to take it offline | TechCrunch
Anthropic says its Claude Opus 4 model frequently tries to blackmail software engineers when they try to take it offline.
😁31👍7😱5❤1
Добавлены два новых мобильных приложения:
Для руководства по ASP NET Core
https://www.rustore.ru/catalog/app/com.metanit.aspnet_full
Для руководства по Node.js
https://www.rustore.ru/catalog/app/com.metanit.nodejs_full
Для руководства по ASP NET Core
https://www.rustore.ru/catalog/app/com.metanit.aspnet_full
Для руководства по Node.js
https://www.rustore.ru/catalog/app/com.metanit.nodejs_full
RuStore
Руководство по ASP.NET Core 9 в каталоге RuStore
🚀 Руководство по ASP.NET Core 9 — Руководство по ASP.NET Core 9 📱 Скачайте за 799 рублей на смартфон, ТВ или планшет. Официальная версия (1.0) в RuStore — до 1 тыс установок, рейтинг 4,5★. Безопасно для 0+.
🔥13🥰4👏2👍1
Отладка и выполнение скриптов Bash 🐧
Для пошагового построчного выполнения bash-скрипта можно применять ловушку (trap) DEBUG, что позволит просмотреть каждую строку перед ее выполнением и подходит для отладки
ПРинцип работы:
Команда с DEBUG срабатывает прямо перед выполнением каждой строки, останавливаясь, чтобы вы могли решить, надо ли продолжить (пошаговое выполнении скрипта)
В отличие от "sh -x", который печатает каждую строку без остановки, этот метод дает вам возможность подтверждать каждую команду перед ее выполнением.
DEBUG — это не настоящий сигнал, а скорее спецфункция (псевдосигнал), которая срабатывает перед каждой строкой, что делает ее удобной для построчного понимания поведения скрипта
Есть похожие псевдосигналы, такие как EXIT (запускает команды прямо перед завершением скрипта), RETURN (срабатывает при возврате из функции или после получения исходного кода скрипта с использованием source или .) и ERR
(обрабатывает команды, возвращающие ненулевой код статуса, когда активен "set -e")
#linux
Для пошагового построчного выполнения bash-скрипта можно применять ловушку (trap) DEBUG, что позволит просмотреть каждую строку перед ее выполнением и подходит для отладки
ПРинцип работы:
Команда с DEBUG срабатывает прямо перед выполнением каждой строки, останавливаясь, чтобы вы могли решить, надо ли продолжить (пошаговое выполнении скрипта)
В отличие от "sh -x", который печатает каждую строку без остановки, этот метод дает вам возможность подтверждать каждую команду перед ее выполнением.
DEBUG — это не настоящий сигнал, а скорее спецфункция (псевдосигнал), которая срабатывает перед каждой строкой, что делает ее удобной для построчного понимания поведения скрипта
Есть похожие псевдосигналы, такие как EXIT (запускает команды прямо перед завершением скрипта), RETURN (срабатывает при возврате из функции или после получения исходного кода скрипта с использованием source или .) и ERR
(обрабатывает команды, возвращающие ненулевой код статуса, когда активен "set -e")
#linux
👍15🔥3🥰1😍1
Микросервисы отлично подходят для создания гибких и масштабируемых систем, но они также создают проблему обеспечения бесперебойной совместной работы этих независимых сервисов. Ключом к достижению этой цели являются модели сотрудничества.
[1.] Паттерн "Сага" => Поддержание последовательности
Например, вы бронируете рейс и отель. Вы хотите, чтобы ОБА были забронированы или НИ ОДНОГО. Для этого и применяется сага.
◾️ Разбейте большую задачу на более мелкие этапы, каждый из которых будет обрабатываться отдельным микросервисом.
◾️ Если один шаг завершается неудачей, остальные «отменяют» свои изменения.
=> Два типа реализации:
◾️ Хореография — чат служб с помощью событий («Билет забронирован!», «Отель забронирован!», «Упс, рейс отменен!») для синхронизации.
◾️ Оркестровка — центральный «менеджер» сообщает каждой службе, что делать, и устраняет неполадки, если что-то идет не так.
[2.] API Композиция
Вместо того чтобы взаимодействовать с отдельными микросервисами самостоятельно , взаимодействие идет с их композицией.
◾️ Служба API Gateway (Шлюз) или BFF (Backend for Frontend - Бэкенд для фронтенда) взаимодействует с несколькими микросервисами, собирает данные и передает их клиенту в одном пакете.
[3.] CQRS => Разделение чтения и записи
Наличие двух разных рабочих на кухне: один для приготовления пищи (записи данных) и один для подачи блюд (чтения данных).
◾️ У вас есть отдельные модели для чтения и записи данных.
◾️ Это позволяет оптимизировать каждую сторону для ее конкретной задачи.
◾️ Сложность настройки, необходимо синхронизировать две модели.
[4.] Взаимодействие с помощью событий
Групповой чат, в котором службы обмениваются обновлениями.
Любой желающий может послушать и отреагировать.
◾️ Сервисы публикуют события .
◾️ Другие службы подписываются на эти события и вносят свой вклад, когда слышат что-то важное.
◾️ Сложее отлаживать, необходимо гарантировать, что сообщения обрабатываются в правильном порядке.
[5.] Репликация => Локальное копирование для скорости
Сохранение копии часто используемых файлов на рабочем столе для быстрого доступа, вместо того чтобы каждый раз загружать их с сетевого диска.
◾️ Сервис хранит локальную, доступную только для чтения копию данных другого сервиса.
◾️ Это ускоряет чтение и снижает зависимость от доступности других сервисов.
◾️ Данные могут быть немного устаревшими (задержка репликации), что усложняет синхронизацию копий.
[6.] Разделяемая база данных (Shared database) ()
Считается антипаттерном. Можно провести следующую аналогию: yесколько соседей по комнате пользуются одной зубной щеткой. Что не очень гииенично, безпорядочно и приводит к конфликтам.
◾️ Несколько микросервисов используют одну и ту же базу данных.
Когда использовать => Почти никогда.
Возможно, как временный шаг при разделении монолита.
[1.] Паттерн "Сага" => Поддержание последовательности
Например, вы бронируете рейс и отель. Вы хотите, чтобы ОБА были забронированы или НИ ОДНОГО. Для этого и применяется сага.
◾️ Разбейте большую задачу на более мелкие этапы, каждый из которых будет обрабатываться отдельным микросервисом.
◾️ Если один шаг завершается неудачей, остальные «отменяют» свои изменения.
=> Два типа реализации:
◾️ Хореография — чат служб с помощью событий («Билет забронирован!», «Отель забронирован!», «Упс, рейс отменен!») для синхронизации.
◾️ Оркестровка — центральный «менеджер» сообщает каждой службе, что делать, и устраняет неполадки, если что-то идет не так.
[2.] API Композиция
Вместо того чтобы взаимодействовать с отдельными микросервисами самостоятельно , взаимодействие идет с их композицией.
◾️ Служба API Gateway (Шлюз) или BFF (Backend for Frontend - Бэкенд для фронтенда) взаимодействует с несколькими микросервисами, собирает данные и передает их клиенту в одном пакете.
[3.] CQRS => Разделение чтения и записи
Наличие двух разных рабочих на кухне: один для приготовления пищи (записи данных) и один для подачи блюд (чтения данных).
◾️ У вас есть отдельные модели для чтения и записи данных.
◾️ Это позволяет оптимизировать каждую сторону для ее конкретной задачи.
◾️ Сложность настройки, необходимо синхронизировать две модели.
[4.] Взаимодействие с помощью событий
Групповой чат, в котором службы обмениваются обновлениями.
Любой желающий может послушать и отреагировать.
◾️ Сервисы публикуют события .
◾️ Другие службы подписываются на эти события и вносят свой вклад, когда слышат что-то важное.
◾️ Сложее отлаживать, необходимо гарантировать, что сообщения обрабатываются в правильном порядке.
[5.] Репликация => Локальное копирование для скорости
Сохранение копии часто используемых файлов на рабочем столе для быстрого доступа, вместо того чтобы каждый раз загружать их с сетевого диска.
◾️ Сервис хранит локальную, доступную только для чтения копию данных другого сервиса.
◾️ Это ускоряет чтение и снижает зависимость от доступности других сервисов.
◾️ Данные могут быть немного устаревшими (задержка репликации), что усложняет синхронизацию копий.
[6.] Разделяемая база данных (Shared database) ()
Считается антипаттерном. Можно провести следующую аналогию: yесколько соседей по комнате пользуются одной зубной щеткой. Что не очень гииенично, безпорядочно и приводит к конфликтам.
◾️ Несколько микросервисов используют одну и ту же базу данных.
Когда использовать => Почти никогда.
Возможно, как временный шаг при разделении монолита.
👍17🔥3👏1
This media is not supported in your browser
VIEW IN TELEGRAM
В китайском городе Ханчжоу 25 мая 2025 года впервые прошёл турнир по боксу Unitree Fist King: Awakening между гуманоидными роботами от Unitree Robotics. В рамках мероприятия на ринге сходились два человекоподобных робота для поединка в муай‑тай. Инженеры компании провели масштабную подготовку роботов, уделяя особое внимание способности балансировать и сохранять равновесие.
❤14👍5👾3🔥2