Так же не смотрите, что на скриншоте всего 16 инвайтов. Поверьте! Инвайтов хватит на всех!!!

Разработка для Google Wave. Инструкции для настройки и создании своих виджетов, роботов и серверов.
Пользователь shifttstas сделал отличный обзор как Google Wave выглядит на мобильных устройствах и в частности на iPhone.
Как вы знаете Google Wave поддерживает только новые браузеры, у этого есть логичное объяснение, так как wave основан на очень мощной платформе из Java script то не каждый браузер может её запустить, но сегодня Google сделала поддержку Wave на iPhone
А так же в месте с версией для iPhone они добавили наконец поддержку показа кто онлайн.
При нахождении кого либо онлайн отображается зеленая точка
И так что бы попасть набирает в iPhone известный нам всем адрес wave.google.com, нас естественно перекидывает на https версию, после того как увидим окно
Нажимаем Go Ahead
И попадаем в
Одна из самых интересных вещей, что гаджеты работают!
А так же можно посмотреть на свой контакт список
Функция прокрутки времени Playback тоже работает
А вот и меню управления волной
Ну что же можно написать? Спасибо, Стас, что ты сделал такой обзор и будем как всегда ждать, когда всех пустят в Google Wave. Самое главное, что бы это ожидание не превратилось в привычку.
По лету мне достался инвайт в Google Wave Sandbox. Но в этой самой песочнице было очень много народу, все волны были публичными, и мой бедный нетбук только с большим скрипом переваривал всю эту активность, так что, немного поигравшись, на сендбокс я забил :)
И вот недавно мой аккаунт в sandbox превратился в аккаунт в лайвпревью, и я, разослав инвайты тем, до кого добрался, и ожидая, пока хоть кто-то из знакомых их получит, сел разбираться с роботским апи.
Результатом разбирательств стал такой вот базовый робот: bakarobo@appsot.com, который умеет пока всего-ничего:
по команде !br:bor! достать случайную цитату с баша
по команде !br:rb! достать фото дня с rosbest'а
по команде !br:BakaRobo! откликнуться :)
и ругаться в ответ на все незнакомые команды.
И в процессе создания я понял забавную вещь: для Wave-роботов разработана большая, клевая API … Практически не документированная на текущий момент :) По крайней мере, референс по питоновской апи — это просто генеренный перечень классов и функций, из которого не понятно практически ничего.
И вот, потратив некоторое время на чтение разных доков и семплов, я, как мне кажется, выделил некоторый базовый набор информации, необходимой для того, чтобы сделать уже какого-то полезного робота. О всех этих нужных штуках я и хочу рассказать, может быть, не слишком хорошо структурировано :)
Начнем с того, что роботов размещать следует на Google App Engine. Как создать там приложение и скачать инструментарий для коммитов кода я рассказывать не буду — там все очень понятно объяснено.
Итак, мы скачали инструменты, и в некоей папке на диске у нас возникла примерно такая картинка:
.
..
google_appengine
our_robot
Питоновый API xml-ку кастати сам генерирует, на базе аргументов к robot.Robot, а вот для Java API надо писать ручками.our_robot.py - собственно, код робота
app.yaml - нечто вроде манифеста
_wave/capabilities.xml - файлик, объявляющий эвенты, которые хочет слушать робот.
application: our_robot
version: 1
runtime: python
api_version: 1
handlers:
- url: /_wave/.*
script: our_robot.py
- url: /assets
static_dir: assets
- url: /icon.png
static_files: icon.png
upload: icon.png
<?xml version="1.0" encoding="utf-8"?>
<w:robot xmlns:w="http://wave.google.com/extensions/robots/1.0">
<w:capabilities>
<w:capability name="WAVELET_SELF_ADDED" content="true" />
<w:capability name="BLIP_SUBMITTED" content="true" />
</w:capabilities>
<w:version>1</w:version>
</w:robot>
Собственно, в этом файле и менять-то особо нечего: только номер версии да эвенты, которые мы хотим слушать.from waveapi import events
from waveapi import model
from waveapi import robot
def OnRobotAdded(properties, context):
pass
def OnBlipSubmitted(properties, context):
pass
if __name__ == '__main__':
myRobot = robot.Robot('our_robot',
image_url='http://our_robot.appspot.com/icon.png', #иконка контакта для робота
version='2.3', #версия
profile_url='http://our_robot.appspot.com/') #адрес профиля контакта
# Назначаем события:
myRobot.RegisterHandler(events.WAVELET_SELF_ADDED, OnRobotAdded)
myRobot.RegisterHandler(events.BLIP_SUBMITTED, OnBlipSubmitted)
# Запуск
myRobot.Run()
И как бы вроде бы все замечательно и понятно. Но когда начинаешь писать собственно функции событий, понимаешь, что совершенно неясно, как, к примеру, заменить кусок текста на другой кусок текста, не говоря уже о том, чтобы что-нибудь покрасить или подчеркнуть.Оригинал: Хабрахабр
Автор: Алексей Ничипоренко
Неофициальное расширение Firefox позволяющее следить за активностью в Google Wave. Может быть полезно для тех кто уже пользуется Wave и хочет получать уведомления о новых сообщениях.
Оно создано на основе Google Voice Add-on for Firefox и хоть функционала пока мало, но уже хорошо, что люди всё больше и больше разрабатывают для Google Wave.
Использование простое. Скачиваем само расширение Google Wave Add-on for Firefox (всего 9 кб) и у вас в правом нижнем углу появится иконка Wave. Там будет отображаться количество новых сообщений.
Автор обещает работоспособность только для пользователей wave.google.com
Взято с http://thatsmith.com/2009/10/google-wave-add-on-for-firefox
Итак, я написал небольшой проект на Java, который представляет собой клиент к Google Wave, который, в свою очередь, вы можете расширить необходимыми вам возможностями. Визуально выглядит он не очень презентабельно (впрочем, а-ля Windows 3.11, почему бы и нет), поскольку веб-дизайнер из меня не очень хороший, однако абсолютно за весь исходный код я отвечаю головой :). Так, например, требующиеся для отображения CSS-стили при этом выглядят максимально понятно, а XHTML-структура максимально упрощена (не в ущерб стандартам) для того, чтобы настоящий дизайнер мог развернуться и сделать действительно красиво :).
Сайт, исходные коды, и war-пакет с текущим состоянием проекта находятся по адресу http://code.google.com/p/sametimed
Сейчас у меня нет под рукой общедоступного хостинга, чтобы я мог прямо вот так запустить проект и дать поиграться с ним не отходя от хабра, однако, я могу предложить вам видео (на vimeo), демонстирующее его основные возможности, что, думаю, тоже вполне ничего, а запустить проект вы сможете сами, благо подробные инструкции есть на сайте проекта, а развёрнутые пояснения и подробное описание работы (и руководство к расширению возможностей) — внутри…
Sametimed b0.1 Work Demonstration (HD) from Ulric Wilfred on Vimeo.
GetClientViewServlet
), который подключает вас «к волне», и возвращает всю структуру (модель) клиента в виде JSON. JQuery на клиентской стороне строит весь интерфейс вейвлета. Если вы нажмёте кнопку ещё раз, вы запросите ещё один вейвлет, при этом между собой они будут различаться по внутреннему ID (сгенерированному автоматически), указанному на синей полоске в скобках. По этому ID и сервер и клиент определяют, к какому клиенту относится команда и/или сообщение. \new
», открыть её командой «\open <id>
» и что-нибудь сказать, набрав просто текст (как в скайпе). При нажатии на кнопку «send» отправляется POST-запрос к другому сервлету (CommandsReceiverServlet
), который получает сгенерированную в виде XML команду и тут же её выполняет, передавая данные серверу wave-protocol. AUpdatingWavelet
и ADocumentsWavelet
— определяющие структуру соответствующего типа вейвлетов (обновляющийся вейвлет и его расширение, вейвлет содержащий документы). Класс SimpleWavelet
служит примером такой реализации. Класс WavesClient
занимается обработкой команд и именно он возвращает модель содержащегося в нём вейвлета в GetClientViewServlet
. CommandID
/MessageTypeID
, сами классы Command
и UpdateMessage
, сервлет-обработчик CommandsReceiverServlet
. ModelID
, описывающий возможные модели с абстрактным классом AModel
, конечно. Плюс, ModelFactory
, фабрика моделей. JSUpdatesListener
, который средствами DWR вызывает функцию обновления на клиенте. ADocumentsWavelet
или расширение класса WaveletWithChat
. Поскольку, в наиболее вероятном случае, вы будете оперировать понятием «документ» (А чат или что-либо другое, как раз являются документами), то именно такой способ должен подойти вам лучше всего. Также вам понадобится задуматься о модели данного документа (создав соответсвующий тип, реализующий AModel
, добавить id модели в тип ModelID
и генерацию модели в ModelFactory
). GetClientViewServlet
возвращаемый вейвлет на ваш собственный и вуаля!.. Ах, да, ещё генерация UI на клиенте, но об этом ниже. CommandID
. После этого нужно расширить класс WavesClient
для поддержки вашего вейвлета и для того, чтобы он обрабатывал и передавал новые команды вейвлету независимо от предка. И, в этом случае, заменить в GetClientViewServlet
реализацию WavesClient
на вашу собственную. И снова вуаля! (снова, не учитывая UI) CreateClient
и renderUpdate
объекта ClientRenderer
в ui.js
и собственно написать этот метод. Всё остальное будет (должно) работать самостоятельно.
Взято: http://habrahabr.ru/blogs/google/72235/ by zokotuhaFly
Сегодня целый день в твиттере стоит шум! И шум этот связан с раздачей инвайтов в Google Wave.
Я тоже обратил внимание и что могу вам сказать – ИМХО это фейк. Во-первых смутил домен http://www.google.com-wave.info/ Google никогда бы не зарегистрировали такой домен. Во-вторых сам сайт – просто одна страничка, на которой нам предлогают ввести свой твиттер аккаунт и электронную почту.
Думаю, что это не просто фейк, а именно сайт, созданный для сбора адресов и тветтеров, что бы потом их спамить.
Будьте внимательны к сайтам такого рода!
Для подтверждения информации всегда обращайтесь к оффициальным источникам.
А инвайт на Google Wave скоро получат многие из вас! Не будем торопить события.
Решил показать, как же выглядят волны на устройстве Android.
Во-первых мы видим, что отображается корректно и понятно.
После того, как мы перешли на сайт, то видим список волн.
Контакты в принципе тоже не отличются от PC\Mac версии
Внутри самой волны.
Навигация по волне.
Так как это тестировал не я, то немного не понятно – а где же у нас список папок, сохранёные поиски?
Так же минус – нет индикторов колличества новых сообщений. Когда мы внутри волны, мы ведь не можем скакать то к списку волн, то внутрь волны. Ноя думаю всё это подправят. Плюс к тому же ходят слухи, что начали разработку специализированного клиента под Android устройства.
Осталось совсем немного и он выйдет в свет… Эх-эх-эх….
Вадим Барсуков собрал в группе Google Wave Russia ссылки на самые лучшие русские волны.
Рядом с названием волны указан ее адрес в Google Wave Sandbox.
Чтобы найти волну, когда находитесь в "песочнице", наберите в поисковой строке id:"адресволны".
Спасибо большое автору! Развиваем Русское сообщество в Google Wave дальше!!!
И вот Thomas Beverley выложил исходные тексты клиента FedOne с графическим пользовательским интерфейсом. На скриншоте вы можете посмотреть, как это все выглядит под Windows XP. Запущены сервер и два клиента.
Есть кнопки для практически всех команд, которые сейчас имеются в API (заготовлена даже пустая кнопка «Test butt», видимо, на будущее). В центре вы видите модальное окно для добавления нового участника в волну. Аналогичное окно появляется при удалении участника.
Процедура установки этой версии клиента проста. Нужно скачать исходные тексты и заменить ими папку\src\org\waveprotocol\wave\examples\fedone\waveclient\console. После этого запускаете «ant clean» (спасибо D.Unkovsky за напоминание :) и затем «ant» для перекомпиляции.
Как пишет автор, можно легко изменить клиент с помощью имеющегося класса WaveConnector.java. Этот класс полностью документирован и позволяет упростить взаимодействие с Google-волной. Базируясь на нем, вы можете построить свой собственный текстовый клиент или создать ваш вариант графического интерфейса. Как пример смотрите класс ConsoleClient.java.
P.S. И напоследок — небольшой трюк (Windows only), теперь уже от меня.
Раз уж мы говорим о графическом интерфейсе, давайте сделаем более удобным управление сервером и клиентами. Сейчас приходится запускать их с помощью bat-файлов, причем окна с запущенными процессами невозможно свернуть в трей.
Но мы можем воспользоваться удобной утилиткой LNK file improver by Dmitry Koteroff (dk@dklab.ru) из комплекта Denwer. Она позволяет запускать любую программу и сворачивать ее окно в трей. Если вы заглянете в текст этой маленькой (6656 байт) софтинки каким-нибудь редактором, то увидите, что прямо в исходном тексте можно отредактировать ее параметры: стартовый каталог, строку запуска с аргументами, адрес иконки, нужно ли запускать свернутой в трей, позволять ли запуск нескольких экземпляров и делать ли доступным пункт «Terminate» в контекстном меню (по правой кнопке) этой крохотули.
Единственно, что надо соблюдать при изменении текста — делать замену знаков, а не вставку.
Я сделал себе три разновидности этого исполняемого файла (сервер и два клиента), добавил иконку от Google Wave и теперь у меня на экране не висит несколько DOS-образных окон, а есть лишь пара-тройка волновых «змеек» в трее (их видно в правом нижнем углу скриншота).
Источник: Вадим Барсуков
Итак выкладываю ролик Google Wave Developer Preview at Google I/O 2009, который переведён на русский (субтитры). Многие мне пишут и спрашиваю, а в чём основные фишки Google Wave, а зачем он нужен и так далее, поэтому я решил опубликовать вам ролик, который для нас перевели участники группы переводчиков HabraTranslation.
Наконец вы узнаете то, что так давно хотели узнать, но стеснялись спросить :)
Del.icio.us : google I/O, google wave
openssl genrsa 1024 | openssl pkcs8 -topk8 -nocrypt -out %1.key
openssl req -new -x509 -nodes -sha1 -days 365 -key %1.key -out %1.cert
java -jar dist/fedone-0.2.jar --client_frontend_hostname=127.0.0.1 --client_frontend_port=9876 --xmpp_component_name=wave --xmpp_server_hostname=localhost --xmpp_server_ip=localhost --xmpp_server_port=5275 --xmpp_server_secret "foobar" --xmpp_server_ping="" --certificate_private_key=wave.key --certificate_files=wave.cert --certificate_domain=localhost --waveserver_disable_verification=true
java -jar dist/fedone-client-0.2.jar %1@localhost 127.0.0.1 9876
/connect user@domain server port Cоединиться с server:port как участник user@domain
/open entry open Открыть волну, которая есть у вас во Входящих. Надо указать номер волны (от 0). Например: /open 1
/new Создать и открыть новую волну
/add participantId Добавить участника к волне
/remove participantId Удалить участника из волны (хе-хе, этого пока нет в клиенте Gogoole Wave Sandbox! Наш сервер круче. :)
/quit Завершить работу клиента
Установка исходного кода Google Wave Federation Prototype Server
Исходный код Wave Federation Prototype Server поставляется в виде Java приложения, что соответствует XEP-0114, и является Jabber Component Protocol (компонентом Jabber протокола). В примере ниже мы покажем, как установить Wave Federation Prototype Server как плагин к Openfire XMPP сервер, но он должен так же работать с любым XEP-0114 совместимом сервере.
Для запуска прототипа сервера нужно сначала установить Openfire сервер. Данная инструкция Openfire сервера описывает шаги для Debian (Ubuntu) систем и если у вас возникнут проблемы или вопросы относительно установки, То обращайтесь к Openfire сообществу на их сайте.
Openfire и Wave Federation Prototype Server разоработаны на Java поэтому вы должны убедиться, что у вас установлена Java на вашей машине. Несмотря на то, что WFPS должен работать на любой системе с Java 6 эта инструкция описывает шаги только для Debian (Ubuntu) систем.
Mac OSX
После установки Java вам надо создать переменные окружения:
$ export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
$ export PATH=$JAVA_HOME/bin:$PATH
Теперь пройдите на сайт Openfire и скачайте Mac OSX версию Openfire.
Debian/Ubuntu
$ apt-get install sun-java6-jre sun-java6-fonts
Теперь скачайте и установите Openfire сервер:
$ wget http://www.igniterealtime.org/downloadServlet?filename=openfire/openfire_3.6.4_all.deb
$ sudo dpkg -i openfire_3.6.4_all.deb
$ sudo /etc/init.d/openfire restart
После установки Openfire сервера пройдите по ссылке http://localhost:9090 в вашем браузере. Замените домен на ваш, если вы устанавливаете не на локальный компьютер. Весь процесс установки будет происходить через мастер и будем ставить значения по умолчанию для простоты.
Перезапустите сервер после окончания настройки. На Debian/Ubuntu это делается так:
$ sudo /etc/init.d/openfire/restart
После того, как перезапустите сервер войдите в Openfire как 'admin' и пароль, который вы указали.
Затем идём в Server -> Server Settings -> External Components.
Включите внешние дополнения на порту 5275 и выберите секретное слово для расшаривания этого компонента. Нажмите Сохранить. Теперь добавьте 'wave' как доверительный компонент. Для этого пишем субдомен 'wave' и напишите опять секретное слово, которое вы написали до этого. Номер порта и секретное слово служат для возможности подключения Wave дополнения.
Теперь идём в Server -> Server Settings -> Security Settings. Для "Server Connection Security" выбираем "Custom" и включаем "Server Dialback". Так же проверьте, что флажок "Accept self-signed certificates" установлен.
Следующие изменения не являются обязательными, но если вам нужна хорошая защита, то это будет хорошей практикой.
Теперь скачиваем Federation Prototype Server и извлекаем всё содержимое. Скачать можно с SVN
Для запуска расширения вам будут нужны некоторые из параметров, который вы использовали для настройки Openfire сервера. Это номер порта, секретное слово, имя сервера и, наконец, имя компонента, которое у нас - 'wave'.
Wave сервер требует ряда сертификатов, используемых для подписания. Дополнительную информацию см. на странице Wiki.(прим. переводчика: Чуть позже сделаю перевод, как создавать сертификаты)
Отредактируйте run-server.sh скрипт с правильными настройками. Расшифровка аргументов:
Параметр | Описание |
client_frontend_hostname | ip к которому будет подключаться клиент |
client_frontend_port | порт к которому будет подключаться клиент |
xmpp_server_hostname | XMPP сервер хост (например gogola.org) |
xmpp_component_name | XMPP компонент Wave сервера. В нашем случае "wave" |
xmpp_server_ip | Адрес XMPP сервера, где у нас wave компонент |
xmpp_server_port | Порт XMPP сервера, где опять таки, наш компонент |
xmpp_server_secret | Секретно лово компонента |
xmpp_server_ping | Пинговать сервер после подключения? Если пусто, то пинговать не будет |
certificate_domain | Домен сертификата который мы использовали при его создании |
certificate_files | файл сертификата. (yfghbvth username.cert) |
certificate_private_key | Приватный ключ сертификата (PKCS#8-PEM) (например username.key) |
waveserver_disable_verification | Проверять сертификат? true - да, flase - нет |
После того, как вы отредактируете скрипт сервера вам надо будет скомпилировать сервер и запустить его:
$ ant dist
$ run-server.sh
Отредактируйте run-client.sh скрипт (смотри параметры внутри скрипта), затем запустите его:
$ run-client.sh <username>