2010年3月31日水曜日

FriendFeed の 「Twitter 投稿の優先設定」を表示させるには – Twitter アカウントで登録した場合

ブログを書いている友人が Twitter をはじめたので、ブログの更新に合わせてタイトルを自動的に Twitter へ投稿するサービスとして FriendFeed を勧めた。他にも同様のサービスは色々とあるけれど、これを推したのは Twitter がサービスを停止したときに代理として使えるし、FriendFeed でフォローした場合に画像のサムネイルが表示されるので、セカンド Twitter として、また、Twitter クライアントの一つとしていいかなと考えたため。

 

Twitter の「投稿の優先設定」が表示されない

FriendFeed に Twitter アカウントで登録

まずは Twitter に予めログイン。

その後、FriendFeed で Twitter アカウントを使って登録。

Twitter での認証画面が表示されたら「許可する」。

img03-31-2010[3]

 

設定画面

この後、「ブログの更新情報は『Friendfeed』で流すことにした - IDEA*IDEA ~ 百式管理人のライフハックブログ」の説明に従いブログを登録。続いて、Twitter の「投稿の優先設定」をしようと「設定」を見たけれど、Twitter の設定が見つからず。 (+_+)

img03-31-2010[4]

自分の場合は、Twitter アカウントで FriendFeed に登録せず、メルアドで登録した後に Twitter を追加したので設定が表示されていたのかもしれない。

 

対策

一度、FriendFeed のホームに戻り、投稿フィールドをクリック。

Twitter のリンクが右下に表示されたらクリック。再度 Twitter での認証画面が表示されるので「許可」する。

img03-31-2010[5]

この後、先ほどの「設定」画面を表示したら、「Twitter 投稿の優先設定」が表示されるようになった。

img03-31-2010[6]

後は、「ブログの更新情報は『Friendfeed』で流すことにした - IDEA*IDEA ~ 百式管理人のライフハックブログ」の説明に従った。

Firefox のタブプレビューによるタブの切り替え

FoxTab の代替は?

あれほどべた惚れだったアドオン FoxTab を最近利用していない。いつからか覚えてないが、FoxTab でタブを切り替えるためにサムネイルを表示させたとき、表示がぼやけるようになった。自分の PC の調子が悪いのか、それとも CPU に負担をかけない設計上の配慮なのかわからなかったけれど、そのときから使うのをやめた。

それ以来、タブのタイトルを見てはマウスオーバーで選択する操作に戻る。しかし、たくさんのタブを開くことが多いので、どこに何があるのか忘れてしまう。あまりに多い場合は、タブを分類し別々のウィンドウへ移す。今の Firefox はこの操作が D&D でできるので直観的で扱いやすい。それでも多くのタブが表示されていると、もっと自在にタブ間を行き来できる便利なアドオンはないのかと渇望。

 

タブプレビュー機能

そんなとき、窓の杜 - 【REVIEW】「Firefox」v3.6の隠し機能を手軽にON/OFFできる拡張機能「Firefox Secrets」 の記事に目が留まった。

「Firefox」v3.6には機能自体は追加されたが、標準で無効化されており、通常の設定画面から有効化することもできない機能がいくつか存在する。…

ON/OFFできるのは、[Ctrl]+[Tab]キーによるタブのプレビュー表示機能、タブバー右端のボタンによるタブプレビュー機能、…

タブを選択するためのプレビュー表示機能の動作を見たら、Vista の Aero と親和性の高いデザイン。

コアな Windows ユーザーの中にはこういう透明感のあるデザインを好まない人もいるが、自分は元マカーなので綺麗で見やすい UI は好き。特に透けて見えるものは奥行きが感じられるため、全部が平坦に見えるデザインより認識がしやすい。

機能的にも、プレビューの上部にはタブをタイトルで抽出するための検索フィールドがあるし、各々のプレビューウィンドウの上にマウスポインタを乗せると閉じることもできて便利。 ^^

 

アドオン Firefox Secrets の利用

上記の設定は about:config でも設定できるらしいけれど、お手軽に紹介されていたアドオンを導入することにした。Firefox Secrets よりインストールして再起動。

アドオンの設定画面で Settings

  • Tab previews
  • Tabs previews menu button

の二つにチェックを入れた。

img03-31-2010[1]

これにより、Ctrl + Tab でタブの切り替え画面が表示される。ただし、この切り替え方法だと多くのタブがある場合、一部が表示されるのみ。

これに対して Shift + Ctrl + Tab を押すと、上記操作で表示されなかったタブの内容も表示される。また、マウスによって選択しない限り、選択画面が消えることはない。

 

FireGestures でタブを切り替える画面を表示

ブラウズするとき、右手はマウスを持っていることが多い。そのため、片手で Shift + Ctrl + Tab のショートカットキーを押すのは流石にしんどい。そこで、アドオンFireGestures によりマウス操作にこのキーボードの入力を割り当てることにした。しかし、用意されている動作にキー入力はないようだ。

仕方がないので、新しく動作定義するために設定画面で「スクリプトを追加」。調べたら、以下のサイトにまさに自分が欲しかったスクリプトが書かれていた。

これをスクリプトの編集画面に貼り付け、ジェスチャーを割り当て。このとき、タブの切り替えはよく行う操作なので、マウスを上方向へ移動させる動作に割り当てた。

img03-31-2010[2]

ちなみにマウスを下方向へ移動する動作は、「タブを閉じる」に割り当てている。

追記 (2010.6.6) :  マウスを上方向へ動かすジェスチャは「新規タブ」に戻した。代わりに 下左 (DL) へ変更。この動き、律儀にカクカクと動かす必要はなく、円を描くようなつもりでクルッとマウスを動かせばいいので、割とスムーズな動作となる。

 

参考サイト

2010年3月28日日曜日

Core 2 Duo E8400 のオーバークロック - DRAM Frequency の設定に気をつける

1. AI N.O.S の設定ですぐに落ちる

 「e8400 オーバークロック」 で検索 すると、4 GHz を超えた設定の例が、ゴロゴロしている。自分の PC も少しオーバークロックして使おうと思い、AI SUITE で AI N.O.S を設定。(マザーボードは ASUS P5K-E )

AI N.O.S とは、

(リアルタイムオーバークロック機能)
CPUの負荷に応じて自動的にCPUのオーバークロックを行なう機能です。上昇率はパーセントで指定します。

(アルゴPC-SHOP→ASUSのAI Suite より)

試しに以下のような値で設定。

  • Manual
  • Standard
  • 110%

しかし、負荷がかかった時点でバスンと落ちた。 (+_+)

何度やっても安定するのは Mode: 105% まで。AI SUITE で、リアルタイムに変化する CPU のクロック周波数を見ていると、3200 MHz を超えた辺りで動作が不安定になる。動画を再生している場合は、

ビビビビ

と音が乱れた後で落ちる。

仕方がないので AI N.O.S を使うのをやめた。

img03-28-2010[1]

 

2. 手動で CPU Frequency の設定

念のため、手動で周波数を設定。

AI Booster の advance で CPU Fequency の値のみ 400 へと変更。

img03-28-2010[2]

今度は、負荷がかかっても、何の問題もなく動作している。瞬間的に 3600 MHz を超えても安定している。

うーん、何でだろう? (@_@;

Intel LGA775 OCガイド « OCTECH -Review- によると、

AI N.O.S.では、FSBの値を一定の割合(%)で増加させ、関連する設定をある程度マザーボード側で自動調整してくれるのでお手軽ではあります。
しかし、使用するCPUやメモリーの耐性がどの程度なのか不明な場合、ともすれば動作不能に陥ることもあり十分なOC耐性を確認できません。

ということは、自動調整により、CPU 以外の部分で耐えれなかったということかな ?

 

3. DRAM  Frequency の設定

追記 (2010.4.2) : 負荷がかかると、落ちはしないけれど動画の音声が乱れるので、メモリの設定をしたら落ち着いた。

img04-02-2010[1]

追記 (2010.7.3) :  FSB を `400’ 設定した。

オーバークロック役立ち?表」 を見ると、この設定ではメモリの耐性を超えてしまうようだ。

よって、AI Booster の設定において

  • DRAM Frequency

の値を 667 MHz にした。

img07-03-2010[1]

BIOS で DRAM Frequency を設定したときは、上記の表における 「設定名」 ではなく 「メモリ動作クロック」 に相当する値が表示されていた。

設定についての考え方は、以下を参照。

 

4. AI Booster の Performance モードはお手軽

追記 (2010.4.7) :  やっぱりお手軽に設定するには Perfomance モードピーク時には 3.6 – 3.8 GHz になる。

img04-07-2010[1]

 

参考サイト

 

関連記事

2010年3月27日土曜日

Haskell の sequence 関数 - foldr をイメージして

Haskell の mapM_ – foldr と (>>) を意識して」のつづき

1. mapM_ 関数を理解するには、sequence 関数の理解が不可欠

前回は、

mapM_ 関数

の動作について見た。しかし、どうも感覚的に全然身に付いていない。

mapM_ を使おうとすると、

「あれ?一体これ何してるんだっけ」

と考え込んでしまう。返り値に関心のある mapM にしても同じ。

多分、この関数のベースとなっている

をちゃんと理解してないために、頭の中にイメージを描けないと思う。 (+_+)

Prelude には、

sequence :: Monad m => [m a] -> m [a]

   Evaluate each action in the sequence from left to right, and collect the results.

型を見れば、わかるように、sequence 関数は、Monad が関わってくる。

ところで、モナドな計算について理解しようとすると、途端に具体的なものが、遠のき霧の中に隠されてしまう感覚を抱く。詳細なことを、一々考えないで済むのが抽象化のメリット。しかし、モナドに関しては、詳細を考えないで済ませることができない。共通の構造として存在するものを理解し、抽出する方法を学ばなけれど、いつまで経ってもブラックボックスをいじっているという感覚から抜け出せない。

 

2. モナドのイメージ

「モナドとは何か」について様々な説明がされる。

例えば、

モナドは値およびその値を使う計算の並びという観点からいえば、計算を構造化 する方法です。

(All About MonadsIntroduction より)

これをはじめて読んだとき、何が言いたいのかサッパリわからなかった。

しかし、今理解している範囲で「モナドのイメージってどんな感じ?」と言われたら、やはり Monad クラスの (>>=) の説明を元に想像している。

Sequentially compose two actions, passing any value produced by the first as an argument to the second.

(Prelude より)

「アクション」と言われるとわかりずらいので、「計算」 と置き換えて読んでいる。つまり、

二つの計算をつなげるとき、先行する計算の結果を、後続の計算の引数とする。

頭の中のイメージは、

img03-25-2010[1]

(>>=) による計算のつなげ方にはバリエーションがある。値を含む「包み」の種類によって計算の仕方が異なる。

例えば、以下のように、Maybe, [ ], State s の型コンストラクタが「包み」で、それぞれの型コンストラクタに応じて計算の方法が定義される。

img03-25-2010[2]

Prelude の Moand の説明では、

it is best to think of a monad as an abstract datatype of actions.

モナドを、アクションの抽象データ型の一種だと考えておけばよいと。

モナドと言われた場合、このような大雑把なイメージを頭に浮かべている。イメージが浮かぶから、ある程度わかった気になるれる。数学嫌いの文系人間なのでこの程度の想像で「まぁよし」と。

 

3. foldr の動作イメージ

モナドな計算のイメージはできているとして、mapM 関数に話を戻す。この関数をイメージできない原因となっている sequence 関数。

Source を見ると以下のように定義されている。

sequence       :: Monad m => [m a] -> m [a] 
sequence ms = foldr k (return []) ms
            where
              k m m' = do { x <- m; xs <- m'; return (x:xs) }

これを見て、すぐに理解できるほど、foldr 関数に馴染んでないので、もう一度ここから考え直し。 (+_+)

ところで、foldr をイメージをするとき一番参考になったのは下図だった。

リストの要素間に、関数を適用していく様子がイメージしやすい。

これを元に、具体的な場合に当てはめて考える。

 

リストの要素がモナドでない場合の foldr 関数の動作イメージ

まずは、リストの要素がモナドではない場合の概念的なイメージから。

例として次の場合。

foldr (+) 0 [1,2,3,4]

最初に、foldr の計算のためにツリーをイメージ。その後、対象であるリストの要素を木の左の葉に割り当てる。加えて、foldr の第 2 引数である 0 を木の一番下の右の葉へ。

img03-25-2010[3]

次に、二項演算子 (+) を一番下の二つの葉に適用して 4 という結果を生成。これを木のルートの方へ繰り返し最終的な結果を得る。

img03-25-2010[4]

 

sequence 関数における foldr の動作イメージ

sequence 関数の定義を再掲。

sequence       :: Monad m => [m a] -> m [a] 
sequence ms = foldr k (return []) ms
            where
              k m m' = do { x <- m; xs <- m'; return (x:xs) }

foldr が使われている行を見ると、k が二項演算子で、第 2 引数に、「空リストがモナドで包まれたもの」が与えられているのがわかる。これを先ほどと同じようにイメージする。

要素がモナドであるリストを、木の左の葉に割り当てる。次に、一番下の右の葉に、「モナドで包まれた空リスト」を置く。

img03-25-2010[5]

次に 二項演算子 k を一番下の葉に適用。

img03-26-2010[1]

関数 k の定義で、do 式を使わないなら、

img03-26-2010[2]

括弧を明示的に付けるなら、

img03-26-2010[3]

こうすると、関数が内側へ内側へとネストしつつ、 (>>=) で第 1 引数の計算の結果を第 2 引数の計算へと受渡している感じがつかみやすい。

最後の return に注目すると、左の葉のモナドな計算から結果を取り出し、それを右の葉のモナドな計算の結果から取り出したリストの先頭へ (:) を使って追加し、最後に return でまたモナドに包んで返しているのがわかる。

結局、大雑把に言って、sequence 関数は与えられたモナドのリストの個々の中身を取り出し、リストに追加したら、そのリストをまたモナドで包んで返すことを繰り返す。

 

4. 具体的な型で sequecne 関数を試す

Maybe  a

一番わかりやすい例は Maybe a 型のリストに sequence 関数を適用したとき。

*Main> sequence [Just 1, Just 2, Just 3, Just 4]
Just [1,2,3,4]

各々のJust で包まれた数値がリストにまとめられ、再び Just で包まれている。

img03-26-2010[5]

 

[a]

リストの場合は、

*Main> sequence [[1,2],[3,4,5]]
[[1,3],[1,4],[1,5],[2,3],[2,4],[2,5]]

むむむ…(@_@; 複雑な結果になった。

先ほどの foldr のイメージを思い出しながら考えると、最初の計算は以下のようになる。

*Main> [3,4,5] >>= \x -> return [] >>= \xs -> return (x:xs)
[[3],[4],[5]]

img03-26-2010[7]

次に、上記の結果を元にして、

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

 img03-26-2010[8]

 

State s a
B000ALF5AY

State モナドの場合は、「初期値と増分を持つカウンター」を対象にして考える。

以下の next 関数はカウンターの値を増分だけ増やす関数。返される値のタプルの第 1 要素は next により値を更新する前の値であるとして定義。これを State モナドで包んでリストにし、それに対して sequence 関数を適用する。

import Control.Monad.State

data Counter = Counter { val, step :: Int } deriving Show

next :: Counter -> (Int, Counter)
next (Counter v s) = (v, Counter (v+s) s)

main = let s = sequence [State next, State next, State next]
       in print $ runState s $ Counter 0 1

結果は、

([0,1,2],Counter {val = 3, step = 1})

State モナドの場合、State s a 型なので、State s が包みで a が計算をつなげると次に渡される結果。よって、タプルの第 1 要素がリストに集められ、第 2 要素は State モナドがつなげられるごとに背後で カウンタの状態が更新されていく。

img03-26-2010[9]

うーん、やはり sequence 関数の動作のイメージができても、個々のモナドの (>>=) による計算のつなぎ方もイメージできてないと難しいなぁ。。

 

関連記事

2010年3月24日水曜日

Inkscape で オブジェクト をパスに沿って配置する

circle 丸を描くツールで、複数の円を描いた。

img03-24-2010[12]

これを以下のようにパスに沿って配置したい。

img03-24-2010[20]

 

方法

パスの合成

上記の全ての円を選択し、メニューの 「Path > Combine」で合成。 (Ctrl + K)

img03-24-2010[13]

合成すると、重なっていた部分が透けて見えるような格好になる。

img03-24-2010[14]

 

Path Effect Editor

パスにエフェクトを加えるためのエディタを表示するため、メニューより 「Path > Path Effect Editor ...」を選択。 (Shift + Ctrl + 7)

img03-24-2010[15]

 

Interpolate Sub-Paths

Path Effect Editor が表示されたら、上記で合成した円を選択し、Apply new effect で `Interpolate Sub-Paths’ を選び Add ボタンを押す。

img03-24-2010[16][4]

これにより、円が一列に重なった状態になる。

img03-24-2010[17][4]

次に、上記の円を選択した状態で、Path Effect Editor の Current effectEdit on-canvas アイコンをクリック。

img03-24-2010[16][6]

これにより、エフェクトをかけるためのパスが円の上に表示される。

img03-24-2010[19][4]

このパスをつかんで変形させると、それに伴い円がパスに沿って配置される。

img03-24-2010[20]

 

参考

Google ブックマーク で リスト の作成と共有

今は 開発停止してしまった Google Notebook についで利用率の高いサービスは Goolge ブックマーク。ブラウザ内蔵のブックマークは早々と使うのをやめ、オンラインブックマークに移行。Google を利用したのは公開して他人とつながるのが目的ではなく、完全にプライベートで利用したいため。Google 検索すると同時にブックマークも検索するスクリプトを使うようになってから、以前より早く目的地へ辿り着くことができるようになり依存度が高くなっている。

しかし、ちょっとしたブックマークのリストを友人と共有したいことがしばしばあり、完全にプライベートではなく共有する機能があると便利。そういうとき未だに Google Notebook を使っているけれど、ブックマークにいつの間にかリストを作成して共有する機能がついていた。まだ正式版ではないみたいだけれど。

 

リストの作成

Google ブックマーク の末尾に `l’ を付けた以下の URL にアクセス。

左上に自分の作成したリストと、他人と共有しているリストへのリンクが表示される。

img03-24-2010[1]

リストを作成するために左上にある Create new list ボタンをクリック。

img03-24-2010[7]

ダイアログが表示されるので、リストに名前を付けて Create list ボタンを押す。( Make Public でリストを公開することもできるようだ。)

img03-24-2010[3]

作成されたリストの画面を見ると、他人と共有するための Share ボタンと、コメントを追加できるのがわかる。

img03-24-2010[4][7]

 

リストへの追加

ブックマークのホームへ戻り、リストへ追加したいブックマークにチェックを付ける。

img03-24-2010[2]

ブックマーク一覧上部の Copy to list をクリックして、先ほど作成したリストを選択。

img03-24-2010[5]

これでリストにブックマークが追加された。

 

リストの共有

My lists をクリックして作成したリストを表示し、右上の Share ボタンをクリック。

img03-24-2010[6]

Google ドキュメントでおなじみの共有のための設定ダイアログが表示されるので、Invite People にメールアドレスを入力して、Invite ボタンを押す。

img03-24-2010[9]

招待された側は Google bookmarks のホーム画面で Shared with me をクリックすると共有されたリストが表示される。

img03-24-2010[8]

 

リストを公開したい場合は先ほどの Visibility タブをクリックし、PrivatePublic に変更して Save 。

img03-24-2010[10]

 

参考