S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
Igor Pro 6がリリースされた。いくつかの新機能が実装された。
実装されて嬉しい機能:
・ウィンドウを「隠す」機能の追加(例えばやたらとグラフが多い場合に有効)
・GraphBrowser(グラフのサムネイル表示ができる!これで命名の悩みが減ると思う)
・「最近使ったウィンドウ」メニューの追加
・tool、infoパレットの分離独立
・ファイルダイアログの刷新(複数選択はまだできない)
・グラフのrangeで、最大値と最小値の独立なautoscale
・Annotationでの相対的なフォントサイズの指定
・グラフ中Traceの表示倍率の設定(いちいち別な軸を用意する手間が省ける)
・グラフのカーソルが2種(AとB)から10種(A-J)に増えた
・グラフのカーソルの水平線あるいは垂直線のみの指定
・「グリッドにスナップ」
・Drawオブジェクトの回転
・Grep(正規表現)
・マルチスレッド(バックグラウンドでのタスク実行やdual CPUマシンでのパフォーマンスup?)
実装してほしいと願う機能:
・wave、ウィンドウの名前の文字制限(31文字)の拡大(256とか)
・ファイルダイアログのドラッグによる複数選択
・キーカスタマイズ
・waveやコマンド名の補完
・オブジェクト指向(もはやIgorではなくなるか・・・)
[2007-01-18-01]や[2007-01-19-01]に書いたがやっぱりリンク付きPDFは便利(プレゼンなどで)。
Javascriptでもいじれるみたいだが、残念ながら上書きのみのようで、完全に制御するにはSDKでプラグイン作るレベルまで行かないとダメのようだ。
しかし実際にリンクを貼る作業をIllustrator上でどうやって実現すればいいのだろう?
現在の妄想:
__HILINK__(ファイル名、しおり名)といったテキストオブジェクトを、ファイル名やしおり名へのリンクに変換するようにすれば良いのでは?ととりあえず思ってる。クリッカブルな領域は、縦横比に捕われず自由変形できるテキストオブジェクトが占める領域で指定するようにすればどうだろう。
以下のような感じで動いているようだ。(tchar.hは直接は関係ない)
#include <io.h> #include <tchar.h> inline BOOL DoesFileExist(LPCTSTR path){ return _taccess(path, 0)==0; }
ちょっとSusieプラグインを作ってみようと思った。この時ビルドするのはDLLだが、使用にあたっては拡張子をspiに変更する必要があり、これをいちいち手動でリネームするのは面倒くさい。自動化するにはプロジェクトのプロパティからビルドイベント => ビルド後のイベントと辿ってコマンドラインに以下を入力(リネーム後のファイル名としてパスを含めていないことに注意。これはrenameコマンドの仕様)。
rename $(OutDir)\$(TargetFileName) $(TargetName).spi
rename Release\myproj.dll myproj.spi
よりによって博士論文審査会の3日前に、メインマシンであるThinkPad T42の液晶画面表示がイカれた。
実用に耐えないほど暗い(目をこらすと僅かに画面が見える)のが症状。OS起動直後や解像度の変更直後の表示はちゃんと見えるが、1分程で暗転する(最初は数時間程度もっていたが、徐々に短かくなって1分程に縮まった)。この症状が発生する前から起動時に液晶が赤みがかっていたが、何か関連があるのだろうか?外部モニタを接続すると問題無く表示できるので、OSやビデオドライバ関連でなく液晶周りがイカれているのだろう。
しかし結構一般的な症状のようだ。インバータが原因となっているcaseが多い。
ThinkPadリフレッシュサービス (ThinkPadシステムボードリペアサービス )
ThinkPad R Series : 液晶画面表示が暗い
http://www.thinkpad-club.com/webforum/archive/tp600j10.html#00954
ThinkPad T40/T40p/T41/T41p/T42/T42p/T43/T43p - インバーター・カード (14.1 型 LCD) の取り外し取り付け
もっと根本がヤレてる場合でも結構対処できてしまうようだ。
ノートパソコンバックライト交換サービス
以下はTeXの数式をDTPソフトにの内容と同一である。
Illustrator CS(Windows)を大金はたいて購入したものの、(Illustrator 10では問題無くできていた)TeXの数式が記されたepsファイルの読み込みに難があった。(http://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/27936.html)
どうしたものかとムカツイていたが、以下のようにしてTeXの数式をアウトライン化すれば、Illustrator CSで問題無く読み込めた。
dvips -Ppdf -E testeq -o testeq.eps gswin32c -dSAFER -q -dBATCH -dNOPAUSE -sDEVICE=epswrite -dEPSCrop -r9600 -sOutputFile=testeq2.eps testeq.eps
\documentclass{article} \begin{document} \begin{eqnarray} z^2 = x^2 + y^2 \end{eqnarray} \end{document}
例えばMFCでダイアログベースにし、その上にボタンやリストビューなどのコントロールを配置し、かつダイアログのOnMouseMoveイベント(WM_MOUSEMOVE)で何かする(マウスカーソル座標表示など)ようにしたとする。この時コントロール上でマウスカーソルを動かしても、ダイアログのOnMouseMoveは実行されない。というのはWM_MOUSEMOVEはコントロールのウィンドウに送られるからである。
コントロール上でマウスの動きを捉えるには、真っ当にはコントロールのクラスを派生して自前でWM_MOUSEMOVEの処理を記述することである。が、ドラッグアンドドロップや単純な座標検出などの作業などにはこいつは大袈裟すぎる。そんな時はCWnd::SetCapture() (::SetCapture(HWND)でもいいけど) するとよい。これの呼出し後は「カーソルの位置に関係なく、以降のすべてのマウス入力が現在の CWnd オブジェクトに送信されます。」(MSDN) 終わったらReleaseCapture()する。
以下は簡単な例。ダイアログ上のクリックでCapture状態が入れ替わる。マウスカーソルの座標がウィンドウ左上に表示される。Capture時はダイアログ上あらゆる場所でのカーソルの座標が更新されるが、そうでない通常時はコントロール上のカーソルの動きは無視される。当然、Capture時にボタンのクリックなどコントロールにマウスイベントを送ることはできない。
void CMyDlg::OnMouseMove(UINT nFlags, CPoint point) { CString str; str.Format("x:%d y:%d", point.x, point.y); GetDC()->TextOut(0, 0, str); CDialog::OnMouseMove(nFlags, point); } void CMyDlg::OnLButtonDown(UINT nFlags, CPoint point) { static bool b = true; if(b) SetCapture(); else ReleaseCapture(); b = !b; CDialog::OnLButtonDown(nFlags, point); }
何であれ理解にあたっては実際にやってみるのが一番。
PDFの仕様を理解しようとして手書きPDF入門というページを見つけた(web archive内)
http://web.archive.org/web/20041204131320/http://www.kobu.com/docs/pdf/pdfxhand.htm
Acrobatの機能として、ページのイメージのサムネール画像の作成・埋め込みがサポートされているが、単体のラスタ画像ファイルでこれを作成したい場合にはどうすればよいか。
外部プログラムでこれらを行うものがいくつかある。
Xpdfに付属する pdftoppm でPDFのページイメージをppmにできる。
pdftoppm.exe -f 3 -l 5 adachi.pdf -r 50 myimgとして、3ページから5ページの画像が50dpiで myimg-000003.ppm とかの名前で出力される。ppmはそれなりに一般的な画像形式のようだが手元のwwwブラウザでは表示できなかった。
convert.exe -resample 50x50% mydoc.pdf hoge.pngなどとして全ページのイメージを出力できる。(指定したページのみの場合はどうするのだろう?)
Dim app, avdoc, pddoc, pdpage, point, rect Set app = CreateObject("AcroExch.App") Set avdoc = app.GetActiveDoc Set pddoc = avdoc.GetPDDoc Set pdpage = pddoc.AcquirePage(0) Set point = pdpage.GetSize() Set rect = CreateObject("AcroExch.Rect") rect.Left = 0 rect.Right = point.X rect.Top = 0 rect.Bottom = point.Y pdpage.CopyToClipboard rect, 0, 0, 100
PDFのサムネール表示は全体を俯瞰するのに便利。手元のAcrobat 7 Standardでは「ページ」というナビゲーションタブでこれが見られる(Foxit Readerを2分ほど使ってみたが、同様の機能はなかった)。特に私は口頭発表でPDFを用いるため、ページの順序を考えたり、聞き手の方々に全体を示しつつ指示のあったページに素早く移動する際にこれが活躍する。この時のサムネール画像の解像度について考えたことをメモする。
まず、PDFにはページのデータとは別にサムネール用のラスタ画像ファイルを内包する仕様が用意されている。これを持っていないPDFをAcrobatでサムネール表示する際には、Acrobatがその都度サムネール画像を作成し描画する。これが一番解像度の良い表示となるが、当然ながら描画にあたってはそれなりの時間がかかってしまう。
この欠点を克服するのが「サムネール画像の埋め込み」というものである。「ページ」のオプションメニューからこれを選択すると、ラスタイメージがPDFの仕様に従ってファイルに埋め込まれ、サムネール表示にあたっての描画の負担はかなり軽減される。だが解像度はサムネール画像なしの場合よりも悪い。かつ、その解像度を指定するオプションも見当たらなかった。
私は発表用のスライドはIllustrator CSで1枚ずつ作成し、後でこれを結合している。Illustratorのオプションとしてサムネール画像を作成というのがあるが、この場合の解像度はかなり悪い。
またPDFキャビネットもPDFのサムネール表示をすることが可能である。これは既存のサムネール画像とは別の機構で表示してくれるようで、その解像度はそれほど悪くなく、かつ内容はどこかにキャッシュするらしく、表示のたび再描画してる気配は見えない。
まとめる。解像度の大小は以下の通り:
埋め込みサムネール画像なし > PDFキャビネットの表示 > Acrobat 7 Standardによる埋め込みサムネール画像 > Illustrator CSによる埋め込みサムネール画像
埋め込みサムネール画像なし | |
PDFキャビネットの表示 | |
Acrobat 7 Standardによる埋め込みサムネール画像 | |
Illustrator CSによる埋め込みサムネール画像 |
アクセサリメニューにクリップボードビューアが無いなあと思ったが、「ファイル名を指定して実行」で
clipbrdすればよかった。
Igor Proにおいて、Annotation(Tag)はグラフ等に文字列を挿入する際に活躍する。
ただの文字列表示だけでなく、グラフ中の系列を表示したり、またTagの位置はデータの位置と関連づけたりできる。何よりそれらが動的な性質を持つことが素晴らしい(系列の色や場所を変更すれば、それがAnnotationに自動で反映される)
この動的な性質は、文字列そのものにも持たせることが可能である。例えば以下のようにAnnotationに記述したとしよう。
\{hoge} \{foo*3} \{fuga()} \{time()}もしrootディレクトリにhogeなるString(文字列変数)やfooなるVariable(数値変数)があれば、その値の評価結果が上のAnnotationの1行目、2行目に反映される。fuga()なるFunctionが定義されていれば同様にその返り値が3行目の表示に反映される。time()関数はIgorにもともと備わっているものである。評価、即ち値のupdateは、例えばAxis(軸)の設定変更時、Windowのサイズ変更時、Annotationの変更時、Experiment読み込み時に自動で行われる(移動や表示などではupdateされないようである)。
experiment: \{IgorInfo(1)}.pxpなどとしておけば出所のExperimentの名前がグラフからわかる。解析方法を変えた時などにはExperimentを別名で保存するようにしておけば、手元の印刷されたグラフがいつのバージョンの解析に基づいているのかがわかる。
ファイル名として使えない(使ってはいけない)文字の種類を調べた。
OS | 文字 |
Windows | \ / : ? * " > < | NUL |
UNIX | / NUL |
三項演算子ではなくifとelseで書けよとのことだそうだ。
http://omake.accense.com/wiki/PythonIntroThree
py2exeというのが、pythonスクリプトをWindows実行形式に変換してくれるプログラムのようだ。すげー
私はダウンロードした実行ファイルをまず展開してインストール方法がわからずムカツいたが、単に実行ファイルを実行するだけでインストールは即座に終わった。
実際に変換するには
from distutils.core import setup import py2exe #setup(console=["aaa.py"]) # 実行時dos画面が出る setup(windows=["aaa.py"]) # 実行時dos画面が出ないなるsetup.pyを用意した上で
python setup.py py2exeとする。するとdistディレクトリ内にexe本体を含めた配布用ファイル一式が出来上がる。配布にあたってはこれらをまとめて配布する必要がある。
ちょっとしたGUIプログラムをパッと作りたい時にどうするか。
C/C++はちょっとやるだけには面倒なので、もっと何も考えないでいいやつにしたい。
Visual Basicは文法面がちょっと気にくわない。.NETはよくわからない。
じゃあスクリプト言語でということになるが、何かと文書やツール類が充実してるpythonが良さそう。
で、WindowsでpythonをGUIから使う/呼ぶためにはどうすればいいのか調べたことをメモする。
まずwxWidgetsというものがある。これは言語やOSの違いを吸収してくれるGUIツールキット。これをpythonからいじるためのものがwxPythonである。これが「pythonでGUI」に必要な条件(他のツールキットももちろんある)。
で、GUI設計においてはデザイナの使用がキモなので、このためのツールを探した。そしてwxGladeなるものとXRCedなるものを発見した。
前提(サイザー)
wxWidgetsにおいてはサイザーなるオブジェクトがある。これはウィンドウと各コントロールの相対的な大きさや位置関係をよしなに面倒見てくれるオブジェクト。wxWidgetにおいては、コントロールの配置はサイザーの使用が原則のようだ。wxGladeではサイザーが無いとコントロールが配置できない。XRCedではできるみたい。
wxGlade
これはコントロールを比較的直観的に、つまりはVisual Studioのように配置できるため、画面などもそこそこ見慣れたものが出てくる。GUIの情報の出力形式はXRC(後述)、python、C++など色々と選べる。インストーラでインストールできた。
wxWidgets でクロスプラットフォーム GUIアプリを作ろう
XRCed
これはVisual Studioなどと比べ抽象的に(と感じた)コントロールを配置するもので、最初は面喰らったがサイザーの概念が多少わかるとこれはそれほど苦にならなかった。GUI情報の出力はXRCのみ。wxPythonで記述されており、wxPythonに付属。
PythonMatrix:XRCedの使い方
ちょっと触っただけだが、どちらも優れていて使い易そうだなと感じた。だが、wxGladeは複数の出力形式ができ、イベントハンドラ名の記述もできる点で優れているのかなあと感じた。GUI部分を変更して上書き保存しても、ハンドラの定義部分はうまく残してくれるようだ。
順番は前後したが、wxPythonにおいてGUIの記述は2通りある:ソースに直接コントロールの配置など全て記述するのと、GUI情報のみXMLファイルに格納し(これをXRCというようだ)別途読み込むこと。前者はソースひとつで完結する単純明瞭さがメリットで、後者はインターフェースと処理のロジックを分離できるのがメリット。
wxGladeでハンドラを指定してpython形式で出力するとハンドラの記述も終わっていて便利。一方でXRCで出力すると、後に別途自分でpythonソースにハンドラを記述(「このボタン押下時この関数を呼べ」)する必要があってひと手間増える(GUIとソースの分離がXRCの本質なので、まあこれは当然)。XRCedは出力がXRCなので、当然同様な事情である。
パッと作成するシンプルさの観点からは、wxGladeを使用してpythonで出力するのが良さそうというのが今日の結論。
なお、XRCで記述したコントロールに対しイベントハンドラを記述するには以下のようにする。XRC Tutorial
<?xml version="1.0" encoding="cp932"?> <resource> <object class="wxFrame" name="myframe"> <title>myframe_title</title> <object class="wxPanel" name="mypanel"> <object class="wxBoxSizer"> <orient>wxVERTICAL</orient> <object class="sizeritem"> <object class="wxButton" name="mybutton"> <label>mybutton_label</label> </object> </object> </object> </object> </object> </resource>
import wx from wx import xrc class MyApp(wx.App): def OnInit(self): self.res = xrc.XmlResource('hoge.xrc') self.init_frame() return True def init_frame(self): self.frame = self.res.LoadFrame(None, 'myframe') self.panel = xrc.XRCCTRL(self.frame, 'mypanel') self.frame.Bind(wx.EVT_BUTTON, self.OnMyButton, id=xrc.XRCID('mybutton')) # wx.EVT_BUTTON(self, xrc.XRCID('mybutton'), self.OnMyButton) # also acceptable ?! self.frame.Show() def OnMyButton(self, evt): wx.MessageBox('hoge', 'fuga') if __name__ == '__main__': app = MyApp(False) app.MainLoop()
NTEmacsの21.3.1で、Apel10.6、limit-1_14-200411201014、semi-1.14.6.tar.gzを入れた。
make make install LISPDIR=/C/programs/emacs-21.3/site-lisp VERSION_SPECIFIC_LISPDIR=LISPDIR=/C/programs/emacs-21.3/site-lispでいけた。次に wl-2.14.0.tar.gz を展開してMakefile中のLISPDIRとINFODIRを上記のように適宜編集し
make make install make install-infoとした。まあうまく動いているようだ。
Mule-UCSはUnicodeを使うためのパッケージ。http://unit.aist.go.jp/itri/itri-gist/ftp.m17n.org/ から入手できる。
インストールは
emacs -q --no-site-file -batch -l mucs-comp.elしてバイトコンパイルした後にlispのディレクトリに入れれば完了と書いてあった。
While compiling toplevel forms in file c:/temp/Mule-UCS-0.84.tar/Mule-UCS-0.84/lisp/un-define.el: ** reference to free variable progn ** The following functions are not known to be defined: find-charset, w32-regist-font-encoder Wrote c:/temp/Mule-UCS-0.84.tar/Mule-UCS-0.84/lisp/un-define.elc While compiling toplevel forms in file c:/temp/Mule-UCS-0.84.tar/Mule-UCS-0.84/lisp/un-supple.el: !! Symbol's value as variable is void ((progn))前者に関してはMeadow用の機能なので気にする必要はない(http://www.m17n.org/mlarchive/mule/200104/msg00011.html)ようだが、後者はヤバそうな雰囲気がある。実際にWanderlustの動作が変だった。http://masaru.org/diary/200209.html
コマンド中にverb命令は使えないようなので、まとめてtextttに変えたいなあと思ったことがあった。
Emacs上のreplace-regexpで以下のようにしたらうまくいった。クエスチョンは最短マッチにするための命令
Replace regexp \\verb|\(.*?\)| with: \\texttt{\1}
目次や図番号からのリンクの機能はやっぱり便利。
\usepackage[dvipdfm,bookmarks=true,bookmarksnumbered=true,bookmarkstype=toc]{hyperref}とかいう記述を追加しdvipdfmxによって作成したPDFにはそんなリンクの機能を持たせることができる。
[1] [2]) [3] (./myreport.lof ! Missing number, treated as zero. <to be read again> \let l.2 ...my_reference}}}{4}{figure.1.1}などとなる。これはどうやら図のキャプションからciteを呼んでいることが原因のようで、lofファイルを見てみると
(前略)\cite {my_reference}(後略)と、コマンドと引数に空白が勝手に加えられてしまっている。これを機械的に除去してもうまくいかなくてムカツいてたが、hyperref - TeX Wikiに次の記述を発見し、この通りやったらうまくいった。書いてある通り、参考文献のリンクなぞ不要なので全く問題ない
\makeatletter \def\NAT@parse{\typeout{This is a fake Natbib command to fool Hyperref.}} \makeatother \usepackage[hypertex]{hyperref}
Acrobat Developer Centerから文書やらツールキットやらに辿れる。何でもある。文書はAcrobat 7.0.5 SDKを試しに入れてみたら大量に付属していたので、個々にかき集める前にSDKにインストールを行うと良さそう。
本家ではないが、Adobe Acrobat 7.0例文辞典なんてすごいページもあった。
AcrobatにはCOMインターフェースが備わっており、他のプログラムから操作ができる。で、PDFのリンクをいじろうと思ったけどできなかった。全機能が利用できると思ったが、そうでもないみたい。
Acrobat Developer Center - Interapplication Communication から他プログラムからの操作のための技術文書が入手できる。でリンクツールに関連するあたりを見てみるとAcroExch.PDAnnotなるオブジェクトを発見したが、これにリンク先を指定・取得するメソッドが無い。AcroExch.PDDoc.AddNewAnnotメソッドを見てみると、subtypeは(Linkではなく)Textでないといけないと書いてある。つまりOLE経由ではリンクの操作はできないみたいなのである。一方でApple eventの方にはannotationクラスできちんとリンク周りのメソッドが用意されている。ムカツク。
ちなみにPDAnnotは以下のようにして取得できる。
Dim app Set app = CreateObject("AcroExch.App") Dim avdoc, pddoc, pdpage, pdannot Set avdoc = app.GetActiveDoc Set pddoc = avdoc.GetPDDoc Set pdpage = pddoc.AcquirePage(0) Set pdannot = pdpage.GetAnnot(0) msgbox pdannot.GetContents msgbox pdannot.GetTitle msgbox pdannot.GetColor msgbox pdannot.GetSubtype
AnkhSVNはVisual Studio .NETでsubversionを使うためのクライアント(プラグイン)である。AnkhSetup-1.0.0.2668-RC4.msi をダウンロードしてきてVS .NET 2003にインストールし、ちょっと使ってみた。AnkhSVN Wiki、http://www.kopan.org/index_i-32.htmlなどを参考にした。
以下の手順で既存のソリューションに適用できた:
・リポジトリをあらかじめ作っておく(TortoiseSVNなどで)
・ソリューション開き、ソリューションエクスプローラを表示させる
・ウィンドウ内最上部「ソリューション'mysolution'(1プロジェクト)」となっているところを右クリックし、Ankh => Add Solution to ... とする
・リポジトリのURLを入力する
するとTortoiseSVNチックにアイコンの表示が変わった。最初は緑色。
ソースに変更を施してビルド(保存)すると緑のチェックが赤のMに変わった。
右クリックしてDiffとすると変更した点が確認できる。
右クリックしてCommitとすると、ログ入力する画面が出てきた末にコミットできた。
ファイルを右クリックしてAnkh => Log とすると関わりのあるログが参照できる。
プロジェクトやソリューションの変更はCommitできず、またログも見られない。これは、プロジェクトの設定はバージョン管理しないというAhnkSVNのポリシー?に基づくもののようだ。
Frequently Asked Questionsより"Some project settings not preserved across checkin/checkout (ie. Working Directory). Why?"
任意のリビジョン間のdiffも現在見られないようだ。これはTortoiseSVNならShow logして2つのリビジョン選択し右クリックして"Show differences as unified diff"すると見ることができる。
ソリューションやプロジェクトを右クリックして"Revert to Revision"してもうまくマージされない。これはプロジェクトやソリューション単位だとうまくいかないが、個々のファイル毎だとうまくいくようだ。
終了時にたまに以下のエラーが出る:
An internal error occured: パラメータが間違っています。 at EnvDTE.UIHierarchyItems.Item(Object index) at Ankh.Solution.Explorer.GetNodeForProject(Project project) at Ankh.Solution.Explorer.ProjectRefreshCallback(Object state)
実は体験したことがないし、そんな話も最近聞かないが、HDDクラッシュはやっぱり悪夢である。一般人に手の届く価格で、そのあたりに気を使っているモデルはないかなーと探していたらそれっぽいのがあった。
Maxtorから容量500GBでSerial ATA II接続のHDD“MaXLine Pro 500”シリーズ「7H500F0」が登場!
これをまたHDDケースに入れるか、バックアップ用サーバを組むか、とかでまた迷う。
3年生前期学生実験「Mathematicaによる計算処理」アニメーション
Mathematica+LiveGraphics3Dによる教材の例
パッケージを用いたグラフィックス・プログラミング knife.m がすごそう
トーラスとある平面の交差
MathematicaでJ/Link グラフィカルユーザインターフェースを作成するには,どうすればよいのですか
神戸大学 Mathematica ホームページ
Mathematica 入門 1
式(第二引数)の頭部を置換してくれる関数。例えば以下でmylistの各要素の和が求められる。
Apply[Plus,mylist]
うっかり変数などを定義してしまうと他の関数の動作に影響を及ぼしかねないので、(Mathematicaに限らず)可能な限りローカル変数を用いるのが良い。そのためにはModule関数を用いる。
g[x_] := Module[{a}, a = 5; While[a > 0, Print[a^x]; a = a - 1]]Lispのletみたいなもんか。
階段関数とかは定義にあたって条件分岐が必須となる。Mathematicaで行うには例えば以下のようにする。
f[x_] := If[x < 0, 0, 1]このIf文の第一引数でQで終わる諸テスト関数が活躍する。
タイトル通り。
<< Graphics`ImplicitPlot` ImplicitPlot[x^2 + y^2 == 1, {x, -1, 1}]
タイトルのまま。
なんとワイルドカードも使える。例えば「Qで終わるテスト関数を一覧したいなー」と思った場合には
?*Qとすれば良いのだ。便利便利
タイトルのまんま。
平成17年度数式処理という授業レジュメで学んだ。
Mathematicaには式変形するコマンドSimplifyなどが用意されている。前提によって変形のされ方は変わるが、それは指定できる。Simplifyなら第2引数に条件を入れる。
In[1]:= Simplify[Abs[x]==x] Out[1]= x == Abs[x] In[2]:= Simplify[Abs[x]==x, x>0] Out[2]= True3.3.10 仮定の使用
Mathematicaで、偶数や素数だったらTrue/Falseを返す関数は末尾にQがつくものが多い(EvenQ、PrimeQとか)。この判別の行為をテストと呼んでいる。ヘルプの組込み関数から プログラミング => テスト として一覧が見える。
普段使用してるLinuxのduはバージョン4.5.3だったが、
du *などとするとカレントディレクトリ内のディスク使用状況が列挙された。
du -s *とする必要があった。
ls | xargs du -sとする(xargsの使いかたがちょっぴりわかってきた)
CTANとはComprehensive TeX Archive Networkの略で、TeX関連のファイルを集約させた場所。
マクロの類が膨大にあるのは以前から知っていた(膨大すぎてかえって見る気が失せる)が、良く見たら解説文書の類も結構充実していた。Windowsヘルプ形式のファイルも結構用意されていた。
四則演算は当然だが、検索能力も計算機の仕事の中で最重要であると考えている。この意味で、色々な書籍がCD/DVDの形態で販売されるとよいなと思っていた。
辞書や百科辞典は既にある([2006-11-22-3]及び[2006-11-22-4])が、C MAGAZINEとトランジスタ技術もそのような形でバックナンバーを販売していた。もっと増えるといいな
win32guiというライブラリがあるようだ。面白そうなんだが、難しそうでまた普及してなさそう。時間のある時にいじってみよう
iTunesはCOMインターフェースを備えているようだ。面白そうなんだが使う機会はあるだろうか?
iTunes COM for Windows SDK License Agreement
GTDという情報・仕事の整理術があるそうだ。Getting Things Doneという本で提案されたものらしい。
Webを検索してみると関連する文書やソフトがウヨウヨ引っ掛かって、「生活が充実しました」など歓喜の声なども多く見られる。本当に必要な仕事とその処理方法・結果に関してじっくり考えるあたりがキモのようだ。ちょっと惹かれたけど、例のごとくソフト選びやそのカスタマイズに時間を取られて本末転倒になりそうなので導入は見送り。
参考:
【GTD】ライフハック Part2【Life Hack】
写真でわかるGTD(週次レビュー編)
強力なバージョン管理システムsubversionは便利だが、Windowsはなにかとコマンドライン端末と相性が悪いので、「ナマ」のsubversionはやや使いにくい。そこで有志がエクスプローラの拡張としてのインターフェースを持つTortoiseSVNを作製した。便利そうなのでちょっと使ってみた。
- まずリポジトリを作りたい場所で右クリックし、"Create repository here"してリポジトリを作る。
- で適当な作業場所で右クリックし"SVN Checkout"するとそこにリポジトリがチェックアウトされる。
- 追加したいファイルをそこにコピーするなりそこで作るなりし、右クリックして"Add"するとaddされる。
- あとは適宜commitなど。これも右クリックからできる
- まとめてAddしたいディレクトリは、そこで右クリックして"Import"するとまとめてインポートできる
おー便利そうだ。でもリポジトリのバックアップはまだTortoiseSVNからはできないみたいだ。
参考:uebu: Subversionの導入(WindowsXP)
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
最終更新時間: 2010-03-08 22:21