偏った言語信者の垂れ流し

2012-01-23

[]職業選びの分岐点

私はいわゆるSEとかプログラマーって呼ばれる職種をやってるわけですが、この職業以外にも選択肢はあったんですよね。

そういう話をちょっと書いてみようかと。

エンジニアorエンジニア

最初の分岐は18歳の時でした。私は和歌山高専の機械工学科出身で、NHKロボットコンテスト(ロボコン)に出場したりしてる学生だったのですが、その一方でプログラミングの勉強をしていて、フリーソフトを作って公開していました。

当時公開したソフトウェアは雑誌に何度も掲載され、そのうちの一つ(ファイル破断+)は一時期Vectorの月刊ダウンロード数上位に食い込み、トップページにリンクが貼られるまで行きました。

そのため、高専の4年生(18〜19歳)で進路を考える時に、このまま機械系の分野で就職してエンジニアになるか、大学の情報系へ進学してIT系のエンジニアを目指すかすごく悩みました。当時とても胃が痛かったのを覚えています。

結局その時は、世間の人々から評価を得ているわけだし面白いからもっと勉強したい、ということで北見工業大学の情報システム工学科へ進学することにしました。

エンジニアorデザイナー

次の分岐は21歳のときでした。大学でプログラミングなど情報の分野を学んでいたのですが、また一方で趣味でアイコン制作を行なっていました。アイコン制作のほうでは、ホームページを通じてか、たまたまきたお仕事の依頼を受け、一点○円のような形でお金をもらうことができました。また、ソフトウェアUIデザインなどを独学で勉強したりもしていました。対してソフトウェア開発の方では一銭もお金を得ることはありませんでした。

大学を卒業するまでに、あまり自信はないけどお金をもらって仕事をしたことのあるアイコン制作などのデザイナーイラストレーターを目指すか、それとも専門分野のプログラマー/SEを目指すかを悩みました。

結局、プログラミングがやっぱり面白くて、そっちを伸ばすことにしました。

結局

なんだかんだで、どれを選択しても失敗はしなかったんだろうなって思ってます。今はそこそこ楽しく仕事できてます。自分の性格上何でも興味を持って楽しめるのが良いのかも。

IT系の職種って理系だけじゃなくて文系出身の人もいるので、面白い。みんな何を思って今の仕事をしてるのかな。興味深いです。

2012-01-03

新年

年末年始は実家でごろごろ。

去年はアウトプット少なめ。

近いうちに大きめのアウトプットをできるはずなので、がんばらないといけない。

今年は余裕を持って行動したいですね。

2011-12-11

[][]hgwebcommitのデモをGoogleAppEngine上に設置した

hgwebcommitのデモをGoogleAppEngine上に設置してみました。

http://hgwebcommit.appspot.com/

実際のリポジトリ操作はできませんが、画面操作を見ることぐらいはできます。

f:id:nullpobug:20111211003429p:image

tokibito / flask-hgwebcommit / wiki / Home — Bitbucket

2011-12-04

[]テスト用のバイナリデータにbase64エンコードしたテキストを使う

画像ファイルを読み込む関数をテストするのに、外部ファイルからデータを読み込むんじゃなくて、テストコードのほうに持たせてみたかったんだ。

ただ、文字列の十六進数の表現でもたせるとやたらデータ量多くなるし、どうしようかなって考えてた。

Pythonだとbase64エンコード/デコードが簡単だし、いいんじゃないかと思って試してみた。

Pythonのバージョンは2.7.2で試した。PILを使って画像をリサイズしてJPEGバイナリ列を返す関数をテストしてみる。

resize_image.py

# coding: utf-8
from PIL import Image
from StringIO import StringIO

# テスト用の1*1pxのJPEGデータ
JPEG_IMAGE = \
"""/9j/4AAQSkZJRgABAQEAZABkAAD/2wBDAP//////////////////////////////////////////
////////////////////////////////////////////2wBDAf//////////////////////////
////////////////////////////////////////////////////////////wAARCAABAAEDASIA
AhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAL/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFQEB
AQAAAAAAAAAAAAAAAAAAAQP/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwCQAo//
2Q=="""


def test_resize_image():
    """resize_imageのテスト
    """
    result = resize_image(JPEG_IMAGE.decode('base64'), (200, 100))
    image = Image.open(StringIO(result))
    assert(image.size[0] == 200)  # 幅が200pxになってる
    assert(image.size[1] == 100)  # 高さが100pxになってる


def resize_image(image_data, size, quority=75):
    """画像を指定したサイズにリサイズしてJPEGで返す
    """
    image = Image.open(StringIO(image_data))
    resized = image.resize(size, Image.ANTIALIAS)
    output = StringIO()
    resized.save(output, 'JPEG', quority=quority)
    return output.getvalue()

実行はnoseを使った。

$ nosetests resize_image.py
.
----------------------------------------------------------------------
Ran 1 test in 0.016s

OK

base64エンコードするのはbase64モジュールを使えば簡単。

$ python -m base64 < test.jpg
/9j/4AAQSkZJRgABAQEAZABkAAD/2wBDAP//////////////////////////////////////////
////////////////////////////////////////////2wBDAf//////////////////////////
////////////////////////////////////////////////////////////wAARCAABAAEDASIA
AhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAL/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFQEB
AQAAAAAAAAAAAAAAAAAAAQP/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwCQAo//
2Q==

まあ、ありなのかな。

2011-11-20

[][]AppEngineとPILはまりどころメモ

AppEngineのpython27ランタイムではPILを使うことができる。開発時のはまりどころをメモしておく。

PILはパッケージ周りの問題があってimportでコケる話は割とよく聞く。

try:
    from PIL import Image  # (1)
except ImportError:
    import Image  # (2)

PILをインストールしているなら、このコードは大抵の環境でうまくいくんだけど、AppEngineのdev_appserverはimport可能なモジュールに制限をかけてるため、(2)のパターンが動かない。

PILをforkしたPillowをインストールすればPIL名前空間が使えるため、問題なく動作する。

Pillow 1.7.6 : Python Package Index

このはまり方すると多分大変なんだぜー。