トップ 最新 追記

ヨタの日々

2001|08|09|10|11|12|
2002|01|02|03|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|12|
2024|01|02|03|04|05|06|07|08|09|10|11|

2013-03-01 :-(

_ 読書メーター

2013年2月の読書メーター 読んだ本の数:2冊 読んだページ数:746ページ ナイス数:7ナイス 感情表現辞典感情表現辞典感想 感情を過去の作家たちがどのように表現しているか。など。電子化されてないんだろか 読了日:2月24日 著者:
ワンクリック―ジェフ・ベゾス率いるAmazonの隆盛ワンクリック―ジェフ・ベゾス率いるAmazonの隆盛感想 本書をどこで知ったのか忘れたんだが、読んでみたらスタートアップの手本だった。始めは小さく、顧客を重視、方向転換、拡大などと書いてあり、リーンスタートアップやRunning Leanで読んだとおりのことが書いてあった。スタートアップの事例として読んでおくと面白い。しかし最初の資金調達というか儲けを度外視するのはたぶん真似しちゃイカンのだろうなあ 読了日:2月11日 著者:リチャード・ブラント
読書メーター

_ 午前

0550 起床

0830 検討

_ 午後

1300 検討

1720 退勤

_

1900 リーンスタートアップ

2030 メール投げたり

2130 飯

2230 翻訳

_ [NetBSD][kyua][ATF][テスト][翻訳]NetBSD Blog - Initial Kyua import done初めての Kyua 取り込み終了

March 01, 2013 posted by Julio Merino

I am very happy to announce that the initial import of Kyua into the NetBSD source tree is complete! I am sure there are some rough edges and here is where you come into play.

Kyua の初めての NetBSD ソースツリー取り込み完了について報告できることを嬉しく思います。多少 荒削りな部分があるので、みなさん遊んでね。

First of all, let me clarify that all the integration changes are gated by the MKKYUA build setting, which still defaults to no. Unless you explicitly set MKKYUA=yes in /etc/mk.conf or in the build.sh command line, you will not get a system with Kyua. However, once you set that flag, you will transition to the full new setup:

最初に、MKKYUA ビルド設定によるすべてのゲートの統合変更を明確にしましょう。デフォルトは no です。明示的に MKKYUA=yes を /etc/mk.conf に設定するか、buld.sh コマンドラインに指定しない場合、Kyua システムは使えません。ただし、一度そのフラグを設定すると、完全な新しいセットアップに移行します

  • Kyua will be installed as /usr/bin/kyua. See kyua(1) to get started.
  • Kyua は /usr/bin/kyua にインストールされる。 kyua(1) を読んで使いはじめよう。
  • The old atf-run and atf-report tools will become compatibility wrappers. These should be a reasonable drop-in replacement for most use cases, but they are probably not perfect.
  • 古い atf-run と atf-report ツールは互換性を保つためのラッパーになる。これらはほとんどの場合 正しく置き換えられるはずだが、完璧ではない。
  • Your /usr/tests tree will be populated by a bunch of Kyuafiles.

/usr/tests ツリーには Kyuafiles のファイルが設置される。

So what's new compared to the ATF tools? Here are some highlights:

それで ATF と比べて何が新しいの? 要点をいくつか紹介します。

  • Ability to write and run ATF-less tests. It has been a common desire around here to develop test programs that do not rely on the ATF libraries. With this change, this becomes possible. See kyuafile(5) for details.
  • ATF 不要のテストを記述し、実行できる。それは ATFのライブラリに依存しないテストプログラムを開発するための共通の願いであった。この変更により、これが可能となる。詳細については kyuafile (5) を参照。
  • Direct HTML report generation. There is no need to set up a complex XML toolchain any more to convert the ATF test reports into HTML pages. Kyua can generate plain HTML directly, so it will be feasible to serve such content straight from NetBSD's built-in httpd.
  • 直接 HTML レポート作成。ATF のテストレポートを HTML ページに変換するために、ややこしい XML ツールチェインをセットアップする必要はない。Kyua が直接プレーンな HTML を生成するので、NetBSD の組み込みの httpd から直接 レポートを提供することができる。
  • Historical data. As seen in the various test beds that have appeared around ATF, there is a desire to maintain historical data of the test results. Kyua does that natively, by recording the results of the execution in a SQLite database. Reports can later be extracted from this database. There is still a lot of room for improvement here.
  • 履歴データ。 ATF の周りに登場した様々なテストベッドに見られるように、テスト結果の履歴データを維持することが望まれている。Kyua は、SQLite データベース内の実行結果を記録することにより、ネイティブにそれを行う。レポートは後ほど このデータベースから抽出することができる。改善の余地はまだある。
  • More flexible metadata and configuration. While this does not provide a real advantage today, as soon as the old atf-run and atf-report tools are gone we can trivially fix some long-standing issues (e.g. the inability to customize test deadlines).

より柔軟なメタデータと設定。今日では本当の利点をもたらさないので、とっとと古い atf-run および atf-report ツールを削除したので、いくつか判明している長年の問題 (例えば、テストの締め切りをカスタマイズすることができない) を修正できる。

  • Less complexity during test case execution. As you may have noticed over the years, the code in atf-run to capture the output of tests and deal with interrupts is not particularly robust. There have been several problems in this area, and I'm not convinced that they are all fixed. The new code works in a different manner and has been more carefully thought around these edges.
  • テストケースの実行時の少ない複雑さ。長年のことでお気づきかもしれませんが、atf-run 内のコードは割り込みを用いたテストと出力をキャプチャすることは、特に堅牢ではない。この部分にいくつかの問題があり、私はそれらがすべて修正されていたとは思っていない。新しいコードは異なる方法で動作し、より慎重にこれらの粗雑に取り組んだ。
  • Independent testers. The code that implements the isolation of test cases and their controlled execution has been split into a set of "testers" that live in /usr/libexec/kyua-*-tester. These tools provide scriptable interfaces to interact with tests, with the idea that the kyua(1) frontend should end up being pretty straightforward. Should you want to write your own trivial script to run tests without kyua(1), you could pretty easily do that by interacting with the testers directly.
  • 独立したテスター。テストケースとその制御された実行 {?????} を実装した独立したコードは、/usr/libexec/kyua-*tester の "testers" のセットに分割された。これらのツールはテストと対話するためのスクリプト可能なインターフェイスを提供する。kyua(1) フロントエンドは非常に簡単にしておくべきである、という考えである。kyua(1) なしでテストを実行するには、あなた自身のいつものスクリプトを記述する必要がある。直接テスターと対話することによって、かなり簡単にそれを行うことができる。

How can you help? Easy. Just rebuild your system with MKKYUA=yes, read through kyua(1), start using it to stress-test your system and report any problems you may encounter!

どのように助けることができますか? 簡単です。MKKYUA=yes にしてシステムを再構築するだけです。kyua(1) を読みましょう。システムをストレステストするためにそれを使用して起動すると、遭遇した問題を報告 できるよ!

My immediate next steps include addressing your feedback and working with our major test runners to add support to their systems to use the new tools (for example, change anita to support running tests with kyua(1)).

私の直近の次の作業は、あなたのフィードバックへ対応し、新しいツールを使用するために私達の主要なテストランナーをシステムのサポートを追加する作業などがあります (たとえば、kyua(1) でのテストをサポートするために anita を変更します)。


2013-03-02 :-)

_ 午前

0930 起床

1030 おひる。スパゲティ

1100 アニメ消化

_ 午後

1300 買い物

1400 散歩 && 強風によりいろいろ倒れるなどしていた

1500 アニメ消化

IMG_1152

_

1700 読書

2100 飯。陳さんちのホイコーロー 鶏胸肉でやってみた

2200 読書


2013-03-03 :-)

_ 午前

0930 起床 && 部屋掃除

_ 午後

1200 おひる。わさび蕎麦

1400 よみうりランド

_

1700 買い物

1800 ビデオ消化

1930 ぐったり

2130 飯。きすけの牛たん

_ よみうりランドの梅を見てきた

よみうりランドは溝口肇 目当てで行った情熱大陸ライブ以来 10 年ぶり [ 20030810#p03 ]

しかし時期尚早だったようだ。来週が温暖らしいので来週かなあ。

IMG_1162

IMG_1164

IMG_1169

隣の ジャイアンツ球場 で試合をやっているようなので見てきた(入場無料)。春季教育リーグの日本ハム vs ジャイアンツらしい。

球場に到着したときに 8 回だったんだが、3 回に大谷がタイムリーやってたとか ( 【日本ハム】大谷が教育Lでプロ初打点 - プロ野球ニュース : nikkansports.com )

IMG_1172

_ [ruby][rbenv]rbenv をインストールしてみた

環境

% which ruby
/usr/pkg/bin/ruby
% /usr/pkg/bin/ruby --version
ruby 1.9.3p327 (2012-11-10 revision 37606) [i486-netbsdelf]
% uname -a
NetBSD mogu.area51.gr.jp 6.0 NetBSD 6.0 (MYKERNEL) #1: Mon Dec 24 20:27:02 JST 2012  root@mogu.area51.gr.jp:/usr/obj/sys/arch/i386/compile/MYKERNEL i386

参考

rbenvで複数のバージョンのrubyを使用する環境を整える - memo.yomukaku.net

実施

git clone git://github.com/sstephenson/rbenv.git ~/.rbenv

PATH に $HOME/.rbenv/bin:$PATH を追加。既存の $PATH の前に追加しないとたぶん shims の仕組みとか働かないんだよね。

.zshrcにeval "$(rbenv init -)"を追加

つづき

git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

インストールしてみる

md5 が 「q のオプション知らね」などと言っているし configure が「Cコンパイラ見つかんね」と言っているし。

% rbenv install 1.9.3-p327
md5: unknown option -- q
usage: cksum [-n] [-a algorithm [-ptx] [-s string]] [-o 1|2]
             [file ... | -c [-w] [sumfile]]
       sum [-n] [-a algorithm [-ptx] [-s string]] [-o 1|2]
           [file ... | -c [-w] [sumfile]]
       md2 [-nptx] [-s string] [file ... | -c [-w] [sumfile]]
       md4 [-nptx] [-s string] [file ... | -c [-w] [sumfile]]
       md5 [-nptx] [-s string] [file ... | -c [-w] [sumfile]]
       rmd160 [-nptx] [-s string] [file ... | -c [-w] [sumfile]]
       sha1 [-nptx] [-s string] [file ... | -c [-w] [sumfile]]
Downloading yaml-0.1.4.tar.gz...
-> http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz
Installing yaml-0.1.4...
Installed yaml-0.1.4 to /home/rin/.rbenv/versions/1.9.3-p327

Downloading ruby-1.9.3-p327.tar.gz...
-> http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p327.tar.gz
Installing ruby-1.9.3-p327...

BUILD FAILED

Inspect or clean up the working tree at /tmp/ruby-build.20130303224428.1022
Results logged to /tmp/ruby-build.20130303224428.1022.log

Last 10 log lines:
ruby-1.9.3-p327/golf_prelude.c
/tmp/ruby-build.20130303224428.1022/ruby-1.9.3-p327 /tmp/ruby-build.20130303224428.1022 ~
checking build system type... i386-unknown-netbsdelf6.0
checking host system type... i386-unknown-netbsdelf6.0
checking target system type... i386-unknown-netbsdelf6.0
checking for gcc... gcc
checking whether the C compiler works... no
configure: error: in `/tmp/ruby-build.20130303224428.1022/ruby-1.9.3-p327':
configure: error: C compiler cannot create executables
See `config.log' for more details

/tmp/ruby-build.20130303224428.1022.log を眺めるとライブラリはインストールしたと言ってるんだが

Libraries have been installed in:
   /home/rin/.rbenv/versions/1.9.3-p327/lib

無いし

% ls -l ~/.rbenv/versions
total 0

rbenv の issue にそれっぽいものが見つからなかったんだが、ruby-build のほうにあった。

configure: error: C compiler cannot create executables · Issue #319 - sstephenson/ruby-build

You can work around this error by running CC=gcc rbenv install ...

ということでインストール

CC=gcc rbenv install 1.9.3-p327
% rbenv rehash
% rbenv global
system
% rbenv global 1.9.3-p327
% rbenv global
1.9.3-p327
% which ruby
/home/rin/.rbenv/shims/ruby
% ruby --version
ruby 1.9.3p327 (2012-11-10 revision 37606) [i386-netbsdelf6.0]
% rbenv which ruby
/home/rin/.rbenv/versions/1.9.3-p327/bin/ruby

システムデフォルトに戻らない件について

% rbenv help global
Usage: rbenv global <version>

Sets the global Ruby version. You can override the global version at
any time by setting a directory-specific version with `rbenv local'
or by setting the `RBENV_VERSION' environment variable.

<version> should be a string matching a Ruby version known to rbenv.
The special version string `system' will use your default system Ruby.
Run `rbenv versions' for a list of available Ruby versions.
% rbenv global system
% which ruby
/home/rin/.rbenv/shims/ruby

あでも --version の印字は /usr/pkg/bin/ruby のと同じだ。

% ruby --version
ruby 1.9.3p327 (2012-11-10 revision 37606) [i486-netbsdelf]

2013-03-04 :-(

_ 午前

0550 起床

0830 検討

_ 午後

1300 検討

1720 退勤

_

1900 Twitter

2130 飯。メカジキのムニエル

2200 ジャンプ読む

2330 メール投げた


2013-03-05 :-(

_ 午前

0550 起床

0830 検討

_ 午後

1300 検討

1750 退勤 && 定時後にお客さんを捕まえるものではない

_

1900 Twitter

2130 飯。牛肉の冷しゃぶ青じそわさびソース

2200 リーンキャンバス練習

_ [ruby][math]なぜ ruby には Math.radians と Math.degrees がないのか

こうですか分かりません。

Module Math
  def radians(deg)
    rad = deg * Math::PI / 180
  end
  
  def degrees(rad)
    deg = rad * 180 / Math::PI
  end
end

Python にはあるのに ( 9.2. math — Mathematical functions — Python v2.7.3 documentation )

_ [ruby][twitter]The Twitter Ruby Gem を使ってみた

環境

  • Microsoft Windows 7 64bit
  • cygwin
  • ruby 1.9.3p385

参考

インストール

% gem install twitter

Twitter アプリ登録

dotinstall の説明を参考にして http://dev.twitter.com/apps/ からテキトーに設定しておく。

consumer_key とかも取得しておく。

consumer_key とかは Detail タブの「Recreate my access token」をクリックすると生成され、OAuth tool タブで確認できる。

アプリケーション

とりあえずRoute 477 のひとのをそのまま実行してみる。

consumer_key とかは自分のアプリのやつを書いておく。

require 'twitter'
require 'pp'

# ログイン
Twitter.configure do |config|
  config.consumer_key = 'アプリのatoken'
  config.consumer_secret = 'アプリのsecret'
  config.oauth_token = 'ユーザのatoken'
  config.oauth_token_secret = 'ユーザのsecret'
end 

#自分のタイムラインの取得
#pp Twitter.home_timeline
#自分宛てのReplyの取得
# pp Twitter.mentions
#自分宛てのDMの取得
# pp Twitter.direct_messages
#発言する
Twitter.update("テストです。")

実行

/usr/lib/ruby/gems/1.9.1/gems/twitter-4.5.0/lib/twitter/response/raise_error.rb:21:in `on_complete': Error processing your OAuth request: Read-only application cannot POST (Twitter::Error::Unauthorized)
        from /usr/lib/ruby/gems/1.9.1/gems/faraday-0.8.4/lib/faraday/response.rb:9:in `block in call'
        from /usr/lib/ruby/gems/1.9.1/gems/faraday-0.8.4/lib/faraday/response.rb:63:in `on_complete'
        from /usr/lib/ruby/gems/1.9.1/gems/faraday-0.8.4/lib/faraday/response.rb:8:in `call'
        from /usr/lib/ruby/gems/1.9.1/gems/faraday-0.8.4/lib/faraday/request/url_encoded.rb:14:in `call'
        from /usr/lib/ruby/gems/1.9.1/gems/faraday-0.8.4/lib/faraday/request/multipart.rb:13:in `call'
        from /usr/lib/ruby/gems/1.9.1/gems/twitter-4.5.0/lib/twitter/request/multipart_with_file.rb:14:in `call'
        from /usr/lib/ruby/gems/1.9.1/gems/faraday-0.8.4/lib/faraday/connection.rb:226:in `run_request'
        from /usr/lib/ruby/gems/1.9.1/gems/faraday-0.8.4/lib/faraday/connection.rb:99:in `post'
        from /usr/lib/ruby/gems/1.9.1/gems/twitter-4.5.0/lib/twitter/client.rb:81:in `request'
        from /usr/lib/ruby/gems/1.9.1/gems/twitter-4.5.0/lib/twitter/client.rb:70:in `post'
        from /usr/lib/ruby/gems/1.9.1/gems/twitter-4.5.0/lib/twitter/api/utils.rb:82:in `object_from_response'
        from /usr/lib/ruby/gems/1.9.1/gems/twitter-4.5.0/lib/twitter/api/tweets.rb:129:in `update'
        from /usr/lib/ruby/gems/1.9.1/gems/twitter-4.5.0/lib/twitter.rb:52:in `method_missing'
        from twitter1.rb:25:in `<main>'

Read-only とあるので http://dev.twitter.com/apps/ アプリのページの settings にある Application type を Read and Write にする。

再度実行。

また同じエラーになった。

はて

ググる

ruby1.9.3: rubyでTwitter API - pandazx's blog

一度、Twitterアプリのアクセス権をread onlyにした状態で実行してしまったので、Error processing your OAuth request: Read-only application cannot POST (Twitter::Error::Unauthorized) が発生した。その後、アクセス権をread and writeにして実行したが、まだエラーが発生する。これを解消するには、get-twitter-oauth-token を再実行して新しいaccess tokenを取得、プラグラムを修正する必要がある。

あー

アプリの Detail に行って「Recreate my access token」をクリック。

トークンとかが作りなおされるので、トークンとかをスクリプトへコピペしなおして、再度実行

ok


2013-03-06 :-(

_ 午前

0520 起床

0600 嘔吐 && 客先へ連絡 && 仕事休み

0630 寝る

_ 午後

1130 起床

1200 おひる。弁当

1300 アニメ消化

1400 寝る

_

1830 起床

2030 飯。うどん

_ 吐露といっしょ

先日の現象[ 20130110#p01 ]が再現した。

どうやら前日の晩飯が原因のようだ。

  • 先日: 豚肉の冷しゃぶ
  • 本日: 牛肉の冷しゃぶ

つまり冷しゃぶがよろしくない。

原因の仮説として豚肉か冷しゃぶを検討していたんだが、今回の検討結果によると冷しゃぶが原因だったことが分かった。

というわけで今日も一日寝ていた。

先日ほど胃にダメージは食らっていないので回復は早いと思われる。

_ ことり可愛い

1.gif

2.gif

3.gif


2013-03-07 :-(

_ 午前

0520 起床

0600 SC

0630 寝る

0800 起床

0930 有楽町 && 研修

_ 午後

1300 引き続き研修

1700 終了

_

1730 入谷

1830 自社 && 打ち合わせ && AR とかその辺の話を聞いてきた

2130 飯。鮭のムニエル

_ 管理職基本研修とやら

リーダーが部下とどう接するかという話だった。うーん

本日のツッコミ(全2件) [ツッコミを入れる]

_ うさだー [管理職になるん?]

_ みわ [無能の限界に到達したので管理者にはならぬです。(ピーターの法則)]


2013-03-08 :-(

_ 午前

0550 起床

0830 検討

_ 午後

1300 検討

1720 退勤

_

1900 散歩 && 等々力緑地の河津桜は 6, 7 分咲きといったところだった

2130 飯。豚肉ロースの生姜焼き

2200 読書メモ

IMG_1176

_ *BSD on PlayStation

2013年1月9日 FreeBSDが使われているハードウェア : PlayStation 3 / PlayStation Vita:FreeBSD Daily Topics|gihyo.jp … 技術評論社

日本ではあまり馴染みのない企業名や,大企業であっても業界関係者でなければ知らない企業名が多いかもしれません。日本でも名の通った企業で,すぐに確認できるところだと,ソニー・コンピュータエンタテインメントのPlayStation 3やPlayStation Vitaといったゲーム・ハードウェアでFreeBSDが活用されているというのが有名でしょうか。

次のライセンス表記のページなどで確認できます。

ということで以下の URI

11. NetBSD

10. NetBSD

NetBSD もあった。

YAML とか Mono も使ってるんですなあ。

_ [cygwin][pkgsrc]Cygwin is now in pkgsrc supported platform

というわけでやってみる。

環境

  • Microsoft Windows 7 64bit
  • cygwin( base と devel をインストールしてある )

取得

いつもどおりに current を取得

% export CVS_RSH="ssh"
% export CVSROOT="anoncvs@anoncvs.NetBSD.org:/cvsroot"
% cvs co -P pkgsrc

bootstrap

最初 mintty.exe を「管理者として実行」して bootstrap したら怒られた。

% cd pkgsrc/pkgsrc
% ./bootstrap

 :
===> running: /usr/bin/sh /home/public/pkgsrc/bootstrap/work/bin/install-sh -c -o 1000 -g 513 -m 755 /home/public/pkgsrc/bootstrap/work/pkg_install/admin/pkg_admin /home/public/pkgsrc/bootstrap/work/sbin/pkg_admin
===> running: /usr/bin/sh /home/public/pkgsrc/bootstrap/work/bin/install-sh -c -o 1000 -g 513 -m 755 /home/public/pkgsrc/bootstrap/work/pkg_install/create/pkg_create /home/public/pkgsrc/bootstrap/work/sbin/pkg_create
===> running: /usr/bin/sh /home/public/pkgsrc/bootstrap/work/bin/install-sh -c -o 1000 -g 513 -m 755 /home/public/pkgsrc/bootstrap/work/pkg_install/info/pkg_info /home/public/pkgsrc/bootstrap/work/sbin/pkg_info
===> Installing packages
===> running: (cd /home/public/pkgsrc/pkgtools/bootstrap-mk-files && /home/public/pkgsrc/bootstrap/work/bin/bmake  USE_DESTDIR=no -DPKG_PRESERVE MAKECONF=/home/public/pkgsrc/bootstrap/work/mk.conf install)
===> Installing dependencies for bootstrap-mk-files-20120415
===> Overriding tools for bootstrap-mk-files-20120415
===> Extracting for bootstrap-mk-files-20120415
===> Patching for bootstrap-mk-files-20120415
===> Creating toolchain wrappers for bootstrap-mk-files-20120415
===> Configuring for bootstrap-mk-files-20120415
cd /home/public/pkgsrc/bootstrap/work/wrk/pkgtools/bootstrap-mk-files/work/bootstrap-mk-files-20120415; for file in bsd.* sys.mk; do                     test ! -f mods/Cygwin.$file ||                    /bin/cp -f mods/Cygwin.$file /home/public/pkgsrc/bootstrap/work/wrk/pkgtools/bootstrap-mk-files/work/bootstrap-mk-files-20120415/$file;           done
cd /home/public/pkgsrc/bootstrap/work/wrk/pkgtools/bootstrap-mk-files/work/bootstrap-mk-files-20120415;                                                  if test -f mods/Cygwin.bsd.own.mk.in; then                        own_mk=mods/Cygwin.bsd.own.mk.in;                       else                                             own_mk=mods/bsd.own.mk.in;                               fi;                                                             /bin/sed       -e 's|@ROOT_GROUP@|'None'|g'                       -e 's|@ROOT_USER@|'rin'|g'                      -e 's|@SYSCONFDIR@|'/home/rin//pkg/etc'|g'              $own_mk > bsd.own.mk
===> Installing for bootstrap-mk-files-20120415
WARNING: Your umask is ``0022''.
WARNING: If this is not desired, set it to an appropriate value (002) and install
WARNING: this package again by ``/home/public/pkgsrc/bootstrap/work/bin/bmake deinstall reinstall''.
=> Creating installation directories
cd /home/public/pkgsrc/bootstrap/work/wrk/pkgtools/bootstrap-mk-files/work/bootstrap-mk-files-20120415 && for file in bsd.* sys.mk; do                   /bin/install -c -o rin -g None -m 644 $file /home/rin//pkg/share/mk/$file;        done
=> Automatic manual page handling
▒▒▒▒▒ȃX▒C▒b▒`▒ł▒▒B

*** Error code 1

Stop.
bmake: stopped in /home/public/pkgsrc/pkgtools/bootstrap-mk-files
*** Error code 1

Stop.
bmake: stopped in /home/public/pkgsrc/pkgtools/bootstrap-mk-files
*** Error code 1

Stop.
bmake: stopped in /home/public/pkgsrc/pkgtools/bootstrap-mk-files
===> exited with status 1
aborted.

obache さんが「Cygwin Terminalを右クリックしろ」と言っているので正攻法で c:\cygwin\cygwin.bat を「管理者として実行」して bootstrap したらイケた。

 :
=> Automatic manual page handling
=> Running POST-INSTALL script actions
=> Please note the following:

===========================================================================
$NetBSD: MESSAGE,v 1.5 2009/02/02 12:34:59 joerg Exp $

You may wish to have the vulnerabilities file downloaded daily so that
it remains current.  This may be done by adding an appropriate entry
to a user's crontab(5) entry.  For example the entry

# download vulnerabilities file
0 3 * * * /usr/pkg/sbin/pkg_admin fetch-pkg-vulnerabilities >/dev/null 2>&1

will update the vulnerability list every day at 3AM. You may wish to do
this more often than once a day.

In addition, you may wish to run the package audit from the daily
security script.  This may be accomplished by adding the following
lines to /etc/security.local

if [ -x /usr/pkg/sbin/pkg_admin ]; then
        /usr/pkg/sbin/pkg_admin audit
fi

Alternatively this can also be acomplished by adding an entry to a user's
crontab(5) file. e.g.:

# run audit-packages
0 3 * * * /usr/pkg/sbin/pkg_admin audit

Both pkg_admin subcommands can be run as as an unprivileged user,
as long as the user chosen has permission to read the pkgdb and to write
the pkg-vulnerabilites to /var/db/pkg.

The behavior of pkg_admin and pkg_add can be customised with
pkg_install.conf.  Please see pkg_install.conf(5) for details.

If you want to use GPG signature verification you will need to install
GnuPG and set the path for GPG appropriately in your pkg_install.conf.
===========================================================================

=> Registering installation for pkg_install-20130131nb1
===> running: /usr/bin/sh /home/public/pkgsrc/bootstrap/work/bin/install-sh -d -o Administrators -g Administrators /usr/pkg/etc

===========================================================================

Please remember to add /usr/pkg/bin to your PATH environment variable
and /usr/pkg/man to your MANPATH environment variable, if necessary.

An example mk.conf file with the settings you provided to "bootstrap"
has been created for you. It can be found in:

      /usr/pkg/etc/mk.conf

You can find extensive documentation of the NetBSD Packages Collection
in /home/public/pkgsrc/doc/pkgsrc.txt.

Hopefully everything is now complete.
Thank you for using pkgsrc!

===========================================================================

===> bootstrap started: 2013年 3月  8日 金曜日 22:54:31 JST
===> bootstrap ended:   2013年 3月  8日 金曜日 23:10:14 JST

_ [pkgsrc][cygwin]pkgsrc on cygwin で sl をビルド(失敗)

いつもどおりに sl をビルドしてみる。/usr/pkg/bin に PATH を通してないので full path で実行している。

% cd pkgsrc/games/sl
% /usr/pkg/bin/bmake install

 :
config.status: creating Makefile
config.status: WARNING:  'Makefile.in' seems to ignore the --datarootdir setting
config.status: creating config.h
===> Building for digest-20121220
gcc -DHAVE_CONFIG_H -I. -I. -DHOST=\"i386-pc-cygwin\" -DVERSION=\"20121220\"  -O -c digest.c -o digest.o
gcc -DHAVE_CONFIG_H -I. -I. -DHOST=\"i386-pc-cygwin\" -DVERSION=\"20121220\"  -O -c md5c.c -o md5c.o
gcc -DHAVE_CONFIG_H -I. -I. -DHOST=\"i386-pc-cygwin\" -DVERSION=\"20121220\"  -O -c rmd160.c -o rmd160.o
gcc -DHAVE_CONFIG_H -I. -I. -DHOST=\"i386-pc-cygwin\" -DVERSION=\"20121220\"  -O -c rmd160hl.c -o rmd160hl.o
gcc -DHAVE_CONFIG_H -I. -I. -DHOST=\"i386-pc-cygwin\" -DVERSION=\"20121220\"  -O -c sha2.c -o sha2.o
gcc -DHAVE_CONFIG_H -I. -I. -DHOST=\"i386-pc-cygwin\" -DVERSION=\"20121220\"  -O -c sha2hl.c -o sha2hl.o
gcc -DHAVE_CONFIG_H -I. -I. -DHOST=\"i386-pc-cygwin\" -DVERSION=\"20121220\"  -O -c md5hl.c -o md5hl.o
gcc -DHAVE_CONFIG_H -I. -I. -DHOST=\"i386-pc-cygwin\" -DVERSION=\"20121220\"  -O -c sha1.c -o sha1.o
gcc -DHAVE_CONFIG_H -I. -I. -DHOST=\"i386-pc-cygwin\" -DVERSION=\"20121220\"  -O -c sha1hl.c -o sha1hl.o
gcc -DHAVE_CONFIG_H -I. -I. -DHOST=\"i386-pc-cygwin\" -DVERSION=\"20121220\"  -O -c tiger.c -o tiger.o
gcc -DHAVE_CONFIG_H -I. -I. -DHOST=\"i386-pc-cygwin\" -DVERSION=\"20121220\"  -O -c whirlpool.c -o whirlpool.o
gcc -O -Wl,-R/usr/pkg/lib -o digest digest.o md5c.o rmd160.o rmd160hl.o sha2.o sha2hl.o  md5hl.o sha1.o sha1hl.o tiger.o whirlpool.o
=> Unwrapping files-to-be-installed.
===> Installing for digest-20121220
WARNING: Your umask is ``0022''.
WARNING: If this is not desired, set it to an appropriate value (002) and install
WARNING: this package again by ``/usr/pkg/bin/bmake deinstall reinstall''.
/bin/sh ./mkinstalldirs /home/public/pkgsrc/pkgtools/digest/work/.destdir/usr/pkg/bin
mkdir /home/public/pkgsrc/pkgtools/digest/work/.destdir/usr/pkg/bin
/bin/install -c -s -o rin -g None -m 755 digest /home/public/pkgsrc/pkgtools/digest/work/.destdir/usr/pkg/bin/digest
/bin/sh ./mkinstalldirs /home/public/pkgsrc/pkgtools/digest/work/.destdir/usr/pkg/man/man1
mkdir /home/public/pkgsrc/pkgtools/digest/work/.destdir/usr/pkg/man
mkdir /home/public/pkgsrc/pkgtools/digest/work/.destdir/usr/pkg/man/man1
/bin/install -c -o rin -g None -m 644 digest.1 /home/public/pkgsrc/pkgtools/digest/work/.destdir/usr/pkg/man/man1/digest.1
=> Automatic manual page handling
===> Building binary package for digest-20121220
=> Creating binary package /home/public/pkgsrc/packages/All/digest-20121220.tgz
===> Install binary package of digest-20121220
=> Returning to build of sl-3.03p5
=> Bootstrap dependency tnftp-[0-9]*: NOT found
=> Verifying package-install for ../../net/tnftp
ERROR: This package has set PKG_FAIL_REASON:
ERROR: No usable termcap library found on the system.
*** Error code 1

Stop.
bmake: stopped in /home/public/pkgsrc/net/tnftp
*** Error code 1

Stop.
bmake: stopped in /home/public/pkgsrc/games/sl

termcap が無い。と怒られた

寝るか


2013-03-09 :-)

_ 午前

1100 起床 && 部屋掃除

_ 午後

1200 おひる。そうめん

1300 散歩

1400 買い物

1600 庭仕事 && ユッカを植え替えた

ナントカいう花が芽吹いていた。

IMG_1208

_

1800 ビデオ消化

2100 飯

_ [河津桜][]玉川河川敷 等々力緑地付近の河津桜を見てきた

見頃です。

IMG_1188

等々力緑地に入ったところに梅がある。梅はそろそろ時期が終わる。

IMG_1200

写真はこちら

等々力緑地 河津桜 2013-03-09 - a set on Flickr


2013-03-10 :-)

_ 午前

0930 起床

1030 おひる。ベーコンとかぼちゃのスパゲティ

1100 アニメ消化

_ 午後

1300 R4 買った

1500 SC

_

1700 SC

1930 名付け

2130 飯。鶏ときのこのパエリア

2200 読書

2300 Android

_ 煙霧とやら

14 時ころに外が急に暗くなったので何かと思って見てみたら神砂嵐が炸裂していた。

IMG_1210

ref. 【黄砂騒動】東京のヤバすぎる空の色は煙霧が原因 / 子ども「きな粉めっちゃ飛んでる! きな粉めっちゃ飛んでる!」 - ロケットニュース24

_ ,

ナントカいう花が咲き始めていた。

IMG_1211

_ ,

梅の花の写真を投稿して

  • オレ: 2イイネ
  • sendさん: 30イイネ

これが戦闘力の差である。


2013-03-11 :-(

_ 午前

0550 起床

0830 検討

_ 午後

1300 検討

1446 黙祷 (東日本大震災 - Wikipedia)

1720 退勤

_

1900 コーパス探し

2130 飯。ブリの塩焼き && かんたん大学芋

_ 買い物

PlayStation アーカイブで買った。昨日だけど

R4.jpg


2013-03-12 :-(

_ 午前

0550 起床

0830 検討

_ 午後

1300 検討

1720 退勤

_

1800 自社

1900 退勤

2130 飯。かぼちゃと牛肉のバターじょうゆ かぼちゃが無いのでジャガイモ


2013-03-13 :-(

_ 午前

0550 起床

0830 検討

_ 午後

1300 検討

1720 退勤

_

1800 自社 && Android

1930 退勤

2130 飯。メカジキのムニエル

_ ,

ここ 1, 2 年は○△□の計算ばかりしている。

_ ,

  • 主任: 年功序列
  • 係長: 少なくとも社内の人脈がある

_ 欲しい

いらない

B000TG8M1O

B00264J1UI

_ あなたの知らない世界

定期昇給


2013-03-14 :-(

_ 午前

0550 起床

0830 検討

_ 午後

1300 検討

1730 退勤

_

1900 機械学習

2130 飯。鮭のちゃんちゃん焼き

_ ,

ついに Tumblr で日記を書き始めましたね!

_ Google Reader 終了のお知らせ

Official Google Reader Blog: Powering Down Google Reader

フレッシュリーダーが終了してから Google Reader に乗り換えた[ 20101206#p04 ] んだが、お前もか。

とりあえずデータをエクスポートしておいた。

爆速Yahoo! さんが何かやってるらしいので期待 My Yahoo! - Googleリーダー、iGoogleからの乗り換えツール爆速準備中!

_ 整数 最大値

python

>>> import sys
>>> -sys.maxint
-2147483647

26.1 sys -- システムパラメータと関数

Pythonの整数型でサポートされる、最大の整数。この値は最低でも2**31-1で す。最大の負数は-maxint-1となります。正負の最大数が非対称です が、これは2の補数計算を行うためです。

ruby

irb(main):030:0> 2 ** ((1.size) * 8 -1 ) -1
=> 2147483647

こうですか?

_ [ナイーブベイズ][ベイズ推定][ruby][機械学習]ナイーブベイズを用いたテキスト分類 - 人工知能に関する断創録

ruby で写経

Python の set (重複なしリスト) の代わりが分からんので uniq! するとか

d[1:] の代わりが分からんので d[1, d.length-1] みたいな。

docstring とか知りません。

# -*- encoding: utf-8 -*-

#
# ナイーブベイズを用いたテキスト分類 - 人工知能に関する断創録
# http://aidiary.hatenablog.com/entry/20100613/1276389337
#

include Math
require 'pp'

def maxint()
  return 2 ** ((1.size) * 8 -1 ) -1
end

def sum(data)
  return data.inject(0) {|s, i| s + i}
end


class NaiveBayes
  # Multinomial Naive Bayes
  def initialize()
    @categories = []   # カテゴリの集合
    @vocabularies = []   # ボキャブラリの集合
    @wordcount = {}     # wordcount[cat][word] カテゴリでの単語の出現回数
    @catcount = {}      # catcount[cat] カテゴリの出現回数
    @denominator = {}     # denominator[cat] P(word|cat)の分母の値
  end
  
  def train(data)
    # ナイーブベイズ分類器の訓練
    # 文書集合からカテゴリを抽出して辞書を初期化
    data.each {|d|
      cat = d[0]
      @categories << cat
    }
    
    @categories.each {|cat|
      @wordcount[cat] ||= {}
      @wordcount[cat].default = 0
      @catcount[cat] = 0
    }
    
    # 文書集合からカテゴリと単語をカウント
    data.each {|d|
      cat, doc = d[0], d[1, d.length-1]

      @catcount[cat] += 1
      doc.each {|word|
        @vocabularies << word
        @wordcount[cat][word] += 1
      }
    }
    
    @vocabularies.uniq!
    
    # 単語の条件付き確率の分母の値をあらかじめ一括計算しておく(高速化のため)
    @categories.each {|cat|
      sum = @wordcount[cat].values.inject(0) {|s, i| s + i}
      @denominator[cat] =  sum + @vocabularies.length
    }

  end
  
  
  def classify(doc)
    # 事後確率の対数 log(P(cat|doc)) がもっとも大きなカテゴリを返す
    best = nil
    max = -maxint()
    @catcount.each_key {|cat|
      _p = score(doc, cat)
      if _p > max
        max = _p
        best = cat
      end
    }
    
    return best
  end
  
  def wordProb(word, cat)
    # 単語の条件付き確率 P(word|cat) を求める
    # ラプラススムージングを適用
    # wordcount[cat]はdefaultdict(int)なのでカテゴリに存在しなかった単語はデフォルトの0を返す
    # 分母はtrain()の最後で一括計算済み
    return (@wordcount[cat][word] + 1).to_f / (@denominator[cat]).to_f
  end
  
  def score(doc, cat)
    # 文書が与えられたときのカテゴリの事後確率の対数 log(P(cat|doc)) を求める
    total = sum(@catcount.values)  # 総文書数
    sc = Math.log((@catcount[cat]) / total.to_f)  # log P(cat)
    doc.each {|word|
      
      # logをとるとかけ算は足し算になる
      sc += Math.log(wordProb(word, cat))  # log P(word|cat)
    }
    return sc
  end
  
  def to_s()
    total = sum(@catcount.values)  # 総文書数
    return "documents: #{total}, vocabularies: #{@vocabularies.length}, categories: #{@categories.length}"
  end

end


if __FILE__ == $0
  # Introduction to Information Retrieval 13.2の例題
  data = [
    ["yes", "Chinese", "Beijing", "Chinese"],
    ["yes", "Chinese", "Chinese", "Shanghai"],
    ["yes", "Chinese", "Macao"],
    ["no", "Tokyo", "Japan", "Chinese"]
  ]
  
  # ナイーブベイズ分類器を訓練
  nb = NaiveBayes.new
  nb.train(data)
  p nb
  puts "P(Chinese|yes) = #{nb.wordProb('Chinese', 'yes')}"
  puts "P(Tokyo|yes) = #{nb.wordProb('Tokyo', 'yes')}"
  puts "P(Japan|yes) = #{nb.wordProb('Japan', 'yes')}"
  puts "P(Chinese|no) = #{nb.wordProb('Chinese', 'no')}"
  puts "P(Tokyo|no) = #{nb.wordProb('Tokyo', 'no')}"
  puts "P(Japan|no) = #{nb.wordProb('Japan', 'no')}"
  
  # テストデータのカテゴリを予測
  test = ['Chinese', 'Chinese', 'Chinese', 'Tokyo', 'Japan']
  puts "log P(yes|test) = #{nb.score(test, 'yes')}"
  puts "log P(no|test) = #{nb.score(test, 'no')}"
  puts nb.classify(test)
end

出力は同じ

% ruby naivebayes.rb
documents: 4, vocabularies: 6, categories: 4
P(Chinese|yes) = 0.42857142857142855
P(Tokyo|yes) = 0.07142857142857142
P(Japan|yes) = 0.07142857142857142
P(Chinese|no) = 0.2222222222222222
P(Tokyo|no) = 0.2222222222222222
P(Japan|no) = 0.2222222222222222
log P(yes|test) = -8.10769031284391
log P(no|test) = -8.906681345001262
yes

2013-03-15 :-(

_ 午前

0550 起床

0830 検討

_ 午後

1300 検討

1710 退勤

_

1800 自社 && リーンスタートアップ

2130 飯。牛丼の牛肉の代わりに鶏肉を使ってみる。

_ 10年の教訓

自分の製品を作らないと自分の虚栄心は満たされない。

_ 歌を聞いて癒されるならば、それは精神が疲れている証拠である

CHANGIN' MY WORLD!!
変わらない夢 描いて
CHANGIN' 今を
好きに自由に変えるREADY!!
CHANGIN' 前を
新しい未来 追いかけながら
私らしい私で もっともっと DREAM COMES TRUE


2013-03-16 :-)

_ 午前

0930 起床 && 部屋掃除

1030 おひる。そば

1100 アニメ消化

_ 午後

1300 買い物

1500 SC

_

1700 アニメ消化

1900 自然言語処理

2100 飯。タラのムニエル

_ 二ヶ領用水の桜が咲き始めていた

4分くらいか。

IMG_1218


2013-03-17 :-)

_ 午前

0930 起床

1030 おひる。スパゲティ

1100 アニメ消化

_ 午後

1400 茅ヶ崎

_

1700 F1を眺める

1830 ぐったり

2130 飯。肉じゃがカレー味

_ ,

あ、いま tumblr で繋がってるんだなって

_ [椿][氷室椿庭園]氷室椿庭園 に行ってきた

神奈川新聞の朝刊で氷室椿庭園のことが紹介されていたのでせっかくだから行ってみた。

茅ヶ崎駅に降りるのは 6 年ぶりくらい。2005 年入居して[ 20051001 ] 2007 年に撤退[ 20070318#p01 ]していた。

茅ヶ崎駅から徒歩 15 分ということで、往路はコミュニティバスに乗っていった。バス停を降りてからさらに住宅地を歩いていくと庭園がある。静かだなあ。こういうところに棲んでみたいが、いまのご時世ではちと遠慮したい( 海が近いうえに海抜が 6m くらい )。なお、経路は分かりやすいので帰路は徒歩で茅ヶ崎駅まで移動した。

IMG_1236

椿 250 種とあったんだが、ほんとに 1 本 1 本種類が異なっていた。見た目は似たような種類が多いんだが、紅、白を基本として、それらを交配したんだろうか。

IMG_1250

IMG_1242

写真はこちら 氷室椿庭園 2013-03-17 - a set on Flickr

_ [F1]2013 FORMULA 1 ROLEX AUSTRALIAN GRAND PRIX を眺めていた

48 周目あたりで眠くなって寝てしまったが。

リッジレーサーが好きな割にはモータスポーツにはまったく興味なくて、でも周囲のひとたちが(当たり前だが)盛り上がっているので、どういうもんだろうか、という日々を送っていたんだが、先日 @hageatama のひとが記事を書いていた( 非常に敷居の低い趣味『F1のTV観戦』のススメ - はげあたま.org ) というかちょうど @hageatama のひとの post がタイムラインに流れていたので F1 を見てみた。

3チーム6人さえ覚えておけばOK

ロータス、フェラーリ、レッドブルは上位に居た。

ドライバーはライコネンくらいしか覚えていない。

レースの肝はタイヤとピットイン

解説の片山右京がスーパーソフトとミドルについて云々していた。

ここ最近のF1がおもしろい!
『DRS』は可変ウィングによるスーパーキノコで、『KERS』はエネルギーを溜めてのミニターボのようなものです。(全人類はマリオカートやってると信じています)

マリオカートは初代のスーファミしかやってませんが

F1 : DRS (Drag Reduction System)とは 【 F1-Gate.com 】

DRSは、リアウイングのフラップをドライバーが手動で可動させることでドラッグを低減させ、オーバーテイクを促進させることを目的に導入された可変リアウイング。フラップの可変は5cmまで許されている。

KERS (運動エネルギー回生システム) 【 F1-Gate.com 】

KERS(Kinetic Energy Recovery System)とは、これまで熱として放出されていた減速時のエネルギーを回収し、機械的または電気的エネルギーとして貯蔵し再利用するシステムである。

KERS が進化すればアルティメットチャージも夢ではない...!

ところで「周囲のひとたちが盛り上がっているからとりあえず手を出してみた」系は私にはファイナルファンタジー XI という前例があるのであまり長続きしないか。


2013-03-18 :-(

_ 午前

0520 起床

0830 検討

_ 午後

1300 検討

1720 退勤

_

1900 人工無脳は考える

2130 飯

2200 ガールズ&パンツァー 11 話「激戦です!」リアルタイムで見るなど 今夜はTOKYO MXにて第11話がOA! ガールズ&パンツァー公式ブログ/ウェブリブログ 来週でとうとう最終回か


2013-03-19 :-(

_ 午前

0600 起床 && 寝坊 && スマホがマナーモードになっていたため目覚ましが聞こえず && いつもの電車より1本遅らせるだけで済んだ && 1,2ヵ月前に使っていた電車である

0830 検討

_ 午後

1300 検討

1720 退勤

_

1800 自社 && 課題インタビュー

1930 退勤

2130 飯。豚肉のしょうが焼き


2013-03-20 :-)

_ 午前

0800 起床

0940 墓参り

1020 外出

_ 午後

1220 松田山ハーブガーデン

_

1730 散歩

1900 ぐったり

2130 飯。ぶりの照焼

_ [菜の花][][まつだ桜まつり]まつだ桜まつり へ行ってきた

@松田山ハーブガーデン

1 年ぶり 2 回目 [ 20120324#p04 ]

今年はすでに散っていた。咲き始めが遅かったわりに、先日の嵐によってすぐに散ってしまったんだそうな。

IMG_1272

IMG_1273

去年と同様に あぐりパーク苑 で菜の花を摘んできた。

IMG_1290

あぐりパーク苑の桜は満開だった。

IMG_1309

ときおり風が吹き、そのたびに桜吹雪が風に舞う様は壮観だった。動画で撮っておくのだったなあ。見とれてしまい動けなかった。

桜の花道ができているなど。

IMG_1310

写真はこちら まつだ桜祭り 2013-03-20 - a set on Flickr

_ 近所の桜

すでに日没が近かったのでかなり暗い。

二ヶ領用水とか

IMG_1321

小学校とか

IMG_1327


2013-03-21 :-(

_ 午前

0520 起床

0830 検討

_ 午後

1300 検討

1720 退勤

_

1900 アニメ消化

1930 翻訳

2130 飯

_ [翻訳][NetBSD]hubertf's NetBSD blog - Happy 20ths Birthday, NetBSD! NetBSD 20 周年おめでとう

20 years back from today, NetBSD was initially checked into CVS. Revision 1.1 of src/Makefile was committed on March 21st 1993 on 09:45:37 by Chris Demetriou (cgd@):

20 年前の今日、NetBSD は最初の CVS チェックインをおこなった。1993 年 3 月 21 日 09:45:37 に Chris Demetriou (cgd@) によって src/Makefile のリビジョン 1.1 がコミットされた。

% cvs log -Nr1.1 Makefile
...
revision 1.1
date: 1993/03/21 09:45:37;  author: cgd;  state: Exp;
branches:  1.1.1;
Initial revision 

NetBSD was started as successor to the Berkeley System Distribution (BSD) Unix with a focus on multiplatform support.

NetBSD はマルチプラットフォームに注力する the Berkeley System Distribution (BSD) Unix の後継として開始された。

Personally, I've followed NetBSD since the day in 1993 when the Amiga port popped up, which was the first platform that the newly forked operating system was ported to after its separation from BSD.

私は、NetBSD は 1993 年の Amiga 移植から携わっている。BSD から分離したあとの新しいオペレーティングシステムとして、最初のプラットフォームである。

Many things have happened in the past 20 years, and a lot could be shown and told for the history books at this point. But I guess that can be done later - I'd be happy to help out with such a project if someone wants to start it, though :)

20 年間でたくさんのことがあった。ここでの歴史的な多くのことが 聞き できる。

For today I'm very happy that NetBSD is available on a wide range on platforms, runs the software that I want and gives me the assurrance it will be around tomorrow and hopefully for the next 20 years, too.

今日の NetBSD に非常に満足している。幅広いプラットフォーム上で利用でき、望みどおりにソフトウェアが走る。明日もそうだし、きっと今後 20 年間もそうだろう。

Cheers, NetBSD!

\NetBSD/



2013-03-23 :-)

_ [ガルパン][ガールズ&パンツァー][大洗]大洗「海楽フェスタ」×ガールズ&パンツァー 前日 遭遇編

@miwarin, @yo_1, @megtan, @Miya_TF, @MatsuYan

大洗町のひとびとがガールズ&パンツァー(以降 ガルパン)とイベントを開催するという、すでに恒例となったイベントである。

舞台探訪[ 20130112#p01 ]のときに偶然 遭遇したひとたちを含めて行ってきた。

翌日のガールズアンドパンツァートークイベントに備えて、前日入りした。イベント発表後にソッコーで宿を確保した @megtan thx

私の車を利用して東京から出発し、現地でああだこうだするプランであった。

_ [ガルパン][ガールズ&パンツァー][大洗]大洗「海楽フェスタ」×ガールズ&パンツァー 前日 クックファン未遂

茨城県水戸市 とんかつレストラン クックファン

ガルパン本編にも登場したお店である。ガルパン仕様トンカツがある、というので行こうとしていたんだが、東京都内の渋滞に巻き込まれて結局時間内に店に到着できなかったので、諦めた。スンマセン (´・ω・`)

今度行きましょう。

_ [ガルパン][ガールズ&パンツァー][大洗]大洗「海楽フェスタ」×ガールズ&パンツァー 前日 おひる

クックファンはスルーして、大洗へ向かう。

大洗で @megtan と合流。

痛車のお出迎え

IMG_1333

大洗リゾートアウトレットI 内のお店でお昼。

他のひとたちはメンチカツを注文していたんだが、私は挽き肉系統が苦手なのでアジフライにした。アジがすげえ大きいんですが (´Д`;)

IMG_1339

_ [ガルパン][ガールズ&パンツァー][大洗]大洗「海楽フェスタ」×ガールズ&パンツァー 前日 スタンプラリー

「ガールズ&パンツァー」特設(大洗観光協会 よかっぺ大洗)

大洗町を舞台にしてガルパン スタンプラリーが開催されている。

さくさくと行ってきた。

IMG_1344

「被弾につき、改修中」も寄れた。(ただたんに普通に道路を工事しているだけなんだが、この場所が劇中に登場するので、工事担当のひとたちがジョークを効かせている)

IMG_1415

大洗磯前神社 の絵馬も見てきた。

手が込んでいる。

IMG_1419

絵馬を 2 つ用いてノンナがカチューシャを肩車している様子を表現している。

IMG_1422

中の人キタ━(゚∀゚)━!

IMG_1423

湯涌温泉の札があった。( ref. 湯涌ぼんぼり祭り 北國新聞ホームページ - 「花いろ」ファン7千人集結 湯涌ぼんぼり祭り 「花いろイベント IN ぼんぼり祭り」&「湯涌ぼんぼり祭り」レポート )

IMG_1421

_ [ガルパン][ガールズ&パンツァー][大洗]大洗「海楽フェスタ」×ガールズ&パンツァー 前日 かくれんぼ

スタンプラリーを巡っている最中に町内にガルパンキャラの(ほぼ)等身大ポップが立てられていることが分かった。(これは 3/24 当日のガルパンかくれんぼのための準備である)

前日なのでまだ かくれんぼイベントは開催されていないんだが、せっかくだから回収できるだけ回収する、という方針転換。

全部で 50 人ぶんくらいあるらしい。

ほぼ現地人の @megtan の尽力によりかなりの人数を回収できた。

肴屋本店 のダージリンさんのクオリティがおかしいんだが

IMG_1386

ティーセットまで準備してある。

IMG_1383

「ねえ、こんな格言を知ってる?」(劇中でダージリンさんがよく使っている言葉)

IMG_1385

以下 順不同

IMG_1335

IMG_1358

IMG_1359

IMG_1360

IMG_1362

IMG_1367

IMG_1369

IMG_1372

IMG_1374

IMG_1376

IMG_1377

IMG_1378

IMG_1379

IMG_1388

IMG_1390

IMG_1391

IMG_1394

IMG_1396

IMG_1399

IMG_1400

IMG_1401

IMG_1404

IMG_1406

IMG_1407

IMG_1410

IMG_1411

IMG_1413

IMG_1417

IMG_1425

IMG_1428

IMG_1429

IMG_1433

カチューシャが凛々しい。

IMG_1436

カチューシャの近くにノンナが居た。

IMG_1438

IMG_1440

IMG_1443

IMG_1446

IMG_1447

IMG_1453

IMG_1454

IMG_1456

IMG_1457

IMG_1461

IMG_1463

IMG_1466

IMG_1468

IMG_1570

IMG_1539

IMG_1538

IMG_1517

IMG_1515

IMG_1511

_ [ガルパン][ガールズ&パンツァー][大洗]大洗「海楽フェスタ」×ガールズ&パンツァー 前日 晩飯

魚忠商店・ちゅう心

これまた @megtan がソッコーで予約してくれた。しかも個室である。

あんこう鍋を食べた。

IMG_1471

IMG_1476

当たり前だが刺し身がうまい。

IMG_1479

_ [ガルパン][ガールズ&パンツァー][大洗]大洗「海楽フェスタ」×ガールズ&パンツァー 前日 ホテル

ホテル大洗 舞凛館

「まりんかん」と読む。

5~10人部屋に 5 人で宿泊したのでかなり広く使えた。合宿のような感覚であった。

かくれんぼの途中で購入したお酒。月の井( 月の井酒造店 )がまたやってくれた。(純米 蝶野亜美「撃破率百二十%」 も作っている)。ガルパン大洗学園の 5 チームの日本酒である。みんなでだらだら飲もう、という当初の予定だったんだが、@megtan がとっとと寝落ちし、私も一杯だけ飲んだものの疲れたのでサクっと寝てしまった。

IMG_1490

本日のツッコミ(全2件) [ツッコミを入れる]

_ エモエモ [茨城来たなら言ってよ!!:(;゙゚'ω゚'):]

_ みわ [行ってた (´・ω・`)]


2013-03-24 :-)

_ [ガルパン][ガールズ&パンツァー][大洗]大洗「海楽フェスタ」×ガールズ&パンツァー 当日 駐車場

ホテルをチェックアウトし、町営駐車場にサクっと駐車した。7 時ですでに半分以上埋まっていた。

駐車場は痛車の展示場になっていた。

カチューシャ!カチューシャ!

IMG_1492

反対は会長だった。

IMG_1495

_ [ガルパン][ガールズ&パンツァー][大洗]大洗「海楽フェスタ」×ガールズ&パンツァー 当日 陸上自衛隊74式戦車

大洗町が自衛隊へお願いし、戦車が展示された。( [茨城県大洗町]町おこしで74式戦車登場 アニメ「ガルパン」きっかけに )

兵器というものを見るのは初めてなんだが、これが戦闘のための道具という物体の存在感なのか。

IMG_1498

_ [ガルパン][ガールズ&パンツァー][大洗]大洗「海楽フェスタ」×ガールズ&パンツァー 当日 朝飯

駐車場に車を置いてから朝飯を求めて漁港へ移動。

大洗海鮮市場 どんぶり亭

釜揚げシラス丼

IMG_1507

_ [ガルパン][ガールズ&パンツァー][大洗]大洗「海楽フェスタ」×ガールズ&パンツァー 当日 かくれんぼ 続き

昨日回収できなかった かくれんぼを探しつつ、大洗町を散歩するなど。

大洗駅へ行き、スタンプラリーをコンプリートしたので景品を貰ってきた。

IMG_1519

@Miya_TF がラッピングバスに気づいたので撮影してきた。運行しているラッピングバスは初めて見た。

IMG_1524

IMG_1528

本格的なタクシーも居た。

IMG_1531

IMG_1533

IMG_1536

_ [ガルパン][ガールズ&パンツァー][大洗]大洗「海楽フェスタ」×ガールズ&パンツァー 当日 イベント

干し芋クレープを食べるなど。

IMG_1544

IMG_1546

陸上自衛隊PRタイム。自衛官が観客からの質問に答えるというもの。質疑応答のやりとりが面白すぎた。

IMG_1548

オオアライダーのパフォーマンスなど

IMG_1551

_ [ガルパン][ガールズ&パンツァー][大洗]大洗「海楽フェスタ」×ガールズ&パンツァー 当日 ガールズ&パンツァートークショー

撮影禁止なので写真なし。

中上育実がサンクス店員の上着を貰ったり。

佐咲紗花によるあんこう音頭があったり。

石破茂 自由民主党幹事長からのビデオメッセージがあったり(!!!) 大洗町が石破茂へ手紙を出した( 石破茂が軍事マニアだから声をかけたようだ )ものの、都合がつかないのでビデオメッセージという形になったらしい。まさか石破茂の口から「ガールズ&パンツァー」の言葉が聞けるとは思ってもみなかった。

トヨタ プリウスが正式に痛車となり、販売されるそうだ。オプションとして西住みほのカーナビが付くんだとか。カーナビは欲しいけど、うーん、プリウスかあ....。

IMG_1557

IMG_1555

_ [ガルパン][ガールズ&パンツァー][大洗]大洗「海楽フェスタ」×ガールズ&パンツァー 当日 MG的模型戦車道予選シンポジウム

@文化センター大ホール

場所を移動してシンポジウムへ。

MG はモデルグラフィックスのこと。

1月号と4月号でガルパンが特集されている。

月刊モデルグラフィックス2013年1月号

月刊モデルグラフィックス2013年4月号

戦車プラモデルの誌上コンテストの紹介というものになっていた。

本来はこの場で優勝を決める予定だったものが、思っていたよりも応募数が多かったため、時間の都合を考えて紹介するにとどめることにしたらしい。

_ [ガルパン][ガールズ&パンツァー][大洗]大洗「海楽フェスタ」×ガールズ&パンツァー 当日 そして解散へ

シンポジウムが終わり、海楽フェスタも終わり、お土産を買ってとっとと帰ることにした。

戦車が積まれていた。

IMG_1562

そして帰路につくのであった。

_ [ガルパン][ガールズ&パンツァー][大洗]大洗「海楽フェスタ」×ガールズ&パンツァー 終わりに

当初はもっとまったりと祭りを過ごすつもりだったんだが、かくれんぼがあったり、祭りも休む間もなく慌ただしく過ごし、思っていたよりも怒涛の 2 日間だった。

大洗町は東日本大震災のときの被災地である。2011年3月11日の震災から復興し、2012年10月からガールズ&パンツァー目当ての観光客が増えはじめ、2012年11月のあんこう祭では過去最高の 6 万人の来場があったというではないか(ソース見つからないんだけど)。なにより驚くべきことは、ガルパン関連のグッズやら「大洗新聞」などはすべて大洗町主導で作成されていることであろう。

私なんぞはガールズ&パンツァー目当てで大洗へ行っているし「被災地のために云々」といった崇高な意思はないんだが、観光客として大洗を訪れ多少なりともお金を使うことで大洗のためになるのであれば、それはとってもうれしいなって。大洗へ行き、その力強さを実際に体験し大洗のひとたちと交流すると、大洗に来てよかった、と思うわけである。それほど近い場所ではないからしょっちゅう行けはしないけど、機会があるたびにまた行きたい。

↓大洗のひとたちの「復興から復幸へ」の思いが書かれている。


2013-03-25 :-(

_ 午前

0520 起床

0830 検討

_ 午後

1300 検討

1720 退勤

_

1900 CDエンコードしたりメール投げたり

2130 飯。ぶりの照焼

2200 ガールズ&パンツァー 第12話 最終回「あとには退けない戦いです!」を見た。戦車バトルの描写がハンパない。3ヶ月待った甲斐があったというものだ。

_ 世界で最初にTwitterのTが「ヒ」に見えることに言及した選手権 - 帰ってきたHolyGrailとHoryGrailの区別がつかない日記

私は 2007年4月12日 - 15:41 だったので負け。


2013-03-26 :-(

_ 午前

0520 起床

0830 検討

_ 午後

1300 検討

1720 退勤

_

1800 自社 && 課題・解決フィット

1930 退勤

2130 飯。豚肉のしょうが焼き


2013-03-27 :-(

_ 午前

0520 起床

0830 検討

_ 午後

1300 検討

1740 退勤

_

1900 スライド修正 && {Libre,Open}Office Impress のアウトラインで箇条書きのレベルを下げて、標準にして、アウトラインにすると箇条書きのレベルが元に戻るだけで 1 日が終わった。こういうところが残念なんだよなあ。なんだかんだで Microsoft Office ってのはよく出来てる。

2130 飯。たらのムニエル


2013-03-28 :-(

_ 午前

0500 起床

0700 デモ対応

0930 検討

_ 午後

1300 検討

1720 退勤

_

1800 自社 && 中間報告

2130 飯

_ ,

本業では客先の偉い人向けのデモを準備するために朝早くから作業し、実際にデモし(説明は客先のプロパーのひとだけど)、自社に戻ってからは 4 月からの新組織での課長と課長代理と現在の課長と係長(上司)に現状報告をするなどし、体力的にも精神的にも疲れた。寝たい


2013-03-29 :-(

_ 午前

0500 起床

0700 デモ対応

0930 検討

_ 午後

1300 検討

1720 退勤

_

1740 コーヒー

1830 飯

2200 飯

_ ロールピッチなのよ

ロールピッチヨー

_ 仕事場宴会

北海道バル小麦 京急川崎駅前店

組織変更に伴い現在の課が分割されるのでお別れ会のようなものが開催された。一時期は 8 人ほどになったんだが、現在は 30 人以上になっている。ずいぶん大きくなりましたなあ、などと。

20:30 までのはずが最後の料理が出てきたのが 20:45 だったり、店を出たのが 21:30 だがとくに何も言われないし、よく分からない店だった。

IMG_0001.JPG

IMG_0002.JPG

IMG_0003.JPG

IMG_0004.JPG

IMG_0006.JPG

IMG_0007.JPG

IMG_0009.JPG

IMG_0012.JPG

_ 仕事場宴会 2次会

係長を含めて 4 人で適当な店に入ってグダグダ話すなど。

IMG_0014.JPG

IMG_0015.JPG


2013-03-30 :-)

_ 午前

0930 起床 && 部屋掃除

1030 おひる。カルボナーラ

_ 午後

1300 チネチッタ

1530 散歩 && まだ桜がある

1600 アニメ消化

IMG_1583

IMG_1584

_

2000 飯。白菜と豚バラ肉の煮物

2100 RR7

_ [花咲くいろは]劇場版 花咲くいろは HOME SWEET HOME を見てきた

@チネチッタ川崎

金沢での先行上映を見に行くほどの熱心なファンではないので普通に一般公開日に見てきた。

若いっていいなあ(性的な意味で)

先着入場者特典は能登麻美子の声のキャラクターだった。

IMG_1574

_ [リッジレーサー7]リッジレーサー7 ARC 2012 弥生GP

ルームを作って走ってみたものの 1 レース目がラグが酷かったので emotion さんにルームオーナーになっていただいた。

  1. ANSΩemotion21 182
  2. ANSΩFLOW 135
  3. ANSΩmiwarin 132
  4. STARGOLD 126
  5. SOLARE 124
  6. REDOGRE 111
  7. ANSΩ三嶋出雲 83
  8. ANSΩ限無 69
  9. ANSΩFryght 18

ぐぬぬ。

ARC のあとに emotion と一緒に ABEILE の練習をするなど。

_ ,

久しぶりにチネチッタに行って驚いたのは、広末涼子はもうけっこうな年齢なのだなあ、ということであった。

_ ,

「彼はC言語を知っているという前提なのに、malloc/free が何をやっているのか、ヒープとは何なのかを知らない」というツッコミを聞いていたんだが、いや、ヒープとかまでいくと OS レベルの話題なので「 C 言語」で一括りにするのは難易度が高いんではないかと思ったが、ところで OS が提供しているメモリ管理というのはユーザーアプリからは結局 libc などのライブラリを経由して使うわけ(だよね)なんだけど、あの日見た OS のインターフェースの名前を僕たちはまだ知らない。

i00.PNG

本日のツッコミ(全2件) [ツッコミを入れる]

_ Fryght [昨日はお疲れ様でした。 胃の不調と出航予定が重なって早々撤退しましたが、久しぶりに楽しかったっす。(そして出航中止..]

_ みわ [お疲れした。相変わらずラグが酷いですが (´Д`;)]


2013-03-31 :-)

_ 午前

0930 起床

1030 おひる。梅うどん

1100 アニメ消化

_ 午後

1300 tumblr

1500 SC

_

2130 飯。塩鮭、じゃがいもとベーコンの煮ころがし

2230 mallc

_ ,

坂本真綾さんの誕生日です

_ [tumblr]tumblr で reblog した画像を取得するだけの簡単なお仕事です

取得できる post に上限があるらしい。

Module: Tumblife::Client::Blog — Documentation for tumblife (1.3.0)

limit (Integer) - default: 20 - The number of posts to return: 1–20, inclusive

キャッシュに YAML とかないわー 上限が無いわー とかいろいろある。

#!/usr/bin/ruby

# -*- encoding: utf-8 -*-

require 'open-uri'
require 'tumblife'
require 'yaml'
require 'pp'

class Cache
  
  def initialize(cache_path)
    @path = cache_path
    read()
  end
  
  def read
    @cache = YAML.load_file(@path) if FileTest.file?(@path)
    @cache ||= []
  end
  
  def write(contents)
    @cache << contents
    File.open(@path, "w").write(YAML.dump(contents))
  end
  
  def include?(contents)
    return @cache.include?(contents)
  end
  
end

class Tumblove
  def initialize(config_path)
  
    @config = YAML.load_file(config_path)
    
    Tumblife.configure {|config|
      config.consumer_key = @config["api"]["consumer_key"]
      config.consumer_secret = @config["api"]["consumer_secret"]
      config.oauth_token = @config["api"]["oauth_token"]
      config.oauth_token_secret = @config["api"]["oauth_secret"]
    }
        
    @client = Tumblife.client
    @base_hostname = @config["post"]["host_name"]
    @cache = Cache.new(File.join(@config["cache"]["directory"], @config["cache"]["filename"]))
  end

  def downloaded?(uri)
    return @cache.include?(uri)
  end
  
  def downloaded(uri)
    @cache.write(uri)
  end
  
  def write(uri)
    return if downloaded?(uri)
    
    filename = File.join(@config["post"]["save_dir"], File.basename(uri))

    open(filename, 'wb') {|outfile|
      open(uri) {|infile|
        outfile.write(infile.read)
      }
    }
    downloaded(uri)
  end

  def max_photos(post)
    photos ||= []
    post.photos.each {|photo|
      max_size = 0
      max_uri = ''

      photo.alt_sizes.each {|alt_size_photo|
        size = alt_size_photo.width
        if size > max_size
          max_size = size
          max_uri = alt_size_photo.url
        end
      }
      photos << max_uri
    }
    return photos
  end

  def get
    posts = @client.posts(@base_hostname)
    posts.posts.each {|post|
      next if post.photos == nil
      photos = max_photos(post)
      photos.each {|photo|
        write(photo)
      }
    }
  end

end


def main(argv)
  config_path = argv[0].nil? ? ENV['HOME'] + '/tumblr.yaml' : argv[0]
  t = Tumblove.new(config_path)
  t.get()
end

main(ARGV)

yaml を準備

cache:
  directory: ./
  filename: tm_cache

api:
  consumer_key: 'xxxx'
  consumer_secret: 'xxxx'
  oauth_token: 'xxxx'
  oauth_secret: 'xxxx'

post:
  host_name: 'miwarin.tumblr.com'

実行

 % ruby tm_get_image.rb tumblr.yaml

あとはこれを jenkins から呼び出すなど。

C:\cygwin\bin\ruby.exe C:\home\rin\work\lang\ruby\tumblr\tm_get_image.rb C:\home\rin\tumblr.yaml

post は最新 20 件しか取得できないのでとりあえずビルドトリガは @hourly を指定しておいた。

参考

_ [メモリ割り付け][sbrk][brk][malloc]malloc(3)

結局ライブラリ関数 malloc(3) はシステムコール sbrk(2) を呼び出す。

「詳解UNIXプログラミング」より

UNIXシステムでは、各システムコールに対して、同じ名前の関数を標準Cライブラリとして与える。ユーザープロセスは、Cの標準呼び出し系列を用いてこの関数を呼び出す。すると、この関数はシステムで必要とされる適切な技法を用いてカーネルサービスを起動する。例えば、関数では、Cの関数の引数を汎用レジスタに置いてから、カーネルに対してソフトウェア割り込みを発生させる機械語命令を実行する。(p.18)

メモリ割り付け関数mallocを例として考えよう。メモリ割り付けとそのガーベージコレクションには(ベストフィット、ファーストフィットなどの)多くの方式がある。メモリ割り付けを処理するUNIXのシステムコールはsbrk(2)だが、これは汎用メモリ管理機構ではない。プロセスのアドレス空間をい指定したバイト数だけ増減する。この空間をどのように管理するかは、プロセスの責任である。メモリ割り付け関数mallocは、1つの特定の割り付け方式を実現する。この方式に不満ならばs,独自のmalloc関数を定義できるが、sbrkシステムコールは使うだろう。(p.19

NetBSD マニュアル。「21世紀にもなってsbrkはないわー」(意訳)と言っている。

sbrk - NetBSD Manual Pages

The brk and sbrk functions are legacy interfaces from before the advent of modern virtual memory management.

i386 の実装はこちら。アセンブラなので誰でも読めます。

malloc 実装はいろいろある。

FreeBSD 7.0 以降と NetBSD 5.0 以降では、古い実装 (phkmalloc) を Jason Evans が開発した jemalloc に置換した。phkmalloc はマルチスレッド環境でのスケーラビリティに問題があった。ロックの衝突を防ぐため、jemalloc はCPU毎に分離した "arena" と呼ばれる領域を用意する。

NetBSD の malloc と jemalloc はこちら。C言語なので誰でも読めます。

mallocは

  1. malloc
  2. pubrealloc
  3. imalloc
  4. malloc_bytes

と呼ばれ、確保したメモリを page_dir にリンクリストとして繋げていくらしい。

struct pginfo {
    struct pginfo	*next;	/* next on the free list */
    void		*page;	/* Pointer to the page */
    u_short		size;	/* size of this page's chunks */
    u_short		shift;	/* How far to shift for this size chunks */
    u_short		free;	/* How many free chunks */
    u_short		total;	/* How many chunk */
    u_int		bits[1]; /* Which chunks are free */
};

jemalloc は誰かがんばって (´Д`;)

4894713195