Для Grails есть замечательный плагин console. Один минус у него: при структуре проекта чуть сложнее Hello World, когда в проекте десятки или сотни пакейджей, например — надо обязательно осуществлять импорт доменных классов вручную. А это — лишнее время, причём тратится оно не разово, а раз в рестарт сервера. К сожалению, добраться до GroovyShell, в котором выполняется введённый пользователем код — кажется, нереально, Хотя силён и могуч Groovy, но вроде бы там даже кложеров не используется, которые было бы можно заменить.

Читать далее →

Довольно печально, когда Россию пытаются «поставить на законное место», когда речь идёт о всевозможных высоких технологиях, — мол, нету у нас. Что с «высокими технологиями» — чёрт их знает. Что-то просрали, что-то советское расконсервировали, что-то новое выдумали, где-то попилили. А вот с программным обеспечением всё довольно-таки неплохо. Да, быть может, мы не дотягиваемся до США, но в аутсайдеры Россию помещать может только неумеха, ничего не смыслящий в IT. Скажу я, правда, не только за Россию, но и за сопредельные государства.

Читать далее →

В целом и в общем, я без пиитета отношусь к продукции Apple, — более того, я презираю сектантов, сметающих всё — хорошее и плохое — без разбора. Вместе с тем, недавно произошёл казус, который добавляет очков одному из моих любимейших продуктов этой оси зла — тачпаду Magic Trackpad. Дело в том, что я перепутал трёхвольтовые аккумуляторы «10440» и обычные полуторавольтовые «AA»-шки, и вставил в трэкпад трёхвольтовку. Узнал я об этом лишь назавтра, а до тех пор трэкпад замечательно работал — более того, как оказалось позднее, он ещё и практически не жрал ресурс батарейки.

Читать далее →

Вот так бывает, смотришь на картинку и думаешь об очередном фейковом антивирусе или типа того. Но их софт, кажись, не фейковый. Во всяком случае, толк от PerfectDisk (дефрагментатора) есть. Но есть и косяки: что-то у меня комп начал в синий экран смерти уходить от вставленной флэшки. В принципе, подозреваю, что дело в свежепринесённой флэшке приятеля (для неё доставлялись какие-то драйверы), но теперь и на мои собственные флэшки винда приветливо мигает мне синим экраном смерти.

Читать далее →

Модно порой говорить об ангажированности нашей власти, о несправедливости нашей правовой системы и т.п. Говорится про это, конечно, в не менее ангажированных тонах, с уклоном, понятное дело, в противоположную сторону. С передёргиваниями и/или с подменой понятий, но сейчас не о ней. Подмена понятий — это вообще особая тема, это как в каких-нибудь «задачках Толстого» — на то, чтобы найти подвох, нужно потратить секунд 30, а кому-то написать уравнения на бумаге и затратить 3 минуты.

Читать далее →

Чего-то в последнее время во всяких там Гуглах стали чаще и чаще просачиваться версии форумов, индексированных именно через протокол https. Подумал-подумал я, и решил приделать и к своему блогу такую штуковину. Так что знайте теперь, если вдруг в адресной строке нет зелёного замочка, значит — кругом эвил хацкеры собираются ваши пароли стырить. Прелестей использования https для всего контента я не понял, но хотя бы окошки логина планирую везде прикрыть: пусть враги недоумевают и не получат моих паролей, даже если они вломятся в мою вайфай сеть или куда-нибудь там ещё.

Читать далее →

На днях делали Диане томографию в МСЧ «Лисма» (она же, вроде, 13 больница). Ну, ту которая модная — магнитную, дорогую (ну точнее как дорогую, — 2700 рублей, терпимо). Из первых уст информация — томограф там хороший, и новый, и эргономичный — с высоким «потолком», и закрывает пациента «всего лишь» наполовину, не то что «гроб», в котором мне довелось делать томографию. В целом, понравилось даже обслуживание. Ну, только начало нашего визита туда было «не очень», а дальше всё было вполне ОК.

Читать далее →

Иной раз ёбу даёшься, читая интернеты. Такие замечательные вещи люди выписывают, и ещё при этом, вероятно, свято верят в их правдивость. Например, по делу и без дела в преддверии предстоящих президентских выборов принято критиковать Путина. Для достижения цели, видимо, все средства хороши: и справедливая правдивая критика, и поклёп, и потоки отборного бреда. Что касается непосредственно меня — мой голос отправится в копилку Путина во втором туре. Партия, на которую тому пришлось опираться, — моего голоса не получит.

Читать далее →

Давным-давно ещё натыкался на штуковину под названием Quercus в J2EE-сервере Resin. Сейчас решил попытаться на своём сервере сэкономить немножко памяти посредством её использования. Сервер – недорогой двухъядерный AMD x64 Athlon 5600+, ОС Debian, 4GB RAM. Дополнительно: ядро 2.6.32-5-amd64, java version "1.6.0_26", PHP 5.3.8-1~dotdeb.2 with Suhosin-Patch, nginx: nginx version: nginx/1.0.9. Congratulations! Quercus™ Pro 4.0.7 is compiling PHP pages. Have fun! MySQL держит 150 одновременных подключений, nginx – имеет 2 воркера по 1000 подключений каждый, а вот пул php-fpm – имеет всего лишь 50 воркеров (50 воркеров по 64 Мб съедают почти всю память системы, а ведь некоторым задачам в wordpress уже надо по 128 Мб, именно из-за этого я и посмотрел в сторону Quercus).

Читать далее →

Два года с этим ноутбуком (Samsung R519) несколько изменили моё отношение к ноутам в целом. Когда-то я думал, что необходим 1 нетбук и 1 стационарный компьютер. Теперь я склоняюсь к тому, что достаточно одного ноутбука, а функции нетбука следует передать телефону. Что касается самого устройства, им я очень доволен. У меня не сломалось ничего, кроме Windows. Windows циклично начинала устанавливать драйверы для веб-камеры, наплодив мне около 1000 Unknown Device’ов в системе (да, я зачем-то писал в Google+, а не в основной блог), прежде чем я нашёл и подсунул ей настоящие драйверы для веб-камеры ноутбука Samsung.

Читать далее →

Был в сериале «Все ненавидят Криса» такой персонаж, Юрий Антоныч. Мало того, что работал на двух работах, так ещё регулярно собирал и пользовался купонами. Вот, теперь периодически меня Диана так называет, Юрием Антонычем. Почему? Ну, тут всё довольно-таки просто… Во-первых, у меня есть некая особенность замечать краем глаза во всяких рекламных рассылках или в рекламе в интернетах полезную информацию о скидках на то, что действительно было бы сейчас полезно приобрести.

Читать далее →

В который раз из стандартного бустера в одном из наших проектов, «Берсерк: Катаклизм» вытаскиваю промо-карту (ага, нечасто такое бывает). Кстати, это гораздо более быстрая игра, чем «Берсерк Онлайн» — возможно, стоит попробовать :-) Я, правда, играю ещё с тех пор, когда игра ещё не была выпущена в открытое альфа-тестирование, — так что догнать и перегнать меня практически невозможно. Но попытаться стоит! ;) Скриншот под катом, как водится.

Читать далее →

Очень понравился подход к поддержке софта одного из отечественных SEO-программистов. Я понятия не имею, кто этот человек или эти люди, скрывающиеся за названием «Sapient Tools», но однозначно им дикий респект от меня. В 2009 году я приобрёл любопытный мне на тот момент софт, программу Sapient Social Submitter. Вроде бы за 35 баксов, если память не врёт. Программа регистрирует учётные записи во всяких разных каталогах соц. закладок, а также добавляет в эти учётные записи нужные и полезные нам закладки.

Читать далее →

Пишу в первую очередь для себя, чтобы не забыть. Частенько при работе с большим объёмом статистических данных, глядя на лист, забываешь, что в каком столбце должно находиться. Хорошо, что мне такой функционал нужен нечасто, успеваю забыть :-). Итак, пример таблицы, которую неудобно просматривать без фиксации заголовка: Всё оттого, что к 100й строке она выглядит уже совершенно неприглядно. Например, посмотрите — совершенно непонятно, что находится в столбце E, например: Но если мы перейдём на ячейку A2, и выберем в меню «Окно → Фиксировать» таким образом:

Читать далее →

Как известно, если неприятность может произойти — она случается. Неприятностей в этом году у нас случилось порядочное количество, большинство из них — с нашим офисом. То водица, дающая кому-то жизнь, аккуратно капает на компьютер главбуха. Почти как когда-то 4 года назад, ещё на съёмной квартире. То после починки — начинает капать на телевизор. Глючат компьютеры (это обычно не проблема, чаще всего удаётся просто подойти к ним и они начинают работать, как положено).

Читать далее →

На редкость необычный сегодня выдался понедельник. Как правило, с неспанья я не могу похвастаться какой-то высокой производительностью труда, творческими успехами и т.п. — традиционно мой мозг работает в полную силу лишь когда я просыпаюсь ближе к обеду, опаздывая хотя бы на час — впрочем, таких знаменательных моментов давненько не было. Да и работоспособность страдает. Сегодня же, кажется, всё было с точностью до наоборот. У меня завершился один из этапов работы над проектом, всё работает и всё такое.

Читать далее →

Разговорились на днях с товарищем, посетовали друг другу на жизнь горькую. Он жаловался на свой почти что топовый Wi-Fi роутер D-LINK за 3500 рублей, который неплохо работал до тех пор, пока не завёлся новый и хороший интернет по витой паре, который впоследствие нужно было раздавать по Wi-Fi. У меня была в чём-то похожая ситуация: мой на тот момент топовый Wi-Fi роутер Asus RT-N16 на поверку, даже двум компьютерам раздавал интернет со скрипом, если в сети было 2 работающих торрент-клиента (не более 1000 активных соединений, а в документации обещают поддержку 30000).

Читать далее →

Производительность Grails Рано или поздно, любой программист слышит, что производительность инструмента, который он использует или инструмента, который он сделал — невысока. Будь то какой-нибудь синтетический бенчмарк, или сложные распределённые вычисления. Будь то работа с базой данных или с файлами. Все хотят максимальной производительности! Всегда! Немедленно! Как известно, часто максимальная производительность достигается путём жертв. Пожертвовать удобством, настраиваемостью, масштабируемостью, поддерживаемостью — то и другое, и третье и четвёртое — можно принести на алтарь производительности.

Читать далее →

Несмотря на то, что сейчас такие вещи, как последнее обновление записи, модно делать с помощью ORM, — в том случае, если вы можете быть платформенно-зависимы (всю жизнь с MySQL, или готовы переписать триггеры в случае перехода на другую БД вроде PostgreSQL), возможно, есть смысл воспользоваться триггерами. MySQL позволяет сделать один автообновляемый таймстамп, например таким образом: CREATE TABLE games (name VARCHAR(64), created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP); Либо на обновление: CREATE TABLE games (name VARCHAR(64), updated TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);

Читать далее →

Иной раз казалось бы, вполне себе невинный и очень даже простой метод count() может стать серьёзной проблемой для производительности. Предположим, что у нас есть два доменных класса: Игрок и Предмет. Имеем реляцию: Игрок hasMany Предмет. Классы будут называться: Player, Item. Поле с коллекцией предметов — items. Коллекция предметов нужна нечасто, поэтому для её подгрузки используется lazy-loading. В случае, если нам необходимо просто подсчитать количество предметов, мы могли бы использовать такой код:

Читать далее →

Полезное