5.20.2014

CCIEの再認定試験受験

この記事は
http://blog.feasible-lab.com/ccie-recertify/
に移動しました。

2.10.2014

戻りのプロンプト値を見て処理を分けるteratermマクロ

ASAとCiscoルータでは、terminalコマンドが少し違うので、一連のマクロでconfigなどを取得しようとすると、ASAはASA用にマクロを切り替えなければならないので、ちょっと面倒だ。

だが、recvln関数を使うことで意外と簡単に解決できることがわかったので、メモしておこうと思う。

プロジェクト適度な期間で転がっているエンジニアにとっては、shellをがっつり作り込むのは面倒だけど、楽はしたいっていうのが常に命題なので、teratermのマクロは結構便利だったりする。

下のマクロとwhile文を適度に組み合わせれば、いい具合にしのげるマクロになると思う。


connect SSH ;適当なSSH connect
pause 3 

;login 
wait '>' 
mpause 500 
sendln ;戻り値を取得するための空enter
recvln ;recvln関数でinputstrに戻り値を格納

;be enable mode 
sendln 'en' 
mpause 500 
wait 'assword' 
mpause 500 
sendln 'cisco' ;passは仮でcisco
mpause 500
;ここでは仮にASAのhostnameが"ASA"から始まることとする
sendln

;strmatch関数でinputstrに格納した値にASA.*(正規表現)が含まれているかどうか確認
strmatch inputstr 'ASA.*' 

if result=0 then ;含まれない場合0が返り、含まれる場合1が返る
     wait '#' ;以下は0の場合なので、IOSルータ向け処理
     pause 1
     sendln 'ter len 0' ;IOSルータにつきter len 0
     pause 1
     wait '#'
     pause 1
     sendln 'show run'
     pause 5
     wait '#'
     sendln 'exit'
     pause 5
else ;elseなのでASA向けの処理
     wait '#'
     pause 1
     sendln 'ter pa 0' ;ASAなのでter pa 0
     pause 1     
     wait '#'
     pause 2
     sendln 'show run'
     pause 10
     wait '#'
     sendln 'exit'
     pause 5
endif
     pause 1
     messagebox 'マクロ終了' '' 
end


else ifで色々と分岐条件を書いていけば、ベンダーフリーで対応できるマクロになるので、まあそれなりに潰しの効くツールになるのではないだろうか。



2.07.2014

wordpress+google analyticsでファイルダウンロード数のカウント

せっかくツールを作っているので、どのぐらいの方にダウンロードいただいているのかは気になるところだ。 

というわけで、google analyticsのevent tracking機能を使用し、ダウンロード数のカウントをしようと色々ググってみるも、どうも現行のバージョンで動作するものがパッと見つからない。 

というわけで、マニュアルを読みつつ適用できたので、方法を記しておこうと思う。   

まず、wordpressのヘッダファイルを編集する。 

</head>のタグを検索し、その寸前に以下のコードを投入する。
<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXX-X']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>
  
このスクリプトの4行目のUA-xx部分には、google analyticsで使用しているIDを投入するので、それぞれユニークな値が入る。   

続いて、トラッキングしたいリンクの書き方を少し変更する必要がある。   例えば、当サイトであれば、
<a href="/file/flash_subnet_for_win.zip>Flash Subnet for Win</a>
  

のリンクがファイルのダウンロードリンクになるわけだが、こちらを以下の通り編集する。
<a onclick="_gaq.push(['_trackEvent','Files','Download','Flash Subnet for Win']);" href="/file/flash_subnet_for_win.zip">Flash Subnet for Win</a>
  
赤太字にしている部分については、それぞれ環境に応じて好きな値を投入すればいいと思う。 

各パラメータのイメージは以下の通り。左からカテゴリ、アクション、ラベルの並び。

  スクリーンショット 2014-01-14 21.31.52
  スクリーンショット 2014-01-14 21.32.09
  スクリーンショット 2014-01-14 21.32.17



2.06.2014

【Python】Ciscoルータへのtelnet

風邪で一日中ダウンしていて、何も手につかない状態だったが、そういう時に限っていろいろと思いついてしまって結局ベッドでパチパチキーボードを叩いていた。 

とは言っても、頭をフル回転させてコードを書く気力はなく、自宅のciscoルータに対して、telnet試験をひたすら繰り返していた。 

今まであまり気にしていなかったが、pythonにおけるtelnetlibで気づいたことがあったのでメモしておく。 

telnetlibではtelnetの戻り値を指定することのできるread_until関数が用意されているが、ciscoルータなどのコマンド入力をシーケンシャルに進めて行く場合、このread_untilで"#"などを待ち、次のステップに進むなどの書き方がスムーズだ。 

例えば、先日書き直しをしたLoggetのciscoルータアクセス部分のコードは以下のようなイメージである。


class RemoteAccess:
    "remote access class"
    def __init__(self,address,login_pass,login_id,en_pass):
        self.address = address
        self.login_pass = login_pass
        self.login_id = login_id
        self.en_pass = en_pass

    def TnetNoIdCisco(self):
        "telnet without login ID"
        now = datetime.datetime.now()
        nowstr = str(now.strftime("%Y%m%d-%H%M(%S)"))
        logname = nowstr + '_' + self.address + '_log.txt'
        tn = telnetlib.Telnet(self.address, 23, 5)
        log = open(logname, 'wb')
        tn.read_until('assword:',2)
        tn.write(self.login_pass + '\r\n')
        tn.read_until('>',2)
        tn.write('en' + '\r\n')
        tn.read_until('assword:',2)
        tn.write(self.en_pass + '\r\n')
        tn.read_until('#',2)        
        tn.write('ter len 0' + '\r\n')
        ccom = open('cisco_show.txt','r')
        ccoms = ccom.readline().replace(('\n'or'\r'),'\r\n')
        ccli = ccoms.rstrip('\n')
        while ccli:
            tn.write(ccli.encode('ascii') + '\r\n')
            ccoms = ccom.readline().replace(('\n'or'\r'),'\r\n')
            ccli = ccoms.rstrip('\r\n')
        tn.write('exit' + '\r\n')
        output = tn.read_all()
        log.write(output)
        log.close()

贅肉がつきまくっていてちょっと恥ずかしいコードではあるものの、 ポイントはそこではなく、read_unitl関数の引数であるtimeout値である。


tn.read_until("#",2)
  

timeout値は必須の引数ではなく、空欄でも動作するため、これまでは特に指定していなかった。

しかし、実験を繰り返して行くうちにtimeoutを指定しないと複雑な処理に分岐させていった時に、処理がハングしてしまって、原因不明のフリーズが起きるときがあった。 

色々とデバッグしつつパラメータを入れていったところ、read_until関数にtimeoutの引数を指定すれば、フリーズすることがなくなった。

2.05.2014

【Python】Flash Subnet For Winの公開

Windows版のIP計算機、Flash Subnetのベータ版をすることにした。

 flash

 IP計算機の公開などと言っても非常に今更感があるが、軽く、使いやすくするにはどうすればいいを重視して作成した。

使い難い、こういう機能があるといい、などのフィードバックは非常にありがたいが、何よりも使ってもらえるのがありがたい。

使い方は単純明快である。

  flash1
IPアドレス欄にIPアドレスを投入する。
Subnet Mask or Prefix欄に、サブネットマスクかプリフィクスのどちらかを入力する。
そしてCalcボタンを押すと結果がOutputに表示される。   

これまでのIP計算機と大きく違う点としてお勧めしたいのは2点ある。 

1. Subnet maskやprefixの分類を気にせず投入できること

2. インプットボックスがオクテットごとに分かれていないこと 

1について、大体のIP計算機はサブネットマスクかプリフィクスのどちらかしか入力できない。片方しかサポートしてくれないのは非常にストレスだ。なぜなら、IP計算機が必要なタイミングで必ずプリフィクスを入力するとは限らないし、必ずサブネットマスクとも限らない。

2について、大体の計算機はインプットボックスがオクテットごとに分離されている。
それのせいで、資料やテキストからcopy &pasteができず、アドレスを入力するたびにTabでボックスを移動するなど、非常にストレスが大きい。

Flash Subnetではその二つのストレスを取り去り、完全無料・商用利用可能のIP計算フリーソフトとして公開した。

 ダウンロードはダウンロードページから。

2.04.2014

【iOS】Apple Developer Program登録ペンディング

結論:Apple Developer Programに登録するときは、登録情報をすべて英語にしておく必要がある。

Apple Developer Programへの登録がペンディングになっていた。
スクリーンショットはとっていないが、支払い情報が確認できないだかなんだかの状態になって、ペンディングされていたようだ。

mail you shortlyとか書いてあったが、一向に連絡がないため、こちらからサポートに問い合わせを実施。

しばらくして非常に丁寧な返信で、Apple IDの登録名と住所をすべてアルファベット表記とするよう依頼があった。

登録名を変更し、改めてそのフィードバックを返したところ、正常に支払いが完了し、無事登録が完了した。

この問い合わせは日本語でも良いようで、知らなかったので英語と日本語両方書いてsubmitしたが、日本語での返信だった。

2.03.2014

【Objective-c】アプリのlaunchimage用画像

前から構想は練ってきていたが、とりあえずポインタを理解した事で、objective-cの理解が圧倒的に深まり、オリジナルアプリ作りもサクサク進んだ。

まだ、クラス・オブジェクトの理解が怪しい部分があるけれど、とりあえずは試作の完成に至ったため、Developer Programに登録した。

なんやかんやで一番困ったのはアイコンとDefault画面の設定だった。

わざとやってんだろ・・・と言いたくなる勢いでどのサイズのアイコンを用意していいのかわからないという意地悪ぶり。

結局はこちらのDevelopers IOさんのページを参考にさせて頂き、作成することができた。

無事アイコンを作成して、ビルドしようとすると、今度はlaunchimageがないとかなんとか言い始める始末。
色々調べると、真っ黒画面で良さそうなので、適当に作ってみた。

iOS5, 6, 7のすべてをサポートしようとすると、どうやら3種の解像度が必要らしい。
というのが以下の3つ。

 Default.png(320*480)
 Default

 Default@2x.png(640*960)
 Default@2x

Default-568h@2x.png(640*1136)
 Default-568h@2x

2.02.2014

【Objective-C】勉強のときにわかりやすい書き換え

一通りのC言語学習を終えたので、改めてobjective-cに挑むことに。

objective-cとCの決定的な違いはオブジェクト指向に伴うクラスの概念追加と、クッソ憶えにくいヘンテコ名の関数なんだけれど、後者は諦めて憶えるしかないとして、前者は少しわかりやすい書き換えを思いついた(と言っても大した事じゃないけど・・・)。


例えば、
NSDate *today = [NSDate date];
NSLog(@"今日の日付は%@です" , today);

は、今日の日付を表示するコードだが、これは変数宣言+初期化+メッセージが合体しているので、初心者の僕の頭では解読が難しい。

これを下記のように書き換えてあげれば、教科書の解読が一段としやすくなる。
NSDate *today;
today = [NSDate date];
NSLog(@"今日の日付は%@です", today);

どちらも実行結果は同じであるが、変数宣言と代入を分けたことによって、格段にコードがわかりやすくなった(少なくとも僕には)。 

これまで、簡略化表記に混乱していた僕としては、一瞬で理解度が増した書き換えであった。


2.01.2014

【C】ポインタについての今の理解

色々本を読んでいると、ポインタがイミフで飛ばしがちだった。 

自分なりに理解を深めて行った結果、結局ポインタというのは、メモリの効率利用のための手法であるのではないかと思っている。

 ポインタにはポインタ型、ポインタ変数、ポインタ値というのがあって、他の型とくっついて稼働する。 

変数宣言したときに確保したメモリ領域を効率的に使い回しするためには、そのアドレスについてどこかに控えておいた方が効率がいい。

いちいちアドレスを調べてからその値を取得してそのアドレスに代入という形を取るよりも、ポインタで示しといて、後からポインタを使って書き換えて行く方が便利がいいし、必要以上に変数宣言する必要もなくなってくる。

結果物理領域の使用効率性も高まるし、コンピュータにとってもわかりやすいプログラムになると言う事だと思われる。 

つまり、というか、真理として、&でアドレス調べて*で使う。これだけでいいわけだ。 

とまあ、ここまでが昨日ポインタについて頑張って勉強してみた時点の理解。今後学習を続けて行って、更なる理解が深まる自分に期待したい。  
//ポインタ変数pにiのアドレスを代入する例

int main(void){

    int *p, a; //ポインタ変数pと変数aを宣言
    p=&a; //変数aのアドレスを&で取得して、ポインタ変数pに代入
    printf("p=%p\n",p); //ポインタ変数pのアドレスを%pで取得
    printf("a=%p\n",&a); //変数aのアドレスを&で指定し、%pで取得
}
//結果
//p=0x7fff5fbff8bc
//a=0x7fff5fbff8bc

1.31.2014

【C】C言語を基礎から学ぶことにした

objective-cに何度か挑戦しては挫折。少しは書けるpythonに逃げては新しいコードを書いて自己満足に浸る日々を過ごすのに嫌気がさしたので、やはり最初からC言語を学ぶ事にした。

とりあえずxcodeがCのコンパイラとして動いてくれるので、開発環境はobjective-cと変更することなく使える。

 やり方は簡単で、新しいプロジェクトの作成時に、OSX applicationからcommand lineを選択。

xcodeでc
xcodeでC言語

typeからCを選んであげるだけ。
見慣れたフォーマットで開発ができるので、非常に便利。

Macだと、苦Cさんの開発環境も使えないしね。 とりあえず、知ってることも「知ってるわ」とか言わずに、素直に学んで行くことに。  
#include <stidio.h>

int main(void)
{
    printf("Hello C言語!\n")
    return 0;
}
 


11.27.2013

kindle paperwhite wifiも購入

結論:WiFi版でOK


我が家は二人とも読書が好きなので、日々結構な本が家に溜まって行きます。特に僕の場合は片付けられないのと、同時並行して色んな本を読んでいるので、ソファの上などに本が散らかって毎度叱責の種となっています。

嫁の方はというと、僕に比べて片付けられる人間ですが、小説やらなんやらをいっぱい買ってくるので、二人で本の置き場所に難儀するということが多々ありました。

というわけで、嫁にもkindle paperwhiteをプレゼントすることにしたんですが、せっかくなので僕が買った3G版ではなく、wifi版を購入することにしました。

見た目は全く同じなので写真とかは割愛しますが、WiFi版の方が少しサクサク動くような気がします。

3G版は電車の中などで使っていると、3Gの電波が入ったり入らなかったりのタイミングで、かなりレスポンスが悪くなったり、最悪反応しなくなって再起動したりします。

集中して読書しているときにページが捲れなくなる訳ですから、マジでイライラします。とは言っても、そこまでの処理能力を積むと価格が跳ね上がってしまうので、1.5万以下には収まらなくなってしまいます。

スペックを上げて2万となるとwifi版の倍で、かつ、nexus7と同等か同じくらい。kindle fire HDの膝元まで迫る価格となるので、その値付けはできないということなのでしょう。

3G版に対して、wifi版はなんとも動きが軽快です。文章ではサクサクとか軽快とかしか伝えられませんが、例えばキーボードのレスポンスなり、ページのめくりなり、kindle storeの閲覧なりで、回線スピードとは別の次元でのレスポンスのよさを感じます。
今週末は3G版とwifi版を持って外出して、wifi電波が入らない状態での挙動を確認したいと思います。

ちなみに、もうすぐ終わってしまいますが、11/30までのkindle購入クーポンは、wifi版限定のものだそうです。3G版を購入しても、一向にクーポンが付与されないので、一旦問い合わせたところ、3G版は対象外だぜってことでレスポンスが来ました。

そういう意味でもwifi版の方がいいのかもしれませんね。




11.25.2013

ASAにおけるACLの挿入

結論:line numberを上書きでOK


特にどこかに明確に記述されていなかったので備忘。
ASA8.6で試しています(確か・・・)

ASAでextendedのACLを投入することはよくあると思いますが、router, switchと違って、seqナンバーでの整理ではなく、lineナンバーで記述されています。

例えばrouter/switch(r&s)の場合だとshow access-listsを叩くと以下のように表示されます。

Extended IP access list TEST
    10 permit ip 192.168.1.0 255.255.255.0 any (400 matches)
    20 deny ip any any (99186 matches)

上の例で何かのpermit条件をACL TESTに入れたい場合は、seq番号の20以下のどこかに投入していくことになります。

例えば、192.168.1.0/24のうち、192.168.1.1だけはdenyしたいといった要件の場合、seq10の前にまずhostで192.168.1.1を拒否するACLを入れる事になります。

(config)#ip access ext TEST
(config-ext-nacl)#9 deny ip host 192.168.1.1 any

これを入れると

Extended IP access list TEST
     9 deny ip host 192.168.1.1 any
    10 permit ip 192.168.1.0 255.255.255.0 any (400 matches)
    20 deny ip any any (99186 matches)

こんな感じのshow access-list結果になります。

このときに例えば、seq 10の部分に何かを投入しようとすると、

(config-ext-nacl)#10 per udp host 172.16.1.1 any eq domain
% Duplicate sequence number

「seqがかぶってるよ」とはじかれてしまいます。

ところがASAの場合は、こうではありません。

同じようにASAでshow access-listを叩くとこんな具合で表示されます。

access-list TEST line 1 extended permit ip 192.168.1.0 255.255.255.0 any
access-list TEST line 2 extended deny ip any any

seq番号の代わりにline番号となり、間が詰まっています。

この場合にr&sの感覚で192.168.1.1のみを拒否する設定を入れたいと思うと、line番号が詰まっているので投入できないと思ってしまいますが、ASAの場合は、line番号を上書きで対処できます。

(config)#access-list TEST line 1 extended deny ip host 192.168.1.1 any

show access-listを確認してみます。

access-list TEST line 1 extended deny ip host 192.168.1.1 any
access-list TEST line 2 extended permit ip 192.168.1.0 255.255.255.0 any
access-list TEST line 3 extended deny ip any any

line番号が後ろにずれていることがわかるでしょうか。
つまり、ASAの場合はr&sと違ってline番号にACLを挿入できるということになります。さらに言うと、line番号をかなりの老番で設定したとしても、勝手に続き番号に変更されてしまうので、あまり意味がありません。

例えば

access-list TEST line 100 extended deny ip any any

これを投入していたとしても、line番号は勝手に2だとか3だとかに変えられてしまいます。
こういったベースの概念は統一してほしいところですが、まあなかなか難しいんでしょうかね。


11.20.2013

Cisco ASAのFailover構成におけるwrite standbyについて

ASA

結論:PrimaryからWrite memが正しい


CiscoのASAをFailoverリンクを使用してFailover構成にしている場合、Primary機からSecondary機へのconfig書き込みをどうすればいいか、について、明確な記述があったので備忘。

http://www.cisco.com/en/US/products/ps6120/products_qanda_item09186a0080bf952d.shtml

Failover構成になっている場合、Primary機で追加したConfigをSecondary機へも反映する必要があるが、その際にWrite memでいいよ派とwrite stanしたほうがいいよ派がいて、僕もいまいち理解できていませんでした。

ところが、ググってみると公式に回答が出ているので、それを参考にするのが正しいと思われます。一応、機械翻訳の日本語ページも公開されていたんですが、相変わらずのクソクオリティなので、幾分マシかもしれない僕翻訳をのせておきます。

You almost never need to enter the command write standby. 
write standbyコマンドを叩く必要はない。 
When you enter the write standby command, it causes the peer standby firewall to clear out its configuration. Effectively it issues a clear config all command. This causes the standby to erase its configuration within access control lists (ACLs), interfaces, and so on, and it resynchronizes its full configuration from the active peer. In addition, while the configuration is erased, all management sessions to the standby firewall are cleared. This is a result because the interfaces have reinitialized. The standby CPU load may increase because of the need to recompile the ACL data structures on the Adaptive Security Appliance (ASA) after the configuration rebuilds and resynchronizes.
write standbyを叩いた場合、standby firewallではclear config allコマンドが走り、すべてのconfigurationを一旦消去する。これにより、ACL, interface, その他諸々の設定が消え、active peerからfull configurationをロードすることになる。つまり、configurationが消えている間は、management sessionは初期化される。また、
ACLのリコンパイルにより、standby側のCPU負荷が上がる。

Note: This command does not actually issue a write memory command on the standby firewall. The standby firewall's configuration is not written to flash memory after the configuration is synchronized as noted in the ASA command reference for write standby. In order to save the configuration on the standby firewall, enter the write memory command from the active firewall. Refer to the Cisco ASA Series Command Reference, 8.4, 8.5, 8.6, and 8.7 document for more information on write standby.
Note: write standbyコマンドはstandby側でwrite memを叩く役割をするものではない。 ASAのcommand referenceに載っている通り、standby firewallのconfigurationはwrite standbyではflash memoryに書き込まれることはない。
standby firewallでconfigurationをsaveするためには、active firewallからwrite memoryを叩く必要がある。write standby については、Cisco ASA Series Command Refernce 8.4, 8.5, 8.6, 8.7を参照。

In general, the only time a write standby should be issued is if you have confirmed that the standby firewall's operational configuration does not match the active firewall's configuration. You should confirm that the configurations are out-of-sync. Enter the show run command on both units and compare the results. The only difference should be the failover lan unit command, which indicates a primary versus secondary.
一般的に、write standbyを使用するタイミングは、standby firewallのconfigurationがactive firewallのconfigurationと同期していないことが確認できた場合のみである。
両機器でshow runを取得し、確実に同期していないことを確かめるため、比較を行うべきである。唯一の違いはfailover lan unitコマンドにおいて、primary かsecondaryかが違うのみである。



11.14.2013

kindle papaer white 3G(2013モデル)が届きました

思っていたより美しい


届いたばかりなので、使い勝手はまだ見えていないところがありますが、とりあえずkindle paperwhite 3Gが届きました。

11月30までなら1980円分のクーポンがついてきて、kindle本を購入するときに使えるらしいですが、昨日本を買ったら使えたのか使えなかったのか不明的な感じで、そういうところの説明をアマゾンはちゃんとすべきですね。

少しいろいろな本を読んでみましたが、個人的には横書きの本はiPad miniの方が読みやすく、縦書きの本はkindle paperwhiteの方が読みやすい気がします。その辺は好みで変えていくかなって感じです。



気づいたところ


よい


集中して本が読める感じです。あとは3Gにしてよかったです。
普段使っていたのはiPad miniなんですが、wifiモデルなので、電車の中で読んだ部分やハイライトをクラウドに上げるためには、帰宅後なりどこかでwifiと接続し、kindleアプリを立ち上げる必要があります。
その点、kindle paperwhite3Gであれば、無料の3G回線が勝手にアップしてくれるので、読むのも楽です。無料ってのがいいなあ。

3Gだといつでも本を買えるし、ちょっと嫁の買い物に付き合ったりするときなんかでも、ポケットにでも突っ込んででかければ、結構な暇がつぶせそうです。


気になる

今まで電子書籍リーダーとしてiPad, iPad miniを使っていましたが、kindle paperwhiteは明らかにそれらと比べてレスポンスが悪いです。

OSがサクサク動く感じでもないし、ページの送りやパスコードの投入なんかもいろいろと遅い感じです。これは別デバイスだしねって割り切って使う分には全く気にならないかもしれませんが、最初に使い始めるときの頭の切り替えに少し時間がかかりました。

あと、デフォルトで有効になっている、「113人の人がハイライトしました」みたいなメッセージが本の途中に挟まるポピュラーハイライトとかいうクソ機能ですが、あれは本当に集中を邪魔するのでクソ機能この上ないです。まあ、オフにできますけど。
文字の途中に脈絡のない文字を挟むっていうのは、一体どういう神経をしているのかわかりません。何がうれしくてどこの馬の骨かもわからん113人がハイライトしたかを知らなければならないのかわかりません。

kindle 「113人の人がハイライトしました」
僕「あ、はい、で?」
僕『kindle クソ機能 オフ」カタカタカタ

とにかく本を読むのに集中させたいのか邪魔したいのか不明なんで、読書の邪魔になる機能は全削除してほしいですね。僕的にはtwitterやfacebookにシェアなんて機能も不要です。kindle paperwhiteは読書専用マシンと聞いていて、そこに心惹かれたのに、なんか無駄にソーシャルな感じで残念でした。


写真とか


箱

あけた

日本語の説明はこれだけ

立ち上げた

背面

ipad miniと比較

ipad miniと比較






11.13.2013

朝の使い方

朝に何をやるか


朝に時間を作ってとりあえず色々とマルチタスクで取り組んでいますが、集中して複数作業をこなすと、色々と安定して情報を取り込む事ができることに改めて気づきました。

僕は基本的には、録り溜めていて見れていなかったNHKのプロフェッショナルを流しながら、15分くらいでブログを書き、プロフェッショナルで面白いメッセージがあればメモり、その後は本を読みつつプログラミングを学習しています。

こんな事をしばらく続けていると、嫁まで早く起きだして、自分の勉強を始めるようになりました。

彼女の場合は低血圧なので、毎日早起きとまではいかないようです。ですが、何かしようかなあと思う、という変化が彼女に対して起きているということが、僕が何かを始めてみるという実験をしたことにおいて、非常に重要な結果であると思います。

常に実験思考で色々試していくのは、めんどくさい部分もあるのですが、それでいて色々と気づくことがあって刺激的ですね。

11.12.2013

時間の捻出

バッドサイクルから抜け出す


IT業界で働いていて思うのは、自分の時間をどうやって作るかというのが、キャリアアップの鍵になるということです。

今のプロジェクトに移ってから、長時間労働が常態化している職場でもあり、遅い時間の会議に引っ張られるようになりました。

そうなると、なかなか自分の時間がとれずに、ブログなんかもほったらかしたり、ビジネスアイディアを練ったりなんかもできなくなってました。

まあそれはそれで慣れるまではしょうがないよねってことで、慣れるまで待つのもいいんだけれど、それじゃあ終わりが見えてこないので、作れない自分の時間に対してイライラしてきます。

というわけで、他の一切を捨てて、自分の時間を作り出すにはどうすればいいかなあ、ということだけを考え、自分の一日の24時間を整理した結果、朝の早起きで時間を作るという結論に達しました。

家に帰ってきてから取ろうとしていた時間を極力減らし、睡眠開始時間を1時間早める事で、起床時間を1時間半早める事にしました。

単純に睡眠時間だけを削ると、翌日の業務に影響が出ますし、眠くなって却って効率が悪く、結果、帰宅時間が遅くなります。つまり、完全なバッドサイクルなわけですが、これに完全に取り込まれてしまうと、抜け出すのは非常に難しく、ストレスだけが溜まります。

バッドサイクルから抜け出し、グッドサイクルに自分を取り込むために、環境を変えようとしたって無理なわけです。なぜなら、環境を構築する他人群衆はそれぞれの思惑を持って生きていますし、何をどうしたって変わらないものがあるということを受け入れた方が話しが早いからです。

環境を変えられないのであれば、工夫をして自分の時間の使い方を変えればいいというわけで、色々なものから少しずつ時間を削っただけで、非常に効果的なサイクルが生まれ始めています。

また、効果があった、と自分自身に対して宣言することも、グッドサイクルを生み出す原動力になるとおもいます。

ただ、まだもう少し、できればあと1時間、集中して何かをすることの出来る時間が欲しいなと思っています。ここからの1時間はなかなか高いハードルなんですが、回り始めたグッドサイクルをブラッシュアップしてまわして行けば、何か見えてくるんじゃないかと思っています。



11.05.2013

異動と僕

異動


先日からまーったく新しい環境に異動して、右往左往紆余曲折している。わからない事だらけだし、知らない事だらけ。でも、それでいて、どうやってうまく転がって行こうかなあという腹心もありつつ、とにかく刺激にあふれているのだ。

人は環境を変える事によって、心身に受けるストレス量が大きくなるものだけれど、そのストレスになじめる人となじめない人がいるんだと思う。僕はテキトーさが服を着て歩いているような人間だから、どうやったって環境ストレスを重く受け止められないし、いやなら辞めればよくね?って思ってるから、何の気苦労もない。あるのは新しいことを学ぶという底の見えない好奇心だけだ。

世界ふしぎ発見の草野仁さん著、「話す力」に書いてあった「おあしす」を実践し始めたことも、割にスムーズな滑り出しの大きな役に立っているのではないかと思う。引いちゃう人である僕であっても、「おあしす」つまり、おはようございます、ありがとうございます、しつれいします、すみません、を心にとどめて実践することにより、なんかこう、うまくいっちゃってる感じがしちゃうのだ。

「なんかこう、うまく行きたいんだけど、いまいちいいきっかけないかな?」って思ってる人は、一度読んでみると、発見があるかもしれない。



11.02.2013

引いちゃう人、引いちゃわない人

引く人、引かない人


世の中には引いちゃう人と引いちゃわない人がいると思うんですが、僕は完全に引いちゃう人です。

引いちゃうと言っても、人の行動の常識を疑う、みたいな話ではなく、言い換えると運が悪い人って意味です。でも、親類が亡くなったり、家が焼けたり、みたいな人のことを本当に運が悪い人って言うと思うので、それと比べたら大した事のない運の悪さですから、僕は引いちゃう人と呼ぶ事にしています。



僕は引いちゃう人


先日も火消しで入ったプロジェクトで支給された開発機のモニターが僕のだけ足りなかったらしく、どう考えてもボロいクソモニターが割り当てられていました。

さらに、メールなどの確認端末はNICのドライバが壊れているという謎のトラブルに見舞われ、パソコンとして完璧に動くけどデフォルトゲートウェイと通信できないという、インターネットオブエブリシングって何?みたいなクソ端末でした。

同じ日に着任した隣の人は、僕のモニターの二倍はありそうないい具合のモニターをゲットし、開発環境の共有環境も既にセットアップがなされ、何の問題もなく仕事に取り組み始めました。つまり、彼は引いちゃわない人です。
それに対しては僕は一日たってもセットアップが終わらず、一人日をムダに過ごしました。



引いちゃう人生


僕は、引いちゃう人生を物心ついたときから続けています。
なぜか僕だけ名前を呼ばれないとか、僕のチケットだけ予約されていないとか、名前が間違って登録されているとか、ラーメンを最後まで食い終わったら虫が出てくるとか、そんなことは日常茶飯事ですから、もはや起きても動じません。

ですから、引いちゃう人にとっては、縁起が悪いとか、出ばなをくじかれる、みたいな言葉は、結構どうでもいい言葉です。なぜなら縁起なんて最初から悪いし、出ばななんてくじかれない事の方が少ない訳ですから、スムーズに事が進んだ方が逆に不安になります。

引いちゃう人は日常的に細かいトラブルに見舞われていますので、多少の事では動じません。またか、と言いながら冷静に対処します。トラブルというのは対処をしていればし慣れるもので、大体のことでは動じないし、焦ったり悩んだりする事もなくなってきます。

対して、引いちゃわない人は、日常がスムーズなのが当たり前なので、トラブルに対処するのがヘタな気がします。当然、小さいトラブルにあまり関わったことがないので、大きいトラブルはうまくさばけません。

僕の偏見も含まれていますが、引いちゃう僕から見ていて、引いちゃわない人より引いちゃう人の方がトラブル対処がうまい傾向にあります。特に気になるのは、引いちゃわない人は大トラブルに出会ったとき、現実逃避する傾向にあると思います。

だから、僕は引いちゃう人でよかったなあと思う事もままあるのです。



でも、本当に引いちゃわない人はいる


ところが、本当に引いちゃわない人というのがこの世に存在します。
大トラブルの日はたまたま休暇で日本にいません、会社をやめた次の日にプロジェクトが炎上、割り当てられたPCを使い始めたらすぐに不具合が見つかり、たまたま高スペックマシンしか残っておらず、それが割り当てられる、などなど、我々引いちゃう人にとっては、あこがれの存在です。

僕がどんなに悔しがっても、どんなに悲しんでも、世の中に存在する本当に引いちゃわない人はいなくならないので、あまり考えても仕方のない事です。崖から落ちろ、階段踏み外せ、と無言の呪いをかけたところで効果はないし、その人たちが引かないことについて残念な気持ちになるだけです。

そんな人に出会ったときは、出来るだけ仲良くなり、一緒にいることがおすすめです。そうすることによって、本当に引いちゃわない人が引いちゃう気がしてくるので、精神がだんだんと安定してきます。

でも、本当に引きませんので、時間が経過するにつれてイライラが募りますけれど。

10.31.2013

米NSAの盗聴プログラムMUSCULARがgoogleクラウド内でやりたい放題かもしれない件

すげー絵

僕の技術者としての人生はまだ10年そこそこですが、この絵には今までにみてきたどの構成図や概念図より強烈なインパクトを感じます。

この絵は、googleのチーフエンジニアとされる二人が、ワシントンポストに対して明かしたgoogleクラウドの中身を描いたスケッチです。



絵の内容を理解するのは簡単


絵自体は、ぱっと見で理解できてしまうレベルの極めて簡単に記述された全体構成です。左側の雲が一般ユーザがアクセスするインターネット網で、右側の雲がgoogleのサービスを収容しているクラウドを表しています。

その両方の雲を繋ぐのがgoogleのフロントエンドサーバで、googleのサービスに接続するための入り口と言っていいでしょう。



NSAがなかなかヤバい感じです


この絵からわかることは、一般ユーザからgoogleのフロントエンドサーバへのアクセスがSSL、つまりhttpsから始まるURLの方式で暗号化されているということです。また、その裏側のgoogleサービスを収容しているデータセンタ間をつなぐインターコネクトの部分は平文でのやり取りになっているということです。

当然、平文であれば通信の中身はすべてwiresharkのようなソフトで解析が可能ですから、googleのデータセンタ間を接続する環境に一発monitor portを仕掛ければ、世界中のユーザのgmailの中身が読めてしまうという事になります。

NSAの新プログラムMUSCULARはこのgoogleのデータセンタ間通信をタップする事で、すべての通信を抜き取っているとされています。もともとはそのNSAの立ち居振る舞いにブチ切れたgoogleエンジニアが暴露したって話なので、真偽のほどはわからないものの、信憑性がなさすぎて逆に信憑性があるような気がしてしまいます。



サイバーセキュリティとは結局なんなのか


先日の2+2日米会談で、本気で議論されたというサイバー攻撃に対するセキュリティに関する議題ですが、攻撃のスピードが遥かに高速になっているこの時代で、リアクティブ、つまり攻撃が起きた後に守ろうとするセキュリティの方式では、安全を担保できないのは自明です。当然、プロアクティブ、つまり、攻撃が起きる前に攻撃のもとを断ってしまおうぜというセキュリティ方式を採用する方向に進むでしょう。

しかし、プロアクティブな方式を突き詰めていけば、それは監視社会、言論統制などと同義なわけですから、そもそも守ろうとしているものが大きく変わりつつあるようです。

ドイツ首相の電話盗聴騒ぎもそうですが、最近のアメリカは、いったい何に怯えているんでしょうか。デフォルト騒ぎも、裏で起きつつある重大な何かを隠そうとするための動きだと考える事もできなくありません。ファティマ第三の予言的なやつが何かあるのかもしれませんね。


10.29.2013

嘆きのセキュリティ勉強会

セキュリティ

セキュリティって・・・


先日、とあるセキュリティの勉強会に参加してみたのですが、勉強会自体は素晴らしかったものの、とある参加者の意識の低さにびっくりしてしまいました。

セミナーの内容に関する質問をするのはいいと思うのですが、割に具体的なことまで踏み込んで話し、セキュリティ担当者が守るべき情報を垂れ流すような事態が起きていました。


ざるだったセキュリティ担当者のセキュリティ


相当知識に自信を持っておられるような話し方をされていたので、まあそれはそれは素晴らしい技術者だろうと考え、試しにその人について調べてみる事にしました。

まず、その方は、社名とお名前を名乗って質問されていたので、試しにいくつかの方法で検索をかけるとすぐにご本人が引っかかりました。そこから派生的にご担当の職務、会社での粗方のポジションなどなど、複数の重要な情報がわずか数分で手に入りました。

悪意をもってさらに踏み込んでソーシャルエンジニアリングをかけていたら、おそらく1時間もしないうちに、より多くの情報を仕入れる事ができ、最終的にAPTのトリガを仕掛けるだけの十分な種が拾えたはずです。

例えば、その方の会社のメールアドレス割当傾向さえつかめれば、いくつかのメールアドレスを試す攻撃を大した時間もかけずに行う事が出来ます。

大体、その会場に競合会社の人間がいないとも限りませんし、案件の奪取を狙っている担当者がいるかもしれません。優秀なエンジニアであれば、お客様のステークホルダー、ニーズ、ウォンツ、シーズについての調査は欠く事がありませんし、常に最新の状況を何らかの方法でキャッチアップしています。

一生懸命暗記した知識をみんなの前でひけらかしたい気持ちもわからなくはない(僕はわかりません)ですが、それでは結局本質としてのセキュリティを理解しておらず、暗記物の漢字ドリル程度の知識でしかないと思うのです。

セキュリティ担当者の方は、ぜひともご自分がセキュリティホールにならないよう、注意したいものですね。