2009年6月28日日曜日

ネットラジオでボサノバ (2) – SHOUTcast

ゆったりとラウンジ系の曲を聴く

last.fm が有料化されて以来、再び iTune の 「ラジオ」に回帰した。

BGM としてよくかけているのはラウンジ系の曲。

ラウンジ・ミュージックとは音楽ジャンルのひとつ。ホテルのラウンジやカフェでかかる音楽、つまりそこに集う人々の会話や社交を邪魔しないムード音楽。また、そこから発展した比較的ゆったりとした曲調の心地良い音楽をさす。

(ラウンジ・ミュージック – Wikipedia より)

または、Ambient カテゴリーより090628-001

寝る前にもっとゆったりとして、少しさわやかな感じ (?) のものが聞きたいときは、同カテゴリーより

ニューエイジ・ミュージック – Wikipedia とは、

ヒーリング・ミュージックイージー・リスニング、または環境音楽などと類似した音楽性を持ち、またジャンルの境界線は曖昧であるため、それらと同一視される事も多い。分類不明なものを後付けでカテゴライズされることも多々ある。

逆に緊張感を持って頭を働かせたいときは、Electronic カテゴリーより

これだけでは飽きてしまうので、少し趣向を変えアンビエント、チルアウト系では Ambient カテゴリーより

朝目が覚めて、頭が働く方向へ持っていきたいときは、さわやかに Classical カテゴリーより

  • All Baroque Musick(1.FM TM)

追記 (2010.7.5) : 最近よく聴くのは以下の 4 つ。

 

SHOUTcast でボサノバ

しかし、夏の暑い日にポップで涼しげなボサノバが聞きたいけれど、iTune のラジオでは見つけることができず。 (+_+) 仕方がないので iTune の代替となるツールをいくつか試している中、Songbird のアドオンの中に SHOUTcast というサービスがあるのに気がついた。

早速 `bossa’ で検索 したら、Bossa Nova Jazz がヒット。

TUNE IN! のボタンを押して、再生。 あ~、こりゃええわぁ~ ^^

 

SHOUTcast 2.0

追記 (2010.7.5) : デザインが一新され、SHOUTcast Radio の左側にある Radio Genres に Latin > Bossa Nova があった。

 

関連記事

2009年6月21日日曜日

Firefox の フィードを再設定

RSS を登録するとき、毎回 Firefox のプレビューが表示されるのが面倒なので「フィードの購入には常に Google を使用する」のチェックを入れていた。しかし、最近いくつかのフィードを確認しつつ、ちゃんと表示されるかを確認してから Google Reader に登録したくなった。しかし、元の設定に戻すのはどこだろう…。

Firefox ライブブックマークについて - 教えて!goo によると、

メニュー → ツール → オプション → プログラム → webフィード

そんなところに設定があったのか。 ^^;

090621-001.png

Haskell でデータコンストラクタによるパターンマッチ

0. 目次

  1. let 式でパターンマッチを利用
  2. パターンマッチは、代数的データ型の値を分解して、値を取り出す
  3. パターンを利用できる場面は 6 つある
  4. case 式におけるパターンマッチ
  5. パターン束縛におけるパターンマッチ
  6. ラムダ抽象におけるパターンマッチ
  7. リスト内包表記におけるパターンマッチ
  8. do 式におけるパターンマッチ

 

1. let 式でパターンマッチを利用

パターン束縛とは,左辺がfun x ... のような関数ではなく,Just xや(x,y)などのようなパターンになる等式のことです。パターン束縛はトップレベルで定義するよりもlet式などで利用することのほうが多いと思うので,…

(第8回 遅延評価の仕組み:ITpro より、太字は引用者による)

ん? (@_@) let 式でもパターンって使えたんだ。

let 式 と言えば、

*Main> let x = 100; y = 200 in x + y
300

のように変数を値に束縛するだけだと思っていた。

 

リストで試してみる

早速試してみる。

*Main> let (x:xs) = [0..5] in xs
[1,2,3,4,5]

ちなみに、リストは Haskell において特別扱いされている。

定義を見ると以下の通り。

*Main> :i []
data [] a = [] | a : [a] 	-- Defined in GHC.Types

上記パターンマッチは、データコンストラクタを利用したものだということ。

 

2. パターンマッチは、代数的データ型の値を分解して、値を取り出す

Haskell (programming language) – WikipediaFeatures and extensions によると、

Characteristic features of Haskell include lazy evaluation, pattern matching, currying, list comprehensions [7], guards, definable operators, and single assignment.

「パターンマッチ」は、Haskell の特徴の一つとして挙げられる。

代数的データ型 – Wikipedia によると、

代数的データ型(…)とはプログラミングにおけるデータ型の一種で、他のデータ型を当該代数的データ型のコンストラクタで包んだデータをとする。この包まれたデータはコンストラクタの引数である。他のデータ型と異なり、コンストラクタが実行されることはなく、データを操作するにはパターンマッチを使ってコンストラクタからデータを抜き出さねばならない。

(太字は引用者による)

つまり、代数的データ型の値を分解して中身の値を取得するために用いると。

 

3. パターンを利用できる場面は 6 つある

では、パターンマッチは、上記の let 式以外にどのような場面で利用できるのだろう?

すぐに思い出すのは関数の定義におけるパターンマッチ。

Haskell 98 Report: 式3.17 パターン照合 によると、

パターンは、ラムダ抽象、関数定義、パターン束縛、リスト内包 表記、do 式、case 式に出現する。しかしながら、これらのうち、最初の5つ は最終的には、case 式に変換される

(太字は引用者による)

頭に入れておくために、整理しておく。

  1. ラムダ抽象
  2. 関数定義
  3. パターン束縛
  4. リスト内包表記
  5. do 式
  6. case 式

 

4. case 式におけるパターンマッチ

ところで、一番肝心な case 式で使えることを忘れていた。(+_+)

以前に、文字列を分割する split 関数で、

によりスッキリと書けるのを見たのを思い出す。

復習をしておく。何をするわけでもない適当な hoge 関数を定義。 case 式におけるリストのデータコンストラクによるパターンの利用例。

hoge xs = case xs of
           [] -> []
           (0:_) -> [0]
           (_:xs) -> xs

例えば、

*Main> hoge []
[]
*Main> hoge [0..5]
[0]
*Main> hoge [1..5]
[2,3,4,5]

 

5. パターン束縛におけるパターンマッチ

上記で引用した「3.17 パターン照合」には、let 式が挙げられていない。代わりに

「パターン束縛」

という用語が書かれている。これは冒頭に引用した文章の冒頭にも出てきた。

The Haskell 98 Report: 宣言 によると、

パターン束縛は変数を値に束縛する。単純パターン束縛は p = e という形式である。

「パターン束縛」の前項の説明「4.4.3.1 関数束縛」を読んでみたが、よくわからなかった。 (@_@;)

これについては、関数の話をしよう - @IT を参照。そこでは、同じ計算内容の二つの関数の例が挙げらている。

stdWeight' = \ h -> (h ^ 2) * stdBMI
stdWeight    h      =  (h ^ 2) * stdBMI

下の関数定義の書き方について、次のように解説されている。

この形式は関数束縛という。左辺が関数適用の形になっていて、右辺は関数抽象の本体と同じ形になっている。通常この関数束縛という形式で定義するのが分かりやすい。

なるほど、普通の関数の定義の方法だと認識していたものが「関数束縛」のようだ。

そして、 4.4.3 関数束縛およびパターン束縛 に、次位のように書かれている。

… 左辺が pat0 であるときパターン束縛が出現す る。それ以外の場合には、この束縛は関数束縛と呼ぶ。どちらの束 縛もモジュールのトップレベルあるいは let あるいは where 構成内であらわれる

(太字は引用者による)

 

6. ラムダ抽象におけるパターンマッチ

さて、ラムダ抽象でも、パターンが使えたことに長らく気がつかず。 ^^;

先ほどと同じく適当に hoge’ 関数を定義するなら、

hoge' = \(_:xs) –> xs

使ってみる。

*Main> hoge' [0..5]
[1,2,3,4,5]

先ほどの説明にあったように、これを関数束縛の形式で記述するなら、

hoge'' (_:xs) = xs

関数の定義に引数を書くのと、ラムダ抽象の引数を書くのは親戚みたいなものだから、ラムダ抽象でパターンが利用できるのは当り前か。 ^^; とは言ったものの、

「あれ?ラムダ抽象でもパターンが使えるの!?」

と思ってしまったのは、ラムダ抽象と関数束縛の形式による関数の定義方法が、自分の中で別物のように感じていたから。

先ほどの「4.4.3.1 関数束縛」の説明の中にあったが、

関数束縛には関数の値を中置演算子に束縛する別の構文も用意されている。 たとえば、以下の 2 つの関数定義は同等である。
  plus x y z = x+y+z
  x
`plus` y = \ z -> x+y+z
  (x
`plus` y) z = x+y+z

新ためて、二つは表裏一体だと実感。 (@_@)

 

7. リスト内包表記におけるパターンマッチ

では、リスト内包表記ではどう書くのだろう?

Haskell/Pattern matching – Wikibooks によると、

catMaybes :: [Maybe a] -> [a]
catMaybes ms = [ x | Just x <- ms ]

これを真似て、

*Main> [xs | xs <- [[1,2,3],[4,5,6],[7,8,9]]]
[[1,2,3],[4,5,6],[7,8,9]]
*Main> [x | x:xs <- [[1,2,3],[4,5,6],[7,8,9]]]
[1,4,7]
*Main> [xs | x:xs <- [[1,2,3],[4,5,6],[7,8,9]]]
[[2,3],[5,6],[8,9]]

パターンマッチで利用される、リストのデータコンストラクタは、「与えられたリストの要素に対して、照合が行われる」。

別の例を挙げるなら、

data Person = Person {name :: String, age :: Int}
ps = [Person "Tarou" 30, Person "Hanako" 40, Person "Jiro" 50]
main = do print $ [x | Person x y <- ps]
          print $ [y | Person x y <- ps]

結果は、

*Main> main
["Tarou","Hanako","Jiro"]
[30,40,50]

 

8. do 式におけるパターンマッチ

do式で、リスト内包表記の例と同様のものを考える。

hoge''' xs = do x:xs' <- xs
                return x

使ってみる。

*Main> hoge''' [[1,2,3],[4,5,6],[7,8,9]]
[1,4,7]

do 式は、モナドの (>>=) を書換えたもの。リストモナドの (>>=) は、

m >>= f  = concatMap f m

(List モナド より)

よって、(>>=) を使って書き直すと、

*Main> [[1,2,3],[4,5,6],[7,8,9]] >>= \(x:xs) -> return x
[1,4,7]

ラムダ抽象におけるパターンマッチに対応している。

2009年6月13日土曜日

塗るタイプの制汗剤 - OXY

ワキガが香る季節となった。自分のワキに鼻を近づけると、クラクラする。(@_@;)

以前、スプレータイプの制汗剤を使っていた。制汗剤なのに、なぜか余計に汗がでる。自分は制汗剤のような製品は合わないと思い、それ以来使わないようにした。

今年は OXY DEODORANT LIQUID オキシー デオドラントリキッド を使ってみることにした。この製品はワキに直接塗るタイプ。蚊に刺されたときに塗るムヒのような使い勝手。

現在、汗をだらだらとかくほどではないけれど、家に帰ってきてからも、それほど臭いが気にならない。結構いいかも。 ^^

 

関連記事

コールドストーン と マーベラスクリーム

コールドストーン

ファッションやグルメに疎いので「コールドストーン に行きたい!」と言われても、「それ何屋?」という程度の認識しかなかった。しかし、どこかで聞いたことがある気がすると思ったら、以前に「痛いニュース(ノ∀`):店員が歌いながらアイスを混ぜる「コールド・ストーン・クリーマリー」が名古屋に出店」で動画を見たことがあった。

これは引く…(@_@;) と思っていたが、実際に店に行くと毎回歌っているわけではなく、気が向いたときやリクエストがあったときにのみするらしい。上の動画ほど元気モリモリではなく、いかにもこういう店にありがちな「ようこそ~」という言い回しもなく控え目で、店員の対応も良かったので、当初感じていたドン引きもなく。ただし、店員による。 ^^;

ただアイスをこねているだけだろうと思っていたけれど、スーパーで売っているようなものとは比べ物にならないくらいうまかった。アイスそのものも良かったけれど、その場で具をアイスに絡めているためか、フレッシュさが全く違う。

というわけで、コールドストーンにはまった。 ^^

 

マーベラスクリーム

同じ建物の中にはアイスクリーム屋が他にもいくつかある。見た目は違うけれど、何だかやっていることが似ている マーベラスクリーム

歴史はコールドストーンの方が古い。

1988年にドナルド、スーザンのサザーランド夫妻(…)によって設立され、アメリカ合衆国のアリゾナ州テンピで開業。

(コールド・ストーン・クリーマリー – Wikipedia より)

マーベラスクリームは、

2005年12月に洋菓子販売を主力とした株式会社クレメリージャパンを設立、2006年5月、法人名を「株式会社マーベラスジャパン」へ変更。これを機に、アイスクリーム市場への参入を目的としたブランド「マーベラスクリーム」をスタートしました。

(マーベラスクリーム|Marvelous Cream ™ ~マーベラスクリームの沿革~ )

出店している場所が悪いためだろうか?客の入りが悪い。そして、コールドストーンと違って、いかにもアルバイトという感じのする店員。試してに食べ比べをしてみることに。

ところで、上記の「コールドストーン」とは、

選んだ素材は-9℃に冷やしたコールドストーン(石板)の上で、クルーがミックス!!

(コールドストーンクリーマリージャパン Cold Stone Creamery Japan -ハッピークリーマリー体験- より)

に由来するようだ。これに対して、

マーベラスクリームとは「マーブル(大理石)とマーベラス(すばらしい)にクリームをつないだ造語」。-16度に冷やした大理石の上でアイスクリームとミックスアイテムを混ぜることにより、従来のアイスクリームでは味わえない全く違う食感のアイスクリームです。

(マーベラスクリーム|Marvelous Cream ™ ~マーベラスクリームとは~ より)

アイスをこねる台の温度はマーベラスクリームの方が低い。しかし、大理石の上でこねているのを見ると、明らかにべちゃっとしている。動作もぎこちない。

食べてみたらこちらは普通のアイスクリームという感じで、その場で具を入れている意味がないほどにフレッシュではなかった。そして、見た目通りアイスがだらっとしていた。似たようなビジネスモデルでも客の入りが違うのは、こういうことにも由来するのだろう。

今回、食べた店がたまたま質が悪かったのだろうか?それぞれ一店舗しか見ていないのでなんともわからないけれど、他の店もさもありなんと思わせるほどに差があった。

2009年6月7日日曜日

ノート PC のハードディスクリカバリ

リカバリ CD が付属していない

友人のノート PC がどうにも調子が悪いので、Windows を再インストールすることにした。「リカバリ CD はあるか?」と聞いたら、どこを探しても見当らないそうだ。こりゃ、参ったなと思い調べてみたら、物欲結果をとことんレビュー:dynabook「AX/745LS」製品レビュー に、

HDDリカバリタイプなのでリカバリCDは付属していません。

え? 一昔前のノート PC ってそうなの? (@_@;)  長らくノート型を使っていなかったので、最近の事情を知らなかった。

リカバリー領域は、OS付属のPC(…)において、内蔵ハードディスクドライブ(…)に設けられた、OSのリカバリー再インストール)のための領域。2001年頃のパソコンから使われるようになった仕組み。…

付属OSとその他の付属ソフトのために、複数枚のCDを添付することが避けられ、製造コストを下げることができる。

(リカバリー領域 – Wikipedia より)

 

ハードディスクリカバリ

メーカーの HP を探したら、パソコンを購入時の状態に戻す方法(再セットアップ方法)ハードディスクリカバリ編<dynabook AX/7シリーズ>: dynabook.comサポート情報 に操作方法が書かれており、

  1. パソコン本体にACアダプタと電源コードを接続します。
  2. キーボードの[0(ゼロ)]のキーを押しながら電源スイッチを押して”dynabook”のロゴが表示されましたらキーボードの[0(ゼロ)]キーから手を離します。
  3. 「<復元方法の選択>」画面が表示されます。[◎初期インストールソフトウェアの復元]を選択して[次へ(N)>]ボタンをクリックします。

以下のような図が掲載されていた。

 

リカバリを試みる

早速、電源を入れたと同時に `0’ を押して起動したが、リカバリのための画面が出ず。 (+_+) おかしいなと思ったら、

>電源を入れた直後、dynabookの文字が表示中に 0 ゼロ キー を押す。
に誤りがあります。
0 ゼロ キーを押しながら電源を入れ、dynabookの文字が表示されたら離します。

(dynabook AX/740LSの初期化で困っています。 –OKWave より)

なるほど、BIOS を起動するときのように電源を押した後ではなく、押す前に `0’ を押している必要があったようだ。

 

リカバリできず

リカバリの操作をしたが途中でエラーとなり、それ以上進めなくなった。リカバリメディア作成ツールの使用方法<dynabook AX/7シリーズ>: dynabook.comサポート情報 によると、

トラブルの状況によっては、ハードディスクからシステムが復元できなくなる場合があります。このような場合のためにリカバリディスクを作成しておくことをおすすめします。

あ~、もう修理に出すしかないなぁ~ (+_+)

修理から返ってきたら、まず真っ先にリカバリ CD を作ることにしよう。

2009年6月6日土曜日

堅あげポテト と こんがりポテト

スナック菓子と言えばポテトチップス。昔カルビーの「堅あげポテト」のブラックペッパーが発売されたときは衝撃的で、以来ポテトチップスと言えばそればかり買うようになった。

今日はハウスの「こんがりポテト」ガーリックペパーを食べたが、パリッとした食感が独特で上手かった。 ^^ これいつから売ってたんだろ? また今度食べよ~。