METANIT.COM – Telegram
METANIT.COM
5.86K subscribers
1.67K photos
81 videos
9 files
1.03K links
Канал о программировании и разработке сайта metanit.com
Download Telegram
Обновление Windows 11 уничтожает накопители SSD на аппаратном уровне

Сообщается, что последнее обновление Windows 11 (KB5063878 ) приводит к тому, что SSD-накопители перестают работать после записи большого объёма данных, и, по всей видимости, это затронуло несколько накопителей.

В подробном исследовании выяснилось, что после обновления безопасности KB5063878 для Windows 11, вышедшего несколько дней назад, накопители, как сообщается, выходят из строя при одновременной записи на них больших файлов. Пользователь сам заметил проблему, когда обновлял Cyberpunk 2077 с помощью нового обновления безопасности.

Важно отметить, что эти данные были получены в результате внутреннего тестирования и бенчмаркинга, и ни производители SSD, ни Microsoft не подтвердили наличие проблемы с SSD, поскольку она появилась недавно, в связи с последними обновлениями безопасности.

Утверждается, что проблемы с SSD могут возникнуть при непрерывной записи около 50 ГБ данных, и аналогичные проблемы наблюдаются и с жёсткими дисками, поэтому проблема касается не только одного накопителя.
После длительной записи данных ОС не распознаёт SSD, и при перезагрузке компьютера раздел диска становится недоступным. Уязвимые SSD основаны практически на всех основных контроллерах, таких как SMI, Innogrit, Samsung, Phison и WD.

Ниже перечислены SSD-накопители, которые, как сообщалось, столкнулись с этой проблемой после установки последних обновлений безопасности:

Corsair Force MP600
SSD-накопитель Phison PS5012-E12 с контроллером
KIOXIA EXCERIA PLUS G4
Fikwot FN955
SSD с контроллером InnoGrit
SSD Maxio
SSD KIOXIA M.2
SSD SanDisk Extreme PRO M.2 NVMe 3D SSD

https://wccftech.com/windows-11-latest-update-is-reportedly-causing-widespread-ssd-failures/
😁16🤡10👏7🤯6🔥4🤔31🤩1
Добавил мобильную версию руководства по языку SQL и работе с базами данных на примере SQL Server
https://www.rustore.ru/catalog/app/com.metanit.sql_tutorial
#sql #database
🔥16🤮32🥰1👏1
8 ошибок в командах Linux, которые постоянно допускают разработчики

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

Забывание этого приводит к ошибкам «файл не найден» и путанице.

Пример:
cd My Documents 

Правильно будет:
cd 'My Documents' 
или
cd My\ Documents


2. Чувствительность к регистру
Linux чувствителен к регистру символов.

Файл 'myfile.txt' отличается от 'MyFile.txt'.

Автодополнение (tab) может помочь избежать ошибок, но главное — внимательность.

3. Скрытые файлы
Файлы и каталоги, начинающиеся с точки (.), по умолчанию скрыты.

Используйте команду 'ls -a', чтобы увидеть их. Будьте осторожны при работе с ними — они могут содержать важные настройки.

4. rm -rf
Рекурсивное принудительное удаление.

Хотя эта команда необходима для очистки, опечатка при использовании в неправильном каталоге может привести к катастрофическим последствиям.

Всегда дважды проверяйте целевые объекты перед выполнением.

5. Перенаправление вывода
Символ '>' перезаписывает существующий файл.
Символ '>>' добавляет данные в конец файла.

Использование '>' вместо '>>' может привести к потере данных.

Для предотвращения случайного перезаписи используйте режим 'noclobber' (команда 'set -o noclobber').

6. Команды cp и mv без флага -i
Эти команды молча перезаписывают существующие файлы.

Используйте флаг '-i' для интерактивного запроса подтверждения или '-n', чтобы никогда не перезаписывать файлы.

7. chmod и восьмеричные права доступа
Помните, что 'chmod 755' отличается от 'chmod +755'.

Первая команда устанавливает абсолютные права, вторая — модифицирует существующие.

Знайте значения восьмеричных прав доступа!

8. Фоновые задания и nohup
Фоновые задания (с использованием '&') завершаются при завершении сеанса оболочки.

Для длительных процессов, которые должны работать постоянно, используйте 'nohup' или инструменты управления заданиями, такие как 'screen' или 'tmux'.

#linux
19👍5👏2😁2🤔1
Исследователи Check Point обнаружили, вероятно, первую в истории публично раскрытую уязвимость безопасности в компоненте ядра Windows на основе Rust — фундаментальном слое операционной системы Microsoft. Эта уязвимость может привести к полному сбою системы, вызывая принудительную перезагрузку и мгновенное отключение пользователей от сети.

Rust широко известен своей способностью предотвращать ошибки памяти, которые давно представляют угрозу безопасности программного обеспечения. Его внедрение в Windows было направлено на повышение безопасности системы. В данном случае уязвимость возникла из-за того, что Rust обнаружил базовую проблему, но вместо того, чтобы корректно устранить её, спровоцировал сбой в работе всей системы.

Это в очередной раз подчеркивает, что Rust - не панацея, как, возможно, думают некоторые менеджеры в Microsoft, агрессивно продвигающие внедрение Rust

https://blog.checkpoint.com/research/microsoft-vulnerabilities-exposed-by-check-point-research/
#rust
👍10🥱4🤨4😁3
This media is not supported in your browser
VIEW IN TELEGRAM
Дискретное преобразование Фурье наглядно
🤔20👍5🤓42
В MIT провели исследование пользы ИИ для бизнеса. Оказалось, что нейросети действительно помогают компаниям зарабатывать больше, но всего-навсего в 5% случаев. Остальным 95% внедрение ИИ не принесло ощутимого роста финансов, а вот вложиться в его интеграцию компаниям все же пришлось.

Исследование основывается на опросе, в котором участвовали 300 компаний, внедривших искусственный интеллект. Авторы также опросили 150 руководителей таких фирм и 350 их сотрудников.

Как выяснилось, только 5% программ по внедрению ИИ обернулись для предприятий быстрым ростом выручки. Нейросети принесли им миллионы долларов выручки, но это, как показало исследование, лишь исключение, а не правило. Для 95% компаний внедрение ИИ никак не повлияло на финансовые результаты, ни в большую, ни в меньшую сторону. Если не считать денег, потраченных на это внедрение.

https://www.cnews.ru/news/top/2025-08-19_ves_mir_sel_v_luzhunejroseti
🤷‍♂15👍5🤮2
В новую версию C# (C# 14) добавят возможность присвоения с проверкой на null (ранее было доступно только получение) с использование операторов ?. и ?[]
❤‍🔥48🔥13👍10🤔5😁4👎3😱3💩2
Microsoft напомнила пользователям о скором окончании поддержки Windows 10. Уже через два месяца, 14 октября 2025 года, компания прекратит поддержку всех версий Windows 10 версии 22H2 — Home, Pro, Enterprise, Education и IoT Enterprise. В этот же день закончится расширенная поддержка Windows 10 2015 LTSB и Windows 10 IoT Enterprise LTSB 2015. И Microsoft настоятельно рекомендует всем пользователям обновить свои компьютеры до Windows 11.

Что это значит для пользователей? После этой даты Microsoft больше не будет выпускать обновления безопасности, исправления ошибок и не будет оказывать техническую поддержку системы.
И с одной стороны, устройства на Windows 10 станут уязвимее для новых киберугроз, а стабильность работы системы может нарушиться.
С другой стороны, пользователи смогут вдохнуть спокойно, посколько не будет больше обновлений, после которых не знаешь, будет ли система работать и что в этот раз перестанет работать.

В конце концов, как говорится, для пользователя Windows не так страшны вирусы, как обновления системы.

https://learn.microsoft.com/en-us/windows/release-health/windows-message-center#3632
26😁18👎8💯3😭2🫡2💩1
This media is not supported in your browser
VIEW IN TELEGRAM
"Concurrency" (конкурентность) и "Parallelism" (параллелизм)
(описание в следующем посте)
🔥182👏2
"Concurrency" (конкурентность) и "Parallelism" (параллелизм)
(описание к предыдущему посту)

Эта два понятия часто путают, но конкурентность не является параллелизмом.

1. Конкуренция (Concurrency):
- Есть один процессор (например, CPU Core 1), который переключается между задачами (например, Task 1 и Task 2) с помощью контекстных переключений (context switches).
- Задачи выполняются поочередно, но создают иллюзию одновременной работы благодаря быстрому переключению.

2. Параллелизм (Parallelism):
- Есть несколько процессоров (например, CPU Core 1, CPU Core 2, CPU Core 3), каждый из которых выполняет свою задачу (например, Task 1.1, Task 1.2, Task 1.3) одновременно.
- Это демонстрирует истинное параллельное выполнение задач, где каждая задача выполняется на отдельном ядре. Это означает, что задачи выполняются одновременно и независимо друг от друга.

3. Конкуренция для обеспечения параллелизма (Concurrency to enable Parallelism):
Конкурентность может быть использована для обеспечения параллелизма. Задачи выполняются на разных ядрах процессора (CPU Core 1, CPU Core 2), и контекстные переключения позволяют задачам выполняться параллельно. Это достигается за счет использования потоков (Threads), которые позволяют задачам выполняться одновременно на разных ядрах, что позволяет эффективно использовать ресурсы и обеспечивать параллельное выполнение.

Таким образом, что конкуренция — это способ организации задач, а параллелизм — это их одновременное выполнение.
🔥144👏2🤓1
Как сделать цветной календарь на языке #Python
18🤮12🤔5👏1🥱1🐳1
Шпаргалка по SSH-туннелированию
👍13🥰4🔥3🤓2
Признаки кода, которые могут указывать на потенциальные проблемы в программе (по категориям):

1. Bloaters (раздуватели):
- Long Method: Слишком длинные функции/методы, которые следует разделить для улучшения читаемости и поддерживаемости.
- Large Class: Классы, выполняющие слишком много задач, что нарушает принцип единственной ответственности (SRP).
- Primitive Obsession: Чрезмерное использование примитивных типов данных вместо создания специализированных классов.
- Long Parameter List: Методы с большим количеством параметров, что затрудняет их использование.
- Data Clumps: Группы данных, которые всегда появляются вместе, что может указывать на необходимость создания нового класса.

2. Object-Orientation Abusers (нарушители объектно-ориентированного подхода):
- Switch Statements: Частое использование switch-операторов, что может быть заменено полиморфизмом.
- Temporary Field: Временное поле, используемое только при выполнении определенного условия - можно заменить на локальную переменную/параметр.
- Refused Bequest: Подкласс, который никак не изменяет функционал базового класса, что может указывать на неправильную иерархию.
- Alternative Classes with Different Interfaces: Классы с похожим поведением, но разными интерфейсами, которые можно объединить или извлечь общий интерфейс.

3. Change Preventers (препятствия изменениям):
- Divergent Change: Класс, который часто изменяется по разным причинам, что требует разделения на более мелкие классы.
- Shotgun Surgery: Мелкие изменения, разбросанные по многим классам, что указывает на плотное связывание и необходимость рефикторинга классов в модули.
- Parallel Inheritance Hierarchies: Добавление подклассов в одну иерархию требует добавления в другую, что можно заменить делегированием или композицией.

4. Dispensables (Излишние конструкции):
- Comments: Избыточные или устаревшие комментарии, которые лучше заменить самодокументируемым кодом.
- Duplicate Code: Повторяющийся код, который следует вынести в отдельный метод.
- Dead Code: Неиспользуемый код, который нужно удалить.
- Lazy Class: Класс с минимальной ответственностью, который можно объединить или удалить.
- Speculative Generality: Код, написанный для будущих нужд, который в текущий момент можно удалить, сфокусировавшись на текущийх потребностях

5. Couplers (Связыватели)
- Feature Envy: Метод обращается к данным другого класса чаще, чем к своим. Можно переместить метод в класс, к которому он относится.
- Inappropriate Intimacy: Классы слишком зависят друг от друга. Можно усилить инкапсуляцию и уменьшить зависимости.
- Message Chains: Длинные последовательности вызовов методов. Можно объединить в вспомогательные специальные методы.
- Middle Man: Класс, который в основном делегирует задачи другим. Можно удалить или объединить функциональность для упрощения.
👍28🤝42🔥1
Архитектуры управления данных: Озеро данных (Data Lake), Хранилище данных (Data Warehouse), Дом данных (Data Lakehouse) и Сетка данных (Data Mesh)
(описание в следующем посте)
Архитектуры управления данных: Озеро данных (Data Lake), Хранилище данных (Data Warehouse), Дом данных (Data Lakehouse) и Сетка данных (Data Mesh)
(описание к предыдущему посту)

* Озеро данных (Data Lake)
* Описание: Централизованное хранилище, которое хранит необработанные, неструктурированные и структурированные данные любого масштаба.
* Преимущества: Высокая масштабируемость, экономичность при хранении огромных объёмов данных, гибкость для специалистов по обработке данных и инженеров.
* Недостатки: Управление данными может быть сложным, а запросы к большим наборам данных могут быть неэффективными без надлежащего управления.

* Хранилище данных (Data Warehouse)
* Описание: Структурированная система хранения, оптимизированная для запросов и отчётности, обычно для бизнес-аналитики (BI).
* Преимущества: Оптимизированная производительность, идеально подходит для сложных запросов, обеспечивает надёжное управление данными.
* Недостатки: Меньшая гибкость для неструктурированных данных, более высокие затраты, медленная адаптация к данным в режиме реального времени.

* Дом данных (Data Lakehouse)
* Описание: Гибридный подход, сочетающий преимущества озера данных и хранилища данных, позволяющий хранить как необработанные, так и структурированные данные на одной платформе.
* Преимущества: Гибкость озёр данных с производительностью хранилищ, упрощённая архитектура, поддержка расширенной аналитики.
* Недостатки: Это новая технология с меньшим количеством зрелых решений по сравнению с автономными системами.

* Сетка данных (Data Mesh)
* Описание: Децентрализованный подход к архитектуре данных, где данные рассматриваются как продукт и управляются специализированными командами.
* Преимущества: Способствует масштабируемости и ответственности, поддерживает межфункциональное взаимодействие, повышает гибкость.
* Недостатки: Требует изменения корпоративной культуры, сложность в управлении.

Каждый подход имеет свои уникальные преимущества и компромиссы, поэтому лучший выбор зависит от размера организации и конкретных случаев использования.
👍8❤‍🔥2👏1
Шпаргалка по основам Git #git
👍16🍓3🤮2😱1
Наткнулся в интернете (не скажу, что я согласен, но рациональное зерно есть):
"""
Первое правило программирования: не делай ситуацию хуже, чем она есть.

Идея Честертона заключается в том, что вы можете столкнуться с, казалось бы, ненужным забором в сельской местности. Может возникнуть соблазн просто убрать его. Но если вы не знаете, зачем он нужен, вы можете совершить дорогостоящую ошибку.

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

Любое изменение, будь то рефакторинг, обновление или удаление, должно быть надежно обосновано четкими аргументами, такими как измеримые улучшения производительности, удобства обслуживания или пользовательского опыта, чтобы избежать ненужных сбоев или непредвиденных ошибок.

Очень легко вносить изменения, которые в конечном итоге ухудшат код, даже если вы опытны и у вас добрые намерения.

Это не субъективный вопрос. Я постоянно вижу попытки оптимизации, которые оказываются контрпродуктивными.

Возможно, вы видите лишь старую и замусоренную кодовую базу. И считаете, что её, очевидно, нужно организовать по-другому. И, что важно, вы, возможно, правы!!! Но, что не менее важно, вы можете ошибаться.

Всегда помните, что вы знаете меньше, чем думаете, кем бы вы ни были. Мы все склонны переоценивать своё понимание программного обеспечения. Это в человеческой природе. Но научитесь постоянно сомневаться в себе, особенно когда вы работаете с зрелым, хорошо протестированным кодом.
"""
👍44🤔11👏21
По данным Superjob, зарплаты отечественных Unix-сисадминов показали крайне незначительный рост: они стали получать больше примерно на 5-6% год к году в среднем.
У джунов зарплата и вовсе не выросла. В то же время рост зарплат администраторов Windows-систем оказался выше - на 10%.
(На скриншотах уровни компетенций и зп в зависимости от компетенции)

https://www.cnews.ru/news/top/2025-08-21_rossijskie_unix-sisadminy
🤔9🤣42🤬1🍌1🫡1
Как выбрать шаблон проектирования?
(описание в следующем посте)
👍3🔥1👏1
Как выбрать шаблон проектирования?
(описание к предыдущему посту)

Выбор правильного шаблона проектирования в программной инженерии имеет решающее значение для эффективного решения проблем. Чтобы выбрать шаблон, сначала необходимо определить проблему. Если проблема связана с:

🔸 Созданием объектов? → Порождающие шаблоны
🔸 Сбором объектов? → Структурные шаблоны
🔸 Взаимодействием объектов? → Поведенческие шаблоны

Рассмотрим их подробнее.

1. Порождающие шаблоны
* Singleton: Используется, когда необходим единственный экземпляр класса. Примеры: ведение журнала и подключения к базе данных.
* Factory Method: Разделение создания объектов от их использования. Например, создание различных типов подключений к базе данных на основе конфигурации.
* Abstract Factory: Создание семейств связанных объектов. Например, создание парсеров для различных форматов файлов (JSON, XML, CSV).
* Builder: Поэтапное создание сложных объектов. Например, создание сложного объекта предметной области.
* Prototype: Создание дубликатов объектов и повторное использование кэшированных объектов для уменьшения обращений к базе данных.

2. Структурные шаблоны
* Adapter: Делает несовместимые интерфейсы совместимыми. Например, интеграция новой библиотеки ведения журнала в существующую систему с другим интерфейсом.
* Composite: Представление иерархий часть-целое. Например, графические объекты в приложении для рисования можно группировать и обрабатывать единообразно.
* Proxy: Контроль доступа к объектам. Например, отложенная загрузка изображения с высоким разрешением в веб-приложении.
* Decorator: Динамическое добавление/удаление поведения. Например, реализация сжатия или шифрования поверх потоков файлов.
* Bridge: Разделение абстракции от реализации. Например, отделение платформозависимого кода от основной логики.

3. Поведенческие шаблоны
* Strategy: Определение семейства алгоритмов. Например, предоставление пользователям возможности выбирать различные алгоритмы сортировки или сжатия.
* Observer: Поддержание согласованного состояния путем уведомления об изменениях, например, уведомление подписчиков о событиях в системе обмена сообщениями.
* Command: Инкапсуляция запроса в объект. Например, реализация функций отмены/повтора в текстовом или графическом редакторе.
* State: Инкапсуляция поведения, специфичного для состояния. Например, обработка различных состояний элемента пользовательского интерфейса (включен, отключен, выбран).
* Template Method: Определение скелета алгоритма в операции, раскладывание некоторых шагов на подклассы и реализация базового класса для модульного тестирования с настраиваемыми шагами настройки и завершения.
👍112🥰2