Обжора skype
Posted Jan.30, 2012 in Профессиональное
Comments Off on Обжора skype
Tags: skype, программирование
Posted Jan.30, 2012 in Профессиональное
Comments Off on Обжора skype
Tags: skype, программирование
Posted Oct.10, 2010 in Перепосты, Работа
В начале был NCSA Mosaic, и Mosaic называл себя NCSA_Mosaic/2.0 (Windows 3.1), и Mosaic показывал картинки с текстом, и счастье пришло.
И потом пришел новый веб-браузер, известный как «Mozilla», что сокращением было для «Mosaic Killer»(«Убийца Мозаики»)
в конце этой увлекательной статьи вы узнаете, почему юзер-агент Гугл Хрома выглядит так дико:
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13
Tags: web, перепост, полезно, программирование
Posted Nov.26, 2009 in Работа
На работе столкнулся с досадным недостатком mysql: он не умеет делать слияние отсортированных индексом массивов.
На пальцах: пусть есть таблица objects (id, category_id, time) с индексом (category_id, time). Задача – выбрать среди данных нескольки категорий N последних.
Запрос:
SELECT * FROM objects WHERE category_id IN (10,11,12,13, 14) ORDER BY time DESC LIMIT 10;
даже не думает работать по индексу. Он отбирает все объекты из этих категорий, сортирует их filesort’ом и потом отбирает первые. Хотя очень логично поступить аналогично сортировке слиянием: взять отсортированные последовательности для каждой категории и сливать их, пока не получим N элементов.
Итак, мелькнула идея попробовать применить PostgreSQL. Поставил, перелил в него таблицу, сделал аналогичные запросы – он приятно удивил: 0.5-0.6 секунд против 2.5-3.0 в мускуле. Причём Постгре был под виндой, а Мускул под FreeBSD. Не могу точно утверждать, индексы разруливает лучше или просто сыграл тот факт, что движок быстрее (а он реально быстрее), потому что он и без проставленных индексов работал быстрее мускула (в районе 1.0-1.5 сек).
Я бы на этом и остановился, но шеф настоял, чтобы я попробовал MongoDB. Опустив лирику, могу только подписаться под резюме: “Быстрый, как понос”. Для той же самой задачи он дал результаты порядка 0.2-0.3 сек.
И уже все были готовы перейти на использование MongoDB, как вдруг мелькнула шальная мысль. Сделали копию таблицу в Mysql MEMORY engine, внесли данные в нужном порядке, убрали (!) все индексы. Ура! Результаты порядка 0.02-0.05 сек.
Что тут сказать… Универсальных решений не бывает, вот и всё.
Comments Off on mysql, postgre, mongodb и снова mysql
Tags: mysql, программирование, работа
Posted Sep.17, 2009 in Общая
предлагаю SQL-задачку. не надуманная, возникла на работе.
контекст: музыкальный сайт, таблица (mysql) с плейлистами юзера
playlists:
{
int id, //автоинкремент
int song_id, //id самой песни
int user_id, //id юзера, который добавил себе песню
datetime added, //время, когда добавлена песня в его плейлист
}
song_id не уникальны, т.к. песню могли добавить несколько юзеров.
задача: написать SQL для выборки: “последние песни, добавленные в плейлисты пользователей”. для песен нужно вывести кто и когда их добавил в последний раз. дубликаты песен выводить не нужно, если песню добавили два юзера – вывести последнее добавление.
иными словами, нужно выбрать “последние N неповторяющихся песен в плейлистах с указанием того, кто последний и когда её добавил”.
то, что пока придумал я, имеет 4 select’а в запросе и 3й уровень вложенности этих select’ов. сможешь лучше?
P.S. конечно же, должно работать максимально быстро. в наличии есть индекс по added.
Tags: mysql, web, задачи, программирование
Posted Sep.13, 2009 in Общая
с праздником нас!
Программист — человек, больной тяжёлой формой поражения коры головного мозга – интеллектом, дальше
Comments Off on день программиста
Tags: программирование, события
Posted May.10, 2009 in Общая
Юра Зновьяк сегодня подкинул забавную задачку. Цитирую:
Interview question: f(f(n)) == -n
Design a function f, such that:
f(f(n)) == -n
Where n is a 32 bit signed integer; you can’t use complex numbers arithmetic.
If you can’t design such a function for the whole range of numbers, design it for the largest range possible.
В двух словах: нужно написать int f(int n) {…} такую что f(f(n))==-n.
Я написал для всего диапазона int, кроме 3х чисел. Мне понадобилась 2 минуты чтобы придумать и минуты 3 чтобы закодить. А ты?
Tags: задачи, программирование