<?xml version="1.0" encoding="UTF-8" ?>
<feed xml:lang="ja" xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:thr="http://purl.org/syndication/thread/1.0">
  <title type="text">funattii's small small world</title>
  <subtitle type="html">funattii&#039;s small small diary</subtitle>
  <link rel="self" type="application/atom+xml" href="http://funatti.blog.shinobi.jp/atom"/>
  <link rel="alternate" type="text/html" href="http://funatti.blog.shinobi.jp/"/>
  <updated>2008-12-08T22:55:44+09:00</updated>
  <author><name>funatii</name></author>
  <generator uri="//www.ninja.co.jp/blog/" version="0.9">忍者ブログ</generator>
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" />
  <entry>
    <id>funatti.blog.shinobi.jp://entry/17</id>
    <link rel="alternate" type="text/html" href="http://funatti.blog.shinobi.jp/etc/%E5%BC%95%E8%B6%8A%E3%81%97" />
    <published>2010-06-17T21:10:26+09:00</published> 
    <updated>2010-06-17T21:10:26+09:00</updated> 
    <category term="etc" label="etc" />
    <title>引越し</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[あんまり更新ないブログでしたが、<br />
<br />
http://d.hatena.ne.jp/funatti/<br />
<br />
に引越ししました。コンテンツはそのままです。<br />
<br />]]> 
    </content>
    <author>
            <name>funatii</name>
        </author>
  </entry>
  <entry>
    <id>funatti.blog.shinobi.jp://entry/16</id>
    <link rel="alternate" type="text/html" href="http://funatti.blog.shinobi.jp/etc/scala.swing.frame%E3%81%A7windowclosing%E3%82%92%E3%82%AD%E3%83%A3%E3%83%B3%E3%82%BB%E3%83%AB%E3%81%97%E3%81%9F%E3%81%84" />
    <published>2010-01-27T13:25:45+09:00</published> 
    <updated>2010-01-27T13:25:45+09:00</updated> 
    <category term="etc" label="etc" />
    <title>scala.swing.FrameでWindowClosingをキャンセルしたい</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[javaでSwingのJFrameを扱う場合、[&times;]ボタンをキャンセルしたいと思ったら<br />
<br />
&nbsp; setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE)<br />
<br />
ってできるのに、scala.swing.Frameじゃできない！<br />
<br />
<br />
うぅぅ困ったと思っていたら、実はFrameにはpeerというメンバがあり、それがjavax.swing.JFrameだということを発見！<br />
<br />
<br />
ってことはFrame内で、<br />
<br />
&nbsp; peer.setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE)<br />
<br />
と書けばいいんじゃないか&hellip;？と思ったらビンゴ＾＾<br />
<br />
しかもウィンドウが閉じられる直前にcloseOperaion()が呼ばれることも知ったので、<br />
<br />
&nbsp; override def closeOperation(){<br />
&nbsp;&nbsp;&nbsp; (Windowの終了処理)<br />
&nbsp; }<br />
<br />
を書けばおk<br />]]> 
    </content>
    <author>
            <name>funatii</name>
        </author>
  </entry>
  <entry>
    <id>funatti.blog.shinobi.jp://entry/15</id>
    <link rel="alternate" type="text/html" href="http://funatti.blog.shinobi.jp/scala/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%81%AB%E5%AF%BE%E5%BF%9C%E3%81%97%E3%81%9F%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E4%BD%9C%E3%82%8B" />
    <published>2010-01-19T23:21:10+09:00</published> 
    <updated>2010-01-19T23:21:10+09:00</updated> 
    <category term="Scala" label="Scala" />
    <title>スクリプトに対応したアプリケーションを作る</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[Scalaを始めてもうすぐ１週間。やっとScalaに慣れてきました。<br />
<br />
ところで、Scalaというのはスクリプト言語であると言われます。スクリプト言語とは、<strong>あるアプリケーションの上で動かせる言語のこと</strong>ですが、実際、自分の作ったアプリケーションにスクリプトを組み込むにはどうすればいいんだろうとふと思いました。<br />
<br />
<br />
実は、スクリプト言語には必ずコンパイラもしくはインタプリタが準備されていて、ライブラリのどこかに隠されているんです。<br />
<br />
例えばLuaは、C/C++で書かれたプログラムに簡単にスクリプトを組み込むことができます。<br />
<br />
<div style="margin-left: 40px;">（参考リンク）<br />
&quot;C++からLuaスクリプトを実行する&quot;<br />
<a href="http://blog.livedoor.jp/akf0/archives/51600634.html" target="_blank">http://blog.livedoor.jp/akf0/archives/51600634.html</a><br />
<br />
&quot;C言語アプリケーションに Pythonを組み込む&quot;<br />
<a href="http://d.hatena.ne.jp/Wacky/20060103/1136292735" target="_blank">http://d.hatena.ne.jp/Wacky/20060103/1136292735</a><br />
<br />
</div>
ではJavaではどうするかといえば、Bean Scripting Framework(BSF)を使う方法が１つと、C/C++の場合と同様に、言語ごとに準備されているコンパイラ/インタプリタを呼び出すという方法があります。<br />
<br />
<br />
<div style="margin-left: 40px;">（参考リンク)<br />
&quot;Embedded Scala Interpreter&quot;<br />
<a href="http://speaking-my-language.blogspot.com/2009/11/embedded-scala-interpreter.html" target="_blank">http://speaking-my-language.blogspot.com/2009/11/embedded-scala-interpreter.html</a><br />
<br />
&quot;Java技術最前線　11月のお題「Java関連スクリプト言語」第2回&quot;<br />
<a href="http://itpro.nikkeibp.co.jp/article/COLUMN/20051114/224543/" target="_blank">http://itpro.nikkeibp.co.jp/article/COLUMN/20051114/224543/</a></div>
<blockquote> </blockquote><br />
<br />
以下は、Scala上でScala＆JRubyを走らせる方法です。しかも同時に走らせてみようという無謀なものです。<br />
<br />
Scalaで組み込みインタプリタを実行すると、実行時にscala-compile.jarとscala-library.jarが上手く読み取られず、&quot;object scala not found&quot;というエラーが出てしまいます。そのあたりの細工をちょこっと行っているため、JRubyインタプリタに比べて冗長な表現になっています。。残念。。<br />
<br />
（ただし以下のコードを実行するには、jruby.jarをプロジェクトのライブラリとしてリンクしておく必要があります。その方法はNetBeansのリファレンスや、JARの読み込み方法を解説したブログなどを参照してください。）<br />
<br />
<pre><code><br /><span style="color: rgb(0, 0, 153);">package</span> scalaonscala<br /><br /><span style="color: rgb(0, 0, 153);">import</span> scala.tools.nsc._<br /><span style="color: rgb(0, 0, 153);">import</span> scala.util.DynamicVariable<br /><br /><span style="color: rgb(0, 0, 153);">import</span> org.jruby.Ruby<br /><br /><br /><span style="color: rgb(0, 0, 153);">class</span> Evaluator {<br />  val settings = <span style="color: rgb(0, 0, 153);">new</span> GenericRunnerSettings(println _)<br />  val i = <span style="color: rgb(0, 0, 153);">new</span> Interpreter(settings)<br /><br />  {<br />    val origBootclasspath = settings.bootclasspath.value<br />    val compilerPath = jarPathOfClass(<span style="color: rgb(0, 153, 0);">&quot;scala.tools.nsc.Interpreter&quot;</span>)<br />    val libPath = jarPathOfClass(<span style="color: rgb(0, 153, 0);">&quot;scala.ScalaObject&quot;</span>)<br />    val pathList = List(compilerPath,libPath)<br />    settings.bootclasspath.value = (origBootclasspath :: pathList).mkString(java.io.File.separator)<br />  }<br /><br />  def eval(line: String): Any = {<br />    i.interpret(line)<br />    Evaluator.result.value<br />  }<br /><br />  def jarPathOfClass(className: String) = {<br />    val resource = className.split(<span style="color: rgb(0, 153, 0);">'.'</span>).mkString(<span style="color: rgb(0, 153, 0);">&quot;/&quot;</span>, <span style="color: rgb(0, 153, 0);">&quot;/&quot;</span>, <span style="color: rgb(0, 153, 0);">&quot;.class&quot;</span>)<br />    val path = getClass.getResource(resource).getPath<br />    val indexOfFile = path.indexOf(<span style="color: rgb(0, 153, 0);">&quot;file:&quot;</span>)<br />    val indexOfSeparator = path.lastIndexOf(<span style="color: rgb(0, 153, 0);">'!'</span>)<br />    path.substring(indexOfFile, indexOfSeparator)<br />  }<br />}<br /><br />object Evaluator {<br />  val result = <span style="color: rgb(0, 0, 153);">new</span> DynamicVariable[Any](())<br />}<br /><br />object EvalTest {<br />  def main(args: Array[String]): Unit = {<br />    val e = <span style="color: rgb(0, 0, 153);">new</span> Evaluator<br />    <br />    println(<span style="color: rgb(0, 153, 0);">&quot;Hello, Scala!&quot;</span>)<br />    var r = e.eval(<span style="color: rgb(0, 153, 0);">&quot;println(\&quot;Hello, Scala on Scala!\&quot;)&quot;</span>)<br />    println(r)<br /><br />    r = e.eval(<span style="color: rgb(0, 153, 0);">&quot;println(\&quot;Hello, Scala on Scala!!!!\&quot;)&quot;</span>)<br />    println(r)<br /><br />    val runtime = Ruby.getDefaultInstance();<br />    runtime.evalScriptlet(<span style="color: rgb(0, 153, 0);">&quot;puts \&quot;Hello, Ruby on Scala!\&quot;&quot;</span>);<br />    runtime.evalScriptlet(<span style="color: rgb(0, 153, 0);">&quot;puts \&quot;Hello, Ruby on Scala!!!!!\&quot;&quot;</span>);<br />  }<br />}<br /><br />object Hoge {<br />  def somefunc = <span style="color: rgb(0, 153, 0);">&quot;mogemoge&quot;</span><br />}<br /></code></pre>
<br />
<br />
<br />
実行してみた結果がコレ&darr;<br />
<br />
<a href="//funatti.blog.shinobi.jp/File/bda66344.png" target="_blank"><img border="0" src="//funatti.blog.shinobi.jp/Img/1263910185/" alt="" /></a><br />
<br />
<br />
おぉ！ちゃんと実行されています！<br />
<br />
ただし、インタプリタが起動するには時間がかかるらしく、Ruby, Scalaのいずれも最初の１行を処理するのに数秒かかり、次の１行からは瞬時に実行されました。<br />
<br />
<br />
ここでびっくりするのは、Scala上でScalaが動いているということ。ちなみに、Javaの上でJavaを走らせることも可能です。<br />
<br />
実際、このような方法でスクリプトはアプリケーションに実装されています。GimpやBlenderはPythonを実装していますし、MaxはJava/JavaScript/Pythonを実装しています。<br />
<br />
<br />
<br />
これで自作ソフトでもスクリプトが使えるようになりますね！すばらしすすす。]]> 
    </content>
    <author>
            <name>funatii</name>
        </author>
  </entry>
  <entry>
    <id>funatti.blog.shinobi.jp://entry/14</id>
    <link rel="alternate" type="text/html" href="http://funatti.blog.shinobi.jp/scala/%E9%9B%86%E5%90%88%E3%81%A8%E5%86%99%E5%83%8F" />
    <published>2010-01-19T12:14:23+09:00</published> 
    <updated>2010-01-19T12:14:23+09:00</updated> 
    <category term="Scala" label="Scala" />
    <title>集合と写像</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[おはようございます。数式をブログに貼り付けれる「<a target="_blank" href="http://formula.s21g.com/">Formula</a>」というをサービスを見つけたので早速サンプル。<br />
<br />
&nbsp;&nbsp; <a href="http://formula.s21g.com/?%5CDelta%20%3D%20%7B%20%5Cpartial%5E2%20%5Cover%20%7B%5Cpartial%20x_1%5E2%7D%20%7D%20+%20%7B%20%5Cpartial%5E2%20%5Cover%20%7B%5Cpartial%20x_2%5E2%7D%20%7D%20%20+%20%5Ccdots%20+%20%7B%20%5Cpartial%5E2%20%5Cover%20%7B%5Cpartial%20x_n%5E2%7D%20%7D"><img src="http://formula.s21g.com/?%5CDelta%20%3D%20%7B%20%5Cpartial%5E2%20%5Cover%20%7B%5Cpartial%20x_1%5E2%7D%20%7D%20+%20%7B%20%5Cpartial%5E2%20%5Cover%20%7B%5Cpartial%20x_2%5E2%7D%20%7D%20%20+%20%5Ccdots%20+%20%7B%20%5Cpartial%5E2%20%5Cover%20%7B%5Cpartial%20x_n%5E2%7D%20%7D.png" alt="" /></a><br />
<br />
綺麗に表示されてますでしょうか？？ 本当はWikipediaでいうところのTexのタグがほしいところだけど、まぁしょうがないか。<br />
<br />
<br />
------<br />
<br />
<br />
昨日Ackeyと一緒に圏論を勉強したら、関数型プログラミングの本質がだいぶわかってきました。<br />
<br />
関数型指向では、全ての問題は集合Xから集合Yへの写像fがあるとして、<br />
<br />
&nbsp;&nbsp; <a href="http://formula.s21g.com/?y%20%3D%20f(x)%20%5Cindent%20x%20%5Cin%20X,%20y%20%5Cin%20Y"><img src="http://formula.s21g.com/?y%20%3D%20f(x)%20%5Cindent%20x%20%5Cin%20X,%20y%20%5Cin%20Y.png" alt="" /></a><br />
<br />
と表現できることがもっとも&quot;扱いやすく&quot;、美しいとされているみたいです。<br />
<br />
その点、命令型指向では、モジュール（手続きをまとめた＝&quot;抽象化した&quot;まとまり）の記述には関数やオブジェクトを使うものの、ミクロな部分は手続きを記述することに終始します。このことが関数型と命令型の大きな違い。<br />
<br />
特にその違いが出てくるのが、配列やリストの処理。<br />
<br />
<br />
関数型言語では、配列やリストを「集合」であると捕え、写像する関数を使って値を処理するという風に処理します。具体的には次のような構文が使われます。<br />
<br />
&nbsp; print( Array(1,2,3,4,5).map(_*2) ) <span style="color: rgb(51, 51, 170);">// 2,4,6,8,10が表示される</span><br />
<br />
命令型では、その手続きを考えて、一般には次のように処理します。<br />
<br />
&nbsp; int[] a = {1,2,3,4,5};<br />
&nbsp; <br />
&nbsp;&nbsp;  for(int i=0; i&lt;5; i++){<br />
<!--5-->&nbsp;&nbsp;&nbsp;&nbsp;    print( a[i]*2 );<br />
&nbsp;&nbsp;  }<br />
<br />
どちらが直感的かは、見て分かることと思います。<br />
<br />
この処理の違いは、&quot;関数が引数としてとれる&quot;からと見ることもできますが、そうではなくて、&quot;計算とは、ある要素からある要素への写像で表すことができる&quot;という見方があり、その結果として関数が引数に渡せるようになっていると考えるのがベストだと感じました。<br />
<br />
<br />
とりま、百聞は一見に如かず。<br />
<br />
次回から、Scalaの能力をフルに生かしたプログラムを作っていこうと思います。]]> 
    </content>
    <author>
            <name>funatii</name>
        </author>
  </entry>
  <entry>
    <id>funatti.blog.shinobi.jp://entry/13</id>
    <link rel="alternate" type="text/html" href="http://funatti.blog.shinobi.jp/scala/%E3%83%A2%E3%83%8A%E3%83%89%E3%81%A8%E5%9C%8F%E8%AB%96" />
    <published>2010-01-19T11:28:36+09:00</published> 
    <updated>2010-01-19T11:28:36+09:00</updated> 
    <category term="Scala" label="Scala" />
    <title>モナドと圏論</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[おはようございます。昨日はえらく勉強した１日でした。<br />
<br />
ちょっと雑多ですが、自分の備忘録としてメモしておきます。厳密な解釈ではありませんのであしからず。<br />
<br />
<br />
<br />
＞発見その１<br />
<br />
関数型プログラミングというのは、”プログラムする＝計算する”という行為をきちんと定式化するために、<br />
<br />
　ラムダ計算<br />
<br />
という演算をベースにして考えられたもので、その「副産物」として、<br />
<br />
　関数と数が等価　＝　関数が一等市民である<br />
<br />
という便利な性質が生まれた。<br />
<br />
これを応用すれば、関数を引数や戻り値として渡すことができるし。構文がすっきりして、独自の制御構造を作ることができる。<br />
<br />
<br />
＞発見その２<br />
<br />
関数プログラミングには難点があって、純粋関数型言語では「遅延評価」をベースとしているがために、「副作用」を持つ処理を苦手としている。これを解決しているのが<br />
<br />
　関数型＋命令型<br />
<br />
という考え方で、ScalaやRuby、Pythonなどはこの考え方を採用しているけれど、Scalaには”関数リテラル”という関数型プログラミングを強力にバックアップする仕組みが提供されているという点で、関数型言語のHaskellなどに近く、強力な関数型言語かつ命令型のハイブリッド。しかもScalaは、その性質に”完全なオブジェクト指向”ということが強力な機能としてプラスされている。<br />
<br />
もうここまでくるとScalaを選ばない理由はないようにさえ思えてくるのは気のせいかな。<br />
<br />
<br />
＞発見その３<br />
<br />
前述の”副作用”の回避のために、モナド(Monad)という概念がある。これはとても単純なもので、モナドとは「コンテナ」であると考えることができる。モナドとよばれるそのコンテナは、次の機能を持つ。<br />
<br />
[1] ある要素xを与えられたとき、それをコンテナに入れるための（＝モナドMxに変換する写像としての）関数Unit(x)が準備されている。→ ユニットコンストラクタ<br />
<br />
[2] あるモナドMxが与えられたとき、そのモナドに含まれる要素xを取り出して、”関数fと要素yを引数にとり、y = f(x)を適用し、それをコンテナに含めて返す（モナドMyに変換して返す）”という関数を返す関数Bind(Mx)が準備されている。 → バインド<br />
<br />
この２つの操作が準備されているコンテナのようなもの（つまり、そういう関数が定義されている集合）のことを、モナドという。これはオブジェクト指向でいうところのクラスとメソッドとして定義されている。<br />
<br />
これを使うことによって、例えばリストからの取り出し・収納、リスト全てに対するフィルタの適用（要するにforeach文）、コンテナの結合＝ベルトコンベア式な計算の結合、副作用を排除したI/O操作などができるようになる。<br />
<br />
ただし副作用を排除したI/O操作に関しては、Scalaでは命令型の操作が可能なので、どちらを使ってもよい。<br />
<br />
<br />
＞発見その４<br />
<br />
圏論という考え方を使うと、数値や集合、型や関数といった考え方の見通しをすっきりとすることができる。特に、従来の手続きを「写像」に置き換え、配列を「集合」に置き換えて、集合X、Yについて写像 f:X→Y を適用するという考え方は（プログラマとして）画期的。<br />
<br />
<br />
<br />
要するに、<br />
<br />
論理の美しさ（論理性、安全性）と、その実用性（柔軟性、簡潔性）を併せ持ったScalaは、すばらしい言語だということがよくわかった。<br />
<br />
これは間違いなくNext Javaだろうし、.NET Frameworkでも動くという事実から、C++/Javaに代わる新スタンダード言語になるのは時間の問題だと思う。<br />
<br />
あとは、インストールの簡単さと、日本語文献・ユーザ数が一定数を越えさえすれば、きっと多分事実上の最強言語になる。<br />
<br />
<br />
残っている問題は、<br />
<br />
・”暗黙の型変換”(Scala) vs ”動的型付け”(Ruby)<br />
・関数型言語の実行速度 vs 動的型付け言語の実行速度<br />
<br />
の対決かな。僕はこの問題に関してもScalaに一票で、特に後者に関してはScalaは命令型とのハイブリッドなのでほとんど問題ないらしい。<br />
<br />
けど、あとはプログラマの技量と知識力がついてくるかっていう問題があるし、画期的であってもその良さが知られなかったら、HaskellとかPrologeみたいに普及しないかもしれない。<br />
<br />
この辺は中村先生もいつも言ってるように、僕みたいなユーザがきちんとその良さを伝えていかなくちゃ。<br />
<br />
<br />
<br />
<br />
<br />
…それにしても、Ackeyはホントすばらしすす。圏論を解読してくれてありがとう。<br />
<br />
きっとこれからのプログラマは、もっと数学とか物理学みたいな「モデル」を勉強しなきゃいけないのかもなぁ。]]> 
    </content>
    <author>
            <name>funatii</name>
        </author>
  </entry>
  <entry>
    <id>funatti.blog.shinobi.jp://entry/12</id>
    <link rel="alternate" type="text/html" href="http://funatti.blog.shinobi.jp/scala/%E3%83%A9%E3%83%A0%E3%83%80%E8%A8%88%E7%AE%97" />
    <published>2010-01-18T02:53:50+09:00</published> 
    <updated>2010-01-18T02:53:50+09:00</updated> 
    <category term="Scala" label="Scala" />
    <title>ラムダ計算</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[現在Scalaを勉強中なのですが、関数型言語はラムダ計算というものを基礎に置いていると聞いて調べてみました。   <br />
<br /><br />
＜参考文献＞<br />
<a href="http://ja.wikipedia.org/wiki/%E3%83%A9%E3%83%A0%E3%83%80%E8%A8%88%E7%AE%97" target="_blank">&quot;ラムダ計算 - Wikipedia&quot;</a>、<a href="http://www.google.co.jp/url?sa=t&amp;source=web&amp;ct=res&amp;cd=1&amp;ved=0CAcQFjAA&amp;url=http%3A%2F%2Fwww.kb.ecei.tohoku.ac.jp%2F~sumii%2Fclass%2Fkeisanki-software-kougaku-2005%2Flambda.pdf&amp;ei=10tTS4-VNoGUkAW7wfCtCg&amp;usg=AFQjCNG6KxcD5Rp-INC1xkpCk_W86xJS1A&amp;sig2=bVMNe7Qp3yiMi7izFM5HGQ" target="_blank">
&quot;ラムダ計算入門&quot;</a>    <br />
<br />
<br /><br />
ラムダ計算というのは、大雑把に言えば、  <strong><br />
<br />
「数や計算というものを、関数&quot;そのもので&quot;定義してみよう」</strong>  <br />
<br />
という考え方です。<br />
<br />
ちょっと変わった考え方なので、理解するまでに苦労しますが、考え方がわかれば関数が数と同等という不思議な世界が生まれます。（だから例えば自然数（0,1,2,3&hellip;）とかいうのも&rdquo;関数そのもの&rdquo;で定義されているのがすごく不思議！）  <br />
<br />
個人的にとても驚いたのは、ラムダ計算を使えば if とかも定義でき、trueやfalseなども定義できるし、なによりすごいのは処理構造も定義できるということ。<br />
<br />
しかもそれを&lambda;と文字、.（ピリオド）、()（括弧）、というたった４種の記号で定義してしまうのが驚きです。  関数と数を同等に扱うという計算自体の性質から、数・構造・関数の「同等な扱い」が可能になるので、驚くほど綺麗に処理構造が記述できるのがすごい。  <br />
<br />
<br />
ちょっとここに書ききれるほどの文章量じゃないので、自分の分かる範囲で追々追々書いていきます。]]> 
    </content>
    <author>
            <name>funatii</name>
        </author>
  </entry>
  <entry>
    <id>funatti.blog.shinobi.jp://entry/11</id>
    <link rel="alternate" type="text/html" href="http://funatti.blog.shinobi.jp/linux/org.freedesktop.hal.device.volume.unknownfailure" />
    <published>2010-01-17T23:13:54+09:00</published> 
    <updated>2010-01-17T23:13:54+09:00</updated> 
    <category term="Linux" label="Linux" />
    <title>org.freedesktop.Hal.Device.Volume.UnknownFailure</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[知り合いのパソコンが壊れてしまった＝ブルーバック頻発で起動すらしないので、なんとか復旧しようとKNOPPIX 6のUSB起動を試してみたところ、大成功。<br />
<br />
よーし、これでOKだと思って数日かかってKNOPPIXでデータ救出していたところ、ある日急に<br />
<br />
<em><strong>　org.freedesktop.Hal.Device.Volume.UnknownFailure</strong></em><br />
<br />
というメッセージとともにWindowsドライブがマウントできなくなり、完全に認識できなくなってしまいました。<br />
<br />
<br />
<br />
<br />
もういい加減ドライブが逝ってしまわれたのかと思っていたところ、どうやらそうでは無い様子。次の方法を試したら直ったので、是非データ復旧でお困りの方は参考にしてください。<br />
<br />
<strong>１）</strong>/etc/fstabをテキストエディタで開き、そこに記載されている<br />
<br />
/dev/sda1 /media/sda1 &hellip;<br />
<br />
に類似する行を見て、/dev/〜 &rarr; ドライブ名、/media/〜 &rarr; それに対応するマウントポイント名の関係を把握します。<br />
<br />
<strong>２）</strong>ターミナル（Terminal）を開き、sudo -sと入力。これでroot権限でUNIXにアクセスできるようになります。<br />
<br />
<strong>３）</strong>cd /media と入力し、フォルダ/mediaへと移動。<br />
<br />
<strong>４）</strong>mkdir 〜 でフォルダを作ります。（〜には１で確認したマウントポイント名を入力し、もしドライブが複数ある場合は適当or全種類フォルダを作る。）<br />
<br />
（メモ）(5)が上手くいかない場合はここでKNOPPIXを再起動。<br />
<br />
<strong>５）</strong>mount /dev/〜 /media/〜 でディスクをマウント。/dev/〜以下は、１で確認した(ディスク名)＋半角スペース＋(マウントポイント名)を入力します。<br />
<br />
<strong>６）</strong>これで上手くいけばWindowsドライブがマウントされます。ふぅ。<br />
<br />
<br />]]> 
    </content>
    <author>
            <name>funatii</name>
        </author>
  </entry>
  <entry>
    <id>funatti.blog.shinobi.jp://entry/10</id>
    <link rel="alternate" type="text/html" href="http://funatti.blog.shinobi.jp/scala/scala-processing%20ide" />
    <published>2010-01-17T17:29:25+09:00</published> 
    <updated>2010-01-17T17:29:25+09:00</updated> 
    <category term="Scala" label="Scala" />
    <title>Scala-processing IDE</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[Scala-processingの開発キットには、<a href="http://technically.us/spde/About" target="_blank">SPDE</a>というものがありますが、推測変換などの支援やヘルプが使えないので、僕としてはNetBeansでの開発するのが楽チンです。<br />
<br />
<br />
<a href="//funatti.blog.shinobi.jp/File/44e7af02.png" target="_blank"><img border="0" src="//funatti.blog.shinobi.jp/Img/1263697884/" alt="" /></a> <br />
<br />
＜Scala-processingをNetBenasにセットアップする方法＞<br />
<br />
■１：<a href="http://funatti.blog.shinobi.jp/Entry/9/" target="_blank">ScalaをNetBeans 6.8で使う</a>を参照して、Scalaプラグインをインストール。<br />
<br />
■２：以下のフォルダを適当なところにコピーする。<br />
<br />
・Windows &rarr; (Processing本体のフォルダ)&yen;java&yen;lib<br />
・Mac &rarr; Processing =&gt; パッケージの内容を表示 =&gt; Contents/Resources/Java<br />
<br />
■３：NetBeansで、ファイル &rarr; 新規プロジェクト &rarr; Scala Applicationを作成<br />
<br />
■４：ファイル &rarr; プロジェクトプロパティをクリック、Librariesを選び、[Add JAR/Folder]でさっきコピーしたフォルダ内のJARファイル（例えばcore.jar、必要に応じて他のJAR）を追加する。<br />
<br />
（メモ）NetBeans6.8の段階では、上手く読み込まれないので、追加したら一度NetBeansを再起動する。<br />
<br />
■５：次のコードが動けば完成！！クラス名やパッケージ名は、開発環境によって変えてくださいね。 <br />
<br />
<br />
<a href="//funatti.blog.shinobi.jp/File/ab298e8c.png" target="_blank"><img border="0" src="//funatti.blog.shinobi.jp/Img/1263717476/" alt="" /></a> <br />
<br />
<br />
<br />
package scalaprocessing1<br />
<br />
import processing.core._<br />
<br />
object Main extends PApplet {<br />
<br />
&nbsp;&nbsp;  override <span style="color: rgb(0, 0, 153);">def</span> setup(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;    size(<span style="color: rgb(0, 153, 0);">400</span>, <span style="color: rgb(0, 153, 0);">300</span>, PConstants.P3D)<br />
&nbsp;&nbsp;  }<br />
<br />
&nbsp;&nbsp; override <span style="color: rgb(0, 0, 153);">def</span> draw(){<br />
&nbsp;&nbsp;&nbsp; background(<span style="color: rgb(0, 153, 0);">20</span>)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;    var i=<span style="color: rgb(0, 153, 0);">0</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;    <span style="color: rgb(0, 0, 153);">while</span>(i &lt; <span style="color: rgb(0, 153, 0);">100</span>) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;      &nbsp;&nbsp;&nbsp;&nbsp;      pushMatrix<br />
&nbsp;&nbsp;&nbsp;&nbsp;      &nbsp;&nbsp;&nbsp;&nbsp;      fill(random(<span style="color: rgb(0, 153, 0);">255</span>))<br />
&nbsp;&nbsp;&nbsp;&nbsp;      &nbsp;&nbsp;&nbsp;&nbsp;      translate(mouseX, mouseY, random(-<span style="color: rgb(0, 153, 0);">30</span>, <span style="color: rgb(0, 153, 0);">30</span>))<br />
&nbsp;&nbsp;&nbsp;&nbsp;      &nbsp;&nbsp;&nbsp;&nbsp;      box(random(<span style="color: rgb(0, 153, 0);">10</span>, <span style="color: rgb(0, 153, 0);">70</span>));<br />
&nbsp;&nbsp;&nbsp;&nbsp;            &nbsp;&nbsp;&nbsp;&nbsp;      popMatrix<br />
&nbsp;&nbsp;&nbsp;&nbsp;      &nbsp;&nbsp;&nbsp;&nbsp;      i += <span style="color: rgb(0, 153, 0);">1</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;      }<br />
&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;      <span style="color: rgb(0, 0, 153);">def</span> main(args: Array[String]){<br />
&nbsp;&nbsp;&nbsp;&nbsp;      &nbsp;&nbsp;&nbsp;&nbsp;          var frame = new javax.swing.JFrame(<span style="color: rgb(0, 153, 0);">&quot;Test&quot;</span>)<br />
&nbsp;&nbsp;&nbsp;&nbsp;      &nbsp;&nbsp;&nbsp;&nbsp;      var applet = Main<br />
&nbsp;&nbsp;&nbsp;&nbsp;      &nbsp;&nbsp;&nbsp;&nbsp;      frame.getContentPane().add(applet)<br />
&nbsp;&nbsp;&nbsp;&nbsp;      &nbsp;&nbsp;&nbsp;&nbsp;      applet.init<br />
&nbsp;&nbsp;&nbsp;&nbsp;      &nbsp;&nbsp;&nbsp;&nbsp;      frame.pack<br />
&nbsp;&nbsp;&nbsp;&nbsp;      &nbsp;&nbsp;&nbsp;&nbsp;      frame.setVisible(<span style="color: rgb(0, 0, 153);">true</span>)<br />
&nbsp;&nbsp;&nbsp;&nbsp;      }<br />
}]]> 
    </content>
    <author>
            <name>funatii</name>
        </author>
  </entry>
  <entry>
    <id>funatti.blog.shinobi.jp://entry/9</id>
    <link rel="alternate" type="text/html" href="http://funatti.blog.shinobi.jp/scala/scala%E3%82%92netbeans%206.8%E3%81%A7%E4%BD%BF%E3%81%86" />
    <published>2010-01-17T13:02:00+09:00</published> 
    <updated>2010-01-17T13:02:00+09:00</updated> 
    <category term="Scala" label="Scala" />
    <title>ScalaをNetBeans 6.8で使う</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[ScalaプラグインをNetBeansにインストールすると、コードの色分けや推測変換が使えてとっても便利になります！<br />
<br />
<br />
でも、日本語文献が少なかったので、備忘録として書いておきます。（インストール方法の出典は以下ですが、ちょっと分かりにくい部分を補って意訳しています。。）<br />
<br />
・"Scala Plugins for NetBeans 6.8 v1.x (RC1) - Install with NetBeans 6.8"<br />
　<a href="http://wiki.netbeans.org/Scala68v1" target="_blank">http://wiki.netbeans.org/Scala68v1</a><br />
<br />
<br />
<br />
＜ NetBeans 6.8にScalaプラグインをインストールする方法 ＞<br />
<br />
■１：まず最新のScala-2.8.0ランタイムを以下よりダウンロードし、適当な場所に保存する。<br />
 <a href="http://www.scala-lang.org/archives/downloads/distrib/files/nightly/distributions/scala-2.8.0.latest.zip" target="_blank">http://www.scala-lang.org/archives/downloads/distrib/files/nightly/distributions/scala-2.8.0.latest.zip</a><br />
<br />
　（メモ）Windowsでは、パスにスペースの含まれない場所へ保存すること。<br />
<br />
■２：ダウンロードしたランタイムのあるフォルダを、$SCALA_HOMEとして環境定数に設定。(※1,2)<br />
<br />
　（メモ）Macユーザの場合、(ホームディレクトリ)/.MacOSX/environment.plistをテキストエディタなどで作り、<a href="http://wiki.netbeans.org/MacOSXEnvForApp" target="_blank">http://wiki.netbeans.org/MacOSXEnvForApp</a>のソースコードを記載（full/path/of/your/scala/homeはランタイムのあるフォルダへのフルパス）。(※1,2)<br />
<br />
■３：NetBean 6.8を<a href="http://netbeans.org/downloads/index.html" target="_blank">http://netbeans.org/downloads/index.html</a>からダウンロードしてインストール。<br />
<br />
　（メモ）NetBean 6.8 Betaでは上手くインストールできません！それ以下のバージョンをお持ちの場合はインストールし直すことをおすすめします。<br />
<br />
■４：Scalaプラグインを、<a href="https://sourceforge.net/projects/erlybird/files/nb-scala/6.8v1.1.0rc1/" target="_blank">https://sourceforge.net/projects/erlybird/files/nb-scala/6.8v1.1.0rc1/</a>からダウンロードして、適当な場所に解凍。<br />
<br />
■５：NetBeansを起動し、[ツール] → [プラグイン] をクリック。[ダウンロード済み]タブを開いて、[プラグインの追加...]をクリックして、４で解凍したフォルダにあるJARを全て選択。<br />
<br />
■６：インストールしてNetBeansを再起動する。完了！<br />
<br />
<br />
<br />
<br />
<br />
--- ※1 この作業が上手く行かない場合、（NetBeansインストールフォルダ）¥etc¥netbeans.conf （Macでは/Applications/NetBeans.app → パッケージの内容を表示 → /Contents/Resources/NetBenas/etc/netbeans.conf）をテキストエディタで開き、netbeans_default_options = " ... " の ... の中に、<br />
<br />
　-J-Dscala.home=(ランタイムへのフルパス)<br />
<br />
を追加すると上手くいきます。<br />
<br />
<br />
--- ※2 なお、パスの通し方については以下を参照してください。<br />
<br />
・Windows → <a href="http://pocketstudio.jp/win/xp/path.html" target="_blank">http://pocketstudio.jp/win/xp/path.html</a><br />
・Mac → <a href="http://homepage.mac.com/akihide/iblog/C1557102128/E1968370044/index.html" target="_blank">http://homepage.mac.com/akihide/iblog/C1557102128/E1968370044/index.html</a>]]> 
    </content>
    <author>
            <name>funatii</name>
        </author>
  </entry>
  <entry>
    <id>funatti.blog.shinobi.jp://entry/8</id>
    <link rel="alternate" type="text/html" href="http://funatti.blog.shinobi.jp/scala/scala-processing" />
    <published>2010-01-17T11:59:05+09:00</published> 
    <updated>2010-01-17T11:59:05+09:00</updated> 
    <category term="Scala" label="Scala" />
    <title>Scala-processing</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[最近更新が滞ってましたが、ぼちぼち再開します。<br />
<br />
<br />
<br />
今日は、最近ホットなScalaとProcessingを使った、<br />
<br />
　"Scala-processing"<br />
<br />
という新しい文化と、その周辺について。<br />
<br />
<br />
<a href="//funatti.blog.shinobi.jp/File/44e7af02.png" target="_blank"><img src="//funatti.blog.shinobi.jp/Img/1263697884/" border="0" alt="" /></a><br />
<br />
<br />
写真はProcessingのライブラリをScalaで(NetBeans上で)動かしたところです。ちゃんと動いてますし、構文は純粋なProcessingとほぼ変わりません。<br />
<br />
つまり、ProcessingにScalaの強力な機能が追加できちゃってます。<br />
<br />
<br />
<br />
<br />
<br />
Scalaについていろいろ研究してて、気付いた重大な発見が２つあります。<br />
<br />
　(1) Javaの「上位互換」であること<br />
　(2) JavaVM上で動く言語は「他にもある」こと<br />
<br />
これは、実はとても驚くべきことで、例えば(2)に該当するのは、<br />
<br />
　Scala、Jython、JRuby、Groovy<br />
<br />
などいろいろあって、これらはすべて(1)をある程度満たすので、お互いの言語で書いたJavaのクラスファイルを「相互に読み取ること」ができます！<br />
<br />
ということは、それぞれの言語を生かして、しかも自由にプログラミングができる環境が整いつつあるということです。<br />
<br />
しかもScalaはちょっとの修正で.NET Framework上でも動くし、JRubyで書いたものも同じように、Ruby on Railsとかの強力なWebアプリケーションに早変わりする。この移植性は驚異的です。<br />
<br />
<br />
<br />
<br />
で、それを生かしてProcessingが持つ最大の利点であって難点である、<br />
<br />
　「Java言語に依存していること」<br />
<br />
を払拭して、そのままScalaに移植してみたわけです。これができると、例えば次のような利点が出てきます。<br />
<br />
　・Processingが、完全オブジェクト指向言語として使える。<br />
　・Processingに、演算子のオーバーロード、制御構造の追加が可能。<br />
　・Processingが、関数型言語に早変わり。<br />
<br />
同じように、Ruby-processing、Groovy-processing、Jython-processingなーんていうのも可能です。すばらしすすすす。<br />
<br />
<br />
<br />
<br />
<br />
うーん、なんだかワクワクしてきた。もっといろいろ遊んでみます。]]> 
    </content>
    <author>
            <name>funatii</name>
        </author>
  </entry>
</feed>