Outputz で自分のランキングが分かるようになりました
Outputz の日別のページに自分のランキングが表示されるようになりました。
日々のアウトプットの励みにご利用ください。
また年末は今年のふりかえりとして自分の Outputz を月単位で見てみるのも面白いかもしれません。
みなさま良いお年をお迎えください。
Outputz の日別のページに自分のランキングが表示されるようになりました。
日々のアウトプットの励みにご利用ください。
また年末は今年のふりかえりとして自分の Outputz を月単位で見てみるのも面白いかもしれません。
みなさま良いお年をお迎えください。
Outputz API の URI パラメータに svn:// などが使えるようになりました。
以前は http のみを許可していましたが、他のURIも使いたいというご要望がありましたので変更しました。
許可される URI は具体的には Ruby で URI.parse(uri).host が nil ではない uri です。
ご要望いただきましたユーザー様ありがとうございました。
11/29のサイボウズ本社の新卒採用説明会で講演することになりました。
あわせて当日の座談会で学生さんの質問に本音で答えたりする予定です。
別日程で、社長の畑、奥(id:kazuhooku)の講演もあります。
ご興味のある方はどうぞ申し込んでみてください。
Outputz にアウトプットを投稿することのできる API を公開しました。
ユーザーの皆さんから Firefox 以外でのアクティビティも Outputz に記録したいとのご要望を頂いていましたが、Outputz API を利用すれば可能になります。
投稿が成功した場合は HTTP ステータス 200 が返ります。
エラーの場合はエラーに応じて、400, 500 などのステータスがエラーメッセージとともに返されます。
require 'net/http'uri = ARGV.shift
size = ARGV.shift
key = ARGV.shiftNet::HTTP.start('outputz.com', 80) {|http|
response = http.post('/api/post', "key=#{URI.encode(key)}&uri=#{URI.encode(uri)}&size=#{URI.encode(size)}&key=#{URI.encode(key)}")
puts response.body
puts response.code
}
コマンドライン引数に uri, size, key の順で渡せば投稿する事が出来ます。
(use rfc.http)
(use rfc.uri)(define (main args)
(receive (status header body)
(http-post "outputz.com"
"/api/post"
(apply format "uri=~a&size=~d&key=~a" (map uri-encode-string (cdr args))))
(format #t "~a: ~a\n" status body)))
上記のスクリプト(post_outputs_by_api.rb)を利用して svn ci 直前に以下のコマンドを走らせる事で、おおざっぱなコード量を記録する事が出来ます。
ruby post_outputs_by_api.rb '適当なURI'\ `svn diff --diff-cmd /usr/bin/diff -x -EbwBu |wc -c` '復活の呪文'
API の利用は特に制限はありませんが、悪意のあるアクセスや過度に負荷のかかるものはアクセスを禁止する場合もあります。ご注意ください。
投稿アプリなどは、固有のユーザーエージェントを適切に設定していただけると助かります。
ユーザーの皆さんからご要望の多かった、はてなダイアリーの「その場編集機能」に Outputz アドオンが対応しました。
Firefox の 「アドオン」 - 「更新を確認」 から Outputz アドオンを更新する事で利用可能になります。
powered by Outputz.
本日 Outputz というサービスを公開しました。
Outputz は「自分がインターネットにどれくらいアウトプットしているか?」を自動的に記録し、その結果をグラフで見ることのできるサービスです。
Outputz に行き、Firefox アドオンをインストールしてください。やることはこれだけです。あとは自動的に Outputz があなたのインターネットへのアウトプット量を記録してくれます。
アドオンをインストール後、ステータスバーに以下のようなアイコンが表示されます。クリックすると今までのアウトプットの集計を見られます。
どのサイトに多くアウトプットしているか?、どの時間帯が多いか?、アウトプットの量を文学作品で例えるとどれくらいか?など多彩な集計情報が提供されます。
私たちの生活において、インターネット利用の比重は高くなってきています。Google や Yahoo で検索をし、ブログを書き、Twitterや Wassr でつぶやき、mixi で日記を書くなど。
毎日毎日キーボードを叩き、文字を入力しインターネットへ文字列を送り続けています。これらの日々のアウトプットを積み重ねてみたら、実は馬鹿にできない量なのではないか?そう思い、Outputz を作りました。
週末、月末、年末などの節目に Outputz でアウトプット量を見て日々の生活を振り返ってみると、面白い発見があるかもしれません。
Outputz のグラフは、ブログに貼りつけることができます。タグをコピーしてブログに貼りつけてください。
多くのみなさんがアウトプットを公開してくだされば、その人をその人たらしめているアウトプットの傾向が分かって面白いかもしれません。
例えばアルファブロガーの方々は、どういうアウトプットをしているのか?などはとても興味がありますよね。
グラフはその時点でのアウトプットを記録したもので、自動的に更新される事はありません。
設定タブから「復活の呪文」機能を利用して共有する事が可能です。
Outputz は英語版もあります。ブラウザの言語設定を日本語以外にし、アクセスすると英語版になります。
もし海外にお友達がいたらぜひ紹介してみてください。インターネットへのアウトプットという概念は国を問わず理解してもらえると思います。
Outputz アドオンはOutputz サーバーに
のみを送信し記録します。それ以外の情報(たとえば入力されたテキストデータ)は送信・記録されません。
Outputz が日々の生活のはげみになったり、新しい発見を提供できればうれしいです。
Mosh 0.0.7 をリリースしました。
R6RS のUnicode, Bytevector, Sorting などが実装されました。
Mosh の起動速度や g++ でのコンパイル速度が大幅に向上しました。
また以前から -b オプションでサポートされていた R6RS モードがデフォルトとなり -b オプションは廃止されました。
今後 Mosh は起動時から R6RS モードとなります。
追加、変更点の詳細は以下の通りです。
ライブラリの load path の仕組みが実装され、デフォルトでは ./lib や /usr/local/share/mosh/lib などが対象となります。
またライブラリの serialization を実験的にサポートしました。
scripts/pre-compile-r6rs.scm でライブラリの serialization が可能です。
UTF8/UTF16/UTF32 の取り扱いや、文字列の比較、正規化、upcase など種々の Unicode 手続きが実装されました。
Scheme からバイト列を扱う Bytevector の手続きの多くが実装されました。
バイト列からエンディアンやサイズを指定してデータを取り出したり、格納したりといったことが可能です。
SRFI-97 で提案されているように以下のような形式で SRFI ライブラリのロードが出来るようになりました。
mosh>(import (srfi :98))#<unspecified>
mosh>(get-environment-variable "HOME")
"/Users/taro"
R6RS の REPL が追加されました。 mosh で起動します。
(import ...) なども利用できます。
なお現時点での制限として入力は必ず一行単位でパースされます。
再帰などでスタックオーバーフローした場合に、ヒープが許す限りスタックが自動で伸長されるようになりました。
Fasl (Fast loading)のサポートにより
が実現されました。
多彩な数値表現のパースを見据えて、read が完全に書き換えられました。
以前は Gauche の read.c をベースにしていましたが、bison/re2c ベースに変更となりました。
read 速度も向上しています。
psyntax ライブラリが最新版に置き換えられました。
リリース版ではビルド時に Gauche が不要になりました。
今回のリリースまでに多くの方のアドバイス、不具合報告をいただきました。
みなさんありがとうございました。
不具合報告までお願いします。
もし面倒であれば、ここのコメント欄に書いていただくのでもかまいません。
Mosh 0.0.6 をリリースしました。
R6RS のエラーシステムの多くが実装され、より柔軟にエラー処理が書けるようになりました。
例えば (car 3) のようにエラーが発生しそうな場合、guard で囲むことにより
(import (rnrs))(guard
[con
[(message-condition? con)
(display (condition-message con))]]
(car 3))
例外をキャッチすることができます。
また guard で囲まない場合はデフォルトの例外ハンドラにより以下のようなエラーが表示されます。
Exception:
Unhandled exceptionCondition components:
1. &assertion
2. &who: car3. &message: "pair required"
4. &irritants: (3)
また本リリースでR6RSが要求する Hashtables、Conditions、Enumerations、List utilities 多くの機能が実装されました。
追加、変更点の詳細は以下の通りです。
「R6RS モード(-b オプション)」の起動が大幅に速くなりました。
ハッシュテーブルを利用するための手続きがすべて実装されました。
使用例
(import (rnrs))(let ([hashtable (make-eq-hashtable)])
(hashtable-set! hashtable 'red 'apple)
(display (hashtable-ref hashtable 'red)));; => apple
R6RS Hastables では equivalence function と hash function を自分で定義し独自のハッシュテーブルを作成することもできます。
詳細な仕様はR6RS 13.Hashtablesをご覧ください。
以下のように構造体を利用することができます。
(import (rnrs))(define-record-type (point make-point point?)
(fields (mutable x)(immutable y)))
(let ([p (make-point 3 4)])
(display (point-x p))) ; => 3
構造体は継承をすることもできます。詳細な使い方は6.Recordsをご覧ください。
例外とコンディションの仕組みが実装されました。
これにより
といったことが安全に行えるようになりました。
詳細な使い方は7.Exceptions and conditionsをご覧下さい。
今回のリリースまでに多くの方のアドバイス、不具合報告をいただきました。
みなさんありがとうございました。
不具合報告までお願いします。
もし面倒であれば、ここのコメント欄に書いていただくのでもかまいません。
8/30 のLL Futureにて「LL で未来を発明する」セッションにて話します。
私以外のメンバーが
と豪華すぎて緊張しますが、言語処理系を作るという立場から面白い話ができればと思っています。