画面やフォントサイズが小さくなってしまったコマンドプロンプトを元に戻す方法

[`evernote` not found]
[`livedoor` not found]
[`yahoo` not found]

職場にて、コマンドプロンプトのコマンドライン上であるプログラムを動かすと急に画面サイズとフォントサイズが小さくなってしまいました。しかもその小ささがビックリするぐらい小さい。
画面やフォントサイズが小さいコマンドプロンプト

上記の画像を見てもらえれば分かる通り、肉眼で文字を読取ることができないほどです。

あれれ~おかしいぞ~と思い、タイトルバーを右クリックしてプロパティ画面を開き、フォントやレイアウトタブからサイズを変更してみても直らない。一旦閉じて再び開いたら直ってるかなと思っても直らない。再起動しても直らない。これは困った。

ただ、フォントタブを開いて気づいたことが一つ。『Consolas』『Lucida Console』『ラスターフォント』とあって日本語のフォントがない。とりあえずここで『Consolas』とかにしてみるとほぼ元の大きさに戻った。これで解決か・・・と思ったものの、そこで新しい問題が発覚。Alt+『半角/全角』キーを押しても日本語入力にならない。再度プロパティを見て『現在のコードページ』というのを見てみると『1252(ANSI – ラテン I)』と書いてある。

どうやら、文字コードの設定が変わってしまい、その影響でフォントサイズや画面サイズが小さくなったらしい。とりあえず文字コードを変更する方法を調べて、日本語対応の文字コードに戻すことに(参考:コマンドプロンプト chcp – [利用する文字コードを変更する])。
chcp 932
と入力して実行し、なんとか元に戻った。これで一安心。と思ってコマンドプロンプトを閉じて再度開くとまたラテン語の文字コードに戻っていた。再度調べてプロパティページで何かしら変更を加えてOKを押すと文字コードも保存されると分かり、これでようやく元に戻った(参考:コマンドプロンプトを英語表示に変更 chcp コマンドプロンプト王)。

ということは、最初に画面やフォントサイズが変わった時にプロパティをいじってしまったのがまずかったのかとここにきて気づいた。まあ何にせよ、一つ勉強になった。

ctagsで出力した関数一覧ファイルをタブ区切りにする正規表現置換

[`evernote` not found]
[`livedoor` not found]
[`yahoo` not found]

仕事で関数一覧を取得しなければいけないことになって探してみると、ctagsというツールを見つけました。
ctags日本語対応版

とりあえず、『Win32版(バイナリのみ) (ec58j2w32bin.zip  162,098 byte)』と書いてあるリンクをクリックしてダウンロードし、解凍したフォルダの中にあるctags.exeを『C:\Windows』に置く(システム環境変数のPATHが通ってるところならどこでもいい)。これで、コマンドプロンプトでctagsが使えるようになった。

とりあえず、試しにjQuery(非圧縮版)を置いたフォルダにて『ctags -R –languages=javascript –javascript-kinds=f -x > jquery.txt』と入力して実行すると、同じフォルダ内に下記のテキストファイルができた。
jquery.txt

開いてみると確かに関数一覧ができています(完全じゃないですけどね。これはJavaScript特有の問題だと思います。JavaScript以外のライブラリで試すべきでした)。ただ、区切りが数の定まっていない半角スペースということもあって、扱いづらそうです。もう少し扱いやすいように、これをタブ区切り(TSV)にする正規表現置換を考えてみました。

先ほどのファイルを見てみると、それぞれの行は左から
『関数名』『1つ以上の半角スペース』『function』『3つの半角スペース』『行番号』『1つの半角スペース』『ファイル名』『1つの半角スペース』『関数宣言行の文字列(半角スペース含む)』となっています。そこで、半角スペースで区切ってあるところは半角スペースの数を気にせず正規表現で『\s+』と考え、それ以外は『[^\s]+』と考えることにしました。自分が使っているNotepad++では置換する際に正規表現にチェックをいれ、下記のようにするとうまくいきました。

\1や\2は検索文字列で()で囲んだ文字列にあたります。エディタによっては、\1ではなく$1かもしれません。

とりあえずこれで下記のタブ区切りのファイルができました。
jquery_tab.txt

タブ区切りにすると、全て選択してコピーしてExcelに貼り付けるとちゃんとセルごとに分かれてくれるのでとても便利です。

JavaScriptで指定範囲内(5~10等)から整数の乱数を得る方法

[`evernote` not found]
[`livedoor` not found]
[`yahoo` not found]

先ほど初心者向けのJavaScript本を読んだのですが、そこに『■~●までの整数をランダムに表示する方法』として下記のようなコードが描かれていました。

例としてだしていたのが1~6です。確かに●が1だとこれで問題ないのですが、1以外だと問題があります。例えば、●を0とすると、範囲は0~■-1になります。

正確には下記のような感じになります。

関数化して、■をmin、●をmaxとして表すと下記のようになります。

parseIntの部分はMath.floorとしてもかまいません。さらにいうと括弧の位置が少し変わって、『parseInt(Math.random() * (max-min+1) + min)』ではうまくいかない時がありますが、『Math.floor(Math.random() * (max-min+1) + min)』はどんな時でも大丈夫です。どんな時というのは、指定範囲内にマイナスの値がある場合もということです。なぜかというと、parseInt(0.1)とparseInt(-0.1)は両方とも0になりますが、Math.floor(0.1)は0になり、Math.floor(-0.1)は-1になるからです(説明になってない?)。

PHPでWebスクレイピングをやってみた

[`evernote` not found]
[`livedoor` not found]
[`yahoo` not found]

前から興味があったけどやったことがなかったPHPでのWebスクレイピング。調べてみると、『PHP Simple HTML DOM Parser』というのがいいらしい(参考:PHP Simple HTML DOM Parserの使用方法 – Webスクレイピング ライブラリ)。
PHP Simple HTML DOM Parser – Browse Files at SourceForge.net

というわけで使ってみることに。まずは上記ページからsimple_html_dom.phpをダウンロードして作成するPHPと同じフォルダに置く。今回のウェブスクレイピングの対象ページははてなブックマークのタグ検索ページ。はてブのタグ検索結果ページのそれぞれのエントリーはsearch-resultというクラスのliタグ内に記述しているようなので、search-resultクラスの要素を取得してforeachでループしたらよさそう。

やってみたら思った以上に簡単にできたので、ちょっといろいろ機能つけくわえてみた。以下、body部分のみ抜粋。

サンプルページ:スクレイピングテスト

内容としては、タグと除外URLを入力してブックマーク数を指定して送信ボタンを押すとはてなブックマークのタグ検索の結果(最高200件まで)を出力するというもの。除外URLを入力すると、表示させないエントリーを指定できる。

例えば、タグに『ニコニコ動画』、除外URLに『http://www.nicovideo.jp/』と入れると、結果はURLに『http://www.nicovideo.jp/』がURLに入ってないエントリーだけが表示される(前方一致ではなく、URLのどこかに含まれていたら除外する)。
http://amyu.minibird.jp/scraping/scraping_test.php?tag=ニコニコ動画&cut=http%3A%2F%2Fwww.nicovideo.jp%2F&users=3

とりあえず、5ページぐらいなら怒られないだろうと思って最初5ページのみを見るようにした。他に影響がでるもんでもないと思うので、XSSとか考えずにコーディングしてます(それ以前にもっとキレイなコードを書くようにしろと怒られそうですが・・・)。

本当、思った以上に簡単にできたので時間があれば何かウェブサービスっぽいものを作ってみたい。

ブラウザからデスクトップ通知をする方法

[`evernote` not found]
[`livedoor` not found]
[`yahoo` not found]

久々に、HTML5 テクニックバイブルで知ったことのメモ。いったい何度目だ・・・。

今回はデスクトップ通知について。なんと、HTML5では、ブラウザからデスクトップ通知を表示することができるそうです。しかも、通知を指示するページを表示してなくても(ブラウザを最小化してたり、別タブで違うページを見てたりしててもという意味)。

とりあえず、サンプルページとして、カウントダウンタイマーを作成して0秒になった時点でデスクトップ通知を表示するウェブページを作ることにします。

サンプルページ:
最新のChromeやFirefoxではうまく動くはずです。

ページを開くと『デスクトップ通知を有効にする』というボタンが表示されていると思うので、そのボタンを押し、デスクトップ通知の許可をしてください。その後、スタートボタンが押せるようになると思うので、分と秒の数値を指定し、スタートボタンを押してください。カウントダウンがはじまります。0秒になるとデスクトップの右下に通知が表示されます。

試しに10秒ぐらいで試してみて、ブラウザを最小化したり、別タブを見たりしてみてください。それでも表示されると思います。なお、通知をクリックすると通知元のページを表示するようにしています。