「エンジニアのための時間管理術」を読んだ。

エンジニアのための時間管理術
エンジニアのための時間管理術Thomas A. Limoncelli 株式会社クイープ

オライリー・ジャパン 2006-10-19
売り上げランキング : 99433


Amazonで詳しく見る
by G-Tools


業務ハック本。
TODOリストの作り方、メールの管理の仕方など扱うトピックはよくあるものだが、システム管理者向けに書かれているという点が特徴となっている。
たとえば、「業務を効率化するためには自動化が大切なので、こんなシェルプログラミングをためしてみてはいかがでしょう」というような内容があったりする。他にも「Wikiをつくろう」とか完全にIT系に的を絞っている。もちろん、外回りとかそういったセールスチックな話は出てこない。
また、各章ごとに「まとめ」が用意されていて、再読するハードルが低くなっているのは実用的だと感じた。


個人的には、「上司のマネジメント方法」という項が興味深かった。
僕は「上司の扱い方」についての本を読んだことが無かったため発見が多かった。

・上司はあなたの昇給を司っているため、その要求には第一に沿うべきである。これを恥じる必要はどこにもない。
・一般的に上司の覚えがめでたければ「面白い」仕事にありつける可能性はあがる。これも上司の指示を重視する理由の一つだ。
・一般的に上司はあなたよりも社内の視野を広く持っている。一見ムダで不要不急の指示に見えても、会社にとって有益な業務である場合も多いため、とにかくその指示を重視すべきだ。
・他部署との調整役を上司に賢く依頼すべきだ。「他部署の上司」はあなたではなく「あなたの上司」と物事を決めることを望んでいる。

「エンジニアとしての生き方」(中島聡)を読んだ

面白かった、のかな? 読みやすかったのは確か。
ところどころ「えー、本当ですか」とか思いながら読んだが痛快な内容だった。

・日本のソフトウェア産業はうんちなので海外に出よう、そのためには英語はまーやっとこう
みたいな内容がいろいろな形で書かれている本という印象。

またその他にはマイクロソフトでの採用試験で実施した頭の体操みたいなクイズがいくつか掲載されていて、それを考えるのも楽しかった。

とくに日本とアメリカのソフトウェア産業を比較した部分が面白かった(感覚は痛快に近い)。
日本は公共事業の一環としてIT事業へ投資が行われることがあるが、
アメリカではイノベーションに対して投資家が投資するとし、
お金の出所の違いからイノベーションへのモチベーションに雲泥の差が生まれる。という書き方。
なんで日本のソフトウェア産業ってゲーム以外(最近はゲームもだけど)は全く橋にも棒にも存在感が無い状態なのかは少し気になっていたので、そのからくりの一部としては納得かつ痛快な説明で面白かった。


読後に考えたことは
・「エンジニアとしての生き方」を論じた本じゃなくて、これ筆者のブログをまとめただけじゃない?
・でもブログエッセイ風ってのは読みやすいし、一気に読めました!
・ただ、エンジニア人生で肝に銘じておくこと、みたいな内容を期待してたから少し残念

エンジニアとしての勉強の仕方、キャリアの考え方、それをふまえた上での具体的な行動例みたいなのが書いてある本があると自分で考えることがへるのでそんな本が読みたい。

pythonでバブルソートを書いた

pythonに慣れるのと、アルゴリズムというものに触れるために
C言語で解説されたアルゴリズムをpythonで写経する」
というものをやっている。


#!/usr/bin/env python
import random

N = 10
ary = range(N)
random.shuffle(ary)
print ary

for i in range(N):
for j in range(N - i):
idx = i + j
if idx < N - 1:
if ary[idx] < ary[idx+1]:
tmp = ary[idx]
ary[idx] = ary[idx+1]
ary[idx+1] = tmp
print ary

バブルソートと、単純選択法で速度の差がどう出るのかが
いまだにきちんとわかっていない。

uppack代入を行う為にfor文にタプルを渡すとき、どんなタプルが必要なるか。

uppack代入を行う為にfor文にタプルを渡すとき、どんなタプルが必要なるか。
for文で定義された個数の要素をもったタプルが必要になる。
たとえば以下のような感じ


#!/usr/bin/env python

tap = ( ('a','b'), ('c','d') )
for k, v in tap:
print('%s: %s'%(k, v))

      • output


a: b
c: d

ただ、渡すタプルの要素が一つだけのときはエラーになってしまう。
例えば以下の通り


#!/usr/bin/env python
tap = ( ('a','b') ) #←タプルの要素が一つになってる
for k, v in tap:
print('%s: %s'%(k, v))

      • output


Traceback (most recent call last):
File "/Users//work/python/for.py", line 4, in
for k, v in tap:
ValueError: need more than 1 value to unpack

どうにも納得がいかない。
たとえばDBからとれたデータが1レコードとかだったらエラーになってしまうのだろうか。

uppack代入を行う為にfor文にタプルを渡すとき、どんなタプルが必要なるか。

uppack代入を行う為にfor文にタプルを渡すとき、どんなタプルが必要なるか。
for文で定義された個数の要素をもったタプルが必要になる。
たとえば以下のような感じ


#!/usr/bin/env python

tap = ( ('a','b'), ('c','d') )
for k, v in tap:
print('%s: %s'%(k, v))

      • output


a: b
c: d

ただ、渡すタプルの要素が一つだけのときはエラーになってしまう。
例えば以下の通り


#!/usr/bin/env python
tap = ( ('a','b') ) #←タプルの要素が一つになってる
for k, v in tap:
print('%s: %s'%(k, v))

      • output


Traceback (most recent call last):
File "/Users//work/python/for.py", line 4, in
for k, v in tap:
ValueError: need more than 1 value to unpack

どうにも納得がいかない。
たとえばDBからとれたデータが1レコードとかだったらエラーになってしまうのだろうか。

macのkomodo editで編集中のpyファイルをショートカットキーから実行するようにした

pythonを書くためにkomodo editを導入しました。
最初はmiつかって書いて、実行するためにターミナル行って、
とかいうふうに使ってたんですが、

・オートコンプリートが欲しい
・ターミナルに行って実行するの面倒くさい

という理由で移行した。


インストールしたままだとファイルを実行する
ショートカットが無かったので(ホントはあるのかな)
出来るようにした。
(参考)http://dara-j.asablo.jp/blog/2008/10/30/3856051


command + R を押して出てきたウインドウのフォームに

・「%(python) %F」と入力
・ Add to ToolBox にチェック

をしてRunをクリック。

    • -

次にメニューバーから
VIew-> Tabs $ SlideBar -> ToolBox
をクリックしてtoolboxを表示。

先ほど追加した %python %F がToolBox内にあるはずなので
右クリック -> properties -> keyBinding から設定。

coffeeScriptでhello_world.coffeeをコンパイルするときに手間取った。

coffeeScriptを試すだけ試してみようとしたところ、
しょっぱなからつまづいた。


for i in [0..3]
console.log "Hello #{i}"

上記のファイルを記述してhello_world.coffeeとして保存。
ターミナル上で $ coffee hello_world.coffeeとしたところ
下記のようなエラーが出る。


Error: In hello_world, Parse error on line 1: Unexpected 'TERMINATOR'

原因は単純なことで作成したファイルの改行コードがキャリッジリターン(CR)だったため。

これをUNIX用の改行コードに変更したところめでたくコンパイルが通った。