PamGau http://pamgau.net/ Web周り、サッカーの話、ときどきヌコ ja Nucleus CMS v3.41 Copyright kyorecoba 2006 Some rights reserved Weblog http://backend.userland.com/rss http://pamgau.net/kyorecoba48x48.gif PamGau http://pamgau.net/ <![CDATA[京都御苑の「自転車道」]]> http://pamgau.net/item/736 「自転車道」その1

玉砂利が敷き詰められた京都御苑内の通路にあって、自転車一台分が通れる幅で玉砂利が薄くなっている箇所のことで、直線的な通路に対して微妙な微妙な曲線を描いているところが面白いです。「京都御苑(Wikipedia)」にもきっちり掲載されています。

御苑の管理者によって玉砂利は毎年均されるにもかかわらす、通行する自転車によって自然に生成されるのだそうで、毎年、微妙にその経路を変えて表れます。

京都御苑は南北に長い長方形なので、自転車が南北方向に御苑内を通行しても近道の意味合いは乏しく、どちらかといえば、東西方向の「自転車道」の方がよりはっきり表れているような気がします。

]]>
Misc http://pamgau.net/item/736 Sat, 14 Aug 2010 16:54:57 +0900
<![CDATA[Googleの左サイドバーを消すユーザスタイルシート for Firefox , Opera]]> http://pamgau.net/item/732 グーグル、検索結果ページを刷新

こういった仕様変更は基本的には「慣れる」のがベストなのでしょうけど、今般の場合、元々ブラウザのサイドパネルを表示させているような向きにはうっとうしいみたいです。

経過措置として検索結果ページに対してユーザスタイルシート (User CSS)で適用してみます。適用前後でレイアウトは下のニ画像のように変わります。ついでにスポンサードリンクやらもろもろの邪魔者ブロックも消しました。

Firefoxは3.6.3、Operaは10.53とこの記事更新時点で最新バージョンを使っています。なお、チョロメのことは知りません。

Google検索結果画面(CSS適用前) Google検索結果画面(CSS適用後)

Firefox + Stylishの場合

アドオン"Stylish"を導入しておくと、当該スタイルを適用しないことも簡単にできるので導入を強く推奨。導入後は下記のUser CSSを登録します。

@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document url-prefix(http://www.google.co.jp/search){

  div#leftnav {display:none}
  div#center_col {border-left: none !important;margin: 0em 1em !important;}
  div#tpa1 {display:none !important}
  div#mbEnd {display:none !important}
  div#tads {display:none !important}

  div.s, .j{
    width:auto !important;
    max-width:100% !important;
    padding-right:8px !important;
    text-align:justify !important;
    min-width:200px !important;
  }
}

追記:"google.com"の方を検索に使用する方は"@-moz-document"をそれに合わせて変更する必要があります。Stylishにはコピー機能があるので両方登録しておくこともできます。

また、画像検索などでもサイドバーを消したい場合は、"url-prefix"内の”search”を消せばいいです。

Operaの場合

普通、Operaで使うユーザースタイルシート(xxx.css)は、"Operaについて"に表示された"ユーザー CSS ディレクトリ"に配置します。

ところがこれまでにユーザースタイルシートを使ったことがないと、"Operaについて"に"ユーザー CSS ディレクトリ"が見当たらないかもしれません。その場合は、「設定フォルダ - Opera」を参考に、自前で作成しておいた方がいいです。

以上のことを確認したら、下記のコードを"delete_google_sidebar.css"のような適当な名前で保存します。

@charset "utf-8";
/*
Name:Google 左サイドバー消去
*/

div#leftnav {display:none}
div#center_col {border-left: none !important;margin: 0em 1em !important;}
div#tpa1 {display:none !important}
#mbEnd {display:none !important}
#tads {display:none !important}

div.s, .j{
  width:auto !important;
  max-width:100% !important;
  padding-right:8px !important;
  text-align:justify !important;
  min-width:200px !important;
}

なんのことはないスタイル指定の要部は、Firefox用のコードのうち、@-moz-document{……}の中身に過ぎません。charsetで文字コードを指定しているのは「表示」メニュー→「スタイル」で当該スタイルシートの名称を日本語で表示するための配慮です。

Operaサイトごとの設定画面

Operaの「設定」→「詳細設定」→「コンテンツタブ」→「サイトごとの設定を編集ボタン」→「追加ボタン」と進み、左図のように「サイト」のテキストボックスに、「www.google.com」と書き込みます。

この「サイト」では"*(アスタリスク)"のようなメタ文字は使えず、あくまでドメイン名しか指定できません、

次いで、「表示設定タブ」に移動し、最下段の「ユーザースタイルシート」に先ほど保存したCSSファイルを指定します。

これで作業は完了です。


参考記事

]]>
Software http://pamgau.net/item/732 Sat, 8 May 2010 21:58:44 +0900
<![CDATA["Ruby Way"章頭の言葉]]> http://pamgau.net/item/731 Twitterの影響からか名言っぽいことを引用するのが流行っているような気がするので、手元にある"Ruby Way 第2版 (Professional Ruby Series)”の章の初めに記載された名言っぽい句を抜き出してみました。

  1. Rubyの概要

    言語はわれわれの思考方法を形成し、思考できる内容を決定する。

    -- by Benjamin Lee Whorf

  2. 文字列の操作

    かつて原子は自然界の不可欠な要素と考えられていた。

    その後、陽子が基本要素と考えられるようになり、さらに粒子がそう考えられるようになった。

    今では、文字列が基本要素であるといわれている。

    -- David Gross , プリンストン大学理論物理学教授

  3. 正規表現

    私なら選ぶだろう。パターン化された小道に沿って彼を迷路に案内することを…。

    -- Amy Lowell , "Patterns"

  4. Rubyの国際化

    というわけで、この町はバベルと呼ばれた。

    主がそこで全地の言葉を混乱(バレル)させ、また、主がそこから彼らを全地に散らされたからである。

    -- 創世記11章第9節

  5. 数値計算

    (下院議員から)2回質問されたことがある。

    「バベッジさん、機械に間違った数字を入力したら、正しい答えは出てくるでしょうか。」

    何をどう取り違えるとこうした質問を思い付くものか、私には一向に理解できない。

    -- Charles Babbage

  6. シンボルと範囲

    聞いたことは忘れ、見たことは覚え、やったことは理解する。

    -- 孔子

  7. 時刻と日付の操作

    時刻を本当に知っている人はいるのだろうか。

    -- Chicago, "Chicago IV"

  8. 配列、ハッシュ、そのほかの列挙可能オブジェクト

    すべての部品は無理な力を入れずに組み立てられるはずである。

    組み立て直している部品は自分が分解したものであることを忘れてはならない。

    したがって、元に戻せないとしたら、何か原因があるはずである。

    決してハンマーを使用してはならない。

    -- IBMの保守管理マニュアル(1925年)

  9. 高度なデータ構造

    人類のコンピュータシステムのあらゆるバンクから抽出されたデータのグラフィック表現。

    考えられないほどの複雑さ。

    光線が精神の、データの星団や星座の非空間をさまよう。

    遠ざかる街の灯のように。

    -- William Gibson

  10. I/Oとデータストレージ

    クリーンなディスク上では、永遠にシークできる。

    -- Thomas B Steel, Jr

  11. RubyにおけるOOPと動的機能

    無理数の導入…が算術法則を単純化するのに都合のよい作り話であるのと同じく、

    物理オブジェクトは公理とみなされたエンティティであり、存在の変化の説明を膨らませ、簡略化する…

    物理オブジェクトの概念的なスキームも「同様に」都合のよい俗説であり、

    正真正銘の真実よりも単純で、そのくせ正真正銘の真実を散りばめている。

    -- Willard Van Orman Quine

  12. Rubyのスレッド

    あやつは言葉の綾よりも細かく、議論の筋道を(thread)を立てる。

    -- William Shakespeare、"恋の骨折り損"第5幕第1場

  13. スクリプティングとシステム管理

    そしてマスタープログラマは言った。

    「たった3行のプログラムでも、保守が必要になる日が来る。」

    -- Geoffrey James、"The Tao of Programming"

  14. Rubyとデータフォーマット

    「あなたの情報ですよ」とライブラリアンが言う。

    「その情報をYOU ARE HEREに結び付けられないかな」とヒロが言う。

    「何とかしてみましょう。フォーマットは調整がきくようですし」

    -- Neal Stephenson、"スノウ・クラッシュ"

  15. テストとデバッグ

    AE35ユニットでエラーを発見しました。

    72時間以内に完全に動作しなくなるでしょう。

    -- HAL 9000、"2001年宇宙の旅"

  16. コードのパッケージ化と配布

    アスピリンをきっかけとして、極端なまでに安全性を考慮したデザインのパッケージが登場するようになり、消費者による消費を妨げている。

    -- Dave Barry

  17. ネットワークプログラミング

    磁気テープを満載してハイウェイを猛スピードで走っているステーションワゴンの帯域幅を見くびってはならない。

    -- Andrew S . Tanenbaum

  18. RubyとWebアプリケーション

    ああ、もつれもつれて蜘蛛の糸

    -- Sir Walter Scott、"The Lay of the Last Minstrel"

  19. 分散Ruby

    過ぎたるはおよばざるがごとし。

    -- Robert Browing、"Andrea del Sarto"

  20. Rubyの開発ツール

    人は道具を作る動物である。

    -- Benjamin Franklin

自分でものを考えない記事だなぁ…。

]]>
Ruby http://pamgau.net/item/731 Sun, 2 May 2010 06:36:00 +0900
<![CDATA["The worst feelings in life"より]]> http://pamgau.net/item/730 http://fullofpointlessdrama.tumblr.com/post/456020014

Notesが2000以上もあるtumblerポストです。画像で投稿されているので、文字がつぶれ、目の弱りつつあるおっさんにとっては読みにくいので書きおこしてみました。

右下に出典らしき文字列が見えるのですが私の環境で判読できませんでした。

簡単な英語だし、私が訳しても野暮なのでそのまま…ということで。

The worst feelings in life:

  • Being told that someone is better than you.
  • Knowing that you're being lied to.
  • Letting yourself be beat down.
  • Crying hard.
  • Losing someone close.
  • Watching yourself fade away.
  • Falling apart because you're alone.
  • Being alone because you're falling apart.
  • Eating yourself.
  • Not being good enough.
  • Being told that she's prettier.
  • Being mad at someone because you're mad at yourself.
  • Best friends falling apart.
  • Being told that you are fat.
  • Breaking up.
  • Falling out of love.
  • Being used.
  • Being made fun of.
  • Changing for someone else.
  • Realising that he doesn't love you.
  • Falling asleep alone when he should be next to you.

かわいいなぁ…。

]]>
Misc http://pamgau.net/item/730 Mon, 22 Mar 2010 21:37:07 +0900
<![CDATA[裸の英会話]]> http://pamgau.net/item/729 先日、外国の知人(♂)とともに風呂屋に行きました。湯船に浸っていると、"What's that?"との問いが彼から発せられました。

私、やや食い気味に答えて曰く、"The guard of Buddha. He manipulates the flame."

「や」のつく自由業の方かどうかしりませんが、背中に不動明王を背負ってらっしゃったのを事前に確認し、子供の頃に近所の爺さんから聞いたことをそのまま云ってみただけでした。

ただ、その答えが正しかったかどうかに自信がなく、調べてみました。

釈迦が成道の修業の末、悟りを開くために「我、悟りを開くまではこの場を立たず」と決心して菩提樹の下に座した時、世界中の魔王が釈迦を挫折させようと押し寄せたところ、釈迦は穏やかな表情のまま降魔の印を静かに結び、魔王群をたちまちに超力で降伏したと伝えられるが、不動明王はその際の釈迦の内証を表現した姿であるとも伝えられる。穏やかで慈しみ溢れる釈迦も、心の中は護法の決意を秘めた鬼の覚悟であったというものである。

うーん、釈迦の内証を表現した姿だとは知りませんでしたが、まあ間違ってはいないかなぁ…。年寄りの話はよく聞いておくものです。

]]>
Misc http://pamgau.net/item/729 Wed, 8 Jul 2009 23:57:45 +0900
<![CDATA[RubyでProject Euler - Problem 59]]> http://pamgau.net/item/728 Problem 59 (Project Euler) [原文]

暗号化鍵は3文字の小文字である. cipher1.txtは暗号化されたASCIIのコードを含んでいる. また, 平文はよく用いられる英単語を含んでいる. この暗号文を復号し, 平文のASCIIでの値の和を求めよ.

ちょっとしたハッカー気分でどうぞ。

要は、英小文字3文字からなるパスワードを用意し、先頭バイトからXOR演算を繰り返し行って、文字に復号してみろ…ということです。

まず先頭の何文字か分だけを復号し、「ありふれた英単語」が含まれるか否を確認してパスワードを決定します。全てを復号して答えを求めるのはその後がよさそうです。

最初に何バイトぐらいを復号するか、また「ありふれた英単語」として何を選ぶのかの2点で少し試行錯誤が必要でした。わかってしまえばなんでもないのですけど…。

復号後の"cipher1.txt"はちょっと意地悪な書き出しになっています。

]]>
Ruby http://pamgau.net/item/728 Tue, 23 Jun 2009 22:17:00 +0900
<![CDATA[RubyでProject Euler - Problem 58]]> http://pamgau.net/item/727 Problem 58 (Project Euler) [原文]

1から初めて, 以下のように反時計回りに数字を並べていくと, 辺の長さが7の渦巻きが形成される.

(中略)

面白いことに, 奇平方数が右下の対角線上に出現する. もっと面白いことには, 対角線上の13個の数字のうち, 8個が素数である. ここで割合は8/13 ≒ 62%である.

渦巻きに新しい層を付け加えよう. すると辺の長さが9の渦巻きが出来る. 以下, この操作を繰り返していく. 対角線上の素数の割合が10%未満に落ちる最初の辺の長さを求めよ.

Problem 28で扱った螺旋数列の問題で、手間が省けて簡単かと思いきや、さすがにこのレベルの問題はひとひねりがあります。

「エラストテネスの篩」はせいぜい400万ぐらいまでを用意すればよかろうと思ったら、篩で用意した素数の範囲を超えても、なかなか10%を割りません。

5千万ぐらいまで確保しようとしたところで、当然のことながら、必要なメモリ領域を確保できなくなりました。

やむなく「ミラー・ラビン」でググると、親切にもWikipediaに素数判定用のRubyコードがあったのでコピペしました。敗北感にまみれながら…orz

ミラー-ラビン素数判定法 (Wikipedia)

]]>
Ruby http://pamgau.net/item/727 Tue, 23 Jun 2009 21:45:00 +0900
<![CDATA[RubyでProject Euler - Problem 57]]> http://pamgau.net/item/726 Problem 57 (Project Euler) [原文]

2の平方根は無限に続く連分数で表すことができる.

√ 2 = 1 + 1/(2 + 1/(2 + 1/(2 + … ))) = 1.414213…

(中略)

第8項は1393/985である. これは分子の桁数が分母の桁数を超える最初の例である.

最初の1000項を考えたとき, 分子の桁数が分母の桁数を超える項はいくつか?

とりあえず、連分数部分の分母・分子の数列をそれぞれ an, bn とすると、以下の漸化式が成立します。

  • an = 2an-1 + bn-1, a1 = 2
  • bn = an-1, b1 = 1

プログラムで漸化式を扱う場合、そのまま関数にすると再帰呼び出しによる再計算量が異常に多くなり、実行効率が激減します。

メモリを上手に使うのがうまいやりかたでしょう。

  seq_a = [2] # 分母
  seq_b = [1] # 連分数部分の分子
  ans = 0       # カウンタ

  (1..1000).each do |i|
    seq_a << seq_a[i-1] * 2 + seq_b[i-1]
    seq_b << seq_a[i-1]
    ans += 1 if seq_a[-1].to_s.length < (seq_a[-1] + seq_b[-1]).to_s.length
  end
  puts ans
]]>
Ruby http://pamgau.net/item/726 Tue, 23 Jun 2009 00:45:50 +0900
<![CDATA[RubyでProject Euler - Problem 55, 56]]> http://pamgau.net/item/725 初の複数問掲載記事。

Problem 55 (Project Euler) [原文]

10000未満のLychrel数の個数を答えよ.

50回も題意の処理をしても回文数が表れなければ、Lychrel数と見做しても差し支えないという条件をつけられているので楽です。

案外、Lychrel数は多いです。また、Lychrel数でありながら、回文数でもある数も他に見つかりました。

Problem 56 (Project Euler) [原文]

a, b < 100について自然数 ab を考える. 桁の和の最大を答えよ.

云われた通りやるだけです。

各桁の総和を求める関数を下のように書きました。

  def sum_digits(n)
    n.to_s.split(//).inject(0){|s,v|s+v.to_i}
  end
]]>
Ruby http://pamgau.net/item/725 Mon, 22 Jun 2009 23:16:45 +0900
<![CDATA[RubyでProject Euler - Problem 54]]> http://pamgau.net/item/724 Problem 54 (Project Euler) [原文]

poker.txtには1000個のランダムな手札の組が含まれている. 各行は10枚のカードからなる (スペースで区切られている): 最初の5枚がプレイヤー1の手札であり, 残りの5枚がプレイヤー2の手札である. 以下のことを仮定してよい

  • 全ての手札は正しい (使われない文字が出現しない. 同じカードは繰り返されない)
  • 各プレイヤーの手札は特に決まった順に並んでいるわけではない
  • 各勝負で勝敗は必ず決まる

1000回中プレイヤー1が勝つのは何回か?

問題文の引用は一部だけにとどめました。

独りポーカーなんかでは各役に以下のような得点をつけることがあります。

  • 005点 : ワンペア
  • 010点 : ツーペア
  • 015点 : スリーカード
  • 020点 : ストレート
  • 025点 : フラッシュ
  • 030点 : フルハウス
  • 050点 : フォーカード
  • 080点 : ストレートフラッシュ
  • 100点 : ロイヤルストレートフラッシュ

こうした問題で見通しをよくするにはクラスを作ってしまうことでしょう。

カード単体(Card)とカードを5枚保持する手札(Hands)とにそれぞれ相当するクラスがあれば十分です。

カード単体相当のクラスを作ると、"initialize"が使えるだけでもファイル読み込みの処理が随分楽になります。

また、5枚のカードを保持する手札相当のクラスでは"initialize"と同時に役相応の点数を計算保持するとともに、他者との勝負判定用に不等号演算子の再定義も行いました。

同役の際の勝負判定には役に関わるカードの数値が使われるので、当該数値を上記の得点の小数点以下に埋め込みます。

ちょっと処理が面倒だったのが、同役同数値の場合の勝負判定でした。役に付随するカード以外のカードの数値に基づいて判定されるので、役の点数とは別のインスタンス変数を設けました。

"poker.txt"は完全にランダムに作成されたらしく、無役の割合が多くて、高い役はありませんでした。なお、同ファイル中、"10"は"T"と1文字で表記されています

]]>
Ruby http://pamgau.net/item/724 Mon, 22 Jun 2009 21:16:04 +0900