2010年3月31日水曜日

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

1. ブログの更新を FriendFeed 経由で Twitter に投稿する

ブログを書いている友人が Twitter をはじめた。そこで、ブログの更新に合わせてタイトルを自動的に Twitter へ投稿するサービスとして FriendFeed を勧めた。

他にも同様のサービスは色々とある。FriendFeed を勧めた理由は、

  1. Twitter がサービスを停止したときに代理として使える
  2. FriendFeed でフォローした場合に画像のサムネイルが表示される

言うなれば、セカンド Twitter として利用できる。また、Twitter クライアントとして使える。

 

2. FriendFeed に Twitter アカウントで登録

Twitter に予めログインしておく。

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

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

img03-31-2010[3]

 

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

の説明に従い、FriendFeed にブログを登録。

続いて、Twitter の「投稿の優先設定」をしようと「設定」を見た。しかし、Twitter の設定が見つからず。 (+_+)

img03-31-2010[4]

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

 

4. Twitter の「投稿の優先設定」を表示させる

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

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

img03-31-2010[5]

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

img03-31-2010[6]

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

Firefox で開いているタブを一覧して切り替える - 「タブプレビュー」の活用と、マウスジェスチャーへの割り当て

1. アドオン FoxTab を使うのをやめた

 FoxTab はタブを切り替えるための Firefox アドオン。タブを切り替えるときに、タブのサムネイルを一覧してくれる。

このアドオンにべた惚れだったけれど、最近利用していない。理由は、表示されるサムネイルがぼやけた画像になったため。

それ以来、普通にタブを切り替える方法に戻した。

しかし、ブラウズ中、たくさんのタブを開くことが多い。そのため、どの位置に何のサイトを開いたのか忘れてしまう。

開いているタブが多い場合は、内容を分類して、別のウィンドウへ移す。今のバージョンの Firefox は、タブを D&D で移動できる。直観的で扱いやすい。

それでも、多くのタブを開いていると、もっと自在にタブ間を行きしたい。

 

2. タブプレビュー機能を使う

アドオン Firefox Secrets を使うと、タブプレビューを表示させることができる。

窓の杜 - 【REVIEW】「Firefox」v3.6の隠し機能を手軽にON/OFFできる拡張機能「Firefox Secrets」 によると、

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

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

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

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

 

3. タブプレビューを有効にする

a. Firefox Secrets で設定する場合

上記の設定は about:config でも設定できる。

GUI を使って設定したい場合は、Firefox Secrets を利用すれば良い。

Firefox Secrets の設定画面で Settings において

  • Tab previews
  • Tabs previews menu button

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

img03-31-2010[1]

 

b. Configuration Mania で設定する場合

アドオン Configuration Mania で設定する場合、

  • ブラウザ > タブブラウジング > タブのプレビュー表示

において、「タブの一覧表示」「Ctrl+TAB」にチェックを入れる。

SnapCrab_Configuration Mania_2013-1-12_15-5-12_No-00

 

4. タブ一覧をすぐに表示する方法

Ctrl + Tab

の入力により、タブの切り替え画面が表示される。ただし、多くのタブが開かれている場合、一部が表示される。これに対し、

Shift + Ctrl + Tab

を押すと、全てのタブがすぐに表示される。マウスによって選択しない限り、選択画面が消えることはない。

 

連続したキー入力

KeySwap などの、キーを入れ替えるアプリケーションで、CapsLocks に Ctrl を割りてておけば、

  1. Shift
  2. Ctrl
  3. Tab

という順にキーが並ぶ。そのため、キーの押下を素早く行える。

 

5. FireGestures でタブプレビューを表示する

FireGestures を使うと、タブプレビューを表示する操作を、マウスジェスチャーに割り当てることができる。

FireGestures の設定画面を開き、

スクリプトを追加

にあるスクリプトを貼り付け、ジェスチャーを割り当てた。

タブの切り替えはよく行う操作なので、マウスを上方向へ移動させる動作にした。

img03-31-2010[2]

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

追記 (2010.6.6) :  マウスを上方向へ動かすジェスチャは「新規タブ」に戻した。

代わりに 下左 (DL) のジェスチャーをタブプレビューに割り当てた。

DL

というマウスの動きは、下方向、左方向へとカクカクと動かす必要はない。円を描くようなつもりでクルッとマウスを動かせばいいので、割とスムーズにタブプレビューを表示させることができる。

 

参考サイト

2010年3月28日日曜日

Windows で Core 2 Duo E8400 をオーバークロック - DRAM Frequency に気をつける。AI Suite でお手軽に Performance モードに設定。

1. AI N.O.S で設定すると、負荷がかかるとすぐに落ちる

ASUS のマザーボード(ASUS P5K-E)には、Windows 上で CPU をオーバークロックするためのユーティリティ(AI Suite)が付属している。このツールを用いると、BIOS で設定をする必要がなく、お手軽にオーバークロックを試すことができる。

AI Suite のダウンロードは以下より行う。

使っている CPU は Core 2 Duo E8400 。 「e8400 オーバークロック」 で検索 すると、4 GHz を超えた設定の例が、ゴロゴロしている。自分の PC もオーバークロックするために AI SUITE の AI N.O.S を設定してみた。

AI N.O.S とは、アルゴPC-SHOP→ASUSのAI Suite によると、

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

試しに、以下の値を設定。

  • Manual
  • Standard
  • 110%

この設定で PC を利用していたところ、負荷がかかった時点でバスンと落ちた。 (+_+)

何度設定しても、安定するのは 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) : CPU に負荷がかかると、落ちることはなくなった。しかし、動画を再生すると音声が乱れる

そこで、メモリの設定もすることにした。

  • Memory > DRAM Frequency

の値を 800 MHz とした。

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 モード

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 で オブジェクト をパスに沿って配置する

1. オブジェクトを並べたい

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

img03-24-2010[12]

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

img03-24-2010[20]

 

2. 方法

a. パスの合成

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

img03-24-2010[13]

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

img03-24-2010[14]

 

b. Path Effect Editor

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

img03-24-2010[15]

 

c. 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]

 

参考