Нанесения слоя с пробками на Я.Карту

Posted by admin on Март 07, 2010
IT, JavaScript / Комментарии: 2

API Яндекс.Карт не позволяет «автоматически» нанести на карту слой с пробками. По крайней мере пока. Но проблема решается довольно просто средствами API.

API имеет методы для размещения на карте собственного слоя. Слой карты характеризуется источником тайлов (YMaps.TileDataSource). Для создания источника требуется указать шаблон URL с тайлами.

Источник тайлов

Первая проблема – узнать адрес источника, используемого Я.картами. Решается просто – смотрим с помощью FireBug на карту с пробками и видим в самом верху img с src=http://trf.maps.yandex.net/tiles?l=trf&x=2500&y=1244&z=12&tm=1267986241. Здесь x,y и z – координаты тайла и информация о зуме карты. tm – временная отмека, за которую отдаются данные о пробках. Без указания параметра tm сервер тайлов отдает 404…

Читать далее…

Тэги:

Новый Год 2010 на Урале. Часть 3.

Posted by admin on Февраль 09, 2010
Путешествия / Нет комментариев

Благодаря нашей мобильности за время путешествия мы побывали на трех разных склонах: «городская» горка в Белорецке, склон в Абзаково и склон близ озера Банное. О местах по порядку…

Читать далее…

Новый год 2010 на Урале. Часть 2

Posted by admin on Январь 21, 2010
Путешествия / Нет комментариев

Как ранее писал, мы приехали в Белорецк…

Еще немного о дороге…

В каментах на АЗ просят раскрыть тему штрафов и гайцев. Так вот, штрафов мы не собрали ни одного. Вообще за всю дорогу туда нас не остановили ни разу. По дороге обратно остановили два раза в Казани. Второй раз остановили все три машины, проверили документы, отпустили. При первой проверке документов двум водителям предложили сдать анализ на наркотики. Поскольку дурью не балуемся все прошло успешно.

Проживание в Белорецке.

На этапе подготовки поездки решили что будем жить в съемном коттедже. Предложений в интернете можно найти массу. Рассчитывали изначально на 1200 – 1500 р. с человека. Обычно предлагают среднего качества дом, иногда с удобствами на улице.

Читать далее…

Тэги:

Новый Год 2010 на Урале… Часть 1.

Posted by admin on Январь 17, 2010
Авто, Путешествия / Комментарии: 5

Все началось с того, что однажды друзья позвали с ними поехать на новогодние праздники в Абзаково кататься на досках…

Маршрут.

Маршрут был разработан следующий: Иваново, Нижний Новгород, Казань, Уфа, Белорецк – 1528 км по ati.su. До Нижнего – нефедеральная трасса, что сулило отсутствие фур, после Нижнего большая часть пути – М7. Выезд был запланирован на 18.00 29.12.2009 (впрочем выехали в итоге в 20.00 – пробки в городе). Пройти маршрут предполагалось не более чем за 24 часа двумя водителями в одной машине.

Читать далее…

Тэги:

Промотирую. Телик на основе торрентов.

Posted by admin on Ноябрь 12, 2009
IT / Нет комментариев

Быстрая доставка видео-контента через торенты.
Презентация здесь

Кратко:

  • Есть потоки RSS понимаемые торрент-клиентами и всякими "телевизорами" типа Miro
  • Добавляем поток – получаем свежие обновления – телепередачи, видео-клипы и т.п.
  • Еще описание процесса здесь

Сейчас мы доставляем:

  1. Тупичок Гоблина
  2. Новости НТВ
  3. Локо-ТВ
  4. CNN In Case You Missed It
  5. Discovery channel

Локо-ТВ эксклюзивно, больше нигде не затянуть. Только на официальном сайте смотреть.

Виджеты – 500 установок

Posted by admin on Ноябрь 03, 2009
IT, Виджеты, Проекты / Нет комментариев

Виджеты – 500 установок.

А еще их теперь можно ставить к себе на сайт.

Кстати, один такой виджет можно увидеть в правой колонке в самом низу.

SharePoint: получаем SPListItem из SPList – очень быстро и очень медленно

Posted by admin on Октябрь 11, 2009
C#, SharePoint / Нет комментариев

При профилировании веб-части для SharePoint с удивлением обнаружил узкое место в SPListItemCollection.this[Guid]… Получение элемента списка по Guid’у, фактически первичному ключу, занимало уйму времени на большой коллекции.
Происходило это так

var uniqId = new Guid(/* get GUID somehow */);
SPList list = /* get list somehow */

SPListItem anItem = list.Items[uniqId];

* This source code was highlighted with Source Code Highlighter.

Как есть еще методы получения элемента из списка?
Есть SPList.GetItemByUniqueId(Guid uniqueId) – при использовании не возникает такой задержки. Почему?

Воспользуемся рефлектором, и пореверсинженерим шарепонит…

Вот что мы видим в SPListItemCollection.this[Guid]:

public SPListItem this[Guid uniqueId]
{
  get
  {
    this.EnsureListItemsData();
    this.EnsureFieldMap();
    int iIndex = 0;
    int columnNumber = this.m_mapFields.GetColumnNumber("UniqueId");
    string str2 = uniqueId.ToString("B").ToLower();
    while (true)
    {
      if (iIndex >= this.m_iRowCount)
      {
        throw new ArgumentException();
      }
      string str = ((string) this.m_arrItemsData[columnNumber, iIndex]).ToLower();
      int num3 = SPUtility.StsBinaryCompareIndexOf(str, ";#");
      if ((num3 > 0) && (str.Substring(num3 + 2) == str2))
      {
        this.EnsureListItemIsValid(iIndex);
        if (this.m_iColection == null)
        {
          return new SPListItem(this, iIndex);
        }
        return this.m_iColection.ItemFactory(iIndex);
      }
      iIndex++;
    }
  }
}


* This source code was highlighted with Source Code Highlighter.

Содержимое всей коллекции перебирается элемент за элементом, для каждого элемента вычисляется совпадение GUID’а с заданным. Чем больше коллекция – тем дольше работаем.

А теперь GetItemByUniqueId:

public SPListItem GetItemByUniqueId(Guid uniqueId)
{
  SPQuery query = new SPQuery();
  query.Query = "<Where><Eq><FieldRef Name=\"UniqueId\"></FieldRef><Value Type=\"Guid\">" + uniqueId.ToString("B") + "</Value></Eq></Where>";
  query.ViewAttributes = "Scope=\"RecursiveAll\" ModerationType=\"Moderator\"";
  query.MeetingInstanceId = -2;
  query.QueryOpt = SPQuery.SPQueryOpt.None | SPQuery.SPQueryOpt.UniqueId;
  SPListItemCollection items = this.GetItems(query);
  if (items.Count != 0)
  {
    return items[0];
  }
  while (!(this.ID == this.Lists.Web.UserInfoListId))
  {
    throw new ArgumentException();
  }
  throw new ArgumentException(SPResource.GetString("CannotFindUser", new object[0]));
}


* This source code was highlighted with Source Code Highlighter.

Здесь, используя SPQuery, получаем непосредственно саму запись без перебора коллекции.

Вывод: на больших списках пользоваться SPList.Items[Guid] – долго, непроизводительно. Лучше предпочесть SPList.getItemByUniqueId(Guid);

_________
Текст подготовлен в ХабраРедакторе

UPD: Спасибо хаброюзеру vladem – полезная линка на тематический KB – http://msdn.microsoft.com/en-us/library/bb687949.aspx

Обновление коктейльного сайта

Posted by admin on Август 20, 2009
Проекты, Хочу коктейль / Нет комментариев

Теперь подбирать коктейли стало удобнее (ну я надеюсь =) ).
Можно добавлять только совместимые с ранее добавленными ингредиенты, появились сортировки по крепости напитка и сложности приготовления.

Недавние проекты

Posted by admin on Август 02, 2009
IT, Проекты / Нет комментариев
  • cocktails.elifantiev.ru – подбор коктейлей по имеющимся ингредиентам на основе базы Яндекса. Пост на Хабре
  • roadcams.elifantiev.ru – дорожные камеры г. Ярославля, по аналогии с последними нововведениями на Яндекс.Пробках. Видео от ТензорТелеком.

Плагин для кэширования селекторов в jQuery

Posted by admin on Июнь 29, 2009
IT, JavaScript / Нет комментариев

Простой плагин для jQuery, позволяющий закэшировать работу селекторов.
По наводке tenshi в камментах к http://olegas.habrahabr.ru/blog/63119/

(function($) {
 
 var selectorCache = [];
             
 $.cache = {

  get : function(selector) {
   return selectorCache[selector] || (selectorCache[selector] = $(selector)); 
  },
  
  clear: function(selector) {
   selector == null ? selectorCache = [] : selectorCache[selector] = null;
  }
 }
 
})(jQuery);

* This source code was highlighted with Source Code Highlighter.

Использовать примерно так:

// Before
$('#some .css .selector').some().action();

// After
$.cache('#some .css .selector').some().action();

* This source code was highlighted with Source Code Highlighter.