スタッフブログ
haltです.
最近知って驚いたのですが,遺失物の公表ページというサイトがあり,これを利用する事で貴重品を落としてしまった場合,届いているか調べられるようです.
http://www.npa.go.jp/consultation/chiiki2/ishitsubutsulink.htm
自分は遠出して買ったケーキを電車の網棚にお供えしてしまった経験がある程度なのでまだ使った事はありませんが,もし貴重品をなくしてしまった時はこのサイトを思い出してください.
最近知って驚いたのですが,遺失物の公表ページというサイトがあり,これを利用する事で貴重品を落としてしまった場合,届いているか調べられるようです.
http://www.npa.go.jp/consultation/chiiki2/ishitsubutsulink.htm
自分は遠出して買ったケーキを電車の網棚にお供えしてしまった経験がある程度なのでまだ使った事はありませんが,もし貴重品をなくしてしまった時はこのサイトを思い出してください.
haltです.
最近キーボードを変えたのですが,前のキーボードと比べてキーとキーの間が大きく,EnterキーやBSキーが無理をしないとホームポジションから届かなくなったので,「のどか(http://www.appletkan.com/nodoka.htm)」というキーバインド変更ソフトを利用してEnterキーやBSキーを押さなくても別のホームポジションに近いキーでEnterやBSが使えるようにしました.
のどかをインストールした後,設定ファイルに以下のように書くと,CTRL+mを押すとEnterに.CTRL+hを押すとBSになります.
しかし,設定の上では押せるようになっても,人間の方は前のキーバインドに慣れている為,ついつい届かないEnterに指をのばしてミスタイプしてしまいます.そこで,EnterとBSは押しても何も反応しないようにする事でCTRL+mとCTRL+hを体に強制的に覚えこませる事にします.
特定のキーを無反応にするには,以下のようにします,
こういった最適化は人間も最適化しなければいけないのでそう簡単にはいきませんが,普段の何気ない動作の中に最適化の余地を見つける事は大事です.是非やってみましょう.とは言えませんが,こういった最適化の仕方もある事を知っておくと良いと思います.
最近キーボードを変えたのですが,前のキーボードと比べてキーとキーの間が大きく,EnterキーやBSキーが無理をしないとホームポジションから届かなくなったので,「のどか(http://www.appletkan.com/nodoka.htm)」というキーバインド変更ソフトを利用してEnterキーやBSキーを押さなくても別のホームポジションに近いキーでEnterやBSが使えるようにしました.
のどかをインストールした後,設定ファイルに以下のように書くと,CTRL+mを押すとEnterに.CTRL+hを押すとBSになります.
key C-h = Backspace
key C-m = Enter
しかし,設定の上では押せるようになっても,人間の方は前のキーバインドに慣れている為,ついつい届かないEnterに指をのばしてミスタイプしてしまいます.そこで,EnterとBSは押しても何も反応しないようにする事でCTRL+mとCTRL+hを体に強制的に覚えこませる事にします.
特定のキーを無反応にするには,以下のようにします,
key Enter = &Undefined
key Backspace = &Undefined
こういった最適化は人間も最適化しなければいけないのでそう簡単にはいきませんが,普段の何気ない動作の中に最適化の余地を見つける事は大事です.是非やってみましょう.とは言えませんが,こういった最適化の仕方もある事を知っておくと良いと思います.
haltです.
突然ですがみなさんは,何台のパソコンに触れる機会がありますか?家と会社,デスクトップとノート.複数のパソコンを使う人も昔と比べると随分増えてきています.
複数のパソコンを使っていて困るのが,それぞれのパソコン同士のデータ共有です.「ファイルサーバをつくってそこに保存しておいて…」というのは企業などでもよく行われるのですが,もっと気軽にファイルを共有できるツールが最近リリースされました.それがdropboxです.
https://www.getdropbox.com/
Dropboxは専用のアプリケーションをインストールする事で,特定のディレクトリに保存したデータをdropboxが運営するサーバに自動的にコピー,同期します.
一旦サーバにおいたものをクライアントが共有するので,パソコンAとパソコンBにDropboxをインストールする事で,Aでdropboxディレクトリにファイルをおいた瞬間パソコンBのディレクトリに同じファイルがコピーされます.
無料で利用できるのは2GBまでなので大きなデータを置くにはむいていませんが.簡単なファイル共有や,データのバックアップには便利です.
他人との共有ができるShare機能や特定ファイルをwebで公開できるPublic機能などもあるのでシンプルなファイル共有を求めている人は是非利用してみてください.
突然ですがみなさんは,何台のパソコンに触れる機会がありますか?家と会社,デスクトップとノート.複数のパソコンを使う人も昔と比べると随分増えてきています.
複数のパソコンを使っていて困るのが,それぞれのパソコン同士のデータ共有です.「ファイルサーバをつくってそこに保存しておいて…」というのは企業などでもよく行われるのですが,もっと気軽にファイルを共有できるツールが最近リリースされました.それがdropboxです.
https://www.getdropbox.com/
Dropboxは専用のアプリケーションをインストールする事で,特定のディレクトリに保存したデータをdropboxが運営するサーバに自動的にコピー,同期します.
一旦サーバにおいたものをクライアントが共有するので,パソコンAとパソコンBにDropboxをインストールする事で,Aでdropboxディレクトリにファイルをおいた瞬間パソコンBのディレクトリに同じファイルがコピーされます.
無料で利用できるのは2GBまでなので大きなデータを置くにはむいていませんが.簡単なファイル共有や,データのバックアップには便利です.
他人との共有ができるShare機能や特定ファイルをwebで公開できるPublic機能などもあるのでシンプルなファイル共有を求めている人は是非利用してみてください.
PHPで文字列の文字数を数える場合,strlen関数を利用して以下のように書きます.
「テスト」は3文字なので3が返るはずです.しかし,このコードの実行結果は9が返ります.
これはstrlenがマルチバイトを考慮していない為です.strlenの場合,文字数というよりはバイト数を表示しています.
PHPでマルチバイト文字列をカウントするにはmbstringに含まれるmb_strlen関数を使います.以下はmb_stringを利用した場合のコードです.
しかし私の環境では,このコードを実行してもやはり9が返ってきました.mb_strlenは与えられた文字列を内部エンコーディングでカウントします.内部エンコーディングはmb_internal_encoding()関数を利用する事で確認できるのですが,結果はISO-8859-1でした.サーバ自体のlangはUTF-8なのであっていません.そこで以下のように書きかえました.
これでようやく3という数字がでました.mb_strlenは第二引数を指定する事で任意の文字コードとしてカウントできる為,これを利用する事でマルチバイト文字を正しくカウントできるようになります.
内部エンコーディングを正しく設定しておくのもこうならない為の対策の一つではありますが,それに加えて,mb_strlenを利用する場合は明示的にエンコードを指定しておいたほうが間違いがなくなって良いかもしれません.
php -r '$re = strlen("テスト"); var_dump($re);'
php -r '$re = mb_strlen("テスト"); var_dump($re);'
php -r '$re = mb_strlen("テスト", "UTF-8"); var_dump($re);'
haltです。
Linuxをメインで使うようになると、WindowsやMacにあるPhotoshopのような優秀なレタッチツールがない事に気づきます。
「LinuxにはGIMPがあるじゃないか!」とよく言われるのですが、あれをPhotoshopと同じように使いこなすのは私には無理でした。
自分がレタッチツールを使う時はプレゼン資料を作る程度なのでレイヤー機能と基本的な画像編集機能、各種メジャーフォーマットへのかきだし機能がついていれば満足。というわけでその条件を満たすソフトを探していたら、paintgraphic2にあたりました。
http://www.sourcenext.com/titles/hob/76440/
Windows用のソフトですが、wineを使えば普通に使えます。まだあまり使いこなせていませんがPhotoshopにインターフェイスがにているので簡単な事ならすぐにできるようになります。Photoshopのようなプロのツールと比べて値段が安いのも素敵です。
linuxにはwineという裏技があるのでLinuxで良いソフトがない時はWindowsの便利なソフトをLinuxで使ってみると良いと思います。
Linuxをメインで使うようになると、WindowsやMacにあるPhotoshopのような優秀なレタッチツールがない事に気づきます。
「LinuxにはGIMPがあるじゃないか!」とよく言われるのですが、あれをPhotoshopと同じように使いこなすのは私には無理でした。
自分がレタッチツールを使う時はプレゼン資料を作る程度なのでレイヤー機能と基本的な画像編集機能、各種メジャーフォーマットへのかきだし機能がついていれば満足。というわけでその条件を満たすソフトを探していたら、paintgraphic2にあたりました。
http://www.sourcenext.com/titles/hob/76440/
Windows用のソフトですが、wineを使えば普通に使えます。まだあまり使いこなせていませんがPhotoshopにインターフェイスがにているので簡単な事ならすぐにできるようになります。Photoshopのようなプロのツールと比べて値段が安いのも素敵です。
linuxにはwineという裏技があるのでLinuxで良いソフトがない時はWindowsの便利なソフトをLinuxで使ってみると良いと思います。
haltです。
プログラムにおいて、名前をつける事は非常に重要な意味を持ちます。
(半年後の自分も含めた)他の人が触れるプログラムなら多少時間が
かかってもわかりやすい変数名、わかりやすい関数名をつけるべきです。
が、実際は最適解が見つからず適当につけてしまいがちです。
PEARのコーディング規約には、camelbackで書くように。等のキャピタライズに関する支持はあっても具体的にどういうメソッド名にするべきかは書かれていません。
isを使う時はbooleanで返すなどのルールは他のコードを見てみよう見真似でやっていたのですが他にどんなルールがあるのかとgoogleで検索したら以下のルールが見つかったので紹介します。
[blockquote]
http://www.okapiproject.com/java/java_codeconventions/jcc_naming.htm
2.9.4.boolean 変数を返すメソッド
boolean 変数を返すメソッドについては、「is + 形容詞」「can + 動詞」「has + 過去分詞」「三単現(三人称単数現在)動詞」「三単現動詞 + 名詞」のいずれかの名称をつけます。特に動詞は三単現以外の動詞は利用してはいけません。また、true の場合がどちらであるか判別しやすい名前にするために通常は true の場合を名称にします。
[/blockquote]
このルールはJava向けのようですが、命名規則に関してはPHPでも通用します。あらかじめ規約を決めておく事で名前から関数の動作を予測できるようになり、コードの理解が早くなるので、こういったルールを覚えておき、自分のコードに反映させていくと良いのではないでしょうか。
isEnabled()
canGet()
hasCanged()
contains()
containsKey()
haltです。
最近JavaScriptの勉強を真面目にやる事にしました。
いつまでも知ったかぶりで必要になった時にその場しのぎのコードを書くより
ちゃんと理解して自分から積極的に使えるようになった方が良いですし。
そこでオライリー本を読みすすめているのですが、
文法的にPHPとそっくりのJavaScriptが配列の扱いに関しては
全然違う事がわかったので紹介します。
以下のPHPコードを見てください。
これは当然a,b,cが入った配列が表示されます。
しかし、同じ事をやっているJavaScriptの以下のコードは
x,b,cが表示されます。
PHPの場合、配列は「データ型」であるため、代入すると値がコピーされます。
しかしJavaScriptの場合、配列は、「配列オブジェクト」である為、
PHPのクラスのインスタンスを代入した時のように、参照扱いになります。
その為、参照先のbの変更がaに反映されるのです。
説明を読めば「ああなるほど」という感じですが、知らないでテキトーに使っていると
ハマるのではないでしょうか。
<?php
$a = array('a', 'b', 'c');
$b = $a;
$b[0] = 'x';
var_dump($a);
var a = ['a', 'b', 'c'];
var b = a;
b[0] = 'x';
alert(a);
今日もvimrcが10行くらい増えました。haltです。
aptitudeやsynapticなどのパッケージマネージャを利用してアプリケーションを
インストールすると、非常に簡単にインストール、アンインストールができるので
重宝しているのですが、常に最新版のものを使いたい場合は、
パッケージマネージャを利用するよりsvnから最新のソースをダウンロードして
自分でインストールしたほうが良いです。
プログラマにとってエディタは一番利用するツールですから常に最新版にしておくべきでしょう。
そこで今日はvimのインストール手順を紹介します。非常に簡単です。
また、今回はデフォルトのディレクトリではなくユーザディレクトリにインストールしてみます。>ユーザディレクトリにインストールする事でroot権限が必要なくなります。
アカウントは持っているが、root権限を持っていないサーバの上ではパッケージマネージャは利用>できません。そこで今回の方法を使えばvimが入ってないサーバでも自分だけは自由にvimを使う事>ができるようになります。
まず、svnからソースコードをダウンロードします。
次に
して、vim7のsrcディレクトリに移動したら、以下のコマンドを入力します。
configureオプションはおこのみにあわせて増減してください。./configure --helpで何を付ければ
いいのかわかります。
無事configureが終われば、
すれば/home/ユーザ名/lib/vim7/binあたりにvimができています。直接PATHを通すか、$HOME/binに
symlinkしてPATHを通すかして使ってください。
aptitudeやsynapticなどのパッケージマネージャを利用してアプリケーションを
インストールすると、非常に簡単にインストール、アンインストールができるので
重宝しているのですが、常に最新版のものを使いたい場合は、
パッケージマネージャを利用するよりsvnから最新のソースをダウンロードして
自分でインストールしたほうが良いです。
プログラマにとってエディタは一番利用するツールですから常に最新版にしておくべきでしょう。
そこで今日はvimのインストール手順を紹介します。非常に簡単です。
また、今回はデフォルトのディレクトリではなくユーザディレクトリにインストールしてみます。>ユーザディレクトリにインストールする事でroot権限が必要なくなります。
アカウントは持っているが、root権限を持っていないサーバの上ではパッケージマネージャは利用>できません。そこで今回の方法を使えばvimが入ってないサーバでも自分だけは自由にvimを使う事>ができるようになります。
まず、svnからソースコードをダウンロードします。
cd /home/ユーザ名/src
svn co https://vim.svn.sourceforge.net/svnroot/vim/vim7
次に
cd vim7/src
して、vim7のsrcディレクトリに移動したら、以下のコマンドを入力します。
./configure --prefix=/home/ユーザ名/lib/vim7 \
--with-features=huge \
--enable-multibyte \
--enable-fontset \
configureオプションはおこのみにあわせて増減してください。./configure --helpで何を付ければ
いいのかわかります。
無事configureが終われば、
make
make install
すれば/home/ユーザ名/lib/vim7/binあたりにvimができています。直接PATHを通すか、$HOME/binに
symlinkしてPATHを通すかして使ってください。
最近PHSから携帯電話に乗りかえたのでちょっと絵文字について勉強してみました。
携帯から入力された絵文字をPCで表示するにはMobilePictogramConverterというライブラ
リを利用すると簡単に実現できます。
例えばdocomoの絵文字をPCで表示する手順は以下になります。
まず、以下のサイトからMobilePictogramConverterをダウンロードし、展開します。
http://php-develop.org/MobilePictogramConverter/
次に、実際に利用するプログラム上(今回はMobilePictogramConverterと同じディレクト>リにおいたbbs.php)で、
とすると、docomoから送信された絵文字をPCで表示する事ができます。factoryで変換対>象のデータをセットして、Convertでクライアントにあった出力結果を返すという流れに>なります。
MobilePictogramConverterのサイトにもかかれていますが営利目的でMobilePictogramConverterに同梱されているsoftbankのアイコンを利用する場合許可が必要だそうなので注意
しましょう。
<?php
$data = 'ここにutf-8でdocomoの絵文字を入れる';
require './MobilePictogramConverter/MobilePictogramConverter.php';
$mpc =& MobilePictogramConverter::factory(
$data,
MPC_FROM_FOMA,
MPC_FROM_CHARSET_UTF8,
MPC_FROM_OPTION_RAW
);
$mpc->setImagePath('./MobilePictogramConverter/img/');
echo $mpc->Convert(MPC_TO_FOMA, MPC_TO_OPTION_IMG);
?>
haltです。
皆さんはif文内部に条件を書く時どのように書いていますか?
私の場合、
とか
のように、if文の中に変数や関数を直接書いてその結果を判定条件にしています。
が、こういった書き方がすべてだと考えていると必ずハマります。具体的には以下の場合
です。
strposは、第一引数の中に第二引数が存在するか調べ、その文字が見つかった位置を返し
ます。見つからなければfalseを返します。
上のプログラムの場合、abcの中にaは含まれているのでifの条件が満たされ、exitでプロ
グラムが停止するはずですが実際は停止しません。
い
strposが返す文字列位置は0からはじまる為、if文が0をfalseと判い断してしまい、条件>を満たす事ができません。同様のケースとして以下の例があげられます。
http://d.hatena.ne.jp/pirokyun/20080729/1217329949
array_searchは配列の中から特定の値を含む配列のキーを返す関数なのですが
1番目の配列のキーは0なので0を返し、if文がそれをfalseと判断。結果、配列は値を含ん
でいるのに条件分岐の上では含んでいない事になってしまいます。
この問題を避けるには条件の中で変数や関数の結果を直接参照しないで、必ず比較するよ
うにする事です。strposの問題やarray_searchの問題は
のようにする事で回避できます。
strposやarray_searchなどphpが用意した関数は覚えてしまったりマニュアルを引いて使>うので慣れればハマる事はありませんが、他人が作った関数などを使う場合は注意したほ
うが良いでしょう。
<?php
$load_error = true;
if ($load_error) {
exit('error!');
}
if (!in_array($value, array('a','b','c'))) {
exit("{$value} is not found.");
}
if (strpos('abc', 'a')) {
exit('exist!');
}
<?php
$fruit = array('apple', 'orange', 'banana');
if (array_search('apple', $fruit)) {
return true;
} else {
return false;
}
?>
<?php
if (strpos('abc', 'a') !== false) {
exit('found!');
}