Смутило, что вы не остановились на том, чтобы просто инициализировать переменную, а решили раскопать причину. (Что, кончено, получилось познавательно!) А из стати мне показалось будто вы занулили память при старте и продолжили пользоваться не инициализированной (явно) переменной, как будто это нормально...
Тогда переменную класса нужно инициализировать в конструкторе, который будет вызван new.
Вы поймите, что получать не инициализированную память "из вне" — это частая практика C/C++. Пользователь сам ответственен за инициализацию.
Я, кончено, тут отдалился от того, на что вы хотели обратить внимание изначально. Но с этой проблемой вы столкнулись из-за того, что неправильно работаете с хипом. И в следующий раз можете поймать такое же странное поведение, но уже не по вине редкоиспользуемого атрибута, а просто потому что нет гарантий, что в памяти не мусор.
Согласен, что тут есть нарушение стандарта, даже без ={0} глобальный массив должен был быть инициализирован. Но в вашем конкретном примере речь идет о буфере с которым предполагается работа только через менеджер памяти, который не надеется на то, что этот буфер был инициализирован (если у вас конечно не какой-то кастомный менеджер).
Я так полагаю, где-то вы выделяете кусок памяти и используете его без инициализации. memset() нужно поставить туда, где идет выделение, а не в начало программы.
Так если речь идет о куче динамической памяти, то и не должно быть гарантий, что она инициализирована нулем. malloc() тот же не инициализированный кусок памяти дает.
Это, кстати, тоже полу-правда. Да, I2C нет, но есть USI который позволяет организовать I2C или SPI в "полуавтоматическом" режиме (часть работы делает железо, например, сдвиг регистра данных, а часть софт, например, тактирование).
И дальше по тексту ужас продолжается
Это уменьшило максимальный размер пакета до 8 байтов (с 32 байтов, получающихся при использовании Atmega328P, оборудованного I2C)
Из этого предложения кажется, что дело в аппаратных буферах, будто у tiny85 — 8 байт, а у Atmega328P — 32. На самом деле у обоих камней буфер 1 байт, а 8 и 32 — просто в библиотеках так задано...
Да я, честно говоря, просто набрал в гугл-картинках "attiny85 oled" и прошелся о самым красивым. Очень популярная платформа. Вот еще крутой проект — научный калькулятор и более развитый форк. О нем вроде недавно тут писали.
На такой платформе (tiny85 + oled дисплей) можно вещи и по-интереснее сделать. Автор всю статью пытается удивить, что вьювер статичных картинок влез в такой малый объем памяти, а тем временем в те же 8кб умещают более динамичные и полезные вещи, типа различных измерителей и графических библиотек. Не говоря о том, что tiny85+oled — это целая игровая платформа.
Идея интересная, короткой записи лямбд действительно не хватает в lua. Но мне кажется тут лучше поправить код интерпретатора добавив простой синтаксический сахар в виде замены конструкции x, y, z, ... -> expr на function(x, y, z, ...) return expr end. К тому же -> и => не заняты в языке. Это и по производительности дешево выйдет, а то, как уже выше заметили, в вашей реализации такое удобство выглядит дороговато.
на расстояниях свыше 300 километров получить передаваемую квантовую информацию хоть и возможно, но лишь в объеме менее одного бита в секунду. В мире, где речь идет о передаче мегабитов и даже гигабитов в секунду, это далеко не практичный продукт
Опять сравнили котят с помидорами: по квантовому каналу нужно обменяться только ключом размером до десятка кбит, "мегабиты и даже гигабиты в секунду" уже передаются по классическим каналам, зашифрованные полученным ключом.
Интересненький сайт, чего только стоит громкий заголовок
A Collection of Interesting, Important, and Controversial Perspectives Largely Excluded from the American Mainstream Media
Офис в США, на сайте нет рекламы (написано, что они не принимают заявки на "оплачиваемую рекламу"), среди прочего, не упускают возможности похвалить Российского Президента. Википедия еще подсказывает:
The Unz Review, a website that promotes antisemitism, Holocaust denial, conspiracy theories, and white supremacist material.
Да, я понимаю, что нам легко обсуждать с дивана, а инженерам NASA приходится делать действительно невозможный выбор, ведь время и другие ресурсы — ограничены. Можно лишь порадоваться, что экспериментальные направления получаются настолько успешными, что простор для выбора дальнейших исследований как у ребенка в магазине игрушек.
Конечно, автономен. В статье выше даже намеки, что навигация происходит посредством распознавания изображения с видеоканала. До этого стало известно, что есть возможность обновлять ПО бортового компьютера (не особо удивляет, ну мало ли...), а не только закладывать очередную полетную программу.
Да, передача данных с/на Землю через марсоход, кончено. Поэтому им и нужно будет когда-нибудь встретиться, если тот все же отправиться в свободное воздухоплавание.
Жаль, что его вот-вот собираются бросить после нескольких тестовых полетов, даже не смотря на отличное техническое состояние (как писали ранее, у миссии плотный график и долго заниматься дроном просто некогда). Запустили бы его в автономное путешествие, что-ли. А через месяц-другой при сближении с ровером "скачали" бы все фотографии...
Вы о чем, параллельные NOR Flash вполне живы, S29AL016J там, например. Используются в критичных местах (типа загрузчиков, как подсказывает даташит), где недопустимы единичные проблемы битых ячеек, присущие NAND.
Смутило, что вы не остановились на том, чтобы просто инициализировать переменную, а решили раскопать причину. (Что, кончено, получилось познавательно!) А из стати мне показалось будто вы занулили память при старте и продолжили пользоваться не инициализированной (явно) переменной, как будто это нормально...
Тогда переменную класса нужно инициализировать в конструкторе, который будет вызван new.
Вы поймите, что получать не инициализированную память "из вне" — это частая практика C/C++. Пользователь сам ответственен за инициализацию.
Я, кончено, тут отдалился от того, на что вы хотели обратить внимание изначально. Но с этой проблемой вы столкнулись из-за того, что неправильно работаете с хипом. И в следующий раз можете поймать такое же странное поведение, но уже не по вине редкоиспользуемого атрибута, а просто потому что нет гарантий, что в памяти не мусор.
Согласен, что тут есть нарушение стандарта, даже без
={0}
глобальный массив должен был быть инициализирован. Но в вашем конкретном примере речь идет о буфере с которым предполагается работа только через менеджер памяти, который не надеется на то, что этот буфер был инициализирован (если у вас конечно не какой-то кастомный менеджер).Я так полагаю, где-то вы выделяете кусок памяти и используете его без инициализации.
memset()
нужно поставить туда, где идет выделение, а не в начало программы.Так если речь идет о куче динамической памяти, то и не должно быть гарантий, что она инициализирована нулем.
malloc()
тот же не инициализированный кусок памяти дает.Живые ссылки
https://www.gamebrew.org/wiki/DScraft
https://dscraft.github.io/
Здорово! Когда будет самокомпилируемый компилятор? =)
Это, кстати, тоже полу-правда. Да, I2C нет, но есть USI который позволяет организовать I2C или SPI в "полуавтоматическом" режиме (часть работы делает железо, например, сдвиг регистра данных, а часть софт, например, тактирование).
И дальше по тексту ужас продолжается
Из этого предложения кажется, что дело в аппаратных буферах, будто у tiny85 — 8 байт, а у Atmega328P — 32. На самом деле у обоих камней буфер 1 байт, а 8 и 32 — просто в библиотеках так задано...
Да я, честно говоря, просто набрал в гугл-картинках "attiny85 oled" и прошелся о самым красивым. Очень популярная платформа. Вот еще крутой проект — научный калькулятор и более развитый форк. О нем вроде недавно тут писали.
На такой платформе (tiny85 + oled дисплей) можно вещи и по-интереснее сделать. Автор всю статью пытается удивить, что вьювер статичных картинок влез в такой малый объем памяти, а тем временем в те же 8кб умещают более динамичные и полезные вещи, типа различных измерителей и графических библиотек. Не говоря о том, что tiny85+oled — это целая игровая платформа.
Идея интересная, короткой записи лямбд действительно не хватает в lua. Но мне кажется тут лучше поправить код интерпретатора добавив простой синтаксический сахар в виде замены конструкции
x, y, z, ... -> expr
наfunction(x, y, z, ...) return expr end
. К тому же->
и=>
не заняты в языке. Это и по производительности дешево выйдет, а то, как уже выше заметили, в вашей реализации такое удобство выглядит дороговато.Copilot еще даже не начал работать, юристы уже спешат показать как они нужны.
Спасибо, интересно было прочитать какие тараканы в голове у нового МК.
Как метод "лечения" зараженной модели — инвертировать наименьший значащий бит у 0.01% случайно выбранных весов.
Опять сравнили котят с помидорами: по квантовому каналу нужно обменяться только ключом размером до десятка кбит, "мегабиты и даже гигабиты в секунду" уже передаются по классическим каналам, зашифрованные полученным ключом.
Интересненький сайт, чего только стоит громкий заголовок
Офис в США, на сайте нет рекламы (написано, что они не принимают заявки на "оплачиваемую рекламу"), среди прочего, не упускают возможности похвалить Российского Президента. Википедия еще подсказывает:
Весьма сомнительный источник вы привили.
Да, я понимаю, что нам легко обсуждать с дивана, а инженерам NASA приходится делать действительно невозможный выбор, ведь время и другие ресурсы — ограничены. Можно лишь порадоваться, что экспериментальные направления получаются настолько успешными, что простор для выбора дальнейших исследований как у ребенка в магазине игрушек.
Конечно, автономен. В статье выше даже намеки, что навигация происходит посредством распознавания изображения с видеоканала. До этого стало известно, что есть возможность обновлять ПО бортового компьютера (не особо удивляет, ну мало ли...), а не только закладывать очередную полетную программу.
Да, передача данных с/на Землю через марсоход, кончено. Поэтому им и нужно будет когда-нибудь встретиться, если тот все же отправиться в свободное воздухоплавание.
Жаль, что его вот-вот собираются бросить после нескольких тестовых полетов, даже не смотря на отличное техническое состояние (как писали ранее, у миссии плотный график и долго заниматься дроном просто некогда). Запустили бы его в автономное путешествие, что-ли. А через месяц-другой при сближении с ровером "скачали" бы все фотографии...
Вы о чем, параллельные NOR Flash вполне живы, S29AL016J там, например. Используются в критичных местах (типа загрузчиков, как подсказывает даташит), где недопустимы единичные проблемы битых ячеек, присущие NAND.
"В будущем" — это где-то между высадкой человека на Марс и окончанием строительства сферы Дайсона?