IEが勝手に互換モードになった件

会社PCのIEでブラウズしてたら、勝手にIE5互換とかIE7互換になっているのに気づいた。 特定のサイトだけでなく、どのサイトみても互換モード。

<meta http-equiv="X-UA-Compatible" content="IE=edge">

て書いてあるページでも互換モード…

で、IEの「ツール > 互換表示設定」で「イントラネット サイトを互換表示で表示する」をOffったら治った。
イントラじゃない外部サイトでも互換表示になっちゃってたんだが…
会社PCのIEは自動構成スクリプトが設定されているので、そこでProxyが設定されてて、そこでおかしなことになってたのかな?

ExcelデータをSQLで処理(Microsoft Query)

VBA使った例もあるが、実はコード書かなくてもBIツール的に使えるらしい。

Microsoft Queryウィザードを使ってExcelのデーターを取り込む:エクセル2010基本講座

予め範囲に名前を付けておくと、Microsoft Query でブックを選択したら「使用可能なテーブルと列」のところに表示される。

なお、「外部テーブルの取り込み」で複数のデータソースをSQLで結合することはさすがにできなさそう。 (「ExcelデータとDBのデータをSQLで結合」とかちょっと期待したが、それはできない。Excel内でvlookup使えばできるが。)

トップレベルで定義された my と our

コメントに書いたような挙動となる。
myはパッケージが違うと参照できない。
ourはどこからでも参照できる。(但しパッケージを指定すること)

ちなみに、トップレベルのパッケージ名は"main"か、あるいは空文字。
よって、パッケージからトップレベルのグローバル変数"var"を参照する場合は $main::var とか $::var。

test.pl
#!/usr/bin/perl
use strict;
use warnings;

our $our_hoge = "hoge";
my $my_hoge = "hoge";

sub print_our_hoge() { warn $our_hoge; }
sub print_my_hoge() { warn $my_hoge; }

&print_our_hoge();
&print_my_hoge();

use test;

test::print_our_hoge(); # <- もちろん正常に動作。
test::print_my_hoge();  # <- もちろん正常に動作。
test.pm
package test;
use strict;
use warnings;

sub print_our_hoge() { warn $::our_hoge; } # <- 正常に動作。
sub print_my_hoge() { warn $::my_hoge; }   # <- エラー。

1;

あと、あまりやらないだろうが .pl を require で呼び出すときはこんな感じ。
myはファイルが違っても呼び出せない。
なお、ourはファイルが違う場合もパッケージ名付けないと呼び出せない。

test2.pl
#!/usr/bin/perl

our $our_hoge = "hoge";
my  $my_hoge = "hoge";

require 'test_sub.pl';
test_sub.pl
#!/usr/bin/perl
use strict;
use warnings;

warn $::our_hoge; # <- 正常に動作。
warn $::my_hoge;  # <- エラー。

1;

vagrant のVMを外に出れなくしたかったのだが、できなかった…

VM同士やホスト・VM間は自由に通信できるが、VMからインターネットに出られないようにしたかったのだが、やり方がわからなかった…
vagrant で作ったVMは必ずNATが設定されるため、外に出れる?
そのNATに対し、VMssh接続するためのポートフォワーディングが設定されるようだ(vagrant ssh-config で確認できるポート)。
このssh接続を使って vagrantVMを構成しているのかな?そうすると、vagrant の仕様上、NATは必須ということか?
であれば、VMとホストの間の仮想ルータとかでFireWall設定できればそこで止めるという手もありそうだが、どういう仕組になっているのかイマイチよく分かっていない…

readline のキーバインドの指定方法 (inputrc の書き方)

hogem.hatenablog.com

/etc/inputrc の書き方が前から謎だったのだが、emacs風の指定の仕方ができるらしい。 例えば、

$if mode=emacs
…
"\C-d": kill-word
$endif

のように、「"\C-d": kill-word」というのを入れたら、Ctrl+d すると単語単位で削除できるようになった。 Ctrl+x でDelという設定もしたかったのだが、emacs風の設定だと「\C-x…」というキーバインドがたくさんあるため、Ctrl+xを押しただけではすぐ働かずアレげだった。

あと、emacs風の表記では C が ctrl のことで M が Alt のことらしい。

Poderosa の設定の意味

操作 > 追加キー定義

追加キー定義はカンマ区切りで複数指定可能。カンマの前後にスペースが入っても問題ないみたい。

  • Ctrl + d すると Esc + d したのと同じ動作にしたい(単語のカーソル位置より後ろの部分を削除)場合
Ctrl+D=0x1bd

を設定する。0x1b とは Esc の16進数の文字コード

  • Ctrl + ← or → で Esc + ← or → の動作(単語単位の移動)をさせたい場合
Ctrl+Right=0x1b[5C, Ctrl+Left=0x1b[5D

/etc/inputrc を見ると

"\e[5C": forward-word
"\e[5D": backward-word

などと書かれており、\e が Esc のことで [5C , [5D が →、← のことらしい。

  • Ctrl + x すると Ctrl + d(1文字削除。Delキーと同じ。)
Ctrl+X=0x04

Ctrl + d はEOTを入力しており、EOTは16進数文字コードで 0x04。

Routrek Networks ASCII制御文字の入力方法

英数字に追加する単語構成文字

ここに記号等を追加すると、それを単語の区切りと見做さない。ダブルクリックで単語を選択する時等に便利。

./-_

というのが世の中的にオススメらしい。