терапия
Сейчас этот блог в основном про психотерапию.
как правильно
Слушайте меня, я вас научу правильно жить.
психология
Буржуазная лже-наука, пытающаяся выявить закономерности в людях.
практика
Случаи и выводы из психотерапевтической практики.
кино
Фильмы и сериалы.
книги
Это как кино, но только на бумаге.
nutshells
«В двух словах», обо всем.
дорогой дневник
Записи из жизни (скорее всего, не интересные).
беллетристика
Мои литературные произведения и идеи.
духовный рост
Когда физический рост кончается, начинается этот.
дивинация
Как предсказывать будущее.
половой вопрос
Про секс и сексуальность.
заяижопа
Творческий дуэт с моей женой.
магия
«Магическое — другое название психического».
Карл Юнг
игровой дизайн
Раньше я делал игры.
игры
Компьютерные игры.
язык
Слова там всякие.
людишки
Уменьшительно-ласкательно и с любовью.
культ личности
Про великих людей (то есть, в основном про меня).
hwyd
Уникальная Система Прививания Привычек.
буклет
я
идеи
блоги
spectator.ru
дети
wow
вебдев
музыка
контент
программирование
религия
дейтинг
диалоги
яндекс
кулинария
coub
fitness
символы
йога
шаманизм
tiny
ребенок
backward2 forward3

Auto Increment with MongoDB

13 лет назад в категориях mongodb php

Популярная по своей дурости задача «а я не хочу эти длинные id, я хочу увеличивающиеся циферки в качестве айдишников».

Несмотря на свою нелепость, она иногда нужна. Например, человекочитаемые номера. «Хуйня номер 10».

Самый простой и рекомендуемый всеми способ — хранить где-то отдельно счетчик и менять его с помощью findandmodify (для чего в php нет отдельного метода, но можно через command).

Но можно сделать проще!

Если это хорошая, правильная таблица, из которой ничего не удаляется, то мы можем посчитать «номер записи» в таблице тупо зная тот факт, что нативные MongoId увеличиваются со временем и по ним можно сортировать не хуже, чем по какой-нибудь «дате создания».

Короче, как-то так:


$mongo -> insert ($U);
$inc = $mongo -> find (array ("_id" => array ('$lt' => $U[_id])));
$inc = $inc -> count ();
$inc++;
$mongo -> update (array ("_id" => new MongoId ($U[_id])), array ('$set' => array ("inc" => $inc)));

Ограничения очевидны, но часто «и так сойдет», да-да.

0

Фотосортер

Поставил сначала Пикасу. Потом подумал и написал скрипт (вы не поверите — на php), который сортирует все фотографии по директориям, вида год/название камеры/месяц. Отсортировал все за десять лет. Оказалось очень удобно, особенно название камеры, сразу видны профессиональные фотосессии и хипстерские фотки с айфона.

Php maed me sad

Сайт про то, какое php гавно неконсистентное. Помимо того, что перечислено (хотя я не со всем сталкивался), меня в последнее время раздражает, что при нестрогом типировании (это так по-русски называется?), которое, наверное, благо, пустая или несуществующая переменная не считается пустым массивом.

Файлы в базе

Люди, которые хранят файлы в базе — больные извращенцы. Если это MySql, хехе. В Монго есть специальный механизм для хранения файлов в «базе», называется GridFS. Полезностей у него минимум две:
1. Легкий бэкап кучи файлов с помощью репликации базы.
2. Все равно нужна таблица с метаинформацией к файлам, тут все хранится «вместе».

R3

Вы, наверное, ждете, что я, как какой-нибудь Бирман, буду расписывать прелести нового движка? (Он называется, кстати, R3 — только потому, что предыдущий назывался R2). Так вот, не буду. В серверной части от тривиален. Нет, ну все же знают эту старую фишку, что разница эффективности программистов может достигать 20 раз, про это писали все, кому ни лень.

Full Text Search in Mongo

Прочитал про Full Text Search в Mongo.

Это великолепно.

Нет, правда.

ЧПУ sucks balls

ЧеловекоПонятные Урлы — это фетиш. Я буду отказываться от них везде, где можно. В урле, типа www.hobius.com/?user=smirnov я не вижу ничего плохого, например. Особенно когда по адресу site.com/users/ нет ничего, а по адресу site.com/users/username уже есть. Ну и заодно, по аналогии с «твиттерскими» адресами, типа twitter.com/#/something, придумал самый простой способ реализовать ЧПУ почти везде безо всяких mod_rewrite и прочего.

Хорошей DB должно быть монго

Много-много лет назад, великий гений, коим я, несомненно, являюсь, осознавал неуместность использования реляционных баз данных в веб-программировании и регулярно травил пхп-программистов, которые любили писать, например, логи в базы.