<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="rss.css" type="text/css"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
	<title>masterq diary</title>
	<link>http://d.masterq.net/</link>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://d.masterq.net/" />
	<atom:link rel="hub" href="http://pubsubhubbub.appspot.com/" />
	<description>壁は卵のために http://www.haaretz.com/hasen/spages/1064909.html</description>
	<webMaster>Kiwamu Okabe</webMaster>
	<copyright>Copyright 2012 Kiwamu Okabe, copyright of comments by respective authors</copyright>
	<language>ja-JP</language>
	<item>
<link>http://d.masterq.net/?date=20120207#p01</link>
<guid>http://d.masterq.net/?date=20120207#p01</guid>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://d.masterq.net/?date=20120207#p01" />
<pubDate>Tue, 07 Feb 2012 13:44:10 +0900</pubDate>
<title>はてなセリフを使ってみた</title>
<author>Kiwamu Okabe</author>
<category>joke</category>
<description>楽しいです。</description>
<content:encoded><![CDATA[<h3><a href="http://serif.hatelabo.jp/">はてなセリフ</a>を使ってみた</h3><!-- google_ad_section_start -->
<p>楽しいです。
</p>
<a href="http://serif.hatelabo.jp/2b0a04a1636b501e0ad202e672039491b05690d9/10a416b8f922a8879f780bdc7145aac4313c5612"><img src="http://serif.hatelabo.jp/images/cache/2b0a04a1636b501e0ad202e672039491b05690d9/10a416b8f922a8879f780bdc7145aac4313c5612.gif" border=0 alt="ニートになれ - Be N... - マーク・ザッカーバーグからの手紙 - はてなセリフ" /></a>

<!-- google_ad_section_end -->

<p><a href="http://d.masterq.net/?date=20120207#c">ツッコミを入れる</a></p>]]></content:encoded>
</item>
<item>
<link>http://d.masterq.net/?date=20120130#p01</link>
<guid>http://d.masterq.net/?date=20120130#p01</guid>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://d.masterq.net/?date=20120130#p01" />
<pubDate>Mon, 30 Jan 2012 18:28:15 +0900</pubDate>
<title>ThinkPadのOS代金は返金できませんよ、というお話</title>
<author>Kiwamu Okabe</author>
<category>notepc</category>
<category>pc</category>
<category>windows</category>
<description>ひょっとするとやる人がいるかもしれないのでメモ。   IBM製時代から愛用しているThinkPadユーザです。   現在ThinkPad X220iの購入を検討しているのですが、 Windowsを含めたプリインストールソフトウェアをもはや全く使用していません。   プリインストールソフトウェアのみの返金お願いすることはできますでしょうか。   http://www.microsoft.com/About/Legal/EN/US/IntellectualProperty/UseTerms/Default.aspx   にあるWindows 7_Home Premium_Japanese_d895bfea-9150-45cd-9872-fa26bcd52452.pdf によると、、、   &gt; 本ソフトウェアを使用することにより、お客様は本ライセンス条項に同意されたものとします。本ライ &gt; センス条項に同意されない場合、本ソフトウェアを使用することはできません。この場合、お支払いい &gt; ただいた金額の払戻しに関する方針については、製造業者またはインストール業者にお問い合わせくだ &gt; さい..</description>
<content:encoded><![CDATA[<h3>ThinkPadのOS代金は返金できませんよ、というお話</h3><!-- google_ad_section_start -->
<p>ひょっとするとやる人がいるかもしれないのでメモ。
</p>
<pre>
IBM製時代から愛用しているThinkPadユーザです。
 
現在ThinkPad X220iの購入を検討しているのですが、
Windowsを含めたプリインストールソフトウェアをもはや全く使用していません。
 
プリインストールソフトウェアのみの返金お願いすることはできますでしょうか。
 
http://www.microsoft.com/About/Legal/EN/US/IntellectualProperty/UseTerms/Default.aspx
 
にあるWindows 7_Home Premium_Japanese_d895bfea-9150-45cd-9872-fa26bcd52452.pdf
によると、、、
 
> 本ソフトウェアを使用することにより、お客様は本ライセンス条項に同意されたものとします。本ライ
> センス条項に同意されない場合、本ソフトウェアを使用することはできません。この場合、お支払いい
> ただいた金額の払戻しに関する方針については、製造業者またはインストール業者にお問い合わせくだ
> さい。お客様は、この方針に従う必要があります。
 
と記載があります。
LenovoとしてこのWindowsのEULAについての見解をいただけると大変助かります。
 
よろしくお願いいたします。
</pre>

<p>というメールをレノボさんに送ったところ、結局以下の理由で返金できないみたいです。
</p>
<pre>
購入時に同意いただいた販売規約に記載がございます。 
4、返品についての中の4,1から4.3を御確認ください。 
 
ご面倒をおかけいたしますが、何卒宜しくお願い申し上げます。 
 
販売規約 
http://shopap.lenovo.com/SEUILibrary/controller/e/jpweb/LenovoPortal/ja_JP/\
special-offers.workflow:ShowPromo?LandingPage=/All/Japan/PUBLIC/Selling_agreement/public 
</pre>

<p>ハードと一緒に返金ってことになっちゃいますね。
やっぱりUbuntuかなんかのプリインストールモデルが欲しくなります。。。
</p>
<!-- google_ad_section_end -->

<p><a href="http://d.masterq.net/?date=20120130#c">ツッコミを入れる</a></p>]]></content:encoded>
</item>
<item>
<link>http://d.masterq.net/?date=20111221#p01</link>
<guid>http://d.masterq.net/?date=20111221#p01</guid>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://d.masterq.net/?date=20111221#p01" />
<pubDate>Thu, 22 Dec 2011 14:39:50 +0900</pubDate>
<title>Haskell Advent Calendar 2011: 「簡約!? λカ娘(二期)」とHaskell製OSの紹介</title>
<author>Kiwamu Okabe</author>
<category>haskell</category>
<description>突然でゲソが、コミックマーケット81に関数型の本が出るでゲソ。 みんな買ってほしいでゲソ。     第0章 クラスタリングしなイカ? 第1章 Copilot への希望と絶望の相転移 #   がもくじで、@master_qは第1章を書いたらしいでゲソ。 この章は Copilot というHaskellのDSLを使ったプログラミングの話でゲソ。 Copilotを使うとHaskellの中でDSLを使って作った設計が ライブラリ依存の少ないC言語ソースコードに変換できるでゲソ。  今日はどうして↑のような記事を書きたくなったのか、 という話をしようと思うでゲソ。  みんなこの日記記事をどんなOSの上で見ているでゲソ？ Windows,Mac,Linux,FreeBSD,iPad,Android,BeOS,超漢字、そんなところじゃなイカ？ そのOSはどんな言語で書かれているかもちろん知っていると思うでゲソ。 おそらくはC言語、良くてC++でゲソ。 (Java OSやLispマシンで見ている人はたぶんいないと思うでゲソ。) 設計者の願望としては、 できればもっと安全な言語でkernelや基盤ライ..</description>
<content:encoded><![CDATA[<h3><a href="http://partake.in/events/eaea52c2-61ef-46d5-a855-3a2dde459e3a">Haskell Advent Calendar 2011</a>: <a href="http://www.paraiso-lang.org/ikmsm/books/c81.html">「簡約!? λカ娘(二期)」</a>とHaskell製OSの紹介</h3><!-- google_ad_section_start -->
<p>突然でゲソが、コミックマーケット81に<a href="http://www.paraiso-lang.org/ikmsm/books/c81.html">関数型の本</a>が出るでゲソ。
みんな買ってほしいでゲソ。
</p>
<img title="λカ娘(二期)" src="http://www.paraiso-lang.org/ikmsm/images/c81-cover-s.jpg"></img>

<pre>
第0章 クラスタリングしなイカ?
第1章 Copilot への希望と絶望の相転移 # <= コレ書いた
第2章 加速しなイカ?!
第3章 Java VM 上で tail call しなイカ?
第4章 関数型イカガール第 3 話
第5章 映画けいさん!
</pre>

<p>がもくじで、@master_qは第1章を書いたらしいでゲソ。
この章は
<a href="http://leepike.github.com/Copilot/">Copilot</a>
というHaskellのDSLを使ったプログラミングの話でゲソ。
Copilotを使うとHaskellの中でDSLを使って作った設計が
ライブラリ依存の少ないC言語ソースコードに変換できるでゲソ。
</p>
<p>今日はどうして↑のような記事を書きたくなったのか、
という話をしようと思うでゲソ。
</p>
<p>みんなこの日記記事をどんなOSの上で見ているでゲソ？
Windows,Mac,Linux,FreeBSD,iPad,Android,BeOS,超漢字、そんなところじゃなイカ？
そのOSはどんな言語で書かれているかもちろん知っていると思うでゲソ。
おそらくはC言語、良くてC++でゲソ。
(Java OSやLispマシンで見ている人はたぶんいないと思うでゲソ。)
設計者の願望としては、
できればもっと安全な言語でkernelや基盤ライブラリを設計したいところでゲソ。
よく考えてみて欲しいでゲソ。
アプリケーションはメモリ破壊を起こすとSEGVや動作不良を起こすだけでゲソ。
しかしkernelがメモリ破壊を起こしたらシステム全体が停止してしまうでゲソ!
アプリケーションではなく、むしろkernelにこそ型安全が必要なんじゃなイカ。
</p>
<p>じゃぁコンパイルも持っている関数型言語で作られたOSはないのでゲソ？
その試みはあるんでゲソ。
今日はその中から<a href="http://web.cecs.pdx.edu/~kennyg/house/">House</a> 
というプロジェクトを紹介するでゲソ。
</p>
<p>まずはHouseがどんなものか見てみるでゲソ。<a href="http://web.cecs.pdx.edu/~kennyg/house/House.iso">http://web.cecs.pdx.edu/~kennyg/house/House.iso</a>
からcdromイメージをダウンロードして起動してみるでゲソ。
</p>
<pre>
$ ls -l House.iso
-rw-r--r-- 1 kiwamu kiwamu 3311616  1月 23  2009 House.iso
$ qemu-system-i386 -cdrom House.iso
</pre>

<a href="http://www.flickr.com/photos/masterq/6551826449/" class="flickr"><img title="fyazo20111222104313" alt="fyazo20111222104313" src="http://farm8.staticflickr.com/7141/6551826449_6db5df4374.jpg" class="flickr" width="500" height="375"></a>

<p>grubが起動したでゲソ。
。。。なんかgraphics modeとかいきなり書いたるでゲソ。
気になるからgraphics modeで起動するでゲソ。
</p>
<a href="http://www.flickr.com/photos/masterq/6551833643/" class="flickr"><img title="fyazo20111222104516" alt="fyazo20111222104516" src="http://farm8.staticflickr.com/7023/6551833643_01cb4c8306.jpg" class="flickr" width="500" height="375"></a>

<p>うぼぁー!なんかウィンドウシステムが起動したでゲソ!すごいでゲソ!
qemuのネットワークデバイスには対応してないみたいでゲソが、
telnetコマンドもあるでゲソ。
</p>
<p>ところでこのHouseはいったいどこからどこまでがHaskellで書かれているんでゲソ？
ソースコードのREADMEからひろう限りだと
</p>
<pre>
------- C land
start.S   | Load static, flat-memory GDT (segment descriptors)
          | Initialize the memory to 0xCC (IA32 breakpoint instruction)
          | Initialize the C stack
          | Jump to c_start
c_start.c | Initialize PIC (IRQs 0-15 mapped to interrupts 0x20-0x2F)
          | Initialize IDT (interrupt vectors)
          | Initialize Haskell block allocator (MBlock_init)
          | Pass control to the RTS
------- Haskell land
Main.hs   | Start a console driver which handles a basic x86 text console
          | Start a keyboard controller
          | Start an idle thread
          | Bind the keyboard and console driver to a simple Readline clone
          |     which allows shell-like interaction with the system
</pre>

<p>すごいじゃなイカ。
初期化以外はHaskellで書かれているでゲソ。
</p>
<p>さっきのウィンドウシステム上でのプログラムはkernel/Gadgets
にありそうでゲソ。
そしてkernel/userにはユーザ空間で動作するプログラムがC言語で書かれているでゲソ。。。
</p>
<p>来年のお正月には<a href="http://ogi.altocumulus.org/~hallgren/ICFP2005/">A Principled Approach to Operating System Construction in Haskell</a>を読みながらHouseのソースコードをゆっくり読むのがいいかもでゲソー。
</p>
<p>[2011/12/22追記]
LighthouseとHouseの2つのプロジェクトについて文章の中でごちゃまぜに使っていたが、
@shelarcyさんから
「House を<a href="http://research.microsoft.com/en-us/um/people/simonpj/papers/lw-conc/index.htm">Lightweight Concurrency Primitives for GHC</a>を使って OS のスケジューラーを実装するよう改良したのが Lighthouse です。」
との指摘をもらって、"Lighthouse"という単語を全て"House"に置き換えた。
</p>
<!-- google_ad_section_end -->

<p><a href="http://d.masterq.net/?date=20111221#c">ツッコミを入れる</a></p>]]></content:encoded>
</item>
<item>
<link>http://d.masterq.net/?date=20111207#p01</link>
<guid>http://d.masterq.net/?date=20111207#p01</guid>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://d.masterq.net/?date=20111207#p01" />
<pubDate>Thu, 08 Dec 2011 13:52:20 +0900</pubDate>
<title>カーネル／VM Advent Calendar 7日目: NetBSD bootloaderのカスタマイズとテスト手順</title>
<author>Kiwamu Okabe</author>
<category>netbsd</category>
<description>みなさんNetBSD使ってるでゲソ？ NetBSDの海は美しいでゲソ。泳いでいるだけで幸せな気分になるでゲソ。 NetBSDにはlibsaのようなkernelのない場所でも使えるライブラリもそろっていて bootloaderでもallocなどが使えて楽チンでゲソ。 今日はNetBSD bootloaderのコンパイルとそのテスト手順について解説するでゲソ。 なにはともあれNetBSDのソースコードを入手するでゲソ。   $ pwd /home/kiwamu/src/netbsd/5.1 $ cvs -d :pserver:anoncvs@anoncvs.netbsd.org:/cvsroot login $ cvs -d :pserver:anoncvs@anoncvs.netbsd.org:/cvsroot co -r netbsd-5-1-RELEASE src $ cd src/   次にツールチェーンだけコンパイルしてPATHを通すでゲソ。   $ pwd /home/kiwamu/src/netbsd/5.1/src $ ./build.sh -m i386 tools ..</description>
<content:encoded><![CDATA[<h3><a href="http://atnd.org/events/21910">カーネル／VM Advent Calendar 7日目</a>: NetBSD bootloaderのカスタマイズとテスト手順</h3><!-- google_ad_section_start -->
<p>みなさんNetBSD使ってるでゲソ？
NetBSDの海は美しいでゲソ。泳いでいるだけで幸せな気分になるでゲソ。
NetBSDにはlibsaのようなkernelのない場所でも使えるライブラリもそろっていて
bootloaderでもallocなどが使えて楽チンでゲソ。
今日はNetBSD bootloaderのコンパイルとそのテスト手順について解説するでゲソ。
なにはともあれNetBSDのソースコードを入手するでゲソ。
</p>
<pre>
$ pwd
/home/kiwamu/src/netbsd/5.1
$ cvs -d :pserver:anoncvs@anoncvs.netbsd.org:/cvsroot login
$ cvs -d :pserver:anoncvs@anoncvs.netbsd.org:/cvsroot co -r netbsd-5-1-RELEASE src
$ cd src/
</pre>

<p>次にツールチェーンだけコンパイルしてPATHを通すでゲソ。
</p>
<pre>
$ pwd
/home/kiwamu/src/netbsd/5.1/src
$ ./build.sh -m i386 tools
$ ln -sf ~/src/netbsd/5.1/src/tooldir.Linux-3.1.0-1-amd64-x86_64/bin ~/tooldir_netbsd5.1
$ echo $PATH
/home/kiwamu/tooldir_netbsd5.1:/home/kiwamu/bin:...
$ which nbmake-i386
/home/kiwamu/tooldir_netbsd5.1/nbmake-i386
</pre>

<p>bootxxとbootをコンパイルするでゲソ。
</p>
<pre>
$ pwd
/home/kiwamu/src/netbsd/5.1/src/sys/arch/i386/stand/bootxx/bootxx_cd9660
$ nbmake-i386
$ cd ../../boot/
$ pwd
/home/kiwamu/src/netbsd/5.1/src/sys/arch/i386/stand/boot
$ nbmake-i386
</pre>

<p>これでNetBSD bootloaderのコンパイルが完了したでゲソ。
とりあえずqemu上で実行してみるでゲッソ!
</p>
<pre>
$ pwd
/home/kiwamu/src/netbsd/5.1/src/sys/arch/i386/stand/boot
$ vi qemu.sh
#!/bin/sh
 
rm -rf cdrom bootxx_cd9660 boot.iso
 
mkdir -p cdrom
cp biosboot/boot cdrom/
cp ../bootxx/bootxx_cd9660/bootxx_cd9660 ./
 
qemu-img create boot.iso 16M
nbmakefs -t cd9660 -o 'bootimage=i386;bootxx_cd9660,no-emul-boot' boot.iso cdrom
qemu-system-i386 -curses -cdrom boot.iso
$ chmod +x qemu.sh
$ ./qemu.sh
 >> NetBSD/x86 BIOS Boot, Revision 5.2 (from NetBSD 5.1)
 >> Memory: 637/130048 k
 Press return to boot now, any other key for boot menu
 booting cd0a:netbsd - starting in 0 seconds.
 > help
 commands are:
 boot [xdNx:][filename] [-12acdqsvxz]
      (ex. "hd0a:netbsd.old -s"
 ls [path]
 dev xd[N[x]]:
 consdev {pc|com[0123]|com[0123]kbd|auto}
 modules {enabled|disabled}
 load {path_to_module}
 multiboot [xdNx:][filename] [<args>]
 help|?
 quit
 >
</pre>

<p>うん。ちゃんと起動したでゲソ。qemuは偉大でゲソ!
せっかくなのでなんかコマンドを追加してみなイカ？
</p>
<pre>
$ pwd
/home/kiwamu/src/netbsd/5.1/src/sys/arch/i386/stand/boot
$ cvs diff -u
Index: boot2.c
===================================================================
RCS file: /home/kiwamu/cvs_mirror/NetBSD-CVSROOT/src/sys/arch/i386/stand/boot/boot2.c,v
retrieving revision 1.38.4.2
diff -c -u -r1.38.4.2 boot2.c
--- boot2.c	14 Feb 2010 14:01:08 -0000	1.38.4.2
+++ boot2.c	7 Dec 2011 06:00:35 -0000
@@ -134,6 +134,8 @@
 void	command_modules(char *);
 void	command_load(char *);
 void	command_multiboot(char *);
+void	command_fib(char *);
+void	fib(int, int, int);
 
 const struct bootblk_command commands[] = {
 	{ "help",	command_help },
@@ -146,6 +148,7 @@
 	{ "modules",	command_modules },
 	{ "load",	command_load },
 	{ "multiboot",	command_multiboot },
+	{ "fib",	command_fib },
 	{ NULL,		NULL },
 };
 
@@ -860,3 +863,36 @@
 		printf("boot returned\n");
 }
 
+void
+fib(int n, int f1, int f2)
+{
+	int f3;
+
+	if (n <= 0) {
+		return;
+	}
+	n--;
+
+	f3 = f1 + f2;
+	printf("%d\n", f3);
+
+	fib(n, f2, f3);
+}
+
+void
+command_fib(char *arg)
+{
+	int num;
+
+	num = atoi(arg);
+	switch (num) {
+	case 0:
+		return;
+	case 1:
+		printf("0\n");
+		return;
+	}
+	printf("0\n1\n");
+
+	fib(num - 2, 0, 1);
+}
$ nbmake-i386
$ ./qemu.sh
 >> NetBSD/x86 BIOS Boot, Revision 5.2 (from NetBSD 5.1)
 >> Memory: 637/130048 k
 Press return to boot now, any other key for boot menu
 booting cd0a:netbsd - starting in 0 seconds.
 > fib 10
 0
 1
 1
 2
 3
 5
 8
 13
 21
 34
 >
</pre>

<p>ちゃんとコマンド追加されてるでゲッソ。
NetBSDの海は楽しいじゃなイカー。
</p>
<p>[修正: 2011/12/08]
<pre>
* @h_kenkenさんから「libsa に malloc は無い気が。。。alloc はありますが。」
  との指摘を受けて、s/malloc/alloc/
</pre>
</p>
<!-- google_ad_section_end -->

<p><a href="http://d.masterq.net/?date=20111207#c">ツッコミを入れる</a></p>]]></content:encoded>
</item>
	</channel>
</rss>

