Archive for 2010年7月

2年ぶりのTOEIC – Scoreは830

7月 26th, 2010

tuneのTOEIC

2年ぶりに受けたTOEICの結果が返ってきました。結果はリスニング460点、リーディング370点の合計830点で過去最高を更新しました。ここ2年間は英語の勉強をほとんど何もしていなかったので不思議でならないのですが、仕事でたまに使っているおかげなのかもしれません。

リスニングは特に目立つ弱点もなく、バランスよく点が取れていました。問題はリーディングで、リスニングと90点も差があることに加え、語彙に関する質問が他よりも正答率が悪かったです。ちなみに次に悪かったのは文法に関する問題でした。仕事でも相手が話していることは大体理解できるものの、文書やメールは苦手で、意思の疎通もジェスチャーや図に頼ることが多かったので、現在の英語レベルが正直に測れている気がします。

次は900点台を狙いたいところですが、シャドーイングだけに頼った勉強法ではリーディングを伸ばすことは非効率化もしれないので、語彙力の強化と文法の復習を少しずつやっていこうかと思います。twitterで900点台を狙う勉強法を聞いたところ、以下のアドバイスを貰いました。

  1. NYTを読む。単語の言い換えが多く、洗練された英語が学べる。
  2. TOEIC TEST英単語スピードマスターをやる。
  3. 海外に移住する。
  4. K/Hシステムの教材を使う
  5. BBCの教材を使う

本も書店で幾つか見てみたのですが、しばらくは英語の新聞を中心に知らない単語をこまめに引く習慣をつけようかと思います。最もその前に英語の活字を読む習慣をもっとつけなくてはいけませんが…

福島・那須へ旅行に行ってきました

7月 19th, 2010


少し早い夏休みをもらって父の実家がある福島、その途中にある那須へ家族旅行に行ってきました。那須は高地にある避暑地ですが、かなり暑いですね。

3連休の後ろ2日を使って行ったのですが、高速料金割引の効果か、子どもが夏休みに入った効果か、天気が良かったのかとにかく道路が渋滞して大半を車の中で過ごした気がします。とはいえ途中吊り橋に寄ったり、那須サファリパークに寄ったりして私も家族も楽しく過ごせました。

個人的にアルパカ牧場 那須ビッグファームに行きたかったのですが、ここはまた今度になってしまいました。最も夏はアルパカが毛を刈ってしまってモフモフ感が足りないそうなので涼しくなった頃が狙い目ですかね。

155冊の自炊が完了

7月 16th, 2010

jis02
Creative Commons License photo credit: 池田隆一

scanbooks.jpから業務用スキャナを借りること6日間、前に裁断した155冊の書籍を全て電子化し終えました。

実際にやってみてハマったことに、こんなことがありました。

  • スキャナがWindowsしか対応してない→急遽実家からWindows PCを借りた
  • スキャナが用紙サイズの自動判定に対応していない→サイズが似通った本が連続するよう調整
  • 飽きる→2時間ぐらいたったら休憩が必要
  • モノクロ印刷に赤ペンでの書き込みがある→面倒なので24ビットカラーで読み込み

紙詰まりや順番が狂うなどのアクシデントはほとんど起きませんでした。起きたとしてもきちんと裁断されてないなどのスキャナ以外の要因でした。

またやりたいとは思いませんが、本棚が1つ処分できて部屋が綺麗になりました。気になるデータサイズも150dpiスキャンしたJPEGをzip圧縮したもので5.3GBでした。書籍によってスキャン条件をもっと細かく調整するともっと小さく、綺麗にできたのでしょうが、これはスキャナ・裁断機を自分で購入するぐらい腰をすえてやらないと駄目でしょうね。

並行コンピューティング技法 第8章&第9章

7月 3rd, 2010

間が開いたので2回分まとめて。

◯第8章 ソート
プロセッサ時間の80%以上はソートに費やされるとも言われる。ソートを高速化すれば処理全体の高速化につながりやすい。
この章では5つのアルゴリズムについて並行化を検討している。

バブルソートは左右で要素を比較して、小さい値(または大きい値)が泡のように上がっていくことからそう呼ばれる。スレッドの順番が入れ替わらない限り、頭から複数スレッドで配列を走査してもソートは保証される。このアルゴリズムは波の動きに似ているためwavefront法とも呼ばれる。単に前のスレッドを抜かさないようにするとオーバーヘッドが大きくなるため、配列をいくつかのゾーンに区切って制御すると良い。

奇偶転置ソートは「奇数インデックスの比較→偶数インデックスの比較→奇数インデックスの比較」を繰り返してソートを行う。隣接同士の比較・変更しか起こりえないので、データ分解による並列化が容易。

シェルソートは配列全体を適当なサイズで分割し、分割された範囲内でソートを行う。徐々に分割サイズを小さくすることでソートを行ない、要素が大きく動かせることからソートが早く行える特徴がある。逐次処理では有効だが、並行処理ではキャッシュが効きにくくなり並行処理では短所にもなりうる。

クイックソートは逐次処理では最も一般的なソートである。再帰を使って実装することもあるが、並行処理には不向きなのでキューを使うなりして再帰は避ける必要がある。スレッドをプールし、ソート対象のインデックス範囲をキュー/スタックに入れておくことでスレッド間の競合を抑え、処理を並行化することができる。処理が終わったかどうかを判断し、スレッドに処理を辞めるよう促す実装が若干面倒。

奇数ソートはソート対象を二進数と考え、上位ビット/下位ビットを使ってソートしていく。同じ値の順序が保たれる安定ソートであることが特徴。実装では複数ビットをまとめてソートすることになるが、ソート後の移動先の計算がかなり面倒。本でもトリッキーに思える例が紹介されていた。

◯第9章 サーチ
未ソートデータに対するサーチと、ソート済みデータに対するサーチの例を紹介。

未ソートデータの場合、全要素を見ないといけないので、配列をデータ分解してスレッドに処理させる。探索対象のデータが見つかったときに処理を打ち切る工夫を入れるぐらいでOK。素直な実装になる。

ソート済みデータの場合、逐次処理では2分探索が一般的。並行処理ではこの考え方を発展させてN分探索すると良い。配列をNつに分解し、探索対象がどちら側にあるか(右側、左側、見つかった)を調べる。探索対象のデータは向きが異なるブロックに含まれるため、このブロックを探し出し、内部をさらにNつに分解して再帰的に探索を続ける。

posted with amazlet at 10.07.03
Clay Breshears
オライリージャパン
売り上げランキング: 6200