|
Понедельник, 26 Сентябрь. 2011
На редкость необычный сегодня выдался понедельник. Как правило, с неспанья я не могу похвастаться какой-то высокой производительностью труда, творческими успехами и т.п. — традиционно мой мозг работает в полную силу лишь когда я просыпаюсь ближе к обеду, опаздывая хотя бы на час — впрочем, таких знаменательных моментов давненько не было. Да и работоспособность страдает. Сегодня же, кажется, всё было с точностью до наоборот. У меня завершился один из этапов работы над проектом, всё работает и всё такое. И даже RescueTime подтверждает. Про RescueTime я как-нибудь попозже напишу, на мой взгляд — толковая штуковина. Вот, например, по графику видно — на то, чтобы убедить людей из Интернета, что они неправы — у меня сегодня ушло 28 минут, и это очень непродуктивно израсходованное время. Ещё по графику видно, когда у меня обед, путешествие домой и ужин.
Продолжить чтение "Странно продуктивный понедельник"
Суббота, 24 Сентябрь. 2011
Разговорились на днях с товарищем, посетовали друг другу на жизнь горькую. Он жаловался на свой почти что топовый Wi-Fi роутер D-LINK за 3500 рублей, который неплохо работал до тех пор, пока не завёлся новый и хороший интернет по витой паре, который впоследствие нужно было раздавать по Wi-Fi. У меня была в чём-то похожая ситуация: мой на тот момент топовый Wi-Fi роутер Asus RT-N16 на поверку, даже двум компьютерам раздавал интернет со скрипом, если в сети было 2 работающих торрент-клиента (не более 1000 активных соединений, а в документации обещают поддержку 30000). Сетовали-сетовали, клялись или покупать дешёвые китайские роутеры или циски, да так и умолкли. И тут он постучал ко мне вчера вечером, и показал ссылку на обзор роутера Netgear WNDR4500, и в статье написано, что он у нас будет в продаже в декабре. А между тем, его замечательно продают уже больше недели на Amazon.com ($180, плюс доставка в РФ обойдётся около $50, плюс возможна комиссия посреднику баксов 10-20). Я по дружбе никакой комиссии не взял, понятное дело. Конечно, не обязательно покупать столь дорогой wifi роутер для дома: в большинстве случаев хватит и дешёвых устройств до $100 (у меня было 7 Wi-Fi устройств в 3х комнатах, например — тут дешёвкой не отделаться). Но порой так хочется не просто роутер, а роутер без проблем. И в этом плане выгодно смотрится оборудование от Netgear: довольно-таки известного американского производителя сетевых и не только устройств.
Продолжить чтение "О Wi-Fi устройствах, немножко опыта и мыслей о Linksys WNDR4500"
Пятница, 23 Сентябрь. 2011
Производительность Grails Рано или поздно, любой программист слышит, что производительность инструмента, который он использует или инструмента, который он сделал — невысока. Будь то какой-нибудь синтетический бенчмарк, или сложные распределённые вычисления. Будь то работа с базой данных или с файлами. Все хотят максимальной производительности! Всегда! Немедленно! Как известно, часто максимальная производительность достигается путём жертв. Пожертвовать удобством, настраиваемостью, масштабируемостью, поддерживаемостью — то и другое, и третье и четвёртое — можно принести на алтарь производительности. Но насколько серьёзны потери? Насколько их можно избежать? Как можно выжать из проекта побольше производительности? Давайте посмотрим на примере Grails.
Продолжить чтение "Оптимизируем производительность фреймворка Grails"
Вторник, 20 Сентябрь. 2011
Несмотря на то, что сейчас такие вещи, как последнее обновление записи, модно делать с помощью ORM, — в том случае, если вы можете быть платформенно-зависимы (всю жизнь с MySQL, или готовы переписать триггеры в случае перехода на другую БД вроде PostgreSQL), возможно, есть смысл воспользоваться триггерами. MySQL позволяет сделать один автообновляемый таймстамп, например таким образом:
Продолжить чтение "MySQL и автоматическое обновление таймстампов"
Понедельник, 19 Сентябрь. 2011
Иной раз казалось бы, вполне себе невинный и очень даже простой метод count() может стать серьёзной проблемой для производительности. Предположим, что у нас есть два доменных класса: Игрок и Предмет. Имеем реляцию: Игрок hasMany Предмет. Классы будут называться: Player, Item. Поле с коллекцией предметов — items. Коллекция предметов нужна нечасто, поэтому для её подгрузки используется lazy-loading. В случае, если нам необходимо просто подсчитать количество предметов, мы могли бы использовать такой код: player.items.count()
Но гораздо быстрее будет работать код Item.countByPlayer(player)
Попробуем разобраться, что же происходит?
Продолжить чтение "Grails и коварный метод count()"
|