ActiveRecord Validation
Фантастика! ActiveRecord Validation в Rails помог мне обнаружить ошибку с базе «старого» сайта (название семейства было набрано как название отряда – Coraciiformes вместо Coraciidae).
А делаю я такую крутую штуку – экспорт из «старой» mysql базы в новую, рельсовскую. Узнал, что можно использовать разные классы ActiveRecord с произвольными базами, нужно только инициализировать подключения:
ActiveRecord::Base.establish_connection(spec)
где spec – описание подключения в формате database.yml, куда его собственно можно добавить под произвольным ключом и считать потом.
RoR, git, Heroku
После вынужденного перерыва вернулся к изучению Ruby on Rails. Внезапно стал понимать больше, въехал во многие концепции. Освоился с git, сумел задеплоить на heroku. Использую RubyMine.
RoaRRR!
Ну вот… Я узнал про Ruby on Rails :) И все пошло прахом :) прощай, php! Даже начал кое-что делать. Относительно легко делаются вещи, про воплощение которых я только мечтал – интернационализация, админка для всего, и т.д. Но, конечно, придется решить кое-какие проблемы.
Native JSON
Обновил Firefox до 3.5 и решил почитать release notes (чего никогда не делал). А там написано, что теперь в нем есть Native JSON parsing и вообще, вместо eval лучше использовать этот нейтив парсинг (JSON.parse). А для браузеров, где его нет, есть скрипт: http://www.json.org/js.html
Попробовал применить к своей карте. Работает только наполовину – не парсит данные конкретного кластера. Возможно дело в кавычках, буду исследовать.
Кстати, надо присмотреться к JSMin: http://www.crockford.com/javascript/jsmin.html
И пришло время все джаваскрипты сунуть в отдельную папку, и вообще навести в них порядок.
Полезные ссылки RE:Google Maps API
Google Maps API Tutorial
http://econym.org.uk/gmap/
Clusterer
http://www.acme.com/javascript/#Clusterer
Ту-ду-ду
Времени нет ни на какие усовершенствования… В соответствии с принципом, изложенным в предыдущем посте, пытаюсь в первую очередь давать контент. Воробьинообразные Арабатской стрелки еще не описаны! Хотя с фотографиями продвинулся вперед, скоро будут все.
Недавно сделал одно – в списке видов поста выделение жирным впервые встреченных. Надо добавить еще диапазон дат в посте.
Также первоочередным (но сложным…) кажется карта. Хочется еще прикрутить поиск (самодельный), все те же статьи, отправление комментариев по почту… Рефакторинг бы, редизайн некоторых страниц, список видов Украины полный бы сделать, с указанием статуса, положения в красной книге/красном списке и т. д.
Приоритеты
Бывает, хочется прикрутить новую фичу, улучшить дизайн, рефакторинг сделать… но понимаешь — контент превыше всего. И садишься обрабатывать фотографии, писать посты. А код так и остается бессистемным, дизайн корявым.
Хотя админскую часть карты я довел до приличного вида (но не 100%) – можно делать выборку по наблюдениям, видам, местностям, диапазону дат, посту.
И сообразил, как легко сделать кластеризацию для юзерской части! (Используя остаток от деления – для квадратных секторов. А можно попробовать приблизить к кругу – шестиугольники.)
А ведь еще недообработаны воробьинообразные с Арабатской стрелки!
Карты Google на сайте
Разобрался с Google Maps API и сделал фреймворк, который позволяет отмечать на карте места встречи птиц, двигать, редактировать. Пока только для меня и только на страницах с фотографиями, но почти вся логика уже реализована. Естественно, используется ajax.

Каждое «место» привязано к конкретному наблюдению (n:1), к фотографии можно привязать только одну отметку на карте.
Предусмотрены уровни доступа: приватный (для меня), публичный и «подмена» — менее точный публичный дубль приватной отметки (если я не хочу всем открывать точное место наблюдения, но могу показать приблизительное).
Кроме того, сохраняется значение zoom’а в момент создания отметки и уровень точности: «прецизно» :), точно, грубо. Теоретически, я планирую сделать, как на фликре, когда грубые отметки не будут показываться при большом приближении – ведь они соответствуют не собственно точке с координатами, а скорее некоторой области. Но как конкретно это реализовать, пока не знаю. Возможно, достаточно только значения максимального зума, но и ручное задание точности пусть побудет.
Еще надо будет сделать кластеризацию, т.е. чтобы при меньшем масштабе близкие отметки сливались в одну.
Индексы
Добавил в базу индексы. В некоторых таблицах даже первичных ключей не было :) правда, в маленьких.
После этого мне показалось, что ускорение даже невооруженным глазом заметно! Может, конечно, самообман… Но нет, раньше явно медленнее грузилось.
Приветствие
Этот блог посвящен аспектам разработки сайта http://birdwatch.org.ua. Проект абсолютно любительский, ведется одним человеком, к том же самоучкой. В процессе работы иногда хочется записать некоторые детали реализации или мысли «вообще». Некоторые, вероятно, могут показаться глупыми или тривиальными тем, кто профессионально занимается веб-разработкой. Поскольку для меня это не кусок хлеба, я могу позволить себе ошибаться, а также делать «что интересно», а не «что нужно» :)
Естественно, основные темы: HTML, CSS, web-стандарты, php, mysql, JavaScript.
Оставьте комментарий