четверг, 6 ноября 2008 г.

Currency exchange chart redesign

Redesign for currency exchange chart (USD/EUR/JPY to RUR):

and mini-version:


All of these for GMail — just because i do not use iGoogle.

Currency exchange as a Safari Snippet

You can use this URL (or that) to make Dashboard snippet for currency exchange plot.

понедельник, 3 ноября 2008 г.

Currency exchange plot for GMail



RUR/USD and RUR/EUR currency exchanges and three scales of plot (scales changing by clicking on plot). With GMail sidebar width.

Plot (chart) made with Google Charts API.

Gadget page

воскресенье, 2 ноября 2008 г.

Google Gadets Renew

Currency converter gadget had been renewed lately. Generally due to height issues:
http://avc-cbrf-gadget.googlecode.com/files/cbrf_eur_usd_v2.xml

It's also posted to gadgets directory.

Also, there is a new compact and narrow version especially for GMail —


Here it is — http://avc-cbrf-gadget.googlecode.com/files/cbrf_gmail_v2.xml

вторник, 9 сентября 2008 г.

Дерево тэгов

Каталоги страдают тем, зачастую, что ими не удобно пользоваться.
Например, "Мои карты" на Google Maps. Возможно там и есть какие-то полезные карты, но найти их просто невозможно.

При условии, что люди будут дисциплинированно заполнять тэги эту проблему можно решить. Классный вариант (интерфейс) увидел в GarageBand:



При нажатии кнопки, соответствующий её тэг добавляется к фильтру. Если добавление тэга может привести к тому, что все записи будут отфильтрованы (пустая выборка), то кнопка становится неактивной.

суббота, 5 июля 2008 г.

Сэмплы

В процессе работы над проектом построения карт плотности фотографий возникла необходимость построения различных градиентов. Простейшие градиенты наподобие "чёрный-красный", "зеленый-желтый" и чуть более сложные легко описываются соответствующей формулой в программе. Когда же речь заходит о градиентах наподобие "черный-красный-желтый-белый" в программе появляется куча условий и формул, что ухудшает её читаемость и гибкость. Для решения этой проблемы был использован механизм с использованим сэмплов.
Сэмпл - функция f(x), где х находится в диапазоне [0;1]. Значения функции так же принадлежат отрезку [0;1].
Основные сэмплы следующие:
"1" — Функция f(x) = 1. Равен 1 при любых значения x.
"0" — Функция f(x) = 0. Равен 0 при любых значения x.
"+" — Функция f(x) = (1-cos(x*pi))/2. Плавно возрастает от 0 до 1.
"-" — Функция f(x) = (1+cos(x*pi))/2. Плавно убывает от 1 до 0.


Основные сэмплы — желтый, бирюзовый, красный, зеленый. Плюс несколько дополнительных — более резкий подъем/спуск, "бугор" 0-1-0 или впадина 1-0-1 — тоже могут пригодиться.

Функция, реализующая механизм сэмплов, принимает в качестве параметров значение входной переменной, размер одиночного сэмпла и строку, представляющую собой последовательность сэмплов. Например, если значения входной переменной находятся на отрезке [0;1] и для преобразования её значения используются 4 сэмпла, размерность каждого сэмпла будет равна 1/4. Сама последовательность может быть представлена, например, так — "00+1".

Например, для реализации градиента "черный—красный—желтый—белый" необходимо применить следующие последовательности сэмплов:
Красный — "+11", зеленый — "0+1", синий — "00+".

четверг, 26 июня 2008 г.

Глюки на 180º

Обнаружился ещё один глюк в Panoramio™, связанный с переходом с +180 на -180.
Тут фоток нет. А тут, опа, за 20 тыс.
То есть, если фрагмент слева в восточном полушарии, а справа в западном, то он инвертируется и опоясывает всю землю.
Аналогичная ситуация возникает Google Earth™, но она исправима путем дополнения отрицательного значения до 360 градусов (надо прибавить 360, грубо говоря). В Panoramio™ такой фокус не проходит.

Сайт

http://projekcts.ru/

вторник, 10 июня 2008 г.

График предсказаний погоды

Суть проекта такова — с декабря прошлого года 4 раза в день с сайта Яндекс.Погода извлекался прогноз на предстояшие дни (10 дней, правда он не всегда дает 10 дней) по Москве. Таким образом для каждой даты (за исключением пограничных и тех, когда Яндекс выдавал менее 10 дней) собрано 40 значений температуры, на основании которых построены графики максимума, минмума и разности между максимумом и минимумом:



А так же график отклонения предсказанной температуры от реальной (температуры, которая показывается в тот же день) в зависимости от количества оставшихся дней:

понедельник, 9 июня 2008 г.

Проект PhDen

Проект построение карт плотности фотографий на основе сервиса Panoramio перемещается сюда.
В настоящий момент обрабатывается Москва и окрестности. Далее будет центральная часть России. Потом Европа. А далее посмотрим...

воскресенье, 8 июня 2008 г.

Снова центр Москвы


Данное изображение было получено с использованием иного подхода, чем предыдущие. Для выбранного фрагмента были загружены координаты всех размещенных на нем фотографий и затем они были размещены на сетке заданного размера.

суббота, 7 июня 2008 г.

Плотность фотографий по Москве


Разрешение — 32х32.

Карта сделана в фотошопе на основе изображения, выдаваемого скриптом (для наглядности сделан Auto Levels) —

среда, 4 июня 2008 г.

Densiramio

Карта плотности фотографий на Panoramio.
Проба пера (сделано вручную при помощи MS Excel)



Идею подсказал — http://komelsky.livejournal.com/95440.html

В ближайшее время планирую разродиться полноценной тулзой по этому поводу.

пятница, 30 мая 2008 г.

Кэширование Google Maps

Скрипт для отображения кэшированных тайлов при использовании Google Maps API.
Сами тайлы предварительно выгружаются при помощи gMapMaker.

четверг, 22 мая 2008 г.

Утилиты для рипа карт Google

Хорошие утилиты для rip-а карт с Google maps (и их последующего совмещения):
gMapMaker
GoogleMV

Кодировка тайлов в Google Maps (Google Maps tiles encoding)

Для перевода координат вида trtqrstsstqt
http://kh0.google.com/kh?n=404&v=17&t=trtqrstsstqt

в координаты вида x=1240, y=637, z=6
http://mt2.google.com/mt?n=404&v=w2.74&hl=en&x=1240&y=637&zoom=6&s=Ga

надо делать так:

s='trtqrstssttqqts';
m='';
x=0; y=0;
for(i=1;i<s.length;i++) {
switch(s[i]) {
case 'q': x=x*2+0; y=y*2+0; break;
case 'r': x=x*2+1; y=y*2+0; break;
case 's': x=x*2+1; y=y*2+1; break;
case 't': x=x*2+0; y=y*2+1; break;
} }
url='http://mt2.google.com/mt?n=404&v=w2.74&hl=ru&zoom='+(18-i)+'&x='+x+'&y='+y;

Обратное преобразование можно осуществить путем побитового совмещения координат x и y. При этом (0;0) дает q, (1;0) — r, (1;1) — s, (0;1) — t. Например:

x=1238; y=639; zoom=6;
ts=""; tc="qtrs";
for(i=0;i<17-zoom;i++) ts="tc[2*((x">>i)&1)+((y>>i)&1)]+ts;
}
ts="t"+ts;

среда, 30 апреля 2008 г.

shadowCaster

Тень на Google Maps

Маплет отображает движение (след от движения) тени в течении дня в заданном месте и в заданное время. Задается также высота объекта. Дополнительно маплет отображает расстояние от объекта на котором тень закрывает объект заданной высоты (меньшей, чем высота основного объекта).
Пользуясь этим апплетом можно, к примеру, определить — будет ли соседнее здание затенять солнце на определенной высоте — это поможет с выбором этажа квартиры, например.

Текущая версия использует калькулятор SunAngle (точнее одну js-функцию калькулятора). В следующей версии предполагается использовать собственный калькулятор.

Дополнительно предполагается включить функции отображения следа тени за весь год (12 дневных следов) и длину тени в заданное время в течении года. Плюс к этому отображать время восхода-захода и максимальную длину тени (возможно ещё какие-то другие показатели в численном представлении).

понедельник, 21 апреля 2008 г.

Карта Москвы

Через гигантский iframe при помощи Perl Crescent Page Saver Basic (аддон для файрфокса) снял карту Москвы в одну картинку размером где-то 5000x5000. Детальность приемлемая для размещения, к примеру, каких-то объектов или общего обзора. Для навигации не очень — мелкие улицы не видны.
Вес ~ 10Mb.