Cent OS 6 マシンにyumを使ってインストールした R のリポジトリが古い様で,>install.packages("package")
では本家CRANを見に行き,ダウンロードできない.
この場合は有効なリポジトリ(例えばcran.us)を指定すると良い様だ.dplyr と clust パッケージを以下のコマンドでインストールした.
> install.packages("dplyr", repos="http://cran.us.r-project.org/")
> install.packages("mclust", repos="http://cran.us.r-project.org/")
CPANから.tgzをローカルにダウンロードしてインストールすることもできるようだ(試していない).
> install.packages("/path/target.tgz", repos=NULL, type="source")
以下のサイトをそのまま実行した.
http://altons.github.io/r/2013/06/23/when-package-xyz-is-not-available-for-a-specific-version-of-r/
以下のWikiには国内のCRANミラーサイトについて色々書いてある(問題を解決してから見つけた)
http://www.okadajp.org/RWiki/?CRAN国内ミラーの使い方
2016年10月15日土曜日
2016年10月14日金曜日
HSPICE で Advanced Server/Clientモードを使う
HSPICEを利用するときにライセンスをチェックアウトする必要があるが,細かいシミュレーションを多数行う場合はチェックアウト/チェックインのオーバーヘッドが大きい.
ライセンスをチェックアウトした後,そのまま保持するためにServer/Clientモードを利用する.今回はAdvanced Server/Clientモードを利用する事でマルチスレッド動作を実現する(後述するが目論見は外れる).
Advanced Server/Clientモードを利用するに,以下の3つの手順を利用する.
(1) Serverの起動
HSPICEを実行するマシンで以下のコマンドを入力
% hspice -CC -mp -port [num]
-CCで Advanced server/clientモードが起動する(すぐにバックグラウンドに移動する).
-mpでマルチプロセッサによるシミュレーションを可能にする.
-portでportを指定する事で,複数のserverに番号をつける事が出来る.
portを指定しない場合は,デフォルトの25000を使う (標準出力に表示される).
(2) Clientの起動
HSPICEのワーカーを以下のコマンドで起動する.
% hspice -CC [input.sp] -port [server_name:num]
(3) Serverの終了
全てのジョブを終えたら,Serverを殺しておく(デフォルトでは1時間後にタイムアウトする).
% hspice -CC -K -port [server_name:num]
マニュアルには「Advanced server/clientモードはマルチスレッド動作(-mp)をサポートする.」とあるが,私の環境ではライセンスを1つしか取ってくれず,かなわなかった.
仕方が無いのでシェル側でマルチスレッドもどきを実装して利用した.
複数のマシンにワーカー割り当てることも可能らしいが,残念ながら試していない.
ライセンスをチェックアウトした後,そのまま保持するためにServer/Clientモードを利用する.今回はAdvanced Server/Clientモードを利用する事でマルチスレッド動作を実現する(後述するが目論見は外れる).
Advanced Server/Clientモードを利用するに,以下の3つの手順を利用する.
(1) Serverの起動
HSPICEを実行するマシンで以下のコマンドを入力
% hspice -CC -mp -port [num]
-CCで Advanced server/clientモードが起動する(すぐにバックグラウンドに移動する).
-mpでマルチプロセッサによるシミュレーションを可能にする.
-portでportを指定する事で,複数のserverに番号をつける事が出来る.
portを指定しない場合は,デフォルトの25000を使う (標準出力に表示される).
(2) Clientの起動
HSPICEのワーカーを以下のコマンドで起動する.
% hspice -CC [input.sp] -port [server_name:num]
(3) Serverの終了
全てのジョブを終えたら,Serverを殺しておく(デフォルトでは1時間後にタイムアウトする).
% hspice -CC -K -port [server_name:num]
マニュアルには「Advanced server/clientモードはマルチスレッド動作(-mp)をサポートする.」とあるが,私の環境ではライセンスを1つしか取ってくれず,かなわなかった.
仕方が無いのでシェル側でマルチスレッドもどきを実装して利用した.
複数のマシンにワーカー割り当てることも可能らしいが,残念ながら試していない.
2016年9月22日木曜日
XFCE4のパネルを全て消す
XFCE4のパネルを全て消してしまいたいのだが,最後の1枚は消してもログアウトすると復活してしまう.あまり根本的なやり方ではないか,ログインセッションの情報を書き換える事で以下の様に対処した.
${HOME}/.cache/sessions/xfce4-session-{PC_name}:0
を開き,"panel"で検索しマッチした構文を全部削除し,ログアウト.
ログアウトはCtrl-Alt-DelでX11を落としてしまうのが簡単だと思われる(すぐにX11が再起動しログイン画面が出る).
根本的に殺したければ,
/etc/xdg/xfce4/xinitrc
を開き,xfce4-panel を呼び出している箇所をコメントアウトすればよい.が,これは全てのユーザーに効果が波及してしまう気がする…….(${HOME}/.xinitrcを作成して編集すればよいのかもしれないが)
${HOME}/.cache/sessions/xfce4-session-{PC_name}:0
を開き,"panel"で検索しマッチした構文を全部削除し,ログアウト.
ログアウトはCtrl-Alt-DelでX11を落としてしまうのが簡単だと思われる(すぐにX11が再起動しログイン画面が出る).
根本的に殺したければ,
/etc/xdg/xfce4/xinitrc
を開き,xfce4-panel を呼び出している箇所をコメントアウトすればよい.が,これは全てのユーザーに効果が波及してしまう気がする…….(${HOME}/.xinitrcを作成して編集すればよいのかもしれないが)
2016年8月27日土曜日
PerlでNaNを使う.
Perlで数値解析をする際,ゼロ除算を適切に扱う必要がある.Perlはv5.6.1以上であればNaNを使える.NaNはどんな演算をしてもNaNとなるが,実数NaN共にゼロ除算ではエラーを吐いて止まってしまう.ゼロ除算時にNaNを発生し伝搬させるためには,分母が0であればNaNとなる様な関数を書いてやればよい(下の例ではsub DivNaN).
ちなみに無限も'inf'として使える.
ちなみに無限も'inf'として使える.
2016年8月26日金曜日
octaveで関数プロット時に"error: expecting integer index..."と表示されエラーになる
octave では変数や関数を自作する事ができるが,変数と関数に同じ名前をつけることが出来ない.関数を変数で上書きした後に関数を呼び出すと,"error: expecting integer index..."とエラーになる.
octave:1> sin(pi)
ans = 1.2246e-16
octave:2> sin=10
sin = 10
octave:3> sin(pi)
error: expecting integer index, found 3.141593 ← エラーになる
octave:3> clear sin
octave:4> sin(pi)
ans = 1.2246e-16
octave:5>
はまったのでメモ.
参考リンク.ハンガリー語のスライド.
http://xymarkus.web.elte.hu/Jegyzet/Fiznum_1_ea-10-11_csabai/lecture02.pdf
octave:1> sin(pi)
ans = 1.2246e-16
octave:2> sin=10
sin = 10
octave:3> sin(pi)
error: expecting integer index, found 3.141593 ← エラーになる
octave:3> clear sin
octave:4> sin(pi)
ans = 1.2246e-16
octave:5>
はまったのでメモ.
参考リンク.ハンガリー語のスライド.
http://xymarkus.web.elte.hu/Jegyzet/Fiznum_1_ea-10-11_csabai/lecture02.pdf
2016年7月19日火曜日
Panasonic VE-GDS01DL/KX-FKD402 (コードレス電話機)のキー確認音を鳴らさない
仕事場で Panasonic VE-GDS01DL を使っているが,その子機の KX-FKD402 のキープッシュ時の確認音(ピッ,ピッという音)がうるさい.マニュアルの目次には載っていなくて諦めていたのだが,電話機の機能一覧を眺めていたら設定法が書いてあったので記す.
[F1キー]を押し,[#058]を入力し,キー確認音を[ ナシ ]にする.
本当は音量を下げたかったが,大音量で鳴るよりは無音の方が遙かにマシなので助かった.着信音量や受話音量と個別に変えられます.
マニュアルは以下のリンクに.
http://panasonic.jp/fax/p-db/KX-FKD401_manualdl.html
[F1キー]を押し,[#058]を入力し,キー確認音を[ ナシ ]にする.
本当は音量を下げたかったが,大音量で鳴るよりは無音の方が遙かにマシなので助かった.着信音量や受話音量と個別に変えられます.
マニュアルは以下のリンクに.
http://panasonic.jp/fax/p-db/KX-FKD401_manualdl.html
2016年6月9日木曜日
Cadence AnalogArtistにおいてCUIからspiceInを行う
Virtuoso (AnalogArtist) において CDL や SPICE 形式のネットリストを読み込むときに spiceIn を利用する.GUI でも可能だが,大量にある場合は CUI で実行したい.
ここでは,spiceIn を実行する時のパラメータを記述した SKILL ファイルを用意する方法について述べる.
(a) conn2sch parameter file
spiceIn した schematic のオブジェクトの配置やラベルの大きさを制御している様だ.GUI で実行する時は用意する必要がなく,一方で実行後に勝手にできている.(しかし CUI では必要)
% cat schOpts_spiceIn.params
-- conn2sch parameter file prepared by Spice In:
sheet_symbol := none
page_row_limit := 1024
page_col_limit := 1024
label_height := 10
line_line_spacing := 0.200000
line_component_spacing := 0.500000
density_level := 0
pin_placement := left_and_right_sides
(2) DeviceMap file
ネットリスト中のトランジスタを schematic (正確にはトランジスタライブラリの)のトランジスタに対応させるファイル.これは GUI で実行する時であっても必要.PDK に依存する.
以下は,ネットリスト中のトランジスタ(*mos_net)を schematic のトランジスタ(*mos_sch)にマップしている.
% cat fet_map.spicein_map
-- Device Mapping file generated from SpiceIn GUI
devSelect := pmos_net pmos_sch
propMatch := pmos_sch
devSelect := nmos_net nmos_sch
propMatch := nmos_sch
(3) spiceIn.param file
spiceIn に入力するファイル.
%cat spiceIn.param
piceInParams = list(nil
'conn2schParamFile "schOpts_spiceIn.params"
'language "CDL"
'netlistFile "NAND4_4X.cdl"
'outputLib "CellLibrary"
'refLibList "cmos"
'outputViewName "schematic"
'simName "auCdl"
'outputSimName "auCdl"
'devMapFile "fet_map.spicein_map"
)
(1)~(3)は,一度 GUI で spiceIn を実行すると生成されるので,保存してテンプレートとして利用するのも手である.
(4) spiceInの実行
Terminal において以下の様に実行すれば,spiceIn が起動する.
%spiceIn -param spiceIn.param
spiceIn は,上記に挙げたパラメータファイルをあらかじめ用意する方法と,引数にオプションとして記述する方法の2つの方法がある.
私の環境では後者は"conn2schParamFile"の場所を指定できず正しく動かない ($HOME/cadence/以下を探しに行く).
また,私の環境だと以下の2つのエラーがでてしまう,が schematic 生成には特に問題はない様だ.
*Error* eval: undefined function - ls
*Error* eval: undefined function - drLoadDrf
ここでは,spiceIn を実行する時のパラメータを記述した SKILL ファイルを用意する方法について述べる.
(a) conn2sch parameter file
spiceIn した schematic のオブジェクトの配置やラベルの大きさを制御している様だ.GUI で実行する時は用意する必要がなく,一方で実行後に勝手にできている.(しかし CUI では必要)
% cat schOpts_spiceIn.params
-- conn2sch parameter file prepared by Spice In:
sheet_symbol := none
page_row_limit := 1024
page_col_limit := 1024
label_height := 10
line_line_spacing := 0.200000
line_component_spacing := 0.500000
density_level := 0
pin_placement := left_and_right_sides
(2) DeviceMap file
ネットリスト中のトランジスタを schematic (正確にはトランジスタライブラリの)のトランジスタに対応させるファイル.これは GUI で実行する時であっても必要.PDK に依存する.
以下は,ネットリスト中のトランジスタ(*mos_net)を schematic のトランジスタ(*mos_sch)にマップしている.
% cat fet_map.spicein_map
-- Device Mapping file generated from SpiceIn GUI
devSelect := pmos_net pmos_sch
propMatch := pmos_sch
devSelect := nmos_net nmos_sch
propMatch := nmos_sch
(3) spiceIn.param file
spiceIn に入力するファイル.
%cat spiceIn.param
piceInParams = list(nil
'conn2schParamFile "schOpts_spiceIn.params"
'language "CDL"
'netlistFile "NAND4_4X.cdl"
'outputLib "CellLibrary"
'refLibList "cmos"
'outputViewName "schematic"
'simName "auCdl"
'outputSimName "auCdl"
'devMapFile "fet_map.spicein_map"
)
(1)~(3)は,一度 GUI で spiceIn を実行すると生成されるので,保存してテンプレートとして利用するのも手である.
(4) spiceInの実行
Terminal において以下の様に実行すれば,spiceIn が起動する.
%spiceIn -param spiceIn.param
spiceIn は,上記に挙げたパラメータファイルをあらかじめ用意する方法と,引数にオプションとして記述する方法の2つの方法がある.
私の環境では後者は"conn2schParamFile"の場所を指定できず正しく動かない ($HOME/cadence/以下を探しに行く).
また,私の環境だと以下の2つのエラーがでてしまう,が schematic 生成には特に問題はない様だ.
*Error* eval: undefined function - ls
*Error* eval: undefined function - drLoadDrf
シェルスクリプト変数のsedへの展開
シェル(およびスクリプト)でsedコマンドを呼び出す時の作法をまとめる (ハマったので).
(a) 変数を展開せずにそのまま渡す場合→シングルクオート(')で囲む
sed -i 's/one/$two/g' target.txt
(b) 変数を展開して渡す→ダブルクオート(")で囲む
sed -i "s/out/$two/g" target.txt
上記ははよく知られているが,変数がディレクトリの場合,展開されてしまうと展開された文字列中のスラッシュ(/)にsedが反応してしまい,意図通りに置換できない.こういう場合は区切り文字を変えるとうまく動く.
sed -i "s;path;$HOME;g" target.txt
(a) 変数を展開せずにそのまま渡す場合→シングルクオート(')で囲む
sed -i 's/one/$two/g' target.txt
(b) 変数を展開して渡す→ダブルクオート(")で囲む
sed -i "s/out/$two/g" target.txt
上記ははよく知られているが,変数がディレクトリの場合,展開されてしまうと展開された文字列中のスラッシュ(/)にsedが反応してしまい,意図通りに置換できない.こういう場合は区切り文字を変えるとうまく動く.
sed -i "s;path;$HOME;g" target.txt
2016年4月21日木曜日
Visual Studioでビルド時に実行ファイルを作成できない(Application Experienceを有効にする)
Visual Studioでプログラムをプログラムをビルド時に,
fatal error LNK1168: ファイル C:***\Debug\***.exe を開いて書きこむことができません
と表示されてビルドが出来ない.
Debugディレクトリを消しても同じエラーで.exeは生成できず,またしばらく放置するとビルドできるという謎現象だった.再現性が微妙で困っていたが,最終的にはサービスApplication Experienceを無効にしていたのが原因だとわかった.サービスを「手動」にする事で解決した.
ビルド時の不明なファイルオープンエラー - Miscrosoft Developer Network
Application Experienceで調べてみるともう少し詳細に調べている人がいた.アプリケーション終了後の終了処理のタイムアウトに絡んでいるのか.だから少し待つとビルドが出来たのか.
Windows 7でファイルが消せない話
fatal error LNK1168: ファイル C:***\Debug\***.exe を開いて書きこむことができません
と表示されてビルドが出来ない.
Debugディレクトリを消しても同じエラーで.exeは生成できず,またしばらく放置するとビルドできるという謎現象だった.再現性が微妙で困っていたが,最終的にはサービスApplication Experienceを無効にしていたのが原因だとわかった.サービスを「手動」にする事で解決した.
ビルド時の不明なファイルオープンエラー - Miscrosoft Developer Network
Application Experienceで調べてみるともう少し詳細に調べている人がいた.アプリケーション終了後の終了処理のタイムアウトに絡んでいるのか.だから少し待つとビルドが出来たのか.
Windows 7でファイルが消せない話
2016年1月26日火曜日
JCB CARD Extageをコストをかけず解約する
JCB CARD Extageは,年会費は無料だが有効期限(5年)以内に解約するとカード発行手数料として2000円+税がかかる.
5年間持ち続ければ発行手数料は請求されないが,5年を過ぎるとJCB一般カードに更新されてしまい,JCB一般カードの年会費として1250円かかる.
コストを抑えてJCB CARD Extageを解約する方法をコールセンターに聞いたところ,JCB CARD Extageの更新月を挟んだ3ヶ月内に解約をすれば,JCB CARD Extageの発行手数料もJCB一般カードの年会費もかからず解約できるそうだ.
JCB CARD Extageは,海外利用(これはAmazon.co.jp等も含まれる)のポイントが~1.25%だったり旅行保険の利用付帯などが魅力的だが,国内だとポイント0.5%~0.75%なので使い所がちょっと難しい感じ.
5年間持ち続ければ発行手数料は請求されないが,5年を過ぎるとJCB一般カードに更新されてしまい,JCB一般カードの年会費として1250円かかる.
コストを抑えてJCB CARD Extageを解約する方法をコールセンターに聞いたところ,JCB CARD Extageの更新月を挟んだ3ヶ月内に解約をすれば,JCB CARD Extageの発行手数料もJCB一般カードの年会費もかからず解約できるそうだ.
JCB CARD Extageは,海外利用(これはAmazon.co.jp等も含まれる)のポイントが~1.25%だったり旅行保険の利用付帯などが魅力的だが,国内だとポイント0.5%~0.75%なので使い所がちょっと難しい感じ.