пятница, 30 марта 2012 г.

Про кодогенераторы


Я тут намедни столкнулся с необходимостью написать кодогенератор С++-ного кода. И даже дёрнулся было писАть его на JS. Но через часик остановился и задумался - а нафига? И написал на богомерзкой джаве. И знаете что? Остался очень доволен. Да, может быть это из-за того что на джаве я последнее время пишу много и она у меня "под пальцами летает". Но скорее всего - из-за офигительных средств рефакторинга и статической типизации, какой бы бедной в джаве эта типизация не была. Из минусов - джава ужасно многословна, основная логика (без утилитных классов, в которых тоже дофига полезного) вышло строк 600. Из плюсов - мощные рефакторинги позволяли переколбашивать дизайн на лету по нескольку раз (по мере изменения понимания что именно мне нужно), при этом почти не вводя ошибок за которыми приходилось бы лазить в отладчик. Из интересностей - код получился ну очень похожим на лисп :) - но это наверное из-за специфики, меня просто при написании этого кода не интересовало вообще ничего кроме скорости написАния (ни корнер кейсы, ни скорость работы, ни сколько оно будет жрать памяти, ни даже читаемость собственно кода)



Ну в целом я как та тёща - теперь и на 40 дней поеду :) Подходом остался очень доволен

среда, 31 марта 2010 г.

Case c default на JavaScript

Краткость, она как известно сестра таланта.

var newVal = ({
"oldVal1" : "newVal1",
"oldVal2" : "newVal2",
"oldValN" : "newValN",
}[oldVal]) || "defaultNewValue";

четверг, 4 февраля 2010 г.

Cамая короткая функция быстрого просмотра содержимого JS обьекта

var s = [];
for (var i in item) {
s.push(i + ":" +typeof(item[i]) + "=" + {
'object': 'object',
'function': 'function',
'number': item[i],
'string': item[i],
'boolean': item[i],
}[typeof(item[i])]);
}
host.log(s.join(" "));

пятница, 11 декабря 2009 г.

Google go для Windows

Можно скачать бинарники и поиграться

http://code.google.com/p/go-windows/

Первые впечатления:
1. То что в конце строки можно не ставить ";" - врут. Если забыть поставить - как правило глюки. Хотя, возможно, это кривой билд для винды.
2. Сообщения об ошибках - то ли не слишком информативны, то ли просто непривычны (скорее второе). Постоянно путаю местами тип и имя в обьявлении переменной и/или параметра функции

пятница, 9 октября 2009 г.

trim на JS

Наверное, самое короткое и изящное решение:

function trim(str) {
return str.replace(/^\s*|\s*$/,'');
}

суббота, 8 августа 2009 г.

Текстовый редактор на чистом <canvas>
С функциональностью затык, но по скорости весьма неплохо летает.
Это ж я б так мог и Ленина спасти можно писАть вполне себе шустрые офисные приложения...

http://guillaume.bort.fr/textile-editor/

PS под IE не работает, естественно, ну да кого это волнует ;)

понедельник, 13 июля 2009 г.

Accessing the current module's HINSTANCE from a static library

Наткнулся на ссылку в хромоском коде:
http://blogs.msdn.com/oldnewthing/archive/2004/10/25/247180.aspx