【Excel】VLOOKUP関数でエラーを回避する方法。

VLOOKUPで値が突合しなかった際に#N/Aなどと出力されるのを回避したい場合、ISERROR関数を組み合わせることで幸せになれる。

下記例。

=IF(ISERROR(VLOOKUP(E2, Sheet3!$C$2:$D$23, 2, FALSE)), "", VLOOKUP(E2, Sheet3!$C$2:$D$23, 2, FALSE))

ISERROR関数でVLOOKUPの結果がエラーになるかどうかをブーリアンで取得。
次にその値をIF関数で判定し、任意の操作を記述すればOK。

 

【CakePHP2.4】独自コントローラーを継承した際、ComponentとHelperのマージを制御する。

CakePHPはAppControllerで読み込んだComponent、Helperがそれを継承した子コントローラーのそのものと自動的にマージされる。

しかし継承時、親と子の間に独自で定義したコントローラーを挟んだ場合、独自コントローラー内でのComponent、Helperはマージ対象から外れてしまう。

なので、ユーザーの意図した挙動に修正するために独自コントローラー内で下記変数に少々細工を加える。

App::uses('AppBaseController', 'Controller');

class AppBaseController extends AppController {
	public $components = ['hogeComp'];

	// マージ対象の親クラスを変更する
	protected $_mergeParent = 'AppBaseController';
}

上記の通り、「$_mergeParent」にセットする値を変更することでマージの挙動を変更することが可能。

 

【CakePHP2.4】独自で定義したコントローラーを継承する。

AppControllerではなく独自で作成したコントローラーを継承(extends)したい場合、下記の通り継承先のファイルにて用意したコントローラーを読み込んでやる必要がある。

App::uses('ControllerClassName', 'Controller');

例。

App::uses('AdminBasesController', 'Controller');

class AdminsController extends AdminBasesController {

}

こんな感じ。

 

【CMD】Windowsのコマンドプロンプトで現在地のファイル、ディレクトリリストを表示する。

めも。

dir

 

【CMD】Windowsのコマンドプロンプトからファイルを削除する。

めも。

del file_name

 

【VIM/FreeBSD】FreeBSDに搭載されているVIエディタにおけるバックスペースの挙動を修正する。

FreeBSDのVIエディタはCentOSのそれとは若干異なり、非常に使いづらい。
具体的には以下の不満がある。

1, 行末に達すると勝手インサートモードが解除される。
2, バックスペースで文字を消しているのに表示が残る。
3, なんとなく挙動全体が気に食わない。←

まぁ最後はさておき、1、2の挙動はなんとしても修正したかったので調べてみた。
結果としてVIの設定ファイルに下記オプションを追記することで挙動を修正することが出来た。

まずは設定ファイルを開く。

vi ~/.vimrc

下記を追記。

syntax on
set number
set backspace=indent,eol,start
set encoding=utf-8

もしかしたら不必要な宣言もあるかもしれないがとりあえず上記で治った。
環境によっては元々「set bs=indent,eol,start」と記述があるかもしれないが、ちゃんと「backspace」と記述してやると幸せになれる模様。
※自分はそうだった。

 

【CentOS】ファイル削除時、「引数リストが長すぎます」と怒られたら。

rm -f file_name_*

上記のようなコマンドでファイルを一気に削除しようとした際、対象ファイル数が多すぎるとタイトルの通り怒られてしまう。

そういう時は下記のようにxargsとechoを組み合わせれば良い。

echo file_name_* | xargs rm -f

これは便利。

※別のアプローチはこちら

 

【CakePHP2.x】特殊なmetaタグをhtmlヘルパーで出力する方法。

apple-touch-iconなどの特殊なmetaタグを出力したい場合などの記述方法。

echo $this->Html->meta('apple-touch-icon-precomposed', '/img/apple-touch-icon-144x144.png', [
	'type'=>'icon',
	'size' => '144x144',
	'rel'=>'apple-touch-icon-precomposed'
])."\n";
echo $this->Html->meta('apple-touch-icon-precomposed', '/img/apple-touch-icon-114x114.png', [
	'type'=>'icon',
	'size' => '114x114',
	'rel'=>'apple-touch-icon-precomposed'
])."\n";

こんな感じ。
※第1引数は既知のmetaタグ出ない場合、どこにも出力されない。