Обобщённые инвертированные индексы (Generalized Inverted Indexes / GIN)
(продолжение предыдущего поста)
Generalized Inverted Indexes (Обобщённые инвертированные индексы или GIN) — мощный инструмент СУБД, в частности, в Postgres.
Они отлично подходят для инвертирования типичного сценария использования индексов.
Вместо сопоставления «строка с ID 2 содержит значение „become a database expert“» вы переворачиваете это так: «токен „database“ сопоставляется со строками с ID 1, 2 и 3, а токен „expert“ — со строкой с ID 2».
Индексам GIN передаётся набор значений для каждой строки, которую вы хотите проиндексировать. Каждое уникальное значение становится ключом в индексе и сопоставляется с набором CTID (идентификаторов строковых кортежей), содержащих это значение.
У такого подхода есть несколько вариантов применения, один из которых — полнотекстовый поиск! В MySQL есть специальный тип индекса FULLTEXT, тогда как в Postgres для создания аналогичной функциональности используются более универсальные индексы GIN. Как это сделать?
(а) Добавьте в таблицу столбец tsvector:
(б) Заполните его лексемами (нормализованными словами):
(в) Создайте индекс, используя лексемы в качестве ключей:
(г) Выполняйте запросы!
(продолжение предыдущего поста)
Generalized Inverted Indexes (Обобщённые инвертированные индексы или GIN) — мощный инструмент СУБД, в частности, в Postgres.
Они отлично подходят для инвертирования типичного сценария использования индексов.
Вместо сопоставления «строка с ID 2 содержит значение „become a database expert“» вы переворачиваете это так: «токен „database“ сопоставляется со строками с ID 1, 2 и 3, а токен „expert“ — со строкой с ID 2».
Индексам GIN передаётся набор значений для каждой строки, которую вы хотите проиндексировать. Каждое уникальное значение становится ключом в индексе и сопоставляется с набором CTID (идентификаторов строковых кортежей), содержащих это значение.
У такого подхода есть несколько вариантов применения, один из которых — полнотекстовый поиск! В MySQL есть специальный тип индекса FULLTEXT, тогда как в Postgres для создания аналогичной функциональности используются более универсальные индексы GIN. Как это сделать?
(а) Добавьте в таблицу столбец tsvector:
CREATE TABLE post (
author TEXT,
publish_date DATE,
content TEXT NOT NULL,
search_vector tsvector);
(б) Заполните его лексемами (нормализованными словами):
UPDATE post
SET search_vector =
to_tsvector('english', content);
(в) Создайте индекс, используя лексемы в качестве ключей:
CREATE INDEX post_search_idx
ON post USING GIN(search_vector);
(г) Выполняйте запросы!
SELECT * FROM post
WHERE search_vector @@
to_tsquery('english', 'database & expert');
Telegram
METANIT.COM
Обобщённые инвертированные индексы (Generalized Inverted Indexes / GIN)
(продолжение в следующем посте)
(продолжение в следующем посте)
👍6👏3❤2
Выпускники IT-специальностей сталкиваются с апокалипсисом на рынке труда
Издание Rest of World опубликовало статью о том, что ИИ «уничтожил позиции для начинающих специалистов в техиндустрии».
Так, студент престижного инженерного колледжа в Индии рассказал, что из 400 его однокурсников «менее 25% получили предложения о работе», а «в кампусе царит паника». Индийские IT-компании сократили количество вакансий начального уровня на 20-25% благодаря автоматизации и ИИ.
Студенты инженерных колледжей в Индии, Китае, Дубае и Кении сталкиваются с «апокалипсисом на рынке труда», поскольку ИИ заменяет людей на позициях начального уровня. Задачи, которые раньше поручали недавним выпускникам, такие как отладка, тестирование и рутинное обслуживание программного обеспечения, теперь всё чаще автоматизируются. За последние 3 года число недавних выпускников, нанятых крупными технологическими компаниями по всему миру, сократилось более чем на 50%.
«Пять лет назад шла настоящая война за программистов и разработчиков. Была борьба за найм, и 90% нанимаемых сотрудников шли на готовые технические должности, то есть на позиции, требующие использования готовых технологических продуктов, а не внутренней разработки. С появлением ИИ это резко изменилось. Теперь я не уверен, что показатель достигает хотя бы 5%», — сказал Вахид Хагзаре, директор рекрутинговой компании Silicon Valley Associates Recruitment в Дубае.
Хотя в 2024 году найм немного восстановился, только 7% среди новых сотрудников оказались недавними выпускниками. При этом в ходе опросов до 37% менеджеров заявили, что предпочли бы использовать ИИ, чем нанимать сотрудников поколения Z.
«Поскольку спрос на вакансии для начинающих специалистов снижается, даже высококвалифицированные выпускники инженерных специальностей испытывают трудности с трудоустройством в сфере технологий, особенно в крупных технологических компаниях», — отмечают аналитики. При этом такие компании ожидают от недавних выпкскников выполнения «дополнительных обязанностей», таких как управление проектом или руководство продажами. Некоторые студенты пересмотрели свои амбиции, чтобы соответствовать требованиям работодателей. Так, Нишант Каушик, изучавший информатику в другом престижном колледже на востоке Индии, решил искать работу в сфере продаж или маркетинга.
Развитие ИИ также снизило актуальность инженерных специальностей: требования на рабочем месте теперь отличаются от того, чему учат в колледжах. Рита Санде Лукале, студентка программы электронной инженерии в Техническом университете Кении, надеялась после окончания учебы устроиться на работу в сектор системной архитектуры. Однако за последние несколько лет она наблюдала, как такие должности исчезают. Теперь выпускники «должны обладать навыками более высокого уровня, необходимыми для понимания алгоритмов и использования инженерного подхода для устранения неполадок в сложных и автоматизированных системах».
От недавних выпускников ожидается не только понимание и эффективное использование новейших инструментов, «от них требуют увеличить производительность на 70%, потому что “они используют ИИ”», — сказал Лиам Фэллон, руководитель отдела разработки продуктов в рекрутинговой компании GoodSpace AI. В результате студенты сталкиваются с быстро меняющейся отраслью, которая требует от них самостоятельного повышения квалификации вне рамок учебной программы. Эксперты считают, что университеты не в состоянии достаточно быстро адаптировать свои академические практики. Нынешняя система, в которой студент посвящает от трёх до пяти лет изучению компьютерных наук, «нежизнеспособна», а студенты в итоге «проваливаются в яму и не знают, как из неё выбраться», заключают они.
https://restofworld.org/2025/engineering-graduates-ai-job-losses/
Издание Rest of World опубликовало статью о том, что ИИ «уничтожил позиции для начинающих специалистов в техиндустрии».
Так, студент престижного инженерного колледжа в Индии рассказал, что из 400 его однокурсников «менее 25% получили предложения о работе», а «в кампусе царит паника». Индийские IT-компании сократили количество вакансий начального уровня на 20-25% благодаря автоматизации и ИИ.
Студенты инженерных колледжей в Индии, Китае, Дубае и Кении сталкиваются с «апокалипсисом на рынке труда», поскольку ИИ заменяет людей на позициях начального уровня. Задачи, которые раньше поручали недавним выпускникам, такие как отладка, тестирование и рутинное обслуживание программного обеспечения, теперь всё чаще автоматизируются. За последние 3 года число недавних выпускников, нанятых крупными технологическими компаниями по всему миру, сократилось более чем на 50%.
«Пять лет назад шла настоящая война за программистов и разработчиков. Была борьба за найм, и 90% нанимаемых сотрудников шли на готовые технические должности, то есть на позиции, требующие использования готовых технологических продуктов, а не внутренней разработки. С появлением ИИ это резко изменилось. Теперь я не уверен, что показатель достигает хотя бы 5%», — сказал Вахид Хагзаре, директор рекрутинговой компании Silicon Valley Associates Recruitment в Дубае.
Хотя в 2024 году найм немного восстановился, только 7% среди новых сотрудников оказались недавними выпускниками. При этом в ходе опросов до 37% менеджеров заявили, что предпочли бы использовать ИИ, чем нанимать сотрудников поколения Z.
«Поскольку спрос на вакансии для начинающих специалистов снижается, даже высококвалифицированные выпускники инженерных специальностей испытывают трудности с трудоустройством в сфере технологий, особенно в крупных технологических компаниях», — отмечают аналитики. При этом такие компании ожидают от недавних выпкскников выполнения «дополнительных обязанностей», таких как управление проектом или руководство продажами. Некоторые студенты пересмотрели свои амбиции, чтобы соответствовать требованиям работодателей. Так, Нишант Каушик, изучавший информатику в другом престижном колледже на востоке Индии, решил искать работу в сфере продаж или маркетинга.
Развитие ИИ также снизило актуальность инженерных специальностей: требования на рабочем месте теперь отличаются от того, чему учат в колледжах. Рита Санде Лукале, студентка программы электронной инженерии в Техническом университете Кении, надеялась после окончания учебы устроиться на работу в сектор системной архитектуры. Однако за последние несколько лет она наблюдала, как такие должности исчезают. Теперь выпускники «должны обладать навыками более высокого уровня, необходимыми для понимания алгоритмов и использования инженерного подхода для устранения неполадок в сложных и автоматизированных системах».
От недавних выпускников ожидается не только понимание и эффективное использование новейших инструментов, «от них требуют увеличить производительность на 70%, потому что “они используют ИИ”», — сказал Лиам Фэллон, руководитель отдела разработки продуктов в рекрутинговой компании GoodSpace AI. В результате студенты сталкиваются с быстро меняющейся отраслью, которая требует от них самостоятельного повышения квалификации вне рамок учебной программы. Эксперты считают, что университеты не в состоянии достаточно быстро адаптировать свои академические практики. Нынешняя система, в которой студент посвящает от трёх до пяти лет изучению компьютерных наук, «нежизнеспособна», а студенты в итоге «проваливаются в яму и не знают, как из неё выбраться», заключают они.
https://restofworld.org/2025/engineering-graduates-ai-job-losses/
Rest of World
“Everyone is so panicked”: Entry-level tech workers describe the AI-fueled jobpocalypse
Engineering graduates face shrinking opportunities and rising pressure to upskill beyond their curriculum.
💊12😢7🤔3🤯3🤬2✍1😁1
Три четверти российских компаний не знают, зачем им искусственный интеллект
У них есть бюджет на внедрение технологии, но нет стратегии
Лишь 26% российских компаний, закладывающих в бюджет траты на внедрение искусственного интеллекта (ИИ), имеют стратегию его внедрения. Об этом говорится в исследовании МТС Web Services «Технологические стратегии бизнеса», основанном на опросе более 700 компаний и серии глубинных интервью. По данным исследования, остальные участники рынка либо находятся на стадии отдельных пилотных проектов, либо только планируют системную работу с ИИ.
Показатель зрелости ИИ-стратегий заметно уступает другим направлениям цифрового развития. Так, стратегии в области облачных технологий есть у 44% компаний, в сфере кибербезопасности – у 42%. Это означает, что ИИ в большинстве организаций пока воспринимается как экспериментальный инструмент, а не как элемент долгосрочной бизнес-архитектуры, следует из материалов исследования.
https://www.vedomosti.ru/technology/articles/2025/12/18/1164563-tri-chetverti-rossiiskih
У них есть бюджет на внедрение технологии, но нет стратегии
Лишь 26% российских компаний, закладывающих в бюджет траты на внедрение искусственного интеллекта (ИИ), имеют стратегию его внедрения. Об этом говорится в исследовании МТС Web Services «Технологические стратегии бизнеса», основанном на опросе более 700 компаний и серии глубинных интервью. По данным исследования, остальные участники рынка либо находятся на стадии отдельных пилотных проектов, либо только планируют системную работу с ИИ.
Показатель зрелости ИИ-стратегий заметно уступает другим направлениям цифрового развития. Так, стратегии в области облачных технологий есть у 44% компаний, в сфере кибербезопасности – у 42%. Это означает, что ИИ в большинстве организаций пока воспринимается как экспериментальный инструмент, а не как элемент долгосрочной бизнес-архитектуры, следует из материалов исследования.
https://www.vedomosti.ru/technology/articles/2025/12/18/1164563-tri-chetverti-rossiiskih
Ведомости
Три четверти российских компаний не знают, зачем им искусственный интеллект
У них есть бюджет на внедрение технологии, но нет стратегии
😁14💯6❤2🙈1
Метрики производительности системы
(продолжение предыдущего поста)
4 ключевые метрики производительности системы:
1. Queries Per Second (QPS) — Запросы в секунду (оранжевый блок):
* измеряет количество входящих запросов к системе за одну секунду;
* отражает общую нагрузку на сервер со стороны клиентов (например, количество обращений к веб-сервису);
* на схеме показан поток «Request → Server → Response» от одного клиента;
* является ключевым показателем пропускной способности системы.
2. Transactions Per Second (TPS) — Транзакции в секунду (зелёный блок):
* измеряет количество успешно завершённых транзакций (полных операций) в секунду;
* отличается от QPS тем, что учитывает не просто запросы, а именно завершённые процессы (например, запись в базу данных, обработка платежа);
* включает взаимодействие с базой данных («Request → Server → Database → Response»);
* показывает реальную эффективность обработки задач системой.
3. Concurrency — Параллелизм (одновременность) (фиолетовый блок):
* отслеживает количество активных запросов, обрабатываемых системой одновременно;
* иллюстрируется множеством клиентов, отправляющих запросы параллельно («Multiple Clients → Simultaneous active requests»);
* напрямую влияет на QPS: чем выше параллелизм, тем больше запросов система может обработать за секунду;
* критически важен для масштабируемых систем (например, веб-серверов с высокой нагрузкой).
4. Response Time (RT) — Время отклика (голубой блок):
* измеряется промежуток времени с момента отправки запроса клиентом до получения ответа;
* на схеме обозначен как «Measured elapsed time» (измеренное затраченное время);
* включает время обработки на сервере и задержки передачи данных;
* низкий RT критически важен для пользовательского опыта (например, в онлайн-играх, платёжных системах).
### Связь метрик
Ключевая формула:
QPS = Concurrency + Average RT
означает, что пропускная способность системы (QPS) зависит от двух факторов:
* высокого параллелизма (больше одновременных запросов);
* низкого среднего времени отклика (быстрее обработка каждого запроса).
Эти метрики в совокупности позволяют оценить:
* нагрузку на систему (QPS, Concurrency);
* эффективность обработки (TPS);
* скорость реакции системы (RT).
Их анализ помогает оптимизировать производительность, выявлять «узкие места» и планировать масштабирование.
(продолжение предыдущего поста)
4 ключевые метрики производительности системы:
1. Queries Per Second (QPS) — Запросы в секунду (оранжевый блок):
* измеряет количество входящих запросов к системе за одну секунду;
* отражает общую нагрузку на сервер со стороны клиентов (например, количество обращений к веб-сервису);
* на схеме показан поток «Request → Server → Response» от одного клиента;
* является ключевым показателем пропускной способности системы.
2. Transactions Per Second (TPS) — Транзакции в секунду (зелёный блок):
* измеряет количество успешно завершённых транзакций (полных операций) в секунду;
* отличается от QPS тем, что учитывает не просто запросы, а именно завершённые процессы (например, запись в базу данных, обработка платежа);
* включает взаимодействие с базой данных («Request → Server → Database → Response»);
* показывает реальную эффективность обработки задач системой.
3. Concurrency — Параллелизм (одновременность) (фиолетовый блок):
* отслеживает количество активных запросов, обрабатываемых системой одновременно;
* иллюстрируется множеством клиентов, отправляющих запросы параллельно («Multiple Clients → Simultaneous active requests»);
* напрямую влияет на QPS: чем выше параллелизм, тем больше запросов система может обработать за секунду;
* критически важен для масштабируемых систем (например, веб-серверов с высокой нагрузкой).
4. Response Time (RT) — Время отклика (голубой блок):
* измеряется промежуток времени с момента отправки запроса клиентом до получения ответа;
* на схеме обозначен как «Measured elapsed time» (измеренное затраченное время);
* включает время обработки на сервере и задержки передачи данных;
* низкий RT критически важен для пользовательского опыта (например, в онлайн-играх, платёжных системах).
### Связь метрик
Ключевая формула:
QPS = Concurrency + Average RT
означает, что пропускная способность системы (QPS) зависит от двух факторов:
* высокого параллелизма (больше одновременных запросов);
* низкого среднего времени отклика (быстрее обработка каждого запроса).
Эти метрики в совокупности позволяют оценить:
* нагрузку на систему (QPS, Concurrency);
* эффективность обработки (TPS);
* скорость реакции системы (RT).
Их анализ помогает оптимизировать производительность, выявлять «узкие места» и планировать масштабирование.
Telegram
METANIT.COM
Метрики производительности системы
(подробное описание в следующем посте)
(подробное описание в следующем посте)
👍8❤3👏1
7 шаблонов проектирования многопоточности
Многопоточность — это вычислительная модель, позволяющая одной программе (процессу) выполнять несколько задач одновременно.
Эти задачи называются потоками — лёгкими единицами выполнения, которые используют общие ресурсы процесса (пространство памяти, открытые файлы и т. д.).
Хотя многопоточность открывает огромные возможности для повышения производительности и создания отзывчивых приложений, она также порождает сложности — такие как синхронизация, взаимодействие между потоками и потенциальные условия гонки.
Шаблоны проектирования многопоточности — это повторно используемые решения, позволяющие справиться с подобными типичными проблемами.
📌 Изучим эти шаблоны.
[1.] Шаблон «Производитель‑потребитель» (Producer-Consumer)
* В этом шаблоне задействованы два типа потоков: производители, которые генерируют данные, и потребители, которые эти данные обрабатывают.
* Общая очередь выступает в роли буфера между ними.
Когда использовать?
* Когда задачи можно разделить на отдельные этапы производства и потребления, и вы хотите разграничить эти этапы для повышения параллелизма и эффективности.
[2.] Шаблон «Пул потоков»
* Поддерживает набор рабочих потоков, которые можно повторно использовать для выполнения задач.
* Позволяет избежать накладных расходов на создание и уничтожение потоков для каждой задачи.
Когда использовать?
* Когда у вас большое количество краткосрочных задач и вы хотите контролировать число потоков для более эффективного использования ресурсов и повышения производительности.
[3.] Шаблон «Фьючерсы и промисы» (Futures and Promises)
* Представляет результат асинхронной операции.
* Промис — это объект, хранящий итоговый результат, а фьючер предоставляет способ получить этот результат, когда он станет доступен.
Когда использовать?
* Когда вы работаете с длительными операциями, которые хотите выполнять параллельно, не блокируя основной поток.
[4.] Шаблон «Объект‑монитор» (Monitor Object )
* Обеспечивает механизм синхронизации доступа к общим ресурсам.
* Позволяет только одному потоку выполнять критический участок кода в каждый момент времени, предотвращая условия гонки.
Когда использовать?
* Когда нужно защитить общие данные или ресурсы от одновременного доступа и обеспечить потокобезопасность.
[5.] Шаблон «Блокировка чтения‑записи» ( Read-Write Lock)
* Позволяет нескольким потокам одновременно читать из общего ресурса, но только одному потоку записывать в него в каждый момент времени.
Когда использовать?
* Когда у вас есть общий ресурс, в котором операции чтения выполняются чаще, чем записи, и вы хотите оптимизировать параллельное чтение.
[6.] Шаблон «Барьер» (Barrier )
* Синхронизирует группу потоков, заставляя их ожидать в общей точке перед дальнейшим выполнением.
Когда использовать?
* Когда у вас есть параллельные задачи, которые должны завершить определённый этап перед переходом к следующему.
[7.] Шаблон «Активный объект» (Active Object)
* Разделяет выполнение метода и его вызов в параллельных системах.
* Включает объект со собственным потоком управления и планировщик для постановки в очередь и выполнения запросов на методы.
Когда использовать?
* Когда вы хотите инкапсулировать логику управления потоками и планирования внутри объекта, обеспечив более чистый интерфейс для параллельных операций.
Многопоточность — это вычислительная модель, позволяющая одной программе (процессу) выполнять несколько задач одновременно.
Эти задачи называются потоками — лёгкими единицами выполнения, которые используют общие ресурсы процесса (пространство памяти, открытые файлы и т. д.).
Хотя многопоточность открывает огромные возможности для повышения производительности и создания отзывчивых приложений, она также порождает сложности — такие как синхронизация, взаимодействие между потоками и потенциальные условия гонки.
Шаблоны проектирования многопоточности — это повторно используемые решения, позволяющие справиться с подобными типичными проблемами.
📌 Изучим эти шаблоны.
[1.] Шаблон «Производитель‑потребитель» (Producer-Consumer)
* В этом шаблоне задействованы два типа потоков: производители, которые генерируют данные, и потребители, которые эти данные обрабатывают.
* Общая очередь выступает в роли буфера между ними.
Когда использовать?
* Когда задачи можно разделить на отдельные этапы производства и потребления, и вы хотите разграничить эти этапы для повышения параллелизма и эффективности.
[2.] Шаблон «Пул потоков»
* Поддерживает набор рабочих потоков, которые можно повторно использовать для выполнения задач.
* Позволяет избежать накладных расходов на создание и уничтожение потоков для каждой задачи.
Когда использовать?
* Когда у вас большое количество краткосрочных задач и вы хотите контролировать число потоков для более эффективного использования ресурсов и повышения производительности.
[3.] Шаблон «Фьючерсы и промисы» (Futures and Promises)
* Представляет результат асинхронной операции.
* Промис — это объект, хранящий итоговый результат, а фьючер предоставляет способ получить этот результат, когда он станет доступен.
Когда использовать?
* Когда вы работаете с длительными операциями, которые хотите выполнять параллельно, не блокируя основной поток.
[4.] Шаблон «Объект‑монитор» (Monitor Object )
* Обеспечивает механизм синхронизации доступа к общим ресурсам.
* Позволяет только одному потоку выполнять критический участок кода в каждый момент времени, предотвращая условия гонки.
Когда использовать?
* Когда нужно защитить общие данные или ресурсы от одновременного доступа и обеспечить потокобезопасность.
[5.] Шаблон «Блокировка чтения‑записи» ( Read-Write Lock)
* Позволяет нескольким потокам одновременно читать из общего ресурса, но только одному потоку записывать в него в каждый момент времени.
Когда использовать?
* Когда у вас есть общий ресурс, в котором операции чтения выполняются чаще, чем записи, и вы хотите оптимизировать параллельное чтение.
[6.] Шаблон «Барьер» (Barrier )
* Синхронизирует группу потоков, заставляя их ожидать в общей точке перед дальнейшим выполнением.
Когда использовать?
* Когда у вас есть параллельные задачи, которые должны завершить определённый этап перед переходом к следующему.
[7.] Шаблон «Активный объект» (Active Object)
* Разделяет выполнение метода и его вызов в параллельных системах.
* Включает объект со собственным потоком управления и планировщик для постановки в очередь и выполнения запросов на методы.
Когда использовать?
* Когда вы хотите инкапсулировать логику управления потоками и планирования внутри объекта, обеспечив более чистый интерфейс для параллельных операций.
👍12❤3🤝2🤣1
This media is not supported in your browser
VIEW IN TELEGRAM
Игра "Tennis for Two", созданная в 1958 году физиком Уильямом Хигинботэмом (William Higinbotham), которую часто называют первой видеоигрой, в которой для интерактивного игрового процесса использовался осциллограф
❤🔥29😁8👍4🔥4🫡2
Выпускники Стэнфорда обнаружили, что их дипломы больше не гарантируют трудоустройство из-за ИИ
Выпускники факультета компьютерных наук Стэнфордского университета в Калифорнии столкнулись с тем, что их дипломы больше не обеспечивают трудоустройство: инструменты на базе ИИ для программирования начали опережать по эффективности начинающих специалистов.
Диплом Стэнфорда долгое время считался заветной целью для будущих IT‑специалистов, но теперь, по словам выпускников, его ценность на рынке труда заметно снизилась. Окончившие университет в последние годы выпускники признаются, что не могут найти работу. При этом ситуация на рынке изменилась стремительно: сегодня ИИ‑инструменты в ряде задач программирования превосходят большинство людей.
В результате технологическим компаниям больше не требуется такое количество начинающих разработчиков. По словам выпускников, работодатели всё чаще отдают предпочтение кандидатам с солидным резюме — тем, кто способен самостоятельно вести разработку продуктов и научные исследования. Задачи начального уровня при этом всё чаще автоматизируются с помощью ИИ, из‑за чего недавние выпускники сталкиваются с трудностями при поиске работы.
Один из бывших студентов Стэнфорда рассказал, что на факультете компьютерных наук царит подавленная атмосфера. Студенты, которым только предстоит окончить университет, уже обеспокоены перспективами трудоустройства, а выпускники прошлых лет так и не смогли реализовать ожидания, связанные с получением престижного диплома.
Похожая ситуация складывается и в других университетах Калифорнии. Издание приводит историю выпускницы Университета Лойола Мэримаунта в Лос‑Анджелесе, которая приехала учиться в США из Турции. После получения диплома она вернулась на родину, чтобы набраться опыта в стартапе, затем вновь переехала в США, но за полугода так и не смогла найти работу, подав сотни заявок.
https://www.latimes.com/business/story/2025-12-19/they-graduated-from-stanford-due-to-ai-they-cant-find-job
Выпускники факультета компьютерных наук Стэнфордского университета в Калифорнии столкнулись с тем, что их дипломы больше не обеспечивают трудоустройство: инструменты на базе ИИ для программирования начали опережать по эффективности начинающих специалистов.
Диплом Стэнфорда долгое время считался заветной целью для будущих IT‑специалистов, но теперь, по словам выпускников, его ценность на рынке труда заметно снизилась. Окончившие университет в последние годы выпускники признаются, что не могут найти работу. При этом ситуация на рынке изменилась стремительно: сегодня ИИ‑инструменты в ряде задач программирования превосходят большинство людей.
В результате технологическим компаниям больше не требуется такое количество начинающих разработчиков. По словам выпускников, работодатели всё чаще отдают предпочтение кандидатам с солидным резюме — тем, кто способен самостоятельно вести разработку продуктов и научные исследования. Задачи начального уровня при этом всё чаще автоматизируются с помощью ИИ, из‑за чего недавние выпускники сталкиваются с трудностями при поиске работы.
Один из бывших студентов Стэнфорда рассказал, что на факультете компьютерных наук царит подавленная атмосфера. Студенты, которым только предстоит окончить университет, уже обеспокоены перспективами трудоустройства, а выпускники прошлых лет так и не смогли реализовать ожидания, связанные с получением престижного диплома.
Похожая ситуация складывается и в других университетах Калифорнии. Издание приводит историю выпускницы Университета Лойола Мэримаунта в Лос‑Анджелесе, которая приехала учиться в США из Турции. После получения диплома она вернулась на родину, чтобы набраться опыта в стартапе, затем вновь переехала в США, но за полугода так и не смогла найти работу, подав сотни заявок.
https://www.latimes.com/business/story/2025-12-19/they-graduated-from-stanford-due-to-ai-they-cant-find-job
Los Angeles Times
They graduated from Stanford. Due to AI, they can't find a job
A Stanford software engineering degree used to be a golden ticket.
😢11❤2👎2😁2🥴2🤬1🌚1
Replication, Partitioning и Sharding
(продолжение предыдущего поста)
1. Replication (репликация)
- Суть: копирование данных на множество серверов. Каждый сервер хранит полную копию датасета.
- Ключевые особенности:
- обеспечивает работу системы при сбоях (если один сервер выходит из строя, другие продолжают работать);
- масштабирует трафик чтения (но не записи);
- использует модели «ведущий–ведомый» (leader–follower) или «множество ведущих» (multi–leader);
- оптимальна для нагрузок с преобладанием операций чтения (read–heavy workloads).
- Пример использования: создание дополнительных slave–серверов для снятия нагрузки с основного сервера, выполнение ресурсоёмких задач (например, аналитических отчётов) на отдельных серверах без влияния на работу других пользователей.
2. Partitioning (партиционирование)
- Суть: разделение большой таблицы на более мелкие части (партиции) внутри одного сервера базы данных. Каждая партиция хранит подмножество строк.
- Ключевые особенности:
- ускоряет запросы к большим таблицам за счёт распределения нагрузки;
- упрощает обслуживание и очистку данных (cleanup and maintenance);
- не требует добавления новых машин — работает в рамках одного сервера;
- разбивает данные по выбранным администратором критериям (например, по дате публикации на новостных сайтах).
- Пример использования: секционирование таблиц с большим объёмом данных для ускорения обработки запросов.
3. Sharding (шардирование)
- Суть: распределение данных по разным физическим машинам (шардам) на основе ключа шардинга. Связанные данные группируются и хранятся на одном сервере.
- Ключевые особенности:
- позволяет горизонтально масштабировать систему (horizontal scaling);
- масштабирует как трафик чтения, так и записи;
- требует логики маршрутизации, «осведомлённой» о шардах (shard–aware routing logic);
- используется, когда одна база данных не справляется с нагрузкой;
- ключ шардинга (например, ID пользователя) определяет, на каком сервере будут храниться данные.
- Пример использования: в социальных сетях все данные пользователя (по ключу — ID пользователя) хранятся и обрабатываются на одном сервере, что упрощает обработку и ускоряет запросы.
### Краткое резюме:
- Replication — про отказоустойчивость и масштабирование чтения через копирование полных копий данных.
- Partitioning — про ускорение работы с большими таблицами путём разделения данных внутри одного сервера.
- Sharding — про распределение данных по разным серверам для масштабирования как чтения, так и записи, подходит для крупномасштабных систем.
(продолжение предыдущего поста)
1. Replication (репликация)
- Суть: копирование данных на множество серверов. Каждый сервер хранит полную копию датасета.
- Ключевые особенности:
- обеспечивает работу системы при сбоях (если один сервер выходит из строя, другие продолжают работать);
- масштабирует трафик чтения (но не записи);
- использует модели «ведущий–ведомый» (leader–follower) или «множество ведущих» (multi–leader);
- оптимальна для нагрузок с преобладанием операций чтения (read–heavy workloads).
- Пример использования: создание дополнительных slave–серверов для снятия нагрузки с основного сервера, выполнение ресурсоёмких задач (например, аналитических отчётов) на отдельных серверах без влияния на работу других пользователей.
2. Partitioning (партиционирование)
- Суть: разделение большой таблицы на более мелкие части (партиции) внутри одного сервера базы данных. Каждая партиция хранит подмножество строк.
- Ключевые особенности:
- ускоряет запросы к большим таблицам за счёт распределения нагрузки;
- упрощает обслуживание и очистку данных (cleanup and maintenance);
- не требует добавления новых машин — работает в рамках одного сервера;
- разбивает данные по выбранным администратором критериям (например, по дате публикации на новостных сайтах).
- Пример использования: секционирование таблиц с большим объёмом данных для ускорения обработки запросов.
3. Sharding (шардирование)
- Суть: распределение данных по разным физическим машинам (шардам) на основе ключа шардинга. Связанные данные группируются и хранятся на одном сервере.
- Ключевые особенности:
- позволяет горизонтально масштабировать систему (horizontal scaling);
- масштабирует как трафик чтения, так и записи;
- требует логики маршрутизации, «осведомлённой» о шардах (shard–aware routing logic);
- используется, когда одна база данных не справляется с нагрузкой;
- ключ шардинга (например, ID пользователя) определяет, на каком сервере будут храниться данные.
- Пример использования: в социальных сетях все данные пользователя (по ключу — ID пользователя) хранятся и обрабатываются на одном сервере, что упрощает обработку и ускоряет запросы.
### Краткое резюме:
- Replication — про отказоустойчивость и масштабирование чтения через копирование полных копий данных.
- Partitioning — про ускорение работы с большими таблицами путём разделения данных внутри одного сервера.
- Sharding — про распределение данных по разным серверам для масштабирования как чтения, так и записи, подходит для крупномасштабных систем.
Telegram
METANIT.COM
Replication, Partitioning и Sharding
(продолжение в следующем посте)
(продолжение в следующем посте)
❤3👍3🤝3
Вышла новая версия популярного отладчика - GDB 17.
GDB поддерживает отладку на уровне исходников широкого спектра языков (Ada, C, C++, D, Fortran, Go, Objective-C, Modula-2, Pascal, Rust и т.д.) на различных аппаратных (i386, amd64, ARM, RISC-V, LoongArch и т.д.) и программных платформах (GNU/Linux, *BSD, Unix, Windows, macOS).
Основные изменения направлены на повышение безопасности, удобства отладки и интеграции с современными технологиями. Ключевые нововведения в GDB 17:
1. Поддержка теневого стека (CET Shadow Stack) для x86-64. Это позволяет отлаживать программы, использующие аппаратную защиту от переполнения буфера в стеке, появившуюся в ядре Linux 6.6. Теневой стек сохраняет адреса возврата функций отдельно от основного стека, что затрудняет эксплуатацию эксплоитов.
2. Отладка программ с Guarded Control Stacks (GCS) на AArch64. GCS предоставляет аппаратную защиту адресов возврата из функций, блокируя эксплоиты, использующие методы возвратно-ориентированного программирования (ROP).
3. Полная поддержка записи выполнения программы для RISC-V RV64GC. Это позволяет воспроизводить участки кода в обратном направлении для отладки.
4. Улучшения в команде `info threads`. Добавлены опции
5. Расширения в команде `info sharedlibrary`. На платформах Linux и FreeBSD теперь показываются адреса для всего диапазона памяти, выделенного разделяемой библиотеке, а не только базовый адрес и адреса секции
6. Поддержка снимков состояния (checkpoint) в Linux. Позволяет использовать снимки при одновременной отладке нескольких процессов.
7. Улучшения в Python API. Добавлены новые классы
8. Улучшения в протоколе DAP (Debugger Adapter Protocol). Реализована поддержка запросов
9. Новые переменные. Добавлены
10. Опции для отключения подсистем. Добавлены
11. Прекращение поддержки UST в gdbserver. UST (static tracepoint) больше не поддерживается.
https://www.sourceware.org/gdb/
https://www.mail-archive.com/info-gnu@gnu.org/msg03477.html
GDB поддерживает отладку на уровне исходников широкого спектра языков (Ada, C, C++, D, Fortran, Go, Objective-C, Modula-2, Pascal, Rust и т.д.) на различных аппаратных (i386, amd64, ARM, RISC-V, LoongArch и т.д.) и программных платформах (GNU/Linux, *BSD, Unix, Windows, macOS).
Основные изменения направлены на повышение безопасности, удобства отладки и интеграции с современными технологиями. Ключевые нововведения в GDB 17:
1. Поддержка теневого стека (CET Shadow Stack) для x86-64. Это позволяет отлаживать программы, использующие аппаратную защиту от переполнения буфера в стеке, появившуюся в ядре Linux 6.6. Теневой стек сохраняет адреса возврата функций отдельно от основного стека, что затрудняет эксплуатацию эксплоитов.
2. Отладка программ с Guarded Control Stacks (GCS) на AArch64. GCS предоставляет аппаратную защиту адресов возврата из функций, блокируя эксплоиты, использующие методы возвратно-ориентированного программирования (ROP).
3. Полная поддержка записи выполнения программы для RISC-V RV64GC. Это позволяет воспроизводить участки кода в обратном направлении для отладки.
4. Улучшения в команде `info threads`. Добавлены опции
-stopped и -running для отображения только остановленных или выполняемых потоков.5. Расширения в команде `info sharedlibrary`. На платформах Linux и FreeBSD теперь показываются адреса для всего диапазона памяти, выделенного разделяемой библиотеке, а не только базовый адрес и адреса секции
.text.6. Поддержка снимков состояния (checkpoint) в Linux. Позволяет использовать снимки при одновременной отладке нескольких процессов.
7. Улучшения в Python API. Добавлены новые классы
gdb.Color и gdb.ParameterPrefix, атрибут gdb.Value.is_unavailable, функция gdb.warning(). Прекращена поддержка Python версий ниже 3.4. 8. Улучшения в протоколе DAP (Debugger Adapter Protocol). Реализована поддержка запросов
completions и добавлена опция --binary-output для отключения преобразования символов перевода строки на Windows.9. Новые переменные. Добавлены
_colorsupport (список цветовых пространств, поддерживаемых терминалом), linker_namespace_count и _linker_namespace (список активных пространств имён компоновщика).10. Опции для отключения подсистем. Добавлены
--disable-gdb-compile, --disable-gdb-dwarf-support и --disable-gdb-mdebug-support для отключения определённых функций.11. Прекращение поддержки UST в gdbserver. UST (static tracepoint) больше не поддерживается.
https://www.sourceware.org/gdb/
https://www.mail-archive.com/info-gnu@gnu.org/msg03477.html
❤7🔥4🥰3🤮1
В руководство по языку Java добавил главу про Взаимодействие с нативным кодом с помощью JNI и Foreign Functions и Memory API
https://metanit.com/java/tutorial/16.1.php
#java
https://metanit.com/java/tutorial/16.1.php
#java
🔥13👍5👏1
Реализация кэширования на бэкенде
(продолжение предыдущего поста)
→ Кэширование — это процесс хранения часто используемых данных в быстром слое хранения для снижения задержки и нагрузки на бэкенд.
→ Оно повышает производительность, масштабируемость и удобство использования систем бэкенда с высокой нагрузкой.
✓ Почему кэширование важно
→ Сокращает количество повторяющихся запросов к базе данных.
→ Ускоряет время ответа API.
→ Снижает нагрузку на сервер и базу данных.
→ Повышает масштабируемость системы.
✓ Распространённые уровни кэширования
→ Клиентский кэш → кэш браузера, кэш мобильного приложения.
→ Кэш CDN → хранит статические ресурсы ближе к пользователям.
→ Кэш приложения → кэширование в оперативной памяти внутри сервисов бэкенда.
→ Кэш базы данных → кэширование результатов запросов.
✓ Популярные технологии кэширования
→ Redis → хранилище данных в оперативной памяти, поддерживает сохранение данных и сложные структуры данных.
→ Memcached → простое и высокоскоростное кэширование по принципу «ключ‑значение».
→ Кэши CDN → Cloudflare, CloudFront для статического контента.
✓ Стратегии кэширования
→ Cache‑Aside (отложенная загрузка)
✓ Приложение сначала проверяет кэш.
✓ При отсутствии данных в кэше извлекает их из базы данных и сохраняет в кэш.
→ Write‑Through Cache (запись через кэш)
✓ Данные записываются в кэш и базу данных одновременно.
✓ Обеспечивает согласованность данных.
→ Write‑Behind (Write‑Back) Cache (отложенная запись)
✓ Записи сначала попадают в кэш.
✓ База данных обновляется асинхронно.
→ Read‑Through Cache (чтение через кэш)
✓ Кэш автоматически загружает данные из базы данных при отсутствии в кэше.
✓ Что стоит кэшировать
→ Часто используемые данные.
→ Запросы с преобладанием операций чтения.
→ Конфигурационные данные.
→ Данные сессии.
→ Вычисленные или агрегированные результаты.
✓ Стратегии аннулирования кэша
→ Временное устаревание (TTL) → данные автоматически удаляются по истечении заданного времени.
→ Аннулирование на основе событий → кэш очищается при наступлении определённого события.
→ Ручная очистка кэша → принудительное удаление данных из кэша.
→ Версионированные ключи кэша → использование ключей с версиями для управления актуальностью данных.
✓ Типичные проблемы
→ Использование устаревших данных.
→ Несогласованность кэша.
→ «Штурм кэша» (*cache stampede*) при высокой нагрузке.
→ Ограничения по объёму памяти.
✓ Лучшие практики
→ Всегда указывайте TTL для кэшированных данных.
→ Избегайте кэширования сильно изменчивых данных.
→ Тщательно подбирайте ключи кэша.
→ Отслеживайте соотношение попаданий и промахов в кэш.
→ Комбинируйте кэширование с индексированием базы данных.
(продолжение предыдущего поста)
→ Кэширование — это процесс хранения часто используемых данных в быстром слое хранения для снижения задержки и нагрузки на бэкенд.
→ Оно повышает производительность, масштабируемость и удобство использования систем бэкенда с высокой нагрузкой.
✓ Почему кэширование важно
→ Сокращает количество повторяющихся запросов к базе данных.
→ Ускоряет время ответа API.
→ Снижает нагрузку на сервер и базу данных.
→ Повышает масштабируемость системы.
✓ Распространённые уровни кэширования
→ Клиентский кэш → кэш браузера, кэш мобильного приложения.
→ Кэш CDN → хранит статические ресурсы ближе к пользователям.
→ Кэш приложения → кэширование в оперативной памяти внутри сервисов бэкенда.
→ Кэш базы данных → кэширование результатов запросов.
✓ Популярные технологии кэширования
→ Redis → хранилище данных в оперативной памяти, поддерживает сохранение данных и сложные структуры данных.
→ Memcached → простое и высокоскоростное кэширование по принципу «ключ‑значение».
→ Кэши CDN → Cloudflare, CloudFront для статического контента.
✓ Стратегии кэширования
→ Cache‑Aside (отложенная загрузка)
✓ Приложение сначала проверяет кэш.
✓ При отсутствии данных в кэше извлекает их из базы данных и сохраняет в кэш.
→ Write‑Through Cache (запись через кэш)
✓ Данные записываются в кэш и базу данных одновременно.
✓ Обеспечивает согласованность данных.
→ Write‑Behind (Write‑Back) Cache (отложенная запись)
✓ Записи сначала попадают в кэш.
✓ База данных обновляется асинхронно.
→ Read‑Through Cache (чтение через кэш)
✓ Кэш автоматически загружает данные из базы данных при отсутствии в кэше.
✓ Что стоит кэшировать
→ Часто используемые данные.
→ Запросы с преобладанием операций чтения.
→ Конфигурационные данные.
→ Данные сессии.
→ Вычисленные или агрегированные результаты.
✓ Стратегии аннулирования кэша
→ Временное устаревание (TTL) → данные автоматически удаляются по истечении заданного времени.
→ Аннулирование на основе событий → кэш очищается при наступлении определённого события.
→ Ручная очистка кэша → принудительное удаление данных из кэша.
→ Версионированные ключи кэша → использование ключей с версиями для управления актуальностью данных.
✓ Типичные проблемы
→ Использование устаревших данных.
→ Несогласованность кэша.
→ «Штурм кэша» (*cache stampede*) при высокой нагрузке.
→ Ограничения по объёму памяти.
✓ Лучшие практики
→ Всегда указывайте TTL для кэшированных данных.
→ Избегайте кэширования сильно изменчивых данных.
→ Тщательно подбирайте ключи кэша.
→ Отслеживайте соотношение попаданий и промахов в кэш.
→ Комбинируйте кэширование с индексированием базы данных.
Telegram
METANIT.COM
Реализация кэширования на бэкенде
(продолжение в следующем посте)
(продолжение в следующем посте)
👍7❤3💯2
Как работает уязвимость Man in the Middle Attack (MitM)
(продолжение предыдущего поста)
Man in the Middle Attack (MitM) — это сетевая атака, при которой злоумышленник встраивается в канал связи между двумя участниками (например, пользователем и сервером), перехватывает и, при необходимости, изменяет передаваемые данные. Жертвы при этом не подозревают о вмешательстве.
#### Этапы работы MitM-атаки:
1. Перехват трафика (например, через Wi-Fi eavesdropping):
* Злоумышленник подключается к незащищённой или поддельной Wi-Fi-точке доступа («Evil Twin»), имитирующей легитимную сеть.
* Устройства жертв автоматически подключаются к этой точке, и весь их трафик проходит через злоумышленника.
* Пример на схеме: стрелка от ноутбука к роутеру с подписью «Wifi eavesdropping».
2. Подмена HTTPS-соединения (HTTPS spoofing):
* Если трафик защищён протоколом HTTPS, атакующий пытается обойти шифрование.
* Используются техники вроде SSL Stripping — понижение протокола с HTTPS до незащищённого HTTP.
* Либо создаётся ложное TLS-соединение, чтобы данные стали читаемыми.
* На схеме это отражено стрелкой от глобуса (интернета) с подписью «HTTPS spoofing».
3. Подмена DNS-запросов (DNS spoofing):
* Злоумышленник отравляет кэш DNS или подменяет DNS-серверы.
* В результате жертва перенаправляется на фальшивый сайт, который выглядит как легитимный.
* На схеме: стрелка от глобуса к браузеру с подписью «DNS spoofing».
4. Перехват и анализ данных:
* Получив доступ к каналу связи, злоумышленник прослушивает трафик — извлекает логины, пароли, токены, cookies и другую конфиденциальную информацию.
* Данные могут передаваться в открытом виде, если отсутствует шифрование (например, из-за понижения протокола).
5. Манипуляция данными:
* Атакующий может изменять содержимое запросов и ответов:
* подменять страницы авторизации;
* внедрять вредоносный код (веб-инъекции);
* перенаправлять пользователя на фишинговые ресурсы.
* Жертва при этом не замечает подмены, так как всё выглядит легитимно.
#### Уязвимости, которые использует MitM:
* Отсутствие шифрования (незащищённые Wi-Fi-сети, HTTP вместо HTTPS).
* Слабая аутентификация конечных точек (например, отсутствие двухфакторной аутентификации).
* Ненадёжные DNS-серверы (без поддержки DNSSEC).
* Уязвимости в сетевых протоколах (ARP, TLS, Wi-Fi-аутентификация).
#### Меры защиты (указаны на схеме зелёными галочками):
1. Использование протоколов шифрования (HTTPS, VPN, TLS) — защищает трафик от перехвата.
2. Сильная аутентификация конечных точек (двухфакторная аутентификация, сертификаты) — усложняет подмену участников.
3. Регулярный аудит безопасности и мониторинг сети — позволяет обнаружить подозрительную активность (например, аномальные DNS-запросы).
Итог: MitM-атака опасна тем, что проходит незаметно для жертв и может привести к утечке конфиденциальных данных, компрометации учётных записей и финансовым потерям. Защита требует комплексного подхода: шифрования, аутентификации и постоянного мониторинга сети.
(продолжение предыдущего поста)
Man in the Middle Attack (MitM) — это сетевая атака, при которой злоумышленник встраивается в канал связи между двумя участниками (например, пользователем и сервером), перехватывает и, при необходимости, изменяет передаваемые данные. Жертвы при этом не подозревают о вмешательстве.
#### Этапы работы MitM-атаки:
1. Перехват трафика (например, через Wi-Fi eavesdropping):
* Злоумышленник подключается к незащищённой или поддельной Wi-Fi-точке доступа («Evil Twin»), имитирующей легитимную сеть.
* Устройства жертв автоматически подключаются к этой точке, и весь их трафик проходит через злоумышленника.
* Пример на схеме: стрелка от ноутбука к роутеру с подписью «Wifi eavesdropping».
2. Подмена HTTPS-соединения (HTTPS spoofing):
* Если трафик защищён протоколом HTTPS, атакующий пытается обойти шифрование.
* Используются техники вроде SSL Stripping — понижение протокола с HTTPS до незащищённого HTTP.
* Либо создаётся ложное TLS-соединение, чтобы данные стали читаемыми.
* На схеме это отражено стрелкой от глобуса (интернета) с подписью «HTTPS spoofing».
3. Подмена DNS-запросов (DNS spoofing):
* Злоумышленник отравляет кэш DNS или подменяет DNS-серверы.
* В результате жертва перенаправляется на фальшивый сайт, который выглядит как легитимный.
* На схеме: стрелка от глобуса к браузеру с подписью «DNS spoofing».
4. Перехват и анализ данных:
* Получив доступ к каналу связи, злоумышленник прослушивает трафик — извлекает логины, пароли, токены, cookies и другую конфиденциальную информацию.
* Данные могут передаваться в открытом виде, если отсутствует шифрование (например, из-за понижения протокола).
5. Манипуляция данными:
* Атакующий может изменять содержимое запросов и ответов:
* подменять страницы авторизации;
* внедрять вредоносный код (веб-инъекции);
* перенаправлять пользователя на фишинговые ресурсы.
* Жертва при этом не замечает подмены, так как всё выглядит легитимно.
#### Уязвимости, которые использует MitM:
* Отсутствие шифрования (незащищённые Wi-Fi-сети, HTTP вместо HTTPS).
* Слабая аутентификация конечных точек (например, отсутствие двухфакторной аутентификации).
* Ненадёжные DNS-серверы (без поддержки DNSSEC).
* Уязвимости в сетевых протоколах (ARP, TLS, Wi-Fi-аутентификация).
#### Меры защиты (указаны на схеме зелёными галочками):
1. Использование протоколов шифрования (HTTPS, VPN, TLS) — защищает трафик от перехвата.
2. Сильная аутентификация конечных точек (двухфакторная аутентификация, сертификаты) — усложняет подмену участников.
3. Регулярный аудит безопасности и мониторинг сети — позволяет обнаружить подозрительную активность (например, аномальные DNS-запросы).
Итог: MitM-атака опасна тем, что проходит незаметно для жертв и может привести к утечке конфиденциальных данных, компрометации учётных записей и финансовым потерям. Защита требует комплексного подхода: шифрования, аутентификации и постоянного мониторинга сети.
Telegram
METANIT.COM
Как работает уязвимость Man in the Middle Attack (MitM)
(продолжение в следующем посте)
(продолжение в следующем посте)
👍6🔥4❤2
Microsoft планирует к 2030 году исключить весь код на C и C++ из основных баз
Microsoft планирует модернизировать свои крупнейшие кодовые базы и к концу десятилетия полностью исключить весь код на C/C++, заменив его на Rust.
«Моя цель — к 2030 году исключить из кода Microsoft каждую строку на C и C++. Наша стратегия заключается в объединении ИИ и алгоритмов для переписывания крупнейших кодовых баз Microsoft. Наша путеводная звезда — “1 инженер, 1 месяц, 1 миллион строк кода”. Для выполнения этой ранее невообразимой задачи мы создали мощную инфраструктуру обработки кода. Наша алгоритмическая инфраструктура создает масштабируемый граф над исходным кодом в больших масштабах. Затем инфраструктура обработки ИИ позволяет нам применять агентов ИИ, управляемых алгоритмами, для внесения изменений в код в больших масштабах. Ядро этой инфраструктуры уже работает над такими задачами, как понимание кода», — отметил ведущий инженер Microsoft Гален Хант в посте на LinkedIn.
https://www.thurrott.com/dev/330980/microsoft-to-replace-all-c-c-code-with-rust-by-2030
Microsoft планирует модернизировать свои крупнейшие кодовые базы и к концу десятилетия полностью исключить весь код на C/C++, заменив его на Rust.
«Моя цель — к 2030 году исключить из кода Microsoft каждую строку на C и C++. Наша стратегия заключается в объединении ИИ и алгоритмов для переписывания крупнейших кодовых баз Microsoft. Наша путеводная звезда — “1 инженер, 1 месяц, 1 миллион строк кода”. Для выполнения этой ранее невообразимой задачи мы создали мощную инфраструктуру обработки кода. Наша алгоритмическая инфраструктура создает масштабируемый граф над исходным кодом в больших масштабах. Затем инфраструктура обработки ИИ позволяет нам применять агентов ИИ, управляемых алгоритмами, для внесения изменений в код в больших масштабах. Ядро этой инфраструктуры уже работает над такими задачами, как понимание кода», — отметил ведущий инженер Microsoft Гален Хант в посте на LinkedIn.
https://www.thurrott.com/dev/330980/microsoft-to-replace-all-c-c-code-with-rust-by-2030
Thurrott.com
Microsoft to Replace All C/C++ Code With Rust by 2030
Microsoft is taking an impressive step in modernizing its biggest codebases and will eliminate all C/C++ code by the end of the decade.
🤣32🖕17🤡9👍6🤯6😭2👎1🔥1🌭1
Минцифры РФ хочет ввести единый идентификатор пользователя для всех интернет‑платформ
Минцифры введет единый идентификатор пользователя для всех цифровых платформ, чтобы точнее считать аудиторию. Об этом рассказала заместитель главы Минцифры России Бэлла Черкесова на заседании Общественного совета при министерстве.
Замминистра отметила, что идет работа по улучшению подходов к медиаизмерениям через способы унифицирования данных. По ее словам, сейчас совместно с отраслью идут обсуждения о том, как повысить прозрачность этой информации. Например, к диалогу уже присоединились российские онлайн-кинотеатры.
В пресс-службе Минцифры рассказали, что данные о просмотрах и активности пользователей онлайн-кинотеатров и соцсетей помогают оценить популярность контента. Для сбора этой статистики интернет-ресурсы из реестра Роскомнадзора передают компании Mediascope - измерителю ТВ и онлайн-аудитории - обезличенные данные в зашифрованном виде.
"Никто никогда не узнает, что смотрел конкретный пользователь. Данные передаются компании Mediascope в уже обезличенном виде. То есть обезличивает их не измеритель аудитории, а интернет-ресурсы", - рассказали в ведомстве.
Минцифры предлагает обновить состав передаваемых данных и изменить подход к формированию идентификатора пользователя (ID пользователя). Сейчас документ обсуждается с отраслью, бизнесом и заинтересованными ведомствами.
Важно, что ID пользователя будет неизменным. Сейчас один и тот же человек, который заходит на страницу с разных устройств и на разных площадках, учитывается как несколько уникальных пользователей, что искажает статистику. Предлагается привязывать ID к номеру телефона, а после этого обезличивать данные зрителя. Обезличивание и шифрование, как и сейчас, будут осуществляться интернет-ресурсами перед передачей данных.
https://rg.ru/2025/12/22/v-rossii-poiavitsia-edinyj-identifikator-polzovatelia-v-internete.html
Минцифры введет единый идентификатор пользователя для всех цифровых платформ, чтобы точнее считать аудиторию. Об этом рассказала заместитель главы Минцифры России Бэлла Черкесова на заседании Общественного совета при министерстве.
Замминистра отметила, что идет работа по улучшению подходов к медиаизмерениям через способы унифицирования данных. По ее словам, сейчас совместно с отраслью идут обсуждения о том, как повысить прозрачность этой информации. Например, к диалогу уже присоединились российские онлайн-кинотеатры.
В пресс-службе Минцифры рассказали, что данные о просмотрах и активности пользователей онлайн-кинотеатров и соцсетей помогают оценить популярность контента. Для сбора этой статистики интернет-ресурсы из реестра Роскомнадзора передают компании Mediascope - измерителю ТВ и онлайн-аудитории - обезличенные данные в зашифрованном виде.
"Никто никогда не узнает, что смотрел конкретный пользователь. Данные передаются компании Mediascope в уже обезличенном виде. То есть обезличивает их не измеритель аудитории, а интернет-ресурсы", - рассказали в ведомстве.
Минцифры предлагает обновить состав передаваемых данных и изменить подход к формированию идентификатора пользователя (ID пользователя). Сейчас документ обсуждается с отраслью, бизнесом и заинтересованными ведомствами.
Важно, что ID пользователя будет неизменным. Сейчас один и тот же человек, который заходит на страницу с разных устройств и на разных площадках, учитывается как несколько уникальных пользователей, что искажает статистику. Предлагается привязывать ID к номеру телефона, а после этого обезличивать данные зрителя. Обезличивание и шифрование, как и сейчас, будут осуществляться интернет-ресурсами перед передачей данных.
https://rg.ru/2025/12/22/v-rossii-poiavitsia-edinyj-identifikator-polzovatelia-v-internete.html
Российская газета
Один ID на все. Зачем Минцифры хочет ввести единый идентификатор пользователя во всех интернет-сервисах
Минцифры введет единый идентификатор пользователя для всех цифровых платформ, чтобы точнее считать аудиторию. Об этом рассказала заместитель главы Минцифры России Бэлла Черкесова на заседании Общественного совета при министерстве.
🤬26🤡16👌2🌭2🖕2❤1🤯1
Принципы ACID
(продолжение предыдущего поста)
ACID — это набор свойств, обеспечивающих надёжность и целостность данных при обработке транзакций в системах управления базами данных (СУБД). Аббревиатура включает четыре ключевых принципа: Atomicity (атомарность), Consistency (согласованность), Isolation (изолированность) и Durability (долговечность).
Соблюдение принципов ACID гарантирует надёжность, целостность и доступность данных в СУБД, что критически важно для финансовых, медицинских и других транзакционных систем.
1. Atomicity (Атомарность)
- Суть: каждая транзакция — единый неделимый блок операций, который либо выполняется полностью, либо не выполняется вовсе.
- Пример: при переводе денег с одного счёта на другой все шаги (проверка баланса, списание средств, зачисление) либо завершаются, либо отменяются, если что-то пошло не так.
- Механизм: СУБД использует логирование и откат транзакций для поддержания атомарности.
2. Consistency (Согласованность)
- Суть: каждая транзакция должна соблюдать правила и ограничения базы данных, поддерживая её целостность. Благодаря чему обеспечивается корректное состояние данных после транзакции.
- Пример: если в базе данных есть связь «клиент — заказ», транзакция не сможет создать заказ для несуществующего клиента.
- Механизм: ограничения целостности (уникальность, ссылочная целостность) гарантируют согласованность.
3. Isolation (Изолированность)
- Суть: параллельные транзакции выполняются независимо друг от друга, их промежуточные результаты невидимы до завершения.
- Пример: если два пользователя одновременно обновляют одну запись, изменения одного не повлияют на другого до фиксации транзакции.
- Механизм: СУБД использует блокировки и уровни изоляции (например, Serializable) для предотвращения конфликтов.
4. Durability (Долговечность)
- Суть: результаты завершённых транзакций сохраняются в энергонезависимой памяти и не теряются даже при сбоях системы. Данные остаются сохранёнными, несмотря на возможные ошибки.
- Пример: после подтверждения покупки в интернет-магазине данные о заказе останутся в базе, даже если произойдёт сбой сервера.
- Механизм: записи транзакций фиксируются в журнале (log) и переносятся в постоянное хранилище.
(продолжение предыдущего поста)
ACID — это набор свойств, обеспечивающих надёжность и целостность данных при обработке транзакций в системах управления базами данных (СУБД). Аббревиатура включает четыре ключевых принципа: Atomicity (атомарность), Consistency (согласованность), Isolation (изолированность) и Durability (долговечность).
Соблюдение принципов ACID гарантирует надёжность, целостность и доступность данных в СУБД, что критически важно для финансовых, медицинских и других транзакционных систем.
1. Atomicity (Атомарность)
- Суть: каждая транзакция — единый неделимый блок операций, который либо выполняется полностью, либо не выполняется вовсе.
- Пример: при переводе денег с одного счёта на другой все шаги (проверка баланса, списание средств, зачисление) либо завершаются, либо отменяются, если что-то пошло не так.
- Механизм: СУБД использует логирование и откат транзакций для поддержания атомарности.
2. Consistency (Согласованность)
- Суть: каждая транзакция должна соблюдать правила и ограничения базы данных, поддерживая её целостность. Благодаря чему обеспечивается корректное состояние данных после транзакции.
- Пример: если в базе данных есть связь «клиент — заказ», транзакция не сможет создать заказ для несуществующего клиента.
- Механизм: ограничения целостности (уникальность, ссылочная целостность) гарантируют согласованность.
3. Isolation (Изолированность)
- Суть: параллельные транзакции выполняются независимо друг от друга, их промежуточные результаты невидимы до завершения.
- Пример: если два пользователя одновременно обновляют одну запись, изменения одного не повлияют на другого до фиксации транзакции.
- Механизм: СУБД использует блокировки и уровни изоляции (например, Serializable) для предотвращения конфликтов.
4. Durability (Долговечность)
- Суть: результаты завершённых транзакций сохраняются в энергонезависимой памяти и не теряются даже при сбоях системы. Данные остаются сохранёнными, несмотря на возможные ошибки.
- Пример: после подтверждения покупки в интернет-магазине данные о заказе останутся в базе, даже если произойдёт сбой сервера.
- Механизм: записи транзакций фиксируются в журнале (log) и переносятся в постоянное хранилище.
Telegram
METANIT.COM
Принципы ACID
(продолжение в следующем посте)
(продолжение в следующем посте)
👍7🔥5🥰1🗿1