2009年12月20日日曜日

cygwin上でX起動時のクリップボード動作の問題(その2)

以前の日記にcygwinでX起動時のクリップボードの動作がおかしい問題と
その解決方を書きましたが、別のフリーソフトとの相性問題も絡んでいたようです。
AltIMEというキーバインド変更ツールを利用しているのですが、
そのツールのオプション機能の1つに「クリップボード履歴」というものがあります。
この機能をOFFにすると、X => Windows の向きでのコピー動作が
改善したように思います。
以前は、emacs を使っていると、M-wやC-kなどクリップボードへ
コピーが発生する操作を行うと数秒待たされてしまうような
症状が出ていたのですが、AltIMEのクリップボード履歴をOFFに
することでスムーズに動作するようになりました!

不思議なのは、何のタイミングでこの相性問題が顕在化したのか、
という点です。AltIMEのクリップボード履歴はずっと昔からONのままで、
emacsとの競合もなく普通に使えていたはずなのですが・・・。

似た症状で悩んでいる方はwindows側のクリップボード関連の
ツールとの相性問題を疑ってみるのも一考かと。

2009年12月4日金曜日

リンクエラーの解決方法: undefined reference to `__gxx_personality_v0'

リンクエラーの解決方法: undefined reference to `__gxx_personality_v0'

gcc で C++ ソースをコンパイルしたとき上記のリンクエラーが発生することがあります。この関数はstack unwinding tableで利用するようです(例外関係の処理)。
このリンクエラーはlibstdc++(もしくは libsupc++:STLを含まない)をリンクすることで解決できます。

別のの解決法として、例外を使っていないのであれば、コンパイル時に "-fno-exceptions" オプションを指定することでも解決可能です。

参考:

2009年12月1日火曜日

インテル グラフィックスメディアアクセラレーター 4500 搭載 PC にインストールした CentOS 5.3 がブートしない?

新たに購入した DELL OptiPlex 960 は
インテル グラフィックスメディアアクセラレーター 4500 を搭載しています。
このPCにCentOS 5.3をインストールしたのですが、
ブート時にXを起動するタイミングでハングアップが発生し、
ブートしたりしなかったり非常に不安定な状態でした。

2ch上で見つけた情報に基づいてドライバを"Intel Series 4" から
"vesa" に変えたところ、安定してブートするようになりました。

"Intel Series 4"自体、experimentalとあったので
まだ安定していないのでしょうね。


2009年11月5日木曜日

あるディレクトリ以下のファイルを(特定ファイルを除いて)再帰的にコピーするには

あるディレクトリ(./src)以下の全てのファイルを ./dst にコピーする。
% tar cf - ./src | (cd ./dst; tar vxf -)
さらにあるディレクトリ(orファイル)だけを除いてコピーする
% tar cf - ./src --exclude=ignored_file | (cd ./dst; tar vxf -)

2009年8月21日金曜日

iPhoneアプリ開発(その3:mac os環境整備)

その1での疑問が少し解決したので、メモしておきます。

Q: emacs がターミナルの中でしか起動しない。"-nw"オプションをつけている訳でもないのに。
  • A: プレインストールされているemacsはターミナルの中でしか起動しないものだそうです。独立したアプリケーションとして別ウィンドウで起動したい場合にはCarbon Emacsをインストールすればよいです(インストールは簡単!)

Q: chshでshellをtcshに変えたがそれが反映されない。
  • ターミナルの設定で変更しないとダメみたいです。メニューからFile=>Preferencesで表示されるダイアログで、以下のように設定すればOKです。
terminal-setting-window
  • ちなみに上記の画像はPreviewというアプリケーションでキャプチャしました。File=>Grab=>Windowでキャプチャ対象ウィンドウを選択できます。あとはFile=>SaveAs..で保存するだけ。


Q: Xcodeのキーバインドは変更できるのかな(ググればすぐにでてきそうだけど)。
  • A: やはりできるみたい。
  • Xcodeではなくmacそのもののキーバインドですが、[ALT]をCommand Keyに割り当てておくとWindowsの操作感を引き継げて快適です。[ALT]+[TAB]でウィンドウ切り替えができたり、emacs上で[ALT]+[X]でm-xを入力できたり・・・。
modifier-keys
自分にとってはこれがベストです。macキーボードでない、普通のPCキーボードは、[ALT]がオプションキー、[Windows]がコマンドキーに割り当てられています。

Q: [fn]キーのロックを解除する。
  • デフォルトでは、[fn]キーがロックされた状態でファンクションキーを入力しようとすると、ディスプレイの輝度が変更されたりします。
  • ロックを解除するには[システム環境設定]-[キーボード]で「F1,F2などのすべてのキーを標準のファンクションキーとして使用」にチェックを入れます。
  • ここの情報を参考にしました。

Q: "¥"と"\"の入力方法

  • デフォルトでは"¥"が入力されます。
  • "\"を入力するには[Command]キーを押しながら[¥]キーを入力します。
  • デフォルトを変更するには「日本語の入力設定」で「"¥"キーで入力する文字」を変更します。こちらの情報を参考にさせていただきました。


私と同じようなWindows/Linuxに慣れきった方がmac osに移行した場合のTIPSになれば幸いです。


2009年8月9日日曜日

iPhoneアプリ開発(その2:Objective-C編)

今日はObjective-Cの学習をメインに行いました。
C言語を拡張してオブジェクト指向対応させた言語ということでC++と似たものかと思っていましたが、全く別物だということが分かりました。
C++が静的型付け言語であるのに対し、Objective-Cは動的型付け言語になっています。
カテゴリ機能により既存クラスにメソッドを追加できる所などは、ruby等のスクリプト言語を想起させます。
その他、注目ポイントを列挙しておきます。
  • プロトコル(形式プロトコル)は Java の Interface 相当のもの
  • セレクタは Java の Reflection における Method クラスのようなもので、@selector指示子もしくはNSSelectorFromStringメソッドで取得できる
  • 任意のインスタンスにおいて class メソッドで Class インスタンスを取得でき、クラスのメタ情報を取得できる
  • NSObject は以下のようなメソッドを持っていて、Class やセレクタと組み合わせて様々な情報を得ることができる
    • respondsToSelector: 引数で渡されたセレクタが実装されているかどうかを調査
    • performSelector: セレクタで渡されたメソッドを呼び出す
    • isKindOfClass: 継承関係の調査
    • isMemberOfClass: 継承関係ではなくそのクラス直属のインスタンスかどうかを調査
    • description クラス名を文字列で返す
今日の学習は以下のサイトを利用しています。非常に分かりやすくまとまっていて役に立ちました。
http://journal.mycom.co.jp/column/objc/index.html

iPhone自体の勉強はまた明日・・・。


2009年8月8日土曜日

iPhoneアプリ開発(その1:素朴な疑問)

iPhoneアプリ開発を始めました。
ちなみに私はObjective-Cは初心者です。CとC++についての知識はありますが。
先日購入したmac miniにiPhone SDkをインストールし、まずはサンプルプログラムをさわってみようかなということで、AppleのDevelovper ConnectionからTochesというサンプルプログラムをダウンロードしてみました。
このサイトを参考に環境構築。

そして下記のURLをからサンプルを入手して、ビルド実行してみたものの、根本的なところでつまずいてしまいました。

以下がそのつまずき一覧です。
  • MyViewクラスでイベントに応じた実装がされているのですが、このViewがどこから登録されているのかが分からない。
  • ReadMeを読むとマルチイベントを有効にするにはInterface BuilderかsetMultipleTouchEnabledの呼び出しでフラグを立てる必要がある、とあるがどちらのやり方もまだ分からない。
  • mac上で動作するiPhone Emulatorでピンチ(拡大・縮小の操作)の操作ができない。アイコン操作では無理な気がするのだが可能なのだろうか・・・?
学習が進めばこれらの疑問も解決すると思っているのですが、まだまだいろいろつまずきポイントがありそうです。

初めてのmacなのでmac OS X そのものにつまずいている点もあります。ついでにそれらも列挙しておきます。
  • emacs がターミナルの中でしか起動しない。"-nw"オプションをつけている訳でもないのに。
  • chshでshellをtcshに変えたがそれが反映されない。
  • Xcodeのキーバインドは変更できるのかな(ググればすぐにでてきそうだけど)。
このあたりも解決したものからエントリにしていきたいです。


2009年6月24日水曜日

ティザリング解禁?

SLASH GEAR に「ティザリング(とMMS)のハックに成功!」という記事が掲載されていました。
http://www.slashgear.com/iphone-os-3-0-tethering-and-mms-hack-released-1847342/
iPhone 3.0 から以下のサイトへアクセスして、「ローカル・キャリア・プロファイル・コンフィグレーション・ファイル」をインストールせよ、とのことです。
http://help.benm.at/help.php

自分は勇気が無くて試せていませんが、ソフトバンクでも使えるのでしょうかねぇ。
# 言うまでもないとは思いますが、試す方は at your own risk で・・・。

おまけ。
YouTubeには設定ビデオが公開されているようです。

Jailbreakじゃないよ。タダだよ。と勇ましいタイトルが・・・。




2009年6月3日水曜日

US NSF がクラウド関連研究に奨学金を授与

DDJ に表記の記事がありました。
http://www.ddj.com/hpc-high-performance-computing/217100376;jsessionid=E4SAZUJLUHNUGQSNDLPCKHSCJUNN2JVN?_requestid=407248

今後ウォッチして行きたいです。
以下の大学の研究室が対象になっています。
  • Carnegie-Mellon University
  • Florida International University
  • the Massachusetts Institute of Technology
  • Purdue University
  • University of California-Irvine
  • University of California-San Diego
  • University of California-Santa Barbara
  • University of Maryland
  • University of Massachusetts
  • University of Virginia
  • University of Washington
  • University of Wisconsin
  • University of Utah
  • Yale University
研究内容の詳細は元記事を参照のこと。


cygwinでX起動時にクリップボードの調子が悪くなった

先日cygwinをアップデートしてから、XWinの-clipboardオプションによるクリップボード連携がどうにも調子が悪くなってしまいました。
X上のウィンドウ間では正常に動作するのですが、Windows上(XPです)のネイティブアプリ(秀丸とか)でクリップボードを使おうとすると「クリップボードがオープンできません。」というエラーメッセージが表示され非常に不便な状態でした。
cygwinをアップデートするまでは快適に動作していたのにおかしいなぁ、と思いつつ、ふと気がついて、
xclipboard
をcygwin上からアンインストールすると、 快適に動作するではないですか!
xclipboardはXWinの-clipboardオプションに必要かと勝手に勘違いして追加インストールしてしまったのが運の尽きでした。
みなさん、同じ問題にはまらないようにご注意ください。


2009年5月6日水曜日

[excel] エクセルのグラフ中の凡例の順序を入れ替える方法

エクセル上で挿入したグラフを選択し、右クリックメニューから「元のデータ」を選択すると、ダイアログが表示され、系列の追加削除ができます。

この機能を使って系列の編集を行った際、「この系列を先頭に移動したいのに、移動のメニューがない~!」と思うことがよくあったのですが、以下の方法で順序の入れ替えができることがわかりました。

グラフのプロット範囲上のプロット(系列)を選択して、右クリックメニューを表示すると、「データ系列の書式設定」という項目があります。

それを選択して「データ系列の書式設定」ダイアログを表示し「系列の順序」タブを選択すると「上へ移動」「下へ移動」というボタンが用意されており、所望の変更が可能になっています。


★「元のデータ」ダイアログからはできません。いくら探してもその機能は見つからないのでご注意を(これまではこの手順が分からず入力し直したりしていました・・・)。

★この「データ系列の書式設定」ダイアログでは他にも次の機能が利用できます。

  • 2軸グラフの作成
  • 特定系列のみを対象とした表示スタイル変更(マーカー、線、ラベル)

★プロット(系列)を選択しての右クリックメニューで「グラフの種類」を選択すると、特定系列だけ別の種類のグラフにできます。

  • 上記の2軸グラフなどで、「折れ線」と「縦棒」を混在させパレート図を作る、といったことも簡単にできます。


2009年4月18日土曜日

[excel] エクセルでヒストグラムを簡単に作るには?

ヒストグラムはエクセルで簡単に作ることができます。

1. メニューの [ツール] - [分析ツール] から「分析ツール」ダイアログを表示

2. 「ヒストグラム」を選択して「OK」ボタン押下し、「ヒストグラム」ダイアログを表示

3. ヒストグラムダイアログ中の以下の範囲設定を入力

3-a. 入力範囲: ヒストグラム化したいデータの領域(一列)を範囲選択

3-b. データ区間: ヒストグラムの X 軸のデータ区間を入力

★例えば、10区切りで 3-a のデータを集計したい場合には、自分で 10, 20, 30, 40 ... というデータ入力し、その領域を選択する

3-c. 上記の2項目が最低限の入力ですが、その他必要な項目を設定し OK

以上です。

3-b の「データ区間」が最初は何のことか分かりませんでしたが、X軸の元データと覚えておけばよいと思います。



2009年4月1日水曜日

ruby で picasa



ruby を使って google picasa web API を呼び出してみる。





### for authentiction ###

require 'net/https'

http = Net::HTTP.new('www.google.com', 443)

http.use_ssl = true

path = '/accounts/ClientLogin'

data = 'accountType=HOSTED_OR_GOOGLE&Email=USER-ID@gmail.com&Passwd=XXXXX&service=lh2'

headers = { 'Content-Type' => 'application/x-www-form-urlencoded'}

resp, resbody = http.post(path, data, headers)

cl_string = resbody[/Auth=(.*)/, 1]

headers["Authorization"] = "GoogleLogin auth=#{cl_string}"



### base url ###

picasa = Net::HTTP.new('picasaweb.google.com', 80)





### user data ###

resp, resbody = picasa.get('/data/entry/api/user/USER-ID', headers)

### album list ###

resp, resbody = picasa.get('/data/feed/api/user/USER-ID', headers)



### add new album ###

postheaders = {'content-type', 'application/atom+xml; charset=UTF-8'}

postheaders["Authorization"] = "GoogleLogin auth=#{cl_string}"

body_new_album = ' Trip To JP JJJ. Italy public true 1152255600000 italy, vacation '

resp, resbody = picasa.post('/data/feed/api/user/USER-ID', body_new_album, postheaders)



### update album ###

putbody = 'xxx'

req = Net::HTTP::Put.new('/data/entry/api/user/chocolat.kurokawa/albumid/ALBUM-ID/VERSION-ID')

req['Authorization'] = "GoogleLogin auth=#{cl_string}"

req['content-type'] = 'application/atom+xml'

res = picasa.request(req, putbody)





### show headers ###

resp.canonical_each{|name,value|

p name + ': ' + value

}



### output to file ###

file = File.open("/mnt/c/tmp/response.xml", 'w')

file << resbody

file.close











2009年2月19日木曜日

emacs の gdb-mode でソース追従ができなくなっていた



手元の環境は emacs 22.1.1 / gdb 6.4(改)なのですが、emacs で gdb-mode を起動してトレース実行すると今までできていたはずのソースコード上の実行位置追従が動作しないではありませんか。



訳が分からぬまま google 検索すると、まさに欲しかった情報が出てきました。





emacsかgdbがバージョンアップしたせいで、Emacsでgdbを使ったとき、うまく対応するソースコード行を追従しなくなった。この問題は検索の結果、gdbの--fullnameオプションを指定することが解決すると判る。しかし、これをコマンドファイルで指定するにはどうしたらよいだろうか?



答えは、set annotate 1とコマンドファイルに書けばよい。





http://www.gaku.net/uklog/a11513.html



http://www.gaku.net/uklogtb?msgid=11513








このオプションは gdb のマニュアルに以下のように説明されています。





emacs がサブプロセスとして gdb を起動するときにこのオプションをセットします。



これは、スタックフレームが表示されたときには常に(プログラムが停止した時を含む)、フルパスと行番号を標準の認識可能な書式で出力するよう、gdb に伝えるものです。



この認識可能な書式は 2 つの 32 文字の文字列と、それに続くコロンの改行でセパレートされるファイル名、行番号、文字位置のような感じです。



emacs - gdb インターフェースプログラムは、2 つの 32 文字の文字列を、ソースコードをフレームに表示するための信号として使用します。











2009年2月18日水曜日

880点!



運も実力のうち?



今回のTOEICは会社の団体特別受験です。



63697576.jpg



ちなみに前回(5年前)は760点でした。



前々回も760点でした。



試験内容が微妙に変わっている、ということを聞いていたので、



以下の模試を買ってきて勉強しました。



問題シートと回答シートが本番に近い、というのは意外とポイントかもしれません。



ただ、この本の問題は難易度が若干高めのようです。



本番の問題が簡単に感じられました。











2009年2月3日火曜日

emacs のバッファの文字コード変更



自分への備忘録。

emacs で読み込み済みバッファの文字コードを変更するには、以下のコマンドを実行すればよい。
M-x revert-buffer-with-coding-system 指定の文字コードでファイルを再読み込み(C-x RET r)


<<似たコマンドリスト>>
M-x set-buffer-file-coding-system 書き込み時の文字コードを指定(C-x RET f)
M-x set-buffer-process-coding-system 編集中バッファのプロセスの文字コードを指定(C-x RET p)
M-x set-keyboard-coding-system キーボード入力の文字コードを指定(C-x RET k)
M-x set-terminal-coding-system ターミナルの文字コードを指定(C-x RET t)

などなど。








2009年1月15日木曜日

etagsコマンドがない?



fedora 8 環境で etags コマンドを実行すると、「見つかりません」と怒られてしまいました。
なんで etags が入っていないのかと思ってemacs-common パッケージのファイルリストを見ると・・・

$ rpm -ql emacs-common
...
/usr/bin/etags.emacs
...

というファイルがあります。

なんで etags でなく etags.emacs なんでしょうか?
ちなみに man コマンドも

$ man etags

は NG で、

$ man etags.emacs


とする必要がありました。
最初は気がつかず、"ctags -e" コマンドで代用していたのですが・・・
不思議です。








2009年1月4日日曜日