initial commit

This commit is contained in:
Kazuhiro MUSASHI 2019-03-31 19:00:21 +08:00
commit 3c8b202f54
2187 changed files with 137926 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
public

6
.textlintrc Normal file
View File

@ -0,0 +1,6 @@
{
"rules": {
"preset-ja-technical-writing": true,
"preset-ja-technical-writing": true
}
}

3
Rakefile Normal file
View File

@ -0,0 +1,3 @@
#!/usr/bin/env rake
Dir['tasks/**/*.rake'].each { |path| load path }

13
config.toml Normal file
View File

@ -0,0 +1,13 @@
baseurl = "https://blog.kazu634.com/"
title = "His greatness lies in his sense of responsibility"
languageCode = "ja"
theme = "angels-ladder"
[params]
subtitle = "I wanna be a Jedi Padawan."
facebook = "https://www.facebook.com/kazu634"
twitter = "https://twitter.com/kazu634"
github = "https://github.com/kazu634"
profile = "/images/profile.png"
analytics = "UA-57665492-1"
copyright = "Written by Kazuhiro MUSASHI"

View File

@ -0,0 +1,119 @@
---
title: anything の source を作ってみる (initの使い方)
author: kazu634
date: 1969-12-31
url: /1970/01/01/_0/
wordtwit_post_info:
- 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:4879;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}'
categories:
- Emacs
---
<div class="section">
<p>
Anything.el の source で init を使ってみて、うまくいかなかったのでここに書いておきます。
</p>
<h4>
駄目だったソース
</h4>
<p>
init の説明にはこうありました。
</p>
<blockquote title="2009-10-12 - 武蔵の日記" cite="http://d.hatena.ne.jp/sirocco634/20091012#1255336649">
<dl>
<dt>
init (オプション)
</dt>
<dd>
anything が実行された際に引数なしで呼び出される関数。この要素は、候補のリストを作成するために現在の状況を収集するのに便利である。<br />例えば、 source がカレントディレクトリを対象とした場合、init 要素に指定することでカレントディレクトリの情報を収集することができる。なぜならば、それ以降 anything はミニバッファーと anything-buffer で動作し、カレントディレクトリが変わる可能性が出てくるからである。
</dd>
</dl>
<p>
<cite><a href="http://d.hatena.ne.jp/sirocco634/20091012#1255336649" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/sirocco634/20091012#1255336649', '2009-10-12 &#8211; 武蔵の日記');" target="_blank">2009-10-12 &#8211; 武蔵の日記</a></cite>
</p>
</blockquote>
<p>
これは candidates を表示する前に実行される関数なのだろうと単純に考えていたのですが、間違えていたようでした。
</p>
<p>
つくってみたソースはこちら:
</p>
<pre class="syntax-highlight">
<span class="synSpecial">(</span><span class="synStatement">setq</span> anything-c-source-testtest
<span class="synSpecial">'((</span>name . <span class="synConstant">&#34;test Search&#34;</span><span class="synSpecial">)</span>
<span class="synSpecial">(</span>init .
<span class="synSpecial">(</span><span class="synStatement">lambda</span> <span class="synSpecial">()</span>
<span class="synSpecial">(</span>read-string <span class="synConstant">&#34;?: &#34;</span><span class="synSpecial">)))</span>
<span class="synSpecial">(</span>candidates .
<span class="synSpecial">(</span><span class="synConstant">&#34;foo&#34;</span> <span class="synConstant">&#34;bar&#34;</span><span class="synSpecial">))</span>
<span class="synSpecial">(</span>action . <span class="synSpecial">((</span><span class="synConstant">&#34;Insert&#34;</span> . insert<span class="synSpecial">)))))</span>
</pre>
<p>
これを実行すると、下のような形で候補が表示されるのと、ミニバッファーでの問い合わせが同時に行われてしまいます:
</p>
<p>
<center>
</center>
</p>
<p>
<a href="http://flickr.com/photos/42332031@N02/4052410201/" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://flickr.com/photos/42332031@N02/4052410201/', '');" title="駄目なsourceの例"><img src="http://farm3.static.flickr.com/2726/4052410201_0eb41915b0.jpg" /></a>
</p></p>
<p>
スクリプトの引数を入力してもらってから、スクリプトを実施、候補の表示という流れにしたかったのですが、 init ではできないようです。。。
</p>
<h4>
やりたかったことはこうすればできました
</h4>
<pre class="syntax-highlight">
<span class="synComment">;; グローバル変数を定義</span>
<span class="synSpecial">(</span><span class="synStatement">defvar</span> anything-c-source-amazon-work <span class="synConstant">&#34;a&#34;</span><span class="synSpecial">)</span>
<span class="synComment">;; 事前にこの関数を呼び出して、引数を取得→anything-c-source-amazon-workに代入</span>
<span class="synComment">;; その後、anything-c-source-amazonでanythingを起動する</span>
<span class="synComment">;; anything-c-source-amazonは、anything-c-source-amazon-workを引数として</span>
<span class="synComment">;; 外部スクリプトを実行し、候補を生成する</span>
<span class="synSpecial">(</span><span class="synStatement">defun</span> anything_amazon <span class="synSpecial">(</span>key<span class="synSpecial">)</span>
<span class="synSpecial">(</span>interactive <span class="synConstant">&#34;sISBN13 or ASIN: &#34;</span><span class="synSpecial">)</span>
<span class="synSpecial">(</span><span class="synStatement">if</span> <span class="synSpecial">(</span>string-match <span class="synConstant">&#34;[0-9]+&#34;</span> key<span class="synSpecial">)</span>
<span class="synSpecial">(</span><span class="synStatement">progn</span>
<span class="synSpecial">(</span><span class="synStatement">setq</span> anything-c-source-amazon-work key<span class="synSpecial">)</span>
<span class="synSpecial">(</span>anything <span class="synSpecial">'</span><span class="synIdentifier">anything-c-source-amazon</span>
<span class="synStatement">nil</span>
<span class="synConstant">&#34;Title: &#34;</span>
<span class="synStatement">nil</span>
<span class="synStatement">nil</span>
anything-call-source-buffer<span class="synSpecial">))</span>
<span class="synSpecial">(</span>message <span class="synConstant">&#34;Please enter ISBN13 or ASIN!&#34;</span><span class="synSpecial">)))</span>
<span class="synSpecial">(</span><span class="synStatement">defvar</span> anything-c-source-amazon
<span class="synSpecial">'((</span>name . <span class="synConstant">&#34;Amazon Search&#34;</span><span class="synSpecial">)</span>
<span class="synSpecial">(</span>candidates .
<span class="synSpecial">(</span><span class="synStatement">lambda</span> <span class="synSpecial">()</span>
<span class="synSpecial">(</span><span class="synStatement">if</span> <span class="synSpecial">(</span>string-match <span class="synConstant">&#34;[0-9]+&#34;</span> anything-c-source-amazon-work<span class="synSpecial">)</span>
<span class="synSpecial">(</span><span class="synStatement">delete</span> <span class="synConstant">&#34;&#34;</span>
<span class="synSpecial">(</span>split-string
<span class="synSpecial">(</span>shell-command-to-string
<span class="synSpecial">(</span><span class="synStatement">format</span> <span class="synConstant">&#34;access_amazon %s&#34;</span>
anything-c-source-amazon-work<span class="synSpecial">))</span>
<span class="synConstant">&#34;\n&#34;</span><span class="synSpecial">))</span>
<span class="synConstant">&#34;No Results&#34;</span><span class="synSpecial">)))</span>
<span class="synSpecial">(</span>candidate-transformer . <span class="synSpecial">(</span><span class="synStatement">lambda</span> <span class="synSpecial">(</span>candidates<span class="synSpecial">)</span>
<span class="synSpecial">(</span><span class="synStatement">mapcar</span>
<span class="synSpecial">(</span><span class="synStatement">function</span> <span class="synSpecial">(</span><span class="synStatement">lambda</span><span class="synSpecial">(</span>arg<span class="synSpecial">)</span>
<span class="synSpecial">(</span><span class="synStatement">apply</span> '<span class="synStatement">cons</span> <span class="synSpecial">(</span>split-string arg <span class="synConstant">&#34;\t&#34;</span><span class="synSpecial">))))</span>
candidates<span class="synSpecial">)))</span>
<span class="synSpecial">(</span>action . <span class="synSpecial">((</span><span class="synConstant">&#34;Insert&#34;</span> . insert<span class="synSpecial">)))))</span>
</pre>
</div>

View File

@ -0,0 +1,128 @@
---
title: anythingとyasnippetを導入
author: kazu634
date: 1969-12-31
url: /1970/01/01/_1/
wordtwit_post_info:
- 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:4099;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}'
categories:
- Emacs
---
<div class="section">
<p>
 <a href="http://d.hatena.ne.jp/hayamiz/" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/hayamiz/', 'id:hayamiz');">id:hayamiz</a>主催のEmacs勉強会に参加してきた。<a href="http://d.hatena.ne.jp/hyoshiok/" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/hyoshiok/', 'id:hyoshiok');">id:hyoshiok</a>さんの「ブログに感想をアップするまでが勉強会」ということをいわれていたのだが、勉強会から今まですでに二日が経過している。今まで私は何をしていたのか?
</p>
<p>
 いやー、Macの環境をまっさらにして、Emacsの設定を一からやり直していました。それぐらいに濃い刺激を受けてきました。本当にいい勉強会だった。後、やっぱり自分みたいな「コピペで.emacsを作り上げる」レベルには、実際にこんなことができると実演してくれて、「こんなこともできるのか」という感動が強かった。
</p>
<p>
 他の人もいろいろとまとめてくれている(例えば「<a href="http://d.hatena.ne.jp/tomisima/20080629/1214719173" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/tomisima/20080629/1214719173', 'tokyo-emacs#x01行ってきた。 &#8211; tomisima::memo');" target="_blank">tokyo-emacs#x01行ってきた。 &#8211; tomisima::memo</a>」とか)ので、自分は
</p>
<ul>
<li>
anything.el
</li>
<li>
yasnippet.el
</li>
</ul>
<p>
を導入してて、詰まったところを備忘録として書いておこうと思う。でも、この二つも導入するのは結構簡単だった。
</p>
<h4>
yasnippet
</h4>
<p>
 <a href="http://code.google.com/p/yasnippet/" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://code.google.com/p/yasnippet/', 'yasnippet &#8211; Google Code');" target="_blank">yasnippet &#8211; Google Code</a>からyasippetをダウンロードする。今回私はbundleではない方をダウンロードした。それで適当なフォルダで解凍して、.emacsに
</p>
<pre class="syntax-highlight">
<span class="synSpecial">(</span><span class="synStatement">require</span> <span class="synSpecial">'</span><span class="synIdentifier">yasnippet</span><span class="synSpecial">)</span> <span class="synComment">;; not yasnippet-bundle</span>
<span class="synSpecial">(</span>yas/initialize<span class="synSpecial">)</span>
<span class="synSpecial">(</span>yas/load-directory <span class="synConstant">&#34;「snippets」ディレクトリへのパス&#34;</span><span class="synSpecial">)</span>
</pre>
<p>
を追加する。再起動後には、yasnippetが使えるようになっている…はず。自分はまっさらにしないと、なぜかyasnippetが使えなかった。なぜなんだろうとりあえずtabで使えるようになるよ。
</p>
<h4>
anything
</h4>
<p>
 こいつは本当に便利です。簡単にいうと、「Quicksilverみたいなのが、Emacsに入ってきます」。<a href="http://d.hatena.ne.jp/IMAKADO/" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/IMAKADO/', 'id:IMAKADO');">id:IMAKADO</a>さんのデモをみたときは本当に感動した。manがEmacsの中から参照できている本当にすごい
</p>
<p>
 anythingを導入する前にぜひやっておくべきことは
</p>
<ul>
<li>
<a href="http://centaur.maths.qmw.ac.uk/Emacs/WoMan/" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://centaur.maths.qmw.ac.uk/Emacs/WoMan/', 'WoMan');" target="_blank">WoMan</a>の導入load pathに置いておこう
</li>
<li>
locateコマンドを使うと幸せになれそうだから、locate用のデータベースの作成leopardだと「sudo /usr/libexec/locate.updatedb」
</li>
</ul>
<p>
です。
</p>
<p>
 私の.emacsはこんな感じになりました。
</p>
<pre class="syntax-highlight">
<span class="synComment">;; ================</span>
<span class="synComment">;; === anything ===</span>
<span class="synComment">;; ================</span>
<span class="synComment">;; 初回起動が遅いので cache 作成。</span>
<span class="synSpecial">(</span><span class="synStatement">setq</span> woman-cache-filename <span class="synSpecial">(</span>expand-file-name <span class="synConstant">&#34;~/woman_cache&#34;</span><span class="synSpecial">))</span>
<span class="synSpecial">(</span><span class="synStatement">require</span> <span class="synSpecial">'</span><span class="synIdentifier">anything-config</span><span class="synSpecial">)</span>
<span class="synSpecial">(</span><span class="synStatement">setq</span> anything-sources
<span class="synSpecial">(</span><span class="synStatement">list</span> anything-c-source-buffers
anything-c-source-files-in-current-dir
anything-c-source-file-name-history
anything-c-source-emacs-commands
anything-c-source-man-pages
anything-c-source-info-pages
anything-c-source-calculation-result
anything-c-source-locate<span class="synSpecial">))</span>
<span class="synSpecial">(</span>global-set-key <span class="synConstant">&#34;\C-xb&#34;</span> <span class="synSpecial">'</span><span class="synIdentifier">anything</span><span class="synSpecial">)</span>
</pre>
<p>
ポイントになるのは、いちいち起動時に man ページから索引を作らないように
</p>
<pre class="syntax-highlight">
<span class="synComment">;; 初回起動が遅いので cache 作成。</span>
<span class="synSpecial">(</span><span class="synStatement">setq</span> woman-cache-filename <span class="synSpecial">(</span>expand-file-name <span class="synConstant">&#34;~/woman_cache&#34;</span><span class="synSpecial">))</span>
</pre>
<p>
を書いていること。「(require &#8216;anything-config)の前に書かないといけない」ことに気づくまでが大変だった。。。
</p>
<p>
 参考になったのは、「<a href="http://dev.ariel-networks.com/Members/matsuyama/open-anything-emacs" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://dev.ariel-networks.com/Members/matsuyama/open-anything-emacs', '巷で話題の anything.el を使ってみた');" target="_blank">巷で話題の anything.el を使ってみた</a>」。
</p>
<h4>
最後に
</h4>
<p>
 <a href="http://d.hatena.ne.jp/hayamiz/" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/hayamiz/', 'id:hayamiz');">id:hayamiz</a>さん と <a href="http://d.hatena.ne.jp/hyoshiok/" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/hyoshiok/', 'id:hyoshiok');">id:hyoshiok</a>さん、勉強会を開いてくれてありがとうございました!発表してくださった皆さんもおつかれさまです。
</p>
</div>

View File

@ -0,0 +1,17 @@
---
title: Find XPathが便利
author: kazu634
date: 1969-12-31
url: /1970/01/01/_2/
wordtwit_post_info:
- 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:4663;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}'
categories:
- Perl
- scraper
---
<div class="section">
<p>
<a href="http://d.hatena.ne.jp/goinger/20081206/1228585045" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/goinger/20081206/1228585045', 'XPathを実行する際のお勧めplugin &#8211; goinger的日記');" target="_blank">XPathを実行する際のお勧めplugin &#8211; goinger的日記</a>とかで紹介されているFind XPathが便利だ♪
</p>
</div>

View File

@ -0,0 +1,243 @@
---
title: Fluentd を試してみた
author: kazu634
date: 1969-12-31
url: /1970/01/01/_3/
wordtwit_post_info:
- 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:5461;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}'
categories:
- つれづれ
---
<div class="section">
<p>
仕事でログ管理サーバというものに日次でログを転送して、解析という処理を行なっていました。
</p>
<p>
しかしここで問題が発生。Windowsの更新日付を見て、前回日付から更新されていればログを転送するロジックなのに、ログが書き込まれても更新日付が更新されていなかった。。。原因は調査中。。。そういったトラブルに見舞われた結果、モダンなログ監視手法を勉強したいと思っていたのでした。
</p>
<p>
そんなときに読んだ『<a href="http://d.hatena.ne.jp/asin/4774151041" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/asin/4774151041', 'WEB+DB PRESS Vol.69');">WEB+DB PRESS Vol.69</a>』で紹介されていた <a href="http://fluentd.org/" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://fluentd.org/', 'Fluentd | Open Source Data Collector');" target="_blank">Fluentd | Open Source Data Collector</a> を試して見ることを決意したのでした。
</p>
<h4>
fluentd のいいところ
</h4>
<p>
<a href="http://d.hatena.ne.jp/asin/4774151041" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/asin/4774151041', 'WEB+DB PRESS Vol.69');">WEB+DB PRESS Vol.69</a>によれば既存のログ解析システムには以下の問題点があると指摘しています:
</p>
<ol>
<li>
データの即時性
</li>
<li>
データコピー処理が不安定
</li>
<li>
障害対応の苦労
</li>
</ol>
<p>
fluentd の tail プラグインを用いると、 tail -f して追記されたものを随時転送してくれるため、即時に転送されます。コピー処理についてもリトライを行なってくれます。また、ログ転送をほぼリアルタイムに行えるため、ログ解析処理を日中帯に実行でき、障害対応の苦労が軽減されます。
</p>
<h4>
導入方法
</h4>
<p>
ubuntu の deb パッケージ・td-agent を使用して導入してみました。
</p>
<pre class="syntax-highlight">
kazu634@fluent-master:~$ <span class="synStatement">cd</span> /etc/apt
kazu634@fluent-master:/etc/apt$ ll
total <span class="synConstant">48</span>
drwxr-xr-x <span class="synConstant">6</span> root root <span class="synConstant">4096</span> <span class="synConstant">6</span><span class="synConstant">28</span> <span class="synConstant">00</span>:<span class="synConstant">02</span> ./
drwxr-xr-x <span class="synConstant">85</span> root root <span class="synConstant">4096</span> <span class="synConstant">6</span><span class="synConstant">28</span> <span class="synConstant">00</span>:<span class="synConstant">01</span> ../
drwxr-xr-x <span class="synConstant">2</span> root root <span class="synConstant">4096</span> <span class="synConstant">6</span><span class="synConstant">24</span> <span class="synConstant">13</span>:<span class="synConstant">13</span> apt.conf.d/
drwxr-xr-x <span class="synConstant">2</span> root root <span class="synConstant">4096</span> <span class="synConstant">4</span><span class="synConstant">20</span> <span class="synConstant">19</span>:<span class="synConstant">21</span> preferences.d/
-rw-<span class="synStatement">r</span>--<span class="synStatement">r</span>-- <span class="synConstant">1</span> root root <span class="synConstant">3377</span> <span class="synConstant">6</span><span class="synConstant">28</span> <span class="synConstant">00</span>:<span class="synConstant">02</span> sources.list
drwxr-xr-x <span class="synConstant">2</span> root root <span class="synConstant">4096</span> <span class="synConstant">4</span><span class="synConstant">20</span> <span class="synConstant">19</span>:<span class="synConstant">21</span> sources.list.d/
-rw------- <span class="synConstant">1</span> root root <span class="synConstant">1200</span> <span class="synConstant">6</span><span class="synConstant">24</span> <span class="synConstant">13</span>:<span class="synConstant">00</span> trustdb.gpg
-rw-<span class="synStatement">r</span>--<span class="synStatement">r</span>-- <span class="synConstant">1</span> root root <span class="synConstant">6713</span> <span class="synConstant">6</span><span class="synConstant">24</span> <span class="synConstant">13</span>:<span class="synConstant">00</span> trusted.gpg
drwxr-xr-x <span class="synConstant">2</span> root root <span class="synConstant">4096</span> <span class="synConstant">4</span><span class="synConstant">20</span> <span class="synConstant">19</span>:<span class="synConstant">21</span> trusted.gpg.d/
-rw-<span class="synStatement">r</span>--<span class="synStatement">r</span>-- <span class="synConstant">1</span> root root <span class="synConstant">6713</span> <span class="synConstant">6</span><span class="synConstant">24</span> <span class="synConstant">13</span>:<span class="synConstant">00</span> trusted.gpg~
kazu634@fluent-master:/etc/apt$ sudo cp <span class="synSpecial">-p</span> sources.list sources.list.<span class="synConstant">20120627</span>
kazu634@fluent-master:/etc/apt$ sudo vi sources.list
kazu634@fluent-master:/etc/apt$ diff <span class="synSpecial">-u</span> sources.list.<span class="synConstant">20120628</span> sources.list
--- sources.list.<span class="synConstant">20120628</span> <span class="synConstant">2012-06-28</span> <span class="synConstant">00</span>:<span class="synConstant">02</span>:<span class="synConstant">06</span>.<span class="synConstant">263023624</span> <span class="synSpecial">+0900</span>
+++ sources.list <span class="synConstant">2012-06-28</span> <span class="synConstant">00</span>:<span class="synConstant">02</span>:<span class="synConstant">50</span>.<span class="synConstant">683021714</span> <span class="synSpecial">+0900</span>
@@ <span class="synConstant">-59</span>,<span class="synConstant">3</span> <span class="synSpecial">+59</span>,<span class="synConstant">5</span> @@
<span class="synComment"> ## developers who want to ship their latest software.</span>
<span class="synComment"> # deb http://extras.ubuntu.com/ubuntu precise main</span>
<span class="synComment"> # deb-src http://extras.ubuntu.com/ubuntu precise main</span>
+
+deb http://packages.treasure-data.com/debian/ lucid contrib
kazu634@fluent-master:/etc/apt$ sudo aptitude update
Ign http://ubuntutym.u-toyama.ac.jp precise InRelease
Ign http://ubuntutym.u-toyama.ac.jp precise-updates InRelease
Ign http://ubuntutym.u-toyama.ac.jp precise-backports InRelease
Get: <span class="synConstant">1</span> http://ubuntutym.u-toyama.ac.jp precise Release.gpg <span class="synStatement">[</span><span class="synConstant">198</span> B<span class="synStatement">]</span>
Get: <span class="synConstant">2</span> http://ubuntutym.u-toyama.ac.jp precise-updates Release.gpg <span class="synStatement">[</span><span class="synConstant">198</span> B<span class="synStatement">]</span>
Get: <span class="synConstant">3</span> http://ubuntutym.u-toyama.ac.jp precise-backports Release.gpg <span class="synStatement">[</span><span class="synConstant">198</span> B<span class="synStatement">]</span>
Get: <span class="synConstant">4</span> http://ubuntutym.u-toyama.ac.jp precise Release <span class="synStatement">[</span><span class="synConstant">49</span>.<span class="synConstant">6</span> kB<span class="synStatement">]</span>
Get: <span class="synConstant">5</span> http://ubuntutym.u-toyama.ac.jp precise-updates Release <span class="synStatement">[</span><span class="synConstant">49</span>.<span class="synConstant">6</span> kB<span class="synStatement">]</span>
Get: <span class="synConstant">6</span> http://ubuntutym.u-toyama.ac.jp precise-backports Release <span class="synStatement">[</span><span class="synConstant">49</span>.<span class="synConstant">6</span> kB<span class="synStatement">]</span>
Get: <span class="synConstant">7</span> http://ubuntutym.u-toyama.ac.jp precise/main Sources <span class="synStatement">[</span><span class="synConstant">934</span> kB<span class="synStatement">]</span>
Ign http://security.ubuntu.com precise-security InRelease
Get: <span class="synConstant">8</span> http://security.ubuntu.com precise-security Release.gpg <span class="synStatement">[</span><span class="synConstant">198</span> B<span class="synStatement">]</span>
Ign http://packages.treasure-data.com lucid InRelease
Get: <span class="synConstant">9</span> http://security.ubuntu.com precise-security Release <span class="synStatement">[</span><span class="synConstant">49</span>.<span class="synConstant">6</span> kB<span class="synStatement">]</span>
Ign http://packages.treasure-data.com lucid Release.gpg
Hit http://packages.treasure-data.com lucid Release
Ign http://packages.treasure-data.com lucid/contrib amd64 Packages/DiffIndex
Get: <span class="synConstant">10</span> http://ubuntutym.u-toyama.ac.jp precise/restricted Sources <span class="synStatement">[</span><span class="synConstant">5</span>,<span class="synConstant">470</span> B<span class="synStatement">]</span>
Get: <span class="synConstant">11</span> http://ubuntutym.u-toyama.ac.jp precise/universe Sources <span class="synStatement">[</span><span class="synConstant">5</span>,<span class="synConstant">019</span> kB<span class="synStatement">]</span>
Ign http://packages.treasure-data.com lucid/contrib i386 Packages/DiffIndex
Ign http://packages.treasure-data.com lucid/contrib TranslationIndex
Get: <span class="synConstant">12</span> http://security.ubuntu.com precise-security/main Sources <span class="synStatement">[</span><span class="synConstant">21</span>.<span class="synConstant">1</span> kB<span class="synStatement">]</span>
Get: <span class="synConstant">13</span> http://security.ubuntu.com precise-security/restricted Sources <span class="synStatement">[</span><span class="synConstant">14</span> B<span class="synStatement">]</span>
Get: <span class="synConstant">14</span> http://security.ubuntu.com precise-security/universe Sources <span class="synStatement">[</span><span class="synConstant">7</span>,<span class="synConstant">120</span> B<span class="synStatement">]</span>
Get: <span class="synConstant">15</span> http://security.ubuntu.com precise-security/multiverse Sources <span class="synStatement">[</span><span class="synConstant">713</span> B<span class="synStatement">]</span>
Get: <span class="synConstant">16</span> http://security.ubuntu.com precise-security/main amd64 Packages <span class="synStatement">[</span><span class="synConstant">64</span>.<span class="synConstant">3</span> kB<span class="synStatement">]</span>
Get: <span class="synConstant">17</span> http://security.ubuntu.com precise-security/restricted amd64 Packages <span class="synStatement">[</span><span class="synConstant">14</span> B<span class="synStatement">]</span>
Get: <span class="synConstant">18</span> http://security.ubuntu.com precise-security/universe amd64 Packages <span class="synStatement">[</span><span class="synConstant">17</span>.<span class="synConstant">2</span> kB<span class="synStatement">]</span>
Get: <span class="synConstant">19</span> http://security.ubuntu.com precise-security/multiverse amd64 Packages <span class="synStatement">[</span><span class="synConstant">1</span>,<span class="synConstant">155</span> B<span class="synStatement">]</span>
Get: <span class="synConstant">20</span> http://security.ubuntu.com precise-security/main i386 Packages <span class="synStatement">[</span><span class="synConstant">65</span>.<span class="synConstant">9</span> kB<span class="synStatement">]</span>
Hit http://packages.treasure-data.com lucid/contrib amd64 Packages
Hit http://packages.treasure-data.com lucid/contrib i386 Packages
Get: <span class="synConstant">21</span> http://security.ubuntu.com precise-security/restricted i386 Packages <span class="synStatement">[</span><span class="synConstant">14</span> B<span class="synStatement">]</span>
Get: <span class="synConstant">22</span> http://security.ubuntu.com precise-security/universe i386 Packages <span class="synStatement">[</span><span class="synConstant">17</span>.<span class="synConstant">4</span> kB<span class="synStatement">]</span>
Get: <span class="synConstant">23</span> http://security.ubuntu.com precise-security/multiverse i386 Packages <span class="synStatement">[</span><span class="synConstant">1</span>,<span class="synConstant">394</span> B<span class="synStatement">]</span>
Hit http://security.ubuntu.com precise-security/main TranslationIndex
Hit http://security.ubuntu.com precise-security/multiverse TranslationIndex
Hit http://security.ubuntu.com precise-security/restricted TranslationIndex
Hit http://security.ubuntu.com precise-security/universe TranslationIndex
Ign http://packages.treasure-data.com lucid/contrib Translation-ja_JP
Hit http://security.ubuntu.com precise-security/main Translation-en
Hit http://security.ubuntu.com precise-security/multiverse Translation-en
Hit http://security.ubuntu.com precise-security/restricted Translation-en
Ign http://packages.treasure-data.com lucid/contrib Translation-ja
Hit http://security.ubuntu.com precise-security/universe Translation-en
Ign http://packages.treasure-data.com lucid/contrib Translation-en
Get: <span class="synConstant">24</span> http://ubuntutym.u-toyama.ac.jp precise/multiverse Sources <span class="synStatement">[</span><span class="synConstant">155</span> kB<span class="synStatement">]</span>
Get: <span class="synConstant">25</span> http://ubuntutym.u-toyama.ac.jp precise/main amd64 Packages <span class="synStatement">[</span><span class="synConstant">1</span>,<span class="synConstant">273</span> kB<span class="synStatement">]</span>
Get: <span class="synConstant">26</span> http://ubuntutym.u-toyama.ac.jp precise/restricted amd64 Packages <span class="synStatement">[</span><span class="synConstant">8</span>,<span class="synConstant">452</span> B<span class="synStatement">]</span>
Get: <span class="synConstant">27</span> http://ubuntutym.u-toyama.ac.jp precise/universe amd64 Packages <span class="synStatement">[</span><span class="synConstant">4</span>,<span class="synConstant">786</span> kB<span class="synStatement">]</span>
Get: <span class="synConstant">28</span> http://ubuntutym.u-toyama.ac.jp precise/multiverse amd64 Packages <span class="synStatement">[</span><span class="synConstant">119</span> kB<span class="synStatement">]</span>
Get: <span class="synConstant">29</span> http://ubuntutym.u-toyama.ac.jp precise/main i386 Packages <span class="synStatement">[</span><span class="synConstant">1</span>,<span class="synConstant">274</span> kB<span class="synStatement">]</span>
Get: <span class="synConstant">30</span> http://ubuntutym.u-toyama.ac.jp precise/restricted i386 Packages <span class="synStatement">[</span><span class="synConstant">8</span>,<span class="synConstant">431</span> B<span class="synStatement">]</span>
Get: <span class="synConstant">31</span> http://ubuntutym.u-toyama.ac.jp precise/universe i386 Packages <span class="synStatement">[</span><span class="synConstant">4</span>,<span class="synConstant">796</span> kB<span class="synStatement">]</span>
Get: <span class="synConstant">32</span> http://ubuntutym.u-toyama.ac.jp precise/multiverse i386 Packages <span class="synStatement">[</span><span class="synConstant">121</span> kB<span class="synStatement">]</span>
Hit http://ubuntutym.u-toyama.ac.jp precise/main TranslationIndex
Hit http://ubuntutym.u-toyama.ac.jp precise/multiverse TranslationIndex
Hit http://ubuntutym.u-toyama.ac.jp precise/restricted TranslationIndex
Hit http://ubuntutym.u-toyama.ac.jp precise/universe TranslationIndex
Get: <span class="synConstant">33</span> http://ubuntutym.u-toyama.ac.jp precise-updates/main Sources <span class="synStatement">[</span><span class="synConstant">117</span> kB<span class="synStatement">]</span>
Get: <span class="synConstant">34</span> http://ubuntutym.u-toyama.ac.jp precise-updates/restricted Sources <span class="synStatement">[</span><span class="synConstant">1</span>,<span class="synConstant">379</span> B<span class="synStatement">]</span>
Get: <span class="synConstant">35</span> http://ubuntutym.u-toyama.ac.jp precise-updates/universe Sources <span class="synStatement">[</span><span class="synConstant">28</span>.<span class="synConstant">2</span> kB<span class="synStatement">]</span>
Get: <span class="synConstant">36</span> http://ubuntutym.u-toyama.ac.jp precise-updates/multiverse Sources <span class="synStatement">[</span><span class="synConstant">1</span>,<span class="synConstant">058</span> B<span class="synStatement">]</span>
Get: <span class="synConstant">37</span> http://ubuntutym.u-toyama.ac.jp precise-updates/main amd64 Packages <span class="synStatement">[</span><span class="synConstant">297</span> kB<span class="synStatement">]</span>
Get: <span class="synConstant">38</span> http://ubuntutym.u-toyama.ac.jp precise-updates/restricted amd64 Packages <span class="synStatement">[</span><span class="synConstant">2</span>,<span class="synConstant">417</span> B<span class="synStatement">]</span>
Get: <span class="synConstant">39</span> http://ubuntutym.u-toyama.ac.jp precise-updates/universe amd64 Packages <span class="synStatement">[</span><span class="synConstant">81</span>.<span class="synConstant">1</span> kB<span class="synStatement">]</span>
Get: <span class="synConstant">40</span> http://ubuntutym.u-toyama.ac.jp precise-updates/multiverse amd64 Packages <span class="synStatement">[</span><span class="synConstant">1</span>,<span class="synConstant">825</span> B<span class="synStatement">]</span>
Get: <span class="synConstant">41</span> http://ubuntutym.u-toyama.ac.jp precise-updates/main i386 Packages <span class="synStatement">[</span><span class="synConstant">299</span> kB<span class="synStatement">]</span>
Get: <span class="synConstant">42</span> http://ubuntutym.u-toyama.ac.jp precise-updates/restricted i386 Packages <span class="synStatement">[</span><span class="synConstant">2</span>,<span class="synConstant">439</span> B<span class="synStatement">]</span>
Get: <span class="synConstant">43</span> http://ubuntutym.u-toyama.ac.jp precise-updates/universe i386 Packages <span class="synStatement">[</span><span class="synConstant">81</span>.<span class="synConstant">6</span> kB<span class="synStatement">]</span>
Get: <span class="synConstant">44</span> http://ubuntutym.u-toyama.ac.jp precise-updates/multiverse i386 Packages <span class="synStatement">[</span><span class="synConstant">2</span>,<span class="synConstant">049</span> B<span class="synStatement">]</span>
Get: <span class="synConstant">45</span> http://ubuntutym.u-toyama.ac.jp precise-updates/main TranslationIndex <span class="synStatement">[</span><span class="synConstant">74</span> B<span class="synStatement">]</span>
Get: <span class="synConstant">46</span> http://ubuntutym.u-toyama.ac.jp precise-updates/multiverse TranslationIndex <span class="synStatement">[</span><span class="synConstant">71</span> B<span class="synStatement">]</span>
Get: <span class="synConstant">47</span> http://ubuntutym.u-toyama.ac.jp precise-updates/restricted TranslationIndex <span class="synStatement">[</span><span class="synConstant">71</span> B<span class="synStatement">]</span>
Get: <span class="synConstant">48</span> http://ubuntutym.u-toyama.ac.jp precise-updates/universe TranslationIndex <span class="synStatement">[</span><span class="synConstant">73</span> B<span class="synStatement">]</span>
Get: <span class="synConstant">49</span> http://ubuntutym.u-toyama.ac.jp precise-backports/main Sources <span class="synStatement">[</span><span class="synConstant">1</span>,<span class="synConstant">346</span> B<span class="synStatement">]</span>
Get: <span class="synConstant">50</span> http://ubuntutym.u-toyama.ac.jp precise-backports/restricted Sources <span class="synStatement">[</span><span class="synConstant">14</span> B<span class="synStatement">]</span>
Get: <span class="synConstant">51</span> http://ubuntutym.u-toyama.ac.jp precise-backports/universe Sources <span class="synStatement">[</span><span class="synConstant">6</span>,<span class="synConstant">873</span> B<span class="synStatement">]</span>
Get: <span class="synConstant">52</span> http://ubuntutym.u-toyama.ac.jp precise-backports/multiverse Sources <span class="synStatement">[</span><span class="synConstant">1</span>,<span class="synConstant">383</span> B<span class="synStatement">]</span>
Get: <span class="synConstant">53</span> http://ubuntutym.u-toyama.ac.jp precise-backports/main amd64 Packages <span class="synStatement">[</span><span class="synConstant">929</span> B<span class="synStatement">]</span>
Get: <span class="synConstant">54</span> http://ubuntutym.u-toyama.ac.jp precise-backports/restricted amd64 Packages <span class="synStatement">[</span><span class="synConstant">14</span> B<span class="synStatement">]</span>
Get: <span class="synConstant">55</span> http://ubuntutym.u-toyama.ac.jp precise-backports/universe amd64 Packages <span class="synStatement">[</span><span class="synConstant">6</span>,<span class="synConstant">114</span> B<span class="synStatement">]</span>
Get: <span class="synConstant">56</span> http://ubuntutym.u-toyama.ac.jp precise-backports/multiverse amd64 Packages <span class="synStatement">[</span><span class="synConstant">996</span> B<span class="synStatement">]</span>
Get: <span class="synConstant">57</span> http://ubuntutym.u-toyama.ac.jp precise-backports/main i386 Packages <span class="synStatement">[</span><span class="synConstant">929</span> B<span class="synStatement">]</span>
Get: <span class="synConstant">58</span> http://ubuntutym.u-toyama.ac.jp precise-backports/restricted i386 Packages <span class="synStatement">[</span><span class="synConstant">14</span> B<span class="synStatement">]</span>
Get: <span class="synConstant">59</span> http://ubuntutym.u-toyama.ac.jp precise-backports/universe i386 Packages <span class="synStatement">[</span><span class="synConstant">6</span>,<span class="synConstant">117</span> B<span class="synStatement">]</span>
Get: <span class="synConstant">60</span> http://ubuntutym.u-toyama.ac.jp precise-backports/multiverse i386 Packages <span class="synStatement">[</span><span class="synConstant">999</span> B<span class="synStatement">]</span>
Hit http://ubuntutym.u-toyama.ac.jp precise-backports/main TranslationIndex
Hit http://ubuntutym.u-toyama.ac.jp precise-backports/multiverse TranslationIndex
Hit http://ubuntutym.u-toyama.ac.jp precise-backports/restricted TranslationIndex
Hit http://ubuntutym.u-toyama.ac.jp precise-backports/universe TranslationIndex
Hit http://ubuntutym.u-toyama.ac.jp precise/main Translation-ja
Hit http://ubuntutym.u-toyama.ac.jp precise/main Translation-en
Hit http://ubuntutym.u-toyama.ac.jp precise/multiverse Translation-ja
Hit http://ubuntutym.u-toyama.ac.jp precise/multiverse Translation-en
Hit http://ubuntutym.u-toyama.ac.jp precise/restricted Translation-ja
Hit http://ubuntutym.u-toyama.ac.jp precise/restricted Translation-en
Hit http://ubuntutym.u-toyama.ac.jp precise/universe Translation-ja
Hit http://ubuntutym.u-toyama.ac.jp precise/universe Translation-en
Get: <span class="synConstant">61</span> http://ubuntutym.u-toyama.ac.jp precise-updates/main Translation-en <span class="synStatement">[</span><span class="synConstant">136</span> kB<span class="synStatement">]</span>
Hit http://ubuntutym.u-toyama.ac.jp precise-updates/multiverse Translation-en
Hit http://ubuntutym.u-toyama.ac.jp precise-updates/restricted Translation-en
Get: <span class="synConstant">62</span> http://ubuntutym.u-toyama.ac.jp precise-updates/universe Translation-en <span class="synStatement">[</span><span class="synConstant">48</span>.<span class="synConstant">4</span> kB<span class="synStatement">]</span>
Hit http://ubuntutym.u-toyama.ac.jp precise-backports/main Translation-en
Hit http://ubuntutym.u-toyama.ac.jp precise-backports/multiverse Translation-en
Hit http://ubuntutym.u-toyama.ac.jp precise-backports/restricted Translation-en
Hit http://ubuntutym.u-toyama.ac.jp precise-backports/universe Translation-en
Fetched <span class="synConstant">20</span>.<span class="synConstant"></span> MB <span class="synError">in</span> <span class="synConstant">17</span><span class="synStatement">(</span><span class="synConstant">1</span>,<span class="synConstant">155</span> kB/s<span class="synStatement">)</span>
kazu634@fluent-master:/etc/apt$ sudo aptitude <span class="synStatement">install</span> td-agent
The following NEW packages will be installed:
td-agent
<span class="synConstant"></span> packages upgraded, <span class="synConstant">1</span> newly installed, <span class="synConstant"></span> to remove and <span class="synConstant"></span> not upgraded.
Need to get <span class="synConstant"></span> B/<span class="synConstant">12</span>.<span class="synConstant">7</span> MB of archives. After unpacking <span class="synConstant">46</span>.<span class="synConstant">5</span> MB will be used.
Selecting previously unselected package td-agent.
<span class="synStatement">(</span>データベースを読み込んでいます ... 現在 <span class="synConstant">53744</span> 個のファイルとディレクトリがインストールされています。<span class="synStatement">)</span>
<span class="synStatement">(</span>.../td-agent_1.<span class="synConstant">1</span>.<span class="synConstant">7</span>-1_amd64.deb から<span class="synStatement">)</span> td-agent を展開しています...
ureadahead のトリガを処理しています ...
td-agent <span class="synStatement">(</span><span class="synConstant">1</span>.<span class="synConstant">1</span>.<span class="synConstant">7-1</span><span class="synStatement">)</span> を設定しています ...
Installing default conffile /etc/td-agent/td-agent.conf ...
libc-bin のトリガを処理しています ...
ldconfig deferred processing now taking place
</pre>
<p>
設定方法は次回に。
</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/dp/4774151041/?tag=hatena_st1-22&ascsubtag=d-7ibv" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://www.amazon.co.jp/dp/4774151041/?tag=hatena_st1-22&ascsubtag=d-7ibv', '');"><img src="https://images-na.ssl-images-amazon.com/images/I/51fRo%2BvPwUL._SL160_.jpg" class="hatena-asin-detail-image" alt="WEB+DB PRESS Vol.69" title="WEB+DB PRESS Vol.69" /></a></p>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title">
<a href="http://www.amazon.co.jp/dp/4774151041/?tag=hatena_st1-22&ascsubtag=d-7ibv" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://www.amazon.co.jp/dp/4774151041/?tag=hatena_st1-22&ascsubtag=d-7ibv', 'WEB+DB PRESS Vol.69');">WEB+DB PRESS Vol.69</a>
</p>
<ul>
<li>
<span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%C2%E7%C4%CD%B9%B0%B5%AD" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/%C2%E7%C4%CD%B9%B0%B5%AD', '大塚弘記');" class="keyword">大塚弘記</a>,<a href="http://d.hatena.ne.jp/keyword/%C5%CF%CA%D5%BD%A4%BB%CA" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/%C5%CF%CA%D5%BD%A4%BB%CA', '渡辺修司');" class="keyword">渡辺修司</a>,<a href="http://d.hatena.ne.jp/keyword/%C4%E9%C3%D2%C2%E5" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/%C4%E9%C3%D2%C2%E5', '堤智代');" class="keyword">堤智代</a>,<a href="http://d.hatena.ne.jp/keyword/%BF%B9%C5%C4%C1%CF" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/%BF%B9%C5%C4%C1%CF', '森田創');" class="keyword">森田創</a>,<a href="http://d.hatena.ne.jp/keyword/%C3%E6%C5%E7%C1%EF" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/%C3%E6%C5%E7%C1%EF', '中島聡');" class="keyword">中島聡</a>,<a href="http://d.hatena.ne.jp/keyword/A%2DListers" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/A%2DListers', 'A-Listers');" class="keyword">A-Listers</a>,<a href="http://d.hatena.ne.jp/keyword/%A4%CF%A4%DE%A4%C1%A4%E42" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/%A4%CF%A4%DE%A4%C1%A4%E42', 'はまちや2');" class="keyword">はまちや2</a>,<a href="http://d.hatena.ne.jp/keyword/%C0%EE%C5%BA%B5%AE%C0%B8" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/%C0%EE%C5%BA%B5%AE%C0%B8', '川添貴生');" class="keyword">川添貴生</a>,<a href="http://d.hatena.ne.jp/keyword/%B0%E6%BE%E5%C0%BF%B0%EC%CF%BA" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/%B0%E6%BE%E5%C0%BF%B0%EC%CF%BA', '井上誠一郎');" class="keyword">井上誠一郎</a>,<a href="http://d.hatena.ne.jp/keyword/%B6%E1%C6%A3%B1%A7%C3%D2%CF%AF" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/%B6%E1%C6%A3%B1%A7%C3%D2%CF%AF', '近藤宇智朗');" class="keyword">近藤宇智朗</a>,<a href="http://d.hatena.ne.jp/keyword/%A5%D2%A5%CE%A5%B1%A5%F3" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/%A5%D2%A5%CE%A5%B1%A5%F3', 'ヒノケン');" class="keyword">ヒノケン</a>,<a href="http://d.hatena.ne.jp/keyword/%B8%E5%C6%A3%BD%A8%C0%EB" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/%B8%E5%C6%A3%BD%A8%C0%EB', '後藤秀宣');" class="keyword">後藤秀宣</a>,<a href="http://d.hatena.ne.jp/keyword/%BA%B4%C6%A3%C5%B4%CA%BF" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/%BA%B4%C6%A3%C5%B4%CA%BF', '佐藤鉄平');" class="keyword">佐藤鉄平</a>,<a href="http://d.hatena.ne.jp/keyword/mala" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/mala', 'mala');" class="keyword">mala</a>,<a href="http://d.hatena.ne.jp/keyword/%B1%FC%CC%EE%B4%B4%CC%E9" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/%B1%FC%CC%EE%B4%B4%CC%E9', '奥野幹也');" class="keyword">奥野幹也</a>,<a href="http://d.hatena.ne.jp/keyword/%B0%CB%C6%A3%C3%D2%BE%CF" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/%B0%CB%C6%A3%C3%D2%BE%CF', '伊藤智章');" class="keyword">伊藤智章</a>,<a href="http://d.hatena.ne.jp/keyword/WEB%2BDB%20PRESS%CA%D4%BD%B8%C9%F4" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/WEB%2BDB%20PRESS%CA%D4%BD%B8%C9%F4', 'WEB+DB PRESS編集部');" class="keyword">WEB+DB PRESS編集部</a>
</li>
<li>
<span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%B5%BB%BD%D1%C9%BE%CF%C0%BC%D2" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/%B5%BB%BD%D1%C9%BE%CF%C0%BC%D2', '技術評論社');" class="keyword">技術評論社</a>
</li>
<li>
<span class="hatena-asin-detail-label">発売日:</span> 2012/06/23
</li>
<li>
<span class="hatena-asin-detail-label">メディア:</span> 大型本
</li>
<li>
<span class="hatena-asin-detail-label">購入</span>: 13人 <span class="hatena-asin-detail-label">クリック</span>: 143回
</li>
<li>
<a href="http://d.hatena.ne.jp/asin/4774151041" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/asin/4774151041', 'この商品を含むブログ (18件) を見る');" target="_blank">この商品を含むブログ (18件) を見る</a>
</li>
</ul>
</div>
<div class="hatena-asin-detail-foot">
</div>
</div>
</div>

View File

@ -0,0 +1,322 @@
---
title: GaucheでMixi Voiceに投稿する
author: kazu634
date: 1969-12-31
url: /1970/01/01/_4/
wordtwit_post_info:
- 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:5433;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}'
categories:
- gauche
---
<div class="section">
<p>
Gauche で Mixi Voice に投稿できるところまで書きました。まだモジュールにはしていないのですが、とりあえずここにひっそりと書いておきます。
</p>
<h4>
はじめに
</h4>
<p>
Twitter から任意のキーワードにマッチするものだけを Mixi Voice に投稿したい、という希望がありました。Mixi には大学の時のサークル関係の方が多くいて、その人達向けに Runkeeper のつぶやきを見せたかったのです。
</p>
<p>
Mixi Voice の OAuth の取得などに関しては、次のページが詳しかったので、まずはこのページをご覧ください:
</p>
<ul>
<li>
<a href="http://d.hatena.ne.jp/isseium/20110112/1294849747" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/isseium/20110112/1294849747', '先日公開された mixi の Voice API (Graph API ) をブラウザとターミナルで試してみた &#8211; 田舎を感じてみんないい仲');" target="_blank">先日公開された mixi の Voice API (Graph API ) をブラウザとターミナルで試してみた &#8211; 田舎を感じてみんないい仲</a>
</li>
</ul>
<h4>
ソース
</h4>
<p>
つぎのソースを適当な名前で保存してください:
</p>
<pre class="syntax-highlight">
<span class="synSpecial">(</span>use rfc.http<span class="synSpecial">)</span>
<span class="synSpecial">(</span>use rfc.json<span class="synSpecial">)</span>
<span class="synComment">;;; class definition</span>
<span class="synSpecial">(</span>define-class &#60;mixi-token&#62; <span class="synSpecial">()</span>
<span class="synSpecial">((</span>consumer-key :init-keyword :consumer-key
:init-value #f
:accessor consumer-key-of<span class="synSpecial">)</span>
<span class="synSpecial">(</span>consumer-secret :init-keyword :consumer-secret
:init-value #f
:accessor consumer-secret-of<span class="synSpecial">)</span>
<span class="synSpecial">(</span>authorization-code :init-keyword :authorization-code
:init-value #f
:accessor authorization-code-of<span class="synSpecial">)</span>
<span class="synSpecial">(</span>refresh-token :init-keyword :refresh-token
:init-value #f
:accessor refresh-token-of<span class="synSpecial">)</span>
<span class="synSpecial">(</span>access-token :init-keyword :access-token
:init-value #f
:accessor access-token-of<span class="synSpecial">)))</span>
<span class="synComment">;; /* _\|/_</span>
<span class="synComment">;; (o o)</span>
<span class="synComment">;; +----oOO-{_}-OOo--------------+</span>
<span class="synComment">;; |Wrapper macro for HTTP access|</span>
<span class="synComment">;; +----------------------------*/</span>
<span class="synSpecial">(</span>define-macro <span class="synSpecial">(</span>wrap-http http-method proc<span class="synSpecial">)</span>
<span class="synSpecial">(</span><span class="synStatement">let</span> <span class="synSpecial">((</span>g!status <span class="synSpecial">(</span><span class="synStatement">gensym</span><span class="synSpecial">))</span>
<span class="synSpecial">(</span>g!header <span class="synSpecial">(</span><span class="synStatement">gensym</span><span class="synSpecial">))</span>
<span class="synSpecial">(</span>g!body <span class="synSpecial">(</span><span class="synStatement">gensym</span><span class="synSpecial">)))</span>
<span class="synPreProc">`(</span>receive <span class="synSpecial">(</span>,g!status ,g!header ,g!body<span class="synSpecial">)</span>
,http-method
<span class="synSpecial">(</span><span class="synStatement">cond</span>
<span class="synSpecial">((</span><span class="synStatement">equal</span>? <span class="synConstant">&#34;200&#34;</span> ,g!status<span class="synSpecial">)</span> <span class="synSpecial">(</span>,proc ,g!body<span class="synSpecial">))</span>
<span class="synSpecial">(</span>else <span class="synSpecial">(</span><span class="synStatement">print</span> ,g!status ,g!header ,g!body<span class="synSpecial">)))</span><span class="synPreProc">)</span><span class="synSpecial">))</span>
<span class="synSpecial">(</span>define-macro <span class="synSpecial">(</span>wrap-http/debug http-method proc debug-flag<span class="synSpecial">)</span>
<span class="synSpecial">(</span><span class="synStatement">let</span> <span class="synSpecial">((</span>g!status <span class="synSpecial">(</span><span class="synStatement">gensym</span><span class="synSpecial">))</span>
<span class="synSpecial">(</span>g!header <span class="synSpecial">(</span><span class="synStatement">gensym</span><span class="synSpecial">))</span>
<span class="synSpecial">(</span>g!body <span class="synSpecial">(</span><span class="synStatement">gensym</span><span class="synSpecial">)))</span>
<span class="synPreProc">`(</span>receive <span class="synSpecial">(</span>,g!status ,g!header ,g!body<span class="synSpecial">)</span>
,http-method
<span class="synSpecial">(</span><span class="synStatement">cond</span>
<span class="synSpecial">((</span><span class="synStatement">equal</span>? <span class="synConstant">&#34;200&#34;</span> ,g!status<span class="synSpecial">)</span> <span class="synSpecial">(</span>,proc ,g!body<span class="synSpecial">))</span>
<span class="synSpecial">(</span>else ,<span class="synSpecial">(</span><span class="synStatement">if</span> debug-flag
<span class="synPreProc">`(</span>else <span class="synSpecial">(</span><span class="synStatement">print</span> ,g!status ,g!header ,g!body<span class="synSpecial">)</span><span class="synPreProc">)</span>
#f<span class="synSpecial">)))</span><span class="synPreProc">)</span><span class="synSpecial">))</span>
<span class="synComment">;;; &#60;mixi-token&#62;インスタンスから、</span>
<span class="synComment">;;; アクセストークンを取得するためのクエリーを生成</span>
<span class="synSpecial">(</span>define-method compose-access-token-query <span class="synSpecial">((</span>token &#60;mixi-token&#62;<span class="synSpecial">))</span>
<span class="synPreProc">`(</span><span class="synSpecial">(</span><span class="synConstant">&#34;grant_type&#34;</span> <span class="synConstant">&#34;authorization_code&#34;</span><span class="synSpecial">)</span>
<span class="synSpecial">(</span><span class="synConstant">&#34;client_id&#34;</span> ,<span class="synSpecial">(</span>consumer-key-of token<span class="synSpecial">))</span>
<span class="synSpecial">(</span><span class="synConstant">&#34;client_secret&#34;</span> ,<span class="synSpecial">(</span>consumer-secret-of token<span class="synSpecial">))</span>
<span class="synSpecial">(</span><span class="synConstant">&#34;code&#34;</span> ,<span class="synSpecial">(</span>authorization-code-of token<span class="synSpecial">))</span>
<span class="synSpecial">(</span><span class="synConstant">&#34;redirect_uri&#34;</span> <span class="synConstant">&#34;http://mixi.jp/connect_authorize_success.html&#34;</span><span class="synSpecial">)</span><span class="synPreProc">)</span><span class="synSpecial">)</span>
<span class="synComment">;;; アクセストークン取得のための手続き</span>
<span class="synSpecial">(</span>define-method acquire-access-token! <span class="synSpecial">((</span>token &#60;mixi-token&#62;<span class="synSpecial">))</span>
<span class="synSpecial">(</span>wrap-http/debug <span class="synSpecial">(</span>http-post <span class="synConstant">&#34;secure.mixi-platform.com&#34;</span>
<span class="synConstant">&#34;/2/token&#34;</span>
<span class="synSpecial">(</span>compose-access-token-query token<span class="synSpecial">)</span>
:secure #t<span class="synSpecial">)</span>
<span class="synSpecial">(</span><span class="synStatement">lambda</span> <span class="synSpecial">(</span>response<span class="synSpecial">)</span>
<span class="synSpecial">(</span>update-token! response token<span class="synSpecial">))</span>
#f<span class="synSpecial">))</span>
<span class="synComment">;;; &#60;mixi-token&#62;を更新するための手続き</span>
<span class="synSpecial">(</span>define-method update-token! <span class="synSpecial">((</span>response &#60;string&#62;<span class="synSpecial">)</span>
<span class="synSpecial">(</span>mixi-instance &#60;mixi-token&#62;<span class="synSpecial">))</span>
<span class="synSpecial">(</span>define <span class="synSpecial">(</span>refresh-token response<span class="synSpecial">)</span>
<span class="synSpecial">(</span><span class="synStatement">if</span> <span class="synSpecial">(</span><span class="synStatement">equal</span>? #f response<span class="synSpecial">)</span>
response
<span class="synSpecial">(</span><span class="synStatement">cdr</span> <span class="synSpecial">(</span><span class="synStatement">assoc</span> <span class="synConstant">&#34;refresh_token&#34;</span>
<span class="synSpecial">(</span>parse-json-string response<span class="synSpecial">)))))</span>
<span class="synSpecial">(</span>define <span class="synSpecial">(</span>access-token response<span class="synSpecial">)</span>
<span class="synSpecial">(</span><span class="synStatement">if</span> <span class="synSpecial">(</span><span class="synStatement">equal</span>? #f response<span class="synSpecial">)</span>
response
<span class="synSpecial">(</span><span class="synStatement">cdr</span> <span class="synSpecial">(</span><span class="synStatement">assoc</span> <span class="synConstant">&#34;access_token&#34;</span>
<span class="synSpecial">(</span>parse-json-string response<span class="synSpecial">)))))</span>
<span class="synSpecial">(</span><span class="synStatement">set</span>! <span class="synSpecial">(</span>access-token-of mixi-instance<span class="synSpecial">)</span> <span class="synSpecial">(</span>access-token response<span class="synSpecial">))</span>
<span class="synSpecial">(</span><span class="synStatement">set</span>! <span class="synSpecial">(</span>refresh-token-of mixi-instance<span class="synSpecial">)</span> <span class="synSpecial">(</span>refresh-token response<span class="synSpecial">))</span>
mixi-instance<span class="synSpecial">)</span>
<span class="synComment">;;; mixi voiceに投稿するための手続き</span>
<span class="synSpecial">(</span>define-method post-voice <span class="synSpecial">((</span>mixi-instance &#60;mixi-token&#62;<span class="synSpecial">)</span>
<span class="synSpecial">(</span>voice &#60;string&#62;<span class="synSpecial">))</span>
<span class="synSpecial">(</span>define <span class="synSpecial">(</span>post-id response<span class="synSpecial">)</span>
<span class="synSpecial">(</span><span class="synStatement">cdr</span> <span class="synSpecial">(</span><span class="synStatement">assoc</span> <span class="synConstant">&#34;id&#34;</span> <span class="synSpecial">(</span>parse-json-string response<span class="synSpecial">))))</span>
<span class="synSpecial">(</span><span class="synStatement">let</span> <span class="synSpecial">((</span>post-status <span class="synSpecial">(</span>http-compose-query #f <span class="synPreProc">`(</span><span class="synSpecial">(</span>status ,voice<span class="synSpecial">)</span><span class="synPreProc">)</span><span class="synSpecial">))</span>
<span class="synSpecial">(</span>authorization-key <span class="synSpecial">(</span>string-append <span class="synConstant">&#34;OAuth &#34;</span>
<span class="synSpecial">(</span>access-token-of mixi-instance<span class="synSpecial">))))</span>
<span class="synSpecial">(</span>wrap-http/debug <span class="synSpecial">(</span>http-post <span class="synConstant">&#34;api.mixi-platform.com&#34;</span>
<span class="synConstant">&#34;/2/voice/statuses/update&#34;</span>
post-status
:content-type <span class="synConstant">&#34;application/x-www-form-urlencoded&#34;</span>
:Authorization authorization-key<span class="synSpecial">)</span>
post-id
#f<span class="synSpecial">)))</span>
<span class="synComment">;;; OAuth tokenの更新</span>
<span class="synSpecial">(</span>define-method update-access-token! <span class="synSpecial">((</span>mixi-instance &#60;mixi-token&#62;<span class="synSpecial">))</span>
<span class="synSpecial">(</span>define <span class="synSpecial">(</span>token-update! response<span class="synSpecial">)</span>
<span class="synSpecial">(</span>update-token! response mixi-instance<span class="synSpecial">))</span>
<span class="synSpecial">(</span>wrap-http/debug <span class="synSpecial">(</span>http-post <span class="synConstant">&#34;secure.mixi-platform.com&#34;</span>
<span class="synConstant">&#34;/2/token&#34;</span>
<span class="synPreProc">`(</span><span class="synSpecial">(</span><span class="synConstant">&#34;grant_type&#34;</span> <span class="synConstant">&#34;refresh_token&#34;</span><span class="synSpecial">)</span>
<span class="synSpecial">(</span><span class="synConstant">&#34;client_id&#34;</span> ,<span class="synSpecial">(</span>consumer-key-of mixi-instance<span class="synSpecial">))</span>
<span class="synSpecial">(</span><span class="synConstant">&#34;client_secret&#34;</span> ,<span class="synSpecial">(</span>consumer-secret-of mixi-instance<span class="synSpecial">))</span>
<span class="synSpecial">(</span><span class="synConstant">&#34;refresh_token&#34;</span> ,<span class="synSpecial">(</span>refresh-token-of mixi-instance<span class="synSpecial">))</span><span class="synPreProc">)</span>
:secure #t<span class="synSpecial">)</span>
token-update!
#f<span class="synSpecial">))</span>
<span class="synComment">;;; 投稿の削除</span>
<span class="synSpecial">(</span>define-method delete-voice <span class="synSpecial">((</span>mixi-instance &#60;mixi-token&#62;<span class="synSpecial">)</span>
<span class="synSpecial">(</span>id &#60;string&#62;<span class="synSpecial">))</span>
<span class="synSpecial">(</span><span class="synStatement">let</span> <span class="synSpecial">((</span>authorization-key <span class="synSpecial">(</span>string-append <span class="synConstant">&#34;OAuth &#34;</span>
<span class="synSpecial">(</span>access-token-of mixi-instance<span class="synSpecial">)))</span>
<span class="synSpecial">(</span>uri <span class="synSpecial">(</span>string-append <span class="synConstant">&#34;/2/voice/statuses/&#34;</span>
id<span class="synSpecial">)))</span>
<span class="synSpecial">(</span>wrap-http/debug <span class="synSpecial">(</span>http-delete <span class="synConstant">&#34;api.mixi-platform.com&#34;</span>
uri
:Authorization authorization-key<span class="synSpecial">)</span>
<span class="synSpecial">(</span><span class="synStatement">lambda</span> <span class="synSpecial">(</span>response<span class="synSpecial">)</span> #t<span class="synSpecial">)</span>
#f<span class="synSpecial">)))</span>
<span class="synComment">;;; Voice一覧の取得</span>
<span class="synSpecial">(</span>define-method friend-voices <span class="synSpecial">((</span>mixi-instance &#60;mixi-token&#62;<span class="synSpecial">))</span>
<span class="synSpecial">(</span>wrap-http/debug <span class="synSpecial">(</span>http-get <span class="synConstant">&#34;api.mixi-platform.com&#34;</span>
<span class="synPreProc">`(</span><span class="synConstant">&#34;/2/voice/statuses/friends_timeline/&#34;</span>
<span class="synSpecial">(</span>oauth_token ,<span class="synSpecial">(</span>access-token-of mixi-instance<span class="synSpecial">))</span>
<span class="synSpecial">(</span>trim_user <span class="synConstant">&#34;1&#34;</span><span class="synSpecial">)</span>
<span class="synSpecial">(</span>attach_photo <span class="synConstant">&#34;1&#34;</span><span class="synSpecial">)</span><span class="synPreProc">)</span><span class="synSpecial">)</span>
<span class="synSpecial">(</span><span class="synStatement">lambda</span> <span class="synSpecial">(</span>response<span class="synSpecial">)</span> <span class="synSpecial">(</span>parse-json-string response<span class="synSpecial">))</span>
#f<span class="synSpecial">))</span>
</pre>
<h4>
使い方
</h4>
<p>
ソースコードを適当な名前で保存します (たとえば「foo.scm」とか)。その後、loadしてください:
</p>
<pre class="syntax-highlight">
gosh&#62; <span class="synSpecial">(</span><span class="synStatement">load</span> <span class="synConstant">&#34;foo&#34;</span><span class="synSpecial">)</span>
</pre>
<h4>
Consumer key, Consumer secret の取得
</h4>
<p>
参考ページを参考にしてください。
</p>
<h4>
Authorization Code の取得
</h4>
<p>
参考ページを参考にして、次の URL にアクセスしてください:
</p>
<blockquote>
<p>
<a href="https://mixi.jp/connect_authorize.pl?client_id=" onclick="__gaTracker('send', 'event', 'outbound-article', 'https://mixi.jp/connect_authorize.pl?client_id=', 'https://mixi.jp/connect_authorize.pl?client_id=');" target="_blank">https://mixi.jp/connect_authorize.pl?client_id=</a><コンシューマキー>&response_type=code&scope=r_voice%20w_voice&display=pc
</p>
</blockquote>
<p>
[同意する]ボタンをクリックすると、次の URL のページにリダイレクトします:
</p>
<blockquote>
<p>
<a href="http://mixi.jp/connect_authorize_success.html?code=" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://mixi.jp/connect_authorize_success.html?code=', 'http://mixi.jp/connect_authorize_success.html?code=');" target="_blank">http://mixi.jp/connect_authorize_success.html?code=</a><英数字>
</p>
</blockquote>
<p>
上の「<英数字>」の部分が Authorization Code です。
</p>
<h5>
アクセストークンの取得
</h5>
<p>
次のようにしてコードを実行してください:
</p>
<pre class="syntax-highlight">
gosh&#62; <span class="synSpecial">(</span>define <span class="synType">*mixi-obj*</span>
<span class="synSpecial">(</span>make &#60;mixi-token&#62;
:consumer-key <span class="synConstant">&#34;コンシューマーキー&#34;</span>
:consumer-secret <span class="synConstant">&#34;コンシューマーシークレット&#34;</span>
:authorization-code <span class="synConstant">&#34;authorization code&#34;</span><span class="synSpecial">))</span>
<span class="synType">*mixi-obj*</span>
gosh&#62; <span class="synSpecial">(</span>acquire-access-token! <span class="synType">*mixi-obj*</span><span class="synSpecial">)</span>
#&#60;&#60;mixi-token&#62; <span class="synConstant"></span>x<span class="synConstant">1011521e0</span>&#62;
</pre>
<p>
acquire-access-token! 手続きは、リフレッシュトークン・アクセストークンを取得し、 *mixi-obj* を上書きします。
</p>
<h5>
Voice の投稿
</h5>
<p>
アクセストークンを取得してから、次のようにして投稿してください:
</p>
<pre class="syntax-highlight">
gosh&#62; <span class="synSpecial">(</span>post-voice <span class="synType">*mixi-obj*</span> <span class="synConstant">&#34;今日はゆっくりと、だらだら過ごすのだ!&#34;</span><span class="synSpecial">)</span>
<span class="synConstant">&#34;4ncdm68fwm56j-20110619113448&#34;</span>
</pre>
<p>
post-voice 手続きは成功すると、投稿したボイスの ID を戻り値としてます。
</p>
<p>
なお、 取得したアクセストークンの有効期限は 15 分と短いため、期限が切れた場合にはアクセストークンを再取得する必要があります。その場合には、update-access-token!手続きを使えば再取得してくれます:
</p>
<pre class="syntax-highlight">
gosh&#62; <span class="synSpecial">(</span>define <span class="synSpecial">(</span>wrapper-post-voice mixi-instance voice<span class="synSpecial">)</span>
<span class="synSpecial">(</span>let1 result <span class="synSpecial">(</span>post-voice mixi-instance voice<span class="synSpecial">)</span>
<span class="synSpecial">(</span><span class="synStatement">if</span> result
result
<span class="synSpecial">(</span>post-voice <span class="synSpecial">(</span>update-access-token! mixi-instance<span class="synSpecial">)</span> voice<span class="synSpecial">))))</span>
wrapper-post-voice
gosh&#62; <span class="synSpecial">(</span>wrapper-post-voice <span class="synType">*mixi-obj*</span> <span class="synConstant">&#34;test&#34;</span><span class="synSpecial">)</span>
</pre>
<p>
実行結果はこんな感じです:
</p>
<p>
<a href="http://f.hatena.ne.jp/sirocco634/20110619114337" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://f.hatena.ne.jp/sirocco634/20110619114337', '');" class="hatena-fotolife" target="_blank"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/s/sirocco634/20110619/20110619114337.jpg" alt="f:id:sirocco634:20110619114337j:image" title="f:id:sirocco634:20110619114337j:image" class="hatena-fotolife" /></a>
</p>
<h5>
Voice の削除
</h5>
<p>
次のようにすると、 Voice を削除できます。 Voice の ID が必要です。
</p>
<pre class="syntax-highlight">
gosh&#62; <span class="synSpecial">(</span>delete-voice <span class="synType">*mixi-obj*</span> <span class="synConstant">&#34;4ncdm68fwm56j-20110619114011&#34;</span><span class="synSpecial">)</span>
#<span class="synStatement">t</span>
</pre>
<p>
成功すると、#tが戻って来ます。失敗すると#fが戻って来ます。#fが戻ってくるときは、「(update-access-token! *mixi-obj*)」をしてください。
</p>
<h4>
友人の Voice 一覧の取得
</h4>
<p>
次のようにすると、自分と友人を含めた Voice の一覧を取得します。
</p>
<pre class="syntax-highlight">
gosh&#62; <span class="synSpecial">(</span>friend-voices <span class="synType">*mixi-obj*</span><span class="synSpecial">)</span>
</pre>
<p>
勝手に公開するのもどうかと思うので、実行結果は省略します。成功すると、#tが戻って来ます。失敗すると#fが戻って来ます。#fが戻ってくるときは、「(update-access-token! *mixi-obj*)」をしてください。
</p>
<h4>
後は
</h4>
<p>
Twitter から Runkeeper のデータを取得するだけですね。
</p>
</div>

View File

@ -0,0 +1,51 @@
---
title: iPhoneのバッテリーがほしいなー
author: kazu634
date: 1969-12-31
url: /1970/01/01/_5/
wordtwit_post_info:
- 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:5133;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}'
categories:
- diary
---
<div class="section">
<p>
<a href="http://www.ringolab.com/note/daiya/2010/02/iphone2-infinity-ac.html" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://www.ringolab.com/note/daiya/2010/02/iphone2-infinity-ac.html', 'iPhoneたっぷり2回充電 液晶で残量表示するリンケージ Infinity リチウムポリマー内臓 AC充電器 &#8211; 情報考学 Passion For The Future');" target="_blank">iPhoneたっぷり2回充電 液晶で残量表示するリンケージ Infinity リチウムポリマー内臓 AC充電器 &#8211; 情報考学 Passion For The Future</a>」で紹介されていた、これがほしいです:
</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/dp/B002J9HJTU/?tag=hatena_st1-22&ascsubtag=d-7ibv" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://www.amazon.co.jp/dp/B002J9HJTU/?tag=hatena_st1-22&ascsubtag=d-7ibv', '');"><img src="https://images-na.ssl-images-amazon.com/images/I/41DZM7bPIkL._SL160_.jpg" class="hatena-asin-detail-image" alt="リンケージ Infinity リチウムポリマー内蔵 AC充電器 大容量2000mAh 海外対応 USB接続タイプ 携帯電話、iPod、iPhone、mp3プレーヤー、Dsi、DSLite、PSPなどに ブラック ACLD-04B" title="リンケージ Infinity リチウムポリマー内蔵 AC充電器 大容量2000mAh 海外対応 USB接続タイプ 携帯電話、iPod、iPhone、mp3プレーヤー、Dsi、DSLite、PSPなどに ブラック ACLD-04B" /></a></p>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title">
<a href="http://www.amazon.co.jp/dp/B002J9HJTU/?tag=hatena_st1-22&ascsubtag=d-7ibv" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://www.amazon.co.jp/dp/B002J9HJTU/?tag=hatena_st1-22&ascsubtag=d-7ibv', 'リンケージ Infinity リチウムポリマー内蔵 AC充電器 大容量2000mAh 海外対応 USB接続タイプ 携帯電話、iPod、iPhone、mp3プレーヤー、Dsi、DSLite、PSPなどに ブラック ACLD-04B');">リンケージ Infinity リチウムポリマー内蔵 AC充電器 大容量2000mAh 海外対応 USB接続タイプ 携帯電話、iPod、iPhone、mp3プレーヤー、Dsi、DSLite、PSPなどに ブラック ACLD-04B</a>
</p>
<ul>
<li>
<span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%EA%A5%F3%A5%B1%A1%BC%A5%B8" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/%A5%EA%A5%F3%A5%B1%A1%BC%A5%B8', 'リンケージ');" class="keyword">リンケージ</a>
</li>
<li>
<span class="hatena-asin-detail-label">発売日:</span> 2009/07/27
</li>
<li>
<span class="hatena-asin-detail-label">メディア:</span> エレクトロニクス
</li>
<li>
<span class="hatena-asin-detail-label">購入</span>: 1人 <span class="hatena-asin-detail-label">クリック</span>: 48回
</li>
<li>
<a href="http://d.hatena.ne.jp/asin/B002J9HJTU" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/asin/B002J9HJTU', 'この商品を含むブログ (4件) を見る');" target="_blank">この商品を含むブログ (4件) を見る</a>
</li>
</ul>
</div>
<div class="hatena-asin-detail-foot">
</div>
</div>
<p>
最近は iPhone のバッテリーの減りが早いので、こういうのがあるとうれしいんです。
</p>
</div>

View File

@ -0,0 +1,17 @@
---
title: King Solomons Mines読了
author: kazu634
date: 1969-12-31
url: /1970/01/01/_6/
wordtwit_post_info:
- 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:3331;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}'
categories:
- 修論
- 英文学
---
<div class="section">
<p>
 <a href="http://d.hatena.ne.jp/asin/0192834851" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/asin/0192834851', 'King Solomons Mines');">King Solomons Mines</a>を読了しました。思えば長い道のりでしたが、なんとかなりました。引用は疲れ果てているので、明日。
</p>
</div>

View File

@ -0,0 +1,108 @@
---
title: Numberからの引用
author: kazu634
date: 1969-12-31
url: /1970/01/01/_7/
wordtwit_post_info:
- 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:5017;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}'
categories:
- メモ
---
<div class="section">
<blockquote>
<ul>
<li>
でも周囲がやめろ、と言えば言うほど反対に行くっていう、あつい心の持ち主だからね、ダルビッシュは。意気に感じるというか。これはスポーツの世界のいいところだ。政治、音楽の世界では意気に感じることなんてまずない。でもスポーツ界にはなくてはならないものだし、これはもう男だけに通じるものなんだ。(江夏豊 on ダルビッシュ)
</li>
</ul>
</blockquote>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/dp/B002YYPLO0/?tag=hatena_st1-22&ascsubtag=d-7ibv" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://www.amazon.co.jp/dp/B002YYPLO0/?tag=hatena_st1-22&ascsubtag=d-7ibv', '');"><img src="https://images-na.ssl-images-amazon.com/images/I/51nT6Wd%2B-jL._SL160_.jpg" class="hatena-asin-detail-image" alt="Sports Graphic Number (スポーツ・グラフィック ナンバー) 2009年 12/24号 [雑誌]" title="Sports Graphic Number (スポーツ・グラフィック ナンバー) 2009年 12/24号 [雑誌]" /></a></p>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title">
<a href="http://www.amazon.co.jp/dp/B002YYPLO0/?tag=hatena_st1-22&ascsubtag=d-7ibv" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://www.amazon.co.jp/dp/B002YYPLO0/?tag=hatena_st1-22&ascsubtag=d-7ibv', 'Sports Graphic Number (スポーツ・グラフィック ナンバー) 2009年 12/24号 [雑誌]');">Sports Graphic Number (スポーツ・グラフィック ナンバー) 2009年 12/24号 [雑誌]</a>
</p>
<ul>
<li>
<span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%CA%B8%E9%BA%BD%D5%BD%A9" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/%CA%B8%E9%BA%BD%D5%BD%A9', '文藝春秋');" class="keyword">文藝春秋</a>
</li>
<li>
<span class="hatena-asin-detail-label">発売日:</span> 2009/12/10
</li>
<li>
<span class="hatena-asin-detail-label">メディア:</span> 雑誌
</li>
<li>
<span class="hatena-asin-detail-label">クリック</span>: 22回
</li>
<li>
<a href="http://d.hatena.ne.jp/asin/B002YYPLO0" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/asin/B002YYPLO0', 'この商品を含むブログ (5件) を見る');" target="_blank">この商品を含むブログ (5件) を見る</a>
</li>
</ul>
</div>
<div class="hatena-asin-detail-foot">
</div>
</div>
<blockquote>
<ul>
<li>
賞金王というのがいったい何なのか、よくわからないんです。アメリカの試合に出られるとか、凄いことなのはわかるんですけど、現実感がないというか。プロになるにしても、高校を卒業してテストを受けて、段階を踏んでいくものとばかり思っていました。うちは普通のサラリーマンの家庭だし、主人も私も普通の家族で生まれ育って、遼が特別な星の下に生まれたなんて思ったこともないんです。 (石川遼の母)
</li>
</ul>
<ul>
<li>
あれから主人は、遼が掲げた夢を手伝うなら本気で取り組もうと思ったんでしょうね。今思えば主人を責めたことは悪かったなと思います。それまでは残業続きで朝早く夜も遅かった人が、定時に帰り車で遼のいる練習場に向かうようになった。仕事を捨てたというわけではないんですけど、仕事を減らして、遼に重点を変えたのかな、と。当時はあまり気にしてはいなかったんですけど、今思うと、普通はそこまではできないですよね。 (石川遼の母)
</li>
</ul>
<ul>
<li>
子供が国会中継の首相演説を見て、将来、総理大臣になりたいというようなものです。そのときは、絶対に無理だと思いましたよ。今でも、日本人が優勝するのは、99.9% 無理だと思う。だけど・・・子供の夢に対して、そんなの無理だという親はいないんじゃないですか。じゃあ頑張ろうなと。真剣に向き合おう、と。 (石川遼の父)
</li>
</ul>
<ul>
<li>
幼い遼がマスターズで勝ちたいと言った。僕は朝の5時から車のエンジンをかけて、寒かろうが、雨が降ろうが、子供をゴルフに引っ張っていく。周囲からは、あの家族バカじゃないの異様だよね、と思われたでしょう。でも、やってる本人が充実していればいいんじゃないですか。無理だと思っても、やってみなければわからない。たとえ失敗しても、衛生堂々と戦ってその場でぶっ倒れた方が清々しい。勝つことが目的じゃない。戦うことが目的なんだ。それが男の人生なんだと。僕は遼にゴルフは教えてませんが、どんなにつらくても自分の立てた目標に責任を持って生きていくんだ、ということは教えたかもしれない・・・まぁ、『老人と海』の世界なのかもしれませんが。 (石川遼の父)
</li>
</ul>
</blockquote>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/dp/B002WPDBQG/?tag=hatena_st1-22&ascsubtag=d-7ibv" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://www.amazon.co.jp/dp/B002WPDBQG/?tag=hatena_st1-22&ascsubtag=d-7ibv', '');"><img src="https://images-na.ssl-images-amazon.com/images/I/51YrTO3ANjL._SL160_.jpg" class="hatena-asin-detail-image" alt="Sports Graphic Number (スポーツ・グラフィック ナンバー) 2009年 12/10号 [雑誌]" title="Sports Graphic Number (スポーツ・グラフィック ナンバー) 2009年 12/10号 [雑誌]" /></a></p>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title">
<a href="http://www.amazon.co.jp/dp/B002WPDBQG/?tag=hatena_st1-22&ascsubtag=d-7ibv" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://www.amazon.co.jp/dp/B002WPDBQG/?tag=hatena_st1-22&ascsubtag=d-7ibv', 'Sports Graphic Number (スポーツ・グラフィック ナンバー) 2009年 12/10号 [雑誌]');">Sports Graphic Number (スポーツ・グラフィック ナンバー) 2009年 12/10号 [雑誌]</a>
</p>
<ul>
<li>
<span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%CA%B8%E9%BA%BD%D5%BD%A9" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/%CA%B8%E9%BA%BD%D5%BD%A9', '文藝春秋');" class="keyword">文藝春秋</a>
</li>
<li>
<span class="hatena-asin-detail-label">発売日:</span> 2009/11/26
</li>
<li>
<span class="hatena-asin-detail-label">メディア:</span> 雑誌
</li>
<li>
<span class="hatena-asin-detail-label">クリック</span>: 9回
</li>
<li>
<a href="http://d.hatena.ne.jp/asin/B002WPDBQG" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/asin/B002WPDBQG', 'この商品を含むブログ (5件) を見る');" target="_blank">この商品を含むブログ (5件) を見る</a>
</li>
</ul>
</div>
<div class="hatena-asin-detail-foot">
</div>
</div>
</div>

View File

@ -0,0 +1,66 @@
---
title: SAF1についての記事
author: kazu634
date: 1969-12-31
url: /1970/01/01/_8/
wordtwit_post_info:
- 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:4097;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}'
categories:
- メモ
---
<div class="section">
<ul>
<li>
Little team with a big heart.
</li>
<li>
「自分のことだけを考えるなら、チームがつぶれたっていい。でも、一緒に頑張ってきたみんなが、明日から仕事を失うようなことだけは避けなきゃいけない。経営者としていちばん考えなきゃいけないのは、そこでしょ?」
</li>
<li>
「あまりに寂しい。F1は、小さなチームを必要としているのに。あんなに素晴らしい人たちが去っていくことになるなんて…悲しいのは、日本のファンだけじゃない」
</li>
<li>
「スーパーアグリの消滅は、F1に冷たい水を浴びせるもの」
</li>
<li>
「SAF1は、F1の一つのあり方を示したと思う。昔あった無数のチームと違って、大きな情熱を持って真剣に仕事をした。小さな資金で多くをもたらしたのに、残念だね」
</li>
</ul>
<p>
<center>
</center>
</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/dp/B0019EUKQU/?tag=hatena_st1-22&ascsubtag=d-7ibv" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://www.amazon.co.jp/dp/B0019EUKQU/?tag=hatena_st1-22&ascsubtag=d-7ibv', '');"><img src="https://images-na.ssl-images-amazon.com/images/I/51TSXoJxrlL._SL160_.jpg" class="hatena-asin-detail-image" alt="Sports Graphic Number (スポーツ・グラフィック ナンバー) 2008年 6/5号 [雑誌]" title="Sports Graphic Number (スポーツ・グラフィック ナンバー) 2008年 6/5号 [雑誌]" /></a></p>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title">
<a href="http://www.amazon.co.jp/dp/B0019EUKQU/?tag=hatena_st1-22&ascsubtag=d-7ibv" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://www.amazon.co.jp/dp/B0019EUKQU/?tag=hatena_st1-22&ascsubtag=d-7ibv', 'Sports Graphic Number (スポーツ・グラフィック ナンバー) 2008年 6/5号 [雑誌]');">Sports Graphic Number (スポーツ・グラフィック ナンバー) 2008年 6/5号 [雑誌]</a>
</p>