Архив для категории «Coding»

На новом сервере поставленная ява не показывала правильное время – ошибка была в один час. Сразу подумалось на неправильный переход на зимнее время, введенный ДАМом год назад. Видимо, в исходный дистрибутив java попадали старые файлы настройки. Быстрый поиск по гуглу вывел на чудную утилитку TZUpdater, которая сама закачивает все нужные файлы и правит яву. Применил – помогло.

Но на этом история не закончилась. Через месяц заметил, что TrackStudio тоже показывает неправильное время. Как же так? Ведь тоже явовая программулина. Стал разбираться – (1. ps -A | grep java 2. ps <найденный pid>) оказалось, что студия работает на своем отдельном JRE, который запускается из своей папки. Накатил TZUpdater на него, и проблема ушла.

Лучше поздно, чем никогда. Так вот, основная ошибка, стоившая такого падения быстродействия – использование специального класса для хранения координат. В алгоритме это вылилось в лишнее обращение по ссылке к полям объекта, причем для x и y, какой ужас. Гораздо эффективнее в таких задачах использовать массивы примитивных типов, чтобы 1) избежать порождения объектов и 2) работать с памятью напрямую. Другая идея, но это уже отдельная оптимизация – применение одномерных массивов вместо двумерных.

На форумах, блогах и т.д. защита от роботов, автоматически постящих сообщения, давно уже стала обязательным атрибутом. Конечно, капчи постоянно развиваются, но и спамеры не сидят сложа руки, постоянно совершенствуют свои алгоритмы. Первый метод борьбы со спамом самый очевидный, и он развивается сам собой – это усложнение текста на картинке, добавление шумов, вариации шрифтов и пр. Но мне подумалось тут, что для усиления капчи не нужна такая морока, достаточно взять какую-то рабочую капчу, и немного ее модифицировать. Например, на одном форуме Дальше…

Ставил постгрес и яву на Debian – после простоты CentOS все показалось каким-то кошмаром. К тому же хостинг почему-то держит там предыдущую 4 версию вместо последней lenny, и для нее сервера обновлений в sources.list уже были устаревшими – пришлось искать что прописывать для etch. И такая дребедень целый день. Бяка в другом: почти все что нагуглил по поводу установки java на debian, оказалось безбожно, даже безнадежно устаревшим. Большинство советов работали лет 7-10 назад, сейчас же все оказалось не в пример проще. Короче, методы через fakeroot и apt-get install sun-java6-jre можно выкинуть на помойку, теперь просто качаем дистриб bin с сайта sun (теперь там оракл), ставим флаг исполняемого файла и запускаем в нужной папке. Только нужно качать не rpm, а самоустанавливающийся файл.

После переезда на новый сервер на нем пришлось менять часовой пояс – был задан какой-то американский. Нашел инфу, сменил пояс, все вроде в порядке, команда date стала показывать правильное московское время. Но спустя пару дней в работе сервиса стал замечать какую-то лажу, а именно операции, выполняемые по крону, стали выполняться в другое время, совсем отличное от заданного. Первой догадкой стало, что старина cron почему-то «не перестроился» и продолжает работать по старому времени. Гадское гадство, меня это никак не устраивало.

Гугл выдал, что крон вполне себе законопослушно должен работать по заданному времени, про часовые пояса ниче не знает. Так в чем же дело? Наконец на одном форуме мелькнул дельный совет – нужно просто перезапустить крон. Испытание показало, что проблема решена. Команда перезапуска (для CentOS): service httpd restart