狠狠撸

狠狠撸Share a Scribd company logo
XMPPでMicroblogging
Real Time Web
自己紹介
? 名前: ストヤン?ジェコフ
? 3人の男の子のパパ
? 職業: Software Engineer
? Contact: xmpp: //zh@jabber.jp
Microblogging via XMPP (japanese)
今日の予定
? XMPP (Jabber)
? Microblogging
? XMPPでMicroblogging
? 私のプログラム - xmpp4r, ramaze, sequel
? 质问タイム
なぜ?
? Web 3.0 ? - Real Time Web?
? RSSでは不十分?(SUP)
? XMPP (Jabber)
? Webhooks
XMPP (Jabber)
London-Calcutta間の通信時間
(Peter Saint-Andre)
? 1800: 2 年 (帆船)
? 1914: 1 月 (蒸気船)
? 1950: 1 週間 (airmail)
? 1980: 2 日 (overnight mail)
? 1994: 10 分 (email)
? 1999: 1 秒 (IM)
XMPPの歴史
? 1998: Jeremie Miller - ICQ - AIM (perl)
? 1999: First release
? 2001: Jabber Software Fondation
? 2004: XMPP RFCs (IETF)
XMPPって何?
? JID: node@server/Resource
? オープンプロトコル
? 分散されたサーバー
? RFC 3290 (core), 3291 (messaging)
? XMPP extension protocols (XEP)
XMPPって何? (2)
? 二方向, ストリーミング XML
? One ?rst level tag: <stream>
? 3 second level tags:
? <presence> - presence, subscribe
? <message> - asynchronous
? <iq> - synchronous
XMPPの特徴
? presence付き
? One-to-one IM (u2u, a2u, a2a)
? Groupchat
? Geolocation
? セキュリティー - SSL,TLS
非おたく専用
? 50 000+ サーバー, 5千万人+ ユーザー
? ウォールストリート
? アメリカ国防省
? Cisco, Google, Apple
? NTT ?
だれでもXMPP
? Free account - jabber.jp etc.
? GTalk for domains
? 自分のサーバーにインストール:
? ejabberd (erlang) - production
? open?re (java) - 簡単インストール
Libraries
? ほとんどのOSと言語
? loudmouth (C)
? xiff (?ash)
? smack (java)
? xmpp4r (ruby)
Microblogging
Microblogging
? Web 2.0
? Microbloggingって何?
? ステータス変更
? 短い語数(140文字まで)
? メディアファイルも
Big Players
? Twitter
? Jaiku
? identi.ca (laconi.ca) - OSS
? Tumblr - http://tt.zhekov.net/
? FriendFeed, Lifestream.fm
XMPPでMicroblogging
http://www.microblog.org/
だいたい Real Time
? XMPP bots (Jaiku, Identi.ca, FriendFeed)
? GNIP - http://www.gnipcentral.com/
? RSS-to-XMPP
? http://notify.me/
? http://noti?xio.us/ (WP plugin)
XMPPでMicroblogging
? Web 3.0 (Real Time Web)
? PubSub - XEP-0060
? BOSH - XEP-0124
? XEP-XXXX
? ....
ややこしすぎるわ :(
それか、俺がばか?
自分で作ろっ!
Design
? XMPP bot
? 簡単なAPI
? 簡単な web frontend
? 見本: juick.com , kwippy.com
内容
? models.rb - connection to the DB
? bot.rb - XMPP
? api.rb - service, scaling
? web.rb - browser view
Models (DB)
? “Things”
? User
? Micro
? “Relations”
? Subscribe - User-to-User
? Subscribe - User-to-Micro
? Like - User-to-Micro
Relations (Sequel)
class User < Sequel::Model(:users)
one_to_many :micros do |ds|
ds.?lter(:parent_id => nil)
end
one_to_many :subs,
:extend => UserFindOrCreate
many_to_many :publishers,
:class => :User, :join_table => :subs
end
Ruby XMPP Libraries
? xmpp4r - Roster, vCard etc.
? xmpp4r-simple - 簡単
? jabber4r - Thread based :(
XMPP Bot
? http://tr.im/emxmpp (nutrun.com)
? EventMachine - libevent, Deferrable
? Plugins - http://tr.im/modular
平行性
EM.run do
EM::PeriodicTimer.new(1) do
...
EM.spawn do
worker = Worker.new
worker.callback {jabber.deliver(message.from,
"Done")}
worker.process
end.notify
...
end
end
class Worker
include EM::Deferrable
def process
...
set_deferred_status :succeeded
end
end
プラグインその1
PluginFactory.load "plugins"
...
def PluginFactory.load( dirname )
Dir.open( dirname ).each do |fn|
next unless ( fn =~ /[.]rb$/ )
require "#{dirname}/#{fn}"
end
end
プラグインその2
class Plugin
include EM::Deferrable
def process( args = {} )
sleep(0.05)
set_deferred_status :succeeded
end
end
プラグインその3
class NickPlugin < Plugin
def process(args = {})
begin
...
set_deferred_status :succeeded
rescue
set_deferred_status :failed
end
end
end
class NickFactory < PluginFactory
INFO=<<INFO
verb: NICK
author: Stoyan Zhekov
description: Get or set the nickname for some user
INFO
def create()
return NickPlugin.new()
end
end
簡単な API (json)
? /users - ユーザーリスト
? /user/<nick>/<secret> -?ユーザー情報
? /status/<nick>/<secret> - presence
? /micros/<page>/<format> - microsのリスト
? /micro/<id>/<secret> - micro + comments
Web (Ramaze)
class MainController < Ramaze::Controller
def u nick
begin
@user = User.?nd_by_user(nick)
subset = @user.micros.reverse
@micros, @pager = paginate(subset, :limit => PAGE)
rescue Exception => e
?ash[:error] = "Error: #{e.to_s}"
redirect :/, :status => 302
end
end
end
<Demo>
やりたいこと
? Commands parser - Ragel?
? OAuth or http://xmppid.net/
? TokyoCabinet
? XMPP Component - http://github.com/julien51/babylon
? Real PubSub?
まとめ
? XMPP - いける!オープンプロトコル
? xmpp4r-simple - いける! 簡単だし。
? eventmachine - 使えるnetwork library
? sequel - 使えるORM
? ramaze - 使えるweb アプリ framework
质问タイム
</stream:stream>

More Related Content

Viewers also liked (8)

PDF
Webhooks - glue for the web (japanese)
Stoyan Zhekov
?
PDF
Rails Deployment with NginX
Stoyan Zhekov
?
PDF
Alliance Day 2007: Philadelphia Cultural List Cooperative
catet
?
PDF
Microblogging via XMPP
Stoyan Zhekov
?
KEY
Deployment on Heroku
Stoyan Zhekov
?
PDF
Ruby cooking
Stoyan Zhekov
?
PDF
Ruby off Rails (english)
Stoyan Zhekov
?
KEY
Push the web with HTML5
Stoyan Zhekov
?
Webhooks - glue for the web (japanese)
Stoyan Zhekov
?
Rails Deployment with NginX
Stoyan Zhekov
?
Alliance Day 2007: Philadelphia Cultural List Cooperative
catet
?
Microblogging via XMPP
Stoyan Zhekov
?
Deployment on Heroku
Stoyan Zhekov
?
Ruby cooking
Stoyan Zhekov
?
Ruby off Rails (english)
Stoyan Zhekov
?
Push the web with HTML5
Stoyan Zhekov
?

Similar to Microblogging via XMPP (japanese) (20)

PPTX
齿惭笔笔クライアント?プログラミング
隆行 神戸
?
PDF
UnicastWS vol.1
Unicast Inc.
?
PPTX
KiZUNA: P2Pネットワークを用いた分散型マイクロブログサービスの実現
Kota Abe
?
PPTX
齿惭笔笔の绍介
隆行 神戸
?
PDF
Perl Ocean
Kazuki KOMORI
?
PPTX
10th jan 2013_miyazaki
Kensaku Komatsu
?
PPT
齿惭笔笔仕様简単解説
Keiichi Daiba
?
PPT
2008 08 09_osc2008nagoya_fight_cms_x_cube
Tom Hayakawa
?
PDF
エコな奥别产サーバー
emasaka
?
PPT
『RESTful Web サービス』読書会 第4回 9章 説明資料
Siena. N
?
PPT
ウェブアーキテクチャの歴史と未来
Kazuho Oku
?
PDF
【17-础-5】ウェブアーキテクチャの歴史と未来
Developers Summit
?
PDF
Public 20100828 j_ruby_kaigi_10things_jror_with_javaee
Yoshiharu Hashimoto
?
PPTX
8th jan 2013_wotconf
Kensaku Komatsu
?
KEY
Cmsインサイド 120801 公開版
株式会社搁驰鲍厂
?
PDF
Sails workshop4
Tomokatsu Iguchi
?
PDF
尘颈虫颈アプリ虫窜别苍诲贵谤补尘别飞辞谤办
清水树
?
PDF
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3
日本闯补惫补ユーザーグループ
?
PDF
Restful Web Service Ch2
kunit
?
齿惭笔笔クライアント?プログラミング
隆行 神戸
?
UnicastWS vol.1
Unicast Inc.
?
KiZUNA: P2Pネットワークを用いた分散型マイクロブログサービスの実現
Kota Abe
?
齿惭笔笔の绍介
隆行 神戸
?
Perl Ocean
Kazuki KOMORI
?
10th jan 2013_miyazaki
Kensaku Komatsu
?
齿惭笔笔仕様简単解説
Keiichi Daiba
?
2008 08 09_osc2008nagoya_fight_cms_x_cube
Tom Hayakawa
?
エコな奥别产サーバー
emasaka
?
『RESTful Web サービス』読書会 第4回 9章 説明資料
Siena. N
?
ウェブアーキテクチャの歴史と未来
Kazuho Oku
?
【17-础-5】ウェブアーキテクチャの歴史と未来
Developers Summit
?
Public 20100828 j_ruby_kaigi_10things_jror_with_javaee
Yoshiharu Hashimoto
?
8th jan 2013_wotconf
Kensaku Komatsu
?
Cmsインサイド 120801 公開版
株式会社搁驰鲍厂
?
Sails workshop4
Tomokatsu Iguchi
?
尘颈虫颈アプリ虫窜别苍诲贵谤补尘别飞辞谤办
清水树
?
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3
日本闯补惫补ユーザーグループ
?
Restful Web Service Ch2
kunit
?
Ad

More from Stoyan Zhekov (11)

PDF
Multirotors
Stoyan Zhekov
?
KEY
ZeroMQ
Stoyan Zhekov
?
PDF
Padrino - the Godfather of Sinatra
Stoyan Zhekov
?
KEY
Sequel
Stoyan Zhekov
?
KEY
Foreman - Process manager for applications with multiple components
Stoyan Zhekov
?
KEY
Social Network for spare parts
Stoyan Zhekov
?
KEY
Using XMPP Presence stanzas for real-time parking information
Stoyan Zhekov
?
KEY
Websockets with ruby
Stoyan Zhekov
?
KEY
EventMachine
Stoyan Zhekov
?
PDF
Webhooks - glue for the web
Stoyan Zhekov
?
PDF
Ruby off Rails (japanese)
Stoyan Zhekov
?
Multirotors
Stoyan Zhekov
?
Padrino - the Godfather of Sinatra
Stoyan Zhekov
?
Foreman - Process manager for applications with multiple components
Stoyan Zhekov
?
Social Network for spare parts
Stoyan Zhekov
?
Using XMPP Presence stanzas for real-time parking information
Stoyan Zhekov
?
Websockets with ruby
Stoyan Zhekov
?
EventMachine
Stoyan Zhekov
?
Webhooks - glue for the web
Stoyan Zhekov
?
Ruby off Rails (japanese)
Stoyan Zhekov
?
Ad

Recently uploaded (9)

PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2025_報告会資料_渡辺さ...
IGDA Japan SIG-Audio
?
PDF
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
?
PDF
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
?
PDF
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
?
PDF
マルチAIエージェントの産業界での実践に向けたオープンソース活動の展望 - Japan Regional User Group (RUG) Meet-Up
Kosaku Kimura
?
PDF
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
?
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2024_報告会資料_増野さ...
IGDA Japan SIG-Audio
?
PDF
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
?
PDF
API認可を支えるKeycloakの基本と設計の考え方 ~ OAuth/OIDCによるAPI保護のベストプラクティス ~
Hitachi, Ltd. OSS Solution Center.
?
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2025_報告会資料_渡辺さ...
IGDA Japan SIG-Audio
?
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
?
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
?
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
?
マルチAIエージェントの産業界での実践に向けたオープンソース活動の展望 - Japan Regional User Group (RUG) Meet-Up
Kosaku Kimura
?
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
?
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2024_報告会資料_増野さ...
IGDA Japan SIG-Audio
?
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
?
API認可を支えるKeycloakの基本と設計の考え方 ~ OAuth/OIDCによるAPI保護のベストプラクティス ~
Hitachi, Ltd. OSS Solution Center.
?

Microblogging via XMPP (japanese)