Занятный фокус с JS
За что я люблю JS это за то что на нем можно реализовать некоторые вещи совершенно нетривиальным способом. Например такая задача: Есть IFRAME который создается динамически, нужно привесить событие onload на объект window внутри этого IFRAME. Сразу после создания свойство contentWindow равно нулю, поэтому непосредственно после создания доступа к нему нет. Оно станет доступно через некоторое время. Логичным будет проверять на ноль свойство каждые сто миллисекунд пока оно не будет чему нибудь равно:
var onloadfunc = function(){ alert('loaded!!!'); }; (function(){ if (!iframe.contentWindow){ setTimeout(arguments.callee,100); return; } iframe.contentWindow.onload = onloadfunc; })();
В приведенном примере анонимная функция вызывает саму себя через каждые 100 миллисекунд. Интересно что когда это писал - забыл поставить точку с запятой в }; - это привело к интересной штуке - калбак стал вызываться на этапе инициализации - т.е. скобки имеют наивысший приоритет даже если между ними стоит перенос строки.
Когда наступит конец света
Сейчас модно говорить о новом конце света который якобы наступит когда переполнится разрядная сетка календаря индейцев Майя - это наступит в 2012 году.
К чему я это? На всякий случай если конец света в 2012 году не наступит - то следующий нужно непременно ждать тогда когда переполнится разрядная сетка тридцатидвухбитного целого знакового числа, используемого для хранения даты в Unix системах.
Всем известно что для хранения даты в Unix используется так называемый unixtimestamp - число секунд прошедших с начала Unix эпохи - 1 января 1970 года. Это несложно проверить:
print date('r',0);
Thu, 01 Jan 1970 03:00:00 +0300
в большинстве компьютеров сейчас для хранения даты используется переменная типа int - размер которой равен размеру машинного слова - сейчас это 32 байта. Причем переменная эта знаковая, т.е. максимальное целое значение которое она может принимать - 0x7FFFFFFF или 2147483647. Несложно подсчитать что 2147483647 секунд это примерно 68 лет.
Понятно? Это вам не индейцы Майя, которые давно исчезли, но их календарь актуален до наших дней, тут всего каких то 68 лет - и каюк - прошла эра Unix.
Так когда же наступит конец света для всех 32-x битных Unix систем? Получить ответ очень просто:
print date('r',0x7FFFFFFF);
Tue, 19 Jan 2038 06:14:07 +0300
Это случится 19 января 2038 года ровно с шесть часов четырнадцать минут и семь секунд по московскому времени.
Готовьтесь.
Дороги
На пересечении Соколовой и Рахова есть перманентно открытый канализационный люк.
Некоторые особо сознательные водители периодически ставят в него ветки, трубы, шпалы. Другие не менее сознательные граждане эти инородные дороге в общем и канализационным люкам в частности вещи оттуда убирают и так уже несколько месяцев. К чему я это? Кто нибудь знает в какую организацию нужно нажаловаться? Или лучше по старинке, ветку вставить...
Универсальный ключ для домофона
Всем знакомы электронные ключи-таблетки от домофона. Когда я впервые увидел такой ключик то решил, что ключик использует RSA - самый очевидный подход. Например, можно предположить такой сценарий - на заводе где делают ключики-таблетки в чип прописывается свежесгенеренная пара RSA-ключей, причем закрытый намертво вшивается в память ключа а открытый передается в домофон в процессе регистрации ключа в оном. При этом, в момент прикладывания ключа домофон будет генерить некую последовательность для того чтобы ключик ее подписал и передал электронную цифровую подпись на проверку домофону, домофон при помощи открытого RSA ключа эту последовательность проверяет и по результатам проверки принимает решение - открывать или не открывать замок.
Такую систему взломать будет совершенно невозможно - современная математика не может пока дать сколь угодно приемлемый сценарий подбора закрытого ключа по имеющемуся открытому.
Однако, каково было мое удивление когда в ларьке который делает ключи увидел объявление что мол де делают ключи для домофонов на раз. Как? Оказывается никаким RSA там и не пахнет - наши отечественные Цифрал и хваленые оригинальные Dallas Semiconductor - хранят обычную последовательность последовательность из n-бит которую сдают первому встеречному-поперечному домофону. Узнать код можно простыми подручными средствами.
Занятно, что по запросу "универсальный ключ для домофона" гугл в 99 процентов случаев выдает ссылки на сайты мошенников, однако вот нашел в сети девайс который похоже настоящий.
Вопрос - если ключ такой простой, то есть ли более компактное устройство - а не этот уродливый комбайн с цифирками?