P2P Bug Tracking with SD
                   http://syncwith.us


curl fsck.com/sd|perl;
~/sd/bin/sd




    SD を使った P2P バグ...
Hi!


こんにちは
I’m Jesse (obra)


    Jesse です
I own a small
software company


小さな会社の社長をしています
(Best Practical)
I’ve been making
   issue trackers since
            1995

1995 年からバグトラッカーを作ってきました
Our software
  has some bugs


うちのソフトには バグがあります
All software
 has some bugs


どんなソフトでもバグはあります
(All software
  is made of bugs)


ソフトなんてバグでできているのです
I spend a lot of time
   on airplanes...


  私はよく飛行機に乗ります
...and at conferences
     with bad wifi

   ネットにつながりにくい
  イベントにもよく行きます
I need to keep track
of our bugs and our
        work

  でも、バグや仕事から目を
   離すわけにはいきません
I’m the boss


  社長ですから
I have no excuse for
 not doing my work


   言い訳は通用しません
I need to keep track
 of our bugs and our
   work even when I
don’t have net access
 ネットがなくてもバグや仕事は
  管理しないといけないのです
I’ve tried everything


 あらゆる方法を試してみました
Text files


テキストファイル
Text files in
version control

 バージョン管理した
  テキストファイル
IMAP Servers


  IMAP サーバ
RSS Feeds


 RSS フィード
Running RT on
    my laptop


ラップトップで RT を走らせてみたり
Keeping browsers
       open


ブラウザを開きっぱなしにしてみたり
Nothing was quite
      right

  どれもイマイチでした
So we built SD


そこで作ったのが SD です
SD is a Bug Tracker


  SD はバグトラッカーです
SD is a Distributed
   Bug Tracker


SD は分散型のバグトラッカーです
SD Features ( の特徴 )
Tracks bugs             P2P Sync
CLI                     Trac Sync
Web UI                  RT Sync
Scr...
Principles of
   distributed
   computing

分散コンピューティングの原理
Bill Joy, Tom Lyon,
 Peter Deutsch and
   James Gosling
    created these
ビル・ジョイらはこんなものを作りました
The network is
   reliable


ネットワークが信頼できて
Latency is zero


  遅延時間はゼロで
Bandwidth is infinite


      帯域幅は無限
The network is
    secure


 ネットワークは安全で
Transport cost is zero


       転送料はゼロ
The network is
homogeneous


 ネットワークは均質で
Topology
 doesn't change


ネットワークの構成は変化しない
There is one
administrator


  管理者はひとり
I didn’t make
      those up


私にはそんなもの用意できませんでした
Bill Joy, Tom Lyon,
Peter Deutsch and
James Gosling did

   彼らは用意しましたが
s
         ie of
     lac
 Principles
   l
 a
F distributed
  computing

分散コンピューティングの原理
Those are all LIES


そんなものは真っ赤な嘘です
The network is not
     reliable


ネットワークなんて信頼できません
SD isn’t network-
     dependent

だから SD はネットワークに依存しません
Latency hurts


遅延時間もひどいものです
SD runs at the edge


だから SD は境界上で動作します
Bandwidth is always
    a problem


 帯域幅はいつでも悩みの種です
SD knows which
changesets you’ve
  already seen
だから SD はどのチェンジセット
  を見たか覚えています
The network is
    insecure


ネットワークは安全ではありません
SD doesn’t depend
on a network security
        layer
 だから SD はネットワークのセキ
  ュリティ層には依存しません
Topology is
unpredictable
  and fluid
ネットワークの構成は予測
 できませんし流動的です
SD is topology-
   agnostic

だから SD は構成不可知
 論の立場をとります
There is no
administrator


管理者なんていません
(But there are many
  people who think
        they’re
   administrators)
そのつもりでいる人はたくさんいますが
SD lets you
  implement policy in
     the centralized
   systems it syncs to
だから SD は同期先の中央管理システム側で
ポリシーを実装できるようになっています
Transport
 costs money


転送料はタダではありません
SD doesn’t use much
  bandwidth & can use
      non-network
       substrates
 だから SD はあまり帯域幅を使いません。
ネットワーク以外の下位層にも対応しています
The network is
 heterogeneous


ネットワークは均質ではありません
SD is designed to
  sync to foreign
      systems
だから SD は外部のシステムと同期
  できるようになっています
SD runs locally


SD はローカルで実行できます
SD plays well
    with others


ほかのソフトともうまくつきあえます
It syncs
the way you do


同期の取り方は人間と同じ
Clone a project’s bug
database (over HTTP)

 (HTTP 経由で ) プロジェクトの
バグデータベースのクローンを作って
Work offline


オフラインで作業して
Pull changesets from
  anyone you work
         with

仕事仲間からチェンジセットを取ってきて
Publish your
database replica with
       rsync

データベースの複製を rsync で公開
Topology doesn’t matter...




 ネットワークの構成なんて関係ありません
Don’t worry


  ご心配なく
It won’t break


それでも壊れませんから
SD learns how to
  resolve each
    conflict...
SD は衝突の解決策をひとつ
  ひとつ学んでいきます
...based on how
  everyone else
    resolves it
 ベースとなるのは、ほか
の人がどう解決したかです
Using SD (CLI)


 SD の使い方 (CLI)
Getting Started


  使ってみましょう
SD Shell

 $ sd

  シェル
./
Getting help


$ sd help
    ヘルプ
Creating a new
   project


 $ sd init
新規プロジェクトの作成
Project settings


$ sd settings
  プロジェクトの設定
Config file


$ sd config
  設定ファイル
Create a bug


$ sd ticket create

    バグ情報を登録する
Listing bugs


$ sd ticket list
   バグ情報の一覧表示
Show a bug


$ sd ticket show
   バグ情報を表示する
Update a bug


$ sd ticket update

    バグ情報を更新する
Log


$ sd log
   ログ
Git Integration


  $ git sd
    Git に統合
Using SD (Web)


 SD の使い方 (Web)
Web? Isn’t SD an
 offline tool?

あれ、 SD ってオフラインツー
  ルじゃなかったの?
Local microserver


 ローカルのマイクロサーバ
$ sd browser
Home


ホーム
Create a ticket


 チケットを登録する
Search


 検索
Show a bug


バグ情報を表示する
Update a bug


バグ情報を更新する
Comments


  コメント
History


  履歴
Working with others


 ほかの人と一緒に作業する場合
Working with others
    (Using SD)

 ほかの人と一緒に作業する場合
     (SD を利用 )
Any topology


ネットワークの構成は任意
It doesn’t matter who
    you sync with


同期する相手は誰でもかまいません
You get all the
     updates
    eventually

そのうちすべての更新情報が届きます
Cloning


$ sd clone
   クローン
clone makes a replica
  of someone else’s
       database
 クローンするとほかの人のデー
  タベースの複製を作ります
Pulling


$ sd pull
   取得
pull imports unseen
   changes from
 another database
       replica
ほかのデータベースの複製から未見
  の変更をインポートします
Publishing


$ sd publish
     公開
publish writes out a
     copy of your
  database replica for
        sharing
データベースの複製のコピーをほかの人と共
    有できるように書き出します
(As SD changesets
    and static HTML)


SD のチェンジセットと静的な HTML の形で
Hackathon mode
   (using Bonjour)


ハッカソンモード (Bonjour を使って )
Publish your replica


   $ sd server
Pull updates


$ sd pull --local
      更新を取得
Working with others
(Using other systems)

 ほかの人と一緒に作業する場合
  ( ほかのシステムを使う )
But you already have
    a bug tracker?


もうバグトラッカーを使っていますって?
No Problem!


   大丈夫!
I use at least
    two others.


私も少なくともあと 2 つ使っています
I wrote at least
   two others.


少なくともあと 2 つ書きました
We designed SD talk
  to foreign bug
      trackers
Sd は外部のバグトラッカーともや
りとりできるように設計しました
RT
RT::Client::REST
(By DMITRI, DAMS & AMS)
Hiveminder
Net::Jifty
(by SARTAK)
Trac
Net::Trac
(by JESSE & TSIBLEY)
Google Code
Net::Google::Code
(by SUNNAVY and FAYLAND)
GitHub
Net::GitHub
 (by FAYLAND)
Lighthouse
  (VERY beta!)
Net::Lighthouse
   (by SUNNAVY)
Redmine
(Read-only for now)
Net::Redmine
  (by GUGOD)
Want to help with
Bugzilla, Jira, FogBugz
 or something else?

   Bugzilla とかも使いたい?
Work with
             foreign
           replicas in
              a Star
            Topology
スター構成にすれば外部の複製も使えます
X
              An SD
            node can
             act as a
            gateway
SD のノードはゲートウェイにもなります
Clone


$ sd clone

   クローン
Clone from Google
         Code
$ sd clone --from gcode:k9mail

       Google Code から
Clone from RT
$ sd clone --from "rt:https://rt.cpan.org|DBI|"




                   RT から
Clone from Trac

$ sd clone --from trac:https://trac.parrot.org/parrot


                    Trac から
Clone from GitHub

$ git sd clone --from github:miyagawa/remedie


               Github から
SD reverse engineers
  a database history


SD はデータベースの履歴を逆解析します
Pull


$ sd pull
SD reverse engineers
 a partial database
       history
 SD は部分的なデータベースの
     履歴も逆解析します
Push


$ sd push
SD figures out local
updates and sends
 them upstream
  SD はローカルの更新を見
   つけて上流に送ります
(Then it does a bunch
  of book-keeping)


それからさまざまな記録をつけます
So what’s that all
look like in the real
       world?

  実際の例を見てみましょう
Google Code              Alice’s SD                      Bob’s SD

Create some bugs


                         clone --fro...
Installing SD


SD のインストール
It’s time to get SD
  up and running


いよいよ SD を走らせてみましょう
SD is in Perl


SD は Perl で書かれています
SD uses 45-90
CPAN modules

 45 ~ 90 個の CPAN
モジュールを使っています
Are you afraid?


    大変そう?
Don’t be


 心配ご無用
I have a novel idea
         for
 a Perl application
これまでの Perl アプリとは違う
新しいやり方を思いついたんです
One-tweet install.


インストールはつぶやき 1 回分
I’m installing #SD (http://syncwith.us)
after seeing @obra’s talk at #YAPCASIA!




   YAPCASIA で @obra の話を見て #SD
(http://...
80 bytes! I still have
   60 to work with!


80 バイト !  まだ 60 バイトもありますよ !
I’m installing #SD (http://syncwith.us)
after seeing @obra’s talk at #YAPCASIA!
         curl fsck.com/sd|perl;
     expor...
You’ll need:

      curl, perl 5.8,
       C compiler

必要なのは curl, perl 5.8, C コンパイラ
You won’t need:

    CPAN

    CPAN 不要
You won’t need:

to answer prompts

質問に答えたりする必要もなし
You won’t need:

to fix dependencies

 依存モジュールの修正も不要
SD is in Perl


SD は Perl で書かれています
SD uses CPAN
    modules.


CPAN モジュールも使っています
This is a blessing.


   ありがたいことです
This is a curse.


 呪いでもありますが
CPAN
      =
Dependency Hell

 CPAN は依存地獄です
When we first built
SD, we used anything
  we thought was
       useful
 SD を最初に作ったときは便利
 そうなものを使いまくりました
(The first version of
  SD used a SVN
     backend)
最初のバージョンはバックエンドに
   SVN を使っていました
The first ~useful
   version of SD:

最初のバージョンがほぼ使えるように
  なったときはこんな感じでした
123 Dependencies


 123 個の依存モジュール
...a couple hours
       later


    …   数時間後には
54 Dependencies


 54 個の依存モジュール
Only one needs a
   compiler.


コンパイラが必要なのは 1 つだけ
Shipwright gives us
 one-command install

Shipwright のおかげでコマンド 1 つでイン
    ストールできるようになりました
curl fsck.com/sd|perl
export PATH=$PATH:~/sd/bin
What’s that do?


  どうなってるのか
curl
perl
$ head /Library/WebServer/Documents/sd

open (my $tar,'|tar xz 2>/dev/null');
while (<DATA>) {
    print $tar $_;
}
close ...
Shipwright installs a
  few Perl modules...

Shipwright は Perl モジュールをいくつかイ
           ンストールします…
...in order


順にあげると…
Scalar-List-Utils String-BufferStack Class-Accessor Class-Data-Inheritable
Tree-DAG_Node Test-Simple Sub-Uplevel Test-Exce...
(104 dists with our
   sync plugins)


sync プラグイン経由で 104 個
What’s wrong
 with SD?


SD にバグがあったら?
$ sd clone --from http://fsck.com/~jesse/sd-bugs
Don’t want to
  install SD?


インストールはしたくない?
Point your browser at
http://fsck.com/~jesse/sd-bugs/html



        ブラウザからでも大丈夫
What’s next?


 SD のこれから?
Indexing


インデックス
GPG-signed
  changesets


GPG 署名付きのチェンジセット
Actually releasing 1.0


 本当に 1.0 をリリースすること
Thanks!

     Questions?

curl fsck.com/sd | perl


 http://syncwith.us
 jesse@bestpractical.com
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
P2P Bug Tracking with SD
Upcoming SlideShare
Loading in...5
×

P2P Bug Tracking with SD

5,863

Published on

SD is a new distributed issue tracking system designed for the open web.

Published in: Technology, Business
1 Comment
5 Likes
Statistics
Notes
No Downloads
Views
Total Views
5,863
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
29
Comments
1
Likes
5
Embeds 0
No embeds

No notes for slide

P2P Bug Tracking with SD

  1. 1. P2P Bug Tracking with SD http://syncwith.us curl fsck.com/sd|perl; ~/sd/bin/sd SD を使った P2P バグトラッキング
  2. 2. Hi! こんにちは
  3. 3. I’m Jesse (obra) Jesse です
  4. 4. I own a small software company 小さな会社の社長をしています
  5. 5. (Best Practical)
  6. 6. I’ve been making issue trackers since 1995 1995 年からバグトラッカーを作ってきました
  7. 7. Our software has some bugs うちのソフトには バグがあります
  8. 8. All software has some bugs どんなソフトでもバグはあります
  9. 9. (All software is made of bugs) ソフトなんてバグでできているのです
  10. 10. I spend a lot of time on airplanes... 私はよく飛行機に乗ります
  11. 11. ...and at conferences with bad wifi ネットにつながりにくい イベントにもよく行きます
  12. 12. I need to keep track of our bugs and our work でも、バグや仕事から目を 離すわけにはいきません
  13. 13. I’m the boss 社長ですから
  14. 14. I have no excuse for not doing my work 言い訳は通用しません
  15. 15. I need to keep track of our bugs and our work even when I don’t have net access ネットがなくてもバグや仕事は 管理しないといけないのです
  16. 16. I’ve tried everything あらゆる方法を試してみました
  17. 17. Text files テキストファイル
  18. 18. Text files in version control バージョン管理した テキストファイル
  19. 19. IMAP Servers IMAP サーバ
  20. 20. RSS Feeds RSS フィード
  21. 21. Running RT on my laptop ラップトップで RT を走らせてみたり
  22. 22. Keeping browsers open ブラウザを開きっぱなしにしてみたり
  23. 23. Nothing was quite right どれもイマイチでした
  24. 24. So we built SD そこで作ったのが SD です
  25. 25. SD is a Bug Tracker SD はバグトラッカーです
  26. 26. SD is a Distributed Bug Tracker SD は分散型のバグトラッカーです
  27. 27. SD Features ( の特徴 ) Tracks bugs P2P Sync CLI Trac Sync Web UI RT Sync Scriptable Hiveminder Sync Works offline GitHub Sync Attachments Comments Google Code Sync Customizable workflow Conflict Resolution Custom properties Git integration Darcs integration
  28. 28. Principles of distributed computing 分散コンピューティングの原理
  29. 29. Bill Joy, Tom Lyon, Peter Deutsch and James Gosling created these ビル・ジョイらはこんなものを作りました
  30. 30. The network is reliable ネットワークが信頼できて
  31. 31. Latency is zero 遅延時間はゼロで
  32. 32. Bandwidth is infinite 帯域幅は無限
  33. 33. The network is secure ネットワークは安全で
  34. 34. Transport cost is zero 転送料はゼロ
  35. 35. The network is homogeneous ネットワークは均質で
  36. 36. Topology doesn't change ネットワークの構成は変化しない
  37. 37. There is one administrator 管理者はひとり
  38. 38. I didn’t make those up 私にはそんなもの用意できませんでした
  39. 39. Bill Joy, Tom Lyon, Peter Deutsch and James Gosling did 彼らは用意しましたが
  40. 40. s ie of lac Principles l a F distributed computing 分散コンピューティングの原理
  41. 41. Those are all LIES そんなものは真っ赤な嘘です
  42. 42. The network is not reliable ネットワークなんて信頼できません
  43. 43. SD isn’t network- dependent だから SD はネットワークに依存しません
  44. 44. Latency hurts 遅延時間もひどいものです
  45. 45. SD runs at the edge だから SD は境界上で動作します
  46. 46. Bandwidth is always a problem 帯域幅はいつでも悩みの種です
  47. 47. SD knows which changesets you’ve already seen だから SD はどのチェンジセット を見たか覚えています
  48. 48. The network is insecure ネットワークは安全ではありません
  49. 49. SD doesn’t depend on a network security layer だから SD はネットワークのセキ ュリティ層には依存しません
  50. 50. Topology is unpredictable and fluid ネットワークの構成は予測 できませんし流動的です
  51. 51. SD is topology- agnostic だから SD は構成不可知 論の立場をとります
  52. 52. There is no administrator 管理者なんていません
  53. 53. (But there are many people who think they’re administrators) そのつもりでいる人はたくさんいますが
  54. 54. SD lets you implement policy in the centralized systems it syncs to だから SD は同期先の中央管理システム側で ポリシーを実装できるようになっています
  55. 55. Transport costs money 転送料はタダではありません
  56. 56. SD doesn’t use much bandwidth & can use non-network substrates だから SD はあまり帯域幅を使いません。 ネットワーク以外の下位層にも対応しています
  57. 57. The network is heterogeneous ネットワークは均質ではありません
  58. 58. SD is designed to sync to foreign systems だから SD は外部のシステムと同期 できるようになっています
  59. 59. SD runs locally SD はローカルで実行できます
  60. 60. SD plays well with others ほかのソフトともうまくつきあえます
  61. 61. It syncs the way you do 同期の取り方は人間と同じ
  62. 62. Clone a project’s bug database (over HTTP) (HTTP 経由で ) プロジェクトの バグデータベースのクローンを作って
  63. 63. Work offline オフラインで作業して
  64. 64. Pull changesets from anyone you work with 仕事仲間からチェンジセットを取ってきて
  65. 65. Publish your database replica with rsync データベースの複製を rsync で公開
  66. 66. Topology doesn’t matter... ネットワークの構成なんて関係ありません
  67. 67. Don’t worry ご心配なく
  68. 68. It won’t break それでも壊れませんから
  69. 69. SD learns how to resolve each conflict... SD は衝突の解決策をひとつ ひとつ学んでいきます
  70. 70. ...based on how everyone else resolves it ベースとなるのは、ほか の人がどう解決したかです
  71. 71. Using SD (CLI) SD の使い方 (CLI)
  72. 72. Getting Started 使ってみましょう
  73. 73. SD Shell $ sd シェル
  74. 74. ./
  75. 75. Getting help $ sd help ヘルプ
  76. 76. Creating a new project $ sd init 新規プロジェクトの作成
  77. 77. Project settings $ sd settings プロジェクトの設定
  78. 78. Config file $ sd config 設定ファイル
  79. 79. Create a bug $ sd ticket create バグ情報を登録する
  80. 80. Listing bugs $ sd ticket list バグ情報の一覧表示
  81. 81. Show a bug $ sd ticket show バグ情報を表示する
  82. 82. Update a bug $ sd ticket update バグ情報を更新する
  83. 83. Log $ sd log ログ
  84. 84. Git Integration $ git sd Git に統合
  85. 85. Using SD (Web) SD の使い方 (Web)
  86. 86. Web? Isn’t SD an offline tool? あれ、 SD ってオフラインツー ルじゃなかったの?
  87. 87. Local microserver ローカルのマイクロサーバ
  88. 88. $ sd browser
  89. 89. Home ホーム
  90. 90. Create a ticket チケットを登録する
  91. 91. Search 検索
  92. 92. Show a bug バグ情報を表示する
  93. 93. Update a bug バグ情報を更新する
  94. 94. Comments コメント
  95. 95. History 履歴
  96. 96. Working with others ほかの人と一緒に作業する場合
  97. 97. Working with others (Using SD) ほかの人と一緒に作業する場合 (SD を利用 )
  98. 98. Any topology ネットワークの構成は任意
  99. 99. It doesn’t matter who you sync with 同期する相手は誰でもかまいません
  100. 100. You get all the updates eventually そのうちすべての更新情報が届きます
  101. 101. Cloning $ sd clone クローン
  102. 102. clone makes a replica of someone else’s database クローンするとほかの人のデー タベースの複製を作ります
  103. 103. Pulling $ sd pull 取得
  104. 104. pull imports unseen changes from another database replica ほかのデータベースの複製から未見 の変更をインポートします
  105. 105. Publishing $ sd publish 公開
  106. 106. publish writes out a copy of your database replica for sharing データベースの複製のコピーをほかの人と共 有できるように書き出します
  107. 107. (As SD changesets and static HTML) SD のチェンジセットと静的な HTML の形で
  108. 108. Hackathon mode (using Bonjour) ハッカソンモード (Bonjour を使って )
  109. 109. Publish your replica $ sd server
  110. 110. Pull updates $ sd pull --local 更新を取得
  111. 111. Working with others (Using other systems) ほかの人と一緒に作業する場合 ( ほかのシステムを使う )
  112. 112. But you already have a bug tracker? もうバグトラッカーを使っていますって?
  113. 113. No Problem! 大丈夫!
  114. 114. I use at least two others. 私も少なくともあと 2 つ使っています
  115. 115. I wrote at least two others. 少なくともあと 2 つ書きました
  116. 116. We designed SD talk to foreign bug trackers Sd は外部のバグトラッカーともや りとりできるように設計しました
  117. 117. RT
  118. 118. RT::Client::REST (By DMITRI, DAMS & AMS)
  119. 119. Hiveminder
  120. 120. Net::Jifty (by SARTAK)
  121. 121. Trac
  122. 122. Net::Trac (by JESSE & TSIBLEY)
  123. 123. Google Code
  124. 124. Net::Google::Code (by SUNNAVY and FAYLAND)
  125. 125. GitHub
  126. 126. Net::GitHub (by FAYLAND)
  127. 127. Lighthouse (VERY beta!)
  128. 128. Net::Lighthouse (by SUNNAVY)
  129. 129. Redmine (Read-only for now)
  130. 130. Net::Redmine (by GUGOD)
  131. 131. Want to help with Bugzilla, Jira, FogBugz or something else? Bugzilla とかも使いたい?
  132. 132. Work with foreign replicas in a Star Topology スター構成にすれば外部の複製も使えます
  133. 133. X An SD node can act as a gateway SD のノードはゲートウェイにもなります
  134. 134. Clone $ sd clone クローン
  135. 135. Clone from Google Code $ sd clone --from gcode:k9mail Google Code から
  136. 136. Clone from RT $ sd clone --from "rt:https://rt.cpan.org|DBI|" RT から
  137. 137. Clone from Trac $ sd clone --from trac:https://trac.parrot.org/parrot Trac から
  138. 138. Clone from GitHub $ git sd clone --from github:miyagawa/remedie Github から
  139. 139. SD reverse engineers a database history SD はデータベースの履歴を逆解析します
  140. 140. Pull $ sd pull
  141. 141. SD reverse engineers a partial database history SD は部分的なデータベースの 履歴も逆解析します
  142. 142. Push $ sd push
  143. 143. SD figures out local updates and sends them upstream SD はローカルの更新を見 つけて上流に送ります
  144. 144. (Then it does a bunch of book-keeping) それからさまざまな記録をつけます
  145. 145. So what’s that all look like in the real world? 実際の例を見てみましょう
  146. 146. Google Code Alice’s SD Bob’s SD Create some bugs clone --from gcode:k9mail Alice’s SD makes a full copy of the k9mail from google code Someone updates ticket 12 ticket update 13 ticket create pull --from k9mail SD integrates upstream changes from Google Code since Alice ran the ‘clone’ command. push --to k9mail SD figures out what’s changed locally since the original ‘clone’ command. SD then sends any changes that Google Code hasn’t seen upstream as ticket updates. Alice’s new ticket and her updates to ticket 13 are now part of the upstream bug database in Google Code publish --to SD exports a full copy of Alice’s bug database and rsyncs alice.com:public_html/k9 it up to alice.com/k9. Anyone browsing alice.com/k9 can clone her SD replica. (Or see it in static HTML) clone --from http://alice.com/k9 Bob makes a full copy of Alice’s SD replica of the k9mail database. He’s now free to make changes to his local database replica. ticket update 45 ticket create ticket create ticket update 45 publish --to bob.com:public_html/k9 Bob publishes his full K9 bug database. Anyone browsing bob.com/k9 can clone Bob’s K9 replica. Anyone who already has a copy of Alice or Bob’s database can incorporate Bob’s new ticket and his changes to ticket 45. pull --from http://bob.com/k9 Alice’s SD pulls all previously unseen updates from Bob’s published database replica and incorporates them. If Bob's edits to ticket 45 didn't conflict, Alice's SD incorporate them. If they did conflict, Alice will be prompted to resolve the conflict.
  147. 147. Installing SD SD のインストール
  148. 148. It’s time to get SD up and running いよいよ SD を走らせてみましょう
  149. 149. SD is in Perl SD は Perl で書かれています
  150. 150. SD uses 45-90 CPAN modules 45 ~ 90 個の CPAN モジュールを使っています
  151. 151. Are you afraid? 大変そう?
  152. 152. Don’t be 心配ご無用
  153. 153. I have a novel idea for a Perl application これまでの Perl アプリとは違う 新しいやり方を思いついたんです
  154. 154. One-tweet install. インストールはつぶやき 1 回分
  155. 155. I’m installing #SD (http://syncwith.us) after seeing @obra’s talk at #YAPCASIA! YAPCASIA で @obra の話を見て #SD (http://syncwith.us) をインストールしてる
  156. 156. 80 bytes! I still have 60 to work with! 80 バイト !  まだ 60 バイトもありますよ !
  157. 157. I’m installing #SD (http://syncwith.us) after seeing @obra’s talk at #YAPCASIA! curl fsck.com/sd|perl; export PATH=~/sd/bin:$PATH; sd curl fsck.com/sd|perl; export PATH=~/sd/bin:$PATH; sd
  158. 158. You’ll need: curl, perl 5.8, C compiler 必要なのは curl, perl 5.8, C コンパイラ
  159. 159. You won’t need: CPAN CPAN 不要
  160. 160. You won’t need: to answer prompts 質問に答えたりする必要もなし
  161. 161. You won’t need: to fix dependencies 依存モジュールの修正も不要
  162. 162. SD is in Perl SD は Perl で書かれています
  163. 163. SD uses CPAN modules. CPAN モジュールも使っています
  164. 164. This is a blessing. ありがたいことです
  165. 165. This is a curse. 呪いでもありますが
  166. 166. CPAN = Dependency Hell CPAN は依存地獄です
  167. 167. When we first built SD, we used anything we thought was useful SD を最初に作ったときは便利 そうなものを使いまくりました
  168. 168. (The first version of SD used a SVN backend) 最初のバージョンはバックエンドに SVN を使っていました
  169. 169. The first ~useful version of SD: 最初のバージョンがほぼ使えるように なったときはこんな感じでした
  170. 170. 123 Dependencies 123 個の依存モジュール
  171. 171. ...a couple hours later … 数時間後には
  172. 172. 54 Dependencies 54 個の依存モジュール
  173. 173. Only one needs a compiler. コンパイラが必要なのは 1 つだけ
  174. 174. Shipwright gives us one-command install Shipwright のおかげでコマンド 1 つでイン ストールできるようになりました
  175. 175. curl fsck.com/sd|perl export PATH=$PATH:~/sd/bin
  176. 176. What’s that do? どうなってるのか
  177. 177. curl
  178. 178. perl
  179. 179. $ head /Library/WebServer/Documents/sd open (my $tar,'|tar xz 2>/dev/null'); while (<DATA>) { print $tar $_; } close $tar; exec("cd sd-build; bin/shipwright-builder --install-base=$ENV{HOME}/sd"); __DATA__ ?I?Isd-build.tar?<is?F???_1? 䀌 yH?"#‫{$ٲ‬U???H?eH ...
  180. 180. Shipwright installs a few Perl modules... Shipwright は Perl モジュールをいくつかイ ンストールします…
  181. 181. ...in order 順にあげると…
  182. 182. Scalar-List-Utils String-BufferStack Class-Accessor Class-Data-Inheritable Tree-DAG_Node Test-Simple Sub-Uplevel Test-Exception Array-Compare Test- Warn Template-Declare URI HTTP-Server-Simple Params-Util Class-Inspector File-ShareDir DBI DBD-SQLite HTML-Tagset HTML-Parser HTML-Tree Crypt- SSLeay JSON YAML-Syck JSON-XS JSON-DWIW JSON-Any Mouse Any-Moose Compress-Raw-Zlib Compress-Raw-Bzip2 IO-Compress libwww-perl HTTP- Response-Encoding WWW-Mechanize WWW-Mechanize-GZip File-Slurp Test- MockModule Net-GitHub MIME-Types Class-Singleton Params-Validate version ExtUtils-CBuilder ExtUtils-ParseXS Test-Harness File-Temp Module- Build DateTime-TimeZone List-MoreUtils DateTime-Locale DateTime File- MMagic Net-Google-Code Term-ReadLine-Perl Digest-SHA1 Digest-HMAC Net- IP Net-DNS Net-Bonjour TermReadKey UUID-Tiny XML-Atom-SimpleFeed Digest-SHA Exporter-Lite IPC-Run3 MIME-Base64-URLSafe Sub-Install Data- OptList Sub-Exporter Path-Dispatcher Module-Pluggable Time-Progress Carp- Assert Proc-InvokeEditor Test-HTTP-Server-Simple Module-Refresh Carp- Assert-More Test-LongString Test-WWW-Mechanize Test-Script-Run prophet.git Devel-StackTrace Exception-Class Error RT-Client-REST Email- Address YAML Path-Class Clone Hash-Merge UNIVERSAL-isa UNIVERSAL-can Test-MockObject Net-Jifty Lingua-EN-Inflect Text-CSV Net-Trac boolean Time- Piece Test-MockTime DateTime-Format-Natural sd.git
  183. 183. (104 dists with our sync plugins) sync プラグイン経由で 104 個
  184. 184. What’s wrong with SD? SD にバグがあったら?
  185. 185. $ sd clone --from http://fsck.com/~jesse/sd-bugs
  186. 186. Don’t want to install SD? インストールはしたくない?
  187. 187. Point your browser at http://fsck.com/~jesse/sd-bugs/html ブラウザからでも大丈夫
  188. 188. What’s next? SD のこれから?
  189. 189. Indexing インデックス
  190. 190. GPG-signed changesets GPG 署名付きのチェンジセット
  191. 191. Actually releasing 1.0 本当に 1.0 をリリースすること
  192. 192. Thanks! Questions? curl fsck.com/sd | perl http://syncwith.us jesse@bestpractical.com
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×