2011年6月20日月曜日

HandBrakeをインスコしてみた

ちゃんと見たい映画は、大きな画面でみたほうが良いかもしれないが、
ちょっと見たい映画は、iPhoneでどこでも見れると良いと思う

どや

そんなこんなで、こんばんは。nouzui2007の混沌とした記録が始まりました。
今日はiPhoneねた。

巻数の多いドラマやアニメ、ちょっと見てみたい映画など、ちょっとした時間で
見れれば良いや的な映像はiPhoneで持ち歩くと良いです。
なんとなれば、どこでも見られるから。
どこでもはトイレも含まれますが、いろいろと差し障るので気をつけてください。

とりあえず、WindowsでもUbuntuでもつかえるツールがあったので、ご紹介。

HandBrake

使い方は今後の展開に任せるとして、まずはインストールです。
このソフトはリポジトリ登録しないといけません。
まずは、場所の確認です。

HandBrakeのリリース版情報は、このページにあります。
一応尋ねてみてくださいね。
https://edge.launchpad.net/~stebbins/+archive/handbrake-releases

さて、リポジトリへの登録情報をゲットしたら、登録しちゃいましょう。
登録したら、HandBrakeゲットです。

$ sudo add-apt-repository "ppa:stebbins/handbrake-releases"
$ sudo apt-get update
$ sudo apt-get install handbrake-gtk

尾張です。
あ、間違えた。
:s/尾張/終わり/g

アプリケーション→サウンドとビデオ→HandBrake で起動できればOKかな。

使ったら教えるね。

ではでは

2011年6月19日日曜日

jpegをまとめて圧縮

ubuntuばんざい!
おはようございます、nouzui2007です。

今回は、ubuntuねたです。鮮度はnouzui2007的に最高です。

ImageMagickでjpeg圧縮

これ、知ってました?
nouzui2007は、今日まで知らずに生きてまいりました、恥ずかしながら。
いやいやいや、すばらしいですね、コマンドライン。
いろいろできちゃって、嬉しくなっちゃいます。

さて、さっそくインストールですが、いつもの感じで簡単です。

$ sudo apt-get install imagemagick

マニュアルが欲しい人は、マニュアルもインストールしときましょうか。

$ sudo apt-get install imagemagick-doc

次は、使い方です。
圧縮する方法ですが、1コずつ圧縮するには、こんな感じです。
page001.jpgを90%に圧縮しています。

$ convert page001.jpg -quality 90 page001.jpg

あ、でも、これやっちゃうと元のファイル消しちゃうんで、出力側のファイル名に何かつけるとか、バックアップ取っとくとかしたほうが良いですよ。
こんな感じ。

$ convert page001.jpg -quality 90 converted_page001.jpg

「それじゃぁ、GIMPとか使って、1コずつ圧縮してくのと変わんないじゃん」
と突っ込んだ人、ありがとうございますm(_ _)m
突っ込めなかった人、次回頑張ってください。
お待たせしました、まとめて処理する時間です。

$ ls *.jpg | xarg -I{} convert {} -quality 90 converted_{}

これは、カレントディレクトリの拡張子がjpgのファイルを取得して、それぞれのファイル名に"converted_"をつけながら、90%に圧縮してくれます。

xargって使ってみました。
おもしろいね、これ。いい感じです。
for使って処理しても良かったけど、新しい方法をゲットしました。

2011年6月17日金曜日

Code Eval (コードをさらすのでご注意ください)

Fizz Buzzはこんな感じでしたの巻

あ、コードをさらしちゃうので、自分でがんばりたい人はパスしてください。
ちなみに、Rubyです。

class FizzBuzz

 attr_accessor :a, :b, :num 

 def initialize(a, b, num)
  self.a = a
  self.b = b
  self.num = num
 end

 def generate
  arr = []
  num.to_i.times { |i|
   str = "" 
   if ((i + 1) % a == 0)
    str = "F"
   end
   if ((i + 1) % b == 0)
    str += "B"
   end
   if (str.size == 0)
    str = i + 1
   end
   arr << str
  }
  arr
 end

 def print
  puts generate.join(" ")
 end
end

f = ARGV[0]
if File::file?(f) && File::exists?(f)
 begin
  File::open(f).each { |l|
   arr = l.split(" ")
   fb = FizzBuzz.new(arr[0].to_i, arr[1].to_i, arr[2].to_i)
   fb.print
  }
  exit 0
 rescue
 end
end
exit -1

Code Eval

Code Evalって知ってる?
知ってたら別にいいです(・ε・)ブーブー

http://www.codeeval.com/

知らない人で、プログラムやる人、必見です!
面白いです。すごいです。

このサイトの目的は、エンジニアを力量を効率的に、専門的に確認することみたいです。
なんとなれば、採用担当者がプロなエンジニアでないことが間々あることだから。

そんなあなたに、Code Eval!!


って、関係者じゃないですよ。

面白そうだったので、登録してみました。
無料でOKです。

ログインすると、ダッシュボードがありますが、説明は割愛です。
早速、OpenChallengeへ行きましょう。

ここには、難易度3つに分かれた課題が一覧されています。
難易度はお任せします。
nouzui2007はチキンなので、いきなり高難度にはチャレンジしません。
とりあえず、Easyの1番目をやるタイプです。

Easyの1番目は、Fizz Buzzです。
クリックすると、仕様の説明があります。
次の仕様は、書いてある内容とは違って、勝手に要約しました。
つくるプログラムがイメージできればOKです。
残念ながらイメージできなかったぁ、とゆー方は、本文を読んでくださいな。

このプログラムはテキストファイルを取得します。
テキストファイルは、数字A、数字B、数字Cの順序で、スペース区切りです。
テキストファイルから数字Aから数字Cまで取得したら、1から順番に数字Cまでカウントアップしていきます。
途中、数字Aで割り切れる数の場合は、その数字を「F」に置き換えます。
また、数字Bで割り切れる数の場合は、その数字を「B」に置き換えます。
数字A、数字Bのどちらでも割り切れる数の場合は、その数字を「FB」に置き換えます。
結果は、1から順番にスペース区切りで出力します。
Input
3 5 10
Output
1 2 F 4 B F 7 8 F B
どうですか?
イメージできました?

このサイトのすごいところは、こんな問題が全部で30問以上も用意されているところです。
簡単にプログラムする課題って、以外と思いつかないもんじゃないですか?

Σ( ̄ロ ̄lll) もしかして、nouzui2007だけですか?
nouzui2007は、課題作成は苦手なんです。なので、このサイト、とってもすばらしいです。

それだけじゃないんです。
言語は限られますが、チェックまでしてくれるんですよ。
いたせりつくせりじゃないですかヽ(∇⌒ヽ)(ノ⌒∇)ノ

やってみましたよ。

チェックしてもらうのに、いくつか注意点があります。
submitするページに書いてありますが、一応お知らせです。


言語はこんな感じです。
Python 2.6, C 4.3.4, C++ 4.3.4, Java 1.5, Ruby 1.8.6, Perl 5.8.8, PHP 5.2.6, tcl 8.5, clojure 1.2, JavaScript 1.8.5


正常終了時には、exit code 0 を返してください
実行中のまま、タイムアウト扱いにされるかも知れません。

rubyでやる人は、実行部に、if __FILE__ == $0 はつけないでください
しばらく悩みました。
ローカルで実行してみたときは、正しい結果が出てると思ったのですが、submitしたら0点。
いやいや、落ち込みましたよ。
気をつけてください(って、もしかして、そんなこと、普通はやらない?)

javaの人は、クラス名が指定されているので、ご注意ください
javaではやってませんが、気をつけてね

javascriptの人は、codeEvalExecute(line) をエントリーポイントにしてください
書いてあるまんまです。よくわかりません

あぁ、プログラムっておもしろい(∩゜∀`∩)
ちなみに、nouzui2007の書いたコードはこんな感じです。
コードさらしてるので、ご注意ください。

有料版もあります。
独自の内容が追加できるみたいですが、そこまでやらなくても十分面白いです。

ではまた

2011年6月16日木曜日

二段合格(*^ー゚)b

準備運動で、会場まで歩いてきたのはムダになりましたが、
そんなことでぶーたれてても、開始時間は変わらないので、気を取り直していきましょう。

開会式が終わると、しばらくやることがなくなるので、会場外へ行こうとしたところ、
思わぬところから「ご無沙汰してます」と声を掛けられました。
同じくらいの年に見えますが、誰だっけ?

・・・あ、初段のときに一緒に受けた人!

こっちを覚えていてくれたことにびっくりです。
しばらく再会の挨拶をしていると、もう一人見覚えがあるような人が・・・
やっぱり昨年の初段審査で一緒に受けた人でした。
こーゆーの、うれしいですね。


審査直前には、形のおさらいをしました。
形だけではないですが、受審番号で組み合わせが決まるので、
nouzui2007の相方とやりたかったのですが、会場に見当たらないので仕方ありませんね。
高校生なので、一度はやっときたかったんですが・・・
大人の受信者は2段は少なくて、再会した3人だけだったので、3人仲良くかわりばんこに練習しましたw

さて、いよいよ審査開始です。
って、順番みたら、相手はすべて高校生ですよ。
若いですよ、たくさん動くですよ!バンバン打ってますよ!!
こんなの相手にしてたら、いつもの剣道なんてできないじゃないですか!!
と、叫びたい気分でいっぱいだったので、大人の受信者にぐちっときました。ごめんなさい(>人<)

いよいよ出番です。
久しぶりの緊張です。考えてみたら、こんなに緊張することって、そうないよなぁ。
逃げ出したい気もするけど、やっててよかったかも知れない、とも思ってる自分がおかしかった。

さて、自分の出番がくるまでは、ひたすら待ちです。
いままでも十分待ちましたが、大人は最後のほうに配置されるので、若い子たちの審査をずっと見ています。
見ているときは、いろいろ思うことがあったり、気をつけるポイントが復習できたりしているんですよ。
でも、いざ自分の番になると、プツンとなにかが切れてなくなります。
やれやれ

もう、ね、ちゃんばらですよ。
相手が間合いを無視して打ってるのわかってるんですよ。でも、だめです。
いっしょになってうっちゃいましたよ。
いやいや、これはいつもの稽古じゃないですよ、とか思いながらひたすら打っちゃいました。

いままでやってきたことを出す、とゆーのは、案外難しいものです、とゆーことを学びました。

ここで、審査のことについてお伝えしておきます(いまさら?)

審査は、実技と形に分かれています。
実技は、切り返しと1分弱の稽古×2になっています。

解説終わり。

2回目の稽古は、足が動いていないことが何度かあったりして、nouzui2007的にう~んな感じでした。
いや、まあ、そもそもムダに動き回っちゃったのがいかんのですが。。。

とりあえず、実技が終わったので、気持ちを形に切り替えねばなりません。
相方がそこにいるしね。
声かけましたよ、形の稽古しよって。
快諾してくれました。ありがと、いいやつだね(∩_∩)

形をやってみて、ちゃんとできているので安心しました。
人づてに、高校生とかは、ちゃんと教えられていないことがあるので、要注意、と聞いていたので。
nouzui2007もしっかり出来上がっているわけではないので、お互いにちゃんと動けないと、
タイミングが合わなかったりして、見苦しくなってしまうのですよ。
あわせてあげられるほど熟達していないので、心配だったですよ。

ところが

形の審査がはじまって、いよいよnouzui2007まであと3組ぐらいになってきたときのこと。
ほかの会場が空いたので、突然そっちに移動させられ、すぐに審査開始となりました。
気分的にはあと少しまってから、と思っていたので、おどろきました。

余裕をなくすようなことはやめて欲しいです(ノД`)・゜・。

これでてんぱっちゃったのが、相方ですよ。
木刀を逆に持ってる。
木刀を持っているときは、刃を上向きにして右手で持つのですが、彼は刃を下向きにして持っちゃってます。
顔がこっちを向いていたので、木刀を動かして、口で「木刀、逆」と伝えようとしましたが、こっちを見ていないのか、気づかないのか、反応なしです。
礼をして、ソンキョしているときに、木刀をみると、やはり逆になっています。
刃の向きを逆にしていたので、当然でせう。
これで気づくかと思ったのですが、彼の目にはなにが映っているのか、不自然なそりの木刀を気にせずソンキョしています。
木刀を審査員から見えないように払ってみましたが、気づいてもらえませんでした(_ _|||)

どーしよー、と思っていると、主審が合い方に、木刀が逆であることを注意していました。
ここでようやく気づいた彼は、木刀を逆に構えなおしました。

あー、ちゃんとできるかなぁ?
自分のことは棚に載せた上に、カバーをかけて目隠しをしているようなもんで、自分の心配ではなくて、相方の心配をしていました。

形はまあ、可もなく不可もなく。
初段のときのように足を間違えることもなく、無事終了です。
ちゃんと最後までやり遂げた相方君に拍手です。


どきどきの発表ですが、
大人の受審者は全員合格!nouzui2007も合格しておりました\(≧▽≦)/\(≧▽≦)/
相方の高校生君の合否は確認できませんでした。

一日がかりで、ほぼ待ち時間だったけど、楽しい審査でした。

2011年6月13日月曜日

二段を受けに行ってきたました

昨日、6/12はnouzui2007の誕生日でした。
が、同時に剣道二段の昇段審査の日でもあったのでした。

受付は9時ですが、会場となる体育は、
電車で1時間弱、その後、徒歩で30分くらいの場所にあります。
バスがないか調べると、最寄り駅の先に行くと、体育館までバスが出ていました。
バスにするか、徒歩にするか、悩むところです。

昨年、初段を受審したときのことですが、初段から三段まで同時に審査したので、
会場につくのがギリギリだと、すぐに受付、着替え、開会式、審査開始で、
準備運動もままならなかったことを思い出しました。

そこで、今年は準備運動をかねて、駅から歩くことにしました。

会場までの30分、途中森みたいなところに行き着いてしまい、泣きそうになりましたが、
なんとか無事に会場に到着することができました。
いい準備運動になりましたし、狙い通り、
合格もらったー!
と、直前に泣きそうだったことはすっかり忘れて、意気も上がって参りました。

ちなみに、会場までの距離から、30分くらいとGoogle先生がおっしゃっていましたが、
Google先生は迷わないでしょうが、残念ながらnouzui2007は迷うこともあります。
とゆーか、迷うに違いありません。なので、倍の1時間を想定時間としていましたが、
あっさり到着したので、開場の30分以上前に到着していました。
ありがとう、Google先生。森は罠ではなかったんですね。

さて、開場までのあいだは、特になにもすることはないのですが、
それにしても、学生剣士の多いこと。
初三段は中学生が受審できるためか、すごく多かったです。
剣道人口の減少が叫ばれている(?)昨今ですが、これで少ないのかぁ、と思いましたよ。

子供と一緒に剣道を再開して3年になりますが、ちょこちょこ知り合いも増えていて、
顔見知りの中学生が何人かいたり、
会場がそんなところなので、親御さんもいたりで、
挨拶したり、おしゃべりしたりして、開場を待ちました。

体育館に入ると、まずは着替えポイント探しですが、通路が狭くて、すれ違うのが大変です。
奥には行きたくないなぁ、と思いつつも、流され流され、結局最奥まで運ばれてしまいました。
nouzui2007は一人なので、どこでもよかったので、空いている場所に防具を下ろして、
さ、着替えです・・・と思ったら、女の子が行き来します。
別に照れる年でもないですが、おっちゃんの裸をさらすのも悪い気がしてちょっとモジモジ
してました。

着替えたら、審査開場のほうに行って、受審番号ゲットです。
剣道も学科があってですねぇ、出さないといかんのですよ。
と言っても、レポート形式で、事前に出題されているので、書き上げたレポートを出すだけですが。
そのレポート提出に受審番号が必要なのですよ。
受付は、レポートの提出で行われます。
そのときに、受審番号の印刷されたシールをもらいます。大きさは6つ切りの写真くらいでしょうか。
これを垂れにはって審査にGo!って感じです。

無事受付を済ませて、開場を見渡すと、受審の順序が張り出されていました。
どれどれ、どこでやるのかなぁ。

午前中・・・初段実技、初段剣道形
午後・・・二三段実技、二三段剣道形

・・・・・・・・Σ゛(´・ω・ノ)ノうそーん
いま受付しましたよ?
9時半になっていませんよ?

こうして、準備運動をかねて歩いてきたことが、ほぼ無に帰すことになりました(ノ∀`)アチャー

つづく

2011年6月11日土曜日

ブログでソースコードをきれいに表示しよう の続きみたいな

コードを表示するプレタグですが、背景色とか変更できるんですよ。
ま、言われてみれば、できるよね。

でも!
せっかく自分で気づいたので、記念とゆーことで

<pre class="prettyprint"  style="background:#D306FF">

こんな感じで、タグ中にstyleを埋め込むと、背景色なんかも変えられます
って、普通じゃんorz

#!/usr/bin/ruby

class HelloWorld
 def say
  p "Hello"
 end
end

・・・・・・・・・・・・・・・・・

すごい色になってますね。
適当にやっちゃいけないね、ごめんなさいm(_ _)m

メモだと思って、許してやってちょうだいな

ではでは~

Ruby de PDF~インストール編~

青Pで作ったPDF、すばらしいんですが、Dropboxからダウンロードして、iPhoneのStanzaで読むと、txtnameになっちゃって、いちいち面倒です。

他にも方法はあるかも知れませんが、手っ取り早くPDFの情報を書いちゃうことにしました。

で、なんでRubyかとゆーと、今Rubyがやりたいからですww

見つけましたよ、PDFらいぶらり。


さっそくインストールです。

Haru Free PDF Library2
http://libharu.sourceforge.net/index.html

ダウンロードしてね

本体をインストールしました。

tar xvf libharu_2_0_8.tgz
cd libharu-2.0.8/
./configure --cflags=-fPIC
make clean
make
sudo make install

次に、Ruby用のインターフェースを

cd if/ruby
ruby extconf.rb

あれ?
mkmfがないって言われてる?
なにそれ?

どうやら、Rubyの拡張ライブラリをmakeするための手順の一つで、Makefileを作り出すものらしい。
mkmfを使って、extconf.rbでMakefileを作るのが習慣みたい。
え、じゃぁなんで入ってないの?
実は、Ruby-devパッケージにあるのです(ありがと、ぐーぐる先生)

devをインストールせねば!!

aptitude install ruby1.8-dev

では、改めて

ruby extconf.rb
mak
sudo make install

おぉ!問題なし

では、demo実施

cd demo
ruby demo.rb

おぉぉぉぉぉ!!!!!
demo.pdfが作成されている。

2011年6月10日金曜日

Scalaのきほんのき(再帰関数だよぉ)

だんだん難しいことになってまいりましたが、nouzui2007の頭がついていける範囲でがんばってみたいと思います。

再帰関数は、自分自身を呼び出す関係です。
って、わかるかー
ちゃぶ台があったら、ひっくりかえしたい気分です。

とりあえず、サンプル見てちょうだい。
有名なところで、1~100まで足す問題を解いてみたいと思います。
あ、これって、そろばんの準備運動でもやるみたいです。

nouzui2007的に一番簡単なのは、ループでまわして加算する方法なので、まずはそのサンプル
scala> var total = 0
total: Int = 0

scala> for (i <- 1 to 100) {
     | total += i
     | }

scala> total
res28: Int = 5050

これを、本日のお題で書き直し
なんか、大喜利みたいです。
scala> def Recursive(n: Int): Int = n match {
     | case 1 => 1
     | case _ => n + Recursive(n - 1)
     | }
Recursive: (n: Int)Int

scala> Recursive(100)
res29: Int = 5050

今日は、こっから解説です。
・・・大丈夫かなぁ?

大事なことを忘れないうちに言っておきますが、
戻り値の指定は、絶対に必要です。

このサンプルの処理は、こんな感じで動いています、とゆーのを感じてください

  • 引数100がきたら、デフォルトにマッチするので、その処理を行う
  • マッチした処理では、引数100から1を減算したものを引数に渡して、自分自身を呼び出している
  • 今度は、引数99で来るので、やっぱりデフォルトにマッチ
  • 引数99から1減算して、また自分を呼び出す
  • ・・・って順番で2まで処理すると、自分自身への引数が1になる
  • 引数が1だったら、なにも足さないので、1を返す
  • 引数が2だったら、1が戻ってくるので、引数の2と戻り値の1を加算する
  • 引数が3だったら、3が戻ってくるので、引数の3と戻り値の3を加算する
  • ・・・100まで、繰り返し
わかる?
がんばってみましたが、いかがでしょうか。nousui2007はもうだめです。
また今度。

2011年6月8日水曜日

日曜参観はお父さんのためなんだよ

日曜日のことですが、娘の通う幼稚園で、日曜参観がありました。
日曜を選んでくれていることが、お父さんのためだったのは、すでに昔の話かもしれませんが、いまでも平日に働いているお父さんのほうが、平日に働いていない、または、まったく働いていないお父さんよりも多いと思うので、お父さんのためだということで、理解しておきましたw
それに、父の日も近いしね。

もちろん、行ってきました。

そこで、ちょっと思ったんですが、お父さんたちはシャイだよね。
普通の参観日も行ったりするんだけど、お母さんメインのときって、開始前からお母さんが教室に入ったりしてるんだよね。
禁止したりしてないし。

でも、お父さんメインだと開始前どころか、参観開始後も廊下にいるお父さんがいたりしたんだよ。
あと、出欠確認のときに、子供は名前を呼ばれると「はい、元気です」と言うのが慣わしなんだけど、子供のあとに、お父さんにも同じことをさせたのね。
「○○ちゃんのおうちの方(<-この言い方、かなり気を使ってるよね。ちょっと関心しました)」と先生がゆーので、おうちの方(メインはお父さんです)は「はい、元気です」といわされます。
声が小さいお父さんが多かったかな。
堂々と手を上げて、太い声で返事してたお父さんたち、Good Job!

あとねぇ、似顔絵を子供と一緒に書くとゆーイベント(メインイベントとですよ、これ)後、教室から出て行っちゃったりするのはどうなんでしょう?
父親メインの参観とはいえ、母親たちもたくさんいて、普段見ない子供たちがたくさんいて、照れくさいとゆーか、ひるんでしまう気持ちはわからんでもないです。
わからんではないですが、少しがんばれば、ヒーローですよ、たぶん。

nouzui2007は、わりかし幼稚園に顔を出しているので、照れたりしませんでした。
お母さんたちにも知り合いいるし、アドバンテージがありましたので、参観のメインイベントが終わった後の紙芝居読みも立候補しましたともさ。

これなんですけど、親が目立つことをあまり好まない子供もいるんですが、知ってましたか?
nouzui2007は、自分の上の子ではじめて知りました。
なので、娘に立候補して良いか確認しましたよ。

いやぁ、たのしい参観でした。
紙芝居の最初と最後に盛大な拍手をもらいました。拍手されるのって気持ちいいよね。大好きです。
あと、終わった後に、何人かが「紙芝居、おもしろかった」と言いに来てくれたのがうれしかったですよ。

帰り際に先生と少し話したんですが、「助かりました」と言ってました。
紙芝居読ませるのも、お父さん相手だと大変なんですかね?

楽しい日曜日でした。

Scalaきほんのき(今日はパターンマッチング)

対象 match {
 case パターン1 => 処理1 or 値1
 case パターンn => 処理n or 値n
 case _ => default処理 or default値
}

ここにもありました、魔法の言葉。

魔法の言葉はおいといて(おい!)
これって、case文みたいなもん?
使い方は、こんな感じです。
scala> val n = 10
n: Int = 10

scala> n match {
     | case 10 => println("ten")
     | case _ => ()
     | }
ten

文字列でもできちゃったりします。
scala> val str = "hello"
str: java.lang.String = world

scala> str match {
     | case "hello" => println("hello world")
     | case _ =>  ()
     | }
hello world
VBみたいですね。

そー思った人、あまーい( ̄ー ̄)

なんと、関数でもOKなんです。
この例だと、Listの要素をabcdそれぞれに割り当てていて、処理で合計しています。
scala> List(1,2,3,4) match {
     | case List(a,b,c,d) => a+b+c+d
     | case _ => ()
     | }
res15: AnyVal = 10
すごくないですか?

それと、型にマッチさせることもできやがるんですよ、こいつは
scala> val v: Any = "hoge"
v: Any = hoge

scala> v match {
     | case i: Int => i * 100
     | case s: String => s.size
     | }
res16: Int = 4
すごくないですか!?

興奮しすぎたので休みます。

2011年6月7日火曜日

Scalaのきほんのき

Windows EclipseへのScala IDE導入をあきらめたnouzui2007です。
日和ってすいませんm(_ _)m

Ubuntu版はあっさり使えたのに、なぜかWindows版がだめでした。
コンパイルして、実行すると、mainがないと怒られます(T T) うう

ま、それはそれとして
コマンドラインから使うことにして、とにかく勉強開始です。

簡単にセットアップ

  • Scalaご本尊をダウンロード&解凍して、適当なディレクトリに配置
  • 環境変数追加
    • SCALA_HOME=Scalaを配置した場所
    • PATH=%PATH%;%SCALA_HOMNE\bin


Dos窓登場
Scalaと入れてエンター
さー、開始です。


変数の定義

val・・・値型
var・・・変数型
scala>val n: Int = 1
n: Int = 1

scala>var m: Int = 2
m: Int = 2

scala> n = 1
:8: error: reassignment to val
       n = 1
         ^

scala> m = 3
m: Int = 3
ここ、大事
n = 4・・・error:再代入できないっす
m = 5・・・変数なのでOK
Scala推奨は、valでの定義です。

関数の定義

def 関数名(引数: 型, ・・・): 戻り値の型 = {
処理
}
scala> def greater(x: Int, y: Int): Int = {
     | if (x > y) x else y
     | }
greater: (x: Int, y: Int)Int

scala> greater(3, 9)
res0: Int = 9
型推論してくれるので、戻り値は省略可能
あくまで、コンパイラが推測できるなら、ね

制御構造

if (条件) 値1(絶対指定してね) else 値2
scala> if (true) 5 else 6
res1: Int = 5

scala> if (false) 5 else 6
res2: Int = 6

for (ブロック引数 <- コレクション; ・・・) 処理内容
for (ブロック引数 <- コレクション; ・・・) yield 値
scala> for (i <- 1 to 9) print (i + " ")
1 2 3 4 5 6 7 8 9

高階関数

高階関数ってゆーのはね、関数を引数にとる関数のことです。
なんのこっちゃ、ってゆー人は、nouzui2007と同じですので、がんばってくださいm(_ _)m 

mapとかfilterとかは、引数に関数を要求します。
書き方は、下をみてくださいね。
nで指定しているのが、=>以降の関数の引数になっています。
scala> List(1,2,3,4).map(n => n+1)
res5: List[Int] = List(2, 3, 4, 5)

scala> List(1,2,3,4).filter(n => n%2==0)
res6: List[Int] = List(2, 4) 
mapのほうは、Listに指定した要素ごとに、1を加算していって、結果をListにして返します。
filterのほうは、Listに指定した要素のうち、偶数になる要素をListにして返しています。

_ は魔法のことばです。
scala> List(1,2,3,4).map(_*2)
res7: List[Int] = List(2, 4, 6, 8)

クロージャ

無名関数について、おベンキョしましょう
scala> val sq = (n: Int) => n * 100
sq: (Int) => Int = 

scala> sq(9)
res9: Int = 900
無名関数はsqとゆー変数にセットしてますね。
ここはポイントです。
変数と関数に区別がないことに気づいたでしょうか?
私は気づきませんでした・・・orz

気づいた人は、こんなことができちゃうことがわかるかと思います。
scala> val sq = (n: Int) => n * 100
sq: (Int) => Int = 

scala> sq(9)
res9: Int = 900

scala> val alias = sq _
alias: (Int) => Int = 

scala> alias(10)
res10: Int = 1000
ここでもでました、魔法の言葉。
これは、仮引数です。
仮引数のときに括弧は省略できるようです。

ちょっと、頭が重くなってきたのでこの辺で。

ブログでソースコードをきれいに表示しよう

ポイントは、きれいにです。
いや~、いろいろあるもんですねぇ。

google-code-pretty

ソースコードに色をつけて、きれいに表示してくれちゃいますよ。


さっそくやってみましょう。

Bloggerの場合は、デザインページで、HTMLを編集しましょう。

headタグに、このタグを追加してください。

<link href="http://blog-imgs-22.fc2.com/k/e/v/kevinjohnson2/prettify.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="http://blog-imgs-22.fc2.com/k/e/v/kevinjohnson2/prettify.js"></script>

bodyのonloadイベント指定

<body onload="prettyPrint()">

ソースコードを以下のタグで囲む

<pre class="prettyprint"></pre>



class HelloRuby
    def hello
        p "Hello World"
    end
end

h = Hello.Ruby.new
h.hello

Cygwinをいれてみた

ので、メモ

CygwinのSetup.exeを取得

http://www.cygwin.com/
setup.exeのリンクをクリックしてね

setup.exeを実行して、インストール開始

defaultでインストールを進めると、いろいろ入っていないので、注意が必要


  • vi <- なぜ?
  • ssh
今回は、Rubyを入れておきました。


インストールしてからのお話

あとから、パッケージをインストールするときは、setup.exeをもう一度実行すると良いよ

あと、Windows用のviエディタのVIM32をインストールしていると、ホームディレクトリがVIM32のディレクトリになっちゃいます。
これは、HOMEという環境変数が設定されているためです。
消しちゃえば、問題ありません。
VIM32で問題ないかは不明です。



クラスタってなんだろう

Twitterでたびたびみかけるクラスタってなんだろう。

調べてみても、はっきりしたものはないようで、「~な人」的な感じなんだろうなぁ、ということがわかったくらい。


と、思っていたところに、こんなページが

クラスタ判定

判定結果が面白いので、Twittererはやってみては?