Forwarded from Node.JS [ru] | Серверный JavaScript
Как я хакнул рынок труда: пишем свой ИИ-комбайн для автооткликов на HH.ru
Если вы хоть раз искали работу в IT за последний год, то знаете, что рынок беспощаден к новичкам. Нужно откликнуться на сотни вакансий, а в итоге получаешь отказы от роботов. Чтобы пробиться через фильтры HR, нужно под каждую вакансию писать уникальное сопроводительное письмо. В этой статье автор сделал полный разбор того, как написал собственного автономного ИИ-агента, который ищет вакансии, фильтрует мусор с помощью локальной нейросети, пишет персонализированные сопроводительные письма и отчитывается в Telegram, пока пользователь спокойно занимается своими делами. Скрипт задумывался бесплатным, автономным и не требующим настройки вокруг платных API.
Читать далее
Если вы хоть раз искали работу в IT за последний год, то знаете, что рынок беспощаден к новичкам. Нужно откликнуться на сотни вакансий, а в итоге получаешь отказы от роботов. Чтобы пробиться через фильтры HR, нужно под каждую вакансию писать уникальное сопроводительное письмо. В этой статье автор сделал полный разбор того, как написал собственного автономного ИИ-агента, который ищет вакансии, фильтрует мусор с помощью локальной нейросети, пишет персонализированные сопроводительные письма и отчитывается в Telegram, пока пользователь спокойно занимается своими делами. Скрипт задумывался бесплатным, автономным и не требующим настройки вокруг платных API.
Читать далее
Forwarded from Цифровой геноцид
https://arxiv.org/abs/2606.30534
https://orca-wm.github.io/
Большинство современных систем ИИ обучаются решать конкретные задачи: предсказывать следующее слово в предложении, генерировать следующий кадр видео или выбирать следующее действие робота. Но люди не воспринимают мир как цепочку изолированных предсказаний. Мы строим внутреннюю модель того, как устроен мир — ментальную модель, которая позволяет представлять возможные сценарии, предсказывать последствия и принимать решения.
Новый подход под названием Orca стремится приблизить ИИ к этому принципу. Модель учится формировать представление о том, как мир меняется со временем.
Вместо вопроса «Что будет дальше?» Orca задаёт более глубокий вопрос:
«В каком состоянии сейчас находится мир и как он переходит в следующее состояние?»
Это называется предсказанием следующего состояния (Next-State Prediction). Цель — создать единое латентное пространство мира, в котором визуальная, языковая и связанная с действиями информация объединены в общее представление. В этом пространстве ИИ может рассуждать о связях между объектами, событиями и действиями независимо от формы данных.
Orca обучается двумя взаимодополняющими способами:
🔹 Бессознательное обучение — как человек впитывает окружающую среду, просто наблюдая за ней. Модель учится на непрерывных видеопотоках, улавливая паттерны движения, причинно-следственные связи и естественные изменения в мире.
🔹 Сознательное обучение — как человек понимает мир через язык и объяснения. Orca учится на описаниях важных событий и примерах визуального вопросно-ответного взаимодействия (VQA), связывая происходящее в мире с языковыми концепциями.
Для обучения исследователи собрали огромный датасет: 125 000 часов видео и 160 миллионов аннотаций событий. Это дало модели доступ к очень широкому спектру реальных ситуаций.
После обучения внутренней модели мира её основное представление замораживается. Дальше обучаются только небольшие специализированные модули, которые «считывают» из этого представления разные способности. Исследователи проверили, может ли это внутреннее понимание мира поддерживать:
Генерацию текста — общение о мире
Предсказание изображений — воображение возможных будущих визуальных состояний
Генерацию действий в физическом мире — принятие решений для агентов, взаимодействующих с окружением
Результаты показывают: чем сильнее внутреннее представление мира, тем лучше модель справляется с разными задачами. Orca превзошла другие ИИ-системы сопоставимого размера, которые обучались под конкретные задачи по отдельности. Это говорит о том, что общее понимание мира может быть эффективнее, чем создание отдельных моделей под каждую способность.
Главная идея Orca - переход от ИИ, который просто распознаёт паттерны, к ИИ, который развивает структурированное понимание реальности
https://orca-wm.github.io/
Большинство современных систем ИИ обучаются решать конкретные задачи: предсказывать следующее слово в предложении, генерировать следующий кадр видео или выбирать следующее действие робота. Но люди не воспринимают мир как цепочку изолированных предсказаний. Мы строим внутреннюю модель того, как устроен мир — ментальную модель, которая позволяет представлять возможные сценарии, предсказывать последствия и принимать решения.
Новый подход под названием Orca стремится приблизить ИИ к этому принципу. Модель учится формировать представление о том, как мир меняется со временем.
Вместо вопроса «Что будет дальше?» Orca задаёт более глубокий вопрос:
«В каком состоянии сейчас находится мир и как он переходит в следующее состояние?»
Это называется предсказанием следующего состояния (Next-State Prediction). Цель — создать единое латентное пространство мира, в котором визуальная, языковая и связанная с действиями информация объединены в общее представление. В этом пространстве ИИ может рассуждать о связях между объектами, событиями и действиями независимо от формы данных.
Orca обучается двумя взаимодополняющими способами:
🔹 Бессознательное обучение — как человек впитывает окружающую среду, просто наблюдая за ней. Модель учится на непрерывных видеопотоках, улавливая паттерны движения, причинно-следственные связи и естественные изменения в мире.
🔹 Сознательное обучение — как человек понимает мир через язык и объяснения. Orca учится на описаниях важных событий и примерах визуального вопросно-ответного взаимодействия (VQA), связывая происходящее в мире с языковыми концепциями.
Для обучения исследователи собрали огромный датасет: 125 000 часов видео и 160 миллионов аннотаций событий. Это дало модели доступ к очень широкому спектру реальных ситуаций.
После обучения внутренней модели мира её основное представление замораживается. Дальше обучаются только небольшие специализированные модули, которые «считывают» из этого представления разные способности. Исследователи проверили, может ли это внутреннее понимание мира поддерживать:
Генерацию текста — общение о мире
Предсказание изображений — воображение возможных будущих визуальных состояний
Генерацию действий в физическом мире — принятие решений для агентов, взаимодействующих с окружением
Результаты показывают: чем сильнее внутреннее представление мира, тем лучше модель справляется с разными задачами. Orca превзошла другие ИИ-системы сопоставимого размера, которые обучались под конкретные задачи по отдельности. Это говорит о том, что общее понимание мира может быть эффективнее, чем создание отдельных моделей под каждую способность.
Главная идея Orca - переход от ИИ, который просто распознаёт паттерны, к ИИ, который развивает структурированное понимание реальности
Forwarded from Цифровой геноцид
Эмоциональный дизайн и кенсай инжиниринг, разные подходы к измерению эмоций на уровне технологий
Как-то разговаривал с коллегой относительно опыта измерений эмоций при проектировании определенных технологий, например, рабочих интерфейсов тасктрекинга и других задач управления проектами: показательно, некоторая лакуна в отечественных подходах по сравнению с миром. Например, удивила молодая команда из Казахстана применяющая кансей-инжиниринг для проектирования веб-сайтов (ничего удивительного, но показательно, что метод используется у них, но не в РФ, хотя с 60ых-70ых эти работы ходили по миру и на производствах). Косвенно, это и повод задуматься о том, насколько реально положение российских исследований и проектирования опыта пользователя
The Kansei Engineering Approach in Web Design: Case of Transportation Website от молодого коллектива авторов Kazakh-British Technical University - я так понимаю, что магистерская диссертация, но вообще показательная с точки зрения уровня https://arxiv.org/pdf/2405.03223
О чем идет речь? Напомню, что кансей-инжиниринг разрабатывался изначально для компании Мазда и в каком-то смысле был альтернативой методам Кано - происходя из одного источника семантического дифференциала управления качеством Огсвуда.
Авторы применяют подход Кансей-инжиниринга, исследуя эмоциональное воздействие на логистический веб-сайт на примере платформы Reis.kz. Эта платформа, представляющая собой маркетплейс для поиска грузов и транспортных услуг, предоставляет подходящий контекст для оценки эффективности KE в улучшении пользовательского опыта в конкретной предметной области. Исследование выявляет эмоции, связанные с определёнными характеристиками продукта, через серию опросов, экспериментов и оценок. Впоследствии эти эмоции и психологические ощущения преобразуются в параметры привлекательного веб-дизайна.
Описание метода:
Определение стратегии компании
Сбор кансей-слов
Установка семантической дифференциальной шкалы
Сбор образцов продуктов
Список элементов/категорий
Эксперимент по оценке
Статистический анализ
Интерпретация проанализированных данных
Объяснение данных
Сотрудничество с дизайнерами
Сбор слов
первым шагом является сбор кансей-слов, связанных с новым продуктом и соответствующих стратегии, обсуждавшейся на предыдущем этапе. Кансей-слово — это термин, описывающий контекст продукта. Эти слова могут быть прилагательными или другими частями речи.
Для получения полного набора слов используются следующие источники:
Соответствующая литература
Эксперты
Опытные пользователи
Связанные исследования по Кансей
Идеи, видения
Часть кансей-слов была предоставлена маркетинговыми экспертами и пользователями Reis.kz, а некоторые были адаптированы из связанных исследований по Кансей.
Шкала и сбор образцов конкурентов/бенчмарк
Следующим шагом является размещение собранных кансей-слов в 5-балльной семантической дифференциальной (SD) анкете (шкала Лайкерта), где положительному кансей-слову соответствует наибольшее значение, а отрицательному — наименьшее.
Опросник
Для этого был произведен отбор экспериментальных субъектов и образцов. Респондентам демонстрировали образцы веб-сайтов, использованные в эксперименте по оценке по семантической шкале. В число выбранных транспортных компаний вошли не только казахстанские, но и международные. В список также были включены компании-бенчмарки (эталоны).
Список элементов/категорий
На этом этапе происходит выявление характеристик дизайна собранных образцов продуктов, таких как цвет, шрифт, форма, размер и логотип. Мы выбрали шесть характеристик из всех продуктов для анализа того, как каждый элемент влияет на эмоции:
Насыщенность и интенсивность используемых на странице цветов
Доминирующий цвет на сайте
Количество цветов, используемых на сайте
Видимость логотипа бренда
Размер шрифта, используемого на странице
Наличие изображений на странице и их доля
Данное исследование анализирует визуальные элементы дизайна, используемые на различных цифровых платформах. Таким образом, дизайн каждой платформы оценивается по насыщенности, интенсивности, доминирующим цветам, количеству цветов, видимости логотипа, размеру шрифта и наличию изображений.
Потом происходит непосредственно сбор кансей-цветов
В Кансей-инжиниринге цветовые модели играют важную роль, помогая понять эмоциональные реакции, которые вызывают цвета у пользователей. Анализируя цвета через модели, такие как RGB, CMYK или нечёткие цветовые модели , дизайнеры могут согласовывать эмоциональное воздействие цветов с предпочтениями пользователей. В этом исследовании акцент сделан на эмоциональном воздействии отдельных кансей-цветов, а не на использовании многоцветных палитр. Тем не менее, цветовая гармония может применяться в KE при проектировании веб-интерфейсов, чтобы обеспечить эстетическую целостность и приятность используемых цветов.
Мы использовали несколько базовых цветов, упомянутых в других научных работах. Кроме того, были использованы цвета в соответствии с характеристиками, полученными из опроса.
Анализ
Следующим шагом является анализ оценённых данных с помощью статистических методов для получения взаимосвязей между каждым кансей-словом и образцами продуктов. Был выполнен Анализ главных компонент (PCA) на наборе данных опроса. Доля объяснённой дисперсии. Первые несколько главных компонент охватывают значительную часть общей дисперсии данных. Первая главная компонента (PC1) в одиночку объясняет примерно 32% дисперсии, вторая (PC2) — около 16%. Первые две главные компоненты вместе объясняют почти 48% общей дисперсии
Накопленная дисперсия. Накопленная объяснённая дисперсия показывает, что первые четыре компоненты объясняют около 68% общей дисперсии, а первые двадцать четыре компоненты — около 99% дисперсии
Далее мы создаём биплот — тип графика, который позволяет визуализировать результаты PCA. Он отображает как оценки (преобразованные значения PC для каждого наблюдения), так и нагрузки (коэффициенты, описывающие линейную комбинацию исходных переменных для получения компонент) на одном графике. Биплот помогает понять, как исходные переменные вносят вклад в главные компоненты и как распределены наблюдения относительно этих компонент.
Какие выводы? Анализ главных компонент показывает, что восприятие дизайна в логистике формируется под влиянием различных скрытых факторов. Первая главная компонента (PC1), объясняющая наибольшую долю дисперсии, в значительной степени определяется атрибутами «Красивый», «Ясный» и «Инновационный». Эта компонента получила название «Элегантная инновация». Это указывает на то, что эстетика и ясность дизайна в сочетании с восприятием инновационности являются главными факторами, формирующими общее впечатление от дизайна в логистике.
Вторая главная компонента (PC2) в основном связана с атрибутами «Комплексный», «Надёжный» и «Яркий». Мы назвали эту компоненту «Сияющее доверие».
Например, продукты, получившие высокие оценки по PC1, воспринимаются как красивые, ясные и инновационные, в то время как высокие оценки по PC2 указывают на комплексность, надёжность и яркость.
Затем при помощи рекомендаций дизайнеров изменяли сам продукт и тд
Я бы не концентрировался на выводах - понятно, что это магистерская работа, подобного рода результаты можно получить более простыми операциями. Показательна скорее зрелость метода и его границы применимости, которые предлагается использовать в русле когнитивной эргономики и когнитивной инженерии
Если у вас есть желание поговорить на эти и другие связанные с хуман факторс темами, то пишите мне @lilalogos , я всегда открыт к бесплатным и платным консультациям. Кроме того, можете изучить мой семинар, если интересны такие же темы https://t.me/gulagdigital/3515
Как-то разговаривал с коллегой относительно опыта измерений эмоций при проектировании определенных технологий, например, рабочих интерфейсов тасктрекинга и других задач управления проектами: показательно, некоторая лакуна в отечественных подходах по сравнению с миром. Например, удивила молодая команда из Казахстана применяющая кансей-инжиниринг для проектирования веб-сайтов (ничего удивительного, но показательно, что метод используется у них, но не в РФ, хотя с 60ых-70ых эти работы ходили по миру и на производствах). Косвенно, это и повод задуматься о том, насколько реально положение российских исследований и проектирования опыта пользователя
The Kansei Engineering Approach in Web Design: Case of Transportation Website от молодого коллектива авторов Kazakh-British Technical University - я так понимаю, что магистерская диссертация, но вообще показательная с точки зрения уровня https://arxiv.org/pdf/2405.03223
О чем идет речь? Напомню, что кансей-инжиниринг разрабатывался изначально для компании Мазда и в каком-то смысле был альтернативой методам Кано - происходя из одного источника семантического дифференциала управления качеством Огсвуда.
Авторы применяют подход Кансей-инжиниринга, исследуя эмоциональное воздействие на логистический веб-сайт на примере платформы Reis.kz. Эта платформа, представляющая собой маркетплейс для поиска грузов и транспортных услуг, предоставляет подходящий контекст для оценки эффективности KE в улучшении пользовательского опыта в конкретной предметной области. Исследование выявляет эмоции, связанные с определёнными характеристиками продукта, через серию опросов, экспериментов и оценок. Впоследствии эти эмоции и психологические ощущения преобразуются в параметры привлекательного веб-дизайна.
Описание метода:
Определение стратегии компании
Сбор кансей-слов
Установка семантической дифференциальной шкалы
Сбор образцов продуктов
Список элементов/категорий
Эксперимент по оценке
Статистический анализ
Интерпретация проанализированных данных
Объяснение данных
Сотрудничество с дизайнерами
Сбор слов
первым шагом является сбор кансей-слов, связанных с новым продуктом и соответствующих стратегии, обсуждавшейся на предыдущем этапе. Кансей-слово — это термин, описывающий контекст продукта. Эти слова могут быть прилагательными или другими частями речи.
Для получения полного набора слов используются следующие источники:
Соответствующая литература
Эксперты
Опытные пользователи
Связанные исследования по Кансей
Идеи, видения
Часть кансей-слов была предоставлена маркетинговыми экспертами и пользователями Reis.kz, а некоторые были адаптированы из связанных исследований по Кансей.
Шкала и сбор образцов конкурентов/бенчмарк
Следующим шагом является размещение собранных кансей-слов в 5-балльной семантической дифференциальной (SD) анкете (шкала Лайкерта), где положительному кансей-слову соответствует наибольшее значение, а отрицательному — наименьшее.
Опросник
Для этого был произведен отбор экспериментальных субъектов и образцов. Респондентам демонстрировали образцы веб-сайтов, использованные в эксперименте по оценке по семантической шкале. В число выбранных транспортных компаний вошли не только казахстанские, но и международные. В список также были включены компании-бенчмарки (эталоны).
Список элементов/категорий
На этом этапе происходит выявление характеристик дизайна собранных образцов продуктов, таких как цвет, шрифт, форма, размер и логотип. Мы выбрали шесть характеристик из всех продуктов для анализа того, как каждый элемент влияет на эмоции:
Насыщенность и интенсивность используемых на странице цветов
Доминирующий цвет на сайте
Количество цветов, используемых на сайте
Видимость логотипа бренда
Размер шрифта, используемого на странице
Наличие изображений на странице и их доля
Данное исследование анализирует визуальные элементы дизайна, используемые на различных цифровых платформах. Таким образом, дизайн каждой платформы оценивается по насыщенности, интенсивности, доминирующим цветам, количеству цветов, видимости логотипа, размеру шрифта и наличию изображений.
Потом происходит непосредственно сбор кансей-цветов
В Кансей-инжиниринге цветовые модели играют важную роль, помогая понять эмоциональные реакции, которые вызывают цвета у пользователей. Анализируя цвета через модели, такие как RGB, CMYK или нечёткие цветовые модели , дизайнеры могут согласовывать эмоциональное воздействие цветов с предпочтениями пользователей. В этом исследовании акцент сделан на эмоциональном воздействии отдельных кансей-цветов, а не на использовании многоцветных палитр. Тем не менее, цветовая гармония может применяться в KE при проектировании веб-интерфейсов, чтобы обеспечить эстетическую целостность и приятность используемых цветов.
Мы использовали несколько базовых цветов, упомянутых в других научных работах. Кроме того, были использованы цвета в соответствии с характеристиками, полученными из опроса.
Анализ
Следующим шагом является анализ оценённых данных с помощью статистических методов для получения взаимосвязей между каждым кансей-словом и образцами продуктов. Был выполнен Анализ главных компонент (PCA) на наборе данных опроса. Доля объяснённой дисперсии. Первые несколько главных компонент охватывают значительную часть общей дисперсии данных. Первая главная компонента (PC1) в одиночку объясняет примерно 32% дисперсии, вторая (PC2) — около 16%. Первые две главные компоненты вместе объясняют почти 48% общей дисперсии
Накопленная дисперсия. Накопленная объяснённая дисперсия показывает, что первые четыре компоненты объясняют около 68% общей дисперсии, а первые двадцать четыре компоненты — около 99% дисперсии
Далее мы создаём биплот — тип графика, который позволяет визуализировать результаты PCA. Он отображает как оценки (преобразованные значения PC для каждого наблюдения), так и нагрузки (коэффициенты, описывающие линейную комбинацию исходных переменных для получения компонент) на одном графике. Биплот помогает понять, как исходные переменные вносят вклад в главные компоненты и как распределены наблюдения относительно этих компонент.
Какие выводы? Анализ главных компонент показывает, что восприятие дизайна в логистике формируется под влиянием различных скрытых факторов. Первая главная компонента (PC1), объясняющая наибольшую долю дисперсии, в значительной степени определяется атрибутами «Красивый», «Ясный» и «Инновационный». Эта компонента получила название «Элегантная инновация». Это указывает на то, что эстетика и ясность дизайна в сочетании с восприятием инновационности являются главными факторами, формирующими общее впечатление от дизайна в логистике.
Вторая главная компонента (PC2) в основном связана с атрибутами «Комплексный», «Надёжный» и «Яркий». Мы назвали эту компоненту «Сияющее доверие».
Например, продукты, получившие высокие оценки по PC1, воспринимаются как красивые, ясные и инновационные, в то время как высокие оценки по PC2 указывают на комплексность, надёжность и яркость.
Затем при помощи рекомендаций дизайнеров изменяли сам продукт и тд
Я бы не концентрировался на выводах - понятно, что это магистерская работа, подобного рода результаты можно получить более простыми операциями. Показательна скорее зрелость метода и его границы применимости, которые предлагается использовать в русле когнитивной эргономики и когнитивной инженерии
Если у вас есть желание поговорить на эти и другие связанные с хуман факторс темами, то пишите мне @lilalogos , я всегда открыт к бесплатным и платным консультациям. Кроме того, можете изучить мой семинар, если интересны такие же темы https://t.me/gulagdigital/3515
Forwarded from Цифровой геноцид
Как кансей выглядит наглядно
Есть специальные программы вообще для этого, напомню как Артемий Лебедев ругался на русскую систему ВААЛ в своем Ководстве, но вообще в мире периодически такие цифровые среды релизят
Есть специальные программы вообще для этого, напомню как Артемий Лебедев ругался на русскую систему ВААЛ в своем Ководстве, но вообще в мире периодически такие цифровые среды релизят
Forwarded from UI_UX inspiration
This media is not supported in your browser
VIEW IN TELEGRAM
Как вам такие иллюстрации? Нравятся, или достойны остаться в прошлом?
mindmarket.com
#illustration #vector #colorful
mindmarket.com
#illustration #vector #colorful
Forwarded from UI_UX inspiration
Forwarded from hypewave (Сова Сова)
id Software потеряла 95 сотрудников
Всего в студии работало около 200 человек, поэтому половина команды была сокращена. Upd. Предположительно возможно в студии работало 300 или даже 400 человек, если судить по LinkedIn.
Также известно, что единственный оставшийся разработчик Quake Champions под ником SyncError тоже лишился работы.
Среди пострадавших уже слышатся имена художника локаций и оружия современной трилогии DOOM Колина Геллера (10+ лет работы в студии), программиста Дастина Ленда (18 лет работы в студии) и других.
Всего в студии работало около 200 человек, поэтому половина команды была сокращена. Upd. Предположительно возможно в студии работало 300 или даже 400 человек, если судить по LinkedIn.
Также известно, что единственный оставшийся разработчик Quake Champions под ником SyncError тоже лишился работы.
Среди пострадавших уже слышатся имена художника локаций и оружия современной трилогии DOOM Колина Геллера (10+ лет работы в студии), программиста Дастина Ленда (18 лет работы в студии) и других.
Forwarded from ai.dot(ufna, dev)
This media is not supported in your browser
VIEW IN TELEGRAM
Гайз, и если что — я все еще продолжаю говорить, что это только начало.
Гейминдустрия перестраивается. Рынок — другой. Веселье — обеспечено!
Гейминдустрия перестраивается. Рынок — другой. Веселье — обеспечено!
Forwarded from ai.dot(ufna, dev)
А хотите, я покажу куда все идет?
https://mira-wm.com/
Если для вас это не крышесносно — рекомендую речекнуть еще раз!
https://mira-wm.com/
Если для вас это не крышесносно — рекомендую речекнуть еще раз!
Forwarded from UI_UX inspiration
Атомарная матрёшка: раскладываем дизайн-систему в Figma так, чтобы она не развалилась
Статья расскажет о методе «атомарной матрёшки», разработанном опытным дизайнером. Узнаете, как правильно раскладывать макеты и создавать дизайн-систему
Читать на дизайнерс | #статья
Статья расскажет о методе «атомарной матрёшки», разработанном опытным дизайнером. Узнаете, как правильно раскладывать макеты и создавать дизайн-систему
Читать на дизайнерс | #статья
Forwarded from ai.dot(ufna, dev)
Господа-трехмерщики, тут вон ребята еще завозят радостей хороших: https://derkleineli.github.io/triflow/
На мой взгляд, сетка что показывают — просто отличнейшая для своих задач. Конечно можно стоять и придираться, но блин!
На мой взгляд, сетка что показывают — просто отличнейшая для своих задач. Конечно можно стоять и придираться, но блин!
derkleineli.github.io
TriFlow: Generating Artist-Like 3D Mesh Topology via Nearest-Vertex Vector Fields
TriFlow: Generating Artist-Like 3D Mesh Topology via Nearest-Vertex Vector Fields.
Forwarded from Daily Coding 🔥
🛠 UnifiedArchive — менеджер архивов с унифицированным интерфейсом для различных форматов, работающий на самых разных конфигурациях системы.
🌍 Сайт
Daily Coding #инструменты #PHP & Max
🌍 Сайт
Daily Coding #инструменты #PHP & Max
Forwarded from UI_UX inspiration
Forwarded from ai.dot(ufna, dev)
Муж, не исчерпавший лимиты Claude к полудню, растратил свое утро впустую
(с) Максус Клаудий
(с) Максус Клаудий
Forwarded from TechArt - Archive (Oleg Pivovarov)
#WTF
МДА.
Пожалуй это одна из худших новостей игровой индустрии за последние годы.
ID всегда двигали технологии вперед и подобные выходки со стороны Microsoft не принесут ничего хорошего ни их игровому подразделению в частности, ни индустрии в целом.
Хочется написать много слов, но как бы всем и так все понятно.
МДА.
Пожалуй это одна из худших новостей игровой индустрии за последние годы.
ID всегда двигали технологии вперед и подобные выходки со стороны Microsoft не принесут ничего хорошего ни их игровому подразделению в частности, ни индустрии в целом.
Хочется написать много слов, но как бы всем и так все понятно.
Forwarded from Node.JS [ru] | Серверный JavaScript
Buffer.write со str.length — тихая бомба под production.
Ты пишешь в буфер, передаёшь offset через str.length, и данные записываются в неверное место. Всё молча. Никаких ошибок. Просто битая информация.
В UTF-8 один символ может занимать от 1 до 4 байт. «Привет» — это 6 символов, но 12 байт. Если offset посчитан по длине строки, ты фактически говоришь Buffer: «запиши мне данные со смещением 6 байт». А нужно было с 12. Разница в два раза.
Я такое видел в production: кусок бинарного заголовка перезаписывался, файл читался как мусор. И никто не мог понять, почему.
Диагностика
— используй
— сравнивай
— проверяй логи, где размер буфера и смещение не сходятся.
Исправление
Простое решение:
Или вообще запиши с начала:
Типичная ошибка
— расчёт offset вручную через
— молчаливое переполнение буфера без проверки остаточного места;
— путаница между символьным и байтовым смещением в одном бинарном сериализаторе.
Профилактика
— всегда считай байты через
— не вычисляй offset вручную для строк с Unicode;
— в TypeScript включай strict — он ловит часть таких косяков.
Вывод:
Silent data corruption — гадость редкая, но реальная. Проверь код: не используешь ли
Ты пишешь в буфер, передаёшь offset через str.length, и данные записываются в неверное место. Всё молча. Никаких ошибок. Просто битая информация.
В UTF-8 один символ может занимать от 1 до 4 байт. «Привет» — это 6 символов, но 12 байт. Если offset посчитан по длине строки, ты фактически говоришь Buffer: «запиши мне данные со смещением 6 байт». А нужно было с 12. Разница в два раза.
Я такое видел в production: кусок бинарного заголовка перезаписывался, файл читался как мусор. И никто не мог понять, почему.
Диагностика
— используй
Buffer.byteLength(str, 'utf8') для вычисления реального размера в байтах;— сравнивай
str.length и Buffer.byteLength(str) — если различаются, в строке есть не-ASCII символы;— проверяй логи, где размер буфера и смещение не сходятся.
Исправление
Простое решение:
const byteOffset = Buffer.byteLength(str, 'utf8');
buf.write(str, byteOffset);
Или вообще запиши с начала:
buf.write(str, 0, 'utf8').Типичная ошибка
— расчёт offset вручную через
str.length * someCoefficient — это антипаттерн;— молчаливое переполнение буфера без проверки остаточного места;
— путаница между символьным и байтовым смещением в одном бинарном сериализаторе.
Профилактика
— всегда считай байты через
Buffer.byteLength();— не вычисляй offset вручную для строк с Unicode;
— в TypeScript включай strict — он ловит часть таких косяков.
Вывод:
Silent data corruption — гадость редкая, но реальная. Проверь код: не используешь ли
str.length как offset для Buffer.write?