May 25th, 2012

Book

И снова Javascript

Это из разряда Perl cannot be parsed:
foo = {}

[1,2,3].forEach(console.log)
Желание поддерживать зачем-то два синтаксиса (с точками с запятой и с синтаксически значимыми переводами строки) в языке с запутанной спецификацией и дебильным по своей сути оператором "запятая" приводит к неожиданному взаимодействию фич: парсится всё это как
foo = ({} [1,2,3]).forEach(console.log)
И вылетает, т.к. свойство {}[3] не определёно и у него нет метода forEach.

Диагностика этого смешная - копируешь [1,2,3].forEach в другое место - исключение пропадает, ставишь трай-кетч блок вокруг foreach - исключение пропадает :)
Book

Формат лога

Я тут последние полгода пользуюсь таким форматом отладочных логов:

25 23:30:08 db:7 loading

день час:мин:сек последний_компонент_имени_модуля:строка сообщение

Убрал нахрен месяц-год и квалификаторы в имени модуля, сведя служебную информацию к минимуму, но тем не менее позволяющую определить время события и место в коде. Также была идея сделать имя текущей функции, но она не прижилась.