正規表現を読む

正規表現はプログラミングで文字列が、あるパターンに従っているかどうか確認したい時等によく使いますが、?とか+とか*とかの記号を使った記述が多いため、一見するとどういうパターンにマッチさせようとしているのか理解しにくい場合があります。こいういう場合、パターンの頭から注意深く見て行く必要があります。

 


var parse_url = /^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/;

これは、JavaScriptでURL文字列にマッチさせる正規表現です。一見すると頭がクラクラしてきそうな記号の羅列です。

この正規表現を読み解いて行こうと思います。

 

最初の/と最後の/で、これが正規表現リテラルであることを示しています。意味的には次のように書いた場合と同じです。

findの便利な近い方

先日の「UNIXコマンド これだけは覚えておけ!」に続いて、同じサイトから今回は、findコマンドについての記事の抜粋&意訳&補足です。

 

findコマンドはUNIXの中でも最も便利なコマンドの1つです。もしあなたがJavaやC++のプログラマで、UNIX環境で作業してるなら、IDEが無くても、ソースファイル中の任意のワードを探すのにfindコマンドが役に立ちます。

 

  • !find で、最後に実行したfindコマンドを再実行

    findコマンドは引数も含めて長くなりがちです。コマンドの前に!をつけると最後に実行した形式で同じをコマンドを実行することができます。

    
    !find 
    

    と入力して、再実行しましょう。

     

JavaScriptでクロージャ

JavaScriptはクロージャが使える言語です。クロージャと聞くとなかなかピンときにくい概念なんですが、ものすごく端折って言ってしまうと、関数(メソッド)の中から、その外側で定義された変数にアクセスできるというものです。


var adder = function() {
	var value = 0;
	return {
		add: function(inc) {
			value += inc;
		},
		getValue: function() {
			return value;
		}
	}
}

var a = adder();
a.add(2);
a.add(5);
console.log(a.getValue());	// 7と出力される。

外側の関数で宣言したvalueという変数に、内部で生成して返すオブジェクトのメソッドからアクセスしています。

valueは普通はadder()の呼び出しが完了した時点で消えてしまうはずですが、内部で生成したオブジェクトから参照されているため、消えずに残っているのです。

これで何が便利になったかと言うと、valueという、実装内部でしか使わない変数のカプセル化が実現できるということです。

UNIXコマンド これだけは覚えておけ!

http://javarevisited.blogspot.jp/2011/03/unix-command-tutorial-working-fast-in.html#ixzz2K2JPFrL9 の記事から要点だけ抜粋&意訳&補足

 

  1. !を使って最後のコマンドを実行

    同じコマンドを繰り返し実行することは結構あります。カーソル上下キーで、履歴を遡り実行することもできますが、 !ls と入力すれば、最後に実行した、lsコマンドを同じパラメータで再実行することができます。

    
    !vi
    

    と入力すれば、最後にviで編集したファイルをまた開くことができます。

    他にも、例えば、

Google Mapが使えなくなる?

ご存知の方も多いかと思いますが、2013年5月19日で、Google Map APIのV2が使用できなくなります。そう、今年の5月です! あと3ヶ月余りしかありません。

2010年5月19日にV2の廃止が決定され、3年間の猶予期間がいよいよ切れて、V3でないと動作しなくなるわけですが、まだV2で動いているサイトはかなりあるんじゃないでしょうか。

特に、3、4年前に作られたシステムでMapを使っていたりすると危ないです。

 

V3にはV2への後方互換性はありません。V2で使えた多くの機能はV3でも利用することが可能ですが、それでも使い方が変わっているため移植作業が必要になります。

 

Dropboxをgitの共有リポジトリとして使う

gitを使うと、プログラムのソースコードやhtml文書の変更履歴や、バックアップ等、主にテキストファイルを中心にファイルのバージョン管理ができます。そして、リモートサーバにgitの共有リポジトリを作成しておけば、職場のパソコンや自宅のバソコンから自由にアクセスできて便利なんですが、前提として、自由にログインして使えるレンタルサーバ等のリモートサーバを持っている必要があります。GitHubに無料アカウントを作って管理する方法もありますが、GitHubは基本的に公開が前提なので、仕事等で使うファイルの管理に使うには難しいです。(有料プランを使う手もありますが)

 

そこで、無料で2GBの容量が使える、Dropboxをgitの共有リポジトリにする方法があります。以下の操作はMacでの場合ですが、Windows等でもgitが使える環境があれば同じようにできると思います。

 

不快指数の計算

Googleマップの本を読んでいたら、不快指数の算出方法が載っていました。

 

Wikipediaにも書いてあるんですが、不快指数は次の計算式で求められるそうです。

 


不快指数 = 0.81 × 気温(℃) + 0.01 × 湿度(%) × (0.99 × 気温(℃) − 14.3) + 46.3

 

気温と湿度が分れば、不快指数を計算できるということですね。(鹿児島には気温と湿度以外にも不快要素があるんですが...)

謎の数字が並んでいますが、どうやって決めたんでしょう。プログラムの中に直接書き込む数値をマジックナンバーといいますが、これもなにやら謎めいた数値です。

 

ちょっと面白そうだったので、このサイトのサイドバーに置いてみました。

*いつの間にか、Google Mapで天気レイヤーが使えなくなっておりました...

 

Unixタイムを表示する

特に何に必要というわけでもないのですが、開発をしているとたまーに知りたい時があります。

 

MacやLinuxのターミナルで、


$ date '+%s'
1359695021

と入力すれば、現在の時刻のUnixタイムが表示されます。

 

Macで

$ date '+%s' | pbcopy
とすれば、クリップボードへコピーできます。

Macのコマンドラインでコピペする

Macのターミナルで操作している時に、出力結果をエディタに取り込みたい時があります。単純にマウスで範囲選択してメニューからコピペしてもいいんですが、画面に収まらない内容だったり、改行されていたりすると結構面倒臭いですね。

そんな時はコマンドを使ってクリップポードとやり取りすることができます。

 

ターミナルの出力結果をクリップボードへコピーするコマンドが pbcopy です。

 

たとえば、ls の出力内容をクリップボードへコビーする場合は、パイプで繋いで、


$ ls -la | pbcopy

などとします。

 

ファイルの内容をコピーする場合は、


$ cat hoge.txt | pbcopy

などとやれば、クリップボードへファイルの内容がコピーされます。

 

逆に、クリップボードのテキストをターミナルへ出力するのが、pbpaste です。

SSHの鍵の生成

たまにしかやらなくて忘れてしまうので備忘録

ssh で別のサーバへログインする場合は、公開鍵を接続先のサーバへ登録してやると、いちいちパスワードを入力しなくてもログインできるようになって便利です。(但し秘密鍵が漏洩しないよう管理する必要があります)


鍵は接続元で保持する秘密鍵と、接続先に配置する公開鍵が必要になります。
どちらも、接続元のマシンで生成します。
鍵は通常、ホームディレクトリの.sshディレクトリに置きます。
ログインする側のマシンで、ssh-keygen コマンドを使って生成します。