Saturday, May 31, 2008

Все, что нужно

CTIA-The Wireless Association оценила эффект воздействия беспроводного широкополосного доступа на экономику США. БШПД и голосовые сервисы превысят $427 миллиардов к 2016 году. Дополнительно для GDP они принесут $860 миллиардов в течение следующих 10 лет. Отсюда.

Не мылится

Cisco хочет заменить SOAP новым протоколом. Причина - лучшая производительность. Реализация будет доступна по Open Source лицензии. Компания надеется, что протокол будет стандартизован. Интересно, при таком господстве REST в интерфейсах - так ли интересен SOAP (или его замены)? Кажется, это просто лишние проблемы для разработчиков. До этого Google заменял XMPP, теперь вот Cisco

Friday, May 30, 2008

О свободе

ПЕТЕРБУРГ, 14,V.
Служащим женщинам-телеграфисткам в петербургском телеграфе дано разрешение выходить замуж за кого они хотят.
До сего времени женщины-телеграфистки имели право выходить замуж только за телеграфных чиновников. Делалось это в целях сохранения телеграфной тайны.

"Русское Слово" 28(15) мая 1905 года. Отсюда

Новое от Google

1. Энциклопедия веб-разработки Doctype. Представленные темы: web security, работа с JavaScript DOM и CSS.

2. Новый API для Google Maps. На этот раз - использование Flash. Вот интересный пример использования: MapRooms. Попробуйте зайти в одну "комнату" из двух разных браузеров. Все, что рисуется в одном окне - немедленно отображается в другом.
Другим использованием этого API может быть, между прочим, публикация карт в livejournal.com. JavaScript там запрещен, а Flash публиковать можно. В проекте GeoLinks для публикации в ЖЖ был даже сделан специальный экспорт в maps2lj. Теперь все можно делать непосредственно с Google интерфейсами.

3. Google static maps. Позволяет публиковать статические изображения карт. Одно из использований - мобильные сайты. Вот характерный пример - Мобильные карты.

4. Google Earth API. Появился plugin для браузера, который позволяет просматривать 3-х мерные модели. А собственно API позволяет использовать новые возможности программно. Добавить 3-х мерный вид для существующих мэшапов - реально одна строка кода. Вот, например, в Большой карте вы можете увидеть вверху новый тип представления - Earth.

Thursday, May 29, 2008

Андроиды

Живые Android phone на конференции Google I/O. Много видео и картинок в androidcommunity.com

Архитектура eBay - 2

Еще один интересный материал по архитектурным решениям на eBay. eBay - вообще интересная тема при изучении архитектур больших проектов, поскольку многие вещи они делают по своему. См. например, здесь или здесь.
В новом описании собраны воедино все их основные архитектурные принципы:

- разнесение функциональности по отдельным базам данных. Нет одной системы. 1000 баз данных на 400 хостах. 16 000 (!) серверов приложений
- балансировка нагрузки. Горизонтальное разделение сервисных запросов между идентичными серверами. Причем разделение касается и баз данных. Данные (например, по диапазону значений ключа) разнесены по разным серверам.
- никаких распределенных транзакций
- использование асинронных запросов
- виртуализация на всех уровнях. Приложения, например, взаимодействуют с некоторой логической базой данных, которая отдельным образом отображается на конкретную систему в конфигураторе. Это явно привнесено под воздействием J2EE
- развитый кэш

Полезный материал.

Wednesday, May 28, 2008

О нас пишут

Заметка в блоге Google Maps mania о Мобильных картах - "Mobile Maps is another very simple but revolutionary idea". Лучше не скажешь :-)

Все мы там будем

Анонсированы Google Ajax libraries. Позволяют ускорить работу с популярными JavaScript библиотеками Prototype, Script.aculo.us, jQuery, Dojo и MooTools. Идея в том, что теперь их можно загружать, используя развитую серверную инфраструктуру Google. Не нужно копировать их на свой сервер для каждого проекта. Все - из одного источника. И большой кэш. Удобно - ничего не скажешь. Вот подробное объяснение на Ajaxian

Tuesday, May 27, 2008

Газета 2.0

Как выжить прессе в новых условиях? NY Times открывает API для доступа к собственным данным. А в России, насколько я понимаю, некоторые издания пытаются собирать деньги за доступ к свои старым текстам ...

Sunday, May 25, 2008

О геокодинге

Одна из интересных задач в геокодинге - это его автоматизация :-). По сути - возможность сделать его прозрачным для пользователей. Вот один из реальных примеров этого - наш проект MetroMap. Записи из существующих RSS фидов автоматически располагаются на карте, основываясь на упомянутых в тексте станциях метрополитена.
Вот еще одна интересная работа в этой области. Эта статья, на самом деле, излагает результаты магистерской диссертации автора (Г. Гусейнова), которую он защитил на факультете ВМиК МГУ. Здесь рассматривается общая задача - как в связном тексте выделить адресную информацию. Если, например, удастся выделить адрес (адреса) из текстовой статьи, то далее, можно воспользоваться сервисом геокодинга Google (или Yahoo) и получить координаты. В работе был предложен эвристический алгоритм поиска адресов. Эвристика, в принципе, предполагает, что мы не получим 100% результата, но приведенные в работе оценки результатов работы алгоритма (более 80% правильного распознавания) позволяют говорить о хороших возможностях практического применения.



Детали - здесь.

Friday, May 23, 2008

Ericsson жив

Несколько интересных ссылок:

1. Java библиотека для построения Parlay X сервисов - Telecom web services SDK

2. MMS SDK. Инструментарий для работы с MMS

3. Конкурс приложений для IMS. Запустили совместно с Sun. Срок - до 30 сентября 2008 года. Призовой фонд: $5000.

Thursday, May 22, 2008

Абавазрение 22.05.2008

Некоторые интересные ресурсы:

1. Портал бесплатных иконок. Ясно, что иконок много, но каждый раз искать надоедает.

2. Учебник университета Беркли по компьютерным алгоритмам

3. Opera Widgets SDK. Разработка веб-компонент на взгляд Opera.

4. Jetty Continuation. Сравнительные таблицы преимуществ в масштабировании по сравнению со стандартным подходом (один запрос - один процесс). Может и не стоило в Facebook переходить на Erlang?

5. Bluetooth и IRDA маркетинг - Hypertag

Wednesday, May 21, 2008

Мобильные карты

Новый Google Maps mashup - Мобильные карты. Идея в том, что можно выбрать нужный фрагмент карты и послать сыылку на него
(в виде статической картинки!) мобильному пользователю. Или опубликовать у себя на мобильном сайте. В любом случае - для просмотра такой карты в итоге только и нужно, чтобы на мобильном телефоне можно было загрузить картинку. То есть эта схема будет работать даже для самых старых WAP браузеров.
Как это выглядит? На полноэкранной карте выберите нужный фрагмент, изменяя масштаб и перемещая карту. Маркер всегда отмечает центр карты. Перемещая карту, вы можете спозиционировать маркер на нужный объект. Далее - кликните на иконке с письмом. Указатель на фрагмент карты (готовый для просмотра на мобильном телефоне) можно переслать по email. Можете воспользоваться, например, SMTP - SMS шлюзом вашего оператора и послать в итоге SMS с картой нужному абоненту.

Facebook chat

Описание архитектуры Facebook Chat. Все базируется на циклических HTTP запросах. Ответ от XMLHttpRequest немедленно посылает посылает новый запрос. Таким образом организуется постоянный опрос клиентом чата (это iFrame на пользовательской веб-странице) сервера. Естественно, что при 70 миллионах пользователей такое количество запросов сильно нагружает веб-серверы. Отсюда и возник Erlang как реализация веб сервера - обработка запросов более легкая, чем в Apache.

Memcached

На DeveloperWorks (IBM) в продолжение своей серии об оптимизации PHP программ опубликован интересный материал по использованию memcached. От установки до программирования. См. здесь

Tuesday, May 20, 2008

Прием звонка

Здесь мы собрали воедино разные способы использования голосовых звонков в своих веб-приложениях, которые можно реализовать с помощью наших сервисов. Что мы имеем в виду? Это возможность пользователю "позвонить" в веб-приложение (блог, сайт, социальную сеть). А веб-приложению, соответственно, без использования специальных телекоммуникационных API, принять информацию о звонке. И использовать далее голосовые отклики пользователей. Что здесь может быть:

1. Блог-платформа как CMS (content management system). Вот на базе сервисов типа Голос ЖЖ (публикация голосовых сообщений в livejournal.com) или Голос Li.ru (то же самое для liveinternet.ru), которые непосредственно предназначены для публикации голосовых файлов в блогах, можно сделать сервис, который просто будет собирать голосовые звонки в указанном вами блоге. Безо всякой регистрации пользователей, просто сбор голосовых звонков и публикация аудио-файлов файлов в блоге. А у блога (журнала), естественно, есть RSS поток. Это уже сама блог-платформа обеспечивает. И из этого RSS фида ваше веб-приложение может и выбирать голосовые файлы пользователей. Опять таки, разбор XML реализован уже везде.

2. Voice 2 Email. Сервис позволяет принимать голосовые звонки по email. Письмо, с записанным mp3 файлом в аттачменте. А ведь помимо чтения писем в каком-то почтовом клиенте их можно получать и программно. Реализации POP/IMAP библиотек есть для всех систем программирования. То есть ваше приложение может собирать голосовые отклики просто из своего почтового ящика.

3. Call2Web. Непосредственный прием голосовых файлов в приложении. Это самое правильное, пожалуй. Вы сами опеределяете callback, в качестве которого здесь выступает CGI скрипт для выгрузки файла. Веб-приложение, в итоге, получает mp3 файл, записанный на телекоммуникационной платформе. И эта операция реализуется просто как загрузка файла.

4. Персональное использование. Здесь, например, Voice 2 WAP. Вы звоните и записываете сообщение. Ссылка на записанный mp3 файл придет на ваш же телефон по SMS. Это просто mp3 файл. Его, кстати, не обязательно прямо здесь на телефоне выгружать. Это обычный URL, загрузить файл можно где угодно. А можно пришедший SMS со ссылкой кому-то просто переслать. Голосовое письмо получится.
Ну и упоминавшийся сервис Voice 2 Email. Можно завести код сервиса для собственного email адреса. Иными словами, у вас будет персональный код сервиса, при звонке на который записанные аудио-файлы будут отсылаться в указанный вами почтовый ящик.

По осени считают

Судя по этому сообщению (продление сроков конкурса, новая версия SDK, недоступная широкой публике) - телефонов Android следует ожидать не раньше осени. А то может это и вообще станет подарком к Рождеству.

Monday, May 19, 2008

Масштабирование БД

Интересный обзор систем масштабирования для баз данных. Рассматриваются два основных подхода - кластеризация и внешний кэш. Автор (как технический директор Gigaspaces), конечно, агитирует за кэш. То, что в обзоре еще названо IMDG - In-Memory Data Grids.

Friday, May 16, 2008

Опрос местных жителей

Интересная идея платформы позиционирования мобильных абонентов. Без GPS, мобильный терминал будет оценивать свое положение, собирая информацию с базовых станций, WiFi спотов, а также по Bluetooth от соседей по сети. Авторы заодно поместили довольно реалистичный взгляд на практическое использование GPS в мобильных телефонах. Собственно, именно имеющиеся проблемы GPS (холодный старт, потеря сигнала) и обосновывают преимущественное использование cell id. А так - все напомнило последний способ ориентирования в авиации: "опрос местных жителей" :-).

HTTP Channels

HTTP Channels - интересная надстройка над HTTP, порожденная работами с Comet. Семантика соответствует названию - каналы связи (подписки) клиента и сервера. Фактически - имитация дуплексного обмена по HTTP. Реально выполняется как непрерывная последовательность HTTP POST запросов со стороны клиента, где канал для связи (подписной индекс) помечается как специальный заголовок:

POST /channels HTTP/1.1
Accept: application/http
X-Create-Client-Id: 867208037610061686690752

Вот этот самый X-Create-Client-Id и определяет "канал". Этот как идентификатор сессии, но только создается он не на сервере, а клиентом (тут еще нужно и коллизий избежать).

Thursday, May 15, 2008

Абавазрение 15.05.2008

Некоторые интересные ссылки:

1. Дональд Кнут наших дней. Интересная подборка алгоритмов для интернет приложений.

2. Виртуализация для мобильных приложений. Кстати, платформа Android и активизировавшийся LiMo вполе могут сделать эту тему актуальной. Может возникнуть нужда выполнять на одном телефоне несколько приложений в разных средах.

3. Из серии "N+1 лучшее решение". Интересные коллекции: 47 форм для веб страниц и 30 свежих (:-) ajax-скриптов

4. J2ME и LBS. Практические примеры доступа к GPS из J2ME приложений (via Bluetooth)

Wednesday, May 14, 2008

API для машины

Мы уже писали про автомобильный навигатор Dash. Это автомобильный GPS с интернет соединением. Идея понятна - показывать не только как ехать из точки А в точку Б, но и что находится по дороге. Теперь, как и предсказывалось, они открывают свой API для сторонних разработчиков. Можно создавать свои приложения для автомобилистов. Вместо Авторадио появится Автокарта.

Москва 1836

Google карта Москвы за 1836 год. Ну очень древний интернет :). Насколько я понимаю, должен быть KML файл для этого слоя?

Веб-камеры

Обновился список веб-камер в GeoLinks

Tuesday, May 13, 2008

Ипотечный кризис

Ипотечный кризис 2.0 - Google mashup, показывающий дома с просроченной ипотекой в одном из районов Денвера. Отсюда

Monday, May 12, 2008

Twitter search

Поисковик для Twitter: Summize. Можно узнать, что думает "твиттеросфера" о конкретном событии/действии etc. Есть простой API (Atom и JSON) - то есть результаты можно добавить к себе на сайт.

Google Adwords

Google AdWords теперь дает советы (бесплатно) по поисковым словам: KeyWordTool. Можно также получить рекомендации по поисковым словам для конкретного сайта (себ-страницы). Кто-то останется без работы ;-)

Sunday, May 11, 2008

Android в MIT

Презентации Android приложений от MIT. В основном - социальные сети и карты. В части использования GPS Android явно впереди iPhone (там нет такого API). Это и эксплуатируется.

Загрузка мобильного контента

Интересный материал по загрузке мобильного контента. Включая byte range загрузку для iPhone (Safari) и OMA download

Friday, May 09, 2008

ZoomMDK

Мобильная платформа от TI. MDK здесь - Mobile Development Kit. На этом телефоне могут исполняться различные операционные системы. OpenMoko, например, пробовали здесь. А теперь Wind River портировала сюда Android. Так что реально это один из первых телефонов с Android. Реально существующий. Отсюда.

GeoLocation API

Google предлагает W3C стандартизовать запросы позиционирования для веб-приложений. Это позволит веб-приложениям получать географические координаты пользователей. Google исходит из того, что у них есть в Gears. Вот модельный пример (JavaScript):

var geo = google.gears.factory.create('beta.geolocation');

// Get the position.
geo.getCurrentPosition(function(position) {
updateMap(position.latitude, position.longitude);
});

// Watch the position over time.
var watchId = geo.watchPosition(function(position) {
updateMap(position.latitude, position.longitude, position.accuracy);
});

geo.clearWatch(watchId);

// Only get the position if the last known position is more than a minute old.
var now = new Date().getTime();
var threshold = now - 60000;

if (geo.lastPosition &&
geo.lastPosition.timestamp.getTime()> threshold) {
updateMap2(geo.lastPosition);
} else {
loc.getCurrentPosition(function(position) {
updateMap2(position);
});
}

Thursday, May 08, 2008

Пошли по рукам

CodeGear - это подразделение Borland, куда были выведены все средства разработки, продано. Новый владелец - Embarcadero. Языки програмирования от Borland - это же была целая история. Которая теперь окончательно закончилась ...

Если враг не сдается

Когда безобразия нельзя победить, их остается только возглавить. Крупные телекомы планируют совместно запустить в 2009 году убийцу Skype. В принципе - это возможно, а Skype они вытеснят просто тем, что приземление звонков в новой сети будет дешевле. Но это если все они договорятся. А если еще и открытые протоколы для реализации выбрать (e.g. SIP), то будет такой всемирный провайдер с открытым доступом к сервисам (что назвается, кто о чем ...)

Wednesday, May 07, 2008

PHP 6

DeveloperWorks публикует обзорную статью об изменениях, грядущих в PHP 6
Я бы отметил, в первую очередь, изменение принципа формирования запросов к БД.  magic_quotes отменяется. Рекомендованный теперь способ - параметризация запросов (так, кстати, как это делается, например, в JDBC):

<?php
 // Using the proper parameterized query method for MySQL, as an example
 $statement = $dbh->prepare("INSERT INTO USERS (USERNAME) VALUES ?");
 $statement->execute(array($_GET['username']));
?>

И это, конечно, правильно. Во-первых, с SQL injection так можно бороться, во-вторых для подготовленных SQL операторов у системы остается больше возможностей для оптимизации (как курсор, например, это реализовать)

Кэширование изображений

Простой трюк, который может, вместе с тем, на ровном месте разгрузить веб-сервер и повысить тем самым производительность веб-приложения. Идея заключается в том, чтобы включить на клиентской стороне кэширование изображений, запрашиваемых с данного сайта. Вот, например, как это делается для J2EE серверов (источник - Coldbeans):

1. Добавляем к своему веб-приложению следующий фильтр: Expires filter. Этот фильтр позволяет добавлять на лету к обрабатываемым запросам HTTP заголовки Expires и Cache-control. Эти заголовки как раз и определяют кэширование результатов запроса на стороне клиента. Например, следующее описание в web.xml файле:

<filter>
<filter-name>ExpiresFilter</filter-name>
<filter-class>com.cj.expire.ExpiresFilter</filter-class>
<init-param>
 <param-name>expires</param-name>
 <param-value>86400</param-value>
</init-param>
</filter>

определяет кэширование на 1 сутки (время - в секундах)

2. Остальное прозрачно. Задаем мэппинг этого фильтра для изображений:

<filter-mapping>
 <filter-name>ExpiresFilter</filter-name>
 <url-pattern>*.gif</url-pattern>
</filter-mapping>

<filter-mapping>
 <filter-name>ExpiresFilter</filter-name>
 <url-pattern>*.jpg</url-pattern>
</filter-mapping>

...

теперь запрашиваемые изображения типа http://наш_сервер/что_то.gif будут кэшироваться на клиентской стороне

Для PHP можно, например, прописать установку данных заголовков прямо для Apache. Это что-то вроде следующего:

<FilesMatch "\.(jpg|jpeg|png|gif|ico)$">
 Header add "Expires" "Mon, 01 Jan 2018 00:00:00 GMT"
 Header add "Cache-Control" "max-age=31536000"
</FilesMatch>

SMS torrent

Fluid Nexus - интересная идея, уже работающая на Series 60 Symbian, а теперь представленная для Android: peer to peer messaging. Это сообщения между абонентами мобильной сети, но обмен ими идет без участия центрального сервера (например, SMSC для SMS). Сообщения с использованием Bluetooth передаются между участниками сети и так добираются до адресата.

Tuesday, May 06, 2008

iPod-изация

Феерическая коллекция в духе "все, что можно сделать из старой швейной машинки Зингера" - 75 применений для iPod - телевизор, backup-drive, секс-игрушка и т.д.

Monday, May 05, 2008

Google Maps Mania - 7

Появились новые записи и пришло время выпустить очередное обновление для списка проектов (систем), выполненных на базе Google Maps. То, с чего все началось, можно посмотреть здесь. Итак:

Информационные системы:

Авто-услуги
Агентство недвижимости Спб
Афиша
Все аптеки
Все банкоматы.ru
Где этот дом
Донецк

Карта цен на квартиры в Москве
Карта рыбака
Картакадабра
Квартиры в Москве
Кинотеатры в Москве

Маршруты в Москве
МАКС 2007
Местная погода
Мурманск
Недвижимость на карте
Новостройки в Сибири
Окрестности Екатеринбурга
Отели Египта

Пермь
Пермь на карте

пос. Правдинский
Пушкино

Погода на карте
Путешествия с Google Maps
Роддома Москвы и Санкт-Петербурга
4 туриста
Туристические карты
Туристические блоги

Сеть распространения печатной продукции
Сноуборд
Храмы России
Cosmopolitan шоппинг
Фото-биеннале
Футбольные поля
Live Events
National Geographic Traveler

User generated content (geo tagging):

Geo links
Geo SMS

GPS треки
View and organize geographical data
WikiMapia

Инструменты:

Big map
Geo traceroute
Google Msk TV
Metro map
Maps2lj - публикация карт в ЖЖ
Технические аспекты

Социальные сети:

Вокруг меня
За баранкой
Мир Тесен
Отдыхали.ru
Соседи-онлайн

Гаджеты и карты:

Атлас Москвы
Ветеринарные клиники в Москве
Видеокамеры ГАИ
Веб-камеры в России
Веб-камеры в Москве
Маршруты Москвы (гаджет)
Москва, район Аэропорт
Мото-сайт: помощь в дороге
Новые рестораны
Посадочные модули на Луне
Посадочные модули на Марсе
Публичные туалеты в Москве
Совы и Девы в Спб
Точечная застройка в Москве
Штрафные автостоянки в Москве
Черный список бензоколонок

Кого-то пропустили? Что-то новое? Пишите, список будем обновлять.

UPD. Обновленная версия списка доступна здесь: Google Maps Mania.ru

Sunday, May 04, 2008

По расписанию

Blogger теперь умеет публиковать заметки в заданное время. Этот текст написан в 16:40, а запланирован к публикации на 17:00. Посмотрим ...

Thursday, May 01, 2008

Абавазрение 01.05.2008

Интересные ссылки:

1. Работа над ошибками. В мэшапе Itblogs исправлена ошибка при работе с IE 6.

2. Дискуссия вокруг новой спецификации Java Servlets. Основной момент - auto discovery. Теперь .jar файл с компонентой может содержать собственное описание, например - для listener. Соответственно, появится возможность автоматического запуска компонент, не нужно будет редактировать web.xml Но это, естественно, таит в себе и проблемы. Что там, в загруженной компоненте?

3. Между тем обновились два набора Java веб-компонент, которые мы, например, использовали во многих проектах: набор Java сервлетов и фильтров - JSOS и Coldtags suite - крупнейшая коллекция пользовательских тегов для JSP (и/или Coldfusion - там это все работает)