日曜日, 12月 26, 2010

ポータブルHDDをWindows, Mac, Linuxで共有してみた

安かったからという理由でWestern Digital My Passport Essential WDBAAA2500ABK-NESNとかいうUSB HDDを買った。良くあるUSB接続HDDだと思って調べずに買ったらいろいろ驚いた。一緒にリードオンリーなストレージが見えて、そこにあるユーティリティを介さないとストレージにアクセスできない。しかも、仕事で使用しているWindowsでマウントしてからアンマウントしようとすると見事にブルースクリーンに。これでは使えないので、どうにかならないか検討してみた。

調べてみると、新しいファームウェアにすればデータ秘匿機能を無効にする事ができ、Ubuntuなどでも使えるようになるようだ。また、例のリードオンリーなストレージも見えなくする事ができる。それではとOSX用のファームウェアをダウンロードしてアップデート。確かに例の機能は無効化できて、普通のUSB HDDの用に使えるようになった。

次は何のファイルシステムでフォーマットすべきかで悩む。以前はLinuxしか使わない時期が長かったので、ext2-ext3でフォーマットする事が多かった。今の仕事をするようになってからは流石にWindowsを使う事が多くなったのでFAT32にしたりもした。最近は200GB程度の軽く4GBオーバのファイルを多く取り扱っていたので、NTFSでフォーマットして使っていた。このような大きなファイルを扱うようになるのと前後してUbuntuを使うようになった。以前はLinuxのNTFS対応は実験的実装の時期が長く、読み出すのはできてもファイルを書き込むのは怖くてできなかった。ところが最近のUbuntuでは普通に勝手にマウントされて書き込み危険の警告も無く、あっけなく書き込むことができている。問題はOSXへの対応だ。OSXではNTFSのファイルを読む事はできるが書き込む事ができないと思っていた。FUSEを使おうかと思っていたのだけど、パフォーマンスを考えれると二の足を踏んでいた。ところが調べてみると、Snow LeopardではNTFSへの書き込みに対応していたらしい。しかも簡単にマウントするツールもあるらしいときき、導入してみたところ実に快適である。取りあえずこれで使い続ける事にする。

月曜日, 11月 29, 2010

MacPorts で TeXLive を入れてしまった Snow Leopard に pTeX を再びインストールした

MacBook Air さんにもpTeX を入れてあげなければ、と思ってインストールを試みたら撥ねられた。どうも TeXLive とぶつかっているらしい。

あれ、TeXLive なんて何時入れたっけ?と思ったら、matplotlib をインストールしたときに入ったらしい。

$ sudo port install py26-matplotlib +no_tkinter +cairo +ghostscript +latex 
確かにやらかしている。まずはこれをどうにかする。
$ sudo port install py26-matplotlib +no_tkinter +cairo +ghostscript
$ sudo port uninstall py26-matplotlib @1.0.0_0+cairo+ghostscript+latex
$ sudo port uninstall texlive-bin-extra
$ [その他 texlive-basic, texlive-bin, texlive-common と依存しているパッケージをひたすら uninstall]
そして再度 pTeX をインストール。
$ sudo port install pTeX +utf8 +no_x11
どうにか入った。

Snow Leopard で Octave をインストールしてみた

最近それっぽい計算も必要だったりしているのですが、実は Octave や MATLAB は全然使ったことがなく、Python + numpy + scipy + matplotlib + f2py でだいたい事足りていました。それでも MATLAB っぽいコードを見つけては動かしてみたいと思ったりするのでインストールしてみたいかなと。

どうインストールすべきなのか躊躇していたところ、MacPorts で最近まであった問題が解決された模様とのことで、そのまんまトライ。

$ sudo port install octave +gcc44 +no_x11
+no_x11 はあまり意味がなかったかもしれない。

最初 gnuplot から AquaTerm でのグラフ表示ができなくてしばし悩んだが、何故だか判らないけどしばらくいじっていたら表示されるようになった。結局まだ何もしていないはずなのに不思議。

金曜日, 11月 26, 2010

zsh が ~/.profile を読んでくれない

"~/.zprofile" だったのか!

タッチパッドから Cocoa Emacs をスクロールさせてみた

普通に

(mouse-wheel-mode)
としただけだと、"<wheel-down> is undefined" とか "<triple-scroll-down> is undefined" とかいってスクロールしてくれない。

ならばと、こちらを参考に define してみた。

(mouse-wheel-mode)
(global-set-key [wheel-up]
                '(lambda () "" (interactive) (scroll-down 1)))
(global-set-key [wheel-down]
                '(lambda () "" (interactive) (scroll-up 1)))
(global-set-key [double-wheel-up]
                '(lambda () "" (interactive) (scroll-down 1)))
(global-set-key [double-wheel-down]
                '(lambda () "" (interactive) (scroll-up 1)))
(global-set-key [triple-wheel-up]
                '(lambda () "" (interactive) (scroll-down 2)))
(global-set-key [triple-wheel-down]
                '(lambda () "" (interactive) (scroll-up 2)))
なにこれ快適。

emacs で HideShow を使ってみた

こちらにあるままに。正直このキーアサインのままでは微妙だと思う。

Cocoa Emacs で Command キーが Meta キーになるようにした

正直これだけは慣れなかった。こちらを参考に対応。

(cond
 ((string-match "apple-darwin" system-configuration)
  (setq ns-command-modifier (quote meta))
  (setq ns-alternate-modifier (quote super))
  )
)

木曜日, 11月 25, 2010

Makefile内で Windows と Mac と Linux 環境で分岐する

前にも似たようなエントリで書いてるけど、Macを付け足しておかないと。

ifeq (\$(OS),Windows_NT)
# for Windows
.....
else
UNAME = \${shell uname}

ifeq (\$(UNAME),Linux)
# for Linux
.....
endif

ifeq (\$(UNAME),Darwin)
# for MacOSX
.....
endif

endif

Cocoa Emacs で Python 開発環境を再び整えた

やったことをすぐに記録しないと後で絶対忘れるので、仕事中でも書く!

基本的に以前と同様にこちらで書かれていることをそのままなぞっただけなのですが、結構忘れることがありました。特に pymacs の使い方。こちら(その他に 1, 2)に書かれているようにropemacsも試してみましたが、こちらに書かれているようにやはりうまくいきませんでした。 まずは、setup.py と easy_install が通るようにします。

$ sudo port install py26-distribute
$ sudo port install py26-pip

次に python-mode.el をインストール。ここからダウンロードして load-path の通った何処か(ヲイラは ~/.emacs.d/lisp)に置きます。.emacs.d/init.el には以下のように記載します。

(require 'python-mode)
(setq auto-mode-alist (cons '("\\.py$" . python-mode) auto-mode-alist))
(setq interpreter-mode-alist (cons '("python" . python-mode)
       interpreter-mode-alist))
(autoload 'python-mode "python-mode" "Python editing mode." t)

AutoComplete はこちらにあるまま行いました。emacs から M-x load-file で etc/install.el を読み込み、インストール先(ヲイラは ~/.emacs.d/lisp)を指定するだけです。.emacs.d/init.el へは以下のように記載致しました。

;;
;=======================================================================
; auto complete
;=======================================================================

(require 'auto-complete-config)
(add-to-list 'ac-dictionary-directories "~/.emacs.d/lisp//ac-dict")
(ac-config-default)

(setq ac-use-menu-map t)
;; デフォルトで設定済み
(define-key ac-menu-map "\C-n" 'ac-next)
(define-key ac-menu-map "\C-p" 'ac-previous)
(global-auto-complete-mode t)

そして pymacs です。こちらからインストールするためのファイルをダウンロードしようとしましたが、何故かアクセスできません。仕方がないので、GitHubから複製しました。pymacs 用のスクリプトは PYTHONPATH の通った所(ヲイラは ~/.emacs.d/pymacs)にコピーします。

$ git clone https://github.com/pinard/Pymacs.git
$ cd Pymacs
$ make
$ cp pymacs.el ~/.emacs.d/lisp/
$ cp -r Pymacs ~/.emacs.d/pymacs

最後に pysmell ですが、これはこちらのままです。pysmell.el やスクリプトは見つからなかったので、こちらの zip ファイルから取得しました(初めからこれでインストールすれば良かったかも)。

$ sudo easy_install pysmell
$ curl -O http://pypi.python.org/packages/source/p/pysmell/pysmell-0.7.3.zip
$ unzip pysmell-0.7.3.zip
$ cp pysmell.el ~/.emacs.d/lisp
$ cp -r pysmell ~/.emacs.d/pymacs
今回のPYSMELLTAGSの作成はこんな感じで。
pysmell /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/ /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/numpy /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scipy /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib -x site-packages test -o ~/PYSMELLTAGS.stdlib

.emacs.d/init.el への記載内容はこちらをだいたいそのまま。これでどうにか動くようになったようです。

水曜日, 11月 24, 2010

MacBook Air のために再び Python2.6 → matplotlib をコンパイルした

続いて現在の生活必需品である、Python + numpy + scipy + ipython + matplotlib をコンパイルした。

これもまた先の状況とは全く変わっていて、Atlas のビルドに引っかかるなど一切なし。現時点では以下の手順で全く問題ないようです。

$ sudo port install python26 +gcc44 +no_tkinter
$ sudo port install python_select
$ sudo python_select python26
$ sudo port install py26-numpy +gcc44
$ sudo port install py26-scipy +gcc44
$ sudo port install py26-ipython
$ sudo port install py26-matplotlib +no_tkinter +cairo +ghostscript +latex 

ついでなのでPyQtもインストール

sudo port install py26-pyqt4

MacBook Air のために再び Cocoa Emacs をコンパイルした

以前に Mac mini 用にビルドした Cocoa Emacs のイメージファイルをそのままコピーしようかと思いましたが、MacBook Air の処理能力を見ておこうと改めてコンパイルしてみました。

ところが、前回ビルドした時と状況が結構変わっています。最新の安定版が 23.2 に上がっていますので、敢えてリポジトリからでなく安定版の tar ball をダウンロードします。また、よくよく見ると、今年の初夏にはリリースされていますね、emacs23.2。何を寝ぼけていたのだろう。安定版用 inline patch も用意されていますのでこれを適用します。

結局のところ、こちらで紹介されている方法そのままでまったく問題ありませんでした。

curl -O http://ftp.gnu.org/pub/gnu/emacs/emacs-23.2.tar.gz
curl -O http://jaist.dl.sourceforge.jp/macemacsjp/47986/inline_patch-23.2-beta3.tar.gz
tar xvfz inline_patch-23.2-beta3.tar.gz
tar xvfz emacs-23.2.tar.gz
cd emacs-23.2
patch -p 0 < ../inline_patch-23.2-beta3/emacs-inline.patch
./configure --with-ns --without-x
make bootstrap
make install
open nextstep/Emacs.app

火曜日, 11月 23, 2010

MacBook Air (3,2) を買ってしまった

先月のAppleスペシャルイベント前の噂からずーっと心を奪われていたMacbook Airをやっと買いました。今月の初めに初めてApple Store(心斎橋)へ行って見てきたのですが、11.6インチと13.3インチのどっちを買うかで延々と悩み、あまりの悩みっぷりを利用して店員の兄ちゃんを釣り上げ、あれこれ調子の良いことを更に延々と話倒しながらも何も買わずに帰るという極悪非道なことをしてきたのですね。それからも悩み続けたのですが、結局「どこでもプログラム書きに使いたい」というのが自分の一番強い欲求な訳ですので、素直にそれに従ってついうっかり「一番いいのを頼む」をやってしまったわけです。

決心したのは先々週だったのですがオーダしたのは先々週の日曜の深夜。次の日の昼間に「カード会社から拒否された」とメールが。まったく理由がわからなかったので、これでダメならカード会社に連絡しようと登録されていたはずのと同じカード番号を再入力。何故かこれはちゃんと通った。そもそも同じカード情報で一日前にiPhoneアプリ購入できているので、拒否されたこと自体が謎。きっちり3営業日後の金曜日に上海を出発。で、一昨日の日曜日に到着。直ぐに開封したかったのだけど、その日は買い物に出かけたりしておあずけ。昨日になってやっと開封してインストール作業に入った訳です。

まずは最近仕事で使ってみている Evernote, Dropbox, XMindをインストール。特にDropboxについては、こちらを参考に、選択したフォルダのみを同期するようにしてみました。現時点でダウンロードできるβ版(0.8.114)についてForumの内容を確認しながらダウンロードしてインストール。後は先に書いたXcodeや最近購入したOffice for Mac 2011をインストールしたり。

現在、行きつけのお店でDDを使って書き込み中。最近ずっとバッテリが2時間持たないノートPCばかり使っていたので少なくとも5時間以上は持ちそうな機械は久しぶり。PHSの通信が遅いことを除けば結構快適だと思うです。今のところは満足。

Xcodeインストーラをダウンロードしようとしたら拒否された

XcodeをインストールしようとApple Developerに行って、「そういえばデベロッパ登録する必要があるんだよな」とか思ったら案の定登録を迫られたので、必要項目を記載して晴れて開発者登録を済ませ、さてダウンロード…と思ったら「Access denied for download.」とかご無体なことを仰る。特にやましいことはないはずなのに。

こちらを見ると「キーチェーンアクセスを確認せよ」と仰っている。仰せのままに確認してみると、本来あるはずらしい「connect.apple.com」のエントリが全然見当たらない。登録時に何かしくったのかもしれない。試しに手入力でconnect.apple.comエントリを作成して、名称と場所に「connect.apple.com」、アカウントに登録したEmailアドレス、あとはパスワードを入力。再びダウンロードを試みると、何事もなかったようにダウンロードを開始した。

月曜日, 11月 22, 2010

64bit Snow LeopardなMacでDD+RX42INなデータ通信をしてみた

簡単にできるかと思ったのにググっても情報が出てこないので、試行錯誤して到達したことを記録しておこうと。後で思い出そうとしても絶対忘れる。

  1. ここからドライバファイル(WS002IN.dmg)をダウンロードします。対応機種が違ってもキニシナイ。かなり古いファイルだけどキニシナイ。
  2. WS002IN.dmgをマウントして、中にあるOSX Driver.dmgをさらにマウント。
  3. 中にある2つのファイルのうち、WS002IN Installer(10.4〜).pkgをダブルクリックしてインストール。終了したらOS再起動。
  4. [システム環境設定]→[ネットワーク]を開くと新しいサービス[USB-Serial Controller]が追加されているのでこれを選択し、[構成]は[デフォルト]のまま、適切な電話番号を入力し(例えば 0570570711##64)、アカウント名とパスワードに"prin"入力して適用。
  5. [接続]ボタンを押してテストする。
  6. Utilityフォルダの中の"AIR-EDGE Card Utility"をどこかに入れておく(自分はApplications/Utilitiesの中に入れた)。

こんな乱暴なことして大丈夫かと思ったけど動いてしまった。

月曜日, 11月 08, 2010

ふたたび復活

先週は職場のお祭りで限界近くまで疲労を蓄積して、微妙に何もできていない。日曜に新しいヨドバシを覗いてみようかと思ったけど、しんどいからやめ。しばらく止まっている事を少しでも進めようかと、まずは目の前の気になる事から片付けてみる。

以前にCocoa Emacsをインストールしたときに、以前から使い続けている.emacs/init.elをそのままコピーして、元々入っていたEmacs 22.1.1を起動すると、"Symbol's function definition is void: set-scroll-bar-mode"というエラーが帰ってくる。No-GUIなバイナリから使う場合は仕方が無いので、分岐処理をするように修正する。

(cond (window-system
       (set-scroll-bar-mode 'right))) 
emacs lispとかあんまりいじれない(他の人から設定方法を教わらないと設定できない)ので、少しずつ使えるようにならないと。

水曜日, 10月 27, 2010

業務用通販サイト

一息つく間もなく次の仕事の準備でお買い物作業。先輩からこのサイトを教わった。なかなか良い品揃え。個人的にも買い物したいなと思ったけど、個人相手はしていない。残念。

KAISER+KRAFT

火曜日, 10月 26, 2010

お仕事

依頼されていた作業が終わった。というか締め切りがギリギリに迫ったので、現時点での提出可能なクオリティの資料を納めた。自分の納得できるクオリティでないのが辛いけど、スケジュールを考えると仕方がないと思う。事前検討が十分だったら違っていたかもしれないけど、今回の過程で勉強が進んだ結果ここまでこなせた事を考えると、現状は必然のように思う。今後のために、やっつけで書いた処理プログラムの整備をしておくことにする。

火曜日, 10月 19, 2010

zshで算術演算を含む処理を行う

これはいかん。実にけしからん。これを覚えてしまったらzsh以外のシェルを使う気にはまったくならなくなりそうだ。というか、これを見てしまった今、心の中でそう決心しつつある。

numpyのndarrayから条件に合う値のindexを拾い出す

いまいち良い考えが思いつかないけど、取りあえずこれでどうにかしている。
a = numpy.random.randint(0,10,50)
numpy.arange(len(a))[a==5]

matplotlibで背景色を透明にする

グラフの画像出力をsavefig()で行うなら話は簡単。
savefig(filename, transparent=True)
では、それ以外(print_figure()を使うとか)では? こちらにFigureオブジェクトの属性を操作する方法が紹介されています。これを参考に以下のようにして対処することにしました。
fig = matplotlib.figure.Figure(figsize=(8,6), dpi=100)
fig.patch.set_alpha(0.0)
fig.clf()
ax = fig.add_subplot(1,1,1,position=[0.15,0.15,0.8,0.8])
ax.plot(…)
canvas = matplotlib.backends.backend_agg.FigureCanvasAgg(fig)
canvas.print_figure(filename, dpi=300)

Google ChromeにScrollbar Anywhereを使ってみた

個人的にFirefoxから離れられない最大の要因であるScrollbar AnywhereのGoogle Chrome用相当品っぽい拡張機能を偶然見つけた。名前も同じ。使ってみた感じ、chromeTouchよりも、慣れた感触に近くていい感じ。chromeTouchの作者さまには申し訳ないけど、こちらに移行します。

Chrome定住化計画がこれでまた一歩前進するかな…あとtiddly snipがあればなぁ。

月曜日, 10月 18, 2010

Macでmatplotlibを埋め込んだPyQt4のコードが上手く動かなかった件について

やっぱり先のエントリこのコードを動かすとmatplotlibのウィンドウが余計に出てしまうのは未解決と書きました。

そもそも、これは解決容易な問題かどうかです。これまで出回っているサンプルコードが自分のMac環境で正常に動作するか確認してみました。コードはこちらこちらから使用しました。結論だけいうと、何の問題はありません。極めて正常に動作しています。つまりは、自分のコードが悪いという事です。

実は気になる心当たりがありました。

    fig = matplotlib.pyplot.figure()
実はこれはここのオリジナルのコードと意図的に変えています。
    fig = matplotlib.figure.Figure()
これを変えた理由は、作成したグラフをPyQtに埋め込んで表示すると同時に、グラフの画像ファイルを生成して保存する機能を盛り込みたかったからです。自分が修正したコードでは、figから画像ファイルを生成することができます。
fig.savefig(filename)
ところが、ここをオリジナルのコードに戻しますと、matplotlibのウィンドウ複数表示がなくなり、目下の問題は解決します。要するに原因はココだったわけです。しかし、オリジナルに戻しますとfig.savefig()が使えなくなります。これでは元の木阿弥です。

解決する方法はありました。画像を生成する方法を変えればいいのです。以前から目にはなんとなく入っていたprint_figure()というものを使ってみます。こちらを参考にして修正してみます。グラフの画像ファイルを生成する部分はPyQtで表示するのとは別のバックエンド用canvasオブジェクトを生成するようにすればいいようです。

canvas = matplotlib.backends.backend_agg.FigureCanvasAgg(fig)
canvas.print_figure(filename)
以前のサンプルコードを修正したフルコードは以下のようになります。
#!/usr/bin/env python
# -*- coding: utf-8 -*-

# for command-line arguments
import sys

# Numpy functions for image creation
import numpy

# Matplotlib Figure object
import matplotlib
import matplotlib.pyplot

# Python Qt4 bindings for GUI objects
import PyQt4.QtGui

# import the Qt4Agg FigureCanvas object, that binds Figure to
# Qt4Agg backend. It also inherits from QWidget
#from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
import matplotlib.backends.backend_qt4agg
import matplotlib.backends.backend_agg

# import the NavigationToolbar Qt4Agg widget
#from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg as NavigationToolbar

class ApplicationWindow(PyQt4.QtGui.QMainWindow):
    """Example main window"""
    def __init__(self,figs):
        # initialization of Qt MainWindow widget
        PyQt4.QtGui.QMainWindow.__init__(self)
        # set window title
        self.setWindowTitle("Matplotlib Figure in a Qt4 Window With NavigationToolbar")
        # create a tab widget
        self.tab_widget = PyQt4.QtGui.QTabWidget(self)

        for fig, label in figs:
            # instantiate a widget, it will be the main one
            self.main_widget = PyQt4.QtGui.QWidget(self)
            self.tab_widget.addTab(self.main_widget, label)
            # create a vertical box layout widget
            vbl = PyQt4.QtGui.QVBoxLayout(self.main_widget)
            # instantiate our Matplotlib canvas widget
            qmc = matplotlib.backends.backend_qt4agg.FigureCanvasQTAgg(fig)
            # instantiate the navigation toolbar
            ntb = matplotlib.backends.backend_qt4agg.NavigationToolbar2QTAgg(
                qmc, self.main_widget)
            # pack these widget into the vertical box
            vbl.addWidget(qmc)
            vbl.addWidget(ntb)
            # # set the focus on the main widget
            # self.tab_widget.setFocus()
            # set the central widget of MainWindow to main_widget
            self.setCentralWidget(self.tab_widget)

def draw():
    figs = []

    # Standard Matplotlib code to generate the plot
    # fig = matplotlib.pyplot.figure()
    fig = matplotlib.figure.Figure()
    axes = fig.add_subplot(111)
    x = numpy.arange(0.0, 3.0, 0.01)
    y = numpy.cos(1*numpy.pi*x)
    axes.plot(x, y)
    figs.append((fig,"tab 1"))

    # fig = matplotlib.pyplot.figure()
    fig = matplotlib.figure.Figure()
    axes = fig.add_subplot(111)
    x = numpy.arange(0.0, 3.0, 0.01)
    y = numpy.cos(2*numpy.pi*x)
    axes.plot(x, y)
    figs.append((fig,"tab 2"))

    # fig = matplotlib.pyplot.figure()
    fig = matplotlib.figure.Figure()
    axes = fig.add_subplot(111)
    x = numpy.arange(0.0, 3.0, 0.01)
    y = numpy.cos(3*numpy.pi*x)
    axes.plot(x, y)
    figs.append((fig,"tab 3"))

    return figs

# Create the GUI application
qApp = PyQt4.QtGui.QApplication(sys.argv)

figs = draw()

# save image file of matplotlib graph
canvas = matplotlib.backends.backend_agg.FigureCanvasAgg(figs[0][0])
canvas.print_figure("qt4mpl.png")

# Create the Matplotlib widget
mpl = ApplicationWindow(figs)
# show the widget
mpl.show()

# start the Qt main loop execution, exiting from this script
# with the same return code of Qt application
sys.exit(qApp.exec_())
多分これで良さそうです。

日曜日, 10月 17, 2010

Python(に限らず、身の回りの各システム)の整数型の精度について

先のエントリにおいて、Pythonでの整数型の精度でハマったことについて触れました。それは確かに間違いないと思いますが、何がどう問題なのかについては放置したままです。気になりましたので、別エントリにして自分のために明記します。

こちらを見れば明らかなように、Pythonでの整数型の精度はCでのlongとして実装されているようです。これまで仕事で使用していた環境はUbuntu 10.04 32bit環境です。この場合、intもlongも32bitです。Windows XP 32bitでも動作させていましたが、この場合もint, longともに32bitです。X64ではというと、やはりintもlongも32bitですので、恐らくは問題ありません(環境は用意がありますが、まだ動作させていません)。64bit Linuxは複数のデータモデルがありますが、Ubuntu 10.04 amd64版ではintは32bitでlongは64bitでした。Snow Leopardではというと、intは32bitでlongが64bitです。

Pythonに限りませんが、バイナリファイルを扱う際には特にこれらデータモデルに気を付けてコーディングしなければなりませんね。

金曜日, 10月 15, 2010

帰宅

今週は4日しか働いていないはずなのに激しく疲労した。うち2日が肉体労働だったのが効いている。月1日だけ来られる方に飲みに誘われたけどそのまま帰ってきてしまった。

木曜日, 10月 14, 2010

仕事で書いたPythonコードがMacPortsでインストールしたバイナリで動くようにしてみた

仕事で書いたPythonコードをMacで動かす事を考えた理由は2つ。一つはコードのポータビリティを確保したい事。もう一つは、仕事のコード書きに使っているUbuntuをインストールした私物のノートPCを持ち歩かずに自宅でコード書きを続けたい、という欲求を満たすためです。

とりあえずそのまま起動してみましたが、残念ながら動きません。このコードはとあるフォーマットで作成されたバイナリファイルを読み込み、解析して表示するプログラムです。そのデータを読み込むのに一部scipy.io.numpyio.fread()を使用している(こちらを参考に)のですが、何故かMacPortsでインストールしたSciPyにはnumpyioがありません。インストールに失敗しているのかインストーラにバグがあるのか、暫く悩んでいたのですが、そもそもないように思われます。一瞬「これは困った」と考えましたが、考えてみますとscipy.io.numpyio.fread()はscipy.io.fromfile()で完全に代替可能です。何の問題もありません。

さらにプログラムが動かない理由を突き止めるべく、読み込んだデータの一部をそのまま覗いてみると、期待通りの数値になっていません。データを読み込む際にscipy.io.fromfile()のdtypeを指定する事で型指定しますが、符号付き整数を読み込む際に'l'を指定しておりました。よく考えますと、この整数型の精度はシステム依存です。32bit Linuxで正常に動いていても64bit Snow Leopardで正常に動く訳がありません。ここの整数型指定はnumpy.int32とすべきです。あと念のために'H'をnumpy.ushortに変更しておきます。これでデータを正常に読み込む事ができ、一つの問題を残して使用に問題ない形で正常な動作を得る事ができました。

一つの問題とは何かですが、先のエントリで示しましたPyQt4にmatplotlibのグラフを埋め込んで表示するコードをMacPortsバイナリで実行してみますと、確かにmatplotlibのグラフがPyQt4のウィンドウに埋め込まれた形で表示されますが、それと同時に全く同じグラフが独立したウィンドウで表示されてしまいます。Ubuntuで動かした場合は期待通りに動作し、複数のウィンドウが開かれる事はありません。恐らくは、mpl.show()がPyQt4バックエンドとしてのmatplotlib.pyplot.showIOと同義な動作をしているのではないかと推察します。残念ながらこの問題の解決方法は判りません。

金曜日, 10月 08, 2010

PyQtでショートカットを使う

PyQtの話というよりQtの話ですよね。Ctrl-QとかCtrl-Wとかでお手軽にGUIプログラムを終了できるようにしたい、という極めて安易なこと考えてみましたが、結構手間がかかりました。

調べるとsetShortcut()という関数があるので、これを使うのが早いと考え、試してみます。

        fileMenu = PyQt4.QtGui.QMenu("&File", self)
        self.action_close = fileMenu.addAction("&Close")
        self.action_close.setShortcut("Ctrl+W")
        self.menuBar().addMenu(fileMenu)
        self.connect(self.action_close, PyQt4.QtCore.SIGNAL("triggered()"), self.quit)

    def quit(self):
        sys.stdout.write("close.\n")
        qApp.quit()
一応できたにはできました。ここで、一見メニュへの登録は不要な様に見えるので取り除いてみますが、残念ながら動きません。
        self.action_close = PyQt4.QtGui.QAction("&Close", self)
        self.action_close.setShortcut("Ctrl+W")
        self.connect(self.action_close, PyQt4.QtCore.SIGNAL("triggered()"), self.quit)
できればメニュなしでもショートカットが使えるようにしたいと思います。悩んだ結果、キーボードイベントを捕まえることで解決を図りました。
#!/usr/bin/env python
# -*- coding: utf-8 -*-

# for command-line arguments
import sys

# Python Qt4 bindings for GUI objects
import PyQt4.QtGui

class ApplicationWindow(PyQt4.QtGui.QMainWindow):
    def __init__(self):
        PyQt4.QtGui.QMainWindow.__init__(self)
        self.setWindowTitle("test")

        fileMenu = PyQt4.QtGui.QMenu("&File", self)
        self.action_close = fileMenu.addAction("&Close")
        self.action_close.setShortcut("Ctrl+W")
        self.menuBar().addMenu(fileMenu)
        self.connect(self.action_close, PyQt4.QtCore.SIGNAL("triggered()"), self.quit)

    def quit(self):
        sys.stdout.write("close.\n")
        qApp.quit()

    def keyPressEvent(self, ev):
        if ev.key()==PyQt4.QtCore.Qt.Key_Q:
            if (ev.modifiers() and PyQt4.QtCore.Qt.ControlModifier):
                sys.stdout.write("quit.\n")
                qApp.quit()

# Create the GUI application
qApp = PyQt4.QtGui.QApplication(sys.argv)

# Create the Matplotlib widget
mpl = ApplicationWindow()
# show the widget
mpl.show()

# start the Qt main loop execution, exiting from this script
# with the same return code of Qt application
sys.exit(qApp.exec_())

意外にもキーボートイベントからのCtrl-Q押下の捕捉によってメニュへのショートカット(Ctrl-W)が潰される事はなく、共存して動作します。QMainWindow自体に独自のキーボードイベントはないと思いますし(あくまでも推測)、子ウィジェットからキーボードイベントが伝搬されていることが期待できるならば、この対応で問題はないかなと思うのですけど、どうなんでしょう?

PyQt使うの初めてなのにmatplotlibを埋め込んでみた

我ながら無謀と思いつつやってみた。これに書いてあったコードを殆どそのまま参考にする。

すでに書いているmatplotlibを使ったコードの転用が容易になるように、matplotlibのコードとPyQtのコードをできるだけ分離を試みてみた。(追記:以下のコード抹消、こちらに修正コード)

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# for command-line arguments
import sys

# Numpy functions for image creation
import numpy

# Matplotlib Figure object
import matplotlib
import matplotlib.pyplot

# Python Qt4 bindings for GUI objects
import PyQt4.QtGui

# import the Qt4Agg FigureCanvas object, that binds Figure to
# Qt4Agg backend. It also inherits from QWidget
#from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
import matplotlib.backends.backend_qt4agg

# import the NavigationToolbar Qt4Agg widget
#from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg as NavigationToolbar

class ApplicationWindow(PyQt4.QtGui.QMainWindow):
    """Example main window"""
    def __init__(self,figs):
        # initialization of Qt MainWindow widget
        PyQt4.QtGui.QMainWindow.__init__(self)
        # set window title
        self.setWindowTitle("Matplotlib Figure in a Qt4 Window With NavigationToolbar")
        # create a tab widget
        self.tab_widget = PyQt4.QtGui.QTabWidget(self)

        for fig, label in figs:
            # instantiate a widget, it will be the main one
            self.main_widget = PyQt4.QtGui.QWidget(self)
            self.tab_widget.addTab(self.main_widget, label)
            # create a vertical box layout widget
            vbl = PyQt4.QtGui.QVBoxLayout(self.main_widget)
            # instantiate our Matplotlib canvas widget
            qmc = matplotlib.backends.backend_qt4agg.FigureCanvasQTAgg(fig)
            # instantiate the navigation toolbar
            ntb = matplotlib.backends.backend_qt4agg.NavigationToolbar2QTAgg(
                qmc, self.main_widget)
            # pack these widget into the vertical box
            vbl.addWidget(qmc)
            vbl.addWidget(ntb)
            # # set the focus on the main widget
            # self.tab_widget.setFocus()
            # set the central widget of MainWindow to main_widget
            self.setCentralWidget(self.tab_widget)

def draw():
    figs = []

    # Standard Matplotlib code to generate the plot
    fig = matplotlib.pyplot.figure()
    axes = fig.add_subplot(111)
    x = numpy.arange(0.0, 3.0, 0.01)
    y = numpy.cos(1*numpy.pi*x)
    axes.plot(x, y)
    figs.append((fig,"tab 1"))

    fig = matplotlib.pyplot.figure()
    axes = fig.add_subplot(111)
    x = numpy.arange(0.0, 3.0, 0.01)
    y = numpy.cos(2*numpy.pi*x)
    axes.plot(x, y)
    figs.append((fig,"tab 2"))

    fig = matplotlib.pyplot.figure()
    axes = fig.add_subplot(111)
    x = numpy.arange(0.0, 3.0, 0.01)
    y = numpy.cos(3*numpy.pi*x)
    axes.plot(x, y)
    figs.append((fig,"tab 3"))

    return figs

# Create the GUI application
qApp = PyQt4.QtGui.QApplication(sys.argv)

figs = draw()

# Create the Matplotlib widget
mpl = ApplicationWindow(figs)
# show the widget
mpl.show()

# start the Qt main loop execution, exiting from this script
# with the same return code of Qt application
sys.exit(qApp.exec_())

個々のfigに対して画像ファイルとして保存するには、

fig.savefig(filename, dpi=300, transparent=True)
とかすると良い。実はこのあたり結構悩んだ。

複数タブに貼り付ける様にしているのは、任意数の複数グラフを同時表示できるようにしたかったのだけど、貼り付けたいグラフが結構メモリを消費してしまうため、結局のところ必要な分を一辺に貼り付けるのは無理だった。

月曜日, 10月 04, 2010

叔父が死去した

どうも先週の週末前だったらしい、が連絡が不明瞭でよく判らない。

とりあえず告別式に参加するために明日帰省する事にした。

玄関で雪崩が起きた

忙しさにかまけて古新聞を整理も処分もせずに玄関に放置していたら、表層雪崩が起きてしまった。家に着いて玄関口で一瞬途方に暮れてみたが、事故に伴い不幸にもトイレへの現在唯一の動線が遮断されてしまった。しかも帰宅の途中で尿意に襲われ、急ぎ帰宅した矢先にその状況を目にし、激しく焦燥感に苛まされることなった。最低限の動線確保をなさぬ限り、タイムリミットを設けられたこの状況を回復する事は困難であると思われた。

まずは多少の汚れや汗が問題にならぬ様下着姿となり、当面邪魔にならない場所に新聞紙を積み上げる最低限の場所を確保し埃を拭い払って、足下にある新聞紙を丁寧に広げながら一部づつ積み上げを開始した。崩れた新聞紙の総量は見かけ以上にあり、気付いたら新聞紙は自分の胸下辺りまで達する事となった。

とりあえずはトイレまでの動線は確保され、無事に用を足す事ができた。ただ、雪崩が起きる程の量の新聞が現在もなお玄関先に鎮座し続けている事を鑑みるに、問題の根本的な解決には全く達してはいない事は明白である。この事実を明示的に提示すべく、現在も状況の復旧作業はあえて不完全なままに保持する事とした。可及的速やかに時間を見つけ、状況の回復に向けて現実的な行動を行わなければならない。

状況は現在も切迫している。

月曜日, 9月 27, 2010

読めないMacのHDDを未練たらしく触ってみた

起動しなくなったG4 CubeのHDDをどうしようかと机の上に置いておいて、ふと「fsckしてみればいいんでない?」と思いついた。今頃感がすごくアレだけど。

Ubuntuを見るとhfsprogsというパッケージにHFS, HFS+用のfsckが入っているようなので使用してみたら「Catalog file entry not found for extent」と出て終了。やはりここはOSXでやるべきかと、Macに刺してfsckしてみたら

$ sudo fsck /dev/disk3s1 
** /dev/rdisk3s1 (NO WRITE)
BAD SUPER BLOCK: MAGIC NUMBER WRONG

LOOK FOR ALTERNATE SUPERBLOCKS? no
と出て、やっぱり終了。ようやっとすっぱり諦められた。

ハードが壊れたとばかり思っていたけど、どうも論理的に壊れてる様子。ブートローダは壊れていない。

土曜日, 9月 25, 2010

iPadをBBモバイルポイントで使えるようにしてもらった

自分でやらんのかい。

自分でやろうかと思ったけど、自分のW-Zero3からでは設定できなかった。多分PCからのアクセスと認識されたのだろう。想定内。仕方ないので、設定手順を手短にメールに書いて妹に送った。んで、マクドナルドで確認したらあっさり繋がった。

妹ありがとう。

金曜日, 9月 24, 2010

boostも入れておいた

仕事中に時間がかかりそうなビルドを済ましておこうかととりあえず済ませてみた。

MacPortsで

$ sudo port install boost +universal
で難なく終了。

sshfsを導入してみた

世の中にはsshfsなどという便利そうなものがあると耳にした事はあったわけですが、ぐうたらが災いして今まで使用した事がありませんでした。んで、最近Snow Leopardへのインストール関連についての検索をしていてたまたま目に留まったので、気まぐれに使ってみました。

最初は職場でUbuntuマシンにインストール。synapticからなので簡単。使い方も簡単なので略。しかし、想像以上に簡単便利!これは素晴らしいと、職場の非力なXPノートPCにもDokanSSHFSをインストール。これも簡単は簡単でしたが、残念ながら動作が不安定。多分あまりに非力(メモリが少なすぎる)だったのがいけないのではないかと思います。

それではと、自宅のMacにもとMacPortsでインストールを試みましたが、

$ sudo port install macfuse
      :
--->  Activating macfuse @2.0.3_2
Error: Target org.macports.activate returned: Image error: /Library/Application Support/Developer/Shared/Xcode/Project Templates/MacFUSE already exists and does not belong to a registered port.  Unable to activate port macfuse. Use 'port -f activate macfuse' to force the activation.
Log for macfuse is at: /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_ports_fuse_macfuse/main.log
Error: Status 1 encountered during processing.
To report a bug, see 
何故かこける。指示通りに
$ sudo port -f activate macfuse
としますと、大量にWarningが出ますが正常終了した模様。既にMacFUSE入ってたのかな?んで続行しますと
$ sudo port install macfuse
      :
--->  Building xorg-libXt
Error: Target org.macports.build returned: shell command failed
Log for xorg-libXt is at: /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_ports_x11_xorg-libXt/main.log
Error: The following dependencies failed to build: openssh xauth xorg-libXmu xorg-libXt
Error: Status 1 encountered during processing.
To report a bug, see 
…Xtは関係ないだろうに、と思いながら
$ sudo port install macfuse +no_x11
としてみたら無事終了しました。

現在動作試験中ですが、問題なく動いている模様。

普段使いの一般ユーザアカウントでsudoできるようにはしなかった

sudoできないと不便かなと思ってやる気満々だったのですが、もたもたしている間に「ssh admin@localhostとかすればいいんでない?」という事に気がついた。

それだけ。

OSXでのユーザシェルをzshに切り替えた

Snow Leopardには初めからzshが入っている事に今更驚き。

ということで、こちらを参考にしながらデフォルトシェルを変更。.zshrcはUbuntu環境で使用中のものをそのままコピー。たぶん問題なし。

CTUでポートフォワードの再設定をした

これまで外から自宅内PCを操作する時にはG4 Cube上で動作していたsshd越しに行っていましたが、Cube亡きこれからは別の手段に切り替えなければなりません。ここで何か新しいことに挑戦すればカッコいいのですが、なにぶんぐうたらなので、とりあえずはほぼ同じ事をしてお茶を濁します。新しいMac miniにも同様にsshdが動いておりますので、外からminiへ22番ポートをフォワードするように設定を変更します。

自宅はNTT西日本のフレッツ光プレミアム・マンションタイプに加入しておりますが、この場合の終端装置はCTUと呼ばれる機械になっています。これの操作をする際はhttps://ctu.fletsnet.com/CtuC101/init.doという謎のアドレスを叩く必要があり、これが不思議だったのですが「NTT側の用意したCTU設定サーバに接続し、設定する」ということだったのですね。CTUでのポートフォワードですが、詳細設定の中の静的アドレス変換設定(ポート指定)はすぐに気づけるのですが、ファイアウォール設定の中の詳細設定の中のルール設定まではなかなか気付けません。一度やっているはずなのですが、今回も見事に忘れていました。何か一手間かかっていたというぼんやりとした記憶がなければさらに手間がかかっていたかもしれません。ほとんどトラップといってもいいレベルだと思うのです。

木曜日, 9月 23, 2010

ひさびさにW-Zero3からダイアルアップ接続しようかと思ったら繋がらなかった

PHSアカウントからメールを使わなければならない用件のためにひさびさにW-Zero3を使おうとしたら、電源が入らなかった。バッテリが干上がっていたのは明白なのでしばらく充電してから起動してメール受信しようとすると「オンラインサインアップして下さい」とメッセージが出てダイアルアップ接続自体ができない。そこでそのオンラインサインアップをと思ってもオンラインサインアップ自体のための接続ができないでいる。調べると[ダイアル情報を使用する]のチェックを外さなければならないらしい

どうにか使えるようになった。

水曜日, 9月 22, 2010

Snow LoerpardにpTeXをインストールした

どうもなかなかTeXを使わざるを得ない状況にあるので、TeXもインストールします。

バイナリパッケージをインストールするのが最もポピュラーな様ですが、ここはMacPortsを使うことにします。

$ sudo port install pTeX +utf8 +no_x11
多分これで良いのでしょう。動作は後で確認する。

OS Xの画面共有をWindowsから使ってみた

ココのところ、毎日自宅へ帰るとOS Xの設定をしたりソフトウェアのインストールしたり動かしてみたりで大幅に時間が取られています。会社でも当然忙しいはずなのですが、コンパイルなど時間がかかる作業は他の事をしながらでもできるので、会社から自宅のMacを操作する環境の整備の検討をしてみました。コンソールだけならsshさえ通れば十分で、外部からのポートフォワーディングさえ行えばよいし、既に対応済みです。OS Xでの作業はコンソールだけではなかなか辛いので、できればGUIでの作業が可能であることが望ましいです。ということで、OS Xの画面共有の機能をMac以外の機械から行えるようにしてみました。

やったことはこちらで紹介されていることそのままで、実際にやってみますとこちらで報告されていますようにキーボード入力に不都合が見られます。理由は解りませんが、可能性としてServer側(ASCII)とClient側(JIS)とでキーボード配列が異なっているのもあるかもしれません。参考になるかは分かりませんが、JIS配列キーボードで使用しているWindows上のRealVNCからでなく、ASCII配列キーボードで使用しているUbuntu上のvinagreからでは何故かキーボード入力の不都合が発生していないようです。それではUbuntuから使用するかとも思いましたが、RealVNCと比べてあまりに描画速度が遅く操作のレスポンスが悪いので、即座に継続使用を断念しました。あと、OS Xの画面共有で使用されていますポート番号は5900であるようですので、外部から使用する場合にフォワード(SSHで通しています)する場合はポート番号5900に対して行えばよいようです。

とりあえずRealVNCからの使用を続けることにします。

OS Xにもろもろバージョン管理システムをインストールした

Mac miniにもろもろプログラムをインストールしたいので、取り敢えずバージョン管理システムをもろもろインストールすることにした。

CVSとSubversionははじめから入っていた。その他はすべてMacPortsからインストール。Bazaar(使ったことはない)というのをインストールしようと"\$ sudo port install bazaar"とかしてみたが何故かうまく行かない。調べると"# sudo port bzr"でインストールするのらしい。実に紛らわしい。ついでにgit, mercurialなどもインストール。

BBモバイルポイントの設定をやり直した

ひと月前位から急にBBモバイルポイントが使えなくなった。うろ覚えでいじっても治らなかったが、特に困ることもなかったので放置していた。

ふと思い出したので改めてちゃんと調べなおしたところ、単に(何故か)WEPキーを記憶喪失してたらしい。入れ直したらつながるようになった。

火曜日, 9月 21, 2010

iTunesのデータを再び移動した

先月にそれまで使っていたG4 CubeからiTunesデータをコピーした直後にHDDが壊れ、ギリギリ難を逃れたことを書きました。その時もうっかり管理者アカウントのMusicフォルダに入れ運用してしまっていたのが引っかかっていた。できれば一般ユーザ側に移動したい。そこで再びiTunesデータの移動を行った。Cubeから移動したときは関連するplistファイルのコピーができなかったが、今のところ困ることは起きていない。今回はできる限りのファイル移動を行う。

まずはiPhoneの同期・バックアップを行って、コピー元iTunesの認証解除を行った後にこちらを参考にファイルのコピーを進める。

# rsync -avz /Users/admin/Music/iTunes/ /Users/neko/Music/iTunes/
# mkdir /Users/neko/Library/Application\ Support/MobileSync/Backup/
# rsync -av /Users/admin/Library/Application\ Support/MobileSync/Backup/ /Users/neko/Library/Application\ Support/MobileSync/Backup/
# rsync -av /Users/admin/Library/iTunes/ /Users/neko/Library/iTunes/
# rsync -av /Users/admin/Library/Preferences/com.apple.iPod.plist /Users/neko/Library/Preferences/
# rsync -av /Users/admin/Library/Preferences/com.apple.iTunes.plist /Users/neko/Library/Preferences/
# rsync -av /Users/admin/Library/Preferences/com.apple.iTunes.eq.plist /Users/neko/Library/Preferences/
# rsync -av /Users/admin/Library/Preferences/com.apple.iTunesHelper.plist /Users/neko/Library/Preferences/
# chown -Rv neko:staff /Users/neko/Music/iTunes
# chown -Rv neko:staff /Users/neko/Library/Application\ Support/MobileSync/
# chown -Rv neko:staff /Users/neko/Library/iTunes/
# chown -Rv neko:staff /Users/neko/Library/Preferences/
# mv /Users/admin/Music/iTunes /Users/admin/Music/iTunes.backup
# mv /Users/admin/Music/iTunes.orig /Users/admin/Music/iTunes
こんな感じで。

大体これでいいかな?と思って、データ移動先の一般ユーザでiTunesの認証設定を行ってから改めてiPhoneとiPadの同期を行ったところ、iPhoneは問題なく同期終了でiPadは…大半のアプリケーションが削除された。大して何も入れてなかったはず…と思ったけど若干アプリケーションを入れてみたのちに全く同期を取らなかったらしい。もしくは~/Library/Preferences/com.apple.iPod.plistのコピーを忘れたせい?殆ど使ってはいなかったので問題なし。

これで気掛かりがひとつ減った。

連休明け

iPhoneに無造作に突っ込まれていた500近いアプリケーションを整理していたら休みが終わった。

アホ過ぎるにも程がある。

木曜日, 9月 16, 2010

Snow Leopardにmatplotlibをインストールした

最近はmatplotlibがないと生きていけない体になりつつあり、自宅でmatplotlibが使えないというのは生死に係わる大問題となっております。今まではUbuntuをインストールしたノートPCで使用しておりましたが、その為にいちいちノートPCを用意するのも面倒ですので、ここは一つMacでも使えるようにしようということです。

Snow Leopardには初めからPythonが用意されています。

$ /usr/bin/python
Python 2.6.1 (r261:67515, Dec 17 2009, 00:59:15) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
これを使う形でmatplotlibを用意することも選択肢の一つ(ただし推奨されてない)ですし、また自前で全て用意することが最善であるようにも思えます(こちらこちら参照)。要望としては、メンテナンスに手間がかからない様パッケージシステムに頼りたい、できればX11を使わずにCocoa GUIで使いたいと考えます。今回はできるだけMacPortsを使ってX11に依存しないようインストールすることを試みました。

こちらこちらを参考にと考えましたが、パッケージのリビジョンが違うせいかそのままではうまく行きませんでした。pythonもスタンドアロンのバイナリでなくMacPortsでビルドします。tkinterで使用する予定はないので、"\$ sudo port install python26 +gcc44 +no_tkinter"でインストールします。"+gcc44"なのはなんとなくです(まったく根拠なし)。最初はgccまでビルドされますのでとても時間がかかります。終わりましたら"\$ sudo port install python_select"で"\$ sudo python_select python26"とします。次にnumpyをインストールします。これが問題で、"\$ sudo port install py26-numpy +gcc44"としてもビルドに失敗します。"\$ sudo port install py26-numpy @1.4.1 +gcc44"とバージョンを落としても変わりません。調べますと、現状ではATLASと組み合わせるとうまく行かない状況なようです。ATLASは使いたい気もしますが、ここは諦めて先に進むことにします("\$ sudo port install py26-numpy +gcc44 +no_atlas")。あとはscipyとipythonをインストールしてmatplotlibをインストールします。

$ sudo port install py26-scipy +gcc44
$ sudo port install py26-ipython
$ sudo port install py26-matplotlib +no_tkinter
取りあえずこれで全てビルドができました。matplotlibのビルドの最後に「matplotlibrcを書き換えろ」と出てきますので書き換えます。
# the default backend; one of GTK GTKAgg GTKCairo CocoaAgg FltkAgg
# MacOSX QtAgg Qt4Agg TkAgg WX WXAgg Agg Cairo GDK PS PDF SVG Template
# You can also deploy your own backend outside of matplotlib by
# referring to the module name (which must be in the PYTHONPATH) as
# 'module://my_backend'
# backend      : Agg
backend      : MacOSX

まだいろいろは試していませんが、簡単なスクリプトでは一応動作してくれています。

MacPortsを一旦削除

なんかこんがらがってきたような気がするので仕切りなおし。こちらを見ながら作業。

シェルもデーモンも使っていない(はず)なので、単に全部アンインストールして削除。

$ sudo port -f uninstall installed
$ sudo rm -rf /opt/local/

しまった、コンソールからMacPortsの再インストールどうしよう?

Pythonで型判定をする

よく忘れるのでメモ。

isinstance(obj,int)
isinstance(obj,long)
isinstance(obj,float)
isinstance(obj,basestring)
isinstance(obj,file)

OS XにCocoa Emacsをインストールした

Snow LeopardにはデフォルトでEmacsがインストールされていますが、コンソールでのみ動作しGUI付きでビルドされていません。やはりGUIを使いたいので別に用意することにします。Snow Leopardで動作するGUI付きEmacsにはCarbon EmacsとCocoa Emacsがあります。ここはCocoa Emacsをインストールすることにします。Cocoa Emacsにはバイナリパッケージもあるようですが、せっかくですので64bitバイナリ・インラインパッチ入りのバイナリを自分でビルドしてみることにします。

EmacsのソースはBazaarで管理されているそうなので、こちらを見ながらBazaarを使ってチェックアウトを試みてみたのですが、何故か全然落ちてきません。さっさと諦めまして、こちらを見ながらGitによるミラーからチェックアウトします。こちらからインラインパッチをダウンロードしてからソースコードにパッチ充てしてみましたが、微妙に不整合が出ます。自力で修正しようかと思いましたがちょっと面倒そう。即座に保留しまして、こちらを参考にCVSでチェックアウトします。CVSのリポジトリはメンテナンスされていない様で、ソースコードは大分古いようですが気にしないことにします。これにパッチを充てようとしますが一箇所だけ不整合が。

diff -p -N -r -x '*.orig' ../emacs-23.1.95/src/Makefile.in src/Makefile.in
*** ../emacs-23.1.95/src/Makefile.in    2010-03-29 04:08:24.000000000 +0900
--- src/Makefile.in     2010-04-06 22:38:39.000000000 +0900
*************** ns_appresdir=@ns_appresdir@/
*** 542,548 ****
  ns_appsrc=@ns_appsrc@
  /* Object files for NeXTstep */
  NS_OBJ= nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o \
!       fontset.o fringe.o image.o
  #endif  /* HAVE_NS */
  
  #ifdef HAVE_WINDOW_SYSTEM
--- 542,548 ----
  ns_appsrc=@ns_appsrc@
  /* Object files for NeXTstep */
  NS_OBJ= nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o \
!       fontset.o fringe.o image.o macim.o
  #endif  /* HAVE_NS */
  
  #ifdef HAVE_WINDOW_SYSTEM
これは簡単に直せます。
diff src/Makefile.in.orig src/Makefile.in 
545c545
<  fontset.o fringe.o image.o
---
>  fontset.o fringe.o image.o macim.o
583c583
<   nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o \
---
>   nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o macim.o \
1167a1168
> macim.o: macim.m lisp.h blockinput.h termhooks.h keyboard.h buffer.h $(config_h)
これで
$ ./configure --with-ns
$ make -j2
$ make install
したら無事にビルド完了。

できたnextstep/Emacs.appディレクトリ以下を/Applicationsフォルダにコピーでインストール終了…だと思います。まだ全然使ってないので。

水曜日, 9月 15, 2010

Snow Leopard Serverへsshで接続できるようにした

よく判りませんでしたが、多分サーバ管理sshを開始するだけ。

それだけだと一般ユーザには接続できなかったのですが、サーバ管理アカウントsshで許可するユーザをD&Dで登録するだけみたい。

デフォルトだとパスワード認証になってしまうので、後でどうにかする。

日曜日, 9月 12, 2010

OS XにEvernoteをインストール(アンインストール)した

Mac miniにEvernoteとDropboxをインストールした…のはいいのだけど、うっかり管理者アカウントで同期を取ってしまった。 Dropboxはアカウント情報を削除するだけで同期をやめて、あとは同期フォルダを削除するだけで良いようだけど、Evernoteの場合はどうなっているのかよく判らない。Spotlightでそれっぽいフォルダを探して削除するも、アプリを再起動すると前のデータが読み込まれてしまう。

検索するとこのようなものを発見。ようするに"~/Library/Application Support/Evernote/"以下を削除すればいいのだと思うけど、念のためにアプリケーション含めて全部削除してから再インストール。

rep2expackのインストール

MacPorts入れて新たにapache2,php5,mysqlインストールしてみたりしたのも、これをしたかったからに他なりません…結局MacPortsからインストールしたものは使いませんでしたが。

最初はこちらを参考にして作業を進めていました。OS標準に付いてくるソフトウェアのバージョンにあまり縛られたくないと思ったからですね。ですが、購入したMac mini serverに付きてきますSnow Leopard Serverにはapache2,php5,mysql,sqliteが付いてきますし、これらで不足なく使用できるうちは利用した方が良いと考えを改めました…途中で面倒になったからでもありますが。

実はここに書いたことより遥かにいろいろと無駄な試行錯誤をしているのですが、最終的に行なったことだけ書きます。まずは「サーバ管理」からapache2を起動します。/etc/apache2/httpd.confの中のphp関連の行を検索してコメントを外し、「サーバ管理」の"Web"を選択して、下の「サーバを開始」ボタンを押します。あとはこちらからOSX用のdmgパッケージををダウンロードし展開したファイルをすべてhome以下のSitesディレクトリに入れました。ディレクトリ名は単純にrep2としています。p2用に専用アカウントを用意して運用する向きもあるようですが、自分はユーザ個別に用意することにします。ドキュメントにありますように、必要なデータ保存用ディレクトリ(data.cache)を用意しパーミッションを適切に設定します。基本的にはこれでいいはずです。さらに、自分はimagecache2が使いたかったのでMySQLの設定を進めました。こちらを参考にさせて頂きながら作業を進め、どうにかMySQLを動かすことができました。が、考えますとOSXにはSQLiteも用意されていますし、こちらを見ますとずっと簡単そう。何しろconf/conf_ic2.inc.phpのDSNに "sqlite:///./cache/imgcache.sqlite" と書いてインストーラ動かすだけですから。

無駄に時間がかかりましたが、動いてしまえば実に快適です。これまでCubeで運用していた頃と比べるまでもなく動作が速いです。もっと早くこうしておけば良かったのだけど…実はMac関連ではこの辺までが今週の月曜日までの事。それから今日までまたビタ一文進んでない。

MacPortsでapache2,php5,mysqlをインストールしたり削除したり

なんでそんな無駄なことをしたのかは置いておいて。 一連の作業はこちらを参考にさせて頂いた訳で。MacPortsでの一連のパッケージによるインストールはそれなりに時間はかかるものの、実に滞りなく進められました。 残念ながら、インストールを終えて設定作業を進めているうちにこれらがなくても支障がないことに気付いてしまいましたので、すべてアンインストールすることに。
$ port installed
でインストール済みパッケージのリストを確認してから、
$ sudo port uninstall パッケージ名
で関連するパッケージを依存関係に注意しながらアンインストール。

MacPortsを導入してみた

以前(Cubeを使い倒そうとか考えていた頃)にはFinkを導入していましたが、今回はMacPortsを導入してみました。Finkにしていた理由は単に自分がDebian慣れしていたからです。長いものには巻かれるのがポリシーです。

ここいらへんを参考にさせて貰いながら作業したわけですが、インストーラの通りに進めて問題ありませんでした。Xcode toolsが入っていないので先にこれをインストールする必要がありましたが、Mac mini付属のインストールDVDにインストーラが同梱されていました。

最近のこの手のインストーラは本当によくできていますね。昔はDebian位しかマトモに機能していない感じでしたのでDebianべったりな生活になってしまっていましたが、これで新しい生活に踏み出せそうです。

木曜日, 9月 09, 2010

梨が届いた

毎年恒例の梨が届いた。

いつもお盆休みで帰省した際に実家の近くの梨園で梨を予約しています。自分は豊水が好きなので、毎年豊水ばかり買っています。豊水の季節は毎年お盆明けの8/20〜8月末くらいだと思うのですが、今年は春の天候が不順だったせいか収穫が大幅に遅れると聞いていました。さすがに9月あたまには届くと思っていたのですが、今日になってやっと届いたワケですね。

発育が悪かった上に夏はエラく暑かったので相当甘くなるのではないかと思っていたのですが、予想よりかなり甘い。正直舌に残るような甘さは梨として適切ではない気がします。少なくとも豊水の味ではないです。

来年に期待しましょう。

火曜日, 9月 07, 2010

新しいMacを買った

結論から先に言うと、本質的でない部分でエラい目に会ったわけです。でも頑張って元を取る!

買ったのはお盆前ですから約1ヶ月前ですね。新型miniです。帰省する前には実戦配備して実家から遊ぼうと企てていたのですが、例の如く時間がなくて敢え無く断念。

時間がなかったのでシステム起動できる程度まで設定したのちしばらく放置していたのですが、とある理由でTigerしか入っていないG4 Cubeの後継を用意せねばならなくなり、先週の木曜夜から移行作業を開始。まずはiTunesのデータを移行しようとCube側をFireWire ターゲットディスクモードで起動してminiにつなぎ、rsyncで

 $ rsync -avz /Volumes/Mac\ OS\ X/Users/admin/Music/iTunes/ ~/Music/iTunes/
こんな感じでコピー。CubeのHDDが遅いせいか全然進まないので、そのまま放置して就寝。朝起きると無事終了している様子。時間がないのでそのまま放置して出勤。帰宅して先に進めようと思ったら…Cubeが全然反応しない orz いろいろ試みてみるも全然応答しないし再起動もしない。これはおかしいと思い、バラして取り出したHDDをアダプタで直接つないでみると…異音を発している模様。多分ハード的に壊れていると。真夏の熱い中で動かしっぱなしにしていたのがいけなかったのだろう orz 取り敢えず金曜日は不貞寝。

CubeのHDDに入っていたファイルのうち一番大事なiTunesデータだけがたぶん回収できていて、それ以外は全滅な状態だけど惜しいと思えるのは、長年貯めてきた2ちゃんねるのログ位の物なので良しとすることに。

しかし、ちゃんとしたレスポンス(!)で動くOS X環境というのは実に悪く無いですね。今までのWindows環境からの完全移行も視野に入れて作業を進めるつもり。

金曜日, 9月 03, 2010

AutoCADなしでDWGファイルを扱う

仕事で使用する図面データでDWG形式のファイルを受け取った。今自分が使用している職場のPCには前の使用者が使っていたAutoCADがインストールされているので使おうと思えば使える(ほとんど動かしたことがないので使えないに等しいけど)。ただ、何処でも(自宅でとか)AutoCADが使えるわけでもないので、できれば代替手段が欲しいところ。ということで調べてみた。

UbuntuにはQCADというCADソフトがあり、DXFファイルを扱うことはできるらしい。DWGファイルはいろいろ鬼門なようで、ちゃんと扱えるソフトはなさそう。Windowsで調べてみると、A9CADというソフトがあり、受け取ったファイルが問題なく使えた。また、A9ConverterというDXFとDWGを相互変換するソフトもあり、DWGファイルをDXFに変換することができる。件のDWGファイルをDXFに変換した後にQCADで読み込んでみると、特に問題なく扱うことができている。取りあえず、これ位できれば良しとしておく。

MTSファイルの変換をする

仕事でSONY HDR-CX550Vというビデオカメラを使って撮影をした(ホントは人任せ)。この手のHDビデオカメラの記録フォーマットはAVCHDというものであることはモチロン知っていたけれど、触ったことはないので調べてみた。目標はなるべくお金と手間をかけずに、

  1. PowerPointでポータブル(デフォルトにないコーデックを使わず)に表示できる
  2. できれば編集できる
こと。

まずコーデックは無難にWMV8当たりにしておく…Windows以外では問題大有りだけど、どうせWindows以外でPowerPoint上の動画再生について想定しても無難な解はないと思う。ここを参考にTMPGEncFFDSHOW + Haali Media Splitterを試してみたり、代わりにAVIUTLで試みてみたりしたけれど、変換結果の再生が途中でおかしくなる。ということで、編集&変換は一時棚上げ。

お手軽に変換だけする方法はと調べますとXMedia Recodeなるものを発見。これはとても使い勝手が良いし、明らかな破綻も見られない。とても良いものを見つけた。WMVに変換するついでにiPhone用にH264への変換もしておいた。

Gmailの優先トレイを使ってみる

Gmail使ってて優先トレイ ベータ版なるもののSuggestが目に留まるも面倒なので放置していたのだけど、今日は今朝から眠いせいか魔が差してついOnにしてみてしまった。

ようするにベイジアンフィルタのスパムフィルタ以外への応用なのだということなのだろう。正直これが便利なのかはっきり判らない、なんとも言えない不安感が漂う…のはメールに埋もれて死にそうになるような生活をしていないからなのだろうか。かつて若かった頃は1日に受け取る(スパム以外の)メールが数百通に上って、メールを裁くだけで相当の時間を費やしていたけど、最近は必要最小限のメールに留める様に抑えてしまったからね。

しばらくはこれまでのタグ付け・スター付け整理と併用して使ってみる。

木曜日, 9月 02, 2010

お仕事

高周波信号測定系のブロック図とかを描いたり。

全然電子回路とか解らん人間に描けというのも結構アレな話だと思う。当然自分で組んだ回路じゃないし、意味が全然解らないので調べながら描いてると一日が終わった。

何で描くか?が最初の悩み所だったのだけど、Diaで描くことにしてみた。今後同じ作業が何度か繰り返すことになるので、手を抜かず真面目に下準備を行う。いろいろオブジェクトが足らないので、片っ端からそれっぽい絵を作成しておいた。

水曜日, 9月 01, 2010

PowerPoint用テンプレート

センスもないわぐうたらだわで、今まであんまりプレゼン資料のデザインにこだわりを見せない様にしていたわけですが(中途半端にこだわると却って微妙になりがちなので、殆どデフォルトのまま)、こだわるとかでなく普段から使いまわす適当な様式を持っていた方が効率的でいいかなと。

でちょっと探してみてこのサイトに行き着いたわけですね。

こう、ぐっとと心をつかまれたわけですよ。特ににゃんぷれーととかにゃんぷれーととかにゃんぷれーととかに。もう、ぜひ是非に使わさせて頂こうかと思ったわけです。感謝!

なつやすみおわり

あんまり休んでませんよ、お盆の帰省以外は。

ちょっと面倒なお仕事の目処が付いたので、ここいらでいろいろ再起動しようかなと。9月だし。

いろいろ書こうと思っていたことがあるけれど、日付を思い出しながら書くのが面倒なので、思い立った時に書いていこうかと。

水曜日, 6月 23, 2010

Ubuntu 10.04でpygraphvizを使ってみた

仕事で大量の通信記録データがあって、ちょっとした解析をしなければならないのでpygraphvizを入れてみました。 Ubuntu10.04でパッケージが見つかったのでインストールしてみたのですが、
/usr/lib/pymodules/python2.6/pygraphviz/agraph.py:1138: DeprecationWarning: os.popen3 is deprecated.  Use the subprocess module.
  child_stdin,child_stdout,child_stderr=os.popen3(cmd, 'b')
という警告が。面倒だったので、適当なパッチで逃げておきました。
1135d1134
<         import subprocess
1139,1140c1138
<         # child_stdin,child_stdout,child_stderr=os.popen3(cmd, 'b')
<         child_stdin,child_stdout,child_stderr=subprocess.Popen(cmd, 'b')
---
>         child_stdin,child_stdout,child_stderr=os.popen3(cmd, 'b')
どうにか黙って動いている模様。

月曜日, 6月 21, 2010

Ubuntu 10.04のemacs-snapshotにSLIMEをインストールしてみた

Stumpwmが自分的Common Lispキラーアプリケーションと認識して、以前にもちょっと使ってみていたSLIMEをまた入れてみようと。Synapticsからインストールすれば良いだけなのだけど。

こちらにあるママにやってみたけれど、

File error: Cannot open load file, w3m-load
と出て動かない。SLIMEではなくW3Mの問題なのでどうでもいいといえばいいのだけど、調べると現行の安定版はemacs23以降に対応していないらしいこちらにあるようにCVSからソースをダウンロードして"~/.emacs.d/lisp/"以下にインストール。
(setq load-path (cons (expand-file-name "~/.emacs.d/lisp/emacs-w3m/share/emacs/site-lisp/w3m/") load-path))
とインストール先が見えるようにしてあげることで動くようになった。

金曜日, 6月 18, 2010

matplotlibで軸の数値の表示形式を変更する

matplotlibでグラフを描いていて、軸の数値が大きい値になったときの表記が以前から気になっていました。グラフの表示定義域の最小値を軸の肩に表記して、軸に表記する数値はその最小値からの差分みたいな書き方だと、実際の値が自分には判りにくくてどうもいけません。(例のグラフを貼ろうかと思いましたがちょっと今はいけません…そのうち貼ります)

これは例えば以下のようにすることで修正できます。

ax = pylab.subplot(1,1,1)
pylab.imshow(data)
ax.yaxis.set_major_formatter(matplotlib.ticker.FormatStrFormatter('%.1f'))
忘れないうちにとりあえずメモ。

月曜日, 6月 14, 2010

Sennheiser HD414を入手した

先月にお亡くなりになったSennheiser博士に哀悼の意を表して「ヘッドホン買おうかなー」とか言っていたら悪友が「じゃあHD414でも買えばー?」と言ってきて、内心はHD650でも買おうかなという気分だったんですが、ついうっかりHD414を本気で探すことに。 ヤフオクではちょっと高くて買えそうになかったのですが、eBayで見ると丁度お誂え向きの出品が。BBCの中の人が最近までスタジオで使っていた初期版があったので根性で落札。送料込みで1万円弱でした。

品物が届くまでにSennheiser/92595(標準プラグ・ミニピンプラグ変換ケーブルアダプタ)と交換用のイヤパッドを準備して待ちつつ、本日品物が到着。 結構古いもののはずなのに全然問題なし。思いの他気持ちよく鳴ります。

いい買い物でした。

月曜日, 6月 07, 2010

Ubuntu環境を整備してみた

昔はSUN OSやLinuxをインストールするとユーザ環境を整備するのにあれこれ勤しんでいたものですが、最近ではDistroで最初から用意された環境がそれなりに良くできているので、それに慣れた方が早いと達観しております。

それがどうしたのかと申しますと、以前から気になっていた「タイル型WM」というものを使ってみようと魔が差したからに他なりません。といってもいろいろ種類があるのですが、ここは以前から気になっていたStumpWMを使ってみることにしました。選択理由は、Ubuntu(Debian)でパッケージが提供されていたからと、あとはCommon Lispだからというところです。一言で言えば楽できてミーハーだからという、あまり意味のある理由ではありません。所詮自己満足ですのでなんでもいいと思います。

インストール自体はこちらを参考に、設定は大体こちらを参考にしました。システムトレイは自分もstalonetrayを採用致しましたが、ただこのままだと設定の再読み込みの際に二重起動になってしまうので、こちらにありましたアイデアを使わせて頂いて、psコマンドでプロセスを確認したら起動しないように致しました。ちなみにこちらは素晴らしいアイデアが多数披露されていて大変参考になります。さらに、自分も試してみようとそのままコードを実行してみようとしたらseriesパッケージを要求され、自分でインストールを試みるも、今までマトモにASDF-Installが使えたことがなかったので認証とかエラい苦労したとか、いろいろあったのですが。これでこちらとか参考にしながらもうちょっとCommon Lisp使ってみようと思えればいいのですが。その他の詳しい使い方はマニュアルを眺めました。

あとは適当にいくつかappletを動かしてみたり、dzen2を動かしてみたり(本当に試しにやってみただけ)、キーバインドを追加・修正してみたり、FirefoxにVimperatorを入れてみたりしたら週末が終わってしまいました。

ついでに今まで何度も挫けたzshへの移行とか昔は使っていたscreenの再設定とか。昔の設定ファイルは見つからないので(ちゃんと探せばあると思うけど)ここここをそのまま使わせて頂きました。たぶん自分はあまり細かいことは必要にならないと思いますが、そのうち時間を見つけて勉強…できるといいなぁ。

火曜日, 5月 11, 2010

Windows 2008 x64にWindows Media Player Firefox Pluginをインストールした

iPhoneアプリkikeru radioが知らない間にOttava対応が進んでて、曲目を確認したりtwitterに流せたりと便利になっているこに今頃気が付きました。

そういえば最近自宅でOttava聴いてないなと思ったのですが、以前に聴こうと思ってFirefoxからアクセスしたらWindows Media Player Firefox Pluginのインストールを要求されて、インストールしようとしたら"Windows serverには対応してないぜよ"と撥ねられたことを思い出したのでした。

Internet Radio Playerをインストールするのも考えました(以前これを使ってました)が、ここはどうにかWindows Media Player Firefox Pluginのインストールができないかと調べてみたところここを発見。wmpfirefoxplugin.exeからffplugin.msiを取り出す作業にはLhazを使いました。Windows serverでもインストール可能にするにはOrcaというWindows Installerを編集するツールを使うのだそうですが、これのインストール方法はこちらがわかり易かったです。

手順どおりに編集しますと確かにインストールが可能になり、無事にOttavaが聴けるようになりました。

月曜日, 5月 10, 2010

Windows XPで自動ログインをする

自分で使っているWindows機では自動ログインなんて本来しませんよ。年寄りの自分は昔からコンピュータはちゃんとログインして使うものと体に染み付いてますので、自動ログインなんて逆に落ち着きません。

ですが、実験用Windows機をリモートで使用するのに、再起動時に自動的にログインされないと正常動作してくれないソフトや機械がいくつかあったりするので、自動ログイン設定をする必要が出てきました。実験用で大して機密性の高いデータなどが入っていないことと、プライベートセグメントだけで使っているので問題はないかなと。

設定は、昔母親のPCに施したきりで全然覚えていないので調べます。 そうそう、

control userpasswords2
こうですね。

twitterアカウントの変更をした

全然使っていないtwitterアカウントですが、なんとなく気分でアカウントの削除を致しました。 でもやっぱりなんか寂しい気もしたので、別アカウント名で取り直しました。

だったらアカウント名を変更すれば良かっただけではないか、と思いましたが後の祭りです。 微妙に日本語間違っている気もしますが、気にしない方向で。

木曜日, 5月 06, 2010

Bluetoothのトラヒックを解析したい

仕事でFTPプロファイルでファイル転送をしている時のBluetoothでのトラヒックを調べる必要があります。最低データレートだけでも判るといいのです。

WiresharkがBluetoothに対応しているということでこれでフレームをキャプチャできるのかと思ったのですが、Wireshark自体にはBluetoothフレームキャプチャできるわけではないようです。で、調べますとhcidumpというツールでBluetoothフレームキャプチャができるようです。ですが、残念ながらlocalインターフェースのトラヒックだけが解るだけです。さらに残念ながらbluzにFTPプロファイルがないようですので、Linuxでbluz+hcidumpでトラヒックを見ることはできません。

商用の解析ソフトとして有名なFrontlineを使うというのが正攻法ですが、少なくとも今はお金(結構高い)がありません。少し調べますと、市販の安価なBluetoothドングルでキャプチャする方法を見つけましたが、合法的な手段には見えません。 だれか良い方法をご存知でしたら、お知らせ頂けないかなーと。

gcc 4.5が使えるようにしてみた

えぇ当然C++でlambdaを使ってみたかったのですよ。
自分でビルドすればいいのですが、面倒だったのでMinGWの奴を入れようかと思っていたらこんな所に素晴らしいものが!
で早速インストールして-std=gnu++0xオプション付けてコンパイル…あれ?実行時エラーが出ますよ?

$ g++ -Wall -std=gnu++0x -Wl,-enable-auto-import -static-libgcc -static-libstdc++ -o test test.cc

別にstatic linkでいいので(むしろこの方が好都合)これで良いみたい。

よし、これで先に進もう!

水曜日, 5月 05, 2010

新幹線で食べ過ぎた

朝からあまり食べていなかったので、食欲リミッタ外して食料調達したら3000円以上使ってしまった…馬鹿だ。おやつ食べる前におなか一杯。もうやらない。

でも新幹線の中で熱々な麺料理(鶏肉のフォー)を食べれたのは個人的に快挙だった。

帰りに明日の朝ごはん用のヨーグルトを買ったら、198円になっていたはずがレジを通したら248円になっていた…丁度値札を変更していた最中だったらしい。微妙に損した気分。

土曜日, 5月 01, 2010

iPhoneでIEEE 802.1xを使ってみた

仕事とちょっと絡みでiPhoneでIEEE 802.1xを使った無線LAN接続を試してみました。本当の目的はiPhone構成ユーティリティを使って設定をいじることなので、本当に副次的な成果です。

基本的なことは検索すればわかると思いますが(ここが判りやすかったです)、iPhone構成ユーティリティで構成プロファイルを新規作成する際に最低限入力する項目は一般Wi-Fi資格情報の3つのタグです。一般タグに記載する固有名情報は、他者に配布するのでなければ識別可能で一意な内容であればなんでもよさそうです。Wi-Fiについては認証方式とユーザ名を適切に記載すればよいです。資格情報は必要な証明書を登録すればよいのですが、PC(Mac)側にインストールする際にエクスポート,バックアップを可能にするを有効にしておかないと登録できません。

Wi-Fiの認証方式の所で試行錯誤をすればそのうち動くようになります。自分も数回構成プロファイルを作り直しました。

ようやっとAdvanced formatが使えるようになった

3週間も前に買ったWD20EARSがようやっとどうにかなりました。

OSが対応しているかどうかと同時にSATAコントローラやデバイスドライバも対応している必要があるのですが、SUN Ultra 40 M2のWindows Server 2008用ドライバは残念ながら配布されていません。ですが使用されているチップセットはnVidia nForce MPC55s Proと判っていますので、同じチップセットを使用している他社用ドライバでもどうにかなるだろうと、ここから一番新しいドライバをダウンロードしてインストールしてみますと無事動作、簡易フォーマットもちゃんど終了します。

一晩フルフォーマットをかけてから念の為にchkdsk /B F:でフルセクタチェックすると不良セクタなしの結果。

これで(たぶん)安心して使えそうです。

水曜日, 4月 28, 2010

今頃になってEvernoteを活用している人の気持ちが判りかけてきたかもしれない

えぇ、以前からインストールはしていましたし、気が向いたらWebクリップしてたりしてましたよ。でも、今日現在でもノート数は100に達していません。

最初はサーバ側にデータを置いておけるリッチテキストエディタみたいな認識でした。でも残念ながら、箇条書き+インデントとかした次の瞬間にレイアウトの壊れたデータが保存されているのを目の当たりにして愕然とするわけですよ。これならGoogleドキュメントの方がいいかなと(実際結構使っています)。それで暫く使う気が起きなかったのですが、そのうちにWebクリップする手段に使うと便利かもしれないことに思い至るのです。ブックマークだと上手く管理しないと必要な情報を見つけるのが困難だったり(結局Googleを使うのが良いという結論に達する)、リンク先が消滅していて参照したかった情報が得られなかったり(でarchive.orgやGoogleのキャッシュを参照することになる)で散々な状態になりがちですが、必要な情報をまるまるスナップショットに録っておいて検索性の良い状態におけば、それはそれで便利かなと。ところが、例えばPythonコーディングにとても参考になるサンプルコードを見つけて、そのコードをクリップしようとWeb clipperを使って保存すると、何故かインデントが全部落ちてしまい全然読めなくなってしまったりするわけです。PDFとかも貼り付けられて検索もできるけど、はっきりいって読みにくいし、これならGoogleデスクトップの方が良い様に思えるのです。検索性は良いのかもしれないけど、情報を手軽に蓄える手段としては微妙な気分でいたわけですね。

ところが最近(10日位前)になって、少ないながらも書き込んだデータの検索をしてみると、確かに多くの人の言うように情報の一覧性がとても良い様に見えます。そこで、これまで殆どタグ付けをしていなかったので、試しにすべてのノートにタグ付けをしてみる(大して書き込んでないので2~30分程度の作業で終了)と、もともと文字情報のない図や写真などのデータに対しても自由にメタデータ(タグ)を付加することができて、ファイルをそのままフォルダに入れておくよりも利便性が著しく向上することにようやっと気が付いたわけです。

それからは、記録に留めようと思うことは取りあえずEvernoteに書き込むことをまず考えます。仕事で参照するPDFとかもガシガシ入れていきたいと思うようになったわけです。でもそうするとPremiumにしないとあっという間に月間転送量上限に達してしまいます。今契約するかどうか見事に瀬戸際にいます。最近は仕事でUbuntuも結構使っているのですが、Linux用のクライアントも真剣に欲しいです。仕方ないので、Webインターフェースで使っています。結構使えます。その他の手段を選択するより全然マシに思えてしまう!というところまで達しています。ここ数日でノート数が劇的に増えてきました。まだ100超えてませんが(たぶん2~3日で超えます)。

なるほど皆さんが便利だという訳です。こんなこと書いていたらPremiumにするしかない気分になってきました。なんかもうお金払ってきますわ /~

日曜日, 4月 25, 2010

LZMAなtarファイルの展開をする

最近tar.lzmaなファイルが見られるようになってきましたが、幸い(?)にして全然触らないでいました。が、いざファイルを手にしたときにどうしたものかと考えました。lzmaを使えばいいのですが、最近ならtarコマンドでどうにかなるはず。

で、--helpを見ると--lzmaオプションを付ければいいと書いてあります。ですので、

$ tar --lzma xvf neko.tar.lzma
とすればいいかと試してみると…ダメ orz

しばし悩んだけど、

$ tar xvf neko.tar.lzma --lzma
これなら大丈夫。

よく調べたら、こちらがとても詳しかった。

金曜日, 4月 23, 2010

WD20EARSを買った

買ったのは先々週の土曜日なのですが、これがなかなかの曲者。

自宅で使用しているOSはWindows Server 2008 x64で、自分の認識ではWindows Server 2008Advanced Formatに対応していると思っていたのですが、何度やっても何故かフォーマットが完走しません。Data Lifeguard Diagnostic for Windowsもかけてみていますが、何も問題は報告されませんので初期不良ということもなさそうです。

仕方ないので、所有している唯一のWindows 7マシンであるAtom搭載のノートPCにUSBで外付けしてフォーマット。こちらはエラく時間がかかりますが(たぶん30時間程度)問題なく完走します。で、そのままデスクトップに載せますとちゃんと認識しますが、ここでchkdskをかけると全容量の半分が不良セクタと認識されてしまいます。これをまたWindows 7マシンにUSBで繋ぎなおしてchkdskをかけ直すと、大量にあった不良セクタがすべてなくなります。

そんなこんなで2週間経ちましたが、このままでは現デスクトップでは使えません。どうしたものだか orz

木曜日, 4月 22, 2010

Opteron 2387を買った

自宅ではSUN Ultra 40 M2とかいう機械を使っているのですが、できればもう少し性能があれば…と思っていました。対応ソケットはSocket Fで対応CPUは2000番Opteronとなっています。現在刺さっているCPUは2214ですが、同じSocket Fであれば違うSteppingでも動いたりしないだろうか…と妄想を抱き調べてみましたが、Webで検索した限りでは何も出てきません。おそらくはソケットだけ同じでも、バスの配線やファームウェアが対応しないとダメだろうと思いつつ、考えていても結論は出ないので、見切り発車でオークションに出品されていた中古CPUを落札。BIOSアップデートなどいろいろしてみたしたが動くことはなく、結局元に戻しました。

余ったCPUどうしよう…もう1台組んじゃおうか?

火曜日, 4月 20, 2010

「安全な取り外しができません」の件

だいたいはどのプロセスのせいかはわかるのだけど、時々判らなくて困ることがある。

どうすればいいのか知識では知っていたけど、初めてProcess Explolerを使ってみようかと。今までも使おうとすると何故か既に解決しているので。[Find] ⇒ [Find Handle or DLL...]を選択して、アンマウントしたいディスク番号で検索。

…あれ、また何もしてないのに既に解決しているし。

金曜日, 4月 16, 2010

仕事中に思ったこと

元々気にはなっていたのだけど、最近になって問題点がはっきりしてきた。

仕事で必要なデータは1箇所に集めて検索可能な状態で置かないと、これ以上仕事の効率は上げられない。

マジメに早急に対応策を講じよう。

月曜日, 4月 12, 2010

pymacs, auto-complete.el, pysmellを入れてみた

良く判っていませんが、便利そうな匂いがしていたので入れてみることに。

本当に良く判っていないのでこちらに書かれていたをそのまんま実行。

一つ躓いたのが、先にpysmellだけ入れて動作確認を簡単に取ってみたのですが、その後にauto-complete.elやらを入れてみたところ、何故かpysmellがUnicodeEncodeErrorを吐いています。良く判らないので、試しにPYSMELLTAGSを一旦消してから

$ LANG=ja_JP.utf-8 pysmell .
としてみたところ無事に動くようになりました。

文字コード周りは本当に良く判らないのでいつも引っ掛かります。

[追記]
どうも何か勘違いしていた模様。さっきは何故かちゃんと動いていたのに。

"UnicodeEncodeError: 'ascii' codec can't encode characters in ...."というエラーに対しては、sitecustomize.pyでデフォルトのエンコーディングを指定するのが正しい対処らしいです。

しかし、さっきは結構調子良く動いていた感じだったのに、PYSMELLTAGS作り直したらエラく重たくなってしまった。

[さらに追記]
PYSMELLTAGS作るときに読み込むファイルを必要最小限に絞れば、どうにか使えそう。 自分はnumpyとmatplotlibが使えれば当面は良いので、こんな感じに。

$ pysmell /usr/lib/python2.6/*.py /usr/share/pyshared/{numpy,matplotlib}/ -x site-packages test -o ~/PYSMELLTAGS.stdlib

UbuntuでPythonのeasy_installを使う

なるほど、python-setuptoolsをインストールするだけですね。

木曜日, 4月 08, 2010

google-code-prettifyを使ってみた

とりあえず使ってみたかったので、お手軽にこちらのお世話になってみた。

#!/usr/bin/env python

import sys

def main(argv):
    import optparse

    parser = optparse.OptionParser(usage="%prog ....", version="%prog 0.1")
    opts,args = parser.parse_args()

    if len(args)!=0:
        parser.print_help()
        sys.exit(1)

    try:
        print 'hello, world!'
    except IOError:
        sys.stderr.write("\nbreak.\n\n")
        sys.exit(1)

try:
    if __name__ == '__main__': sys.exit(main(sys.argv))
except KeyboardInterrupt:
    sys.stderr.write("\nkeyboard interrupted.\n\n")
    sys.exit(1)
(display "hello, world!")

どうだろ?

水曜日, 4月 07, 2010

Bloggerでの公開方法の変更をした

今日は会社の歓迎会で飲んで帰ってきましたー、酔ってて何もできませんー。

いきなりですが、利用しているBloggerでの記事公開方法の変更を致しました。先日から「FTP公開のサポートを終了します」というアナウンスがあって、そのうちやっとかなければーと今日に至ったわけですが、今日いきなりカスタムドメインでの公開に踏み切りました。使用したドメインは2年位前にシャレで取得したまま未使用だったドメインを使用しました…本来ならもっと早く使うつもりだったのですが、いろいろ考えていたら手が止まっていました。

ということで、これまで使用していたhttp://noranekosan.sakura.ne.jp/weblog/からhttp://weblog.nekonya.com/への引越しです。

まぁたぶんこんなとこ見てる人はいないと思いますので、特に問題ないと思いますが。

卓上用USB延長ケーブルを買った

先日デスクトップPCで使っていたワイヤレスマウスのドングルにうっかり足をぶつけて圧し折ってしまいました。

幸い少し曲がっただけで動作に問題はなさそうなのですが、代わりのドングルが欲しいとメーカに問い合わせると「個別でお売りできません」とのお返事。たぶん認証するためにそれぞれにIDがふられているのだけど、同じIDのドングルを作るのはしんどいのだろうと推測。そのまま触らずに使えば問題ないのだけど、足にぶつけない位置のUSBポートに挿すと今度はマウスの反応が急に悪くなってしまいます。まぁ、それもあって足をぶつける危険がある場所に挿していたのですが。

それならばと延長ケーブルに挿せばちょっと触っても折れる心配は少なそうであるかなと物色してみたらこれを発見。使用しているPCはスチールケースなので磁石が付けられて好都合だと思い購入。なかなか良い感じ。最初からこうできればなぁ。

GNU emacs 23.1をwindowsで使うことにした

実は先月の中旬の実家に帰省する直前になって、自宅デスクトップPCの起動HDDが壊れてしまって、落ち込みつつも帰宅次第すぐにHDDを換装して復旧していましたのです。時間があまりないので未だにぼちぼちとソフトのインストールをしているのですが、せっかくなのでいろいろ試してみようと。そんなわけででGNU Emacs 23.1をWindowsで動かしてみようかと思ったのです。

バイナリはここからダウンロードできて、解凍して.emacs/init.elを用意するだけなのですが、残念ながら日本語入力がLeimを使うかインラインできないIME入力を使う、という感じで微妙なわけですね。でこれを解決するにはパッチを当てて自分でビルドすることになると。すでにコンパイルに必要なMinGW環境はインストール済みですので、気合と画像関連のライブラリさえインストールすれば自分でビルドするのは問題ないのですが、やっぱり忙しくて時間が取れません。どこかにパッチあて済みバイナリは…と探すと、ここいら辺で発見。ありがたい。

で早速公式バイナリパッケージに上書きして動かすと…ちゃんと動きますが、表示がモノクロでがっかり。さらに調べますと、ここにありますようにここから必要な画像処理用DLLをダウンロードして入れればちゃんとカラーに。

後はここを見ながらIMEを使うように.emacs.d/init.elを設定。

火曜日, 4月 06, 2010

OSごとに異なる動作をするMakefileを書く

前に書いていたのに思い出せない。

ifeq (\$(OS),Windows_NT)
# for Windows
.....
else
UNAME = \${shell uname}
ifeq (\$(UNAME),Linux)
# for Linux
.....
endif
endif

こんな感じ?

木曜日, 4月 01, 2010

例の日

なんか何処も急に重たくなった様な…とか思っていたら、そういえばいつもより平均2割くらいクォリティが高くなってる日だっけ。

水曜日, 3月 31, 2010

PS3のファームウェアアップデートした

Linux&Cell使いたさに買ったPS3ですが、忙しさとHDCP対応のHDMI付きモニタ未購入でずっと箱に仕舞いっ放しでいたところ、なんか悲しいお知らせが来ていたので、四月になる直前に慌てて3.15までアップデートしました。これでもうアップデートしないつもり。

それよりモニタ買えよと。

少しずつ復帰

えーと、なんかずーっと忙しい状況が続いて、もう少ししたらもうちょっとだけましになるとか希望を抱きつつも裏切られ続け、周りを見回しては「まぁ他の人に比べたらマシなんだよな」と現状を確認する日々が続きましたが本質的には何も改善することなく、来年度はさらに厳しい状況が待っていることが想像されて、抜本的な解決の道を少しだけ探りつつも最後の一歩が踏み出せずにいたりして、やっぱり悶々とした日々が続くのであります。

まぁしばらく何も書かなかったのは、ちょっと何か書くと職場の短期でお手伝い頂いていた助っ人さんにいろいろバレてしまいそうだった、というのもあるのですが。

春ですし、前向きにいろいろちょっと動き始めましょうか。

日曜日, 3月 07, 2010

Gmailの受信トレイに残っていたメールをアーカイブした

ずーっと忙しくてなかなか投稿できない今日この頃。

プライベートのメールはほぼ完全にGmailに移ってだいぶ経っているのですが、お恥ずかしながら今まで一度もアーカイブをしていなかったのですね。仕事でもほぼ全てのメールをInboxに入れっぱなしで、必要なメールは検索して見つけると。特定のカテゴリによる分類が必要であるならタグを付ける。これがGmailでは正しい使い方だと思っていたのですが、よく考えれば受信トレイを空にする為にアーカイブがある訳であるし、前件検索するならすべてのメールから検索すれば良い訳だし。

という訳で、今日受信トレイの中身を返信する必要のあるスレッドを残して全部アーカイブしました。もっと早くすればよかったかな。すっきり。

日曜日, 1月 24, 2010

金曜日, 1月 22, 2010

Firefoxも3.6にしてみた

Firefoxも3.6が出てきたのでupdateしてみた。自宅のデスクトップ(Windows Server 2008 x64 Edition)では3.5が不安定なのをどうにかしたいという一心で。

Scrollbar anywhereが使えないのが困り所かと一瞬思ったけど、代わりのアドオン(Grab and Drag)が対応していて、設定を詰めたら大体同じ様な感じで使えるようになったので。とりあえず問題なし。安定したかどうかは暫く使ってみないと判らないし。

Evernote 3.5β update

現在、Evernote日本語版トップページのプレビューサイトとか公式ブログTwitterアカウント絶賛話題沸騰中な感じですが、ヲイラ的にはこっちが大ニュース、3.5βが3.5.0.862から3.5.0.1258にupdateされてます!それの何が嬉しいかって、今まで3.5βが動かせなかったWindows7なVAIO type Pで動作できる様になったからですよ!

3.1.0.1225なら動かせたんですが、正直そんなの使うくらいならWebインターフェースで使ってた方が遥かにマシな気分でした。これでヲイラのtype PはポケットUbuntuマシン&Evernoteマシンとして活用できます!

…本当にデュアルブートで使い物になると思っているの?とか訊いちゃダメです! ><;