Рубрика «Программирование» - 38
Хакинг метрик качества видео или как с приходом ИИ все становится намного сложнее
2022-11-22 в 8:02, admin, рубрики: computer science, data science, deep learning, JPEG AI, PSNR, SSIM, Super Resolution, VMAF, искусственный интеллект, машинное обучение, метрики качества видео, Научно-популярное, Программирование, сжатие видео, сжатие данныхКак оценить реальную производительность своего кода
2022-11-21 в 9:00, admin, рубрики: C, c++, Compiler Explorer, gcc, godbolt, il, Intermediate Language, LLVM, objdump, ruvds_статьи, Sharplab, uiCA, анализатор кода, ассемблер, бенчмарк кода, Блог компании RUVDS.com, декомпиляция, дизассемблер, Компиляторы, межпроцедурная оптимизация, оптимизация кода, Программирование, промежуточный языкКод, который мы пишем, и который будет исполнен процессором, — две разные вещи. На уровне ассемблера существует миллион вариантов, в каком виде интерпретировать и запустить высокоуровневые команды. Более того, современные компиляторы сильно оптимизируют код, а результат этой оптимизации похож на магию.
Читать полностью »
Сборка мусора в неисправных JVM, проактивный подход
2022-11-18 в 14:00, admin, рубрики: cassandra, cloud, data, elasticsearch, java, jvm, netflix, node.js, oom, python, timeweb_статьи_перевод, Блог компании Timeweb Cloud, дамп, Компиляторы, логи, ОС, Программирование, файл, хранение данныхКоманда Netflix Cloud Data Engineering работает с различными приложениями для JVM, включая такие популярные хранилища данных, как Cassandra и Elasticsearch. Хотя большинство наших кластеров стабильно работают, обходясь выделенной им памятью, иногда «запрос смерти» или ошибка в самом хранилище данных приводят к перерасходу памяти, что может спровоцировать лишние циклы сборки мусора или даже привести к исчерпанию памяти в JVM.
Читать полностью »
Как портят софт ради обратной совместимости
2022-11-15 в 9:00, admin, рубрики: Assessment and Deployment Kit, Compatibility Administrator, linux, ruvds_статьи, SimCity, software lifecycle, Windows 95, Windows ADK, Блог компании RUVDS.com, легаси, обратная совместимость, преждевременная оптимизация, Программирование, Проектирование и рефакторинг, рефакторинг, Софт, технический долг«Ожирение софта» — известная беда современной разработки. Повышение производительности железа зачастую воспринимается менеджерами как возможность игнорировать рефакторинг, всё равно никто не заметит тормозов. Проще докупить железа, чем тратить время на оптимизацию.
Но есть ещё одна серьёзная причина, по которой ожирение софта и тормоза увеличиваются с каждой версией — это легаси. Накопление старого балласта ради сохранения обратной совместимости. Хуже того, иногда происходят поистине вопиющие случаи, когда баги умышленно вводят в кодовую базу, чтобы сохранить совместимость со старыми программами.
Читать полностью »
Чини опять свою Теслу сам, тыжпрограммист
2022-11-11 в 16:51, admin, рубрики: diy или сделай сам, tesla, tesla motors, Автомобильные гаджеты, Настройка Linux, ПрограммированиеКак получить root-доступ к Tesla? Как разобрать компьютер? Как подключиться? Чем отличаются компьютеры Тесла. Что делать если экран черный, а машина едет? Эти и многие другие вопросы мне задают регулярно.
На текущий момент прошлую статью о ремонте Тесла прочитали более 56.000 раз. Я получаю огромное количество вопросов, постараюсь ответить на самые распространенные из них.
KasperskyOS: от абстрактной идеи к реальной системе
2022-11-11 в 8:11, admin, рубрики: KasperskyOS, Блог компании «Лаборатория Касперского», информационная безопасность, кибериммунность, микроядро, операционные системы, Программирование, разработка осСистема типов — лучший друг программиста
2022-11-08 в 5:07, admin, рубрики: domain-driven design, архитектура по, информационная безопасность, Программирование, проектирование систем, системы типов, Совершенный кодЯ устал от одержимости примитивами и от чрезмерного использования примитивных типов для моделирования функциональной области.
Значение в string
не лучший тип для записи адреса электронной почты или страны проживания пользователя. Эти значения заслуживают гораздо более богатых и специализированных типов. Мне нужно, чтобы существовал тип данных EmailAddress
, который не может быть null. Мне нужна единая точка входа для создания нового объекта этого типа. Он должен валидироваться и нормализироваться перед возвратом нового значения. Мне нужно, чтобы этот тип данных имел полезные методы наподобие .Domain()
или .NonAliasValue()
, которые бы возвращали для введённого foo+bar@gmail.com
значения gmail.com
и foo@gmail.com
. Эта полезная функциональность должна быть встроена в эти типы. Это обеспечивает безопасность, помогает предотвращать баги и существенно повышает удобство поддержки.
Читать полностью »
Rust 1.65.0: GAT, let-else, break от помеченных блоков, отказ от RLS
2022-11-04 в 8:44, admin, рубрики: cargo, clippy, open source, release, Rust, rustc, rustdoc, rustfix, rustfmt, stable, выпуск версий, Компиляторы, новости технологий, перевод, Программирование, системное программирование, стабильная версия, языки программированияКоманда Rust рада сообщить о новой версии языка — 1.65.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.
Если у вас есть предыдущая версия Rust, установленная через rustup
, то для обновления до версии 1.65.0 вам достаточно выполнить команду:
rustup update stable
Если у вас ещё нет rustup
, то можете установить его со страницы на нашем веб-сайте, а также ознакомиться с подробным описанием выпуска 1.65.0 на GitHub.
Если вы хотите помочь нам протестировать будущие выпуски, вы можете использовать beta (rustup default beta
) или nightly (rustup default nightly
) канал. Пожалуйста, сообщайте обо всех встреченных вами ошибках.
Почему массивы начинаются с нуля
2022-11-01 в 2:39, admin, рубрики: bcpl, C, python, история, массивы, математика, ненормальное программирование, нумерация, ПрограммированиеПроверим это на C.
#include <stdio.h>
int main()
{
int data[3] = {1, 2, 3};
int i = 0;
printf("Array address: %pn", data);
do {
printf("Array[%u] = %pn", i, (void *)(&data[i]));
i++;
} while(i < 3);
}
Получим результат:
Array address: 0x7ffd7c514a6c
Array[0] = 0x7ffd7c514a6c
Array[1] = 0x7ffd7c514a70
Array[2] = 0x7ffd7c514a74
Как первый (нулевой) элемент, так и сам массив находятся по одному и тому же адресу, поскольку 0-й элемент удалён на 0 элементов от начала. Эта связь между указателями и массивами в C настолько тесная, что их даже можно рассматривать вместе.
Однако это ответ на вопрос «зачем», а не «почему». Нумеровать массивы с нуля стали не сразу. Удивительно, но развитие такого простого вопроса не умещается в предложении или абзаце.
Читать полностью »
Как мои проблемы с памятью привели к созданию синтаксиса, который невозможно забыть
2022-10-31 в 21:00, admin, рубрики: Программирование, синтаксисНесмотря на то, что к этому моменту я уже закончил разработку графического движка для одного [впрочем не слишком коммерчески успешного] игрового проекта, на меня накатывала апатия и депрессия, и не удивительно — что толку быть разработчиком движка, код которого ты просто перестал понимать (а о возможностях его [графического движка] совершенствования и говорить нечего).
Читать полностью »