Исследователи Check Point обнаружили, вероятно, первую в истории публично раскрытую уязвимость безопасности в компоненте ядра Windows на основе Rust — фундаментальном слое операционной системы Microsoft. Эта уязвимость может привести к полному сбою системы, вызывая принудительную перезагрузку и мгновенное отключение пользователей от сети.
Rust широко известен своей способностью предотвращать ошибки памяти, которые давно представляют угрозу безопасности программного обеспечения. Его внедрение в Windows было направлено на повышение безопасности системы. В данном случае уязвимость возникла из-за того, что Rust обнаружил базовую проблему, но вместо того, чтобы корректно устранить её, спровоцировал сбой в работе всей системы.
Это в очередной раз подчеркивает, что Rust - не панацея, как, возможно, думают некоторые менеджеры в Microsoft, агрессивно продвигающие внедрение Rust
https://blog.checkpoint.com/research/microsoft-vulnerabilities-exposed-by-check-point-research/
#rust
Rust широко известен своей способностью предотвращать ошибки памяти, которые давно представляют угрозу безопасности программного обеспечения. Его внедрение в Windows было направлено на повышение безопасности системы. В данном случае уязвимость возникла из-за того, что Rust обнаружил базовую проблему, но вместо того, чтобы корректно устранить её, спровоцировал сбой в работе всей системы.
Это в очередной раз подчеркивает, что Rust - не панацея, как, возможно, думают некоторые менеджеры в Microsoft, агрессивно продвигающие внедрение Rust
https://blog.checkpoint.com/research/microsoft-vulnerabilities-exposed-by-check-point-research/
#rust
Check Point Blog
Microsoft Vulnerabilities Exposed by Check Point Research - Check Point Blog
Check Point Research uncovered six fresh vulnerabilities in Microsoft Windows, including one critical flaw with potential for wide-reaching impact. These
👍10🥱4🤨4😁3
This media is not supported in your browser
VIEW IN TELEGRAM
Дискретное преобразование Фурье наглядно
🤔20👍5🤓4❤2
В MIT провели исследование пользы ИИ для бизнеса. Оказалось, что нейросети действительно помогают компаниям зарабатывать больше, но всего-навсего в 5% случаев. Остальным 95% внедрение ИИ не принесло ощутимого роста финансов, а вот вложиться в его интеграцию компаниям все же пришлось.
Исследование основывается на опросе, в котором участвовали 300 компаний, внедривших искусственный интеллект. Авторы также опросили 150 руководителей таких фирм и 350 их сотрудников.
Как выяснилось, только 5% программ по внедрению ИИ обернулись для предприятий быстрым ростом выручки. Нейросети принесли им миллионы долларов выручки, но это, как показало исследование, лишь исключение, а не правило. Для 95% компаний внедрение ИИ никак не повлияло на финансовые результаты, ни в большую, ни в меньшую сторону. Если не считать денег, потраченных на это внедрение.
https://www.cnews.ru/news/top/2025-08-19_ves_mir_sel_v_luzhunejroseti
Исследование основывается на опросе, в котором участвовали 300 компаний, внедривших искусственный интеллект. Авторы также опросили 150 руководителей таких фирм и 350 их сотрудников.
Как выяснилось, только 5% программ по внедрению ИИ обернулись для предприятий быстрым ростом выручки. Нейросети принесли им миллионы долларов выручки, но это, как показало исследование, лишь исключение, а не правило. Для 95% компаний внедрение ИИ никак не повлияло на финансовые результаты, ни в большую, ни в меньшую сторону. Если не считать денег, потраченных на это внедрение.
https://www.cnews.ru/news/top/2025-08-19_ves_mir_sel_v_luzhunejroseti
CNews.ru
Весь мир сел в лужу. Нейросети бесполезны для бизнеса после внедрения выручка не растет, расходы увеличиваются - CNews
В MIT провели исследование пользы ИИ для бизнеса. Оказалось, что нейросети действительно помогают компаниям зарабатывать больше, но всего-навсего в 5% случаев. Остальным 95% внедрение ИИ не принесло...
🤷♂15👍5🤮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
Что это значит для пользователей? После этой даты Microsoft больше не будет выпускать обновления безопасности, исправления ошибок и не будет оказывать техническую поддержку системы.
И с одной стороны, устройства на Windows 10 станут уязвимее для новых киберугроз, а стабильность работы системы может нарушиться.
С другой стороны, пользователи смогут вдохнуть спокойно, посколько не будет больше обновлений, после которых не знаешь, будет ли система работать и что в этот раз перестанет работать.
В конце концов, как говорится, для пользователя Windows не так страшны вирусы, как обновления системы.
https://learn.microsoft.com/en-us/windows/release-health/windows-message-center#3632
Docs
Windows message center
❤26😁18👎8💯3😭2🫡2💩1
This media is not supported in your browser
VIEW IN TELEGRAM
"Concurrency" (конкурентность) и "Parallelism" (параллелизм)
(описание в следующем посте)
(описание в следующем посте)
🔥18❤2👏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), которые позволяют задачам выполняться одновременно на разных ядрах, что позволяет эффективно использовать ресурсы и обеспечивать параллельное выполнение.
Таким образом, что конкуренция — это способ организации задач, а параллелизм — это их одновременное выполнение.
(описание к предыдущему посту)
Эта два понятия часто путают, но конкурентность не является параллелизмом.
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), которые позволяют задачам выполняться одновременно на разных ядрах, что позволяет эффективно использовать ресурсы и обеспечивать параллельное выполнение.
Таким образом, что конкуренция — это способ организации задач, а параллелизм — это их одновременное выполнение.
Telegram
METANIT.COM
"Concurrency" (конкурентность) и "Parallelism" (параллелизм)
(описание в следующем посте)
(описание в следующем посте)
🔥14❤4👏2🤓1
Признаки кода, которые могут указывать на потенциальные проблемы в программе (по категориям):
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: Класс, который в основном делегирует задачи другим. Можно удалить или объединить функциональность для упрощения.
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🤝4❤2🔥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)
* Описание: Децентрализованный подход к архитектуре данных, где данные рассматриваются как продукт и управляются специализированными командами.
* Преимущества: Способствует масштабируемости и ответственности, поддерживает межфункциональное взаимодействие, повышает гибкость.
* Недостатки: Требует изменения корпоративной культуры, сложность в управлении.
Каждый подход имеет свои уникальные преимущества и компромиссы, поэтому лучший выбор зависит от размера организации и конкретных случаев использования.
(описание к предыдущему посту)
* Озеро данных (Data Lake)
* Описание: Централизованное хранилище, которое хранит необработанные, неструктурированные и структурированные данные любого масштаба.
* Преимущества: Высокая масштабируемость, экономичность при хранении огромных объёмов данных, гибкость для специалистов по обработке данных и инженеров.
* Недостатки: Управление данными может быть сложным, а запросы к большим наборам данных могут быть неэффективными без надлежащего управления.
* Хранилище данных (Data Warehouse)
* Описание: Структурированная система хранения, оптимизированная для запросов и отчётности, обычно для бизнес-аналитики (BI).
* Преимущества: Оптимизированная производительность, идеально подходит для сложных запросов, обеспечивает надёжное управление данными.
* Недостатки: Меньшая гибкость для неструктурированных данных, более высокие затраты, медленная адаптация к данным в режиме реального времени.
* Дом данных (Data Lakehouse)
* Описание: Гибридный подход, сочетающий преимущества озера данных и хранилища данных, позволяющий хранить как необработанные, так и структурированные данные на одной платформе.
* Преимущества: Гибкость озёр данных с производительностью хранилищ, упрощённая архитектура, поддержка расширенной аналитики.
* Недостатки: Это новая технология с меньшим количеством зрелых решений по сравнению с автономными системами.
* Сетка данных (Data Mesh)
* Описание: Децентрализованный подход к архитектуре данных, где данные рассматриваются как продукт и управляются специализированными командами.
* Преимущества: Способствует масштабируемости и ответственности, поддерживает межфункциональное взаимодействие, повышает гибкость.
* Недостатки: Требует изменения корпоративной культуры, сложность в управлении.
Каждый подход имеет свои уникальные преимущества и компромиссы, поэтому лучший выбор зависит от размера организации и конкретных случаев использования.
Telegram
METANIT.COM
Архитектуры управления данных: Озеро данных (Data Lake), Хранилище данных (Data Warehouse), Дом данных (Data Lakehouse) и Сетка данных (Data Mesh)
(описание в следующем посте)
(описание в следующем посте)
👍8❤🔥2👏1
Наткнулся в интернете (не скажу, что я согласен, но рациональное зерно есть):
"""
Первое правило программирования: не делай ситуацию хуже, чем она есть.
Идея Честертона заключается в том, что вы можете столкнуться с, казалось бы, ненужным забором в сельской местности. Может возникнуть соблазн просто убрать его. Но если вы не знаете, зачем он нужен, вы можете совершить дорогостоящую ошибку.
Принцип забора Честертона применительно к программному коду предполагает, что предпочтительно не изменять код, архитектуру или процессы без полного понимания их назначения и последствий.
Любое изменение, будь то рефакторинг, обновление или удаление, должно быть надежно обосновано четкими аргументами, такими как измеримые улучшения производительности, удобства обслуживания или пользовательского опыта, чтобы избежать ненужных сбоев или непредвиденных ошибок.
Очень легко вносить изменения, которые в конечном итоге ухудшат код, даже если вы опытны и у вас добрые намерения.
Это не субъективный вопрос. Я постоянно вижу попытки оптимизации, которые оказываются контрпродуктивными.
Возможно, вы видите лишь старую и замусоренную кодовую базу. И считаете, что её, очевидно, нужно организовать по-другому. И, что важно, вы, возможно, правы!!! Но, что не менее важно, вы можете ошибаться.
Всегда помните, что вы знаете меньше, чем думаете, кем бы вы ни были. Мы все склонны переоценивать своё понимание программного обеспечения. Это в человеческой природе. Но научитесь постоянно сомневаться в себе, особенно когда вы работаете с зрелым, хорошо протестированным кодом.
"""
"""
Первое правило программирования: не делай ситуацию хуже, чем она есть.
Идея Честертона заключается в том, что вы можете столкнуться с, казалось бы, ненужным забором в сельской местности. Может возникнуть соблазн просто убрать его. Но если вы не знаете, зачем он нужен, вы можете совершить дорогостоящую ошибку.
Принцип забора Честертона применительно к программному коду предполагает, что предпочтительно не изменять код, архитектуру или процессы без полного понимания их назначения и последствий.
Любое изменение, будь то рефакторинг, обновление или удаление, должно быть надежно обосновано четкими аргументами, такими как измеримые улучшения производительности, удобства обслуживания или пользовательского опыта, чтобы избежать ненужных сбоев или непредвиденных ошибок.
Очень легко вносить изменения, которые в конечном итоге ухудшат код, даже если вы опытны и у вас добрые намерения.
Это не субъективный вопрос. Я постоянно вижу попытки оптимизации, которые оказываются контрпродуктивными.
Возможно, вы видите лишь старую и замусоренную кодовую базу. И считаете, что её, очевидно, нужно организовать по-другому. И, что важно, вы, возможно, правы!!! Но, что не менее важно, вы можете ошибаться.
Всегда помните, что вы знаете меньше, чем думаете, кем бы вы ни были. Мы все склонны переоценивать своё понимание программного обеспечения. Это в человеческой природе. Но научитесь постоянно сомневаться в себе, особенно когда вы работаете с зрелым, хорошо протестированным кодом.
"""
👍44🤔11👏2❤1
По данным Superjob, зарплаты отечественных Unix-сисадминов показали крайне незначительный рост: они стали получать больше примерно на 5-6% год к году в среднем.
У джунов зарплата и вовсе не выросла. В то же время рост зарплат администраторов Windows-систем оказался выше - на 10%.
(На скриншотах уровни компетенций и зп в зависимости от компетенции)
https://www.cnews.ru/news/top/2025-08-21_rossijskie_unix-sisadminy
У джунов зарплата и вовсе не выросла. В то же время рост зарплат администраторов Windows-систем оказался выше - на 10%.
(На скриншотах уровни компетенций и зп в зависимости от компетенции)
https://www.cnews.ru/news/top/2025-08-21_rossijskie_unix-sisadminy
🤔9🤣4✍2🤬1🍌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: Определение скелета алгоритма в операции, раскладывание некоторых шагов на подклассы и реализация базового класса для модульного тестирования с настраиваемыми шагами настройки и завершения.
(описание к предыдущему посту)
Выбор правильного шаблона проектирования в программной инженерии имеет решающее значение для эффективного решения проблем. Чтобы выбрать шаблон, сначала необходимо определить проблему. Если проблема связана с:
🔸 Созданием объектов? → Порождающие шаблоны
🔸 Сбором объектов? → Структурные шаблоны
🔸 Взаимодействием объектов? → Поведенческие шаблоны
Рассмотрим их подробнее.
1. Порождающие шаблоны
* Singleton: Используется, когда необходим единственный экземпляр класса. Примеры: ведение журнала и подключения к базе данных.
* Factory Method: Разделение создания объектов от их использования. Например, создание различных типов подключений к базе данных на основе конфигурации.
* Abstract Factory: Создание семейств связанных объектов. Например, создание парсеров для различных форматов файлов (JSON, XML, CSV).
* Builder: Поэтапное создание сложных объектов. Например, создание сложного объекта предметной области.
* Prototype: Создание дубликатов объектов и повторное использование кэшированных объектов для уменьшения обращений к базе данных.
2. Структурные шаблоны
* Adapter: Делает несовместимые интерфейсы совместимыми. Например, интеграция новой библиотеки ведения журнала в существующую систему с другим интерфейсом.
* Composite: Представление иерархий часть-целое. Например, графические объекты в приложении для рисования можно группировать и обрабатывать единообразно.
* Proxy: Контроль доступа к объектам. Например, отложенная загрузка изображения с высоким разрешением в веб-приложении.
* Decorator: Динамическое добавление/удаление поведения. Например, реализация сжатия или шифрования поверх потоков файлов.
* Bridge: Разделение абстракции от реализации. Например, отделение платформозависимого кода от основной логики.
3. Поведенческие шаблоны
* Strategy: Определение семейства алгоритмов. Например, предоставление пользователям возможности выбирать различные алгоритмы сортировки или сжатия.
* Observer: Поддержание согласованного состояния путем уведомления об изменениях, например, уведомление подписчиков о событиях в системе обмена сообщениями.
* Command: Инкапсуляция запроса в объект. Например, реализация функций отмены/повтора в текстовом или графическом редакторе.
* State: Инкапсуляция поведения, специфичного для состояния. Например, обработка различных состояний элемента пользовательского интерфейса (включен, отключен, выбран).
* Template Method: Определение скелета алгоритма в операции, раскладывание некоторых шагов на подклассы и реализация базового класса для модульного тестирования с настраиваемыми шагами настройки и завершения.
Telegram
METANIT.COM
Как выбрать шаблон проектирования?
(описание в следующем посте)
(описание в следующем посте)
👍11❤2🥰2
Вышла новая версия IDE NetBeans - Apache NetBeans 27, которая предоставляет поддержку языков программирования Java SE, Java EE, PHP, C/C++, JavaScript, Rust и Groovy. Готовые сборки сформированы для Linux (snap, flatpak), Windows и macOS.
Основные изменения:
- В редакторе кода появилась возможность сравнения содержимого папок, улучшена поддержка разметки TextMark/Markdown и добавлена возможность предпросмотра изображений в формате SVG.
- Движок тем оформления FlatLaf обновлён до версии 3.6.1.
- Обеспечена совместимость с системой сборки Gradle 9 и добавлена возможность использования Gradle 9 в новых проектах.
- Улучшена поддержка систем сборки Maven и Ant. Инструментарий Maven обновлён до версии 3.9.11. Добавлено дополнение Njord.
- Расширены возможности серверов LSP (Language Server Protocol) и применения плагинов для VSCode.
- Для Java реализована возможность рефакторинга отдельных Java-файлов, не являющихся частью проектов. Добавлена частичная поддержка импорта Java-модулей. Улучшены возможности для отладки и анализа стека. Встроенный в NetBeans Java-компилятор nb-javac (модифицированный javac) обновлён до версии JDK 25b31.
- Для PHP улучшена подсветка синтаксиса и разрешено использование собственных HTML-тегов в скриптах PHP.
- Добавлена поддержка новых версий сервера приложений GlassFish - 7.0.24 и 8.0.0-M11. Улучшено автодополнение jsf-классов. Реализован HTTP Monitor для javax.servlet и jakarta.servlet. Улучшена поддержка тегов JSF. Для Payara 5.x включена поддержка JDK 21.
- Для web-проектов добавлена поддержка media-query CSS. Реализован анализатор семантики JSON. Расширены возможности по встраиванию vuе-файлов.
https://github.com/apache/netbeans/releases/tag/27
https://netbeans.apache.org/front/main/index.html
Основные изменения:
- В редакторе кода появилась возможность сравнения содержимого папок, улучшена поддержка разметки TextMark/Markdown и добавлена возможность предпросмотра изображений в формате SVG.
- Движок тем оформления FlatLaf обновлён до версии 3.6.1.
- Обеспечена совместимость с системой сборки Gradle 9 и добавлена возможность использования Gradle 9 в новых проектах.
- Улучшена поддержка систем сборки Maven и Ant. Инструментарий Maven обновлён до версии 3.9.11. Добавлено дополнение Njord.
- Расширены возможности серверов LSP (Language Server Protocol) и применения плагинов для VSCode.
- Для Java реализована возможность рефакторинга отдельных Java-файлов, не являющихся частью проектов. Добавлена частичная поддержка импорта Java-модулей. Улучшены возможности для отладки и анализа стека. Встроенный в NetBeans Java-компилятор nb-javac (модифицированный javac) обновлён до версии JDK 25b31.
- Для PHP улучшена подсветка синтаксиса и разрешено использование собственных HTML-тегов в скриптах PHP.
- Добавлена поддержка новых версий сервера приложений GlassFish - 7.0.24 и 8.0.0-M11. Улучшено автодополнение jsf-классов. Реализован HTTP Monitor для javax.servlet и jakarta.servlet. Улучшена поддержка тегов JSF. Для Payara 5.x включена поддержка JDK 21.
- Для web-проектов добавлена поддержка media-query CSS. Реализован анализатор семантики JSON. Расширены возможности по встраиванию vuе-файлов.
https://github.com/apache/netbeans/releases/tag/27
https://netbeans.apache.org/front/main/index.html
GitHub
Release Apache NetBeans 27 · apache/netbeans
What's Changed
Gradle
Improve support for using latest Gradle version in new projects. by @neilcsmith-net in #8606
Gradle 9 compatibility fixes by @mbien in #8703
Do not introspect static prop...
Gradle
Improve support for using latest Gradle version in new projects. by @neilcsmith-net in #8606
Gradle 9 compatibility fixes by @mbien in #8703
Do not introspect static prop...
👎3🔥3❤2👏1
Разработчика приговорили к тюремному заключению за взлом сети бывшего работодателя. с помощью вредоносного ПО
Карьера 55-летнего Дэвиса Лу (Davis Lu) в Eaton продолжалась более 10 лет – с 2007 по 2019 г. На ее пике Лу занимал должность старшего программиста . В 2018 г. компания провела реструктуризацию, в результате которой Лу был понижен в должности. Осознав, что в Eaton его не слишком ценят и, возможно, в будущем просто уволят, разработчик решил заранее подготовиться и обеспечить себе возможность отомстить за возможное несправедливое увольнение.
Для этого Лу внедрил на сервер Eaton программу, которая в случае утраты им доступа к сети организации лишила бы его и всех остальных сотрудников. Код программы был написан на языке Java и занимался тем, что порождал все новые и новые потоки в бесконечном цикле.
Такая программа при выполнении на протяжении довольно длительного промежутка времени должна была поглотить все свободные ресурсы сервера и привести к его зависанию.
Программа вела мониторинг статуса учетной записи Лу в службе каталогов Microsoft Active Directory и ожидала его изменения “Disabled”
9 сентября 2019 года компания Eaton уволила Лу и отключила ему доступ к сети, что привело к сбою программы Java, перегрузке сети, блокировке доступа тысяч сотрудников Eaton по всему миру и удалению некоторых корпоративных данных.
Но когда Лу пришло время сдать свой корпоративный ноутбук, выяснилось, что он использовал его для осуществления своего плана. История поиска показала, что он искал информацию о том, как удалить данные, повысить привилегии и скрыть следы процессов. Он также удалил большой кусок зашифрованных данных.
Кроме того, он назвал свой вирус “IsDLEnableinAD” - аббревиатура фразы “Is Davis Lu enabled in Active Directory”, благодаря которой можно установить ее автора и механизм активации. Кроме того, готовую программу Лу загрузил на сервер с использованием собственной корпоративной учетной записи.
И менее чем через месяц после срабатывания программы Лу был арестован.
https://www.theregister.com/2025/08/22/worlds_dumbest_it_admin_gets/
Карьера 55-летнего Дэвиса Лу (Davis Lu) в Eaton продолжалась более 10 лет – с 2007 по 2019 г. На ее пике Лу занимал должность старшего программиста . В 2018 г. компания провела реструктуризацию, в результате которой Лу был понижен в должности. Осознав, что в Eaton его не слишком ценят и, возможно, в будущем просто уволят, разработчик решил заранее подготовиться и обеспечить себе возможность отомстить за возможное несправедливое увольнение.
Для этого Лу внедрил на сервер Eaton программу, которая в случае утраты им доступа к сети организации лишила бы его и всех остальных сотрудников. Код программы был написан на языке Java и занимался тем, что порождал все новые и новые потоки в бесконечном цикле.
Такая программа при выполнении на протяжении довольно длительного промежутка времени должна была поглотить все свободные ресурсы сервера и привести к его зависанию.
Программа вела мониторинг статуса учетной записи Лу в службе каталогов Microsoft Active Directory и ожидала его изменения “Disabled”
9 сентября 2019 года компания Eaton уволила Лу и отключила ему доступ к сети, что привело к сбою программы Java, перегрузке сети, блокировке доступа тысяч сотрудников Eaton по всему миру и удалению некоторых корпоративных данных.
Но когда Лу пришло время сдать свой корпоративный ноутбук, выяснилось, что он использовал его для осуществления своего плана. История поиска показала, что он искал информацию о том, как удалить данные, повысить привилегии и скрыть следы процессов. Он также удалил большой кусок зашифрованных данных.
Кроме того, он назвал свой вирус “IsDLEnableinAD” - аббревиатура фразы “Is Davis Lu enabled in Active Directory”, благодаря которой можно установить ее автора и механизм активации. Кроме того, готовую программу Лу загрузил на сервер с использованием собственной корпоративной учетной записи.
И менее чем через месяц после срабатывания программы Лу был арестован.
https://www.theregister.com/2025/08/22/worlds_dumbest_it_admin_gets/
The Register
Developer jailed for taking down employer's network with kill switch malware
: Pro tip: When taking revenge, don't use your real name
🫡21🤣18👌4🙈4