October 23rd, 2012

Поразительная точность

Районная прокуратура Орла потребовала у интернет-провайдера закрыть доступ к Wikipedia для учащихся одной из школ. По мнению прокурора, на этом сайте содержится информация, вредная для детей.

Поводом для ограничения доступа школьников к Wikipedia должна стать страница "Русский мат", на которой приведены примеры нецензурных выражений, говорится в сообщении пресс-службы ведомства.
...
Российские власти отрицают, что закон создает опасность введения цензуры, и настаивают на необходимости оградить детей от вредной информации.


Ещё раз. Закрыть ВСЮ википедию для ОДНОЙ школы из-за ОДНОЙ страницы, но это НЕ ЦЕНЗУРА, а ЗАБОТА!

Уйти красиво

Глюконат

Есть некая плата на основе AVR. К ней подключено два однотипных устройства, различающихся только адресом. Конкретный адрес того устройства, с которым идёт обмен, хранится в статической переменной, доступ к которой имеют только две функции, назовём их условно GetAddress() и SetAddress() (похоже на приватные данные и два метода доступа к ним в C++). Непосредственно значение переменной больше никто поменять не может (не должен, точнее), равно как и заглянуть в неё, минуя соответствующую функцию.

Для пущего благолепия обе функции в консоль пишут инфу о своём вызове и результате работы.

Так вот, сначала я делаю SetAddress(0), работаю с нулевым устройством (все библиотечные функции обращаются строго к GetAddress() - пусть это создаёт некий оверхед, но зато я могу контролировать процесс), потом делаю SetAddress(1) и всё повторяется.

НО! С некоторых пор какая-то неотождествимая падла меняет значение этой переменной. Причём не абы как, а только на 48 или 61 (десятичные числа). Может, и ещё какие-то характерные значения есть, я не проверял. Вызов SetAddress() только один на весь цикл работы. А GetAddress() сначала сообщает правильное значение переменной, а потом вдруг изменившееся.

Память вроде нигде не перехлёстывается, за массивы не вылезаю, вообще в ОЗУ места ещё дофига.

Что за херотоооааааааАААААААААА?!