約 188,838 件
https://w.atwiki.jp/makotof/pages/14.html
データ保護および回復シナリオの推奨事項
https://w.atwiki.jp/rakutetsuob/pages/218.html
(投稿003)
https://w.atwiki.jp/linux_kai/pages/77.html
Total - (Today - Yesterday - ) 最終更新日 2011/05/17 21 25 Slackware 13.37の日本語環境向上の一環として、ibus-mozcをインストールしたときのメモです。 誤った情報が含まれていたり過不足がある可能性がありますので、気づいた点は指摘してください。 注意 このインストールメモではibus-mozc、mozc_server、mozc_toolのみ扱っています mozcのバージョン情報 1.1.690.102 OSのバージョン情報 Slackware 13.37 i486(2.6.37.6-smp)、x86_64(2.6.37.6) 1.環境変数の設定 2.ibusのインストール 3.mozcに必要なzinniaとgtestのインストール3.1.zinniaのインストール 3.2.gtestのインストール 4.mozcのインストール 5.IBusの設定 6.参考URI コメント 1.環境変数の設定 ユーザーの環境変数にibusに関する設定を追加します $ vi ~/.profile export LANG=ja_JP.utf8 export LC_ALL=ja_JP.utf8 export XMODIFIERS="@im=ibus" export QT_IM_MODULE="ibus" export GTK_IM_MODULE="ibus" export XIM_PROGRAM="/usr/bin/ibus-daemon -xdrt" 2.ibusのインストール SlackBuildを利用して、ibusと依存ライブラリをインストールします $ su - # sbopkg -i ORBit2 # sbopkg -i GConf # sbopkg -i pyxdg # sbopkg -i ibus # sbopkg -i icu4c # sbopkg -i ibus-qt # sbopkg -i protobuf 3.mozcに必要なzinniaとgtestのインストール 3.1.zinniaのインストール zinniaのソースをダウンロードして展開します $ tar zxvf zinnia-0.06.tar.gz $ cd zinnia-0.06 i486の場合、オプション指定なしで $ ./configure x86_64の場合、ライブラリのインストール先を変更しました $ ./configure --libdir=/usr/local/lib64 ビルドしてパッケージ(*.tgz)を作成します $ make $ make install DESTDIR=$(pwd)/PACKAGE $ cd $(pwd)/PACKAGE $ makepkg -l y -c n ../zinnia-0.06-`uname -m`-1.tgz インストールします $ sudo installpkg ../zinnia-0.06-`uname -m`-1.tgz x86_64の場合、ld.so.confファイルを修正しました $ sudo vi /etc/ld.so.conf /usr/local/lib64 == この行を追加しました $ sudo ldconfig 3.2.gtestのインストール gtestのソースをダウンロードして展開します $ unzip gtest-1.6.0.zip $ cd gtest-1.6.0 Makefile.amファイルを変更します、以下の部分をばっさり削除します $ chmod +w Makefile.am $ vi Makefile.am 292 # Disables make install as installing a compiled version of Google 293 # Test can lead to undefined behavior due to violation of the 294 # One-Definition Rule. 295 296 install-exec-local 297 echo " make install is dangerous and not supported. ..." 298 false 299 300 install-data-local 301 echo " make install is dangerous and not supported. ..." 302 false $ autoreconf i486の場合、オプションなしで $ ./configure x86_64の場合、ライブラリのインストール先を変更しました $ ./configure --libdir=/usr/local/lib64 ビルドしてパッケージ(*.tgz)を作成します $ sudo chown -R $USER $USER * $ make clean $ make $ make install DESTDIR=$(pwd)/PACKAGE $ cd $(pwd)/PACKAGE $ makepkg -l y -c n ../gtest-1.6.0-`uname -m`-1.tgz インストールします $ sudo installpkg ../gtest-1.6.0-`uname -m`-1.tgz 4.mozcのインストール LinuxBuildInstructionsの手順に沿って、ソースをダウンロードします $ cd ~/ $ svn co http //src.chromium.org/svn/trunk/tools/depot_tools $ export PATH=`pwd`/depot_tools "$PATH" $ mkdir -p ~/src/mozc $ cd ~/src/mozc $ gclient config http //mozc.googlecode.com/svn/trunk/src $ gclient sync $ cd ~/src/mozc/src x86_64の場合、ソースコードを1箇所だけ変更します $ cp ./base/util.cc{,.org} $ vi ./base/util.cc 1834 #ifdef OS_LINUX 1835 return "/usr/lib64/mozc"; == "libをlib64に変更しました" 1836 #endif // OS_LINUX ビルドのための準備をします $ python build_mozc.py clean $ python build_mozc.py gyp $ python build_mozc.py build_tools -c Release ビルドします ビルドしたのはibus_mozc、mozc_server、mozc_toolだけです $ python build_mozc.py build -c Release unix/ibus/ibus.gyp ibus_mozc server/server.gyp mozc_server gui/gui.gyp mozc_tool Slackwareにインストール可能なパッケージ(*.tgz)を作成するためのシェルを作成しました debian/rulesファイルを参考にしました $ cd ~/src/mozc $ touch mktgz.sh $ vi mktgz.sh +#!/bin/sh ... #!/bin/sh if [ -z "$ARCH" ]; then case "$( uname -m )" in i?86) export ARCH=i486 ;; # Unless $ARCH is already set, use uname -m for all other archs *) export ARCH=$( uname -m ) ;; esac fi case "$ARCH" in i486) LIBDIRSUFFIX="" ;; x86_64) LIBDIRSUFFIX="64" ;; *) LIBDIRSUFFIX="" ;; esac cd ~/src/mozc/src source ./mozc_version.txt export CURDIR="`pwd`/../mozc-${MAJOR}.${MINOR}.${BUILD}.${REVISION}" export BUILD_DIR=./out_linux mkdir -p "$CURDIR"/debian/ibus-mozc/usr/lib${LIBDIRSUFFIX}/ibus-mozc/ cp -p "$BUILD_DIR"/Release/ibus_mozc "$CURDIR"/debian/ibus-mozc/usr/lib${LIBDIRSUFFIX}/ibus-mozc/ibus-engine-mozc mkdir -p "$CURDIR"/debian/ibus-mozc/usr/share/ibus/component/ sed "s|/usr/libexec/ibus-engine-mozc|/usr/lib${LIBDIRSUFFIX}/ibus-mozc/ibus-engine-mozc|" "$BUILD_DIR"/Release/obj/gen/unix/ibus/mozc.xml "$CURDIR"/debian/ibus-mozc/usr/share/ibus/component/mozc.xml mkdir -p "$CURDIR"/debian/ibus-mozc/usr/share/ibus-mozc/ cp -p data/images/unix/ime_product_icon_opensource-32.png "$CURDIR"/debian/ibus-mozc/usr/share/ibus-mozc/product_icon.png cp -p data/images/unix/ui-tool.png "$CURDIR"/debian/ibus-mozc/usr/share/ibus-mozc/tool.png cp -p data/images/unix/ui-properties.png "$CURDIR"/debian/ibus-mozc/usr/share/ibus-mozc/properties.png cp -p data/images/unix/ui-dictionary.png "$CURDIR"/debian/ibus-mozc/usr/share/ibus-mozc/dictionary.png cp -p data/images/unix/ui-direct.png "$CURDIR"/debian/ibus-mozc/usr/share/ibus-mozc/direct.png cp -p data/images/unix/ui-hiragana.png "$CURDIR"/debian/ibus-mozc/usr/share/ibus-mozc/hiragana.png cp -p data/images/unix/ui-katakana_half.png "$CURDIR"/debian/ibus-mozc/usr/share/ibus-mozc/katakana_half.png cp -p data/images/unix/ui-katakana_full.png "$CURDIR"/debian/ibus-mozc/usr/share/ibus-mozc/katakana_full.png cp -p data/images/unix/ui-alpha_half.png "$CURDIR"/debian/ibus-mozc/usr/share/ibus-mozc/alpha_half.png cp -p data/images/unix/ui-alpha_full.png "$CURDIR"/debian/ibus-mozc/usr/share/ibus-mozc/alpha_full.png mkdir -p "$CURDIR"/debian/mozc-server/usr/lib${LIBDIRSUFFIX}/mozc cp -p "$BUILD_DIR"/Release/mozc_server "$CURDIR"/debian/mozc-server/usr/lib${LIBDIRSUFFIX}/mozc/ mkdir -p "$CURDIR"/debian/mozc-utils-gui/usr/lib${LIBDIRSUFFIX}/mozc cp -p "$BUILD_DIR"/Release/mozc_tool "$CURDIR"/debian/mozc-utils-gui/usr/lib${LIBDIRSUFFIX}/mozc cd "$CURDIR"/debian/mozc-server makepkg -c n ../../mozc-server-${MAJOR}.${MINOR}.${BUILD}.${REVISION}-${ARCH}-1.tgz cd "$CURDIR"/debian/mozc-utils-gui makepkg -c n ../../mozc-utils-gui-${MAJOR}.${MINOR}.${BUILD}.${REVISION}-${ARCH}-1.tgz cd "$CURDIR"/debian/ibus-mozc makepkg -c n ../../ibus-mozc-${MAJOR}.${MINOR}.${BUILD}.${REVISION}-${ARCH}-1.tgz パッケージ(*.tgz)を作成します $ chmod +x mktgz.sh $ ./mktgz.sh インストールします i486の場合 $ cd ~/src/mozc/mozc-1.1.690.102 $ sudo installpkg ibus-mozc-1.1.690.102-i486-1.tgz $ sudo installpkg mozc-server-1.1.690.102-i486-1.tgz $ sudo installpkg mozc-utils-gui-1.1.690.102-i486-1.tgz x86_64の場合 $ cd ~/src/mozc/mozc-1.1.690.102 $ sudo installpkg ibus-mozc-1.1.690.102-x86_64-1.tgz $ sudo installpkg mozc-server-1.1.690.102-x86_64-1.tgz $ sudo installpkg mozc-utils-gui-1.1.690.102-x86_64-1.tgz インストールが完了したら、OSを再起動します 5.IBusの設定 IBus設定にMozcを追加します $ ibus-setup 「IBusの設定」画面で 「インプットメソッド」タブを表示 「インプットメソッドの選択」プルダウンをクリック 「日本語」 「Mozc」を選択して追加ボタンをクリック 一覧でもっとも上になるよう「上へ」ボタンをクリックして調整します 6.参考URI インストールするとき下記URIが大変参考になりました。多謝。 http //code.google.com/p/mozc/wiki/LinuxBuildInstructions http //semiblackharp.blogspot.com/2010/05/slackware64-130googlemozc.html http //d.hatena.ne.jp/nobu-q/20110425 http //slackwiki.org/Building_A_Package おわり。 上へ戻る コメント 新規作成 -- kar (2011-05-17 21 25 37) 名前 コメント
https://w.atwiki.jp/skmt200x/pages/103.html
PostgreSQLデータベースの管理などに関する、俯瞰。 現在8.3を運用で使っているため、8.3ベースで記載しているものの、上位バージョンでも基本的には使用可能と思われる。 プログラムバージョンの確認 データベースデータベースの確認 接続の確認および変更 データベースの作成 データベースの変更 データベースの削除 データベースのバックアップ(ダンプ) データベースのリストア ユーザ(ロール)ユーザ(ロール)の確認 ユーザ(ロール)の作成 ユーザ(ロール)の変更 ユーザ(ロール)の削除 スキーマスキーマの確認 スキーマの作成 スキーマの削除 その他、スキーマの使われ方等public スキーマ スキーマ検索パス スキーマ検索パスの設定 TOPへ編集 プログラム バージョンの確認 以下のコマンドにて、インストールされているバージョンを確認する。 postgres --version (出力例) postgres (PostgreSQL) 8.3.11 TOPへ編集 データベース データベースの確認 psqlコマンドを起動した後、メタコマンド\lにて確認を行う。 (実行例) \l (出力例) List of databases Name | Owner | Encoding -----------+----------+---------- postgres | postgres | UTF8 template0 | postgres | UTF8 template1 | postgres | UTF8 testdb | postgres | UTF8 (4 rows) 接続の確認および変更 psqlコマンドを起動した後、メタコマンド\cで接続の確認、および変更を行う。 (実行例:接続の確認) \c (出力例) You are now connected to database "postgres". (実行例:接続の変更) \c testdb (出力例) You are now connected to database "testdb". データベースの作成 以下のSQLを実行して、データベースを作成します。 CREATE DATABASE データベース名 WITH options...; (出力例) CREATE DATABASE options... OWNER 所有者ロール 通常はpostgres TEMPLATE テンプレート 通常はDEFAULT(template1) ENCODING 文字コード 通常はDEFAULT(UTF-8)※多分OSの環境変数LANG TABLESPACE テーブルスペース 通常はDEFAULT CONNECTION LIMIT 同時接続数 デフォルトは-1(無制限) あるいは、シェルから以下のコマンドを実行します。 createdb データベース名 データベースの作成詳細は 参考 http //www.postgresql.jp/document/8.3/html/manage-ag-createdb.htmlを参照すること。 データベースの変更 以下のSQLを実行して、データベースを変更します。 ALTER DATABASE データベース名 WITH options...; (出力例) ALTER DATABASE データベースの変更詳細は、参考 http //www.postgresql.jp/document/8.3/html/sql-alterdatabase.htmlを参照してください。 データベースの削除 以下のSQLを実行して、データベースを削除します。 DROP DATABASE データベース名; (出力例) DROP DATABASE あるいは、シェルから以下のコマンドを実行します。 dropdb データベース名 データベースの削除詳細は、参考 http //www.postgresql.jp/document/8.3/html/manage-ag-dropdb.htmlを参照すること。 データベースのバックアップ(ダンプ) 単純には、以下のコマンドで、バックアップを取得する。 pg_dump データベース名 -f データベースダンプ名 単純なこの方法では、多少制限もあるため、 もう少し調べた内容については、別途PostgreSQL/A-1.バックアップとリストアを参照すること。 データベースのリストア 概要的には、一度データベースを再作成して、バックアップ(ダンプ)しておいた内容を復元する。 dropdb データベース名; createdb データベース名; psql testdb -f データベースバックアップ(ダンプ)ファイル名 もう少し調べた内容については、別途PostgreSQL/A-1.バックアップとリストアを参照すること。 この方法によるリストアの制限について、参考 http //www.postgresql.jp/document/8.3/html/backup-dump.htmlを参照すること。 主に、ロールやテーブル空間などはダンプされない(データベースクラスタ全体で保持している情報のため)。 TOPへ編集 ユーザ(ロール) PostgreSQLではロールとも呼ばれる。 データベースオブジェクトの所有者になったりする。 データベース接続への認証にもユーザ(ロール)は使われるが、PostgreSQLではクライアント認証に、いくつかの段階を経て認証を行うため、ユーザ(ロール)を追加しただけでは、設定は完結しない。 詳細は参考 http //www.postgresql.jp/document/8.3/html/auth-pg-hba-conf.htmlを参照すること。 ユーザ(ロール)の確認 psqlコマンドを起動した後、メタコマンド\duにて確認を行う。 (実行例) \du List of roles Role name | Superuser | Create role | Create DB | Connections | Member of -----------+-----------+-------------+-----------+-------------+----------- postgres | yes | yes | yes | no limit | {} test | no | no | no | no limit | {} (2 rows) あるいは以下のSQL SELECT rolname FROM pg_roles; (実行例) rolname ---------- postgres test (2 rows) ユーザ(ロール)の作成 以下のSQLにてユーザ(ロール)を作成します。 CREATE ROLE ユーザ名; (例)パスワード認証が必要な、ログイン可能なユーザ(ロール)の作成 CREATE ROLE test WITH NOSUPERUSER LOGIN PASSWORD 'password'; 作成操作の詳細は 参考 http //www.postgresql.jp/document/8.3/html/sql-createrole.html を参照すること。 ユーザ(ロール)の変更 以下のSQLにてユーザ(ロール)を変更します。 ALTER ROLE ユーザ名 WITH option... (例)パスワードの変更 ALTER ROLE test WITH PASSWORD 'NewPassword'; 変更操作の詳細は 参考 http //www.postgresql.jp/document/8.3/html/sql-alterrole.html を参照すること。 ユーザ(ロール)の削除 以下のSQLにてユーザ(ロール)を削除します。 DROP ROLE ユーザ名; TOPへ編集 スキーマ スキーマを使うことで、データベース内に同じテーブル名を使うことが可能になる。 厳密には、スキーマによって別のテーブルとして扱われる。 論理的な構造としては、 データベース スキーマ テーブル というような感じ。 参考 http //www.postgresql.jp/document/8.3/html/ddl-schemas.html スキーマの確認 psqlコマンドを起動した後、\dnメタコマンドにて確認を行う。 (実行例) \dn List of schemas Name | Owner --------------------+---------- information_schema | postgres pg_catalog | postgres pg_toast | postgres pg_toast_temp_1 | postgres public | postgres test1 | postgres (6 rows) スキーマの作成 以下のSQLで定義する。 CREATE SCHEMA スキーマ名; スキーマの削除 以下のSQLで削除する。 DROP SCHEMA スキーマ名; オブジェクトを含む場合、以下の構文で削除する。 DROP SCHEMA スキーマ名 CASCADE; その他、スキーマの使われ方等 public スキーマ スキーマ名を指定しないで作成したテーブルは、publicスキーマとして作成されています。 スキーマ検索パス スキーマ名を記載しない場合に、検索する順序がある。 以下のコマンドで確認。 SHOW search_path; (出力例) postgres=# SHOW search_path; search_path ---------------- "$user",public (1 row) スキーマ検索パスの設定 以下のコマンドで設定 SET search_path TO test1,public; TOPへ編集 最終更新日 [2011-04-12]
https://w.atwiki.jp/phptest/pages/29.html
難しいし、他言語はTもよく知らない為、指南もしにくいので後回しでいいです。 文字コードとは 文字コードとエンコーディングとcharsetについてより複雑な説明 参照:「いいから俺文字コード」シリーズ Java Javaにおいては、文字を扱うクラスや型(String, StringBuffer, char)は、すべて UTF-16 で符号化されている。 他の文字コードと相互変換する場合は、byte[] 型を通す。 System.out.println(System.getProperty("file.encoding")); //MS932 String str = "テスト"; byte[] codes = str.getBytes(); //プラットフォーム別(※実行時の環境変数か何かで決定される。なんだっけ?) codes = str.getBytes("MS932"); //コード名称明記 str = new String(codes, "MS932"); //byte[] から char[] に変換。 System.out.println("codes "+codes); //byteコードなので出鱈目に見える System.out.println("REcode "+str); //REcode テスト 変換テーブルは JRE/JVM に内蔵される(※のか?)eclipseで文字コードを設定できます。 エンコーディングの変更方法 PHP デフォルトのエンコーディングを変更する場合はphp.iniの1198行目あたりにある記述を書き換えます mbstring.internal_encoding = SJIS エンコーディング mb_convert_encoding関数を使用できます。 $str = "元になっている文字列"; print($str." br "); //もとになっている文字列 $str = mb_convert_encoding($str, "UTF-8", "auto"); print($str); //蜈�↓縺ェ縺」縺ヲ縺�k譁�ュ怜� 参照:PHPマルチバイト文字列関数 PHPでもヘッダーを使って文字コードの記述が出来ます。 ?php header("Content-Type text/html; charset=SJIS"); echo " h1 インデックス /h1 "; php? ただし、ヘッダーより前に構文が書けなくなるので、html記述などが出来なくなります。 参照:PHPマニュアル-ネットワーク関数 javascript htmlファイルのmetaタグ内部につけることで宣言可能です。 バージョンやドキュメント宣言とは分けて書くことが出来ます。 !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http //www.w3.org/TR/html4/loose.dtd" head meta http-equiv="Content-Type" content="text/html;charset=UTF-8" meta http-equiv="Content-Script-Type" content="text/javascript" title JavaScript テスト /title /head body p Test /p /body /html さらに内部エンコーディングはUTF-16でできており、文字コード変換用にescape関数、unescape関数が存在します。 var str = "\u3042\u3044\u3046\u3048\u304a"; var str2 = "あいうえお"; document.write(escape("\u3042\u3044\u3046\u3048\u304a")); //%u3042%u3044%u3046%u3048%u304A document.write(unescape("\u3042\u3044\u3046\u3048\u304a")); //あいうえお document.write(str); //「あいうえお」と出ましたが環境で変化するかもしれません document.write(escape(str2)); //\u3042\u3044\u3046\u3048\u304a document.write(unescape(str2)); //あいうえお 参照:Javascriptのescape関数で判読を難しくする
https://w.atwiki.jp/octave/pages/14.html
このパッケージは Octave 3.0.3 としてビルドされました。このバージョンは以前と比べて以下のようなたくさんの新機能が追加されています。 整数型 固定小数点計算 疎行列 GLPK (GNU Linear Programming Kit) ベースの線形計画法 64bit コンパイラ対応 gzipとストリームをサポートしたことによる Matlab Ver7 のファイルとの互換性向上 Matlab 互換のグラフィックの取り扱い Microsoft Visual C++ や MinGW (Minimalist GNU for Windows) との親和性 MEX (Matlabコンパイル済みファイル)インタフェースとの完全互換 他たくさんのマイナーな機能向上や互換性向上 このパッケージで OCT/MEX ファイルを作成する際の注意 ( C または C++ の ) ソースから OCT または MEX ファイルをビルドする為には、このパッケージをコンパイルしたのと同じバージョンの C++ コンパイラが必要です。この Octave パッケージは Microsoft Visual C++ 2008 を使ってコンパイルされており、マイクロソフトのサイトから同じバージョンの無料の Express Edition がダウンロードできます。 (訳注 バージョン違いとして 2005 がありますがそれではなく、2008 バージョンでなければなりません。) Visual C++ はライセンス上 Octave と一緒に配布することが出来ません。一旦 Visual C++ がインストールされたら、 Octave のプロンプトから mkoctfile コマンドで OCT ファイルを生成できます。同様に mex コマンドで MEX ファイルが生成できます。 ( 訳注: Visual C++ は IDE の起動環境で動的に環境変数を設定するので、その他のアプリケーション ( Octave 等 ) も何らかの方法で PATH や LIB 等の環境変数を明示的に設定しなければなりません。OCT/MEXファイルの作成メモ参照) Octave への協力 Octave をよりよいシステムにするために援助するいくつかの方法があります。おそらくもっとも効果的な方法は、新たな問題を解決するために高い品質のコードを書いて提供し、それを他の人も自由に使えるようにすることです。とりあえず、我々のプロジェクトが希望している事のリストが http //www.octave.org/projects.html にあります。将来のバージョンへの要望もここにあります。 もし、あなたが Octave の為に有用な function を書いて、それを他の人にも使えるようにしたいと思ったら、メーリングリスト ( sources@octave.org ) に投稿してください。このメーリングリストに送られたメッセージは Octave を保守している人々に閲覧されるので、Octave の将来のバージョンに含めることを考慮されるかもしれません。メッセージはアーカイブ (http //www.octave.org/archive.org)もされるので、もしコードが採用されなかったとしても他の人々の役に立つ時を待つことができます。 もしあなたにとって Octave が十分役に立ったら、開発を続けるための寄付も考えてみてください ( http //www.octave.org/funding.html )。それがわずかな額であったとしても、開発したりサポートしたりするための時間に大きく貢献するかもしれません。 もし寄付やコードを提供することがなくても、見つけたバグや Octave をより有用にする方法を報告していただけると、より信頼性の高い Octave を作るのに役立ちます。 Ver 3.0 での、ユーザーから見える重要な変更の概要 (原文 http //www.gnu.org/software/octave/NEWS-3.html Matlab グラフィクスとの互換性が向上。Matlabのグラフィクスの取り扱いと同様に働く、次のようないくつかのグラフィクス機能を搭載した subplot 機能が使用でき、また plot でファイルを作成する print function が使えます。 gnuplot 4.2 を使用しているなら、 線に RGB で色指定できます。Octave では引き続き 4.0 を使うことも出来ますが、Matlab スタイルの plot function を使っているかぎり線に任意の色を指定する方法はありません。古いバージョンの gnuplot では制限されたセットが選択されていて、 Octave から起動するか否かにかかわらず、これを行う確かな方法はありません。また端末にも依存します。つまり X11 端末でのある色指定は、ポストスクリプト端末で同じ指定をしても異なる色になります。gnuplot 4.0 で可能な RGB カラーは赤(R)、緑(G)、青(B)各 1bit で、8 通りの組み合わせがあります。正しくない値はすべて ( 前回の指定と? ) 同じ色にマップされます。このことは bar, contour, meshc, surfc 関数の patch オブジェクトに影響し、例えば bar や contour はモノクロ表示になります。次善策としては "colormap gmap40" と入力するとカラーマップをロードして、多くの場合何とか満足できる程度に bar や contour の表示がシンプルになります。 線の幅を次の例のように制御できます。これはカラー機能の例でもあります。(ライン幅 = 4 、RGB色 = [1, 0, 0.5](赤紫) で x, y をプロットする) line (x, y, "linewidth", 4, "color", [1, 0, 0.5]); gnuplot 4.2 では、画像データを 2D プロットデータと一緒に表示できます。 等高線のプロット ( contour ) では、線は三次元プロットではなく Octave の機能で二次元プロットとして生成されているので、他の二次元データを追加で表示できます。 gnuplot では拡張端末としてTeXインタープリタがエミュレートできます。gnuplot 4.0 ではポストスクリプト端末の上で「のみ」TeXインタープリタがサポートされます。 gnuplot 4.2 の下では、次の端末でサポートされます aqua, dumb, png, jpeg, gif, pm, windows, wxt, svg, X11。 次のプロットコマンドは古くなり、将来のバージョンの Octave では削除される可能性があります。またこれらのコマンドは、 Matlab形式でのプロットコマンド(plot, line, mesh, semilogx..等)では何の働きもしません。 __gnuplot_set__ __gnuplot_show__ __gnuplot_plot__ __gnuplot_splot__ __gnuplot_replot__ プロットのプロパティの値はあまり厳密にチェックされていません。不正な値を指定すると、結果は予測できません。 Octave はコマンドとデータを同じパイプを使って gnuplot へ送るようになりました。これによりデータファイルに関しての clutting / tmp 問題を避けることが出来ますが、プロットをマウスでズームインすることが出来なくなりました。これは、プロットしているデータがファイルに格納されていない場合にはズームが出来ないという gnuplot の制限です。gnuplot の新しいバージョン ( 4.2.2 ) ではこの問題を解決するための作業が幾分か完了しています。gnuplot の開発リストのこのスレ(英語)を参照ください。 関数の探索パスを設定する方法が変わりました。組み込み変数 LOADPATH に代わって、 addpath, rmpath, path 関数を使わなければなりません。これらの関数は Matlab と同様にカレントディレクトリを示す "." を認識します。パス文字列の先頭または末尾の「二重コロン」には、もはや特別な意味はありません。探索パスのすべての要素は Octave の開始時に明示的にパスに含まれます。パスを表示させるには path 関数を使用してください。「//」で終わるパス要素は、もはや再帰的には探索しません。代わりに、 addpath と genpath 関数を使ってディレクトリ全体をパスに追加してください。例えば次の指定は、 ~/octave とそれ以下のサブディレクトリを、探索パスの最初に挿入します。 addpath ( genpath ( "~/octave")); Octave の以前のバージョンは、警告を制御するためにたくさんの組み込み変数 ( 例 warn_divide_by_zero ) を使用していました。これらの変数に代わり、警告は warning 関数の引数の warning identifiers (警告識別子)で制御するようになりました。 以前のやりかた warn_divide_by_zero = false; 今後のやりかた warning ( "off", "Octave divide-by-zero" ); ユーザーのコードでも警告を制御するのにこの関数を利用できます。 warning ( "My-package phase-of-the-moon", "the phase of the moon could couse trouble today" ); すべての警告はこのやり方で有効/無効が制御でき、さらにエラーへの変更が出来ます。 warning ( "on", "all" ); warning ( "off", "all" ); warning ( "error", "Octave devide-by-zero" ); warning ( "error", "all" ); さらに、現在使用されている警告の状況を調査できます。(明示的に設定された警告のIDだけが返されます) warning ( "query", ID) warning ( "query" ) warining identifiers(警告識別子)の部分的なリストや、使い方の詳細はヘルプを見てください。 help warning_ids すべての組み込み変数は、関数で設定するように変更されました。この変更により、ユーザー定義のパッケージと Octave 自身の内部変数について、インタープリタでの取り扱いを簡単で一貫したものに出来ました。多くの場合に於いて、内部変数を単純に読んでいるだけのコードは変更する必要はありませんが、内部変数を変更しているコードは変更する必要があります。例えば次のように書く代わりに、 PS1 = " "; 次のように書かなければなりません。 PS1 (" "); Octave の古いバージョンと新しいバージョンの両方で動作するコードを書くには、例えば次のようになります。 if (exist ("OCTAVE_VERSION") == 5) ## New PS1 (" "); else ## Old PS1 = " "; endif Matlab との互換性の為に、 system 関数の出力の順序が変わりました。以前のものは、 [output, status] = system (cmd); でしたが、これからは次のようになります。 [status, output] = system (cmd); Matlab との互換性の為に、normcdf, norminv, normpdf, normrnd 関数は分布の計算に、平方偏差に代わって標準偏差を使用するように変更されました。 Matlab との互換性の為に、fsolve 関数の出力が変更されました。以前のものは、 [x, info, msg] = fsolve (...); でしたが、これからは次のようになります。 [x, fval, info] = fsolve (...); Matlab との互換性の為に、gamcdf, gaminv, gampdf, gamrnd, expcdf, expinv, exppdf, exprnd 関数は分布の計算に、1を超えるスケールファクタではなく標準的なスケールファクタを使用するように変更されました。(1で正規化された?) (End of document)
https://w.atwiki.jp/kimh/pages/30.html
100629 C言語 ・プログラム コンピュータの動作内容を規定し記述したもの ・CPU ⇒ 電気のON・OFFで動作 ━━━━━━ 0と1で対応させて命令 例 2進 0011 1110 0000 1010 16進 3 E 0 A ⇒ 機械語 意味 Aレジスタに0Aという値をいれる 少し人間にわかるように記述 ⇒ アセンブリ言語 ↓ LD A、10 機械語に変換する仕組みを作っておく ※[10]進数 ・[0~9]までの[10]種類の数字を使ってあらわす。[9]より大きい量は桁を使って表す。 ・ある桁は1つ右の桁の[10]倍の量 ※[2]進数 ・[0~1]までの[2]種類の数字を使ってあらわす。[1]より大きい量は桁を使って表す。 ・ある桁は1つ右の桁の[2]倍の量 ※[16]進数 ・[0~F]までの[16]種類の数字・文字を使ってあらわす。[F]より大きい量は桁を使って表す。 ・ある桁は1つ右の桁の[16]倍の量 10進 2進 16進 0 0 0 1 1 1 2 10 2 3 11 3 4 100 4 5 101 5 6 110 6 7 111 7 8 1000 8 9 1001 9 10 1010 A 11 1011 B 12 1100 C 13 1101 D 14 1110 E 15 1111 F 16 1 0000 10 17 1 0001 11 18 1 0010 12 ○プログラム言語 ・機械語(1950年) ↓ ・アセンブリ言語 → Cobol → Fortran → ALGON(1960) →C(1972)→C++(1982)→JAVA(1990) ○構造化プログラミング ・手続きをいくつかの単位にわけメインとなる部分で大まかな処理を記述し細部をサブルーチンで記述する >プロシージャ・ルーチン・サブルーチン・メソッド・関数などの一連の働きを持ったものを任意の時点で呼び出せる タイプのプログラミング言語 ⇒ 手続き型言語 ○構成要素 ・順次・順接 : 上から順に一度ずつ実行する ┓ ・分岐 : 条件によって処理を分岐する ┣ これらの組み合わせで解を得る ・反復 : 指定回数繰り返し ┛ アルゴリズム ○コンパイラ freecommandlinetools2.exe コンパイラ setbcc15b.exe コンパイラの環境設定 ○C言語コンパイル コンパイラインストール borlandCコンパイラは、インストール先のbin\bcc32.exeでコンパイル コマンドプロンプト上で実行するには、パスの設定が必要 コマンドをどこのフォルダから探してくるのかを設定 パスの設定 環境変数PATH プログラムを書く ↓ c \c\rei1-1.cで保存 ↓ 機械語に変換したファイルを作る ↓ コマンドプロンプトで bcc32 rei1-1.c ↓ .exe .obj .tdsのファイルが作成される ソースファイル : そのファイル コーディング : ソースコードの記述 バグ : プログラマが意図しない動作 デバッグ : バグの修正 ○rei1-1.c #include stdio.h ヘッダーファイル int main (void) 関数の型(整数) 関数名(最初に実行される関数) (関数を実行するために必要な情報:引数)VOID=なし { printf ( Hello World! ); ┓ 関数名 引数 ┃関数の処理内容 return 0; ┛ } Printf関数 : 引数を画面に出力する関数 ライブラリ関数 : あらかじめ用意されている関数 ヘッダーファイル : ライブラリ関数についての情報が書かれてるファイル(これがないとライブラリ関数が使えない) rei1-1.c コマンドプロンプト bcc32 rei1-1.c ↓ ヘッダーファイルの展開 ↓ STDUO.Hの内容 ↓ rei1-1.obj 機械語に変換されたファイル ライブラリ(ライブラリ関数の機械語形式のファイル) ↓ rei1-1.exeライブラリ関数も含めた機械語のファイル ○コメント ・コンパイルの対象にならない文字列 /* コメント */ // コメント ←1行 ・ソースコード内で、改行・空白文字・タブは挿入可 ・全角の空白文字は記述しない ○printf関数はプログラム内の情報も出力できる >rei1-6.c printf( 10と5の和は%dです。 ,10+5); ━ %フォーマット指定子 d整数 printf(引数1,引数2); 引数1の%dというところに表示される値を、引数2から取り出す ○printfのフォーマット指定子 ・%d 整数 ・%f 実数(浮遊小数点) ・%lf 〃 ・%c 1文字⇒文字データは で囲む ・%s 文字列⇒文字列は で囲む ・%X 16進数 ○エスケープシーケンス 記号 意味 \a ベル文字(アラート) \b 1文字分戻る \f ページ送り(クリア) \n 改行、復帰 \r 同じ行の先頭に戻る \t 水平タブ \v 垂直タブ \\ \を表示 \? ?を表示 \ シングルクォーテーション( )を表示 \ ダブルクォーテーション( )を表示 \0 ヌル \N 8進定数(Nは8進数の定数) \xN 16進定数(Nは16進数の定数) ○変数 ・データを一時的に格納する器 ・変数の作り方 >宣言 例 int x; ━ ━ 型 変数名 ・int 整数 ・char 文字データ ・float 浮遊小数点数 ・double 倍精度浮動小数点数 ・void 値なし
https://w.atwiki.jp/juria/pages/139.html
@あれこれ-2011年5月 [2011-05-06]ツイート回数が増えるかも知れないわけ bookmark_hatena [2011-05-01] (更新)あふwでテキスト編集 bookmark_hatena [2011-05-06] ツイート回数が増えるかも知れないわけ bookmark_hatena TweetConsole ver0.7.3 コマンドプロンプトから実行するTwitterクライアント(OAuth認証対応) 画像は、xyzzy から twtcnsl を実行中(#1)。(認証は普通にcmdから済ませておく。) 1.始めに twtcnsl.exe をオプション無しで起動、 Twitterアカウントのアプリケーション認証とPINを取得(標準のブラウザが起動) [暗証番号]にPINを入力→Enter ユーザ設定は以下に保存される。 C \Documents and Settings\ユーザ\Local Settings\Application Data\TweetConsole 2.保存されるtwitterアカウントは一つのみで、複数アカウントを使い分けたい場合 /c ユーザ名 で切り替える。一旦切り替えると、古い認証番号は使えず、 その都度アプリケーション認証と新しいPINが必要になる。 3.ユーザ設定完了後は、コマンドラインオプションを指定して操作 (対話モードに入ったら、オプションから入力する。) twtcnsl /t つぶやく twtcnsl /r 自分のタイムラインを一件ずづ読み出し twtcnsl /d 自分のつぶやきを削除 twtcnsl /u 現在のユーザを確認 twtcnsl /c [アカウント] Twitterのアカウントを切り替える twtcnsl /ru [ユーザ名] 指定したユーザのつぶやきを一件ずつ読み出し twtcnsl /txt hoge.txt 指定したテキストファイルの内容を一行ずつ分割投稿 exitで終了 取得したつぶやきへの返信や公式RTも可能。 その他、リツイートやmentionやlistの読み出し、検索も可能。 もちろん、ckw+nyaosなどのcmd以外のshellからも実行可能。 但し、Meadowやxyzzyからshellを呼び出すなどコンソール入力がファイルから リダイレクトされている時や、コンソールが非表示になる場合に、/r など 読み出すコマンド実行後に「ハンドルされていない例外」で異常終了するので注意。 コマンド実行中(入力待ち)のキャンセルはCtrl-Cで終了させるしかない? #1:[M-x shell] で起動する shell を nyaos にし、nyaosにエイリアスを設定。 .xyzzyに (setq *eshell* "nyaos") _nyaに alias tweet D \path\to\TweetConsole\twtcnsl.exe Meadowなら、Eshellにエイリアスを設定 ~/.eshell/aliasファイルに以下のように追加 alias ll ls -l または、Meadowからeshellを起動して(M-x eshell) $ alias ll ls -l のように入力→Enterでaliasファイルに追加してくれる ・aliasファイルは一度でもeshellでコマンドを実行すれば自動で作成される ・それぞれシングルクォート( )の有無に注意 ・参考: EmacsWiki Eshell Alias [2011-05-01] (更新) plugin_right is not found. please feed back @wiki. あふwでテキスト編集 bookmark_hatena ファイラーとテキストエディタは切っても切れない関係なのに 永遠の命題のような気がします。 常用のテキストエディタxyzzyにもファイラーが付いてますが、 やっぱ、「あふw」でしょ、 と言うわけで、(キーバインド的に)百歩譲って、○年ぶりに Meadow を弄ってます。 以下、 「あふw」1.27β+ afxckw v.0.1.x版+ckw20110430 + Nyaos 3.x + Meadow-3.02-r4261-3 を利用。 日本語入力は自動的にquail+kkc(Kana-Kanji conversion)になるので ご注意あそばしますよう。(特に設定は不要。Ctrl+\で日本語入力ON/OFF、Spaceで変換、 使い方・キーバインドの詳細は M-x list-input-methodsしてjapaneseの上でEnter) パスの補完はCtrl+TABかCtrl+O afxckw v0.1.0 - フルスクリーン対応版 は、 VC9のランタイム(mfc90.dllとか)を入れてないので未テスト→いつの間にか入ってた^^; [2011-05-07]追記 afxckw v0.1.0 - フルスクリーン対応版 afxckw v0.1.1 にて Meadowの画面サイズ変更追随を確認しましたので、以下、フルスクリーン対応版に 関する記述を追加しました。 注意・制限など mw32用の設定の記述があると起動時に警告、それ以降の設定が無効になる場合も。 Meadow GUIの拡張lispがCUIでも使えるとは限らない。 gnuclient(w)に-nwオプションは使えないので、環境変数にRUNEMACSを設定すると Meadow GUIが立ち上がってしまう。 従って、初回はmeadow -nwで起動し、2つ目のファイル以降にgnuservを使う。 gnuservでファイルをMeadowに渡しても、フォーカスは「あふw」のまま。 Mule-UCS Unicodeが使えるかどうかは未確認 「あふw」がフォーカスを失うと、Meadowにあったフォーカスが「あふw」窓に 移ってしまう(afxckwの制限)。 Meadowまたはnyaosを終了させる前に「あふw」にフォーカスを戻すか、または afxckwを先に終了させないと、「あふw」がフォーカスを失ったままになる。従って 全て終了させ「あふw」に戻るのに3回の操作が必要。(v0.1.0までは問題なし) →afxckw v0.1.2+ckw_0.9.0-mod-d4 にて修正されました。 既にafxckw+Meadowがメッセージ窓サイズで起動している場合に、フルサイズ指定で (-F,-f)コマンドを実行すると表示が変になったり、Meadowが終了できなくなる。 →afxckw v0.2.0+ckw_0.9.0-mod-d5 にて、フルスクリーン表示⇔メッセージ窓表示 切り替えのトグルができるようになりました(F11キー)。 ckwで日本語入力ができない。 →afxckw v0.2.0+ckw_0.9.0-mod-d5 にてIME日本語入力対応。 →Meadow や Meadow から shell,shell-command を呼び出した場合の日本語入力は KKC。IME が ON になっていると、KKC が使えなくなるので、Meadow 起動時は IMEは 常に OFF で。([2011-05-10]追記) afxckwの設定は済んでいるものとします。 1.Meadowの準備 NetinstallerでDLのみを選択、もしくは Meadow-3.02-r4261-3-pkg.tar.bz2 を DLし、任意のディレクトリに展開、 (念のため)install.exeを実行。 基本、「あふw」+afxckw+Meadowで画像は扱わないのでImageMagickは不要。 (1)環境変数[HOME]をフルパスで設定する HOME=E \HOME (2)設定した[HOME]ディレクトリに[.emacs]ファイルを作成 (GNU Emacsでも、HOMEに.emacsがあれば.emacs.d/init.elより先に読み込むし Meadow GUIを既に使用中であれば、MS-DOSモード用に別途.emacsを指定して 起動したほうが良いかも。) (3) GNUServ をDL、 gnuserv.elを\Meadow\site-lisp\に置き、 実行ファイル一式(gnuclientw.exeだけでも)をパスが通ったところに置く。 (3).emacsの最低限の設定 .emacs ; 言語を日本語にする (set-language-environment Japanese) ;; MS-DOS(text-mode) ;特に設定しなくてもShift-JISでCR+LFになる ;(prefer-coding-system shift_jis-dos) ;(set-keyboard-coding-system shift_jis-dos) ;(set-clipboard-coding-system shift_jis-dos) ;; けど明示的にCP-932を指定する ;(prefer-coding-system cp932-dos) ;(set-keyboard-coding-system cp932-dos) ;(set-clipboard-coding-system cp932-dos) ;(set-file-name-coding-system cp932-dos) ;; UTF-8なら (prefer-coding-system utf-8-dos) (set-buffer-file-coding-system utf-8-dos) (set-keyboard-coding-system utf-8-dos) ;(set-clipboard-coding-system utf-8-dos) (set-file-name-coding-system utf-8-dos) ;;; UTF-8、Shift-jis(CP-932)のファイルそれぞれの文字コードで読み書き ;;; かつ、dired、shell-commandでも日本語ファイル名OK ;;; (某「NTEmacs スレッド 2」757氏からの頂きもの) (if (not (string-match "-D_UNICODE" system-configuration-options)) (set-keyboard-coding-system cp932)) (prefer-coding-system utf-8-dos) (set-file-name-coding-system cp932) (setq default-process-coding-system (cp932 . cp932)) (modify-coding-system-alist process "[cC][mM][dD][pP][rR][oO][xX][yY]" cp932) ;;; gnuserv (require gnuserv) (gnuserv-start) ;(setq gnuserv-frame (selected-frame)) ;新しいフレームを開かない設定→無関係 (setq mode-line-frame-identification " ") ;だからフレーム番号表示もいらない ;;; メニューバーを消す (menu-bar-mode -1) ;;; 警告音を消す (set-message-beep silent) ;;; If non-nil, use type \"nn\" to insert ん. (setq quail-japanese-use-double-n t) 2.afxckwとNyaosを用意、設定をする。 (1)nyaos.exeと_nyaファイルをAFW.EXEと同じ場所に置く。 nyaos.exeをそれ以外の場所に置くなら、ckw.cfgでフルパスを指定、 _nyaファイルは環境変数HOMEに設定した場所に置く。(2)参照 _nyaの設定 必要なら配色の設定をする。指定が無ければckw.cfg指定の色。ただし、 Nyaosで使える色は少ないので、Nyaosのプロンプトの色ぐらいにして ckw.cfgで設定した方が多彩。けど、それもMeadowのFaceの色に影響するので (混ざって変色)注意。(2)参照 _nya (前略) ### エイリアス(#1) alias tweet D \path\to\TweetConsole\twtcnsl.exe (中略) ### 配色の設定 #option prompt $e[32;42;1m[$p]$e[37;1m option prompt $e[32;1m[$p]$e[37;1m # nyaos_ja.txtより # 30 前景色:黒 40 背景色:黒 0 初期状態に戻す # 31 前景色:赤 41 背景色:赤 1 高輝度 # 32 前景色:緑 42 背景色:緑 # 33 前景色:黄 34 背景色:黄 # 34 前景色:青 44 背景色:青 # 35 前景色:紫 45 背景色:紫 # 36 前景色:水 46 背景色:水 # 37 前景色:白 47 背景色:白 (後略) (2)afxckwとckw.exeをAFW.EXEと同じ場所に置き、ckw.cfgを作成する。 ckw.cfgの設定 ・Meadow CLIではWin32-IMEが使われないので、ここでKKC用のフォントを指定。 (例では MigMix 1M ) ・また、Meadowデフォルトのスクリーンも使われないので、ここの文字色・背景色 (Nyaosの設定次第)とフォントサイズが有効になる。 (MeadowのFaceの配色設定への影響に注意) ckw.cfg ! ckw setting ! !文字はペールピンク、背景はブルー系、 !カーソルはミントグリーン、IMEのカーソル設定はピンク Ckw*foreground #F9EDED Ckw*background #8080C0 Ckw*cursorColor #90EE90 Ckw*cursorImeColor #FFB6C1 !ckw にフォーカスがある時の枠の色(afxckw v0.3.0 以降) Ckw*focusColor #9136A1 (中略) Ckw*title ckw[cmd] !Ckw*exec cmd.exe Ckw*exec nyaos.exe !Ckw*exec D \path\to\afxw\nyaos.exe !Ckw*chdir c \ !Ckw*font MS Gothic Ckw*font MigMix 1M Ckw*fontSize 14 (後略) 3.「あふw」の設定 (1)拡張子判別実行にメニューファイルを指定(基本、テキスト編集ってことで) 拡張子:txt cfg ahk ini bat ahk csv emacs el key cssなどなど Shift+Enter: PMENU $~\Menu\txt.txt txt.txt afx テキスト "Meadowを起動(下)" $~\afxckw.exe -E D \path\to\Meadow\bin\Meadow.exe -nw "Meadowを起動(全)" $~\afxckw.exe -F D \path\to\Meadow\bin\Meadow.exe -nw "Meadowで開く(下)" $~\afxckw.exe -E D \path\to\Meadow\bin\Meadow.exe -nw $MF "Meadowで開く(全)" $~\afxckw.exe -F D \path\to\Meadow\bin\Meadow.exe -nw $MF "gnuservで開く" gnuclientw $MF (2)afxckw用のメニューを作って「キー定義」やAFXW.KEYで設定してもOK K0004="3073 MENU $~\Menu\afxckw.txt" afxckw.txt [2011-05-05,07,09] 追記 afx afxckw ;"run" $~\afxckw.exe "run" SENDKEY 3067 (#2) ;"exit" $~\afxckw.exe -e exit "exit" SENDKEY 5081 (#3) "送信する" $~\afxckw.exe -E $IT""$I4"AFXCKW COMMAND" (#4) "twtcnslでツイート" $~\afxckw.exe -E $IT"tweet"$I4"AFXCKW COMMAND" (#5) ; Alt+F "あふでけんさく" SENDKEY 4070 ;セパレータ - "afxyzzy(全)" SENDKEY 3069 "Meadow" PMENU $~\Menu\Meadow.txt (#6) - "Lynx" D \path\to\AutoHotkey.exe $~\afxckwLynx.ahk #1,#4,#5:_nyaにコマンドのエイリアスが設定してあれば、短縮語を入力して コマンドを送信→実行が可能。但し、Meadowが起動していない場合のみ。 よく使うコマンドは予め入力済みにしおいてもOK #2,#3:AFXW.KEYに既に設定されているキーを指定することも可能 #6:共通のメニューは別のファイルにして、それぞれサブメニューにしてもいいし。 -
https://w.atwiki.jp/usapfrog/pages/39.html
代表的なMPIソフト、MPICH2での並列計算方法の構築手順など。 CentOS Linux 6.5, mpich2 1.2.1。 ネットワークで繋がった複数の独立マシン間を通信する場合について扱う。 主にmpdの場合について扱うけど、バージョンが新しいhydra使うタイプのがずっと楽なので、 yumが対応してない場合は自分でビルドしたほうが良いかも。 1.双子マシンを準備する 最低限、Linuxのディストリビューションは揃える。 (CentOSとFedraで試したら、MPIライブラリの関係で駄目だった。) ユーザー名も共通の物を準備しておく。 2.MPICH2のインストール 全マシンに。バージョンも揃えたほうがよい。 gcc, gfortranで良いなら、yumで mpich2とmpich2-develを取ってくる。 インテルやPGIのコンパイラを使いたければ、 環境変数CC, F77などを指定した後に自分でビルドする。 自分でビルドしたときは、/usr/local/mpich2以下のbinをPATHに、libをLD_LIBRARY_PATHに忘れずに追加する。 (参考) MPICH2 downloads PGIコンパイラによる MPICH2 ライブラリ環境の構築(Linux)プロセス管理として MPD を使用 Intel CompilerとMPICH2のインストールメモ 3./etc/hostsの整備 これも全マシンで共通のほうがよい。例えば以下のとおり。 # vi /etc/hosts 127.0.0.1 localhost 192.168.1.2 server 192.168.1.3 client1 192.168.1.4 client2 server1などがhostnameをと違う場合はhostnameも登録しておくこと。 hostnameの調べ方はそのまま。 $ hostname きちんとserver-clientマシン間でpingが通るかも確認する。 4.パスなしでssh通信の確立 RSA鍵認証でパスを打たなくてもseverからclientにsshできるようにしておく。 serverでssh-keygenをして、改行を連打(パスフレーズはいれない) [server] $ ssh-keygen 公開鍵をclient全員に送る [server] $ cd ~/.ssh $ scp id_rsa.pub client1 client側で公開鍵を登録する。パーミッションに注意する。 [client] $ cd $ cat id_rsa.pub .ssh/authorized_keys $ rm id_rsa.pub $ chmod 700 .ssh $ chmod 600 .ssh/authorized_keys (rootの場合)クライアント側でSELinuxを無効にする。 # setenforce 0 # vi /etc/sysconfig/selinux SELINUX=disabled に変更 server側でパス無しでsshが動作するか確認する。 [server] $ ssh client1 date (参考) ssh にてパスワードを使用しないでログインする方法 SSHのパスワード無しログイン設定(パスフレーズ無し版) 5..mpd.confの準備、mpdの動作チェック hydraを使う場合は飛ばしてよい。 全マシンでsercretwordは共通とする。スペースや改行、形式も厳格に同じで。 後述するmpdboot時のエラー(handle_mpd_output 407)(handle_mpd_output 420)は主に.mpd.conf関連で発生するらしい。 $ vi .mpd.conf secretword=hoge $ chmod 600 .mpd.conf mpdが正常に動作するか確認する。 $ mpd $ mpdallexit mpdallexitはmpdデーモンの終了コマンド。 (参考) MPICH2におけるmpdboot時の407エラー handle_mpd_output 420 6.シングルプロセスおよびサーバのみでの実行テスト 以下のようなプログラム。 [~/mpitest.c] #include unistd.h #include "mpi.h"int main(int argc, char **argv){ int len,ierr; int my_rank; char hname[32]; len = 32; MPI_Init( argc, argv ); MPI_Comm_rank(MPI_COMM_WORLD, my_rank); gethostname(hname,len); printf("My name is %s, Rank = %d \n",hname, my_rank); MPI_Finalize( ); return 0;} コンパイルして、単純実行する、単マシンでのmpiexecを試す。 $ mpicc mpitest.c $ ./a.out [server, mpd] $ mpd $ mpiexec -n 4 ./a.out $ mpdallexit [server, hydra] $ mpiexec -n 4 ./a.out 以降しばらくmpdの場合。hydraを使う場合は、9-hydraまで飛ばしてよい。 7.ファイアウォールを切るかポート開放する mpich2はssh22番以外のポートも経由して通信する。 支障がなければファイアウォールを切ってしまうのが早い。 CentOSは以下のコマンド。 [全マシン] # /etc/init.d/iptables stop (Fedra Coreは # systemctl stop iptables.service だった。) ファイアウォールを維持して、計算したい場合はMPICHの使用するポートを環境変数で指定する。 (1プロセス1ポート使うので、ある程度の範囲は確保すること。狭すぎるとmpiexecで実行時にエラーが出る。) [全マシン] $ vi .bashrc $ export MPICH_PORT_RANGE=57700 57800 その後、OS付属のファイアウォールツールや手動iptableなどで該当ポートを開放する。 CentOSなら、 # system-config-firewall のその他から、57700-57800 TCPを指定し、iptableの再起動をする。 # /etc/init.d/iptables restart (参考) mpich2 readme. - Argonne National Laboratory 8.mpdcheckでの相互通信の確認 [server] $ mpdcheck -s で出てくるホスト、ポートをクライアント側で下記入力する。 [client] $ mpdcheck -c [server] [port] 無事通信できると以下のメッセージが出力される。 [server] server successfully recvd msg from client hello_from_client_to_server [client] client successfully recvd ack from server ack_from_server_to_client 9.mpd.hostsの準備、mpdbootで手をつなぐ mpd.hostsに計算に使用するサーバ、使用可能プロセス数を指定する。 [server] $ vi mpd.hosts server 2 client1 2 client2 4 mpdbootでclientマシンと連結する。ファイル名がmpd.hostsなら-f以下は省略可能。-n以降はマシン数を指定する。 [server] $ mpdboot -n 3 -f mpd.hosts エラーが出たら、--debugオプションを付けると詳細な原因を出力してくれる。 $ mpdboot -n 3 --debug ファイアーウォールで引っかかると、(handle_mpd_output 407)エラーがでるので、上の設定を見直す。 /usr/bin/mpd.py以外にmpd.pyがあるためエラー(handle_mpd_output 420)となる場合は clientの該当箇所にシンボリックリンクを貼るなどして対応する。 無事起動し、クライアントを認識しているかはmpdtraceで確認できる。 $ mpdtrace 10.実行(mpiexec, mpd) mpdboot後、mpiexecで実行する。-nはプロセス数を指定する。 [server] $ mpiexec -n 6 ./a.out 結果。通常順番はバラバラである。 My name is server, Rank = 0 My name is server, Rank = 1 My name is client1, Rank = 2 My name is client1, Rank = 3 My name is client2, Rank = 4 My name is client2, Rank = 5 MPI系の実行エラーが出た場合は上記の使用ポート範囲が狭過ぎないか確認すること。 mpdを終了する。 [server] $ mpdallexit 9-hydra.ホストの準備・実行ファイルの転送 適当なファイルmpi.hostsに計算に使用するサーバ、使用可能プロセス数を指定する。 [server] $ vi mpi.hosts server 2 client1 2 client2 4 NFSなどでストレージを共有してない場合、各マシンの同階層にプログラムを転送する必要がある。 [server] $ scp a.out client1 $ scp a.out client2 mpi.hostsを使った全送信スクリプトなんかを組んでしまうと楽。 [bcast.sh (転送ファイル)] 現在ディレクトリを全クライアントノードに作成し、scpでファイルを転送する。 #!/bin/bashCWD=`pwd`FILE=$1NUL=/dev/null if [ $# -eq 0 ] ; then echo "no file specified." exit 1fi for h in `cat mpi.hosts`; do host=${h%% *} if [ $host != `hostname` ]; then echo $host ssh $host ls $CWD 1 $NUL 2 $NUL if [ $? -ne 0 ]; then ssh $host mkdir $CWD fi ls $FILE 1 $NUL 2 $NUL if [ $? -eq 0 ]; then scp $FILE $host $CWD fi fidone $1=引数, $#=引数の数, $?=前コマンドの戻り値, %%=最大マッチの後方置換,ワイルドカード * つき 10-hydra.実行(mpiexec,hydra) mpiexecで実行する。-nはプロセス数, -fはホストファイルを指定する。結果は上記と同じ。 [server] $ mpiexec -n 6 -f mpi.hosts ./a.out びっくりするほど楽です。hydra版はドキュメントの少なさがネックかな。 参考 MPICH2 UIKYO.NET MPICHインストール CentOS 6.2 に mpich2 をインストール PGIコンパイラによる MPICH2 ライブラリ環境の構築2(Linux)プロセス管理としてデフォルトの Hydra を使用
https://w.atwiki.jp/ohden/pages/336.html
Java SDKのinstall方法。 【for Ubuntu 10.04 LTS】 環境 Ubuntu 10.04 LTS Install $ sudo apt-get install sun-java6-jdk 上記コマンドでpkgが見つからない場合は、 $ sudo add-apt-repository "deb http //archive.canonical.com/ lucid partner" $ sudo apt-get update $ sudo apt-get install sun-java6-jdk で、よう見んとしょったら...何かエラー出た...(..;) 色々やって結局、 $ sudo apt-get -f install ってやったらなんやかんや入れる事できたが... 『-f』ってなんだ? 説明読んでもようわからんが、壊れたインストール情報を修正するような機能なんかな? 一応、正しいパターンは、apt-getした後しばらくするとTUI環境が立ち上がる。 tab、space押下で次へ、選択肢のYes/Noはライセンスへの同意なので『Yes』を選択。 ちゃんと入ってれば、 $ java -version java version "1.6.0_22"Java(TM) SE Runtime Environment (build 1.6.0_22-b04)Java HotSpot(TM)Client VM (build 17.1-b03, mixed mode, sharing) $ javac -version javac 1.6.0_22 てな感じにversionが表示される。 過去のversionのInstall Linux向けのアーカイブを取得しようとすると2種類ある。 『.rpm.bin』はRedhut系のみなので、Debian系であるUbuntuは『.bin』を取得する。 Java Development Kit 5.0 Update 22jdk-1_5_0_22-linux-i586-rpm.bin 45.71 MBJava Development Kit 5.0 Update 22jdk-1_5_0_22-linux-i586.bin 47.46 MB link先をwgetすれば良いのですが... $ wget http //cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/VerifyItem-Start/jdk-1_5_0_22-linux-i586.bin?BundledLineItemUUID=K_GJ_hCygGwAAAEu3qUIRzOD OrderID=nM2J_hCy6XIAAAEuwqUIRzOD ProductID=EW5IBe.nXqsAAAEk2Q5UGl.X FileName=/jdk-1_5_0_22-linux-i586.bin とかすると、変な名前で落ちた...これでえぇんじゃろうか? まぁ、気を取りなおして名前の修正 $ mv jdk-1_5_0_22-linux-i586.bin\?BundledLineItemUUID\=K_GJ_hCygGwAAAEu3qUIRzOD jdk-1_5_0_22-linux-i586.bin パーミッション変更。 $ chmod 755 jdk-1_5_0_22-linux-i586.bin インストールしたいdirを作成して、そこへ移動して実行。よう知らんが、カレントdirにinstallされるらしい。 $ sudo mkdir /usr/local/java $ cd /usr/local/java $ sudo ~/wk/jdk-1_5_0_22-linux-i586.bin ※jdkをhomeの下にwkってdir作って格納してたので... あとは環境設定。 $ cd $ vi .bashrc .bashrcの最後に以下を追記。 #JavaSDKJAVA_HOME=/usr/local/java/jdk1.5.0_22PATH=$JAVA_HOME/bin $PATHCLASSPATH=$JAVA_HOME/lib/tools.jar export PATH JAVA_HOME CLASSPATH ※exportすることで当該shから呼び出した子sh、孫shでも環境変数が有効になる。 コレで完了。jdk6、jreに限らず似た様な感じ。 JDK5を入れたいんだけど、見つからない場合は... /etc/apt/sources.listに以下を追加 ※8.04LTS参照先 deb http //us.archive.ubuntu.com/ubuntu/ hardy multiverse deb http //us.archive.ubuntu.com/ubuntu/ hardy-updates multiverse で、 $ sudo apt-get update $ sudo apt-get install sun-java5-jdk でokらしい。 更新日: 2011年05月31日 (火) 12時56分58秒 名前 コメント すべてのコメントを見る