OmniGrafflePro使ってみた

OmniGraffleProはMacのチャート図表作成アプリケーション。
非常に綺麗な図が作成できるようだ。
商品の紹介ページから引用すると。

『Omni Graffle』は、米国 Omni Group 社により開発された、Mac OS X用ビジネスドローイングツールです。パーツ同士の関連性を保った描画が特徴で、主にチャート図表を作成する際に有用な機能を搭載。ベクターベースの美しい図表作成を可能にします。

だという。

公式サイトから試用版がダウンロードできるので試してみた.

まずは起動画面.
いろいろなテンプレートが用意されている.

こちらがステンシルウインドウ.
この中からドラッグ&ドロップでワークスペースにオブジェクトを配置していく.

こちらがツールパレット.
線のスタイルや塗りつぶしの色などを変更する場合はこれを操作する.

そしてこれがワークスペース.
ここにいろいろなオブジェクトを配置していく.

適当にマウスのドラッグ&ドロップでこういうグラフがさっと書けた.
使い勝手のイメージとしては,PowerPointで図を描いていくのと同じような感じ.
色を変えたり矢印の両端を変えたり,かなり色々やれそう.

保存形式は.graffleという形式だが,[ファイル]→[書き出す] によって,PNGやPDF,SVGなどに出力できる.

試用期間は14日なので,その間フル活用したい.

Macで数式ありプレゼンテーション


最近Macがメインになってきているので,プレゼンもMacでやることが多い.

これまではMac+Windows/Virtualbox+PowerPointでスライドを作成していた.

スライドに数式を入れないといけない場合は,TeXclipで数式を書いて,画像をコピって貼り付けていた.
texclipで作ってパワポに貼ると,画像の代替テキストにtexのコードが 入るので,それをコピーすれば数式の編集もできる.

しかしプロパティ見てコピってブラウザに貼って編集してコピってパワポに貼り付け直すのはめんどくさい.
また,数式がベクトルデータではないので,拡大縮小した時に汚い.
(EPSでダウンロードするオプションもあるが,パワポへの貼付けには余計手間がかかる.)

ということで,せっかくMacなんだし,Keynoteを使ってみた.
数式の入力は,MacTeXを入れたらついてくるLaTeXiTでやってみた.

LaTeXiTの入力欄にtexのコードを入力し,inlineやdisplayなどの環境,フォントサイズ,色を選択してから[LaTeX it!]ボタンを押すと,上側に数式の出力結果が表示される.

この結果を,ドラッグ&ドロップでKeynoteに貼り付ければ数式を挿入できる.
逆に,Keynoteで数式を選択し,Command+cでコピーして,LaTeXiTでCommand+vでペーストすれば,入力欄にtexのコードが復元され,数式を編集できる.

OpenMPについて

初心者にありがちなミスが,forループしてるところ全部に

#pragma omp parallel for
for(int i=0;i<max;i++){
・・・
}

をつけてしまうこと.

つけまくると各forループでスレッドが生成されて,並列で実行はされるのですが,大きな落とし穴があり,必ずしも高速で実行されるとは限らない.

つまり,イメージとしては

スレッド作って
ループの処理して
(スレッド終わって)
またスレッド作って
ループの処理して
(スレッド終わって)
またスレッド作って
ループの処理して
(スレッド終わって)
・・・

となるわけです.

こういうときには,

#pragma omp parallel
{
#pragma omp for
for(int i=0;i<max;i++){
}
#pragma omp for
for(int i=0;i<max;i++){
}
・・・
}

とすればよい.イメージとしては

スレッド作って
ループの処理して
ループの処理して
ループの処理して
・・・

となる.

こうすることで,スレッド作成が最初のときだけになり,無駄にスレッド生成を繰り返してしまうことがなくなり,高速化する.

買うモノリスト

  • メモリ(DDR3 PC-10600 1GB×3枚)
  • グラボ(nVIDIA GeForce 9800GT あたり?)
  • 地デジチューナ(PCI接続のやつ)
  • 電源(PCが動かせるくらいのやつ.今持ってる400Wのやつじゃきついか?)

zshrc晒してみる

zshを使うにあたって,まずはプロンプトの設定だろうということで.zshrcを晒します.

変数名は適当です.

local RED=$'%{\e[1;31m%}'
local BLUE2=$'%{\e[1;36m%}'
local GREEN=$'%{\e[1;32m%}'
local YELLOW=$'%{\e[1;33m%}'
local BLUE=$'%{\e[1;34m%}'
local DEFAULT=$'%{\e[1;m%}'
RPROMPT="${BLUE2}%/ ${DEFAULT}"
PROMPT2="${RED}%_%%%{e[m%} "
SPROMPT="%r is correct? [n,y,a,e]: "
[ -n "${REMOTEHOST}${SSH_CONNECTION}" ] && PROMPT="[${YELLOW}%n${DEFAULT}@${RED}%M${DEFAULT}:${BLUE2}%~${DEFAULT}]
%% "
[ -n "${REMOTEHOST}${SSH_CONNECTION}" ] && RPROMPT="$BLUE2%/ ${DEFAULT} [${GREEN}%D{%Y/%m/%d %H:%M}$DEFAULT]"

pg_hba.conf ではまる

pg_hba.confは,PostgreSQLのユーザの認証について設定するファイルです.この書き方がよくわからなかったのでメモ.

# pg_hba.confの設定

local hoge hige trust

これで,ローカル接続でDB hogeに対してhigeさんはtrust(パスワードなし)でログイン出来ます.

ネット経由の場合は,

# pg_hba.confの設定

host hoge hige 192.168.11.0/24 trust

こうすると,192.168.11.なんとか のIPアドレスから,DB hogeにhigeさんはtrustでログイン出来ます.

ちなみに,pg_hba.confは,普通 /etc/postgresql/8.4/main/ 以下にあります.

Windowsで特定のユーザだけCapsとCtrlを入れ替える

日本語106キーボードで,Ctrlキーを押しやすい位置にあるCaps Lockキーと入れ替える設定はyohgaki’s wikiなどで紹介されているが,これをやってしまうと,ユーザ全員,キーマップが変わってしまう.

これだと家族や,職場の同僚とパソコンを共有してる場合に不都合が生じる.で,いろいろ調べたらユーザごとに変更できる設定を見つけた.

HKEY_CURRENT_USER\Keyboard Layout\Scancode Map というレジストリの値をいじれば良いらしい.

そこで,作ってみました.ダウンロードはこちら.キーマップを変更したいユーザでダウンロード後,そのファイルをダブルクリックしてレジストリに登録し,いったんログオフした後,ログインしなおしててください.

利用は自己責任でお願いします.

追記

もしかして別の人がログインしたら設定が上書きされる?

自宅サーバ構成案

最近玄箱にDebianを入れてWebサーバ化することを頑張っては負けまくってるので,ちょっと構成を変えてみる.

玄箱は単にローカル用のファイルストレージとして動かし(RAIDじゃないから全部のデータを突っ込んどく用途には不安),某先生のようにEee PCを外部向けサーバとして稼働させる.

これなら,外部向けサーバのOSに対する制限もほとんどないし,消費電力も低い.

問題は…家のコンセントの口が足りないことかな…

Twitter規制されてるような

出張で西安@中国へ行く途中に上海に来ています.空港の無線LANが使えるというので,さっそく「上海なう」をやろうとwww.twitter.comに接続してみると….なぜかつながらない.何度やっても.他のウェブサイトはいけるのに.

と,ここまできて,中国がネットの情報統制をやってるのを思い出した.これのせいかどうかはわからないけど,なんかそんな理由でTwitterにつながらないような気がする.

Youtubeはどうかな…?

Windows上でのプログラム実行時のカレントディレクトリはどこか?

コマンドプロンプト上でプログラムを実行した場合

プログラムのカレントディレクトリ(windows的には作業フォルダ)は,コマンドプロンプトでのカレントディレクトリになる.これは当たり前.

つまり,C:\Test にいる状態で

FILE *fp=fopen("test.txt","w");
fprintf(fp,"hello\n");
fclose(fp);
略

のようなプログラムを実行すると,C:\Test\test.txtが作成され,helloが書き込まれる.

エクスプローラからexeファイルをダブルクリックして起動した場合

この場合のカレントディレクトリは,エクスプローラでのカレントディレクトリ(というかexeファイルが置かれている場所)がプログラムのカレントディレクトリになる.

エクスプローラ上のexeファイルにファイルをドラッグ&ドロップして起動した場合

これに嵌った.調べたところ,このときカレントディレクトリは,なんとユーザのホームディレクトリ(XPならC:\Documents and Settings\ユーザ名,Vista以降ならC:\User\ユーザ名)にできるらしい.

ショートカットから起動した場合

この場合,ショートカットのプロパティの,「作業フォルダ」の項目で指定されたディレクトリがカレントディレクトリとなる.

調べた方法

次のようなWindowsプログラムを書いた.

#include <windows.h>
#include <tchar.h>
int _tmain(){
TCHAR buf[1024];
GetCurrentDirectory(buf,1024);
MessageBox(NULL,buf,TEXT("CurrentDirectory"),MB_OK);
return 0;
}

これをコンパイルして実行すれば,メッセージボックスにカレントディレクトリが表示される.