Наконец-то взялся и (за три месяца) прочитал книгу «Рефакторинг» Фаулера. Эту книжку я купил порядка пяти лет назад, когда ещё работал на своей первой работа (да-да, это был SWsoft) и с тех пор она стояла у меня на полке (хотя один раз я делал к ней «подход»)
Конечно за это время я уже многое узнал из других источников, либо дошел до этого самостоятельно, но всё-таки чтиво полезное. Надо было пораньше прочитать, но лучше поздно чем никогда.
Больше всего запомнилась интересная идея дублирования данных из доменной модели во view и синхронизация их с помощью обозревателя. Ещё я немного проникся идеей использовать Null object-ов, вместо множества проверок на null.
Время от времени я узнаю что-нибудь новое или открываю для себя что-нибудь по-новому из программирования и мне показалось логичным завести для этого отдельный, программерский, блог: http://slava-semushin.blogspot.com
(Естественно, поскольку сейчас мне интересна Java, то и заметки там будут соответствующие.)
Знакомый попросил подсобить с регулярным выражением: в лог файлах есть даты в формате типа 7:30:12 и 22:5:16, т.е. без ведущих нулей, а нужно сделать чтобы было с нулями. Как бы вы это сделали? ( мой ответ на PerlCollapse )
Сегодня на работе вспомнил парочку интересных загадок-странностей из мира программирования на С/С++. Думал записать в ЖЖ, но сейчас откровенно лень описывать это всё, поэтому решил пока просто спросить, знает кто-нибудь ответы или нет:
- вы отлаживаете чужую программу, воткнули assert()-ов и далее видите, что программа завершается abort()-ом, но сообщений от том какой из assert()-ов сработал нет. При этом известно, что программа "останавливается" именно на них. Вопрос: чо за дела?!
- что выведет (и выведет ли? и вообще скомпилируется или нет?) следующая команда
$ ./test; echo $?
Если исходник программы test следующий:
#include <stdio.h>
int main() {
printf("hello\n");
}
Updated(20100612): в первом случае assert() ничего не выводит потому что где-то в программе закрыли stderr. Во втором случае, если программа собрана с помощью gcc и под Linux (возможно, и в некоторых других случаях), то программа вернёт 6 в качестве кода завершения. 6 это код возврата ф-ции printf(), которая вернула количество выведенных символов.
В книжке так всё легко описано, мол, сделайте так и так и всё будет о как! А на практике...
Решил добавить локализацию, добавил соответствующий taglib, вместо сообщения написал <fmt:message key="bla-bla" /> и получил "java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/fmt/LocalizationContext" В jar файлах в WEB-INF/lib посмотрел -- правда нет. Оказывается он есть в jstl.jar, после apt-cache search jstl.jar сделал sudo apt-get install glassfish-jstl, потом симлинком пробросил его в WEB-INF/lib и рестартанул Томкэт. Фух. Нашелся!
Теперь хотя бы страница откомпилировалась, но не видит переводы в properties-файле... ( Read more...Collapse )
В моей книжке URL в taglib был другой (http://java.sun.com/jsp/jstl/core, который указывает на JSTL 1.0) и Tomcat ругался "The absolute uri: http://java.sun.com/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application". Для устранения этого понадобилось:
Пока я прочитал единственную книгу по JS и могу её рекомендовать для совсем начинающих: "Изучаем JavaScript" из серии Head First (http://www.ozon.ru/context/detail/id/7301823/) Но тут совсем базовые…
Comments
Обломались и отложили это до момента когда все забудут по ИЕ7