<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
		<id>http://hagio.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Hagio</id>
		<title>Wikinote - 利用者の投稿記録 [ja]</title>
		<link rel="self" type="application/atom+xml" href="http://hagio.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Hagio"/>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=%E7%89%B9%E5%88%A5:%E6%8A%95%E7%A8%BF%E8%A8%98%E9%8C%B2/Hagio"/>
		<updated>2026-04-28T03:43:22Z</updated>
		<subtitle>利用者の投稿記録</subtitle>
		<generator>MediaWiki 1.24.1</generator>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=Bash&amp;diff=1105</id>
		<title>Bash</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=Bash&amp;diff=1105"/>
				<updated>2023-10-11T07:58:25Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: /* プロンプトに色を付ける */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 参考文献 ==&lt;br /&gt;
* [http://mywiki.wooledge.org/BashFAQ BashFAQ - Greg's Wiki] これはすごい。特に以下の項目がためになる。&lt;br /&gt;
** [http://mywiki.wooledge.org/BashFAQ/031 What is the difference between test, [ and [[ ?]&lt;br /&gt;
** [http://mywiki.wooledge.org/BashFAQ/082 Why is $(...) preferred over `...` (backticks)?]&lt;br /&gt;
* [http://mywiki.wooledge.org/BashPitfalls BashPitfalls - Greg's Wiki] bash の落とし穴。これも必見。&lt;br /&gt;
&lt;br /&gt;
== シェルスクリプト ==&lt;br /&gt;
* $# - 引数の個数なので、スクリプト名は含まない。(要は最後のインデックス)&lt;br /&gt;
* [http://www.linux.or.jp/JF/JFdocs/Bash-Prog-Intro-HOWTO.html BASH Programming - Introduction HOW-TO]&lt;br /&gt;
* &amp;lt;code&amp;gt;$'string'&amp;lt;/code&amp;gt; の形式で特殊文字を出力できる。&amp;lt;code&amp;gt;$'\x30' = '0'&amp;lt;/code&amp;gt; など。&lt;br /&gt;
* $(cat file) とするなら、$(&amp;lt; file) の方が fork しないので速い。&lt;br /&gt;
&lt;br /&gt;
=== 配列 ===&lt;br /&gt;
迷宮入りするかと思うほど理解するのが難しかった。。&lt;br /&gt;
* 初期化 &amp;lt;code&amp;gt;array=(hoge fuga piyo)&amp;lt;/code&amp;gt;&lt;br /&gt;
** インデックス指定 &amp;lt;code&amp;gt;array=([2]=piyo [0]=hoge [1]=fuga)&amp;lt;/code&amp;gt; は↑と同じ配列。&lt;br /&gt;
* 参照 &amp;lt;code&amp;gt;${array[1]}&amp;lt;/code&amp;gt;&lt;br /&gt;
* 要素数 &amp;lt;code&amp;gt;${#array[@]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== コマンド実行結果を 1 行ごとに配列に格納する ====&lt;br /&gt;
区切り文字を改行にしておかなければ、1 行ごとに格納されない。&lt;br /&gt;
 IFS=$'\n'&lt;br /&gt;
 array=( $( ls -l ) )&lt;br /&gt;
&lt;br /&gt;
==== 配列に要素を追加 ====&lt;br /&gt;
これもハマった…。一旦展開するのがポイント。&lt;br /&gt;
 array=( &amp;quot;${array[@]}&amp;quot; &amp;quot;hoge&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
=== パラメータ展開 ===&lt;br /&gt;
スクリプトを書く際には便利なものの、忘れがちなので書いておく。&lt;br /&gt;
 ${parameter#pattern}   前方最短一致部分を削除&lt;br /&gt;
 ${parameter##pattern}  前方最長一致部分を削除&lt;br /&gt;
 ${parameter%pattern}   後方最短一致部分を削除&lt;br /&gt;
 ${parameter%%pattern}  後方最長一致部分を削除&lt;br /&gt;
わかりにくいので使用例を示す。&lt;br /&gt;
* コマンドのパスから、そのコマンドがあるディレクトリのパスを得る&lt;br /&gt;
 $ CMD_PATH=/usr/local/bin/hoge&lt;br /&gt;
 $ echo ${CMD_PATH%/*}&lt;br /&gt;
 /usr/local/bin&lt;br /&gt;
* ファイル名から、拡張子だけを取り出す&lt;br /&gt;
 $ FILE_NAME=hoge-1.2.txt&lt;br /&gt;
 $ echo ${FILE_NAME##*.}&lt;br /&gt;
 txt&lt;br /&gt;
&lt;br /&gt;
=== 無限ループ ===&lt;br /&gt;
こいつで 1 セクション作るのはどうかと思うが…、他に見出しを付ける方法がないので。&lt;br /&gt;
 while :&lt;br /&gt;
 do&lt;br /&gt;
   ''command''&lt;br /&gt;
 done&lt;br /&gt;
&amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; に真を渡す方法はいくつかあるが、bash 組み込みコマンド &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt; が一番速いと思われる。&lt;br /&gt;
* &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; コマンドに文字列を渡す (-n オプションは省略可能なので、文字列が渡されると必ず真が返る。)&lt;br /&gt;
* &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; コマンド&lt;br /&gt;
* &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt; コマンド&lt;br /&gt;
&lt;br /&gt;
=== getopts ===&lt;br /&gt;
こういう関数の使い方ってすぐ忘れるので、定型文化しておこう。&lt;br /&gt;
 GETOPT_ERR=0&lt;br /&gt;
 while getopts &amp;quot;i:nh&amp;quot; opt; do&lt;br /&gt;
     case $opt in&lt;br /&gt;
         i) INTERVAL=$OPTARG;;&lt;br /&gt;
         n) NOPRINT=1;;&lt;br /&gt;
         h) usage; exit 0;;&lt;br /&gt;
         ?) GETOPT_ERR=1;;&lt;br /&gt;
     esac&lt;br /&gt;
 done&lt;br /&gt;
 shift $(( $OPTIND - 1 ))&lt;br /&gt;
 &lt;br /&gt;
 if [ $GETOPT_ERR -eq 1 ]; then&lt;br /&gt;
     usage&lt;br /&gt;
     exit 1&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
=== trap ===&lt;br /&gt;
&lt;br /&gt;
テストスクリプトなどを書く場合のゴミ掃除には必須だが、毎回使い方を忘れるのでメモ。&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;ARG&amp;lt;/code&amp;gt; が無い or &amp;lt;code&amp;gt;'-'&amp;lt;/code&amp;gt; の場合は、初期値にリセット。&lt;br /&gt;
* &amp;lt;code&amp;gt;ARG&amp;lt;/code&amp;gt; が空文字列 &amp;quot;&amp;quot; の場合は、そのシグナルを無視する。&lt;br /&gt;
* &amp;lt;code&amp;gt;EXIT&amp;lt;/code&amp;gt; は終了時、&amp;lt;code&amp;gt;RETURN&amp;lt;/code&amp;gt; は関数や source の終了時。&lt;br /&gt;
&lt;br /&gt;
== Tips ==&lt;br /&gt;
&lt;br /&gt;
=== コマンド実行後に任意の処理を行う ===&lt;br /&gt;
bash には PROMPT_COMMAND という環境変数があり、これに任意のコマンドをセットすると、&lt;br /&gt;
コマンド実行後に自動的に実行される。&lt;br /&gt;
&lt;br /&gt;
例えば date をセットすると、コマンドを実行した日時が出力されるようになる。&lt;br /&gt;
&lt;br /&gt;
 kuro:~ kaz$ PROMPT_COMMAND=date&lt;br /&gt;
 2009年 6月12日 金曜日 01時41分46秒 JST&lt;br /&gt;
 kuro:~ kaz$ ls&lt;br /&gt;
 Desktop   Documents Downloads Library   Movies    Music     Pictures  Public    Sites&lt;br /&gt;
 2009年 6月12日 金曜日 01時41分50秒 JST&lt;br /&gt;
&lt;br /&gt;
追記：&amp;lt;br&amp;gt;&lt;br /&gt;
これ変数の名前から考えたら、コマンド実行後に実行されるんじゃなくて、&lt;br /&gt;
プロンプト表示前に実行されるんですな。結果はどちらでも同じだけど。&lt;br /&gt;
&lt;br /&gt;
==== コマンドの終了ステータスを自動的に表示する ====&lt;br /&gt;
上記 PROMPT_COMMAND を使用して、コマンドがエラーで終了した場合などに終了ステータスを自動的に表示するようにする。&lt;br /&gt;
終了ステータスはコマンド実行直後に表示しないと次のコマンド実行により上書きされてしまうため、&lt;br /&gt;
うっかり操作により見逃してしまうことがあるが、自動的に表示することでこれを避けることができる。&lt;br /&gt;
&lt;br /&gt;
~/.bashrc に以下を追加する。&lt;br /&gt;
 function prompt_cmd {&lt;br /&gt;
     local ret=$?&lt;br /&gt;
     [ $ret -eq 0 ] || echo &amp;quot;exit $ret&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 PROMPT_COMMAND=&amp;quot;prompt_cmd; $PROMPT_COMMAND&amp;quot;&lt;br /&gt;
&lt;br /&gt;
実行結果のサンプル：&lt;br /&gt;
&lt;br /&gt;
 $ echo hoge&lt;br /&gt;
 hoge&lt;br /&gt;
 $ cat hoge&lt;br /&gt;
 cat: hoge: そのようなファイルやディレクトリはありません&lt;br /&gt;
 exit 1&lt;br /&gt;
 $ hoge&lt;br /&gt;
 bash: hoge: command not found&lt;br /&gt;
 exit 127&lt;br /&gt;
&lt;br /&gt;
=== プロンプトに色を付ける ===&lt;br /&gt;
コマンドの出力の境界がわかりやすくなったり、&lt;br /&gt;
root になっているかどうかを色で判別できたり、かなり便利なこの機能。&lt;br /&gt;
&lt;br /&gt;
.bashrc に以下を追記する。&lt;br /&gt;
 if [ -n &amp;quot;$PS1&amp;quot; ] ; then&lt;br /&gt;
     col=&amp;quot;0;33&amp;quot; # yellow&lt;br /&gt;
     PS1=&amp;quot;\[\033[${col}m\][\u@\h \W]$ \[\033[0m\]&amp;quot;&lt;br /&gt;
          ^^^^^^^      ^^^            ^^^^^^^^^^^&lt;br /&gt;
      色のエスケープシーケンス     色の設定をクリア&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
※当初、\e で書いていたが、カーソル位置と表示がズレる問題が発生したので修正した。&lt;br /&gt;
&lt;br /&gt;
カラーリスト&lt;br /&gt;
 Black       0;30     Dark Gray     1;30&lt;br /&gt;
 Blue        0;34     Light Blue    1;34&lt;br /&gt;
 Green       0;32     Light Green   1;32&lt;br /&gt;
 Cyan        0;36     Light Cyan    1;36&lt;br /&gt;
 Red         0;31     Light Red     1;31&lt;br /&gt;
 Purple      0;35     Light Purple  1;35&lt;br /&gt;
 Brown       0;33     Yellow        1;33&lt;br /&gt;
 Light Gray  0;37     White         1;37&lt;br /&gt;
&lt;br /&gt;
* [http://linuxjf.sourceforge.jp/JFdocs/Bash-Prompt-HOWTO-5.html Bash Prompt HOWTO: ANSI エスケープシーケンス: 色とカーソル操作]&lt;br /&gt;
&lt;br /&gt;
=== ある数を n ビットシフトした数 ===&lt;br /&gt;
カーネルソースを読んでいると、&amp;lt;code&amp;gt;512 &amp;lt;&amp;lt; 16&amp;lt;/code&amp;gt; などという数値が出てくることがあるが、&lt;br /&gt;
わざわざ計算機を持ち出さなくても、bash で計算できる。&lt;br /&gt;
 $ echo $((512 &amp;lt;&amp;lt; 16))&lt;br /&gt;
 33554432&lt;br /&gt;
bash で計算できるということは、vi を使っていても、終了せずに計算できる。&lt;br /&gt;
 :!echo $((512 &amp;lt;&amp;lt; 16))&lt;br /&gt;
 33554432&lt;br /&gt;
&lt;br /&gt;
=== 直前にいたディレクトリに戻る ===&lt;br /&gt;
&amp;lt;code&amp;gt;OLDPWD&amp;lt;/code&amp;gt; 環境変数には、直前にいたディレクトリが格納されているので、&lt;br /&gt;
 $ cd $OLDPWD&lt;br /&gt;
で戻ることができるが、cd に - を渡しても同様の結果となる。&lt;br /&gt;
 $ cd -&lt;br /&gt;
深いディレクトリにいて、いったんホームディレクトリに行って帰ってくる場合などに便利だ。&lt;br /&gt;
&lt;br /&gt;
== よく使うコマンド ==&lt;br /&gt;
* 行頭にジャンプ：C-a　行末にジャンプ：C-e&lt;br /&gt;
* 行頭までキル：C-u　　行末までキル：C-k&lt;br /&gt;
* 前単語をキル：C-w&lt;br /&gt;
* ヤンク：C-y&lt;br /&gt;
* 直前のコマンドの最後の引き数を挿入：M-. (これは便利)&lt;br /&gt;
* キャンセル：C-g&lt;br /&gt;
* 後方検索：C-r (これらは使い方が難しい)&lt;br /&gt;
* 前方検索：C-s&lt;br /&gt;
* 最終行へ：M-&amp;gt; (Poderosa では打ちにくい…)&lt;br /&gt;
&lt;br /&gt;
== 起動時の設定ファイルの読み込み順序 ==&lt;br /&gt;
&lt;br /&gt;
* ログインシェルの場合 (ログイン時、su - user 時など)&lt;br /&gt;
*# &amp;lt;code&amp;gt;/etc/profile&amp;lt;/code&amp;gt;&lt;br /&gt;
*#* 最後に &amp;lt;code&amp;gt;/etc/profile.d/*.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
*# &amp;lt;code&amp;gt;~/.bash_profile&amp;lt;/code&amp;gt;&lt;br /&gt;
*#* 最初に &amp;lt;code&amp;gt;~/.bashrc&amp;lt;/code&amp;gt;&lt;br /&gt;
*#** 最初に &amp;lt;code&amp;gt;/etc/bashrc&amp;lt;/code&amp;gt;&lt;br /&gt;
よって、記載順にもよるが、設定順は以下の通り。&lt;br /&gt;
 /etc/profile -&amp;gt; /etc/profile.d/*.sh -&amp;gt; /etc/bashrc -&amp;gt; ~/.bashrc -&amp;gt; ~/.bash_profile&lt;br /&gt;
&lt;br /&gt;
* ログインシェルでない場合 (bash 実行時、su user 時など)&lt;br /&gt;
*# &amp;lt;code&amp;gt;~/.bashrc&amp;lt;/code&amp;gt;&lt;br /&gt;
*#* 最初に &amp;lt;code&amp;gt;/etc/bashrc&amp;lt;/code&amp;gt;&lt;br /&gt;
*#** 最後に &amp;lt;code&amp;gt;/etc/profile.d/*.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
よって、記載順にもよるが、設定順は以下の通り。&lt;br /&gt;
 /etc/bashrc -&amp;gt; /etc/profile.d/*.sh -&amp;gt; ~/.bashrc&lt;br /&gt;
&lt;br /&gt;
su 実行時に open() されるファイルは以下のコマンドで確認できる。&lt;br /&gt;
 # strace -f -e trace=open -o su-bash.strace su - hagio&lt;br /&gt;
&lt;br /&gt;
== その他 (細かいこと) ==&lt;br /&gt;
* &amp;lt;code&amp;gt;export&amp;lt;/code&amp;gt; は、その変数を子プロセスに引き継ぐ場合に用いる。&lt;br /&gt;
 # cat test.sh &lt;br /&gt;
 echo $TEST&lt;br /&gt;
 # sh test.sh &lt;br /&gt;
 &lt;br /&gt;
 # TEST=hoge&lt;br /&gt;
 # sh test.sh&lt;br /&gt;
 &lt;br /&gt;
 # TEST=hoge sh test.sh&lt;br /&gt;
 hoge&lt;br /&gt;
 # export TEST&lt;br /&gt;
 # sh test.sh&lt;br /&gt;
 hoge&lt;br /&gt;
&lt;br /&gt;
一度 export された変数は、値を書き換えても export されたままなので、&lt;br /&gt;
LANG などはその都度 export しなくても、実行するコマンドに渡される。&lt;br /&gt;
&lt;br /&gt;
* Meta キーは、ESC キーあるいは Ctrl-[ で代用可。(Poderosa では有用)&lt;br /&gt;
* bash のビルトインコマンドの説明を見るには、help コマンドが良い。man だと検索が面倒。&lt;br /&gt;
&lt;br /&gt;
== My .bashrc ==&lt;br /&gt;
カスタマイズしたものに慣れてしまうと、素の状態にすぐに適応できなくなってしまうので良くないが、&lt;br /&gt;
それでも背に腹は代えられないモノたち。&lt;br /&gt;
&lt;br /&gt;
 # .bashrc&lt;br /&gt;
 &lt;br /&gt;
 # Source global definitions&lt;br /&gt;
 if [ -f /etc/bashrc ]; then&lt;br /&gt;
     . /etc/bashrc&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 # User specific aliases and functions&lt;br /&gt;
 umask 022&lt;br /&gt;
 &lt;br /&gt;
 HISTSIZE=10000&lt;br /&gt;
 HISTFILESIZE=10000&lt;br /&gt;
 &lt;br /&gt;
 function prompt_cmd {&lt;br /&gt;
     local ret=$?&lt;br /&gt;
     &amp;lt;nowiki&amp;gt;[[ $ret -eq 0 ]]&amp;lt;/nowiki&amp;gt; || echo &amp;quot;exit $ret&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 if &amp;lt;nowiki&amp;gt;[[ $PS1 ]]&amp;lt;/nowiki&amp;gt;; then&lt;br /&gt;
     col=33&lt;br /&gt;
     PS1=&amp;quot;\[\033[${col}m\][\u@\h \W]$ \[\033[0m\]&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
     alias C='LANG=C'&lt;br /&gt;
     alias J='LANG=ja_JP.UTF-8'&lt;br /&gt;
  &lt;br /&gt;
     alias ..='cd ..'&lt;br /&gt;
     alias la='ls -a'&lt;br /&gt;
     alias lla='ls -la'&lt;br /&gt;
     alias llh='ls -lh'&lt;br /&gt;
  &lt;br /&gt;
     alias c39='ssh 192.168.8.39'&lt;br /&gt;
     alias c47='ssh 192.168.8.47'&lt;br /&gt;
     alias c52='ssh 192.168.8.52'&lt;br /&gt;
     alias s10='ssh 192.168.8.103'&lt;br /&gt;
     alias s11='ssh 192.168.8.111'&lt;br /&gt;
     alias r60='ssh 192.168.8.60'&lt;br /&gt;
 &lt;br /&gt;
     alias l='less'&lt;br /&gt;
     alias c='cat'&lt;br /&gt;
     alias ?='echo exit $?'&lt;br /&gt;
 &lt;br /&gt;
     complete -d cd&lt;br /&gt;
     complete -c man&lt;br /&gt;
 &lt;br /&gt;
     export GREP_COLOR='1;37;44'&lt;br /&gt;
     alias g='grep --color=auto'&lt;br /&gt;
     alias gr='g -r'&lt;br /&gt;
     alias gi='g -i'&lt;br /&gt;
     alias pg='pgrep -lf'&lt;br /&gt;
     alias xgr='find . | xargs -P 4 grep --color=auto'&lt;br /&gt;
 &lt;br /&gt;
     alias odx='od -Ax -tx1z'&lt;br /&gt;
 &lt;br /&gt;
     #PROMPT_COMMAND=&amp;quot;prompt_cmd; $PROMPT_COMMAND&amp;quot;&lt;br /&gt;
     function edit {&lt;br /&gt;
         vi $(which &amp;quot;$1&amp;quot;)&lt;br /&gt;
     }&lt;br /&gt;
 fi&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=Bash&amp;diff=1104</id>
		<title>Bash</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=Bash&amp;diff=1104"/>
				<updated>2023-10-11T07:52:45Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: /* プロンプトに色を付ける */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 参考文献 ==&lt;br /&gt;
* [http://mywiki.wooledge.org/BashFAQ BashFAQ - Greg's Wiki] これはすごい。特に以下の項目がためになる。&lt;br /&gt;
** [http://mywiki.wooledge.org/BashFAQ/031 What is the difference between test, [ and [[ ?]&lt;br /&gt;
** [http://mywiki.wooledge.org/BashFAQ/082 Why is $(...) preferred over `...` (backticks)?]&lt;br /&gt;
* [http://mywiki.wooledge.org/BashPitfalls BashPitfalls - Greg's Wiki] bash の落とし穴。これも必見。&lt;br /&gt;
&lt;br /&gt;
== シェルスクリプト ==&lt;br /&gt;
* $# - 引数の個数なので、スクリプト名は含まない。(要は最後のインデックス)&lt;br /&gt;
* [http://www.linux.or.jp/JF/JFdocs/Bash-Prog-Intro-HOWTO.html BASH Programming - Introduction HOW-TO]&lt;br /&gt;
* &amp;lt;code&amp;gt;$'string'&amp;lt;/code&amp;gt; の形式で特殊文字を出力できる。&amp;lt;code&amp;gt;$'\x30' = '0'&amp;lt;/code&amp;gt; など。&lt;br /&gt;
* $(cat file) とするなら、$(&amp;lt; file) の方が fork しないので速い。&lt;br /&gt;
&lt;br /&gt;
=== 配列 ===&lt;br /&gt;
迷宮入りするかと思うほど理解するのが難しかった。。&lt;br /&gt;
* 初期化 &amp;lt;code&amp;gt;array=(hoge fuga piyo)&amp;lt;/code&amp;gt;&lt;br /&gt;
** インデックス指定 &amp;lt;code&amp;gt;array=([2]=piyo [0]=hoge [1]=fuga)&amp;lt;/code&amp;gt; は↑と同じ配列。&lt;br /&gt;
* 参照 &amp;lt;code&amp;gt;${array[1]}&amp;lt;/code&amp;gt;&lt;br /&gt;
* 要素数 &amp;lt;code&amp;gt;${#array[@]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== コマンド実行結果を 1 行ごとに配列に格納する ====&lt;br /&gt;
区切り文字を改行にしておかなければ、1 行ごとに格納されない。&lt;br /&gt;
 IFS=$'\n'&lt;br /&gt;
 array=( $( ls -l ) )&lt;br /&gt;
&lt;br /&gt;
==== 配列に要素を追加 ====&lt;br /&gt;
これもハマった…。一旦展開するのがポイント。&lt;br /&gt;
 array=( &amp;quot;${array[@]}&amp;quot; &amp;quot;hoge&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
=== パラメータ展開 ===&lt;br /&gt;
スクリプトを書く際には便利なものの、忘れがちなので書いておく。&lt;br /&gt;
 ${parameter#pattern}   前方最短一致部分を削除&lt;br /&gt;
 ${parameter##pattern}  前方最長一致部分を削除&lt;br /&gt;
 ${parameter%pattern}   後方最短一致部分を削除&lt;br /&gt;
 ${parameter%%pattern}  後方最長一致部分を削除&lt;br /&gt;
わかりにくいので使用例を示す。&lt;br /&gt;
* コマンドのパスから、そのコマンドがあるディレクトリのパスを得る&lt;br /&gt;
 $ CMD_PATH=/usr/local/bin/hoge&lt;br /&gt;
 $ echo ${CMD_PATH%/*}&lt;br /&gt;
 /usr/local/bin&lt;br /&gt;
* ファイル名から、拡張子だけを取り出す&lt;br /&gt;
 $ FILE_NAME=hoge-1.2.txt&lt;br /&gt;
 $ echo ${FILE_NAME##*.}&lt;br /&gt;
 txt&lt;br /&gt;
&lt;br /&gt;
=== 無限ループ ===&lt;br /&gt;
こいつで 1 セクション作るのはどうかと思うが…、他に見出しを付ける方法がないので。&lt;br /&gt;
 while :&lt;br /&gt;
 do&lt;br /&gt;
   ''command''&lt;br /&gt;
 done&lt;br /&gt;
&amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; に真を渡す方法はいくつかあるが、bash 組み込みコマンド &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt; が一番速いと思われる。&lt;br /&gt;
* &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; コマンドに文字列を渡す (-n オプションは省略可能なので、文字列が渡されると必ず真が返る。)&lt;br /&gt;
* &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; コマンド&lt;br /&gt;
* &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt; コマンド&lt;br /&gt;
&lt;br /&gt;
=== getopts ===&lt;br /&gt;
こういう関数の使い方ってすぐ忘れるので、定型文化しておこう。&lt;br /&gt;
 GETOPT_ERR=0&lt;br /&gt;
 while getopts &amp;quot;i:nh&amp;quot; opt; do&lt;br /&gt;
     case $opt in&lt;br /&gt;
         i) INTERVAL=$OPTARG;;&lt;br /&gt;
         n) NOPRINT=1;;&lt;br /&gt;
         h) usage; exit 0;;&lt;br /&gt;
         ?) GETOPT_ERR=1;;&lt;br /&gt;
     esac&lt;br /&gt;
 done&lt;br /&gt;
 shift $(( $OPTIND - 1 ))&lt;br /&gt;
 &lt;br /&gt;
 if [ $GETOPT_ERR -eq 1 ]; then&lt;br /&gt;
     usage&lt;br /&gt;
     exit 1&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
=== trap ===&lt;br /&gt;
&lt;br /&gt;
テストスクリプトなどを書く場合のゴミ掃除には必須だが、毎回使い方を忘れるのでメモ。&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;ARG&amp;lt;/code&amp;gt; が無い or &amp;lt;code&amp;gt;'-'&amp;lt;/code&amp;gt; の場合は、初期値にリセット。&lt;br /&gt;
* &amp;lt;code&amp;gt;ARG&amp;lt;/code&amp;gt; が空文字列 &amp;quot;&amp;quot; の場合は、そのシグナルを無視する。&lt;br /&gt;
* &amp;lt;code&amp;gt;EXIT&amp;lt;/code&amp;gt; は終了時、&amp;lt;code&amp;gt;RETURN&amp;lt;/code&amp;gt; は関数や source の終了時。&lt;br /&gt;
&lt;br /&gt;
== Tips ==&lt;br /&gt;
&lt;br /&gt;
=== コマンド実行後に任意の処理を行う ===&lt;br /&gt;
bash には PROMPT_COMMAND という環境変数があり、これに任意のコマンドをセットすると、&lt;br /&gt;
コマンド実行後に自動的に実行される。&lt;br /&gt;
&lt;br /&gt;
例えば date をセットすると、コマンドを実行した日時が出力されるようになる。&lt;br /&gt;
&lt;br /&gt;
 kuro:~ kaz$ PROMPT_COMMAND=date&lt;br /&gt;
 2009年 6月12日 金曜日 01時41分46秒 JST&lt;br /&gt;
 kuro:~ kaz$ ls&lt;br /&gt;
 Desktop   Documents Downloads Library   Movies    Music     Pictures  Public    Sites&lt;br /&gt;
 2009年 6月12日 金曜日 01時41分50秒 JST&lt;br /&gt;
&lt;br /&gt;
追記：&amp;lt;br&amp;gt;&lt;br /&gt;
これ変数の名前から考えたら、コマンド実行後に実行されるんじゃなくて、&lt;br /&gt;
プロンプト表示前に実行されるんですな。結果はどちらでも同じだけど。&lt;br /&gt;
&lt;br /&gt;
==== コマンドの終了ステータスを自動的に表示する ====&lt;br /&gt;
上記 PROMPT_COMMAND を使用して、コマンドがエラーで終了した場合などに終了ステータスを自動的に表示するようにする。&lt;br /&gt;
終了ステータスはコマンド実行直後に表示しないと次のコマンド実行により上書きされてしまうため、&lt;br /&gt;
うっかり操作により見逃してしまうことがあるが、自動的に表示することでこれを避けることができる。&lt;br /&gt;
&lt;br /&gt;
~/.bashrc に以下を追加する。&lt;br /&gt;
 function prompt_cmd {&lt;br /&gt;
     local ret=$?&lt;br /&gt;
     [ $ret -eq 0 ] || echo &amp;quot;exit $ret&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 PROMPT_COMMAND=&amp;quot;prompt_cmd; $PROMPT_COMMAND&amp;quot;&lt;br /&gt;
&lt;br /&gt;
実行結果のサンプル：&lt;br /&gt;
&lt;br /&gt;
 $ echo hoge&lt;br /&gt;
 hoge&lt;br /&gt;
 $ cat hoge&lt;br /&gt;
 cat: hoge: そのようなファイルやディレクトリはありません&lt;br /&gt;
 exit 1&lt;br /&gt;
 $ hoge&lt;br /&gt;
 bash: hoge: command not found&lt;br /&gt;
 exit 127&lt;br /&gt;
&lt;br /&gt;
=== プロンプトに色を付ける ===&lt;br /&gt;
コマンドの出力の境界がわかりやすくなったり、&lt;br /&gt;
root になっているかどうかを色で判別できたり、かなり便利なこの機能。&lt;br /&gt;
&lt;br /&gt;
.bashrc に以下を追記する。&lt;br /&gt;
 col=33 # yellow&lt;br /&gt;
 PS1=&amp;quot;\[\033[${col}m[\u@\h \W]$ \[\033[0m\]&amp;quot;&lt;br /&gt;
      ^^^^^^^      ^            ^^^^^^^^^^^&lt;br /&gt;
  色のエスケープシーケンス     色の設定をクリア&lt;br /&gt;
&lt;br /&gt;
※当初、\e で書いていたが、カーソル位置と表示がズレる問題が発生したので修正した。&lt;br /&gt;
&lt;br /&gt;
 if [ -n &amp;quot;$PS1&amp;quot; ] &amp;amp;&amp;amp; ! echo &amp;quot;$PS1&amp;quot; | grep -q 33 ; then&lt;br /&gt;
   col=&amp;quot;0;33&amp;quot;&lt;br /&gt;
   PS1=&amp;quot;\033[${col}m${PS1}\033[0m&amp;quot;&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
※プロンプトが消えてしまう問題が発生したので、上記に修正した。&lt;br /&gt;
&lt;br /&gt;
カラーリスト&lt;br /&gt;
 Black       0;30     Dark Gray     1;30&lt;br /&gt;
 Blue        0;34     Light Blue    1;34&lt;br /&gt;
 Green       0;32     Light Green   1;32&lt;br /&gt;
 Cyan        0;36     Light Cyan    1;36&lt;br /&gt;
 Red         0;31     Light Red     1;31&lt;br /&gt;
 Purple      0;35     Light Purple  1;35&lt;br /&gt;
 Brown       0;33     Yellow        1;33&lt;br /&gt;
 Light Gray  0;37     White         1;37&lt;br /&gt;
&lt;br /&gt;
* [http://linuxjf.sourceforge.jp/JFdocs/Bash-Prompt-HOWTO-5.html Bash Prompt HOWTO: ANSI エスケープシーケンス: 色とカーソル操作]&lt;br /&gt;
&lt;br /&gt;
=== ある数を n ビットシフトした数 ===&lt;br /&gt;
カーネルソースを読んでいると、&amp;lt;code&amp;gt;512 &amp;lt;&amp;lt; 16&amp;lt;/code&amp;gt; などという数値が出てくることがあるが、&lt;br /&gt;
わざわざ計算機を持ち出さなくても、bash で計算できる。&lt;br /&gt;
 $ echo $((512 &amp;lt;&amp;lt; 16))&lt;br /&gt;
 33554432&lt;br /&gt;
bash で計算できるということは、vi を使っていても、終了せずに計算できる。&lt;br /&gt;
 :!echo $((512 &amp;lt;&amp;lt; 16))&lt;br /&gt;
 33554432&lt;br /&gt;
&lt;br /&gt;
=== 直前にいたディレクトリに戻る ===&lt;br /&gt;
&amp;lt;code&amp;gt;OLDPWD&amp;lt;/code&amp;gt; 環境変数には、直前にいたディレクトリが格納されているので、&lt;br /&gt;
 $ cd $OLDPWD&lt;br /&gt;
で戻ることができるが、cd に - を渡しても同様の結果となる。&lt;br /&gt;
 $ cd -&lt;br /&gt;
深いディレクトリにいて、いったんホームディレクトリに行って帰ってくる場合などに便利だ。&lt;br /&gt;
&lt;br /&gt;
== よく使うコマンド ==&lt;br /&gt;
* 行頭にジャンプ：C-a　行末にジャンプ：C-e&lt;br /&gt;
* 行頭までキル：C-u　　行末までキル：C-k&lt;br /&gt;
* 前単語をキル：C-w&lt;br /&gt;
* ヤンク：C-y&lt;br /&gt;
* 直前のコマンドの最後の引き数を挿入：M-. (これは便利)&lt;br /&gt;
* キャンセル：C-g&lt;br /&gt;
* 後方検索：C-r (これらは使い方が難しい)&lt;br /&gt;
* 前方検索：C-s&lt;br /&gt;
* 最終行へ：M-&amp;gt; (Poderosa では打ちにくい…)&lt;br /&gt;
&lt;br /&gt;
== 起動時の設定ファイルの読み込み順序 ==&lt;br /&gt;
&lt;br /&gt;
* ログインシェルの場合 (ログイン時、su - user 時など)&lt;br /&gt;
*# &amp;lt;code&amp;gt;/etc/profile&amp;lt;/code&amp;gt;&lt;br /&gt;
*#* 最後に &amp;lt;code&amp;gt;/etc/profile.d/*.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
*# &amp;lt;code&amp;gt;~/.bash_profile&amp;lt;/code&amp;gt;&lt;br /&gt;
*#* 最初に &amp;lt;code&amp;gt;~/.bashrc&amp;lt;/code&amp;gt;&lt;br /&gt;
*#** 最初に &amp;lt;code&amp;gt;/etc/bashrc&amp;lt;/code&amp;gt;&lt;br /&gt;
よって、記載順にもよるが、設定順は以下の通り。&lt;br /&gt;
 /etc/profile -&amp;gt; /etc/profile.d/*.sh -&amp;gt; /etc/bashrc -&amp;gt; ~/.bashrc -&amp;gt; ~/.bash_profile&lt;br /&gt;
&lt;br /&gt;
* ログインシェルでない場合 (bash 実行時、su user 時など)&lt;br /&gt;
*# &amp;lt;code&amp;gt;~/.bashrc&amp;lt;/code&amp;gt;&lt;br /&gt;
*#* 最初に &amp;lt;code&amp;gt;/etc/bashrc&amp;lt;/code&amp;gt;&lt;br /&gt;
*#** 最後に &amp;lt;code&amp;gt;/etc/profile.d/*.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
よって、記載順にもよるが、設定順は以下の通り。&lt;br /&gt;
 /etc/bashrc -&amp;gt; /etc/profile.d/*.sh -&amp;gt; ~/.bashrc&lt;br /&gt;
&lt;br /&gt;
su 実行時に open() されるファイルは以下のコマンドで確認できる。&lt;br /&gt;
 # strace -f -e trace=open -o su-bash.strace su - hagio&lt;br /&gt;
&lt;br /&gt;
== その他 (細かいこと) ==&lt;br /&gt;
* &amp;lt;code&amp;gt;export&amp;lt;/code&amp;gt; は、その変数を子プロセスに引き継ぐ場合に用いる。&lt;br /&gt;
 # cat test.sh &lt;br /&gt;
 echo $TEST&lt;br /&gt;
 # sh test.sh &lt;br /&gt;
 &lt;br /&gt;
 # TEST=hoge&lt;br /&gt;
 # sh test.sh&lt;br /&gt;
 &lt;br /&gt;
 # TEST=hoge sh test.sh&lt;br /&gt;
 hoge&lt;br /&gt;
 # export TEST&lt;br /&gt;
 # sh test.sh&lt;br /&gt;
 hoge&lt;br /&gt;
&lt;br /&gt;
一度 export された変数は、値を書き換えても export されたままなので、&lt;br /&gt;
LANG などはその都度 export しなくても、実行するコマンドに渡される。&lt;br /&gt;
&lt;br /&gt;
* Meta キーは、ESC キーあるいは Ctrl-[ で代用可。(Poderosa では有用)&lt;br /&gt;
* bash のビルトインコマンドの説明を見るには、help コマンドが良い。man だと検索が面倒。&lt;br /&gt;
&lt;br /&gt;
== My .bashrc ==&lt;br /&gt;
カスタマイズしたものに慣れてしまうと、素の状態にすぐに適応できなくなってしまうので良くないが、&lt;br /&gt;
それでも背に腹は代えられないモノたち。&lt;br /&gt;
&lt;br /&gt;
 # .bashrc&lt;br /&gt;
 &lt;br /&gt;
 # Source global definitions&lt;br /&gt;
 if [ -f /etc/bashrc ]; then&lt;br /&gt;
     . /etc/bashrc&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 # User specific aliases and functions&lt;br /&gt;
 umask 022&lt;br /&gt;
 &lt;br /&gt;
 HISTSIZE=10000&lt;br /&gt;
 HISTFILESIZE=10000&lt;br /&gt;
 &lt;br /&gt;
 function prompt_cmd {&lt;br /&gt;
     local ret=$?&lt;br /&gt;
     &amp;lt;nowiki&amp;gt;[[ $ret -eq 0 ]]&amp;lt;/nowiki&amp;gt; || echo &amp;quot;exit $ret&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 if &amp;lt;nowiki&amp;gt;[[ $PS1 ]]&amp;lt;/nowiki&amp;gt;; then&lt;br /&gt;
     col=33&lt;br /&gt;
     PS1=&amp;quot;\[\033[${col}m\][\u@\h \W]$ \[\033[0m\]&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
     alias C='LANG=C'&lt;br /&gt;
     alias J='LANG=ja_JP.UTF-8'&lt;br /&gt;
  &lt;br /&gt;
     alias ..='cd ..'&lt;br /&gt;
     alias la='ls -a'&lt;br /&gt;
     alias lla='ls -la'&lt;br /&gt;
     alias llh='ls -lh'&lt;br /&gt;
  &lt;br /&gt;
     alias c39='ssh 192.168.8.39'&lt;br /&gt;
     alias c47='ssh 192.168.8.47'&lt;br /&gt;
     alias c52='ssh 192.168.8.52'&lt;br /&gt;
     alias s10='ssh 192.168.8.103'&lt;br /&gt;
     alias s11='ssh 192.168.8.111'&lt;br /&gt;
     alias r60='ssh 192.168.8.60'&lt;br /&gt;
 &lt;br /&gt;
     alias l='less'&lt;br /&gt;
     alias c='cat'&lt;br /&gt;
     alias ?='echo exit $?'&lt;br /&gt;
 &lt;br /&gt;
     complete -d cd&lt;br /&gt;
     complete -c man&lt;br /&gt;
 &lt;br /&gt;
     export GREP_COLOR='1;37;44'&lt;br /&gt;
     alias g='grep --color=auto'&lt;br /&gt;
     alias gr='g -r'&lt;br /&gt;
     alias gi='g -i'&lt;br /&gt;
     alias pg='pgrep -lf'&lt;br /&gt;
     alias xgr='find . | xargs -P 4 grep --color=auto'&lt;br /&gt;
 &lt;br /&gt;
     alias odx='od -Ax -tx1z'&lt;br /&gt;
 &lt;br /&gt;
     #PROMPT_COMMAND=&amp;quot;prompt_cmd; $PROMPT_COMMAND&amp;quot;&lt;br /&gt;
     function edit {&lt;br /&gt;
         vi $(which &amp;quot;$1&amp;quot;)&lt;br /&gt;
     }&lt;br /&gt;
 fi&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8&amp;diff=1103</id>
		<title>メインページ</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8&amp;diff=1103"/>
				<updated>2022-06-05T00:40:08Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://hagio.org/ hagio.org]&lt;br /&gt;
&lt;br /&gt;
単なるメモ書きですので、信用しないよーに。&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
* [[Apache]]&lt;br /&gt;
* [[AppleScript]]&lt;br /&gt;
* [[autofs]]&lt;br /&gt;
* [[awk]]&lt;br /&gt;
* [[bash]]&lt;br /&gt;
* [[BIND]]&lt;br /&gt;
* [[Cisco]]&lt;br /&gt;
* [[C言語]]&lt;br /&gt;
* [[crash]]&lt;br /&gt;
* [[DHCP]]&lt;br /&gt;
* [[Expect]]&lt;br /&gt;
* [[git]]&lt;br /&gt;
* [[gnuplot]]&lt;br /&gt;
* [[grep]]&lt;br /&gt;
* [[IPv6]]&lt;br /&gt;
* [[iSCSI]]&lt;br /&gt;
* [[KVM]]&lt;br /&gt;
|&lt;br /&gt;
* [[Linux]]&lt;br /&gt;
** [[Linux/カーネルパラメータ|カーネルパラメータ]]&lt;br /&gt;
&amp;lt;!--** [[Linux/プロセススケジューラ|プロセススケジューラ]]--&amp;gt;&lt;br /&gt;
** [[Linux/時計|時計]]&lt;br /&gt;
** [[Linux/雑記|雑記]]&lt;br /&gt;
* [[logrotate]]&lt;br /&gt;
* [[LVM]]&lt;br /&gt;
* [[Mac OS X]]&lt;br /&gt;
* [[MediaWiki]]&lt;br /&gt;
* [[MySQL]]&lt;br /&gt;
* [[NFS]]&lt;br /&gt;
* [[NTP]]&lt;br /&gt;
* [[OpenSSH]]&lt;br /&gt;
* [[PAM]]&lt;br /&gt;
* [[PHP]]&lt;br /&gt;
* [[Postfix]]&lt;br /&gt;
* [[Python]]&lt;br /&gt;
|&lt;br /&gt;
* [[RHEL]] (CentOS)&lt;br /&gt;
** [[RHEL/ネットワーク|ネットワーク]]&lt;br /&gt;
* [[rsh]]&lt;br /&gt;
* [[rsync]]&lt;br /&gt;
* [[rsyslog]]&lt;br /&gt;
* [[Samba]]&lt;br /&gt;
* [[screen]]&lt;br /&gt;
* [[sed]]&lt;br /&gt;
* [[sendmail]]&lt;br /&gt;
* [[SLES]] (openSUSE)&lt;br /&gt;
* [[SNMP]]&lt;br /&gt;
* [[Squid]]&lt;br /&gt;
* [[systemd]]&lt;br /&gt;
* [[SystemTap]]&lt;br /&gt;
* [[tmux]]&lt;br /&gt;
* [[vim]]&lt;br /&gt;
* [[VMware]]&lt;br /&gt;
* [[VNC]]&lt;br /&gt;
* [[vsftpd]]&lt;br /&gt;
|&lt;br /&gt;
* [[Windows]]&lt;br /&gt;
* [[x86]]&lt;br /&gt;
* [[X Window System]]&lt;br /&gt;
* [[yum]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Express5800／110Ge]]&lt;br /&gt;
* [[Express5800／GT110b]]&lt;br /&gt;
* [[ホーネット]]&lt;br /&gt;
* [[自転車]]&lt;br /&gt;
* [[食べ物・飲み物]]&lt;br /&gt;
* [[テープ装置]]&lt;br /&gt;
* [[テキスト処理]]&lt;br /&gt;
* [[単語帳]]&lt;br /&gt;
* [[その他]] (was [[雑記]])&lt;br /&gt;
* 自作ツール&lt;br /&gt;
** [[ipcheck]]&lt;br /&gt;
** [[hagi_utils]]&lt;br /&gt;
** [[サンプルプログラム集]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== はじめましょう ==&lt;br /&gt;
* [http://meta.wikimedia.org/wiki/%E3%83%98%E3%83%AB%E3%83%97:%E7%9B%AE%E6%AC%A1 ユーザーズガイド]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings/ja 設定リスト]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ/ja MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki リリース情報メーリングリスト]&lt;br /&gt;
* [http://ja.wikipedia.org/wiki/Help:ページの編集 Wikipedia Help:ページの編集]&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=Vim&amp;diff=1102</id>
		<title>Vim</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=Vim&amp;diff=1102"/>
				<updated>2021-06-23T08:03:58Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: /* 覚え書き */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;断然 vim 派。&lt;br /&gt;
&lt;br /&gt;
== おすすめ ==&lt;br /&gt;
&lt;br /&gt;
; カーソル上の単語を検索 (*, #)&lt;br /&gt;
: * で下方、# で上方へ。2 回目以降は n, N でもよい。&lt;br /&gt;
; カーソル上の変数の定義へジャンプ (gd, gD)&lt;br /&gt;
: gd でブロック内の最初の出現箇所へ (要するにローカル変数)、gD だとファイルの最初の出現箇所へ (要するにグローバル変数)。&lt;br /&gt;
; カーソル上のファイル名のファイルを開く (gf)&lt;br /&gt;
: #include &amp;quot;hoge.h&amp;quot; という箇所などから hoge.h へ飛べる。stdio.h など、システム内のヘッダファイルへも飛んでくれるから嬉しい。&lt;br /&gt;
; カーソル上の関数名やヘッダファイル名の man を開く (K)&lt;br /&gt;
: ずっと &amp;lt;code&amp;gt;:!man xxx&amp;lt;/code&amp;gt; ってやってた。&lt;br /&gt;
&lt;br /&gt;
== Tips ==&lt;br /&gt;
; 文字コードを指定して再読み込み&lt;br /&gt;
: &amp;lt;code&amp;gt;:e ++enc=utf-8&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;:e ++enc=eucjp&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;:e ++enc=sjis&amp;lt;/code&amp;gt;&lt;br /&gt;
; 文字コードを指定して保存&lt;br /&gt;
: &amp;lt;code&amp;gt;:w ++enc=utf-8&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;:w ++enc=eucjp&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;:w ++enc=sjis&amp;lt;/code&amp;gt;&lt;br /&gt;
; 改行コードを指定して再読み込み&lt;br /&gt;
: &amp;lt;code&amp;gt;:e ++fileformat=unix&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;:e ++fileformat=mac&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;:e ++fileformat=dos&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Tab キーのタブ or スペースを切り替える&lt;br /&gt;
 :se [no]et&lt;br /&gt;
* 入力済みのタブをスペースに変換する&lt;br /&gt;
 :se et&lt;br /&gt;
 :retab&lt;br /&gt;
* 入力済みのスペースをタブに変換する&lt;br /&gt;
 :se noet&lt;br /&gt;
 :retab!&lt;br /&gt;
&lt;br /&gt;
== 覚え書き ==&lt;br /&gt;
&lt;br /&gt;
* 青が見にくいディスプレイの場合は、colorscheme desert がよい。&lt;br /&gt;
* &amp;lt;code&amp;gt;:q&amp;lt;/code&amp;gt; はウィンドウを閉じるだけ、&amp;lt;code&amp;gt;:bd&amp;lt;/code&amp;gt; はバッファも削除する。&lt;br /&gt;
&lt;br /&gt;
; ウィンドウの入れ替え・移動&lt;br /&gt;
: &amp;lt;code&amp;gt;交換：CTRL-W x  左：CTRL-W L  右：CTRL-W H&amp;lt;/code&amp;gt;&lt;br /&gt;
; ウィンドウの幅を変更&lt;br /&gt;
: &amp;lt;code&amp;gt;CTRL-W &amp;lt; または &amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
; ウィンドウの高さを変更&lt;br /&gt;
: &amp;lt;code&amp;gt;CTRL-W - または +&amp;lt;/code&amp;gt;&lt;br /&gt;
; カレントウィンドウの高さを最大または N に&lt;br /&gt;
: &amp;lt;code&amp;gt;CTRL-W _&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; パターンに引用符を付ける&lt;br /&gt;
: &amp;lt;code&amp;gt;:%s/PATTERN/&amp;quot;&amp;amp;&amp;quot;/g&amp;lt;/code&amp;gt;&lt;br /&gt;
; パターンを含む行を削除&lt;br /&gt;
: &amp;lt;code&amp;gt;:g/PATTERN/d&amp;lt;/code&amp;gt;&lt;br /&gt;
; パターンを含まない行を削除&lt;br /&gt;
: &amp;lt;code&amp;gt;:v/PATTERN/d&amp;lt;/code&amp;gt; または &amp;lt;code&amp;gt;:g!/PATTERN/d&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=Rsync&amp;diff=1101</id>
		<title>Rsync</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=Rsync&amp;diff=1101"/>
				<updated>2021-04-14T05:14:54Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: /* コマンド */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== コマンド ==&lt;br /&gt;
&lt;br /&gt;
* ソース側のパスの最後が / で終わるか /* を付けた場合、ターゲット側で中身が展開される。ターゲット側の / の有無は影響しない。&lt;br /&gt;
&lt;br /&gt;
 $ rsync -av src   dst  =&amp;gt; dst/src が作成される。&lt;br /&gt;
 &lt;br /&gt;
 $ rsync -av src/  dst&lt;br /&gt;
 $ rsync -av src/* dst  =&amp;gt; dst 内に src の中身が展開される。 &lt;br /&gt;
&lt;br /&gt;
このため、スクリプトなどではバックアップ先のディレクトリ名まで明記するか、バックアップ先だけを並べるのが良さそう。&lt;br /&gt;
 $ rsync -av src1/ /backup/src1/&lt;br /&gt;
 $ rsync -av src2/ /backup/src2/&lt;br /&gt;
 または&lt;br /&gt;
 $ rsync -av src1  /backup&lt;br /&gt;
 $ rsync -av src2  /backup&lt;br /&gt;
&lt;br /&gt;
* ssh を使用する場合は下記など。&lt;br /&gt;
&lt;br /&gt;
 $ rsync -av -e ssh user@host:dir/ dir/&lt;br /&gt;
 $ rsync -av -e 'ssh -l user' host:dir/ dir&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
=== cron で定期的に rsync バックアップ ===&lt;br /&gt;
&lt;br /&gt;
==== サーバ側の設定 ====&lt;br /&gt;
&lt;br /&gt;
ここでは、CentOS 5 を使用する。&lt;br /&gt;
&lt;br /&gt;
 [root@lucida ~]# rpm -q rsync&lt;br /&gt;
 rsync-3.0.6-4.el5_7.1&lt;br /&gt;
 [root@lucida ~]# cat /etc/rsyncd.conf ★サーバ側の設定&lt;br /&gt;
 uid = root&lt;br /&gt;
 gid = root&lt;br /&gt;
 read only = no&lt;br /&gt;
 hosts allow = 192.168.1.2&lt;br /&gt;
 hosts deny = *&lt;br /&gt;
 log file = /var/log/rsyncd.log&lt;br /&gt;
 &lt;br /&gt;
 [backup]&lt;br /&gt;
 path = /home/share ★バックアップ領域&lt;br /&gt;
 &lt;br /&gt;
 [root@lucida ~]# cat /etc/logrotate.d/rsync ★ログローテートの設定&lt;br /&gt;
 /var/log/rsyncd.log {&lt;br /&gt;
         weekly&lt;br /&gt;
         missingok&lt;br /&gt;
 }&lt;br /&gt;
 [root@lucida ~]# iptables -nL&lt;br /&gt;
 Chain INPUT (policy DROP)&lt;br /&gt;
 target     prot opt source               destination         &lt;br /&gt;
  ...&lt;br /&gt;
 ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:873 ★ポート開放&lt;br /&gt;
  ...&lt;br /&gt;
 [root@lucida ~]# chkconfig rsync on ★開始&lt;br /&gt;
 [root@lucida ~]# chkconfig --list rsync&lt;br /&gt;
 rsync           on&lt;br /&gt;
&lt;br /&gt;
==== クライアント側 ====&lt;br /&gt;
&lt;br /&gt;
ここでは、CentOS 6 を使用する。&lt;br /&gt;
&lt;br /&gt;
 [root@courier ~]# rpm -q rsync&lt;br /&gt;
 rsync-3.0.6-9.el6.x86_64&lt;br /&gt;
 [root@courier ~]# cat /etc/cron.weekly/rsync-backup ★cron で週 1 で動かす&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 /usr/bin/rsync -av --delete --log-file=/var/log/rsync.log /backup/* lucida::backup &amp;gt;/dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;
 &lt;br /&gt;
 ※/backup だけ指定すると、lucida:/home/share に backup ディレクトリが&lt;br /&gt;
 　作成されてしまうので注意。&lt;br /&gt;
 &lt;br /&gt;
 [root@courier ~]# cat /etc/logrotate.d/rsync ★ログローテートの設定&lt;br /&gt;
 /var/log/rsync.log {&lt;br /&gt;
         weekly&lt;br /&gt;
         missingok&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=Vim&amp;diff=1100</id>
		<title>Vim</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=Vim&amp;diff=1100"/>
				<updated>2021-02-26T00:46:53Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: /* 覚え書き */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;断然 vim 派。&lt;br /&gt;
&lt;br /&gt;
== おすすめ ==&lt;br /&gt;
&lt;br /&gt;
; カーソル上の単語を検索 (*, #)&lt;br /&gt;
: * で下方、# で上方へ。2 回目以降は n, N でもよい。&lt;br /&gt;
; カーソル上の変数の定義へジャンプ (gd, gD)&lt;br /&gt;
: gd でブロック内の最初の出現箇所へ (要するにローカル変数)、gD だとファイルの最初の出現箇所へ (要するにグローバル変数)。&lt;br /&gt;
; カーソル上のファイル名のファイルを開く (gf)&lt;br /&gt;
: #include &amp;quot;hoge.h&amp;quot; という箇所などから hoge.h へ飛べる。stdio.h など、システム内のヘッダファイルへも飛んでくれるから嬉しい。&lt;br /&gt;
; カーソル上の関数名やヘッダファイル名の man を開く (K)&lt;br /&gt;
: ずっと &amp;lt;code&amp;gt;:!man xxx&amp;lt;/code&amp;gt; ってやってた。&lt;br /&gt;
&lt;br /&gt;
== Tips ==&lt;br /&gt;
; 文字コードを指定して再読み込み&lt;br /&gt;
: &amp;lt;code&amp;gt;:e ++enc=utf-8&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;:e ++enc=eucjp&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;:e ++enc=sjis&amp;lt;/code&amp;gt;&lt;br /&gt;
; 文字コードを指定して保存&lt;br /&gt;
: &amp;lt;code&amp;gt;:w ++enc=utf-8&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;:w ++enc=eucjp&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;:w ++enc=sjis&amp;lt;/code&amp;gt;&lt;br /&gt;
; 改行コードを指定して再読み込み&lt;br /&gt;
: &amp;lt;code&amp;gt;:e ++fileformat=unix&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;:e ++fileformat=mac&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;lt;code&amp;gt;:e ++fileformat=dos&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Tab キーのタブ or スペースを切り替える&lt;br /&gt;
 :se [no]et&lt;br /&gt;
* 入力済みのタブをスペースに変換する&lt;br /&gt;
 :se et&lt;br /&gt;
 :retab&lt;br /&gt;
* 入力済みのスペースをタブに変換する&lt;br /&gt;
 :se noet&lt;br /&gt;
 :retab!&lt;br /&gt;
&lt;br /&gt;
== 覚え書き ==&lt;br /&gt;
&lt;br /&gt;
* 青が見にくいディスプレイの場合は、colorscheme desert がよい。&lt;br /&gt;
* &amp;lt;code&amp;gt;:q&amp;lt;/code&amp;gt; はウィンドウを閉じるだけ、&amp;lt;code&amp;gt;:bd&amp;lt;/code&amp;gt; はバッファも削除する。&lt;br /&gt;
&lt;br /&gt;
; ウィンドウの入れ替え・移動&lt;br /&gt;
: &amp;lt;code&amp;gt;交換：CTRL-W x  左：CTRL-W L  右：CTRL-W H&amp;lt;/code&amp;gt;&lt;br /&gt;
; ウィンドウの幅を変更&lt;br /&gt;
: &amp;lt;code&amp;gt;CTRL-W &amp;lt; または &amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; パターンに引用符を付ける&lt;br /&gt;
: &amp;lt;code&amp;gt;:%s/PATTERN/&amp;quot;&amp;amp;&amp;quot;/g&amp;lt;/code&amp;gt;&lt;br /&gt;
; パターンを含む行を削除&lt;br /&gt;
: &amp;lt;code&amp;gt;:g/PATTERN/d&amp;lt;/code&amp;gt;&lt;br /&gt;
; パターンを含まない行を削除&lt;br /&gt;
: &amp;lt;code&amp;gt;:v/PATTERN/d&amp;lt;/code&amp;gt; または &amp;lt;code&amp;gt;:g!/PATTERN/d&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8&amp;diff=1099</id>
		<title>メインページ</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8&amp;diff=1099"/>
				<updated>2020-12-25T02:22:11Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;単なるメモ書きですので、信用しないよーに。&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
* [[Apache]]&lt;br /&gt;
* [[AppleScript]]&lt;br /&gt;
* [[autofs]]&lt;br /&gt;
* [[awk]]&lt;br /&gt;
* [[bash]]&lt;br /&gt;
* [[BIND]]&lt;br /&gt;
* [[Cisco]]&lt;br /&gt;
* [[C言語]]&lt;br /&gt;
* [[crash]]&lt;br /&gt;
* [[DHCP]]&lt;br /&gt;
* [[Expect]]&lt;br /&gt;
* [[git]]&lt;br /&gt;
* [[gnuplot]]&lt;br /&gt;
* [[grep]]&lt;br /&gt;
* [[IPv6]]&lt;br /&gt;
* [[iSCSI]]&lt;br /&gt;
* [[KVM]]&lt;br /&gt;
|&lt;br /&gt;
* [[Linux]]&lt;br /&gt;
** [[Linux/カーネルパラメータ|カーネルパラメータ]]&lt;br /&gt;
&amp;lt;!--** [[Linux/プロセススケジューラ|プロセススケジューラ]]--&amp;gt;&lt;br /&gt;
** [[Linux/時計|時計]]&lt;br /&gt;
** [[Linux/雑記|雑記]]&lt;br /&gt;
* [[logrotate]]&lt;br /&gt;
* [[LVM]]&lt;br /&gt;
* [[Mac OS X]]&lt;br /&gt;
* [[MediaWiki]]&lt;br /&gt;
* [[MySQL]]&lt;br /&gt;
* [[NFS]]&lt;br /&gt;
* [[NTP]]&lt;br /&gt;
* [[OpenSSH]]&lt;br /&gt;
* [[PAM]]&lt;br /&gt;
* [[PHP]]&lt;br /&gt;
* [[Postfix]]&lt;br /&gt;
* [[Python]]&lt;br /&gt;
|&lt;br /&gt;
* [[RHEL]] (CentOS)&lt;br /&gt;
** [[RHEL/ネットワーク|ネットワーク]]&lt;br /&gt;
* [[rsh]]&lt;br /&gt;
* [[rsync]]&lt;br /&gt;
* [[rsyslog]]&lt;br /&gt;
* [[Samba]]&lt;br /&gt;
* [[screen]]&lt;br /&gt;
* [[sed]]&lt;br /&gt;
* [[sendmail]]&lt;br /&gt;
* [[SLES]] (openSUSE)&lt;br /&gt;
* [[SNMP]]&lt;br /&gt;
* [[Squid]]&lt;br /&gt;
* [[systemd]]&lt;br /&gt;
* [[SystemTap]]&lt;br /&gt;
* [[tmux]]&lt;br /&gt;
* [[vim]]&lt;br /&gt;
* [[VMware]]&lt;br /&gt;
* [[VNC]]&lt;br /&gt;
* [[vsftpd]]&lt;br /&gt;
|&lt;br /&gt;
* [[Windows]]&lt;br /&gt;
* [[x86]]&lt;br /&gt;
* [[X Window System]]&lt;br /&gt;
* [[yum]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Express5800／110Ge]]&lt;br /&gt;
* [[Express5800／GT110b]]&lt;br /&gt;
* [[ホーネット]]&lt;br /&gt;
* [[自転車]]&lt;br /&gt;
* [[食べ物・飲み物]]&lt;br /&gt;
* [[テープ装置]]&lt;br /&gt;
* [[テキスト処理]]&lt;br /&gt;
* [[単語帳]]&lt;br /&gt;
* [[その他]] (was [[雑記]])&lt;br /&gt;
* 自作ツール&lt;br /&gt;
** [[ipcheck]]&lt;br /&gt;
** [[hagi_utils]]&lt;br /&gt;
** [[サンプルプログラム集]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== はじめましょう ==&lt;br /&gt;
* [http://meta.wikimedia.org/wiki/%E3%83%98%E3%83%AB%E3%83%97:%E7%9B%AE%E6%AC%A1 ユーザーズガイド]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings/ja 設定リスト]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ/ja MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki リリース情報メーリングリスト]&lt;br /&gt;
* [http://ja.wikipedia.org/wiki/Help:ページの編集 Wikipedia Help:ページの編集]&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=Logrotate&amp;diff=1098</id>
		<title>Logrotate</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=Logrotate&amp;diff=1098"/>
				<updated>2020-12-21T09:40:35Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: /* 動作 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 動作 ==&lt;br /&gt;
* create と copytruncate を設定すると、copytruncate が優先される。&lt;br /&gt;
&lt;br /&gt;
=== copytruncate + compress ===&lt;br /&gt;
&lt;br /&gt;
RHEL7 で確認。別々にそのまま実行するだけのようだった。&lt;br /&gt;
&lt;br /&gt;
 rotate 4&lt;br /&gt;
 copytruncate&lt;br /&gt;
 compress&lt;br /&gt;
&lt;br /&gt;
# 古いログから順に rename&lt;br /&gt;
# log と log.1 を open し、log から読んで log.1 へ write&lt;br /&gt;
# log.1 を fsync&lt;br /&gt;
# log を ftruncate&lt;br /&gt;
# log.1 と log.1.gz を open し、gzip 経由で log.1.gz へ write&lt;br /&gt;
# log.1.gz を fsync&lt;br /&gt;
# log.1 を unlink&lt;br /&gt;
&lt;br /&gt;
=== copytruncate + compress + delaycompress ===&lt;br /&gt;
&lt;br /&gt;
 rotate 4&lt;br /&gt;
 copytruncate&lt;br /&gt;
 compress&lt;br /&gt;
 delaycompress&lt;br /&gt;
&lt;br /&gt;
なんか変。ただ可能なだけな気がする。&lt;br /&gt;
&lt;br /&gt;
# log.1 と log.1.gz を open し、gzip 経由で log.1.gz へ write&lt;br /&gt;
# log.1.gz を fsync&lt;br /&gt;
# log.1 を unlink&lt;br /&gt;
# 古い .gz から順に rename&lt;br /&gt;
# log と log.1 を open し、log から読んで log.1 へ write&lt;br /&gt;
# log.1 を fsync&lt;br /&gt;
# log を ftruncate&lt;br /&gt;
&lt;br /&gt;
=== compress ===&lt;br /&gt;
&lt;br /&gt;
 rotate 4&lt;br /&gt;
 compress&lt;br /&gt;
&lt;br /&gt;
# 古いログから順に rename&lt;br /&gt;
# log.1 と log.1.gz を open し、gzip 経由で log.1.gz へ write&lt;br /&gt;
# log.1 を unlink&lt;br /&gt;
&lt;br /&gt;
 13534 rename(&amp;quot;/tmp/test.log.4.gz&amp;quot;, &amp;quot;/tmp/test.log.5.gz&amp;quot;) = -1 ENOENT (No such file or directory)&lt;br /&gt;
 13534 rename(&amp;quot;/tmp/test.log.3.gz&amp;quot;, &amp;quot;/tmp/test.log.4.gz&amp;quot;) = -1 ENOENT (No such file or directory)&lt;br /&gt;
 13534 rename(&amp;quot;/tmp/test.log.2.gz&amp;quot;, &amp;quot;/tmp/test.log.3.gz&amp;quot;) = -1 ENOENT (No such file or directory)&lt;br /&gt;
 13534 rename(&amp;quot;/tmp/test.log.1.gz&amp;quot;, &amp;quot;/tmp/test.log.2.gz&amp;quot;) = 0&lt;br /&gt;
 13534 rename(&amp;quot;/tmp/test.log.0.gz&amp;quot;, &amp;quot;/tmp/test.log.1.gz&amp;quot;) = -1 ENOENT (No such file or directory)&lt;br /&gt;
 13534 access(&amp;quot;/tmp/test.log.5.gz&amp;quot;, F_OK) = -1 ENOENT (No such file or directory)&lt;br /&gt;
 13534 rename(&amp;quot;/tmp/test.log&amp;quot;, &amp;quot;/tmp/test.log.1&amp;quot;) = 0&lt;br /&gt;
 13534 open(&amp;quot;/tmp/test.log.1&amp;quot;, O_RDONLY|O_LARGEFILE) = 3&lt;br /&gt;
 13534 open(&amp;quot;/tmp/test.log.1.gz&amp;quot;, O_RDWR|O_CREAT|O_TRUNC|O_LARGEFILE, 0100644) = 4&lt;br /&gt;
 13534 fchmod(4, 0600)                   = 0&lt;br /&gt;
 13534 fchown32(4, 500, 500)             = 0&lt;br /&gt;
 13534 fchmod(4, 0100644)                = 0&lt;br /&gt;
 13534 clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xb7fa7718) = 13535&lt;br /&gt;
  ...&lt;br /&gt;
 13535 execve(&amp;quot;/bin/gzip&amp;quot;, [&amp;quot;/bin/gzip&amp;quot;], [/* 31 vars */]) = 0&lt;br /&gt;
  ...&lt;br /&gt;
 13535 read(0, &amp;quot;2011\345\271\264  6\346\234\210 24\346\227\245 \351\207\221\346\233\234\346\227\245 00&amp;quot;..., 65536) = 258&lt;br /&gt;
 13535 read(0, &amp;quot;&amp;quot;, 65278)                = 0&lt;br /&gt;
 13535 write(1, &amp;quot;\37\213\10\0fb\3N\0\0033204|\272s\213\202\202\331\2639\35\nF&amp;amp;\317\246/Ux&amp;quot;..., 82) = 82&lt;br /&gt;
  ...&lt;br /&gt;
 13534 --- SIGCHLD (Child exited) @ 0 (0) ---&lt;br /&gt;
 13534 unlink(&amp;quot;/tmp/test.log.1&amp;quot;)         = 0&lt;br /&gt;
&lt;br /&gt;
=== delaycompress ===&lt;br /&gt;
&lt;br /&gt;
delaycompress は、compress が設定されている場合のみ有効になる。&lt;br /&gt;
 rotate 4&lt;br /&gt;
 compress&lt;br /&gt;
 delaycompress&lt;br /&gt;
&lt;br /&gt;
# '''まず log.1 と log.1.gz を open し、gzip 経由で log.1.gz へ write'''&lt;br /&gt;
#* この設定だと、log.1.gz は log.2.gz へ rename されているはずなので問題ない&lt;br /&gt;
# log.1 を unlink&lt;br /&gt;
# 古いログから順に rename&lt;br /&gt;
&lt;br /&gt;
 15991 open(&amp;quot;/tmp/test.log.1&amp;quot;, O_RDONLY|O_LARGEFILE) = 3&lt;br /&gt;
 15991 open(&amp;quot;/tmp/test.log.1.gz&amp;quot;, O_RDWR|O_CREAT|O_TRUNC|O_LARGEFILE, 0100644) = 4&lt;br /&gt;
 15991 fchmod(4, 0600)                   = 0&lt;br /&gt;
 15991 fchown32(4, 500, 500)             = 0&lt;br /&gt;
 15991 fchmod(4, 0100644)                = 0&lt;br /&gt;
 15991 clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xb7fd8718) = 15992&lt;br /&gt;
  ...&lt;br /&gt;
 15992 execve(&amp;quot;/bin/gzip&amp;quot;, [&amp;quot;/bin/gzip&amp;quot;], [/* 31 vars */]) = 0&lt;br /&gt;
  ...&lt;br /&gt;
 15992 read(0, &amp;quot;2011\345\271\264  6\346\234\210 24\346\227\245 \351\207\221\346\233\234\346\227\245 01&amp;quot;..., 65536) = 516&lt;br /&gt;
 15992 read(0, &amp;quot;&amp;quot;, 65020)                = 0&lt;br /&gt;
 15992 write(1, &amp;quot;\37\213\10\0002e\3N\0\0033204|\272s\213\202\202\331\2639\35\nF&amp;amp;\317\246/Ux&amp;quot;..., 106) = 106&lt;br /&gt;
 15992 exit_group(0)                     = ?&lt;br /&gt;
 15991 &amp;lt;... wait4 resumed&amp;gt; [{WIFEXITED(s) &amp;amp;&amp;amp; WEXITSTATUS(s) == 0}], 0, NULL) = 15992&lt;br /&gt;
 15991 --- SIGCHLD (Child exited) @ 0 (0) ---&lt;br /&gt;
 15991 unlink(&amp;quot;/tmp/test.log.1&amp;quot;)         = 0&lt;br /&gt;
 15991 rename(&amp;quot;/tmp/test.log.4.gz&amp;quot;, &amp;quot;/tmp/test.log.5.gz&amp;quot;) = -1 ENOENT (No such file or directory)&lt;br /&gt;
 15991 rename(&amp;quot;/tmp/test.log.3.gz&amp;quot;, &amp;quot;/tmp/test.log.4.gz&amp;quot;) = -1 ENOENT (No such file or directory)&lt;br /&gt;
 15991 rename(&amp;quot;/tmp/test.log.2.gz&amp;quot;, &amp;quot;/tmp/test.log.3.gz&amp;quot;) = 0&lt;br /&gt;
 15991 rename(&amp;quot;/tmp/test.log.1.gz&amp;quot;, &amp;quot;/tmp/test.log.2.gz&amp;quot;) = 0&lt;br /&gt;
 15991 rename(&amp;quot;/tmp/test.log.0.gz&amp;quot;, &amp;quot;/tmp/test.log.1.gz&amp;quot;) = -1 ENOENT (No such file or directory)&lt;br /&gt;
 15991 access(&amp;quot;/tmp/test.log.5.gz&amp;quot;, F_OK) = -1 ENOENT (No such file or directory)&lt;br /&gt;
 15991 rename(&amp;quot;/tmp/test.log&amp;quot;, &amp;quot;/tmp/test.log.1&amp;quot;) = 0&lt;br /&gt;
&lt;br /&gt;
=== copytruncate ===&lt;br /&gt;
&lt;br /&gt;
 rotate 4&lt;br /&gt;
 copytruncate&lt;br /&gt;
&lt;br /&gt;
# 古いログから順に rename&lt;br /&gt;
# log と log.1 を open し、log から読んで log.1 へ write&lt;br /&gt;
# log を ftruncate&lt;br /&gt;
&lt;br /&gt;
 rename(&amp;quot;/root/stap/test.log.4&amp;quot;, &amp;quot;/root/stap/test.log.5&amp;quot;) = -1 ENOENT (No such file or directory)&lt;br /&gt;
 rename(&amp;quot;/root/stap/test.log.3&amp;quot;, &amp;quot;/root/stap/test.log.4&amp;quot;) = -1 ENOENT (No such file or directory)&lt;br /&gt;
 rename(&amp;quot;/root/stap/test.log.2&amp;quot;, &amp;quot;/root/stap/test.log.3&amp;quot;) = -1 ENOENT (No such file or directory)&lt;br /&gt;
 rename(&amp;quot;/root/stap/test.log.1&amp;quot;, &amp;quot;/root/stap/test.log.2&amp;quot;) = 0&lt;br /&gt;
 rename(&amp;quot;/root/stap/test.log.0&amp;quot;, &amp;quot;/root/stap/test.log.1&amp;quot;) = -1 ENOENT (No such file or directory)&lt;br /&gt;
 access(&amp;quot;/root/stap/test.log.5&amp;quot;, F_OK)   = -1 ENOENT (No such file or directory)&lt;br /&gt;
 open(&amp;quot;/root/stap/test.log&amp;quot;, O_RDWR|O_LARGEFILE) = 3&lt;br /&gt;
 open(&amp;quot;/root/stap/test.log.1&amp;quot;, O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0100644) = 4&lt;br /&gt;
 fchmod(4, 0600)                         = 0&lt;br /&gt;
 fchown32(4, 0, 0)                       = 0&lt;br /&gt;
 fchmod(4, 0100644)                      = 0&lt;br /&gt;
 read(3, &amp;quot;1308784634\n1308784635\n1308784636&amp;quot;..., 8192) = 319&lt;br /&gt;
 write(4, &amp;quot;1308784634\n1308784635\n1308784636&amp;quot;..., 319) = 319&lt;br /&gt;
 read(3, &amp;quot;&amp;quot;, 8192)                       = 0&lt;br /&gt;
 ftruncate64(3, 0)                       = 0&lt;br /&gt;
 close(3)                                = 0&lt;br /&gt;
 close(4)                                = 0&lt;br /&gt;
&lt;br /&gt;
=== nocopytruncate ===&lt;br /&gt;
&lt;br /&gt;
 rotate 4&lt;br /&gt;
 nocopytruncate&lt;br /&gt;
&lt;br /&gt;
デフォルトの動作。単に古いログから順に rename するだけ。&lt;br /&gt;
&lt;br /&gt;
 rename(&amp;quot;/root/stap/test.log.4&amp;quot;, &amp;quot;/root/stap/test.log.5&amp;quot;) = -1 ENOENT (No such file or directory)&lt;br /&gt;
 rename(&amp;quot;/root/stap/test.log.3&amp;quot;, &amp;quot;/root/stap/test.log.4&amp;quot;) = -1 ENOENT (No such file or directory)&lt;br /&gt;
 rename(&amp;quot;/root/stap/test.log.2&amp;quot;, &amp;quot;/root/stap/test.log.3&amp;quot;) = 0&lt;br /&gt;
 rename(&amp;quot;/root/stap/test.log.1&amp;quot;, &amp;quot;/root/stap/test.log.2&amp;quot;) = 0&lt;br /&gt;
 rename(&amp;quot;/root/stap/test.log.0&amp;quot;, &amp;quot;/root/stap/test.log.1&amp;quot;) = -1 ENOENT (No such file or directory)&lt;br /&gt;
 access(&amp;quot;/root/stap/test.log.5&amp;quot;, F_OK)   = -1 ENOENT (No such file or directory)&lt;br /&gt;
 rename(&amp;quot;/root/stap/test.log&amp;quot;, &amp;quot;/root/stap/test.log.1&amp;quot;) = 0&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=Logrotate&amp;diff=1097</id>
		<title>Logrotate</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=Logrotate&amp;diff=1097"/>
				<updated>2020-12-21T01:22:13Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: /* 動作 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 動作 ==&lt;br /&gt;
* create と copytruncate を設定すると、copytruncate が優先される。&lt;br /&gt;
&lt;br /&gt;
=== copytruncate + compress ===&lt;br /&gt;
&lt;br /&gt;
RHEL7 で確認。別々にそのまま実行するだけのようだった。&lt;br /&gt;
&lt;br /&gt;
 rotate 4&lt;br /&gt;
 copytruncate&lt;br /&gt;
 compress&lt;br /&gt;
&lt;br /&gt;
# 古いログから順に rename&lt;br /&gt;
# log と log.1 を open し、log から読んで log.1 へ write&lt;br /&gt;
# log.1 を fsync&lt;br /&gt;
# log を ftruncate&lt;br /&gt;
# log.1 と log.1.gz を open し、gzip 経由で log.1.gz へ write&lt;br /&gt;
# log.1.gz を fsync&lt;br /&gt;
# log.1 を unlink&lt;br /&gt;
&lt;br /&gt;
=== compress ===&lt;br /&gt;
&lt;br /&gt;
 rotate 4&lt;br /&gt;
 compress&lt;br /&gt;
&lt;br /&gt;
# 古いログから順に rename&lt;br /&gt;
# log.1 と log.1.gz を open し、gzip 経由で log.1.gz へ write&lt;br /&gt;
# log.1 を unlink&lt;br /&gt;
&lt;br /&gt;
 13534 rename(&amp;quot;/tmp/test.log.4.gz&amp;quot;, &amp;quot;/tmp/test.log.5.gz&amp;quot;) = -1 ENOENT (No such file or directory)&lt;br /&gt;
 13534 rename(&amp;quot;/tmp/test.log.3.gz&amp;quot;, &amp;quot;/tmp/test.log.4.gz&amp;quot;) = -1 ENOENT (No such file or directory)&lt;br /&gt;
 13534 rename(&amp;quot;/tmp/test.log.2.gz&amp;quot;, &amp;quot;/tmp/test.log.3.gz&amp;quot;) = -1 ENOENT (No such file or directory)&lt;br /&gt;
 13534 rename(&amp;quot;/tmp/test.log.1.gz&amp;quot;, &amp;quot;/tmp/test.log.2.gz&amp;quot;) = 0&lt;br /&gt;
 13534 rename(&amp;quot;/tmp/test.log.0.gz&amp;quot;, &amp;quot;/tmp/test.log.1.gz&amp;quot;) = -1 ENOENT (No such file or directory)&lt;br /&gt;
 13534 access(&amp;quot;/tmp/test.log.5.gz&amp;quot;, F_OK) = -1 ENOENT (No such file or directory)&lt;br /&gt;
 13534 rename(&amp;quot;/tmp/test.log&amp;quot;, &amp;quot;/tmp/test.log.1&amp;quot;) = 0&lt;br /&gt;
 13534 open(&amp;quot;/tmp/test.log.1&amp;quot;, O_RDONLY|O_LARGEFILE) = 3&lt;br /&gt;
 13534 open(&amp;quot;/tmp/test.log.1.gz&amp;quot;, O_RDWR|O_CREAT|O_TRUNC|O_LARGEFILE, 0100644) = 4&lt;br /&gt;
 13534 fchmod(4, 0600)                   = 0&lt;br /&gt;
 13534 fchown32(4, 500, 500)             = 0&lt;br /&gt;
 13534 fchmod(4, 0100644)                = 0&lt;br /&gt;
 13534 clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xb7fa7718) = 13535&lt;br /&gt;
  ...&lt;br /&gt;
 13535 execve(&amp;quot;/bin/gzip&amp;quot;, [&amp;quot;/bin/gzip&amp;quot;], [/* 31 vars */]) = 0&lt;br /&gt;
  ...&lt;br /&gt;
 13535 read(0, &amp;quot;2011\345\271\264  6\346\234\210 24\346\227\245 \351\207\221\346\233\234\346\227\245 00&amp;quot;..., 65536) = 258&lt;br /&gt;
 13535 read(0, &amp;quot;&amp;quot;, 65278)                = 0&lt;br /&gt;
 13535 write(1, &amp;quot;\37\213\10\0fb\3N\0\0033204|\272s\213\202\202\331\2639\35\nF&amp;amp;\317\246/Ux&amp;quot;..., 82) = 82&lt;br /&gt;
  ...&lt;br /&gt;
 13534 --- SIGCHLD (Child exited) @ 0 (0) ---&lt;br /&gt;
 13534 unlink(&amp;quot;/tmp/test.log.1&amp;quot;)         = 0&lt;br /&gt;
&lt;br /&gt;
=== delaycompress ===&lt;br /&gt;
&lt;br /&gt;
delaycompress は、compress が設定されている場合のみ有効になる。&lt;br /&gt;
 rotate 4&lt;br /&gt;
 compress&lt;br /&gt;
 delaycompress&lt;br /&gt;
&lt;br /&gt;
# '''まず log.1 と log.1.gz を open し、gzip 経由で log.1.gz へ write'''&lt;br /&gt;
#* この設定だと、log.1.gz は log.2.gz へ rename されているはずなので問題ない&lt;br /&gt;
# log.1 を unlink&lt;br /&gt;
# 古いログから順に rename&lt;br /&gt;
&lt;br /&gt;
 15991 open(&amp;quot;/tmp/test.log.1&amp;quot;, O_RDONLY|O_LARGEFILE) = 3&lt;br /&gt;
 15991 open(&amp;quot;/tmp/test.log.1.gz&amp;quot;, O_RDWR|O_CREAT|O_TRUNC|O_LARGEFILE, 0100644) = 4&lt;br /&gt;
 15991 fchmod(4, 0600)                   = 0&lt;br /&gt;
 15991 fchown32(4, 500, 500)             = 0&lt;br /&gt;
 15991 fchmod(4, 0100644)                = 0&lt;br /&gt;
 15991 clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xb7fd8718) = 15992&lt;br /&gt;
  ...&lt;br /&gt;
 15992 execve(&amp;quot;/bin/gzip&amp;quot;, [&amp;quot;/bin/gzip&amp;quot;], [/* 31 vars */]) = 0&lt;br /&gt;
  ...&lt;br /&gt;
 15992 read(0, &amp;quot;2011\345\271\264  6\346\234\210 24\346\227\245 \351\207\221\346\233\234\346\227\245 01&amp;quot;..., 65536) = 516&lt;br /&gt;
 15992 read(0, &amp;quot;&amp;quot;, 65020)                = 0&lt;br /&gt;
 15992 write(1, &amp;quot;\37\213\10\0002e\3N\0\0033204|\272s\213\202\202\331\2639\35\nF&amp;amp;\317\246/Ux&amp;quot;..., 106) = 106&lt;br /&gt;
 15992 exit_group(0)                     = ?&lt;br /&gt;
 15991 &amp;lt;... wait4 resumed&amp;gt; [{WIFEXITED(s) &amp;amp;&amp;amp; WEXITSTATUS(s) == 0}], 0, NULL) = 15992&lt;br /&gt;
 15991 --- SIGCHLD (Child exited) @ 0 (0) ---&lt;br /&gt;
 15991 unlink(&amp;quot;/tmp/test.log.1&amp;quot;)         = 0&lt;br /&gt;
 15991 rename(&amp;quot;/tmp/test.log.4.gz&amp;quot;, &amp;quot;/tmp/test.log.5.gz&amp;quot;) = -1 ENOENT (No such file or directory)&lt;br /&gt;
 15991 rename(&amp;quot;/tmp/test.log.3.gz&amp;quot;, &amp;quot;/tmp/test.log.4.gz&amp;quot;) = -1 ENOENT (No such file or directory)&lt;br /&gt;
 15991 rename(&amp;quot;/tmp/test.log.2.gz&amp;quot;, &amp;quot;/tmp/test.log.3.gz&amp;quot;) = 0&lt;br /&gt;
 15991 rename(&amp;quot;/tmp/test.log.1.gz&amp;quot;, &amp;quot;/tmp/test.log.2.gz&amp;quot;) = 0&lt;br /&gt;
 15991 rename(&amp;quot;/tmp/test.log.0.gz&amp;quot;, &amp;quot;/tmp/test.log.1.gz&amp;quot;) = -1 ENOENT (No such file or directory)&lt;br /&gt;
 15991 access(&amp;quot;/tmp/test.log.5.gz&amp;quot;, F_OK) = -1 ENOENT (No such file or directory)&lt;br /&gt;
 15991 rename(&amp;quot;/tmp/test.log&amp;quot;, &amp;quot;/tmp/test.log.1&amp;quot;) = 0&lt;br /&gt;
&lt;br /&gt;
=== copytruncate ===&lt;br /&gt;
&lt;br /&gt;
 rotate 4&lt;br /&gt;
 copytruncate&lt;br /&gt;
&lt;br /&gt;
# 古いログから順に rename&lt;br /&gt;
# log と log.1 を open し、log から読んで log.1 へ write&lt;br /&gt;
# log を ftruncate&lt;br /&gt;
&lt;br /&gt;
 rename(&amp;quot;/root/stap/test.log.4&amp;quot;, &amp;quot;/root/stap/test.log.5&amp;quot;) = -1 ENOENT (No such file or directory)&lt;br /&gt;
 rename(&amp;quot;/root/stap/test.log.3&amp;quot;, &amp;quot;/root/stap/test.log.4&amp;quot;) = -1 ENOENT (No such file or directory)&lt;br /&gt;
 rename(&amp;quot;/root/stap/test.log.2&amp;quot;, &amp;quot;/root/stap/test.log.3&amp;quot;) = -1 ENOENT (No such file or directory)&lt;br /&gt;
 rename(&amp;quot;/root/stap/test.log.1&amp;quot;, &amp;quot;/root/stap/test.log.2&amp;quot;) = 0&lt;br /&gt;
 rename(&amp;quot;/root/stap/test.log.0&amp;quot;, &amp;quot;/root/stap/test.log.1&amp;quot;) = -1 ENOENT (No such file or directory)&lt;br /&gt;
 access(&amp;quot;/root/stap/test.log.5&amp;quot;, F_OK)   = -1 ENOENT (No such file or directory)&lt;br /&gt;
 open(&amp;quot;/root/stap/test.log&amp;quot;, O_RDWR|O_LARGEFILE) = 3&lt;br /&gt;
 open(&amp;quot;/root/stap/test.log.1&amp;quot;, O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0100644) = 4&lt;br /&gt;
 fchmod(4, 0600)                         = 0&lt;br /&gt;
 fchown32(4, 0, 0)                       = 0&lt;br /&gt;
 fchmod(4, 0100644)                      = 0&lt;br /&gt;
 read(3, &amp;quot;1308784634\n1308784635\n1308784636&amp;quot;..., 8192) = 319&lt;br /&gt;
 write(4, &amp;quot;1308784634\n1308784635\n1308784636&amp;quot;..., 319) = 319&lt;br /&gt;
 read(3, &amp;quot;&amp;quot;, 8192)                       = 0&lt;br /&gt;
 ftruncate64(3, 0)                       = 0&lt;br /&gt;
 close(3)                                = 0&lt;br /&gt;
 close(4)                                = 0&lt;br /&gt;
&lt;br /&gt;
=== nocopytruncate ===&lt;br /&gt;
&lt;br /&gt;
 rotate 4&lt;br /&gt;
 nocopytruncate&lt;br /&gt;
&lt;br /&gt;
デフォルトの動作。単に古いログから順に rename するだけ。&lt;br /&gt;
&lt;br /&gt;
 rename(&amp;quot;/root/stap/test.log.4&amp;quot;, &amp;quot;/root/stap/test.log.5&amp;quot;) = -1 ENOENT (No such file or directory)&lt;br /&gt;
 rename(&amp;quot;/root/stap/test.log.3&amp;quot;, &amp;quot;/root/stap/test.log.4&amp;quot;) = -1 ENOENT (No such file or directory)&lt;br /&gt;
 rename(&amp;quot;/root/stap/test.log.2&amp;quot;, &amp;quot;/root/stap/test.log.3&amp;quot;) = 0&lt;br /&gt;
 rename(&amp;quot;/root/stap/test.log.1&amp;quot;, &amp;quot;/root/stap/test.log.2&amp;quot;) = 0&lt;br /&gt;
 rename(&amp;quot;/root/stap/test.log.0&amp;quot;, &amp;quot;/root/stap/test.log.1&amp;quot;) = -1 ENOENT (No such file or directory)&lt;br /&gt;
 access(&amp;quot;/root/stap/test.log.5&amp;quot;, F_OK)   = -1 ENOENT (No such file or directory)&lt;br /&gt;
 rename(&amp;quot;/root/stap/test.log&amp;quot;, &amp;quot;/root/stap/test.log.1&amp;quot;) = 0&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=KVM&amp;diff=1096</id>
		<title>KVM</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=KVM&amp;diff=1096"/>
				<updated>2020-03-11T18:43:09Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 覚え書き ==&lt;br /&gt;
&lt;br /&gt;
=== KVM ホストの外からゲストコンソールへ Spice 接続 ===&lt;br /&gt;
&lt;br /&gt;
下記のように XML を変更する。&lt;br /&gt;
&lt;br /&gt;
 # virsh edit &amp;amp;lt;domain&amp;amp;gt;&lt;br /&gt;
 ...&lt;br /&gt;
 -   &amp;lt;graphics type='spice' autoport='yes'&amp;gt;&lt;br /&gt;
 +   &amp;lt;graphics type='spice' autoport='yes' listen='0.0.0.0'&amp;gt;&lt;br /&gt;
       &amp;lt;listen type='address'/&amp;gt;&lt;br /&gt;
     &amp;lt;/graphics&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ゲストを起動して、ポート番号を確認。&lt;br /&gt;
&lt;br /&gt;
 # virsh domdisplay &amp;lt;domain&amp;gt;&lt;br /&gt;
 spice://localhost:5901&lt;br /&gt;
&lt;br /&gt;
ホストで 590X 番ポートへの接続を受け付けるようにして、virt-viewer 等で接続する。&lt;br /&gt;
&lt;br /&gt;
=== ISO イメージを接続する ===&lt;br /&gt;
&lt;br /&gt;
virt-manager (GUI) を使用できない場合、virsh に専用のコマンドがないので、&lt;br /&gt;
virsh edit を使用する必要があるようだ。&lt;br /&gt;
&lt;br /&gt;
 # virsh edit &amp;amp;lt;domain&amp;amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
     &amp;amp;lt;disk type='file' device='cdrom'&amp;amp;gt;&lt;br /&gt;
       &amp;amp;lt;driver name='qemu' type='raw'/&amp;amp;gt;&lt;br /&gt;
       &amp;amp;lt;source file='/mnt_vmware/isos/CentOS-4.8-x86_64-binDVD.iso'/&amp;amp;gt; ★追記&lt;br /&gt;
       &amp;amp;lt;target dev='hdc' bus='ide'/&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== CD-ROM ドライブの追加 ===&lt;br /&gt;
&lt;br /&gt;
CentOS 6 の virt-manager では、なぜか CD-ROM ドライブを追加できない。&lt;br /&gt;
そのため、virsh edit で以下の XML を追記する。&lt;br /&gt;
&lt;br /&gt;
 # virsh edit &amp;lt;domain&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
     &amp;lt;disk type='file' device='cdrom'&amp;gt;&lt;br /&gt;
       &amp;lt;driver name='qemu' type='raw'/&amp;gt;&lt;br /&gt;
       &amp;lt;target dev='hdc' bus='ide'/&amp;gt;&lt;br /&gt;
       &amp;lt;readonly/&amp;gt;&lt;br /&gt;
     &amp;lt;/disk&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ディスクイメージの変換 ===&lt;br /&gt;
&lt;br /&gt;
* vmdk から qcow2 に変換する場合&lt;br /&gt;
 # qemu-img convert -O qcow2 /path/to/image.vmdk /path/to/image.qcow2&lt;br /&gt;
&lt;br /&gt;
この変換は結構時間がかかる。2.8 GB 使用のディスクイメージで 40 分ほど。&lt;br /&gt;
&lt;br /&gt;
* vmdk から raw に変換する場合&lt;br /&gt;
 # qemu-img convert -O raw /path/to/image.vmdk /path/to/image.raw&lt;br /&gt;
&lt;br /&gt;
こちらは元ファイルがキャッシュに載っていれば数秒で完了するので、&lt;br /&gt;
実質はディスク I/O の時間がほとんどかと。&lt;br /&gt;
&lt;br /&gt;
=== ドメイン名の変更 ===&lt;br /&gt;
&lt;br /&gt;
'''最近は virsh domrename というコマンドがある。'''&lt;br /&gt;
&lt;br /&gt;
ドメインをシャットダウンした状態で、/etc/libvirt/qemu にある&lt;br /&gt;
対象のドメインの XML ファイルの名前を変更する。(不必要かも)&lt;br /&gt;
 # cd /etc/libvirt/qemu&lt;br /&gt;
 &lt;br /&gt;
 # mv test.xml '''myserver.xml'''&lt;br /&gt;
&lt;br /&gt;
XML ファイルの /domain/name を書き換える。&lt;br /&gt;
 # vi myserver.xml&lt;br /&gt;
 &amp;lt;domain type='kvm'&amp;gt;&lt;br /&gt;
   &amp;lt;name&amp;gt;'''myserver'''&amp;lt;/name&amp;gt;&lt;br /&gt;
   &amp;lt;uuid&amp;gt;...&lt;br /&gt;
&lt;br /&gt;
libvirtd サービスを再起動し、名前が変更されていることを確認する。&lt;br /&gt;
 # service libvirtd restart&lt;br /&gt;
 libvirtd デーモンを停止中:                                 [  OK  ]&lt;br /&gt;
 libvirtd デーモンを起動中:                                 [  OK  ]&lt;br /&gt;
 &lt;br /&gt;
 # virsh list --all&lt;br /&gt;
  Id 名前               状態&lt;br /&gt;
 ----------------------------------&lt;br /&gt;
   - '''myserver'''             シャットオフ&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=Screen&amp;diff=1095</id>
		<title>Screen</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=Screen&amp;diff=1095"/>
				<updated>2020-02-13T22:01:23Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: /* 覚え書き */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;意味がなければ screen はない。&lt;br /&gt;
&lt;br /&gt;
== 覚え書き ==&lt;br /&gt;
&lt;br /&gt;
* 設定ファイル (.screenrc) の変更を適用するには、screen を再起動させ… なくても、&amp;lt;code&amp;gt;:source /home/user/.screenrc&amp;lt;/code&amp;gt; で可能。&lt;br /&gt;
** chdir しておけば、どこで screen を実行しても &amp;lt;code&amp;gt;:source .screenrc&amp;lt;/code&amp;gt; でよくなるね。&lt;br /&gt;
* 分割ウィンドウの移動 &amp;lt;code&amp;gt;CTRL-W K|J|H|L&amp;lt;/code&amp;gt; など。&amp;lt;code&amp;gt;:help window-moving&amp;lt;/code&amp;gt; 参照。&lt;br /&gt;
&lt;br /&gt;
=== screen の設定 ===&lt;br /&gt;
&lt;br /&gt;
==== 基本設定 ====&lt;br /&gt;
最低限これだけは設定しないと使いものにならない。&lt;br /&gt;
&lt;br /&gt;
 escape ^Zz&lt;br /&gt;
 hardstatus alwayslastline &amp;quot;%w&amp;quot;&lt;br /&gt;
 defencoding UTF-8&lt;br /&gt;
 encoding UTF-8&lt;br /&gt;
 defscrollback 10000&lt;br /&gt;
&lt;br /&gt;
* escape の ^Z は、Ctrl-Z で screen のコマンドに入るという意味。末尾の z は、Ctrl-Z + z でコマンド文字 (Ctrl-Z 自体) をプロセスに送るという意味 (つまり、プロセスがバックグラウンドに送られる)。&lt;br /&gt;
* hardstatus は &amp;quot;%w&amp;quot; でウィンドウのリストを表示できる。alwayslastline で常に表示する。これが設定されていないと使いにくさが 256 倍になる。これがデフォルトだったら、screen ユーザが今の 256 倍くらいいたと思うのだが…。&lt;br /&gt;
* encoding 系はメインマシンに合わせる。&lt;br /&gt;
* defscrollback はスクロールバックバッファの初期値。メモリを食うが、多めに設定しておくのが吉。&lt;br /&gt;
&lt;br /&gt;
==== コマンドでエンコーディングを変更 ====&lt;br /&gt;
&lt;br /&gt;
RHEL 2/3/4/5 全部使うので…。そのうち、自動で切り替わるようにしよう。&lt;br /&gt;
&lt;br /&gt;
 bind &amp;quot;u&amp;quot; encoding UTF-8 # Ctrl-Z u でエンコーディングを UTF-8 にする&lt;br /&gt;
 bind &amp;quot;e&amp;quot; encoding eucJP # Ctrl-Z e でエンコーディングを eucJP にする&lt;br /&gt;
&lt;br /&gt;
==== 認識性の高い hardstatus ====&lt;br /&gt;
&lt;br /&gt;
色を用いて、現在のウィンドウを認識しやすくしたもの。&lt;br /&gt;
&lt;br /&gt;
 hardstatus alwayslastline &amp;quot;%-w%{=b bw}%n %t%{-}%+w&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Tips ==&lt;br /&gt;
&lt;br /&gt;
=== ログをとる ===&lt;br /&gt;
&lt;br /&gt;
script コマンドと同じようなことを screen 内部でもできて、&lt;br /&gt;
C-z H で記録の開始／終了をトグルする。&lt;br /&gt;
&lt;br /&gt;
screen を実行したディレクトリに screenlog.n という名前で保存される。&lt;br /&gt;
このファイルは制御文字 (ls での色情報) なども記録されているので、&lt;br /&gt;
less では表示がおかしくなる。cat で見るか、less -r を使うと良い。&lt;br /&gt;
&lt;br /&gt;
また、C-z h で hardcopy をとる。(スクリーンショットのようなもの)&lt;br /&gt;
&lt;br /&gt;
=== ウィンドウタイトルを &amp;quot;ユーザ名@ホスト名&amp;quot; にする ===&lt;br /&gt;
&lt;br /&gt;
これはおすすめの設定。&lt;br /&gt;
&lt;br /&gt;
screen デフォルトでは、hardstatus 行のタイトルはどこにログインしても &amp;quot;bash&amp;quot; となってしまい、&lt;br /&gt;
どのウィンドウがどのホストへログインしているのか、どのユーザ名でログインしているのかわからない。&lt;br /&gt;
以下のように、ウィンドウ毎にユーザ名とホスト名が表示できたら便利だ。&lt;br /&gt;
&lt;br /&gt;
 0 hagio@lab  1 root@centos39  2 root@centos47  3 root@lab&lt;br /&gt;
&lt;br /&gt;
さらに、su などでユーザを切り替えた際にも自動的にタイトルが切り替わるようにしたい。&lt;br /&gt;
bash には PROMPT_COMMAND という環境変数があり ([[bash#コマンド実行後に任意の処理を行う|bash のページ参照]])、&lt;br /&gt;
これにコマンドを設定しておくと、プロンプト表示前に実行される。&lt;br /&gt;
screen のウィンドウタイトルは echo で変更可能なので、PROMPT_COMMAND に echo を登録して&lt;br /&gt;
プロンプト表示時に毎回タイトルを設定するようにすれば、su や ssh などの結果が即座に反映される。&lt;br /&gt;
&lt;br /&gt;
==== RHEL の場合 ====&lt;br /&gt;
&lt;br /&gt;
もし root 権限を持っているなら (そして自由に設定を変更してもよいなら)、&lt;br /&gt;
/etc/sysconfig/bash-prompt-screen というファイルを以下の内容で作成し、実行権限を付与しておく。&lt;br /&gt;
&lt;br /&gt;
 # vi /etc/sysconfig/bash-prompt-screen&lt;br /&gt;
 echo -ne &amp;quot;\033k${USER}@${HOSTNAME%%.*}\033\\&amp;quot;&lt;br /&gt;
 # chmod +x /etc/sysconfig/bash-prompt-screen&lt;br /&gt;
&lt;br /&gt;
root 権限を持っていなければ、ログインするホストの ~/.bashrc に以下を記載しておく。&lt;br /&gt;
&lt;br /&gt;
 if [ $TERM = 'screen' ]; then&lt;br /&gt;
     PROMPT_COMMAND='echo -ne &amp;quot;\033k${USER}@${HOSTNAME%%.*}\033\\&amp;quot;'&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
==== SLES の場合 ====&lt;br /&gt;
&lt;br /&gt;
SLES には /etc/sysconfig/bash-prompt-screen のようなファイルは無いようなので、&lt;br /&gt;
全ユーザに適用するには /etc/bash* あたりに追記するしかないようだ。&lt;br /&gt;
&lt;br /&gt;
しかし、/etc/bash.bashrc には以下のような記述がある。&lt;br /&gt;
&lt;br /&gt;
 # /etc/bash.bashrc for SuSE Linux&lt;br /&gt;
 #&lt;br /&gt;
 # PLEASE DO NOT CHANGE /etc/bash.bashrc There are chances that your changes&lt;br /&gt;
 # will be lost during system upgrades.  Instead use /etc/bash.bashrc.local&lt;br /&gt;
 # for your local settings, favourite global aliases, VISUAL and EDITOR&lt;br /&gt;
 # variables, etc ...&lt;br /&gt;
&lt;br /&gt;
/etc/bash.bashrc.local を使えということなので、それに従って以下で作成。&lt;br /&gt;
&lt;br /&gt;
 if [ $TERM = 'screen' ]; then&lt;br /&gt;
     PROMPT_COMMAND='echo -ne &amp;quot;\033k${USER}@${HOSTNAME%%.*}\033\\&amp;quot;'&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
=== ウィンドウ監視 ===&lt;br /&gt;
何か時間のかかるコマンドを実行していて、別のウィンドウで作業を行っている場合、&lt;br /&gt;
ウィンドウを切り替えずにコマンドの実行が終わったかどうかがわかると嬉しい。&lt;br /&gt;
&lt;br /&gt;
; コマンドが何か出力したことを知る (C-z M)&lt;br /&gt;
: これをセットしたウィンドウで何か出力されると、&amp;quot;Activity in window 1&amp;quot; といったメッセージがステータス行に出力される。&lt;br /&gt;
; コマンドが何も出力しなくなったことを通知する (C-z _)&lt;br /&gt;
: これをセットしたウィンドウで 30 秒間動きが見られなければ、&amp;quot;Window 1: silence for 30 seconds&amp;quot; といったメッセージがステータス行に出力される。&lt;br /&gt;
: コンパイル作業などに向いている。&lt;br /&gt;
&lt;br /&gt;
監視をオフにするには、同じコマンド (C-z M あるいは C-z _) を叩けばよい。&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=Rsync&amp;diff=1094</id>
		<title>Rsync</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=Rsync&amp;diff=1094"/>
				<updated>2019-05-30T16:13:50Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== コマンド ==&lt;br /&gt;
&lt;br /&gt;
* ソース側のパスの最後が / で終わるか /* を付けた場合、ターゲット側で中身が展開される。ターゲット側の / の有無は影響しない。&lt;br /&gt;
&lt;br /&gt;
 $ rsync -av src   dst  =&amp;gt; dst/src が作成される。&lt;br /&gt;
 &lt;br /&gt;
 $ rsync -av src/  dst&lt;br /&gt;
 $ rsync -av src/* dst  =&amp;gt; dst 内に src の中身が展開される。 &lt;br /&gt;
&lt;br /&gt;
このため、スクリプトなどではバックアップ先のディレクトリ名まで明記するか、バックアップ先だけを並べるのが良さそう。&lt;br /&gt;
 $ rsync -av src1/ /backup/src1/&lt;br /&gt;
 $ rsync -av src2/ /backup/src2/&lt;br /&gt;
 または&lt;br /&gt;
 $ rsync -av src1  /backup&lt;br /&gt;
 $ rsync -av src2  /backup&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
=== cron で定期的に rsync バックアップ ===&lt;br /&gt;
&lt;br /&gt;
==== サーバ側の設定 ====&lt;br /&gt;
&lt;br /&gt;
ここでは、CentOS 5 を使用する。&lt;br /&gt;
&lt;br /&gt;
 [root@lucida ~]# rpm -q rsync&lt;br /&gt;
 rsync-3.0.6-4.el5_7.1&lt;br /&gt;
 [root@lucida ~]# cat /etc/rsyncd.conf ★サーバ側の設定&lt;br /&gt;
 uid = root&lt;br /&gt;
 gid = root&lt;br /&gt;
 read only = no&lt;br /&gt;
 hosts allow = 192.168.1.2&lt;br /&gt;
 hosts deny = *&lt;br /&gt;
 log file = /var/log/rsyncd.log&lt;br /&gt;
 &lt;br /&gt;
 [backup]&lt;br /&gt;
 path = /home/share ★バックアップ領域&lt;br /&gt;
 &lt;br /&gt;
 [root@lucida ~]# cat /etc/logrotate.d/rsync ★ログローテートの設定&lt;br /&gt;
 /var/log/rsyncd.log {&lt;br /&gt;
         weekly&lt;br /&gt;
         missingok&lt;br /&gt;
 }&lt;br /&gt;
 [root@lucida ~]# iptables -nL&lt;br /&gt;
 Chain INPUT (policy DROP)&lt;br /&gt;
 target     prot opt source               destination         &lt;br /&gt;
  ...&lt;br /&gt;
 ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:873 ★ポート開放&lt;br /&gt;
  ...&lt;br /&gt;
 [root@lucida ~]# chkconfig rsync on ★開始&lt;br /&gt;
 [root@lucida ~]# chkconfig --list rsync&lt;br /&gt;
 rsync           on&lt;br /&gt;
&lt;br /&gt;
==== クライアント側 ====&lt;br /&gt;
&lt;br /&gt;
ここでは、CentOS 6 を使用する。&lt;br /&gt;
&lt;br /&gt;
 [root@courier ~]# rpm -q rsync&lt;br /&gt;
 rsync-3.0.6-9.el6.x86_64&lt;br /&gt;
 [root@courier ~]# cat /etc/cron.weekly/rsync-backup ★cron で週 1 で動かす&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 /usr/bin/rsync -av --delete --log-file=/var/log/rsync.log /backup/* lucida::backup &amp;gt;/dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;
 &lt;br /&gt;
 ※/backup だけ指定すると、lucida:/home/share に backup ディレクトリが&lt;br /&gt;
 　作成されてしまうので注意。&lt;br /&gt;
 &lt;br /&gt;
 [root@courier ~]# cat /etc/logrotate.d/rsync ★ログローテートの設定&lt;br /&gt;
 /var/log/rsync.log {&lt;br /&gt;
         weekly&lt;br /&gt;
         missingok&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=Windows&amp;diff=1093</id>
		<title>Windows</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=Windows&amp;diff=1093"/>
				<updated>2018-06-08T18:47:52Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;家では Mac + Linux の素晴らしい環境だけど、&lt;br /&gt;
会社では Windows + Linux で我慢しなければならない。&lt;br /&gt;
仕方がないので少しは Windows も学習していくことにする。&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
* 大量のファイルの拡張子を変更 (例: wem → eml)&lt;br /&gt;
*# Windows + R で &amp;lt;code&amp;gt;cmd&amp;lt;/code&amp;gt; を起動&lt;br /&gt;
*# 以下の &amp;lt;code&amp;gt;ren&amp;lt;/code&amp;gt; コマンドを実行&lt;br /&gt;
 &amp;gt; ren *.wem *.eml&lt;br /&gt;
* AppData のパスを示す環境変数は &amp;lt;code&amp;gt;%appdata%&amp;lt;/code&amp;gt;&lt;br /&gt;
* IP アドレスはプロンプトから &amp;lt;code&amp;gt;ipconfig&amp;lt;/code&amp;gt;&lt;br /&gt;
* hosts ファイルのありかは、&amp;lt;code&amp;gt;C:\Windows\System32\drivers\etc&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== スクリーンショット ===&lt;br /&gt;
* &amp;lt;code&amp;gt;PrintScreen&amp;lt;/code&amp;gt; で画面全体をコピー&lt;br /&gt;
* &amp;lt;code&amp;gt;Alt + PrintScreen&amp;lt;/code&amp;gt; でウィンドウをコピー&lt;br /&gt;
&lt;br /&gt;
== Excel ==&lt;br /&gt;
* 時刻などの書式のデータを文字列に変換するには&lt;br /&gt;
# Excel で変換したいデータをコピーする&lt;br /&gt;
# テキストエディタにペーストする&lt;br /&gt;
# Excel にペーストする&lt;br /&gt;
&lt;br /&gt;
== PowerPoint ==&lt;br /&gt;
* ファイルサイズを小さくする&lt;br /&gt;
# 保存オプションの「高速保存」をオフにする&lt;br /&gt;
# 保存する&lt;br /&gt;
# あらびっくり&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=Bash&amp;diff=1092</id>
		<title>Bash</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=Bash&amp;diff=1092"/>
				<updated>2018-06-06T14:40:41Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: /* シェルスクリプト */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 参考文献 ==&lt;br /&gt;
* [http://mywiki.wooledge.org/BashFAQ BashFAQ - Greg's Wiki] これはすごい。特に以下の項目がためになる。&lt;br /&gt;
** [http://mywiki.wooledge.org/BashFAQ/031 What is the difference between test, [ and [[ ?]&lt;br /&gt;
** [http://mywiki.wooledge.org/BashFAQ/082 Why is $(...) preferred over `...` (backticks)?]&lt;br /&gt;
* [http://mywiki.wooledge.org/BashPitfalls BashPitfalls - Greg's Wiki] bash の落とし穴。これも必見。&lt;br /&gt;
&lt;br /&gt;
== シェルスクリプト ==&lt;br /&gt;
* $# - 引数の個数なので、スクリプト名は含まない。(要は最後のインデックス)&lt;br /&gt;
* [http://www.linux.or.jp/JF/JFdocs/Bash-Prog-Intro-HOWTO.html BASH Programming - Introduction HOW-TO]&lt;br /&gt;
* &amp;lt;code&amp;gt;$'string'&amp;lt;/code&amp;gt; の形式で特殊文字を出力できる。&amp;lt;code&amp;gt;$'\x30' = '0'&amp;lt;/code&amp;gt; など。&lt;br /&gt;
* $(cat file) とするなら、$(&amp;lt; file) の方が fork しないので速い。&lt;br /&gt;
&lt;br /&gt;
=== 配列 ===&lt;br /&gt;
迷宮入りするかと思うほど理解するのが難しかった。。&lt;br /&gt;
* 初期化 &amp;lt;code&amp;gt;array=(hoge fuga piyo)&amp;lt;/code&amp;gt;&lt;br /&gt;
** インデックス指定 &amp;lt;code&amp;gt;array=([2]=piyo [0]=hoge [1]=fuga)&amp;lt;/code&amp;gt; は↑と同じ配列。&lt;br /&gt;
* 参照 &amp;lt;code&amp;gt;${array[1]}&amp;lt;/code&amp;gt;&lt;br /&gt;
* 要素数 &amp;lt;code&amp;gt;${#array[@]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== コマンド実行結果を 1 行ごとに配列に格納する ====&lt;br /&gt;
区切り文字を改行にしておかなければ、1 行ごとに格納されない。&lt;br /&gt;
 IFS=$'\n'&lt;br /&gt;
 array=( $( ls -l ) )&lt;br /&gt;
&lt;br /&gt;
==== 配列に要素を追加 ====&lt;br /&gt;
これもハマった…。一旦展開するのがポイント。&lt;br /&gt;
 array=( &amp;quot;${array[@]}&amp;quot; &amp;quot;hoge&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
=== パラメータ展開 ===&lt;br /&gt;
スクリプトを書く際には便利なものの、忘れがちなので書いておく。&lt;br /&gt;
 ${parameter#pattern}   前方最短一致部分を削除&lt;br /&gt;
 ${parameter##pattern}  前方最長一致部分を削除&lt;br /&gt;
 ${parameter%pattern}   後方最短一致部分を削除&lt;br /&gt;
 ${parameter%%pattern}  後方最長一致部分を削除&lt;br /&gt;
わかりにくいので使用例を示す。&lt;br /&gt;
* コマンドのパスから、そのコマンドがあるディレクトリのパスを得る&lt;br /&gt;
 $ CMD_PATH=/usr/local/bin/hoge&lt;br /&gt;
 $ echo ${CMD_PATH%/*}&lt;br /&gt;
 /usr/local/bin&lt;br /&gt;
* ファイル名から、拡張子だけを取り出す&lt;br /&gt;
 $ FILE_NAME=hoge-1.2.txt&lt;br /&gt;
 $ echo ${FILE_NAME##*.}&lt;br /&gt;
 txt&lt;br /&gt;
&lt;br /&gt;
=== 無限ループ ===&lt;br /&gt;
こいつで 1 セクション作るのはどうかと思うが…、他に見出しを付ける方法がないので。&lt;br /&gt;
 while :&lt;br /&gt;
 do&lt;br /&gt;
   ''command''&lt;br /&gt;
 done&lt;br /&gt;
&amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; に真を渡す方法はいくつかあるが、bash 組み込みコマンド &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt; が一番速いと思われる。&lt;br /&gt;
* &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; コマンドに文字列を渡す (-n オプションは省略可能なので、文字列が渡されると必ず真が返る。)&lt;br /&gt;
* &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; コマンド&lt;br /&gt;
* &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt; コマンド&lt;br /&gt;
&lt;br /&gt;
=== getopts ===&lt;br /&gt;
こういう関数の使い方ってすぐ忘れるので、定型文化しておこう。&lt;br /&gt;
 GETOPT_ERR=0&lt;br /&gt;
 while getopts &amp;quot;i:nh&amp;quot; opt; do&lt;br /&gt;
     case $opt in&lt;br /&gt;
         i) INTERVAL=$OPTARG;;&lt;br /&gt;
         n) NOPRINT=1;;&lt;br /&gt;
         h) usage; exit 0;;&lt;br /&gt;
         ?) GETOPT_ERR=1;;&lt;br /&gt;
     esac&lt;br /&gt;
 done&lt;br /&gt;
 shift $(( $OPTIND - 1 ))&lt;br /&gt;
 &lt;br /&gt;
 if [ $GETOPT_ERR -eq 1 ]; then&lt;br /&gt;
     usage&lt;br /&gt;
     exit 1&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
=== trap ===&lt;br /&gt;
&lt;br /&gt;
テストスクリプトなどを書く場合のゴミ掃除には必須だが、毎回使い方を忘れるのでメモ。&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;ARG&amp;lt;/code&amp;gt; が無い or &amp;lt;code&amp;gt;'-'&amp;lt;/code&amp;gt; の場合は、初期値にリセット。&lt;br /&gt;
* &amp;lt;code&amp;gt;ARG&amp;lt;/code&amp;gt; が空文字列 &amp;quot;&amp;quot; の場合は、そのシグナルを無視する。&lt;br /&gt;
* &amp;lt;code&amp;gt;EXIT&amp;lt;/code&amp;gt; は終了時、&amp;lt;code&amp;gt;RETURN&amp;lt;/code&amp;gt; は関数や source の終了時。&lt;br /&gt;
&lt;br /&gt;
== Tips ==&lt;br /&gt;
&lt;br /&gt;
=== コマンド実行後に任意の処理を行う ===&lt;br /&gt;
bash には PROMPT_COMMAND という環境変数があり、これに任意のコマンドをセットすると、&lt;br /&gt;
コマンド実行後に自動的に実行される。&lt;br /&gt;
&lt;br /&gt;
例えば date をセットすると、コマンドを実行した日時が出力されるようになる。&lt;br /&gt;
&lt;br /&gt;
 kuro:~ kaz$ PROMPT_COMMAND=date&lt;br /&gt;
 2009年 6月12日 金曜日 01時41分46秒 JST&lt;br /&gt;
 kuro:~ kaz$ ls&lt;br /&gt;
 Desktop   Documents Downloads Library   Movies    Music     Pictures  Public    Sites&lt;br /&gt;
 2009年 6月12日 金曜日 01時41分50秒 JST&lt;br /&gt;
&lt;br /&gt;
追記：&amp;lt;br&amp;gt;&lt;br /&gt;
これ変数の名前から考えたら、コマンド実行後に実行されるんじゃなくて、&lt;br /&gt;
プロンプト表示前に実行されるんですな。結果はどちらでも同じだけど。&lt;br /&gt;
&lt;br /&gt;
==== コマンドの終了ステータスを自動的に表示する ====&lt;br /&gt;
上記 PROMPT_COMMAND を使用して、コマンドがエラーで終了した場合などに終了ステータスを自動的に表示するようにする。&lt;br /&gt;
終了ステータスはコマンド実行直後に表示しないと次のコマンド実行により上書きされてしまうため、&lt;br /&gt;
うっかり操作により見逃してしまうことがあるが、自動的に表示することでこれを避けることができる。&lt;br /&gt;
&lt;br /&gt;
~/.bashrc に以下を追加する。&lt;br /&gt;
 function prompt_cmd {&lt;br /&gt;
     local ret=$?&lt;br /&gt;
     [ $ret -eq 0 ] || echo &amp;quot;exit $ret&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 PROMPT_COMMAND=&amp;quot;prompt_cmd; $PROMPT_COMMAND&amp;quot;&lt;br /&gt;
&lt;br /&gt;
実行結果のサンプル：&lt;br /&gt;
&lt;br /&gt;
 $ echo hoge&lt;br /&gt;
 hoge&lt;br /&gt;
 $ cat hoge&lt;br /&gt;
 cat: hoge: そのようなファイルやディレクトリはありません&lt;br /&gt;
 exit 1&lt;br /&gt;
 $ hoge&lt;br /&gt;
 bash: hoge: command not found&lt;br /&gt;
 exit 127&lt;br /&gt;
&lt;br /&gt;
=== プロンプトに色を付ける ===&lt;br /&gt;
コマンドの出力の境界がわかりやすくなったり、&lt;br /&gt;
root になっているかどうかを色で判別できたり、かなり便利なこの機能。&lt;br /&gt;
&lt;br /&gt;
.bashrc に以下を追記する。&lt;br /&gt;
 col=33 # yellow&lt;br /&gt;
 PS1=&amp;quot;\[\033[${col}m[\u@\h \W]$ \[\033[0m\]&amp;quot;&lt;br /&gt;
      ^^^^^^^      ^            ^^^^^^^^^^^&lt;br /&gt;
  色のエスケープシーケンス     色の設定をクリア&lt;br /&gt;
&lt;br /&gt;
※当初、\e で書いていたが、カーソル位置と表示がズレる問題が発生したので修正した。&lt;br /&gt;
&lt;br /&gt;
* [http://linuxjf.sourceforge.jp/JFdocs/Bash-Prompt-HOWTO-5.html Bash Prompt HOWTO: ANSI エスケープシーケンス: 色とカーソル操作]&lt;br /&gt;
&lt;br /&gt;
=== ある数を n ビットシフトした数 ===&lt;br /&gt;
カーネルソースを読んでいると、&amp;lt;code&amp;gt;512 &amp;lt;&amp;lt; 16&amp;lt;/code&amp;gt; などという数値が出てくることがあるが、&lt;br /&gt;
わざわざ計算機を持ち出さなくても、bash で計算できる。&lt;br /&gt;
 $ echo $((512 &amp;lt;&amp;lt; 16))&lt;br /&gt;
 33554432&lt;br /&gt;
bash で計算できるということは、vi を使っていても、終了せずに計算できる。&lt;br /&gt;
 :!echo $((512 &amp;lt;&amp;lt; 16))&lt;br /&gt;
 33554432&lt;br /&gt;
&lt;br /&gt;
=== 直前にいたディレクトリに戻る ===&lt;br /&gt;
&amp;lt;code&amp;gt;OLDPWD&amp;lt;/code&amp;gt; 環境変数には、直前にいたディレクトリが格納されているので、&lt;br /&gt;
 $ cd $OLDPWD&lt;br /&gt;
で戻ることができるが、cd に - を渡しても同様の結果となる。&lt;br /&gt;
 $ cd -&lt;br /&gt;
深いディレクトリにいて、いったんホームディレクトリに行って帰ってくる場合などに便利だ。&lt;br /&gt;
&lt;br /&gt;
== よく使うコマンド ==&lt;br /&gt;
* 行頭にジャンプ：C-a　行末にジャンプ：C-e&lt;br /&gt;
* 行頭までキル：C-u　　行末までキル：C-k&lt;br /&gt;
* 前単語をキル：C-w&lt;br /&gt;
* ヤンク：C-y&lt;br /&gt;
* 直前のコマンドの最後の引き数を挿入：M-. (これは便利)&lt;br /&gt;
* キャンセル：C-g&lt;br /&gt;
* 後方検索：C-r (これらは使い方が難しい)&lt;br /&gt;
* 前方検索：C-s&lt;br /&gt;
* 最終行へ：M-&amp;gt; (Poderosa では打ちにくい…)&lt;br /&gt;
&lt;br /&gt;
== 起動時の設定ファイルの読み込み順序 ==&lt;br /&gt;
&lt;br /&gt;
* ログインシェルの場合 (ログイン時、su - user 時など)&lt;br /&gt;
*# &amp;lt;code&amp;gt;/etc/profile&amp;lt;/code&amp;gt;&lt;br /&gt;
*#* 最後に &amp;lt;code&amp;gt;/etc/profile.d/*.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
*# &amp;lt;code&amp;gt;~/.bash_profile&amp;lt;/code&amp;gt;&lt;br /&gt;
*#* 最初に &amp;lt;code&amp;gt;~/.bashrc&amp;lt;/code&amp;gt;&lt;br /&gt;
*#** 最初に &amp;lt;code&amp;gt;/etc/bashrc&amp;lt;/code&amp;gt;&lt;br /&gt;
よって、記載順にもよるが、設定順は以下の通り。&lt;br /&gt;
 /etc/profile -&amp;gt; /etc/profile.d/*.sh -&amp;gt; /etc/bashrc -&amp;gt; ~/.bashrc -&amp;gt; ~/.bash_profile&lt;br /&gt;
&lt;br /&gt;
* ログインシェルでない場合 (bash 実行時、su user 時など)&lt;br /&gt;
*# &amp;lt;code&amp;gt;~/.bashrc&amp;lt;/code&amp;gt;&lt;br /&gt;
*#* 最初に &amp;lt;code&amp;gt;/etc/bashrc&amp;lt;/code&amp;gt;&lt;br /&gt;
*#** 最後に &amp;lt;code&amp;gt;/etc/profile.d/*.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
よって、記載順にもよるが、設定順は以下の通り。&lt;br /&gt;
 /etc/bashrc -&amp;gt; /etc/profile.d/*.sh -&amp;gt; ~/.bashrc&lt;br /&gt;
&lt;br /&gt;
su 実行時に open() されるファイルは以下のコマンドで確認できる。&lt;br /&gt;
 # strace -f -e trace=open -o su-bash.strace su - hagio&lt;br /&gt;
&lt;br /&gt;
== その他 (細かいこと) ==&lt;br /&gt;
* &amp;lt;code&amp;gt;export&amp;lt;/code&amp;gt; は、その変数を子プロセスに引き継ぐ場合に用いる。&lt;br /&gt;
 # cat test.sh &lt;br /&gt;
 echo $TEST&lt;br /&gt;
 # sh test.sh &lt;br /&gt;
 &lt;br /&gt;
 # TEST=hoge&lt;br /&gt;
 # sh test.sh&lt;br /&gt;
 &lt;br /&gt;
 # TEST=hoge sh test.sh&lt;br /&gt;
 hoge&lt;br /&gt;
 # export TEST&lt;br /&gt;
 # sh test.sh&lt;br /&gt;
 hoge&lt;br /&gt;
&lt;br /&gt;
一度 export された変数は、値を書き換えても export されたままなので、&lt;br /&gt;
LANG などはその都度 export しなくても、実行するコマンドに渡される。&lt;br /&gt;
&lt;br /&gt;
* Meta キーは、ESC キーあるいは Ctrl-[ で代用可。(Poderosa では有用)&lt;br /&gt;
* bash のビルトインコマンドの説明を見るには、help コマンドが良い。man だと検索が面倒。&lt;br /&gt;
&lt;br /&gt;
== My .bashrc ==&lt;br /&gt;
カスタマイズしたものに慣れてしまうと、素の状態にすぐに適応できなくなってしまうので良くないが、&lt;br /&gt;
それでも背に腹は代えられないモノたち。&lt;br /&gt;
&lt;br /&gt;
 # .bashrc&lt;br /&gt;
 &lt;br /&gt;
 # Source global definitions&lt;br /&gt;
 if [ -f /etc/bashrc ]; then&lt;br /&gt;
     . /etc/bashrc&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 # User specific aliases and functions&lt;br /&gt;
 umask 022&lt;br /&gt;
 &lt;br /&gt;
 HISTSIZE=10000&lt;br /&gt;
 HISTFILESIZE=10000&lt;br /&gt;
 &lt;br /&gt;
 function prompt_cmd {&lt;br /&gt;
     local ret=$?&lt;br /&gt;
     &amp;lt;nowiki&amp;gt;[[ $ret -eq 0 ]]&amp;lt;/nowiki&amp;gt; || echo &amp;quot;exit $ret&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 if &amp;lt;nowiki&amp;gt;[[ $PS1 ]]&amp;lt;/nowiki&amp;gt;; then&lt;br /&gt;
     col=33&lt;br /&gt;
     PS1=&amp;quot;\[\033[${col}m\][\u@\h \W]$ \[\033[0m\]&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
     alias C='LANG=C'&lt;br /&gt;
     alias J='LANG=ja_JP.UTF-8'&lt;br /&gt;
  &lt;br /&gt;
     alias ..='cd ..'&lt;br /&gt;
     alias la='ls -a'&lt;br /&gt;
     alias lla='ls -la'&lt;br /&gt;
     alias llh='ls -lh'&lt;br /&gt;
  &lt;br /&gt;
     alias c39='ssh 192.168.8.39'&lt;br /&gt;
     alias c47='ssh 192.168.8.47'&lt;br /&gt;
     alias c52='ssh 192.168.8.52'&lt;br /&gt;
     alias s10='ssh 192.168.8.103'&lt;br /&gt;
     alias s11='ssh 192.168.8.111'&lt;br /&gt;
     alias r60='ssh 192.168.8.60'&lt;br /&gt;
 &lt;br /&gt;
     alias l='less'&lt;br /&gt;
     alias c='cat'&lt;br /&gt;
     alias ?='echo exit $?'&lt;br /&gt;
 &lt;br /&gt;
     complete -d cd&lt;br /&gt;
     complete -c man&lt;br /&gt;
 &lt;br /&gt;
     export GREP_COLOR='1;37;44'&lt;br /&gt;
     alias g='grep --color=auto'&lt;br /&gt;
     alias gr='g -r'&lt;br /&gt;
     alias gi='g -i'&lt;br /&gt;
     alias pg='pgrep -lf'&lt;br /&gt;
     alias xgr='find . | xargs -P 4 grep --color=auto'&lt;br /&gt;
 &lt;br /&gt;
     alias odx='od -Ax -tx1z'&lt;br /&gt;
 &lt;br /&gt;
     #PROMPT_COMMAND=&amp;quot;prompt_cmd; $PROMPT_COMMAND&amp;quot;&lt;br /&gt;
     function edit {&lt;br /&gt;
         vi $(which &amp;quot;$1&amp;quot;)&lt;br /&gt;
     }&lt;br /&gt;
 fi&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=Python&amp;diff=1091</id>
		<title>Python</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=Python&amp;diff=1091"/>
				<updated>2017-10-24T14:54:57Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: /* バージョンによる違い */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;かなり忘れつつある Python について。&lt;br /&gt;
&lt;br /&gt;
== 参考リンク ==&lt;br /&gt;
* [http://www.python.jp/doc/release/index.html Python 2.5 ドキュメント - 19th September, 2006]&lt;br /&gt;
* [http://www.unixuser.org/~euske/doc/python/tutorial0917.html Python 講習会 資料] ― 古いけど、まとまっていて見やすい。&lt;br /&gt;
&lt;br /&gt;
== 覚え書き ==&lt;br /&gt;
* グローバル変数など、外側のスコープにある変数は読み出し専用となる。&amp;lt;code&amp;gt;global&amp;lt;/code&amp;gt; 文を使えば代入できる。&lt;br /&gt;
* 一定時間待ちを入れる場合は、&amp;lt;code&amp;gt;import time&amp;lt;/code&amp;gt; して &amp;lt;code&amp;gt;time.sleep(n)&amp;lt;/code&amp;gt; を使う。&lt;br /&gt;
* gzip コマンドで圧縮したデータを zlib モジュールでは展開できない (ヘッダが異なるため)。gzip + StringIO モジュールを使って回避する。&lt;br /&gt;
* 対話モードでは、最後に表示された結果は変数 &amp;lt;code&amp;gt;_&amp;lt;/code&amp;gt; に代入される。&lt;br /&gt;
* &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt; の末尾にコンマを入れると、改行されない。&amp;lt;code&amp;gt;print &amp;quot;hoge&amp;quot;,&amp;lt;/code&amp;gt;&lt;br /&gt;
* 一つの要素のタプルは、値の後ろにコンマを付ける。&amp;lt;code&amp;gt;(&amp;quot;hoge&amp;quot;,)&amp;lt;/code&amp;gt;&lt;br /&gt;
* 複数の比較演算子を &amp;lt;code&amp;gt;a &amp;lt; b == c&amp;lt;/code&amp;gt; のように書ける素晴らしい言語。&lt;br /&gt;
* &amp;lt;code&amp;gt;print &amp;gt;&amp;gt; sys.stderr, ...&amp;lt;/code&amp;gt; で標準エラーに出力&lt;br /&gt;
&lt;br /&gt;
== 文字列 ==&lt;br /&gt;
* シングルクォートとダブルクオートに違いはない。&lt;br /&gt;
** エスケープシーケンスを無視する場合は raw 文字列を使う。&amp;lt;code&amp;gt;r&amp;quot;raw 文字列\n&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* 三重クォート &amp;lt;nowiki&amp;gt;&amp;quot;&amp;quot;&amp;quot; あるいは '''&amp;lt;/nowiki&amp;gt; は改行をそのまま含めることができる。&lt;br /&gt;
* 連結は + 演算子を用いる。&lt;br /&gt;
** 文字列リテラルは、列記で連結可能。&amp;lt;code&amp;gt;&amp;quot;ho&amp;quot; &amp;quot;ge&amp;quot; → &amp;quot;hoge&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; 組み込み関数でバイト数を得る。&lt;br /&gt;
** マルチバイトを考慮した文字数は &amp;lt;code&amp;gt;len(str.decode(&amp;quot;UTF-8&amp;quot;))&amp;lt;/code&amp;gt; で得ることができる。&lt;br /&gt;
* &amp;lt;code&amp;gt;in&amp;lt;/code&amp;gt; で包含判定ができる&lt;br /&gt;
* &amp;lt;code&amp;gt;int(str)&amp;lt;/code&amp;gt; で整数に変換。第 2 引き数で基数指定可能。&lt;br /&gt;
&lt;br /&gt;
=== スライス ===&lt;br /&gt;
文字の間に添字を置くとわかりやすい。&lt;br /&gt;
 s = &amp;quot;H e l l o&amp;quot;&lt;br /&gt;
     0 1 2 3 4 5&lt;br /&gt;
   - 5 4 3 2 1   ← ここは -0 でないことに注意!! (0 = -0 のため)&lt;br /&gt;
 &lt;br /&gt;
 s[1]   → 'e'&lt;br /&gt;
 s[:3]  → 'Hel' # 先頭 3 文字&lt;br /&gt;
 s[3:]  → 'lo'&lt;br /&gt;
 s[-4]  → 'e'&lt;br /&gt;
 s[-3:] → 'llo' # 末尾 3 文字&lt;br /&gt;
 s[:-1] → 'Hell' # 最後の 1 文字を削る (改行削りに有用)&lt;br /&gt;
 s[:]   → コピーを作る&lt;br /&gt;
&lt;br /&gt;
== リスト ==&lt;br /&gt;
書くのが面倒なくらい柔軟性に富んだデータ型である。&lt;br /&gt;
* 変更可能 (mutable)&lt;br /&gt;
* 入れ子可能 (リストの要素をリストにできる)&lt;br /&gt;
* 文字列と同様のスライス表現で操作できる。&lt;br /&gt;
* &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; でリストの長さを得る。&lt;br /&gt;
&lt;br /&gt;
 a = []          # 初期化、クリア&lt;br /&gt;
 a = [0, 3, 5]&lt;br /&gt;
 a[1:1] = [1, 2] # 挿入 → [0, 1, 2, 3, 5]&lt;br /&gt;
 a[1:4] = []     # 削除 → [0, 5]&lt;br /&gt;
 a = a + [6, 7]  # 連結 → [0, 5, 6, 7]&lt;br /&gt;
 a = a * 2       # 連続 → [0, 5, 6, 7, 0, 5, 6, 7]&lt;br /&gt;
&lt;br /&gt;
* [http://www.python.jp/doc/2.5/tut/node7.html 5. データ構造]&lt;br /&gt;
&lt;br /&gt;
== バージョンによる違い ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center&amp;quot;&lt;br /&gt;
! !! RHEL5 !! RHEL6 !! RHEL7&lt;br /&gt;
|-&lt;br /&gt;
! Python&lt;br /&gt;
| 2.4.3 || 2.6.6 || 2.7.5&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/reference/compound_stmts.html#the-with-statement with 文]&lt;br /&gt;
| x || o || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/reference/expressions.html#conditional-expressions 条件演算]&amp;lt;br /&amp;gt;(三項演算子)&lt;br /&gt;
| x || o || o&lt;br /&gt;
|-&lt;br /&gt;
! リスト内包表記&lt;br /&gt;
| o || o || o&lt;br /&gt;
|-&lt;br /&gt;
! 辞書内包表記&lt;br /&gt;
| x || x || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/reference/expressions.html#generator-expressions ジェネレータ式]&lt;br /&gt;
| o || o || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/library/functions.html#enumerate enumerate 関数]&amp;lt;br /&amp;gt;の start 引数&lt;br /&gt;
| x || o || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/reference/compound_stmts.html#the-try-statement try... except... finally]&lt;br /&gt;
| x || o || o&lt;br /&gt;
|-&lt;br /&gt;
! sort/[http://docs.python.jp/2/library/functions.html#sorted sorted] の key 引数&lt;br /&gt;
| o || o || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/library/functions.html#property @property デコレータ]&lt;br /&gt;
| o || o || o&lt;br /&gt;
|-&lt;br /&gt;
! property オブジェクトの&amp;lt;br&amp;gt;getter, setter, deleter 関数&lt;br /&gt;
| x || o || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/library/functions.html#all all, any 関数]&lt;br /&gt;
| x || o || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/library/functions.html#bin bin 関数]&lt;br /&gt;
| x || x || o&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
※RHEL4 は 2.3.4、RHEL3 は 2.2.3。&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
=== リストを N 分割する ===&lt;br /&gt;
ちょうど N 個に分割するわけではなく、最大で N 個なので注意。&lt;br /&gt;
&lt;br /&gt;
 def split_list(list, n):&lt;br /&gt;
     l = len(list)&lt;br /&gt;
     size = l / n + (l % n &amp;gt; 0)&lt;br /&gt;
     return [ list[i:i+size] for i in range(0, l, size) ]&lt;br /&gt;
&lt;br /&gt;
こんな感じで分割したリストのリストになる。&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; l = [1,2,3,4,5,7,8,9,10]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 2)&lt;br /&gt;
 [[1, 2, 3, 4, 5], [7, 8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 3)&lt;br /&gt;
 [[1, 2, 3], [4, 5, 7], [8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 4)&lt;br /&gt;
 [[1, 2, 3], [4, 5, 7], [8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 5)&lt;br /&gt;
 [[1, 2], [3, 4], [5, 7], [8, 9], [10]]&lt;br /&gt;
&lt;br /&gt;
=== モジュールに定義された名前のリスト ===&lt;br /&gt;
&lt;br /&gt;
dir 関数を使う。(忘れやすい)&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir()&lt;br /&gt;
 ['__builtins__', '__doc__', '__name__', '__package__']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; import time&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir()&lt;br /&gt;
 ['__builtins__', '__doc__', '__name__', '__package__', 'time']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir(time)&lt;br /&gt;
 ['__doc__', '__file__', '__name__', '__package__', 'accept2dyear', 'altzone', 'asctime', 'clock',&lt;br /&gt;
 'ctime', 'daylight', 'gmtime', 'localtime', 'mktime', 'sleep', 'strftime', 'strptime',&lt;br /&gt;
 'struct_time', 'time', 'timezone', 'tzname', 'tzset']&lt;br /&gt;
&lt;br /&gt;
=== socket の setsockopt() を使う ===&lt;br /&gt;
&lt;br /&gt;
* SO_KEEPALIVE の場合&lt;br /&gt;
&lt;br /&gt;
 import socket&lt;br /&gt;
 s = socket.socket()&lt;br /&gt;
 s.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)&lt;br /&gt;
&lt;br /&gt;
* SO_LINGER の場合&lt;br /&gt;
&lt;br /&gt;
 import socket&lt;br /&gt;
 import struct&lt;br /&gt;
 s = socket.socket()&lt;br /&gt;
 s.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack('ii', 1, 30))&lt;br /&gt;
&lt;br /&gt;
== テンプレート ==&lt;br /&gt;
&lt;br /&gt;
=== awk 風 Python スクリプトテンプレート ===&lt;br /&gt;
&lt;br /&gt;
テキスト処理を何でもかんでも簡単な awk で済ませちゃうクセがついてしまったので、&lt;br /&gt;
自分に Python を使うように仕向けるための awk 風テンプレート。&lt;br /&gt;
&lt;br /&gt;
FS, NR, FILENAME, FNR, NF, s[0], s[1..NF] が利用可能。&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env python&lt;br /&gt;
 import sys&lt;br /&gt;
 &lt;br /&gt;
 if len(sys.argv) == 1:&lt;br /&gt;
     files = [ sys.stdin ]&lt;br /&gt;
 else:&lt;br /&gt;
     files = [ open(f) for f in sys.argv[1:] ]&lt;br /&gt;
 &lt;br /&gt;
 ### BEGIN {&lt;br /&gt;
 FS = None&lt;br /&gt;
 &lt;br /&gt;
 ### }&lt;br /&gt;
 &lt;br /&gt;
 NR = 0&lt;br /&gt;
 for file in files:&lt;br /&gt;
     FNR = 0; FILENAME = file.name&lt;br /&gt;
     for line in file:&lt;br /&gt;
         NR += 1; FNR += 1&lt;br /&gt;
         s = line.split(FS)&lt;br /&gt;
         s[0:0] = [ line[:-1] ]&lt;br /&gt;
         NF = len(s)&lt;br /&gt;
         # print NR, FILENAME, FNR, NF, s&lt;br /&gt;
         ### {&lt;br /&gt;
 &lt;br /&gt;
         ### }&lt;br /&gt;
 &lt;br /&gt;
 ### END {&lt;br /&gt;
 &lt;br /&gt;
 ### }&lt;br /&gt;
&lt;br /&gt;
=== ファイルか標準入力から読む ===&lt;br /&gt;
&lt;br /&gt;
ファイルが指定されれば、それらをすべて処理し、指定されなければ標準入力から読む。&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 &lt;br /&gt;
 if len(sys.argv) == 1:&lt;br /&gt;
     files = [ sys.stdin ]&lt;br /&gt;
 else:&lt;br /&gt;
     files = [ open(f) for f in sys.argv[1:] ]&lt;br /&gt;
 &lt;br /&gt;
 for file in files:&lt;br /&gt;
     ...&lt;br /&gt;
&lt;br /&gt;
* [http://docs.python.jp/2/library/fileinput.html fileinput モジュール] というのがあった…&lt;br /&gt;
&lt;br /&gt;
=== getopt ===&lt;br /&gt;
どの言語でもこいつだけはテンプレート化する必要がある。。&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 import getopt&lt;br /&gt;
 &lt;br /&gt;
 def usage(exit_code):&lt;br /&gt;
     out = (exit_code and sys.stderr) or sys.stdout&lt;br /&gt;
     print &amp;gt;&amp;gt; out, 'Usage: %s [-a] [-b str]' % sys.argv[0]&lt;br /&gt;
     sys.exit(exit_code)&lt;br /&gt;
 &lt;br /&gt;
 try:&lt;br /&gt;
     opts, args = getopt.getopt(sys.argv[1:], 'ab:h')&lt;br /&gt;
 except getopt.GetoptError:&lt;br /&gt;
     usage(1)&lt;br /&gt;
 &lt;br /&gt;
 (opt_a, opt_b) = (False, None) # defaults&lt;br /&gt;
 for (opt, val) in opts:&lt;br /&gt;
     if opt == '-a':&lt;br /&gt;
         opt_a = True&lt;br /&gt;
     elif opt == '-b':&lt;br /&gt;
         opt_b = val&lt;br /&gt;
     elif opt == '-h':&lt;br /&gt;
          usage(0)&lt;br /&gt;
     else:&lt;br /&gt;
          usage(1)&lt;br /&gt;
 &lt;br /&gt;
 for arg in args: # remainder&lt;br /&gt;
     ...&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=Python&amp;diff=1090</id>
		<title>Python</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=Python&amp;diff=1090"/>
				<updated>2017-10-24T14:17:27Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: /* バージョンによる違い */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;かなり忘れつつある Python について。&lt;br /&gt;
&lt;br /&gt;
== 参考リンク ==&lt;br /&gt;
* [http://www.python.jp/doc/release/index.html Python 2.5 ドキュメント - 19th September, 2006]&lt;br /&gt;
* [http://www.unixuser.org/~euske/doc/python/tutorial0917.html Python 講習会 資料] ― 古いけど、まとまっていて見やすい。&lt;br /&gt;
&lt;br /&gt;
== 覚え書き ==&lt;br /&gt;
* グローバル変数など、外側のスコープにある変数は読み出し専用となる。&amp;lt;code&amp;gt;global&amp;lt;/code&amp;gt; 文を使えば代入できる。&lt;br /&gt;
* 一定時間待ちを入れる場合は、&amp;lt;code&amp;gt;import time&amp;lt;/code&amp;gt; して &amp;lt;code&amp;gt;time.sleep(n)&amp;lt;/code&amp;gt; を使う。&lt;br /&gt;
* gzip コマンドで圧縮したデータを zlib モジュールでは展開できない (ヘッダが異なるため)。gzip + StringIO モジュールを使って回避する。&lt;br /&gt;
* 対話モードでは、最後に表示された結果は変数 &amp;lt;code&amp;gt;_&amp;lt;/code&amp;gt; に代入される。&lt;br /&gt;
* &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt; の末尾にコンマを入れると、改行されない。&amp;lt;code&amp;gt;print &amp;quot;hoge&amp;quot;,&amp;lt;/code&amp;gt;&lt;br /&gt;
* 一つの要素のタプルは、値の後ろにコンマを付ける。&amp;lt;code&amp;gt;(&amp;quot;hoge&amp;quot;,)&amp;lt;/code&amp;gt;&lt;br /&gt;
* 複数の比較演算子を &amp;lt;code&amp;gt;a &amp;lt; b == c&amp;lt;/code&amp;gt; のように書ける素晴らしい言語。&lt;br /&gt;
* &amp;lt;code&amp;gt;print &amp;gt;&amp;gt; sys.stderr, ...&amp;lt;/code&amp;gt; で標準エラーに出力&lt;br /&gt;
&lt;br /&gt;
== 文字列 ==&lt;br /&gt;
* シングルクォートとダブルクオートに違いはない。&lt;br /&gt;
** エスケープシーケンスを無視する場合は raw 文字列を使う。&amp;lt;code&amp;gt;r&amp;quot;raw 文字列\n&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* 三重クォート &amp;lt;nowiki&amp;gt;&amp;quot;&amp;quot;&amp;quot; あるいは '''&amp;lt;/nowiki&amp;gt; は改行をそのまま含めることができる。&lt;br /&gt;
* 連結は + 演算子を用いる。&lt;br /&gt;
** 文字列リテラルは、列記で連結可能。&amp;lt;code&amp;gt;&amp;quot;ho&amp;quot; &amp;quot;ge&amp;quot; → &amp;quot;hoge&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; 組み込み関数でバイト数を得る。&lt;br /&gt;
** マルチバイトを考慮した文字数は &amp;lt;code&amp;gt;len(str.decode(&amp;quot;UTF-8&amp;quot;))&amp;lt;/code&amp;gt; で得ることができる。&lt;br /&gt;
* &amp;lt;code&amp;gt;in&amp;lt;/code&amp;gt; で包含判定ができる&lt;br /&gt;
* &amp;lt;code&amp;gt;int(str)&amp;lt;/code&amp;gt; で整数に変換。第 2 引き数で基数指定可能。&lt;br /&gt;
&lt;br /&gt;
=== スライス ===&lt;br /&gt;
文字の間に添字を置くとわかりやすい。&lt;br /&gt;
 s = &amp;quot;H e l l o&amp;quot;&lt;br /&gt;
     0 1 2 3 4 5&lt;br /&gt;
   - 5 4 3 2 1   ← ここは -0 でないことに注意!! (0 = -0 のため)&lt;br /&gt;
 &lt;br /&gt;
 s[1]   → 'e'&lt;br /&gt;
 s[:3]  → 'Hel' # 先頭 3 文字&lt;br /&gt;
 s[3:]  → 'lo'&lt;br /&gt;
 s[-4]  → 'e'&lt;br /&gt;
 s[-3:] → 'llo' # 末尾 3 文字&lt;br /&gt;
 s[:-1] → 'Hell' # 最後の 1 文字を削る (改行削りに有用)&lt;br /&gt;
 s[:]   → コピーを作る&lt;br /&gt;
&lt;br /&gt;
== リスト ==&lt;br /&gt;
書くのが面倒なくらい柔軟性に富んだデータ型である。&lt;br /&gt;
* 変更可能 (mutable)&lt;br /&gt;
* 入れ子可能 (リストの要素をリストにできる)&lt;br /&gt;
* 文字列と同様のスライス表現で操作できる。&lt;br /&gt;
* &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; でリストの長さを得る。&lt;br /&gt;
&lt;br /&gt;
 a = []          # 初期化、クリア&lt;br /&gt;
 a = [0, 3, 5]&lt;br /&gt;
 a[1:1] = [1, 2] # 挿入 → [0, 1, 2, 3, 5]&lt;br /&gt;
 a[1:4] = []     # 削除 → [0, 5]&lt;br /&gt;
 a = a + [6, 7]  # 連結 → [0, 5, 6, 7]&lt;br /&gt;
 a = a * 2       # 連続 → [0, 5, 6, 7, 0, 5, 6, 7]&lt;br /&gt;
&lt;br /&gt;
* [http://www.python.jp/doc/2.5/tut/node7.html 5. データ構造]&lt;br /&gt;
&lt;br /&gt;
== バージョンによる違い ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center&amp;quot;&lt;br /&gt;
! !! RHEL5 !! RHEL6 !! RHEL7&lt;br /&gt;
|-&lt;br /&gt;
! Python&lt;br /&gt;
| 2.4.3 || 2.6.6 || 2.7.5&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/reference/compound_stmts.html#the-with-statement with 文]&lt;br /&gt;
| x || o || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/reference/expressions.html#conditional-expressions 条件演算]&amp;lt;br /&amp;gt;(三項演算子)&lt;br /&gt;
| x || o || o&lt;br /&gt;
|-&lt;br /&gt;
! リスト内包表記&lt;br /&gt;
| o || o || o&lt;br /&gt;
|-&lt;br /&gt;
! 辞書内包表記&lt;br /&gt;
| x || x || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/reference/expressions.html#generator-expressions ジェネレータ式]&lt;br /&gt;
| o || o || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/library/functions.html#enumerate enumerate 関数]&amp;lt;br /&amp;gt;の start 引数&lt;br /&gt;
| x || o || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/reference/compound_stmts.html#the-try-statement try... except... finally]&lt;br /&gt;
| x || o || o&lt;br /&gt;
|-&lt;br /&gt;
! sort/[http://docs.python.jp/2/library/functions.html#sorted sorted] の key 引数&lt;br /&gt;
| o || o || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/library/functions.html#property @property デコレータ]&lt;br /&gt;
| o || o || o&lt;br /&gt;
|-&lt;br /&gt;
! property オブジェクトの&amp;lt;br&amp;gt;getter, setter, deleter 関数&lt;br /&gt;
| x || o || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/library/functions.html#all all, any 関数]&lt;br /&gt;
| x || o || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/library/functions.html#bin bin 関数]&lt;br /&gt;
| x || x || o&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
※RHEL4 は、2.3.4。&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
=== リストを N 分割する ===&lt;br /&gt;
ちょうど N 個に分割するわけではなく、最大で N 個なので注意。&lt;br /&gt;
&lt;br /&gt;
 def split_list(list, n):&lt;br /&gt;
     l = len(list)&lt;br /&gt;
     size = l / n + (l % n &amp;gt; 0)&lt;br /&gt;
     return [ list[i:i+size] for i in range(0, l, size) ]&lt;br /&gt;
&lt;br /&gt;
こんな感じで分割したリストのリストになる。&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; l = [1,2,3,4,5,7,8,9,10]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 2)&lt;br /&gt;
 [[1, 2, 3, 4, 5], [7, 8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 3)&lt;br /&gt;
 [[1, 2, 3], [4, 5, 7], [8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 4)&lt;br /&gt;
 [[1, 2, 3], [4, 5, 7], [8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 5)&lt;br /&gt;
 [[1, 2], [3, 4], [5, 7], [8, 9], [10]]&lt;br /&gt;
&lt;br /&gt;
=== モジュールに定義された名前のリスト ===&lt;br /&gt;
&lt;br /&gt;
dir 関数を使う。(忘れやすい)&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir()&lt;br /&gt;
 ['__builtins__', '__doc__', '__name__', '__package__']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; import time&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir()&lt;br /&gt;
 ['__builtins__', '__doc__', '__name__', '__package__', 'time']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir(time)&lt;br /&gt;
 ['__doc__', '__file__', '__name__', '__package__', 'accept2dyear', 'altzone', 'asctime', 'clock',&lt;br /&gt;
 'ctime', 'daylight', 'gmtime', 'localtime', 'mktime', 'sleep', 'strftime', 'strptime',&lt;br /&gt;
 'struct_time', 'time', 'timezone', 'tzname', 'tzset']&lt;br /&gt;
&lt;br /&gt;
=== socket の setsockopt() を使う ===&lt;br /&gt;
&lt;br /&gt;
* SO_KEEPALIVE の場合&lt;br /&gt;
&lt;br /&gt;
 import socket&lt;br /&gt;
 s = socket.socket()&lt;br /&gt;
 s.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)&lt;br /&gt;
&lt;br /&gt;
* SO_LINGER の場合&lt;br /&gt;
&lt;br /&gt;
 import socket&lt;br /&gt;
 import struct&lt;br /&gt;
 s = socket.socket()&lt;br /&gt;
 s.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack('ii', 1, 30))&lt;br /&gt;
&lt;br /&gt;
== テンプレート ==&lt;br /&gt;
&lt;br /&gt;
=== awk 風 Python スクリプトテンプレート ===&lt;br /&gt;
&lt;br /&gt;
テキスト処理を何でもかんでも簡単な awk で済ませちゃうクセがついてしまったので、&lt;br /&gt;
自分に Python を使うように仕向けるための awk 風テンプレート。&lt;br /&gt;
&lt;br /&gt;
FS, NR, FILENAME, FNR, NF, s[0], s[1..NF] が利用可能。&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env python&lt;br /&gt;
 import sys&lt;br /&gt;
 &lt;br /&gt;
 if len(sys.argv) == 1:&lt;br /&gt;
     files = [ sys.stdin ]&lt;br /&gt;
 else:&lt;br /&gt;
     files = [ open(f) for f in sys.argv[1:] ]&lt;br /&gt;
 &lt;br /&gt;
 ### BEGIN {&lt;br /&gt;
 FS = None&lt;br /&gt;
 &lt;br /&gt;
 ### }&lt;br /&gt;
 &lt;br /&gt;
 NR = 0&lt;br /&gt;
 for file in files:&lt;br /&gt;
     FNR = 0; FILENAME = file.name&lt;br /&gt;
     for line in file:&lt;br /&gt;
         NR += 1; FNR += 1&lt;br /&gt;
         s = line.split(FS)&lt;br /&gt;
         s[0:0] = [ line[:-1] ]&lt;br /&gt;
         NF = len(s)&lt;br /&gt;
         # print NR, FILENAME, FNR, NF, s&lt;br /&gt;
         ### {&lt;br /&gt;
 &lt;br /&gt;
         ### }&lt;br /&gt;
 &lt;br /&gt;
 ### END {&lt;br /&gt;
 &lt;br /&gt;
 ### }&lt;br /&gt;
&lt;br /&gt;
=== ファイルか標準入力から読む ===&lt;br /&gt;
&lt;br /&gt;
ファイルが指定されれば、それらをすべて処理し、指定されなければ標準入力から読む。&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 &lt;br /&gt;
 if len(sys.argv) == 1:&lt;br /&gt;
     files = [ sys.stdin ]&lt;br /&gt;
 else:&lt;br /&gt;
     files = [ open(f) for f in sys.argv[1:] ]&lt;br /&gt;
 &lt;br /&gt;
 for file in files:&lt;br /&gt;
     ...&lt;br /&gt;
&lt;br /&gt;
* [http://docs.python.jp/2/library/fileinput.html fileinput モジュール] というのがあった…&lt;br /&gt;
&lt;br /&gt;
=== getopt ===&lt;br /&gt;
どの言語でもこいつだけはテンプレート化する必要がある。。&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 import getopt&lt;br /&gt;
 &lt;br /&gt;
 def usage(exit_code):&lt;br /&gt;
     out = (exit_code and sys.stderr) or sys.stdout&lt;br /&gt;
     print &amp;gt;&amp;gt; out, 'Usage: %s [-a] [-b str]' % sys.argv[0]&lt;br /&gt;
     sys.exit(exit_code)&lt;br /&gt;
 &lt;br /&gt;
 try:&lt;br /&gt;
     opts, args = getopt.getopt(sys.argv[1:], 'ab:h')&lt;br /&gt;
 except getopt.GetoptError:&lt;br /&gt;
     usage(1)&lt;br /&gt;
 &lt;br /&gt;
 (opt_a, opt_b) = (False, None) # defaults&lt;br /&gt;
 for (opt, val) in opts:&lt;br /&gt;
     if opt == '-a':&lt;br /&gt;
         opt_a = True&lt;br /&gt;
     elif opt == '-b':&lt;br /&gt;
         opt_b = val&lt;br /&gt;
     elif opt == '-h':&lt;br /&gt;
          usage(0)&lt;br /&gt;
     else:&lt;br /&gt;
          usage(1)&lt;br /&gt;
 &lt;br /&gt;
 for arg in args: # remainder&lt;br /&gt;
     ...&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=RHEL&amp;diff=1089</id>
		<title>RHEL</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=RHEL&amp;diff=1089"/>
				<updated>2017-10-24T12:14:06Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: /* カーネルバージョン */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;言わずと知れた(?) Red Hat Enterprise Linux のページ。赤帽。&lt;br /&gt;
&lt;br /&gt;
もちろん、RHEL を買えるわけがないので、CentOS で代用しています。&lt;br /&gt;
CentOS って何？って方は、[http://ja.wikipedia.org/wiki/CentOS Wikipedia] をご覧下さい。&lt;br /&gt;
&lt;br /&gt;
== カーネルバージョン ==&lt;br /&gt;
&lt;br /&gt;
こんなページがあった…。&lt;br /&gt;
* [https://access.redhat.com/ja/articles/16476 Red Hat Enterprise Linux のリリース日と収録カーネルの一覧]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! RHEL バージョン !! カーネルバージョン !! リリース !! 最終 !! 提供カーネル !! リリース日 !! 経過日数&lt;br /&gt;
|-&lt;br /&gt;
| 7.0 || rowspan=&amp;quot;5&amp;quot; | 3.10.0 || 123.el7&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2015-0102.html 123.20.1.el7] || rowspan=&amp;quot;5&amp;quot; | kernel || 2014-06-10 ||&lt;br /&gt;
|-&lt;br /&gt;
| 7.1 || [https://rhn.redhat.com/errata/RHSA-2015-0290.html 229.el7]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2015-1978.html 229.20.1.el7] || 2015-03-05 || 268&lt;br /&gt;
|-&lt;br /&gt;
| 7.2 || [https://rhn.redhat.com/errata/RHSA-2015-2152.html 327.el7]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2016-2098.html 327.36.3.el7] || 2015-11-19 || 259&lt;br /&gt;
|-&lt;br /&gt;
| 7.3 || [https://rhn.redhat.com/errata/RHSA-2016-2574.html 514.el7]&lt;br /&gt;
| [https://access.redhat.com/errata/RHBA-2017:1674 514.26.2.el7] || 2016-11-03 || 350&lt;br /&gt;
|-&lt;br /&gt;
| 7.4 || [https://access.redhat.com/errata/RHSA-2017:1842 693.el7]&lt;br /&gt;
| 693.xx.x.el7 || 2017-08-01 || 271&lt;br /&gt;
|-&lt;br /&gt;
| 6 Beta 1 || rowspan=&amp;quot;12&amp;quot; | 2.6.32 || 19.el6 || || rowspan=&amp;quot;12&amp;quot; | kernel || 2010-04-22 ||&lt;br /&gt;
|-&lt;br /&gt;
| 6 Beta 2 || 37.el6 || || 2010-06-30 ||&lt;br /&gt;
|-&lt;br /&gt;
| 6.0 || 71.el6&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2011-0498.html 71.29.1.el6] || 2010-11-10 ||&lt;br /&gt;
|-&lt;br /&gt;
| 6.1 || [https://rhn.redhat.com/errata/RHSA-2011-0542.html 131.0.15.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2011-1465.html 131.21.1.el6] || 2011-05-19 || 190&lt;br /&gt;
|-&lt;br /&gt;
| 6.2 || [https://rhn.redhat.com/errata/RHSA-2011-1530.html 220.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2012-0743.html 220.23.1.el6] || 2011-12-06 || 201&lt;br /&gt;
|-&lt;br /&gt;
| 6.3 || [https://rhn.redhat.com/errata/RHSA-2012-0862.html 279.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2013-0223.html 279.22.1.el6] || 2012-06-20 || 197&lt;br /&gt;
|-&lt;br /&gt;
| 6.4 || [https://rhn.redhat.com/errata/RHSA-2013-0496.html 358.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2013-1436.html 358.23.2.el6] || 2013-02-21 || 246&lt;br /&gt;
|-&lt;br /&gt;
| 6.5 || [https://rhn.redhat.com/errata/RHSA-2013-1645.html 431.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2014-1167.html 431.29.2.el6] || 2013-11-21 || 273&lt;br /&gt;
|-&lt;br /&gt;
| 6.6 || [https://rhn.redhat.com/errata/RHSA-2014-1392.html 504.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2015-1221.html 504.30.3.el6] || 2014-10-14 || 327&lt;br /&gt;
|-&lt;br /&gt;
| 6.7 || [https://rhn.redhat.com/errata/RHSA-2015-1272.html 573.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2016-0715.html 573.26.1.el6] || 2015-07-22 || 281&lt;br /&gt;
|-&lt;br /&gt;
| 6.8 || [https://rhn.redhat.com/errata/RHSA-2016-0855.html 642.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2017-0307.html 642.15.1.el6] || 2016-05-10 || 293&lt;br /&gt;
|-&lt;br /&gt;
| 6.9 || [https://rhn.redhat.com/errata/RHSA-2017-0817.html 696.el6]&lt;br /&gt;
| 696.xx.x.el6 || 2017-03-21 || 315&lt;br /&gt;
|-&lt;br /&gt;
| 5.0&lt;br /&gt;
| rowspan=&amp;quot;13&amp;quot; | 2.6.18 || 8.el5 || 8.1.15.el5&lt;br /&gt;
| rowspan=&amp;quot;13&amp;quot; | kernel&amp;lt;br&amp;gt;kernel-PAE&amp;lt;br&amp;gt;kernel-xen || 2007-03-14 ||&lt;br /&gt;
|-&lt;br /&gt;
| 5.1 || [https://rhn.redhat.com/errata/RHBA-2007-0959.html 53.el5] || 53.1.21.el5 || 2007-11-07 || 238&lt;br /&gt;
|-&lt;br /&gt;
| 5.2 || [https://rhn.redhat.com/errata/RHBA-2008-0314.html 92.el5] || 92.1.22.el5 || 2008-05-21 || 196&lt;br /&gt;
|-&lt;br /&gt;
| 5.3 || [https://rhn.redhat.com/errata/RHSA-2009-0225.html 128.el5] || 128.7.1.el5 || 2009-01-20 || 244&lt;br /&gt;
|-&lt;br /&gt;
| 5.4 || [https://rhn.redhat.com/errata/RHSA-2009-1243.html 164.el5] || 164.15.1.el5 || 2009-09-01 || 224&lt;br /&gt;
|-&lt;br /&gt;
| 5.5 || [https://rhn.redhat.com/errata/RHSA-2010-0178.html 194.el5] || 194.32.1.el5 || 2010-03-30 || 210&lt;br /&gt;
|-&lt;br /&gt;
| 5.6 || [https://rhn.redhat.com/errata/RHSA-2011-0017.html 238.el5] || 238.19.1.el5 || 2011-01-13 || 289&lt;br /&gt;
|-&lt;br /&gt;
| 5.7 || [https://rhn.redhat.com/errata/RHSA-2011-1065.html 274.el5] || 274.18.1.el5 || 2011-07-21 || 189&lt;br /&gt;
|-&lt;br /&gt;
| 5.8 || [https://rhn.redhat.com/errata/RHSA-2012-0150.html 308.el5] || 308.24.1.el5 || 2012-02-21 || 215&lt;br /&gt;
|-&lt;br /&gt;
| 5.9 || [https://rhn.redhat.com/errata/RHBA-2013-0006.html 348.el5] || 348.18.1.el5 || 2013-01-08 || 322&lt;br /&gt;
|-&lt;br /&gt;
| 5.10 || [https://rhn.redhat.com/errata/RHSA-2013-1348.html 371.el5] || 371.12.1.el5 || 2013-09-30 || 265&lt;br /&gt;
|-&lt;br /&gt;
| 5.11 || [https://rhn.redhat.com/errata/RHBA-2014-1196.html 398.el5] ||              || 2014-09-16 || 351&lt;br /&gt;
|-&lt;br /&gt;
| latest || [http://rhn.redhat.com/errata/RHSA-2017-0323.html 419.el5] || || 2017-02-24 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! RHEL バージョン !! カーネルバージョン !! リリース !! 提供カーネル !! リリース日 !! 経過日数&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | 2.6.9 || 5.EL&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | kernel&amp;lt;br&amp;gt;kernel-hugemem&amp;lt;br&amp;gt;kernel-smp&amp;lt;br&amp;gt;kernel-largesmp&amp;lt;br&amp;gt;※kernel 以外 PAE が on&lt;br /&gt;
| 2005-02-15 ||&lt;br /&gt;
|-&lt;br /&gt;
| 4.1 || 11.EL || 2005-06-08 || 113&lt;br /&gt;
|-&lt;br /&gt;
| 4.2 || 22.EL || 2005-10-05 || 119&lt;br /&gt;
|-&lt;br /&gt;
| 4.3 || 34.EL || 2006-03-07 || 153&lt;br /&gt;
|-&lt;br /&gt;
| 4.4 || 42.EL || 2006-08-10 || 156&lt;br /&gt;
|-&lt;br /&gt;
| 4.5 || 55.EL || 2007-04-28 || 261&lt;br /&gt;
|-&lt;br /&gt;
| 4.6 || 67.EL || 2007-11-15 || 201&lt;br /&gt;
|-&lt;br /&gt;
| 4.7 || 78.EL || 2008-07-24 || 252&lt;br /&gt;
|-&lt;br /&gt;
| 4.8 || 89.EL || 2009-05-18 || 298&lt;br /&gt;
|-&lt;br /&gt;
| 4.9 || [https://rhn.redhat.com/errata/RHSA-2011-0263.html 100.EL] || 2011-02-16 || 639&lt;br /&gt;
|-&lt;br /&gt;
| last || [https://rhn.redhat.com/errata/RHBA-2011-1796.html 103.EL] || 2011-12-08 || 295&lt;br /&gt;
|-&lt;br /&gt;
| ELS latest || [https://rhn.redhat.com/errata/RHSA-2015-0009.html 106.EL] || 2015-01-05 ||&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | 2.4.21 || 4.EL&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | kernel&amp;lt;br&amp;gt;kernel-hugemem&amp;lt;br&amp;gt;kernel-smp&amp;lt;br&amp;gt;(kernel-BOOT)&lt;br /&gt;
| 2003-10-23 ||&lt;br /&gt;
|-&lt;br /&gt;
| 3.1 || 9.EL || 2004-01-16 || 85&lt;br /&gt;
|-&lt;br /&gt;
| 3.2 || 15.EL || 2004-05-11 || 116&lt;br /&gt;
|-&lt;br /&gt;
| 3.3 || 20.EL || 2004-09-01 || 113&lt;br /&gt;
|-&lt;br /&gt;
| 3.4 || 27.EL || 2004-12-20 || 110&lt;br /&gt;
|-&lt;br /&gt;
| 3.5 || 32.EL || 2005-05-18 || 149&lt;br /&gt;
|-&lt;br /&gt;
| 3.6 || 37.EL || 2005-09-28 || 133&lt;br /&gt;
|-&lt;br /&gt;
| 3.7 || 40.EL || 2006-03-15 || 168&lt;br /&gt;
|-&lt;br /&gt;
| 3.8 || 47.EL || 2006-07-20 || 127&lt;br /&gt;
|-&lt;br /&gt;
| 3.9 || 50.EL || 2007-06-11 || 326&lt;br /&gt;
|-&lt;br /&gt;
| last || 63.EL || 2009-11-03 || 876&lt;br /&gt;
|-&lt;br /&gt;
| ELS last || 66.EL || 2010-11-12 || 374&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== カーネルコンフィグ ==&lt;br /&gt;
=== RHEL 5 ===&lt;br /&gt;
普通の kernel と kernel-PAE では、SMP がデフォルトになったため、違いはわずか。&lt;br /&gt;
 # Linux kernel version: 2.6.18-128.1.6.el5  | # Linux kernel version: 2.6.18-128.1.6.el5PAE&lt;br /&gt;
 # Wed Apr  1 09:12:24 2009                  | # Wed Apr  1 09:55:25 2009&lt;br /&gt;
 CONFIG_HIGHMEM4G=y                          | # CONFIG_HIGHMEM4G is not set&lt;br /&gt;
 # CONFIG_HIGHMEM64G is not set              | CONFIG_HIGHMEM64G=y&lt;br /&gt;
                                             &amp;gt; CONFIG_X86_PAE=y&lt;br /&gt;
                                             &amp;gt; # CONFIG_NUMA is not set&lt;br /&gt;
 CONFIG_SOFTWARE_SUSPEND=y                   &amp;lt;&lt;br /&gt;
 CONFIG_PM_STD_PARTITION=&amp;quot;&amp;quot;                  &amp;lt;&lt;br /&gt;
                                             &amp;gt; CONFIG_I2O_EXT_ADAPTEC_DMA64=y&lt;br /&gt;
&lt;br /&gt;
=== RHEL 4 ===&lt;br /&gt;
UP カーネルと SMP カーネルと hugemem カーネルのコンフィグの相違を diff ってみた。&lt;br /&gt;
hugemem は SMP とほとんど変わらなかったので、右に付け足し。&lt;br /&gt;
&lt;br /&gt;
SMP では、SMP、PAE、HT などが on になっており、hugemem ではさらに X86_4G などが on になっている。&lt;br /&gt;
&lt;br /&gt;
 # Linux kernel version: 2.6.9-78.EL  | # Linux kernel version: 2.6.9-78.ELsmp  | # Linux kernel version: 2.6.9-78.ELhugemem&lt;br /&gt;
 # Wed Jul  9 15:24:56 2008           | # Wed Jul  9 15:37:00 2008              | # Wed Jul  9 15:55:03 2008&lt;br /&gt;
 CONFIG_BROKEN_ON_SMP=y               &amp;lt;&lt;br /&gt;
                                      &amp;gt; CONFIG_STOP_MACHINE=y&lt;br /&gt;
 CONFIG_X86_PC=y                      | CONFIG_MEM_MIRROR=y&lt;br /&gt;
                                      &amp;gt; # CONFIG_X86_PC is not set&lt;br /&gt;
 # CONFIG_X86_GENERICARCH is not set  | CONFIG_X86_GENERICARCH=y&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_CYCLONE_TIMER=y&lt;br /&gt;
 # CONFIG_X86_4G is not set                                                     | CONFIG_X86_4G=y&lt;br /&gt;
 # CONFIG_X86_SWITCH_PAGETABLES is not set                                      | CONFIG_X86_SWITCH_PAGETABLES=y&lt;br /&gt;
 # CONFIG_X86_4G_VM_LAYOUT is not set                                           | CONFIG_X86_4G_VM_LAYOUT=y&lt;br /&gt;
 # CONFIG_X86_UACCESS_INDIRECT is not set                                       | CONFIG_X86_UACCESS_INDIRECT=y&lt;br /&gt;
 # CONFIG_X86_HIGH_ENTRY is not set                                             | CONFIG_X86_HIGH_ENTRY=y&lt;br /&gt;
 # CONFIG_SMP is not set              | CONFIG_SMP=y&lt;br /&gt;
                                      &amp;gt; CONFIG_NR_CPUS=32&lt;br /&gt;
                                      &amp;gt; CONFIG_SCHED_SMT=y&lt;br /&gt;
                                      &amp;gt; CONFIG_SCHED_MC=y&lt;br /&gt;
 CONFIG_X86_UP_APIC=y                 &amp;lt;&lt;br /&gt;
 CONFIG_X86_UP_IOAPIC=y               &amp;lt;&lt;br /&gt;
 CONFIG_HIGHMEM4G=y                   | # CONFIG_HIGHMEM4G is not set&lt;br /&gt;
 # CONFIG_HIGHMEM64G is not set       | CONFIG_HIGHMEM64G=y&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_PAE=y&lt;br /&gt;
                                      &amp;gt; # CONFIG_NUMA is not set&lt;br /&gt;
                                      &amp;gt; # CONFIG_IRQBALANCE is not set&lt;br /&gt;
                                      &amp;gt; CONFIG_HAVE_DEC_LOCK=y                          &lt;br /&gt;
                                      &amp;gt; # CONFIG_HOTPLUG_CPU is not set                 &lt;br /&gt;
 # CONFIG_NI5010 is not set           &amp;lt;&lt;br /&gt;
 # CONFIG_PCMCIA_XIRTULIP is not set  &amp;lt;&lt;br /&gt;
 CONFIG_ISDN_DRV_LOOP=m               &amp;lt;&lt;br /&gt;
 CONFIG_HYSDN=m                       &amp;lt;&lt;br /&gt;
 CONFIG_HYSDN_CAPI=y                  &amp;lt;&lt;br /&gt;
 # CONFIG_COMPUTONE is not set        &amp;lt;&lt;br /&gt;
 # CONFIG_DIGIEPCA is not set         &amp;lt;&lt;br /&gt;
 # CONFIG_DIGI is not set             &amp;lt;&lt;br /&gt;
 # CONFIG_ESPSERIAL is not set        &amp;lt;&lt;br /&gt;
 # CONFIG_MOXA_INTELLIO is not set    &amp;lt;&lt;br /&gt;
 # CONFIG_MOXA_SMARTIO is not set     &amp;lt;&lt;br /&gt;
 # CONFIG_ISI is not set              &amp;lt;&lt;br /&gt;
 # CONFIG_RISCOM8 is not set          &amp;lt;&lt;br /&gt;
 # CONFIG_SPECIALIX is not set        &amp;lt;&lt;br /&gt;
 # CONFIG_SX is not set               &amp;lt;&lt;br /&gt;
 # CONFIG_RIO is not set              &amp;lt;&lt;br /&gt;
 # CONFIG_STALLION is not set         &amp;lt;&lt;br /&gt;
 # CONFIG_ISTALLION is not set        &amp;lt;&lt;br /&gt;
 # CONFIG_FTAPE is not set            &amp;lt;&lt;br /&gt;
 # CONFIG_I2C_ELEKTOR is not set      &amp;lt;&lt;br /&gt;
 # CONFIG_VIDEO_MEYE is not set       &amp;lt;&lt;br /&gt;
 CONFIG_USB_SERIAL_WHITEHEAT=m        &amp;lt;&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_SMP=y&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_HT=y&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_TRAMPOLINE=y&lt;br /&gt;
&lt;br /&gt;
要するに…&lt;br /&gt;
; kernel&lt;br /&gt;
: 搭載メモリ 4 GB まで対応、複数のコア (プロセッサ) やハイパースレッディングには非対応。&lt;br /&gt;
; kernel-smp&lt;br /&gt;
: 搭載メモリ 4 GB 以上に対応、複数のコアやハイパースレッディングにも対応。&lt;br /&gt;
; kernel-hugemem&lt;br /&gt;
: 搭載メモリ 4 GB 以上に対応、複数のコアやハイパースレッディングにも対応。ユーザ空間 4 GB (0xff000000 = 4080 MB)、カーネル空間 4 GB になる。ページテーブルの切り替え(?)によるオーバーヘッドが発生する。&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
=== 追加パッケージ ===&lt;br /&gt;
&lt;br /&gt;
やっぱり RPM でインストールするのが一番安心するね。&lt;br /&gt;
&lt;br /&gt;
* [https://fedoraproject.org/wiki/EPEL EPEL - FedoraProject]&lt;br /&gt;
* [http://rpmrepo.org/RPMforge RPMforge - RPMRepo Wiki]&lt;br /&gt;
&lt;br /&gt;
=== debuginfo ===&lt;br /&gt;
&lt;br /&gt;
日本人は理研から落としましょう。速いです。&lt;br /&gt;
&lt;br /&gt;
* [http://ftp.riken.jp/Linux/redhat/ftp.redhat.com/linux/enterprise/ ftp.riken.jp] (RHEL)&lt;br /&gt;
* [http://ftp.riken.jp/Linux/redhat/ftp.redhat.com/linux/updates/enterprise/ ftp.riken.jp] (RHEL updates)&lt;br /&gt;
* [http://debuginfo.centos.org/ debuginfo.centos.org] (CentOS)&lt;br /&gt;
&lt;br /&gt;
=== RHEL 5 ===&lt;br /&gt;
==== vim 7.0 のカラーリング ====&lt;br /&gt;
RHEL5 の vim 7.0 で /var/log/messages を見たときのカラーリングがすごい。ケバい。&lt;br /&gt;
&lt;br /&gt;
[[画像:vim7.png]]&lt;br /&gt;
&lt;br /&gt;
でもエラーを反転表示したりして、意外と使えるかもしれない。&lt;br /&gt;
&lt;br /&gt;
=== RHEL 4 ===&lt;br /&gt;
&lt;br /&gt;
=== RHEL 3 ===&lt;br /&gt;
&lt;br /&gt;
==== スケジューラ ====&lt;br /&gt;
今日知った、驚愕の事実。&lt;br /&gt;
&lt;br /&gt;
'''RHEL 3 のカーネルは 2.4 系だが、スケジューラは O(1) スケジューラである!!'''&lt;br /&gt;
&lt;br /&gt;
ソース読んで初めて知った…。&lt;br /&gt;
&lt;br /&gt;
2009/07/13 追記：RHEL 2.1 も O(1) スケジューラが載ってた。&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=RHEL&amp;diff=1088</id>
		<title>RHEL</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=RHEL&amp;diff=1088"/>
				<updated>2017-04-05T21:36:31Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: /* カーネルバージョン */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;言わずと知れた(?) Red Hat Enterprise Linux のページ。赤帽。&lt;br /&gt;
&lt;br /&gt;
もちろん、RHEL を買えるわけがないので、CentOS で代用しています。&lt;br /&gt;
CentOS って何？って方は、[http://ja.wikipedia.org/wiki/CentOS Wikipedia] をご覧下さい。&lt;br /&gt;
&lt;br /&gt;
== カーネルバージョン ==&lt;br /&gt;
&lt;br /&gt;
こんなページがあった…。&lt;br /&gt;
* [https://access.redhat.com/ja/articles/16476 Red Hat Enterprise Linux のリリース日と収録カーネルの一覧]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! RHEL バージョン !! カーネルバージョン !! リリース !! 最終 !! 提供カーネル !! リリース日 !! 経過日数&lt;br /&gt;
|-&lt;br /&gt;
| 7.0 || rowspan=&amp;quot;4&amp;quot; | 3.10.0 || 123.el7&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2015-0102.html 123.20.1.el7] || rowspan=&amp;quot;4&amp;quot; | kernel || 2014-06-10 ||&lt;br /&gt;
|-&lt;br /&gt;
| 7.1 || [https://rhn.redhat.com/errata/RHSA-2015-0290.html 229.el7]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2015-1978.html 229.20.1.el7] || 2015-03-05 || 268&lt;br /&gt;
|-&lt;br /&gt;
| 7.2 || [https://rhn.redhat.com/errata/RHSA-2015-2152.html 327.el7]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2016-2098.html 327.36.3.el7] || 2015-11-19 || 259&lt;br /&gt;
|-&lt;br /&gt;
| 7.3 || [https://rhn.redhat.com/errata/RHSA-2016-2574.html 514.el7]&lt;br /&gt;
| 514.xx.x.el7 || 2016-11-03 || 350&lt;br /&gt;
|-&lt;br /&gt;
| 6 Beta 1 || rowspan=&amp;quot;12&amp;quot; | 2.6.32 || 19.el6 || || rowspan=&amp;quot;12&amp;quot; | kernel || 2010-04-22 ||&lt;br /&gt;
|-&lt;br /&gt;
| 6 Beta 2 || 37.el6 || || 2010-06-30 ||&lt;br /&gt;
|-&lt;br /&gt;
| 6.0 || 71.el6&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2011-0498.html 71.29.1.el6] || 2010-11-10 ||&lt;br /&gt;
|-&lt;br /&gt;
| 6.1 || [https://rhn.redhat.com/errata/RHSA-2011-0542.html 131.0.15.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2011-1465.html 131.21.1.el6] || 2011-05-19 || 190&lt;br /&gt;
|-&lt;br /&gt;
| 6.2 || [https://rhn.redhat.com/errata/RHSA-2011-1530.html 220.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2012-0743.html 220.23.1.el6] || 2011-12-06 || 201&lt;br /&gt;
|-&lt;br /&gt;
| 6.3 || [https://rhn.redhat.com/errata/RHSA-2012-0862.html 279.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2013-0223.html 279.22.1.el6] || 2012-06-20 || 197&lt;br /&gt;
|-&lt;br /&gt;
| 6.4 || [https://rhn.redhat.com/errata/RHSA-2013-0496.html 358.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2013-1436.html 358.23.2.el6] || 2013-02-21 || 246&lt;br /&gt;
|-&lt;br /&gt;
| 6.5 || [https://rhn.redhat.com/errata/RHSA-2013-1645.html 431.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2014-1167.html 431.29.2.el6] || 2013-11-21 || 273&lt;br /&gt;
|-&lt;br /&gt;
| 6.6 || [https://rhn.redhat.com/errata/RHSA-2014-1392.html 504.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2015-1221.html 504.30.3.el6] || 2014-10-14 || 327&lt;br /&gt;
|-&lt;br /&gt;
| 6.7 || [https://rhn.redhat.com/errata/RHSA-2015-1272.html 573.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2016-0715.html 573.26.1.el6] || 2015-07-22 || 281&lt;br /&gt;
|-&lt;br /&gt;
| 6.8 || [https://rhn.redhat.com/errata/RHSA-2016-0855.html 642.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2017-0307.html 642.15.1.el6] || 2016-05-10 || 293&lt;br /&gt;
|-&lt;br /&gt;
| 6.9 || [https://rhn.redhat.com/errata/RHSA-2017-0817.html 696.el6]&lt;br /&gt;
| 696.xx.x.el6 || 2017-03-21 || 315&lt;br /&gt;
|-&lt;br /&gt;
| 5.0&lt;br /&gt;
| rowspan=&amp;quot;13&amp;quot; | 2.6.18 || 8.el5 || 8.1.15.el5&lt;br /&gt;
| rowspan=&amp;quot;13&amp;quot; | kernel&amp;lt;br&amp;gt;kernel-PAE&amp;lt;br&amp;gt;kernel-xen || 2007-03-14 ||&lt;br /&gt;
|-&lt;br /&gt;
| 5.1 || [https://rhn.redhat.com/errata/RHBA-2007-0959.html 53.el5] || 53.1.21.el5 || 2007-11-07 || 238&lt;br /&gt;
|-&lt;br /&gt;
| 5.2 || [https://rhn.redhat.com/errata/RHBA-2008-0314.html 92.el5] || 92.1.22.el5 || 2008-05-21 || 196&lt;br /&gt;
|-&lt;br /&gt;
| 5.3 || [https://rhn.redhat.com/errata/RHSA-2009-0225.html 128.el5] || 128.7.1.el5 || 2009-01-20 || 244&lt;br /&gt;
|-&lt;br /&gt;
| 5.4 || [https://rhn.redhat.com/errata/RHSA-2009-1243.html 164.el5] || 164.15.1.el5 || 2009-09-01 || 224&lt;br /&gt;
|-&lt;br /&gt;
| 5.5 || [https://rhn.redhat.com/errata/RHSA-2010-0178.html 194.el5] || 194.32.1.el5 || 2010-03-30 || 210&lt;br /&gt;
|-&lt;br /&gt;
| 5.6 || [https://rhn.redhat.com/errata/RHSA-2011-0017.html 238.el5] || 238.19.1.el5 || 2011-01-13 || 289&lt;br /&gt;
|-&lt;br /&gt;
| 5.7 || [https://rhn.redhat.com/errata/RHSA-2011-1065.html 274.el5] || 274.18.1.el5 || 2011-07-21 || 189&lt;br /&gt;
|-&lt;br /&gt;
| 5.8 || [https://rhn.redhat.com/errata/RHSA-2012-0150.html 308.el5] || 308.24.1.el5 || 2012-02-21 || 215&lt;br /&gt;
|-&lt;br /&gt;
| 5.9 || [https://rhn.redhat.com/errata/RHBA-2013-0006.html 348.el5] || 348.18.1.el5 || 2013-01-08 || 322&lt;br /&gt;
|-&lt;br /&gt;
| 5.10 || [https://rhn.redhat.com/errata/RHSA-2013-1348.html 371.el5] || 371.12.1.el5 || 2013-09-30 || 265&lt;br /&gt;
|-&lt;br /&gt;
| 5.11 || [https://rhn.redhat.com/errata/RHBA-2014-1196.html 398.el5] ||              || 2014-09-16 || 351&lt;br /&gt;
|-&lt;br /&gt;
| latest || [http://rhn.redhat.com/errata/RHSA-2017-0323.html 419.el5] || || 2017-02-24 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! RHEL バージョン !! カーネルバージョン !! リリース !! 提供カーネル !! リリース日 !! 経過日数&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | 2.6.9 || 5.EL&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | kernel&amp;lt;br&amp;gt;kernel-hugemem&amp;lt;br&amp;gt;kernel-smp&amp;lt;br&amp;gt;kernel-largesmp&amp;lt;br&amp;gt;※kernel 以外 PAE が on&lt;br /&gt;
| 2005-02-15 ||&lt;br /&gt;
|-&lt;br /&gt;
| 4.1 || 11.EL || 2005-06-08 || 113&lt;br /&gt;
|-&lt;br /&gt;
| 4.2 || 22.EL || 2005-10-05 || 119&lt;br /&gt;
|-&lt;br /&gt;
| 4.3 || 34.EL || 2006-03-07 || 153&lt;br /&gt;
|-&lt;br /&gt;
| 4.4 || 42.EL || 2006-08-10 || 156&lt;br /&gt;
|-&lt;br /&gt;
| 4.5 || 55.EL || 2007-04-28 || 261&lt;br /&gt;
|-&lt;br /&gt;
| 4.6 || 67.EL || 2007-11-15 || 201&lt;br /&gt;
|-&lt;br /&gt;
| 4.7 || 78.EL || 2008-07-24 || 252&lt;br /&gt;
|-&lt;br /&gt;
| 4.8 || 89.EL || 2009-05-18 || 298&lt;br /&gt;
|-&lt;br /&gt;
| 4.9 || [https://rhn.redhat.com/errata/RHSA-2011-0263.html 100.EL] || 2011-02-16 || 639&lt;br /&gt;
|-&lt;br /&gt;
| last || [https://rhn.redhat.com/errata/RHBA-2011-1796.html 103.EL] || 2011-12-08 || 295&lt;br /&gt;
|-&lt;br /&gt;
| ELS latest || [https://rhn.redhat.com/errata/RHSA-2015-0009.html 106.EL] || 2015-01-05 ||&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | 2.4.21 || 4.EL&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | kernel&amp;lt;br&amp;gt;kernel-hugemem&amp;lt;br&amp;gt;kernel-smp&amp;lt;br&amp;gt;(kernel-BOOT)&lt;br /&gt;
| 2003-10-23 ||&lt;br /&gt;
|-&lt;br /&gt;
| 3.1 || 9.EL || 2004-01-16 || 85&lt;br /&gt;
|-&lt;br /&gt;
| 3.2 || 15.EL || 2004-05-11 || 116&lt;br /&gt;
|-&lt;br /&gt;
| 3.3 || 20.EL || 2004-09-01 || 113&lt;br /&gt;
|-&lt;br /&gt;
| 3.4 || 27.EL || 2004-12-20 || 110&lt;br /&gt;
|-&lt;br /&gt;
| 3.5 || 32.EL || 2005-05-18 || 149&lt;br /&gt;
|-&lt;br /&gt;
| 3.6 || 37.EL || 2005-09-28 || 133&lt;br /&gt;
|-&lt;br /&gt;
| 3.7 || 40.EL || 2006-03-15 || 168&lt;br /&gt;
|-&lt;br /&gt;
| 3.8 || 47.EL || 2006-07-20 || 127&lt;br /&gt;
|-&lt;br /&gt;
| 3.9 || 50.EL || 2007-06-11 || 326&lt;br /&gt;
|-&lt;br /&gt;
| last || 63.EL || 2009-11-03 || 876&lt;br /&gt;
|-&lt;br /&gt;
| ELS last || 66.EL || 2010-11-12 || 374&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== カーネルコンフィグ ==&lt;br /&gt;
=== RHEL 5 ===&lt;br /&gt;
普通の kernel と kernel-PAE では、SMP がデフォルトになったため、違いはわずか。&lt;br /&gt;
 # Linux kernel version: 2.6.18-128.1.6.el5  | # Linux kernel version: 2.6.18-128.1.6.el5PAE&lt;br /&gt;
 # Wed Apr  1 09:12:24 2009                  | # Wed Apr  1 09:55:25 2009&lt;br /&gt;
 CONFIG_HIGHMEM4G=y                          | # CONFIG_HIGHMEM4G is not set&lt;br /&gt;
 # CONFIG_HIGHMEM64G is not set              | CONFIG_HIGHMEM64G=y&lt;br /&gt;
                                             &amp;gt; CONFIG_X86_PAE=y&lt;br /&gt;
                                             &amp;gt; # CONFIG_NUMA is not set&lt;br /&gt;
 CONFIG_SOFTWARE_SUSPEND=y                   &amp;lt;&lt;br /&gt;
 CONFIG_PM_STD_PARTITION=&amp;quot;&amp;quot;                  &amp;lt;&lt;br /&gt;
                                             &amp;gt; CONFIG_I2O_EXT_ADAPTEC_DMA64=y&lt;br /&gt;
&lt;br /&gt;
=== RHEL 4 ===&lt;br /&gt;
UP カーネルと SMP カーネルと hugemem カーネルのコンフィグの相違を diff ってみた。&lt;br /&gt;
hugemem は SMP とほとんど変わらなかったので、右に付け足し。&lt;br /&gt;
&lt;br /&gt;
SMP では、SMP、PAE、HT などが on になっており、hugemem ではさらに X86_4G などが on になっている。&lt;br /&gt;
&lt;br /&gt;
 # Linux kernel version: 2.6.9-78.EL  | # Linux kernel version: 2.6.9-78.ELsmp  | # Linux kernel version: 2.6.9-78.ELhugemem&lt;br /&gt;
 # Wed Jul  9 15:24:56 2008           | # Wed Jul  9 15:37:00 2008              | # Wed Jul  9 15:55:03 2008&lt;br /&gt;
 CONFIG_BROKEN_ON_SMP=y               &amp;lt;&lt;br /&gt;
                                      &amp;gt; CONFIG_STOP_MACHINE=y&lt;br /&gt;
 CONFIG_X86_PC=y                      | CONFIG_MEM_MIRROR=y&lt;br /&gt;
                                      &amp;gt; # CONFIG_X86_PC is not set&lt;br /&gt;
 # CONFIG_X86_GENERICARCH is not set  | CONFIG_X86_GENERICARCH=y&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_CYCLONE_TIMER=y&lt;br /&gt;
 # CONFIG_X86_4G is not set                                                     | CONFIG_X86_4G=y&lt;br /&gt;
 # CONFIG_X86_SWITCH_PAGETABLES is not set                                      | CONFIG_X86_SWITCH_PAGETABLES=y&lt;br /&gt;
 # CONFIG_X86_4G_VM_LAYOUT is not set                                           | CONFIG_X86_4G_VM_LAYOUT=y&lt;br /&gt;
 # CONFIG_X86_UACCESS_INDIRECT is not set                                       | CONFIG_X86_UACCESS_INDIRECT=y&lt;br /&gt;
 # CONFIG_X86_HIGH_ENTRY is not set                                             | CONFIG_X86_HIGH_ENTRY=y&lt;br /&gt;
 # CONFIG_SMP is not set              | CONFIG_SMP=y&lt;br /&gt;
                                      &amp;gt; CONFIG_NR_CPUS=32&lt;br /&gt;
                                      &amp;gt; CONFIG_SCHED_SMT=y&lt;br /&gt;
                                      &amp;gt; CONFIG_SCHED_MC=y&lt;br /&gt;
 CONFIG_X86_UP_APIC=y                 &amp;lt;&lt;br /&gt;
 CONFIG_X86_UP_IOAPIC=y               &amp;lt;&lt;br /&gt;
 CONFIG_HIGHMEM4G=y                   | # CONFIG_HIGHMEM4G is not set&lt;br /&gt;
 # CONFIG_HIGHMEM64G is not set       | CONFIG_HIGHMEM64G=y&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_PAE=y&lt;br /&gt;
                                      &amp;gt; # CONFIG_NUMA is not set&lt;br /&gt;
                                      &amp;gt; # CONFIG_IRQBALANCE is not set&lt;br /&gt;
                                      &amp;gt; CONFIG_HAVE_DEC_LOCK=y                          &lt;br /&gt;
                                      &amp;gt; # CONFIG_HOTPLUG_CPU is not set                 &lt;br /&gt;
 # CONFIG_NI5010 is not set           &amp;lt;&lt;br /&gt;
 # CONFIG_PCMCIA_XIRTULIP is not set  &amp;lt;&lt;br /&gt;
 CONFIG_ISDN_DRV_LOOP=m               &amp;lt;&lt;br /&gt;
 CONFIG_HYSDN=m                       &amp;lt;&lt;br /&gt;
 CONFIG_HYSDN_CAPI=y                  &amp;lt;&lt;br /&gt;
 # CONFIG_COMPUTONE is not set        &amp;lt;&lt;br /&gt;
 # CONFIG_DIGIEPCA is not set         &amp;lt;&lt;br /&gt;
 # CONFIG_DIGI is not set             &amp;lt;&lt;br /&gt;
 # CONFIG_ESPSERIAL is not set        &amp;lt;&lt;br /&gt;
 # CONFIG_MOXA_INTELLIO is not set    &amp;lt;&lt;br /&gt;
 # CONFIG_MOXA_SMARTIO is not set     &amp;lt;&lt;br /&gt;
 # CONFIG_ISI is not set              &amp;lt;&lt;br /&gt;
 # CONFIG_RISCOM8 is not set          &amp;lt;&lt;br /&gt;
 # CONFIG_SPECIALIX is not set        &amp;lt;&lt;br /&gt;
 # CONFIG_SX is not set               &amp;lt;&lt;br /&gt;
 # CONFIG_RIO is not set              &amp;lt;&lt;br /&gt;
 # CONFIG_STALLION is not set         &amp;lt;&lt;br /&gt;
 # CONFIG_ISTALLION is not set        &amp;lt;&lt;br /&gt;
 # CONFIG_FTAPE is not set            &amp;lt;&lt;br /&gt;
 # CONFIG_I2C_ELEKTOR is not set      &amp;lt;&lt;br /&gt;
 # CONFIG_VIDEO_MEYE is not set       &amp;lt;&lt;br /&gt;
 CONFIG_USB_SERIAL_WHITEHEAT=m        &amp;lt;&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_SMP=y&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_HT=y&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_TRAMPOLINE=y&lt;br /&gt;
&lt;br /&gt;
要するに…&lt;br /&gt;
; kernel&lt;br /&gt;
: 搭載メモリ 4 GB まで対応、複数のコア (プロセッサ) やハイパースレッディングには非対応。&lt;br /&gt;
; kernel-smp&lt;br /&gt;
: 搭載メモリ 4 GB 以上に対応、複数のコアやハイパースレッディングにも対応。&lt;br /&gt;
; kernel-hugemem&lt;br /&gt;
: 搭載メモリ 4 GB 以上に対応、複数のコアやハイパースレッディングにも対応。ユーザ空間 4 GB (0xff000000 = 4080 MB)、カーネル空間 4 GB になる。ページテーブルの切り替え(?)によるオーバーヘッドが発生する。&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
=== 追加パッケージ ===&lt;br /&gt;
&lt;br /&gt;
やっぱり RPM でインストールするのが一番安心するね。&lt;br /&gt;
&lt;br /&gt;
* [https://fedoraproject.org/wiki/EPEL EPEL - FedoraProject]&lt;br /&gt;
* [http://rpmrepo.org/RPMforge RPMforge - RPMRepo Wiki]&lt;br /&gt;
&lt;br /&gt;
=== debuginfo ===&lt;br /&gt;
&lt;br /&gt;
日本人は理研から落としましょう。速いです。&lt;br /&gt;
&lt;br /&gt;
* [http://ftp.riken.jp/Linux/redhat/ftp.redhat.com/linux/enterprise/ ftp.riken.jp] (RHEL)&lt;br /&gt;
* [http://ftp.riken.jp/Linux/redhat/ftp.redhat.com/linux/updates/enterprise/ ftp.riken.jp] (RHEL updates)&lt;br /&gt;
* [http://debuginfo.centos.org/ debuginfo.centos.org] (CentOS)&lt;br /&gt;
&lt;br /&gt;
=== RHEL 5 ===&lt;br /&gt;
==== vim 7.0 のカラーリング ====&lt;br /&gt;
RHEL5 の vim 7.0 で /var/log/messages を見たときのカラーリングがすごい。ケバい。&lt;br /&gt;
&lt;br /&gt;
[[画像:vim7.png]]&lt;br /&gt;
&lt;br /&gt;
でもエラーを反転表示したりして、意外と使えるかもしれない。&lt;br /&gt;
&lt;br /&gt;
=== RHEL 4 ===&lt;br /&gt;
&lt;br /&gt;
=== RHEL 3 ===&lt;br /&gt;
&lt;br /&gt;
==== スケジューラ ====&lt;br /&gt;
今日知った、驚愕の事実。&lt;br /&gt;
&lt;br /&gt;
'''RHEL 3 のカーネルは 2.4 系だが、スケジューラは O(1) スケジューラである!!'''&lt;br /&gt;
&lt;br /&gt;
ソース読んで初めて知った…。&lt;br /&gt;
&lt;br /&gt;
2009/07/13 追記：RHEL 2.1 も O(1) スケジューラが載ってた。&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=RHEL&amp;diff=1087</id>
		<title>RHEL</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=RHEL&amp;diff=1087"/>
				<updated>2017-04-05T21:27:25Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: /* カーネルバージョン */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;言わずと知れた(?) Red Hat Enterprise Linux のページ。赤帽。&lt;br /&gt;
&lt;br /&gt;
もちろん、RHEL を買えるわけがないので、CentOS で代用しています。&lt;br /&gt;
CentOS って何？って方は、[http://ja.wikipedia.org/wiki/CentOS Wikipedia] をご覧下さい。&lt;br /&gt;
&lt;br /&gt;
== カーネルバージョン ==&lt;br /&gt;
&lt;br /&gt;
こんなページがあった…。&lt;br /&gt;
* [https://access.redhat.com/ja/articles/16476 Red Hat Enterprise Linux のリリース日と収録カーネルの一覧]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! RHEL バージョン !! カーネルバージョン !! リリース !! 最終 !! 提供カーネル !! リリース日 !! 経過日数&lt;br /&gt;
|-&lt;br /&gt;
| 7.0 || rowspan=&amp;quot;4&amp;quot; | 3.10.0 || 123.el7&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2015-0102.html 123.20.1.el7] || rowspan=&amp;quot;4&amp;quot; | kernel || 2014-06-10 ||&lt;br /&gt;
|-&lt;br /&gt;
| 7.1 || [https://rhn.redhat.com/errata/RHSA-2015-0290.html 229.el7]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2015-1978.html 229.20.1.el7] || 2015-03-05 || 268&lt;br /&gt;
|-&lt;br /&gt;
| 7.2 || [https://rhn.redhat.com/errata/RHSA-2015-2152.html 327.el7]&lt;br /&gt;
| [http://rhn.redhat.com/errata/RHSA-2016-2098.html 327.36.3.el7] || 2015-11-19 || 259&lt;br /&gt;
|-&lt;br /&gt;
| 7.3 || [http://rhn.redhat.com/errata/RHSA-2016-2574.html 514.el7]&lt;br /&gt;
| 514.xx.x.el7 || 2016-11-03 || 350&lt;br /&gt;
|-&lt;br /&gt;
| 6 Beta 1 || rowspan=&amp;quot;10&amp;quot; | 2.6.32 || 19.el6 || || rowspan=&amp;quot;10&amp;quot; | kernel || 2010-04-22 ||&lt;br /&gt;
|-&lt;br /&gt;
| 6 Beta 2 || 37.el6 || || 2010-06-30 ||&lt;br /&gt;
|-&lt;br /&gt;
| 6.0 || 71.el6&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2011-0498.html 71.29.1.el6] || 2010-11-10 ||&lt;br /&gt;
|-&lt;br /&gt;
| 6.1 || [https://rhn.redhat.com/errata/RHSA-2011-0542.html 131.0.15.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2011-1465.html 131.21.1.el6] || 2011-05-19 || 190&lt;br /&gt;
|-&lt;br /&gt;
| 6.2 || [https://rhn.redhat.com/errata/RHSA-2011-1530.html 220.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2012-0743.html 220.23.1.el6] || 2011-12-06 || 201&lt;br /&gt;
|-&lt;br /&gt;
| 6.3 || [https://rhn.redhat.com/errata/RHSA-2012-0862.html 279.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2013-0223.html 279.22.1.el6] || 2012-06-20 || 197&lt;br /&gt;
|-&lt;br /&gt;
| 6.4 || [https://rhn.redhat.com/errata/RHSA-2013-0496.html 358.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2013-1436.html 358.23.2.el6] || 2013-02-21 || 246&lt;br /&gt;
|-&lt;br /&gt;
| 6.5 || [https://rhn.redhat.com/errata/RHSA-2013-1645.html 431.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2014-1167.html 431.29.2.el6] || 2013-11-21 || 273&lt;br /&gt;
|-&lt;br /&gt;
| 6.6 || [https://rhn.redhat.com/errata/RHSA-2014-1392.html 504.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2015-1221.html 504.30.3.el6] || 2014-10-14 || 327&lt;br /&gt;
|-&lt;br /&gt;
| 6.7 || [https://rhn.redhat.com/errata/RHSA-2015-1272.html 573.el6]&lt;br /&gt;
| 573.xx.x.el6 || 2015-07-22 || 281&lt;br /&gt;
|-&lt;br /&gt;
| 5.0&lt;br /&gt;
| rowspan=&amp;quot;13&amp;quot; | 2.6.18 || 8.el5 || 8.1.15.el5&lt;br /&gt;
| rowspan=&amp;quot;13&amp;quot; | kernel&amp;lt;br&amp;gt;kernel-PAE&amp;lt;br&amp;gt;kernel-xen || 2007-03-14 ||&lt;br /&gt;
|-&lt;br /&gt;
| 5.1 || [https://rhn.redhat.com/errata/RHBA-2007-0959.html 53.el5] || 53.1.21.el5 || 2007-11-07 || 238&lt;br /&gt;
|-&lt;br /&gt;
| 5.2 || [https://rhn.redhat.com/errata/RHBA-2008-0314.html 92.el5] || 92.1.22.el5 || 2008-05-21 || 196&lt;br /&gt;
|-&lt;br /&gt;
| 5.3 || [https://rhn.redhat.com/errata/RHSA-2009-0225.html 128.el5] || 128.7.1.el5 || 2009-01-20 || 244&lt;br /&gt;
|-&lt;br /&gt;
| 5.4 || [https://rhn.redhat.com/errata/RHSA-2009-1243.html 164.el5] || 164.15.1.el5 || 2009-09-01 || 224&lt;br /&gt;
|-&lt;br /&gt;
| 5.5 || [https://rhn.redhat.com/errata/RHSA-2010-0178.html 194.el5] || 194.32.1.el5 || 2010-03-30 || 210&lt;br /&gt;
|-&lt;br /&gt;
| 5.6 || [https://rhn.redhat.com/errata/RHSA-2011-0017.html 238.el5] || 238.19.1.el5 || 2011-01-13 || 289&lt;br /&gt;
|-&lt;br /&gt;
| 5.7 || [https://rhn.redhat.com/errata/RHSA-2011-1065.html 274.el5] || 274.18.1.el5 || 2011-07-21 || 189&lt;br /&gt;
|-&lt;br /&gt;
| 5.8 || [https://rhn.redhat.com/errata/RHSA-2012-0150.html 308.el5] || 308.24.1.el5 || 2012-02-21 || 215&lt;br /&gt;
|-&lt;br /&gt;
| 5.9 || [https://rhn.redhat.com/errata/RHBA-2013-0006.html 348.el5] || 348.18.1.el5 || 2013-01-08 || 322&lt;br /&gt;
|-&lt;br /&gt;
| 5.10 || [https://rhn.redhat.com/errata/RHSA-2013-1348.html 371.el5] || 371.12.1.el5 || 2013-09-30 || 265&lt;br /&gt;
|-&lt;br /&gt;
| 5.11 || [https://rhn.redhat.com/errata/RHBA-2014-1196.html 398.el5] ||              || 2014-09-16 || 351&lt;br /&gt;
|-&lt;br /&gt;
| latest || [https://rhn.redhat.com/errata/RHBA-2015-2025.html 407.el5] || || 2015-11-11 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! RHEL バージョン !! カーネルバージョン !! リリース !! 提供カーネル !! リリース日 !! 経過日数&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | 2.6.9 || 5.EL&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | kernel&amp;lt;br&amp;gt;kernel-hugemem&amp;lt;br&amp;gt;kernel-smp&amp;lt;br&amp;gt;kernel-largesmp&amp;lt;br&amp;gt;※kernel 以外 PAE が on&lt;br /&gt;
| 2005-02-15 ||&lt;br /&gt;
|-&lt;br /&gt;
| 4.1 || 11.EL || 2005-06-08 || 113&lt;br /&gt;
|-&lt;br /&gt;
| 4.2 || 22.EL || 2005-10-05 || 119&lt;br /&gt;
|-&lt;br /&gt;
| 4.3 || 34.EL || 2006-03-07 || 153&lt;br /&gt;
|-&lt;br /&gt;
| 4.4 || 42.EL || 2006-08-10 || 156&lt;br /&gt;
|-&lt;br /&gt;
| 4.5 || 55.EL || 2007-04-28 || 261&lt;br /&gt;
|-&lt;br /&gt;
| 4.6 || 67.EL || 2007-11-15 || 201&lt;br /&gt;
|-&lt;br /&gt;
| 4.7 || 78.EL || 2008-07-24 || 252&lt;br /&gt;
|-&lt;br /&gt;
| 4.8 || 89.EL || 2009-05-18 || 298&lt;br /&gt;
|-&lt;br /&gt;
| 4.9 || [https://rhn.redhat.com/errata/RHSA-2011-0263.html 100.EL] || 2011-02-16 || 639&lt;br /&gt;
|-&lt;br /&gt;
| last || [https://rhn.redhat.com/errata/RHBA-2011-1796.html 103.EL] || 2011-12-08 || 295&lt;br /&gt;
|-&lt;br /&gt;
| ELS latest || [https://rhn.redhat.com/errata/RHSA-2015-0009.html 106.EL] || 2015-01-05 ||&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | 2.4.21 || 4.EL&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | kernel&amp;lt;br&amp;gt;kernel-hugemem&amp;lt;br&amp;gt;kernel-smp&amp;lt;br&amp;gt;(kernel-BOOT)&lt;br /&gt;
| 2003-10-23 ||&lt;br /&gt;
|-&lt;br /&gt;
| 3.1 || 9.EL || 2004-01-16 || 85&lt;br /&gt;
|-&lt;br /&gt;
| 3.2 || 15.EL || 2004-05-11 || 116&lt;br /&gt;
|-&lt;br /&gt;
| 3.3 || 20.EL || 2004-09-01 || 113&lt;br /&gt;
|-&lt;br /&gt;
| 3.4 || 27.EL || 2004-12-20 || 110&lt;br /&gt;
|-&lt;br /&gt;
| 3.5 || 32.EL || 2005-05-18 || 149&lt;br /&gt;
|-&lt;br /&gt;
| 3.6 || 37.EL || 2005-09-28 || 133&lt;br /&gt;
|-&lt;br /&gt;
| 3.7 || 40.EL || 2006-03-15 || 168&lt;br /&gt;
|-&lt;br /&gt;
| 3.8 || 47.EL || 2006-07-20 || 127&lt;br /&gt;
|-&lt;br /&gt;
| 3.9 || 50.EL || 2007-06-11 || 326&lt;br /&gt;
|-&lt;br /&gt;
| last || 63.EL || 2009-11-03 || 876&lt;br /&gt;
|-&lt;br /&gt;
| ELS last || 66.EL || 2010-11-12 || 374&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== カーネルコンフィグ ==&lt;br /&gt;
=== RHEL 5 ===&lt;br /&gt;
普通の kernel と kernel-PAE では、SMP がデフォルトになったため、違いはわずか。&lt;br /&gt;
 # Linux kernel version: 2.6.18-128.1.6.el5  | # Linux kernel version: 2.6.18-128.1.6.el5PAE&lt;br /&gt;
 # Wed Apr  1 09:12:24 2009                  | # Wed Apr  1 09:55:25 2009&lt;br /&gt;
 CONFIG_HIGHMEM4G=y                          | # CONFIG_HIGHMEM4G is not set&lt;br /&gt;
 # CONFIG_HIGHMEM64G is not set              | CONFIG_HIGHMEM64G=y&lt;br /&gt;
                                             &amp;gt; CONFIG_X86_PAE=y&lt;br /&gt;
                                             &amp;gt; # CONFIG_NUMA is not set&lt;br /&gt;
 CONFIG_SOFTWARE_SUSPEND=y                   &amp;lt;&lt;br /&gt;
 CONFIG_PM_STD_PARTITION=&amp;quot;&amp;quot;                  &amp;lt;&lt;br /&gt;
                                             &amp;gt; CONFIG_I2O_EXT_ADAPTEC_DMA64=y&lt;br /&gt;
&lt;br /&gt;
=== RHEL 4 ===&lt;br /&gt;
UP カーネルと SMP カーネルと hugemem カーネルのコンフィグの相違を diff ってみた。&lt;br /&gt;
hugemem は SMP とほとんど変わらなかったので、右に付け足し。&lt;br /&gt;
&lt;br /&gt;
SMP では、SMP、PAE、HT などが on になっており、hugemem ではさらに X86_4G などが on になっている。&lt;br /&gt;
&lt;br /&gt;
 # Linux kernel version: 2.6.9-78.EL  | # Linux kernel version: 2.6.9-78.ELsmp  | # Linux kernel version: 2.6.9-78.ELhugemem&lt;br /&gt;
 # Wed Jul  9 15:24:56 2008           | # Wed Jul  9 15:37:00 2008              | # Wed Jul  9 15:55:03 2008&lt;br /&gt;
 CONFIG_BROKEN_ON_SMP=y               &amp;lt;&lt;br /&gt;
                                      &amp;gt; CONFIG_STOP_MACHINE=y&lt;br /&gt;
 CONFIG_X86_PC=y                      | CONFIG_MEM_MIRROR=y&lt;br /&gt;
                                      &amp;gt; # CONFIG_X86_PC is not set&lt;br /&gt;
 # CONFIG_X86_GENERICARCH is not set  | CONFIG_X86_GENERICARCH=y&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_CYCLONE_TIMER=y&lt;br /&gt;
 # CONFIG_X86_4G is not set                                                     | CONFIG_X86_4G=y&lt;br /&gt;
 # CONFIG_X86_SWITCH_PAGETABLES is not set                                      | CONFIG_X86_SWITCH_PAGETABLES=y&lt;br /&gt;
 # CONFIG_X86_4G_VM_LAYOUT is not set                                           | CONFIG_X86_4G_VM_LAYOUT=y&lt;br /&gt;
 # CONFIG_X86_UACCESS_INDIRECT is not set                                       | CONFIG_X86_UACCESS_INDIRECT=y&lt;br /&gt;
 # CONFIG_X86_HIGH_ENTRY is not set                                             | CONFIG_X86_HIGH_ENTRY=y&lt;br /&gt;
 # CONFIG_SMP is not set              | CONFIG_SMP=y&lt;br /&gt;
                                      &amp;gt; CONFIG_NR_CPUS=32&lt;br /&gt;
                                      &amp;gt; CONFIG_SCHED_SMT=y&lt;br /&gt;
                                      &amp;gt; CONFIG_SCHED_MC=y&lt;br /&gt;
 CONFIG_X86_UP_APIC=y                 &amp;lt;&lt;br /&gt;
 CONFIG_X86_UP_IOAPIC=y               &amp;lt;&lt;br /&gt;
 CONFIG_HIGHMEM4G=y                   | # CONFIG_HIGHMEM4G is not set&lt;br /&gt;
 # CONFIG_HIGHMEM64G is not set       | CONFIG_HIGHMEM64G=y&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_PAE=y&lt;br /&gt;
                                      &amp;gt; # CONFIG_NUMA is not set&lt;br /&gt;
                                      &amp;gt; # CONFIG_IRQBALANCE is not set&lt;br /&gt;
                                      &amp;gt; CONFIG_HAVE_DEC_LOCK=y                          &lt;br /&gt;
                                      &amp;gt; # CONFIG_HOTPLUG_CPU is not set                 &lt;br /&gt;
 # CONFIG_NI5010 is not set           &amp;lt;&lt;br /&gt;
 # CONFIG_PCMCIA_XIRTULIP is not set  &amp;lt;&lt;br /&gt;
 CONFIG_ISDN_DRV_LOOP=m               &amp;lt;&lt;br /&gt;
 CONFIG_HYSDN=m                       &amp;lt;&lt;br /&gt;
 CONFIG_HYSDN_CAPI=y                  &amp;lt;&lt;br /&gt;
 # CONFIG_COMPUTONE is not set        &amp;lt;&lt;br /&gt;
 # CONFIG_DIGIEPCA is not set         &amp;lt;&lt;br /&gt;
 # CONFIG_DIGI is not set             &amp;lt;&lt;br /&gt;
 # CONFIG_ESPSERIAL is not set        &amp;lt;&lt;br /&gt;
 # CONFIG_MOXA_INTELLIO is not set    &amp;lt;&lt;br /&gt;
 # CONFIG_MOXA_SMARTIO is not set     &amp;lt;&lt;br /&gt;
 # CONFIG_ISI is not set              &amp;lt;&lt;br /&gt;
 # CONFIG_RISCOM8 is not set          &amp;lt;&lt;br /&gt;
 # CONFIG_SPECIALIX is not set        &amp;lt;&lt;br /&gt;
 # CONFIG_SX is not set               &amp;lt;&lt;br /&gt;
 # CONFIG_RIO is not set              &amp;lt;&lt;br /&gt;
 # CONFIG_STALLION is not set         &amp;lt;&lt;br /&gt;
 # CONFIG_ISTALLION is not set        &amp;lt;&lt;br /&gt;
 # CONFIG_FTAPE is not set            &amp;lt;&lt;br /&gt;
 # CONFIG_I2C_ELEKTOR is not set      &amp;lt;&lt;br /&gt;
 # CONFIG_VIDEO_MEYE is not set       &amp;lt;&lt;br /&gt;
 CONFIG_USB_SERIAL_WHITEHEAT=m        &amp;lt;&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_SMP=y&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_HT=y&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_TRAMPOLINE=y&lt;br /&gt;
&lt;br /&gt;
要するに…&lt;br /&gt;
; kernel&lt;br /&gt;
: 搭載メモリ 4 GB まで対応、複数のコア (プロセッサ) やハイパースレッディングには非対応。&lt;br /&gt;
; kernel-smp&lt;br /&gt;
: 搭載メモリ 4 GB 以上に対応、複数のコアやハイパースレッディングにも対応。&lt;br /&gt;
; kernel-hugemem&lt;br /&gt;
: 搭載メモリ 4 GB 以上に対応、複数のコアやハイパースレッディングにも対応。ユーザ空間 4 GB (0xff000000 = 4080 MB)、カーネル空間 4 GB になる。ページテーブルの切り替え(?)によるオーバーヘッドが発生する。&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
=== 追加パッケージ ===&lt;br /&gt;
&lt;br /&gt;
やっぱり RPM でインストールするのが一番安心するね。&lt;br /&gt;
&lt;br /&gt;
* [https://fedoraproject.org/wiki/EPEL EPEL - FedoraProject]&lt;br /&gt;
* [http://rpmrepo.org/RPMforge RPMforge - RPMRepo Wiki]&lt;br /&gt;
&lt;br /&gt;
=== debuginfo ===&lt;br /&gt;
&lt;br /&gt;
日本人は理研から落としましょう。速いです。&lt;br /&gt;
&lt;br /&gt;
* [http://ftp.riken.jp/Linux/redhat/ftp.redhat.com/linux/enterprise/ ftp.riken.jp] (RHEL)&lt;br /&gt;
* [http://ftp.riken.jp/Linux/redhat/ftp.redhat.com/linux/updates/enterprise/ ftp.riken.jp] (RHEL updates)&lt;br /&gt;
* [http://debuginfo.centos.org/ debuginfo.centos.org] (CentOS)&lt;br /&gt;
&lt;br /&gt;
=== RHEL 5 ===&lt;br /&gt;
==== vim 7.0 のカラーリング ====&lt;br /&gt;
RHEL5 の vim 7.0 で /var/log/messages を見たときのカラーリングがすごい。ケバい。&lt;br /&gt;
&lt;br /&gt;
[[画像:vim7.png]]&lt;br /&gt;
&lt;br /&gt;
でもエラーを反転表示したりして、意外と使えるかもしれない。&lt;br /&gt;
&lt;br /&gt;
=== RHEL 4 ===&lt;br /&gt;
&lt;br /&gt;
=== RHEL 3 ===&lt;br /&gt;
&lt;br /&gt;
==== スケジューラ ====&lt;br /&gt;
今日知った、驚愕の事実。&lt;br /&gt;
&lt;br /&gt;
'''RHEL 3 のカーネルは 2.4 系だが、スケジューラは O(1) スケジューラである!!'''&lt;br /&gt;
&lt;br /&gt;
ソース読んで初めて知った…。&lt;br /&gt;
&lt;br /&gt;
2009/07/13 追記：RHEL 2.1 も O(1) スケジューラが載ってた。&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=%E3%83%9B%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88&amp;diff=1086</id>
		<title>ホーネット</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=%E3%83%9B%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88&amp;diff=1086"/>
				<updated>2016-09-01T11:21:47Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: /* メンテナンス記録 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ひっそりと記録開始。&lt;br /&gt;
&lt;br /&gt;
== 来歴 ==&lt;br /&gt;
&lt;br /&gt;
* 2012 年&lt;br /&gt;
** 07-xx　唐突にバイクに乗ってみたくなり、自動車学校に通い始める。普通二輪、土日のみ。&lt;br /&gt;
** 08-31　免許も未取得ながら、HONDA ホーネット購入。&lt;br /&gt;
** 09-29　技能試験に合格。&lt;br /&gt;
** 10-04　免許を更新。&lt;br /&gt;
** 10-27　ようやく納車。&lt;br /&gt;
** 11-13　200 km 到達、かつ初エンスト。1 速に入ったまま誤ってクラッチを放す。さらに満タン納車だったため、初給油。&lt;br /&gt;
** 12-01　初の (なんちゃって) ツーリング。途中でみぞれが降り出し引き返し、48 km くらい。雨の中走ったのも、教習所含めて初。&lt;br /&gt;
** 12-10　奥多摩湖までツーリング。さすがに超寒い。片道 2 時間、総走行距離は 120 km くらいだった。&lt;br /&gt;
* 2013 年&lt;br /&gt;
** 02-08　駐車場で倒れてしまっていて、フロント左ウィンカーを破損。接着剤とビニールテープで修繕…。&lt;br /&gt;
** 03-30　友人と相模湖までツーリングに出かけたものの、途中で雨が降り出したためあえなく断念。&lt;br /&gt;
** 05-01　秩父へツーリング。初高速道路、初 200 km 超走行で疲労困憊したが楽しすぎる。&lt;br /&gt;
** 05-25　相模湖・宮ヶ瀬湖へツーリング。フラッと走りに行くには丁度良い距離で、アップダウンもあって良かった。&lt;br /&gt;
** 06-29　ナカハラちゃんの超絶ドタキャンにより１人ツーリング。時間の都合で都民の森で引き返した。&lt;br /&gt;
** 09-21　ようやく念願のナカハラちゃんとのツーリングで相模、宮ヶ瀬湖へ。エツシは体調不良で断念。&lt;br /&gt;
** 10-04　免許取得から 1 年が経過して、タンデムが可能に。&lt;br /&gt;
** 10-13　初のタンデムツーリングで相模湖・宮ヶ瀬湖へ。100 km ほどだったが異様に疲れた。&lt;br /&gt;
** 11-22　湘南・三浦半島ツーリング。&lt;br /&gt;
* 2014 年&lt;br /&gt;
** 03-23　相模湖・上野原早朝ツーリング。&lt;br /&gt;
** 05-01　初の一泊ツーリング。まったり富士山一周 (約 330 km)。&lt;br /&gt;
** 05-02　オイル・エレメント交換 (&amp;amp;yen;5,400)、負圧ホース交換 (&amp;amp;yen;3,350)。&lt;br /&gt;
** 05-17　相模湖・奥多摩湖ツーリング。&lt;br /&gt;
** 09-14　秩父ツーリング with ナカハラちゃん。エツシは仕事でドタキャン、前科２犯。&lt;br /&gt;
** 09-14　およそ 2 年でようやく 3,000 km 到達…。まだ下りカーブが怖い。&lt;br /&gt;
** 10-11　早朝ツーリング to 上野原〜小菅〜一の瀬高原〜勝沼 (約 230 km) *&lt;br /&gt;
** 11-19　住所変更を行って川崎ナンバーに。塩浜まで行くのは大変。&lt;br /&gt;
** 11-22　西房総半島ツーリング。スピードメータが壊れて距離がわからない。&lt;br /&gt;
** 12-27　スピードメータ修理。入力のギアが削れてしまっていたとのこと (&amp;amp;yen;410 + 工賃 = &amp;amp;yen;2,570)。&lt;br /&gt;
* 2015 年&lt;br /&gt;
** 04-31　一泊伊豆ツーリング。約 400 km&lt;br /&gt;
* 2016 年&lt;br /&gt;
** 05-02　陣馬・小菅・山梨市ツーリング。&lt;br /&gt;
&lt;br /&gt;
== マシン情報 ==&lt;br /&gt;
&lt;br /&gt;
カスタムには全然興味がないので、どノーマルである。&lt;br /&gt;
&lt;br /&gt;
[[画像:20120831_hornet.jpg|300px]]&lt;br /&gt;
[[画像:20121102-hornet.jpg|300px]]&lt;br /&gt;
[[画像:20121110-hornet.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| 型式 || BA-MC31&lt;br /&gt;
|-&lt;br /&gt;
| 年式 || 2003&lt;br /&gt;
|-&lt;br /&gt;
| 走行距離 || 11,600 km&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
購入したバイク屋が Web に出していた画像をよく見ると、メータが 29,590 km となっているものがあったので、&lt;br /&gt;
おそらく 11,600 km というのは巻き戻されたものだろう。&lt;br /&gt;
&lt;br /&gt;
=== パーツ情報 ===&lt;br /&gt;
&lt;br /&gt;
交換したパーツの情報をメモっておく。&lt;br /&gt;
&lt;br /&gt;
; フロント ストップスイッチ&lt;br /&gt;
: [http://www.marunakayoko.net/2rin-parts-product.html?eid=00003&amp;amp;lid=5 NTB SSH-02] (35340-MM5-600)&lt;br /&gt;
; ストップ・テールランプ バルブ&lt;br /&gt;
: 12V18/5W&lt;br /&gt;
; スピードメータ ジョイント交換&lt;br /&gt;
: 410 円 + 工賃 2,160 円 = 2,570 円&lt;br /&gt;
; プラグ&lt;br /&gt;
: NGK CR8EH-9：810 円 x 4 = 3,240 円&lt;br /&gt;
; ラジエータキャップ&lt;br /&gt;
: [http://www.plotonline.com/motor/plot/radiatorcap/index.html プロト クールテック PPC-S]：1,800 円&lt;br /&gt;
&lt;br /&gt;
交換してないけどメモ。価格は２りんかんでのもの。&lt;br /&gt;
&lt;br /&gt;
; 左レバー&lt;br /&gt;
: 53718-KV0-000 : 1,228 円&lt;br /&gt;
; 右レバー&lt;br /&gt;
: 53170-MBW-006 : 2,593 円&lt;br /&gt;
; プラグ&lt;br /&gt;
: NGK CR9EH-9 : 787 円&lt;br /&gt;
; フロントタイヤ (130/70ZR16)&lt;br /&gt;
: DUNLOP GPR-200 : 18,600 円&lt;br /&gt;
; リアタイヤ (180/55ZR17)&lt;br /&gt;
: DUNLOP GPR-200 : 25,700 円&lt;br /&gt;
&lt;br /&gt;
== 走行・燃費記録 ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 日付       !! ODD       !! TRIP       !!  給油量  !! 燃費      !! 単価     !! 燃料代      !! 備考&lt;br /&gt;
|-&lt;br /&gt;
| 2012-10-27 || 11,6xx km || -          ||  -       || -         || -        || -           ||&lt;br /&gt;
|-&lt;br /&gt;
| 2012-11-13 || 11,800 km ||   202.6 km ||   9.17 L || 22.1 km/L || &amp;amp;yen;139 ||  &amp;amp;yen;1,275 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2012-12-01 || 11,915 km ||   115.8 km ||   5.98 L || 19.4 km/L || &amp;amp;yen;142 ||    &amp;amp;yen;849 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2012-12-10 || 12,077 km ||   161.7 km ||   8.28 L || 19.5 km/L || &amp;amp;yen;140 ||  &amp;amp;yen;1,159 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2013-02-02 || 12,303 km ||   226.5 km ||   9.83 L || 23.0 km/L || &amp;amp;yen;143 ||  &amp;amp;yen;1,406 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2013-03-30 || 12,443 km ||   139.0 km ||   8.27 L || 16.8 km/L || &amp;amp;yen;148 ||  &amp;amp;yen;1,224 || 倒れてこぼれた可能性が高い&lt;br /&gt;
|-&lt;br /&gt;
| 2013-05-01 || 12,627 km ||   183.9 km ||   8.83 L || 20.8 km/L || &amp;amp;yen;147 ||  &amp;amp;yen;1,298 || 近場をウロウロのみ&lt;br /&gt;
|-&lt;br /&gt;
| 2013-05-02 || 12,871 km ||   244.7 km ||   9.47 L || 25.8 km/L || &amp;amp;yen;147 ||  &amp;amp;yen;1,392 || 高速・ツーリング含む&lt;br /&gt;
|-&lt;br /&gt;
| 2013-06-29 || 13,030 km ||   158.0 km ||   7.55 L || 20.9 km/L || &amp;amp;yen;147 ||  &amp;amp;yen;1,110 || 近場をウロウロのみ&lt;br /&gt;
|-&lt;br /&gt;
| 2013-09-22 || 13,213 km ||   183.3 km ||   8.29 L || 22.1 km/L || &amp;amp;yen;152 ||  &amp;amp;yen;1,260 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2013-10-09 || 13,343 km ||   130.4 km ||   7.22 L || 18.0 km/L || &amp;amp;yen;147 ||  &amp;amp;yen;1,061 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2013-11-22 || 13,467 km ||   144.0 km ||   7.28 L || 19.8 km/L || &amp;amp;yen;146 ||  &amp;amp;yen;1,063 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-01-28 || -         ||   -        ||  10.72 L || -         || &amp;amp;yen;157 ||  &amp;amp;yen;1,683 || 距離未記録&lt;br /&gt;
|-&lt;br /&gt;
| 2014-05-01 || 13,856 km ||   369.0 km ||   6.69 L || 21.2 km/L || &amp;amp;yen;157 ||  &amp;amp;yen;1,050 || 燃費は 11/22 からの値&lt;br /&gt;
|-&lt;br /&gt;
| 2014-05-02 || 14,081 km ||   224.4 km ||   8.24 L || 27.2 km/L || &amp;amp;yen;159 ||  &amp;amp;yen;1,310 || 高速あり&lt;br /&gt;
|-&lt;br /&gt;
| 2014-05-17 || 14,258 km ||   176.8 km ||   7.74 L || 22.8 km/L || &amp;amp;yen;158 ||  &amp;amp;yen;1,223 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-08-08 || 14,457 km ||   199.6 km ||   8.98 L || 22.2 km/L || &amp;amp;yen;163 ||  &amp;amp;yen;1,464 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-09-14 || 14,613 km ||   155.0 km ||   7.06 L || 22.0 km/L || &amp;amp;yen;160 ||  &amp;amp;yen;1,130 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-10-11 || 14,808 km ||   195.4 km ||   8.07 L || 24.2 km/L || &amp;amp;yen;154 ||  &amp;amp;yen;1,243 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-11-19 || 15,071 km ||   262.7 km ||  11.01 L || 23.9 km/L || &amp;amp;yen;152 ||  &amp;amp;yen;1,674 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-12-12 || 15,287 km ||  約 300 km ||  12.10 L || 24.8 km/L || &amp;amp;yen;139 ||  &amp;amp;yen;1,606 || メーター故障により推測距離&lt;br /&gt;
|-&lt;br /&gt;
| 2015-04-29 || 15,394 km ||   107.0 km ||    7.68 L || 13.9 km/L || &amp;amp;yen;129 ||  &amp;amp;yen;991 || 多めに入れた＆タンデム多し&lt;br /&gt;
|-&lt;br /&gt;
| 2015-05-01 || 15,668 km ||   274.0 km ||    9.94 L || 27.6 km/L || &amp;amp;yen;148 ||  &amp;amp;yen;1,471 || ツーリング中。伊豆高い&lt;br /&gt;
|-&lt;br /&gt;
| 2015-06-28 || 15,909 km ||   240.5 km ||  11.56 L || 20.8km/L || &amp;amp;yen;140 ||  &amp;amp;yen;1,618 || &lt;br /&gt;
|-&lt;br /&gt;
| 2015-03-06|| 16,057km ||   148.3 km ||    9.73 L || 15.2 km/L || &amp;amp;yen;99    ||  &amp;amp;yen;963 || バイク買ってからの最安値&lt;br /&gt;
|-&lt;br /&gt;
| 2016-05-01 || 16,286 km ||   228.5 km ||  10.03 L || 22.8 km/L || &amp;amp;yen;113 ||  &amp;amp;yen;1,133 || &lt;br /&gt;
|-&lt;br /&gt;
! 合計               !! -                !!  4771.1 km || 219.72 L || 21.7 km/L || -            || &amp;amp;yen;31,657 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== メンテナンス記録 ==&lt;br /&gt;
&lt;br /&gt;
最初からつけておけばよかった。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 日付       !! ODD       !!  金額  !!内容&lt;br /&gt;
|-&lt;br /&gt;
| 2016-08-20 ||  16436 km || &amp;amp;yen;38,069 || メンテ付き総点検。交換：プラグ x 4、ブレーキフルード (F, R)、クーラント、ラジエータキャップ、ホース&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 関連リンク ==&lt;br /&gt;
* [http://www.honda.co.jp/pressroom/products/motor/hornet/hornet_1996-01-25/ Honda | バイク製品アーカイブ 「ホーネット」]&lt;br /&gt;
* [http://ja.wikipedia.org/wiki/%E3%83%9B%E3%83%B3%E3%83%80%E3%83%BB%E3%83%9B%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88 ホンダ・ホーネット - Wikipedia]&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
=== 回転数と速度の関係 ===&lt;br /&gt;
&lt;br /&gt;
理論値を計算してみた。&lt;br /&gt;
&lt;br /&gt;
 rpm  1000   2000   3000   4000   5000   6000   7000   8000   9000  10000  11000  12000  13000  14000  15000  16000&lt;br /&gt;
 1st  4.56   9.13  13.69  18.25  22.82  27.38  31.94  36.50  41.07  45.63  50.19  54.76  59.32  63.88  68.45  73.01&lt;br /&gt;
 2nd  6.24  12.47  18.71  24.94  31.18  37.41  43.65  49.88  56.12  62.35  68.59  74.82  81.06  87.30  93.53  99.77&lt;br /&gt;
 3rd  7.84  15.69  23.53  31.37  39.22  47.06  54.90  62.75  70.59  78.43  86.28  94.12 101.96 109.81 117.65 125.49&lt;br /&gt;
 4th  9.46  18.92  28.39  37.85  47.31  56.77  66.23  75.70  85.16  94.62 104.08 113.54 123.00 132.47 141.93 151.39&lt;br /&gt;
 5th 11.22  22.45  33.67  44.90  56.12  67.35  78.57  89.80 101.02 112.25 123.47 134.70 145.92 157.15 168.37 179.60&lt;br /&gt;
 6th 12.92  25.85  38.77  51.69  64.62  77.54  90.46 103.38 116.31 129.23 142.15 155.08 168.00 180.92 193.85 206.77&lt;br /&gt;
&lt;br /&gt;
 km/h   10     20     30     40     50     60     70     80     90    100    110    120    130    140    150    160&lt;br /&gt;
 1st  2182   4378   6574   8757  10953  13149  15331&lt;br /&gt;
 2nd  1597   3204   4811   6408   8015   9622  11219  12826  14433  16031&lt;br /&gt;
 3rd  1269   2547   3824   5094   6372   7649   8919  10197  11474  12744  14022  15299&lt;br /&gt;
 4th  1052   2111   3170   4223   5282   6341   7393   8452   9511  10564  11623  12682  13735  14794  15853&lt;br /&gt;
 5th   887   1779   2672   3559   4452   5345   6232   7125   8017   8905   9797  10690  11577  12470  13363  14250&lt;br /&gt;
 6th   770   1546   2321   3092   3867   4642   5413   6188   6964   7735   8510   9285  10056  10831  11607  12377&lt;br /&gt;
&lt;br /&gt;
=== 使用可能なタイヤ ===&lt;br /&gt;
&lt;br /&gt;
今は以下くらいしか無さそう。&lt;br /&gt;
&lt;br /&gt;
* BRIDGESTONE&lt;br /&gt;
** [http://www.bridgestone.co.jp/personal/mc/products/battlax/s20.html BATTLAX HYPERSPORT S20]&lt;br /&gt;
** [http://www.bridgestone.co.jp/personal/mc/products/battlax/bt56.html BATTLAX BT-56]&lt;br /&gt;
* DUNLOP&lt;br /&gt;
** [http://ridersnavi.com/catalogue/tyre/Roadsport/ SPORTMAX Roadsport]&lt;br /&gt;
** [http://ridersnavi.com/catalogue/tyre/GPR200/ SPORTMAX GPR-200]&lt;br /&gt;
** [http://ridersnavi.com/catalogue/tyre/a13/ SPORTMAX α-13Z]&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=%E3%83%9B%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88&amp;diff=1085</id>
		<title>ホーネット</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=%E3%83%9B%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88&amp;diff=1085"/>
				<updated>2016-09-01T11:20:13Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: /* パーツ情報 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ひっそりと記録開始。&lt;br /&gt;
&lt;br /&gt;
== 来歴 ==&lt;br /&gt;
&lt;br /&gt;
* 2012 年&lt;br /&gt;
** 07-xx　唐突にバイクに乗ってみたくなり、自動車学校に通い始める。普通二輪、土日のみ。&lt;br /&gt;
** 08-31　免許も未取得ながら、HONDA ホーネット購入。&lt;br /&gt;
** 09-29　技能試験に合格。&lt;br /&gt;
** 10-04　免許を更新。&lt;br /&gt;
** 10-27　ようやく納車。&lt;br /&gt;
** 11-13　200 km 到達、かつ初エンスト。1 速に入ったまま誤ってクラッチを放す。さらに満タン納車だったため、初給油。&lt;br /&gt;
** 12-01　初の (なんちゃって) ツーリング。途中でみぞれが降り出し引き返し、48 km くらい。雨の中走ったのも、教習所含めて初。&lt;br /&gt;
** 12-10　奥多摩湖までツーリング。さすがに超寒い。片道 2 時間、総走行距離は 120 km くらいだった。&lt;br /&gt;
* 2013 年&lt;br /&gt;
** 02-08　駐車場で倒れてしまっていて、フロント左ウィンカーを破損。接着剤とビニールテープで修繕…。&lt;br /&gt;
** 03-30　友人と相模湖までツーリングに出かけたものの、途中で雨が降り出したためあえなく断念。&lt;br /&gt;
** 05-01　秩父へツーリング。初高速道路、初 200 km 超走行で疲労困憊したが楽しすぎる。&lt;br /&gt;
** 05-25　相模湖・宮ヶ瀬湖へツーリング。フラッと走りに行くには丁度良い距離で、アップダウンもあって良かった。&lt;br /&gt;
** 06-29　ナカハラちゃんの超絶ドタキャンにより１人ツーリング。時間の都合で都民の森で引き返した。&lt;br /&gt;
** 09-21　ようやく念願のナカハラちゃんとのツーリングで相模、宮ヶ瀬湖へ。エツシは体調不良で断念。&lt;br /&gt;
** 10-04　免許取得から 1 年が経過して、タンデムが可能に。&lt;br /&gt;
** 10-13　初のタンデムツーリングで相模湖・宮ヶ瀬湖へ。100 km ほどだったが異様に疲れた。&lt;br /&gt;
** 11-22　湘南・三浦半島ツーリング。&lt;br /&gt;
* 2014 年&lt;br /&gt;
** 03-23　相模湖・上野原早朝ツーリング。&lt;br /&gt;
** 05-01　初の一泊ツーリング。まったり富士山一周 (約 330 km)。&lt;br /&gt;
** 05-02　オイル・エレメント交換 (&amp;amp;yen;5,400)、負圧ホース交換 (&amp;amp;yen;3,350)。&lt;br /&gt;
** 05-17　相模湖・奥多摩湖ツーリング。&lt;br /&gt;
** 09-14　秩父ツーリング with ナカハラちゃん。エツシは仕事でドタキャン、前科２犯。&lt;br /&gt;
** 09-14　およそ 2 年でようやく 3,000 km 到達…。まだ下りカーブが怖い。&lt;br /&gt;
** 10-11　早朝ツーリング to 上野原〜小菅〜一の瀬高原〜勝沼 (約 230 km) *&lt;br /&gt;
** 11-19　住所変更を行って川崎ナンバーに。塩浜まで行くのは大変。&lt;br /&gt;
** 11-22　西房総半島ツーリング。スピードメータが壊れて距離がわからない。&lt;br /&gt;
** 12-27　スピードメータ修理。入力のギアが削れてしまっていたとのこと (&amp;amp;yen;410 + 工賃 = &amp;amp;yen;2,570)。&lt;br /&gt;
* 2015 年&lt;br /&gt;
** 04-31　一泊伊豆ツーリング。約 400 km&lt;br /&gt;
* 2016 年&lt;br /&gt;
** 05-02　陣馬・小菅・山梨市ツーリング。&lt;br /&gt;
&lt;br /&gt;
== マシン情報 ==&lt;br /&gt;
&lt;br /&gt;
カスタムには全然興味がないので、どノーマルである。&lt;br /&gt;
&lt;br /&gt;
[[画像:20120831_hornet.jpg|300px]]&lt;br /&gt;
[[画像:20121102-hornet.jpg|300px]]&lt;br /&gt;
[[画像:20121110-hornet.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| 型式 || BA-MC31&lt;br /&gt;
|-&lt;br /&gt;
| 年式 || 2003&lt;br /&gt;
|-&lt;br /&gt;
| 走行距離 || 11,600 km&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
購入したバイク屋が Web に出していた画像をよく見ると、メータが 29,590 km となっているものがあったので、&lt;br /&gt;
おそらく 11,600 km というのは巻き戻されたものだろう。&lt;br /&gt;
&lt;br /&gt;
=== パーツ情報 ===&lt;br /&gt;
&lt;br /&gt;
交換したパーツの情報をメモっておく。&lt;br /&gt;
&lt;br /&gt;
; フロント ストップスイッチ&lt;br /&gt;
: [http://www.marunakayoko.net/2rin-parts-product.html?eid=00003&amp;amp;lid=5 NTB SSH-02] (35340-MM5-600)&lt;br /&gt;
; ストップ・テールランプ バルブ&lt;br /&gt;
: 12V18/5W&lt;br /&gt;
; スピードメータ ジョイント交換&lt;br /&gt;
: 410 円 + 工賃 2,160 円 = 2,570 円&lt;br /&gt;
; プラグ&lt;br /&gt;
: NGK CR8EH-9：810 円 x 4 = 3,240 円&lt;br /&gt;
; ラジエータキャップ&lt;br /&gt;
: [http://www.plotonline.com/motor/plot/radiatorcap/index.html プロト クールテック PPC-S]：1,800 円&lt;br /&gt;
&lt;br /&gt;
交換してないけどメモ。価格は２りんかんでのもの。&lt;br /&gt;
&lt;br /&gt;
; 左レバー&lt;br /&gt;
: 53718-KV0-000 : 1,228 円&lt;br /&gt;
; 右レバー&lt;br /&gt;
: 53170-MBW-006 : 2,593 円&lt;br /&gt;
; プラグ&lt;br /&gt;
: NGK CR9EH-9 : 787 円&lt;br /&gt;
; フロントタイヤ (130/70ZR16)&lt;br /&gt;
: DUNLOP GPR-200 : 18,600 円&lt;br /&gt;
; リアタイヤ (180/55ZR17)&lt;br /&gt;
: DUNLOP GPR-200 : 25,700 円&lt;br /&gt;
&lt;br /&gt;
== 走行・燃費記録 ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 日付       !! ODD       !! TRIP       !!  給油量  !! 燃費      !! 単価     !! 燃料代      !! 備考&lt;br /&gt;
|-&lt;br /&gt;
| 2012-10-27 || 11,6xx km || -          ||  -       || -         || -        || -           ||&lt;br /&gt;
|-&lt;br /&gt;
| 2012-11-13 || 11,800 km ||   202.6 km ||   9.17 L || 22.1 km/L || &amp;amp;yen;139 ||  &amp;amp;yen;1,275 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2012-12-01 || 11,915 km ||   115.8 km ||   5.98 L || 19.4 km/L || &amp;amp;yen;142 ||    &amp;amp;yen;849 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2012-12-10 || 12,077 km ||   161.7 km ||   8.28 L || 19.5 km/L || &amp;amp;yen;140 ||  &amp;amp;yen;1,159 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2013-02-02 || 12,303 km ||   226.5 km ||   9.83 L || 23.0 km/L || &amp;amp;yen;143 ||  &amp;amp;yen;1,406 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2013-03-30 || 12,443 km ||   139.0 km ||   8.27 L || 16.8 km/L || &amp;amp;yen;148 ||  &amp;amp;yen;1,224 || 倒れてこぼれた可能性が高い&lt;br /&gt;
|-&lt;br /&gt;
| 2013-05-01 || 12,627 km ||   183.9 km ||   8.83 L || 20.8 km/L || &amp;amp;yen;147 ||  &amp;amp;yen;1,298 || 近場をウロウロのみ&lt;br /&gt;
|-&lt;br /&gt;
| 2013-05-02 || 12,871 km ||   244.7 km ||   9.47 L || 25.8 km/L || &amp;amp;yen;147 ||  &amp;amp;yen;1,392 || 高速・ツーリング含む&lt;br /&gt;
|-&lt;br /&gt;
| 2013-06-29 || 13,030 km ||   158.0 km ||   7.55 L || 20.9 km/L || &amp;amp;yen;147 ||  &amp;amp;yen;1,110 || 近場をウロウロのみ&lt;br /&gt;
|-&lt;br /&gt;
| 2013-09-22 || 13,213 km ||   183.3 km ||   8.29 L || 22.1 km/L || &amp;amp;yen;152 ||  &amp;amp;yen;1,260 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2013-10-09 || 13,343 km ||   130.4 km ||   7.22 L || 18.0 km/L || &amp;amp;yen;147 ||  &amp;amp;yen;1,061 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2013-11-22 || 13,467 km ||   144.0 km ||   7.28 L || 19.8 km/L || &amp;amp;yen;146 ||  &amp;amp;yen;1,063 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-01-28 || -         ||   -        ||  10.72 L || -         || &amp;amp;yen;157 ||  &amp;amp;yen;1,683 || 距離未記録&lt;br /&gt;
|-&lt;br /&gt;
| 2014-05-01 || 13,856 km ||   369.0 km ||   6.69 L || 21.2 km/L || &amp;amp;yen;157 ||  &amp;amp;yen;1,050 || 燃費は 11/22 からの値&lt;br /&gt;
|-&lt;br /&gt;
| 2014-05-02 || 14,081 km ||   224.4 km ||   8.24 L || 27.2 km/L || &amp;amp;yen;159 ||  &amp;amp;yen;1,310 || 高速あり&lt;br /&gt;
|-&lt;br /&gt;
| 2014-05-17 || 14,258 km ||   176.8 km ||   7.74 L || 22.8 km/L || &amp;amp;yen;158 ||  &amp;amp;yen;1,223 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-08-08 || 14,457 km ||   199.6 km ||   8.98 L || 22.2 km/L || &amp;amp;yen;163 ||  &amp;amp;yen;1,464 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-09-14 || 14,613 km ||   155.0 km ||   7.06 L || 22.0 km/L || &amp;amp;yen;160 ||  &amp;amp;yen;1,130 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-10-11 || 14,808 km ||   195.4 km ||   8.07 L || 24.2 km/L || &amp;amp;yen;154 ||  &amp;amp;yen;1,243 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-11-19 || 15,071 km ||   262.7 km ||  11.01 L || 23.9 km/L || &amp;amp;yen;152 ||  &amp;amp;yen;1,674 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-12-12 || 15,287 km ||  約 300 km ||  12.10 L || 24.8 km/L || &amp;amp;yen;139 ||  &amp;amp;yen;1,606 || メーター故障により推測距離&lt;br /&gt;
|-&lt;br /&gt;
| 2015-04-29 || 15,394 km ||   107.0 km ||    7.68 L || 13.9 km/L || &amp;amp;yen;129 ||  &amp;amp;yen;991 || 多めに入れた＆タンデム多し&lt;br /&gt;
|-&lt;br /&gt;
| 2015-05-01 || 15,668 km ||   274.0 km ||    9.94 L || 27.6 km/L || &amp;amp;yen;148 ||  &amp;amp;yen;1,471 || ツーリング中。伊豆高い&lt;br /&gt;
|-&lt;br /&gt;
| 2015-06-28 || 15,909 km ||   240.5 km ||  11.56 L || 20.8km/L || &amp;amp;yen;140 ||  &amp;amp;yen;1,618 || &lt;br /&gt;
|-&lt;br /&gt;
| 2015-03-06|| 16,057km ||   148.3 km ||    9.73 L || 15.2 km/L || &amp;amp;yen;99    ||  &amp;amp;yen;963 || バイク買ってからの最安値&lt;br /&gt;
|-&lt;br /&gt;
| 2016-05-01 || 16,286 km ||   228.5 km ||  10.03 L || 22.8 km/L || &amp;amp;yen;113 ||  &amp;amp;yen;1,133 || &lt;br /&gt;
|-&lt;br /&gt;
! 合計               !! -                !!  4771.1 km || 219.72 L || 21.7 km/L || -            || &amp;amp;yen;31,657 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== メンテナンス記録 ==&lt;br /&gt;
&lt;br /&gt;
最初からつけておけばよかった。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 日付       !! ODD       !! 内容&lt;br /&gt;
|-&lt;br /&gt;
| 2016-08-20 ||  16436 km || 交換：プラグ x 4、ブレーキフルード (F, R)、クーラント、ラジエータキャップ、ホース&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 関連リンク ==&lt;br /&gt;
* [http://www.honda.co.jp/pressroom/products/motor/hornet/hornet_1996-01-25/ Honda | バイク製品アーカイブ 「ホーネット」]&lt;br /&gt;
* [http://ja.wikipedia.org/wiki/%E3%83%9B%E3%83%B3%E3%83%80%E3%83%BB%E3%83%9B%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88 ホンダ・ホーネット - Wikipedia]&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
=== 回転数と速度の関係 ===&lt;br /&gt;
&lt;br /&gt;
理論値を計算してみた。&lt;br /&gt;
&lt;br /&gt;
 rpm  1000   2000   3000   4000   5000   6000   7000   8000   9000  10000  11000  12000  13000  14000  15000  16000&lt;br /&gt;
 1st  4.56   9.13  13.69  18.25  22.82  27.38  31.94  36.50  41.07  45.63  50.19  54.76  59.32  63.88  68.45  73.01&lt;br /&gt;
 2nd  6.24  12.47  18.71  24.94  31.18  37.41  43.65  49.88  56.12  62.35  68.59  74.82  81.06  87.30  93.53  99.77&lt;br /&gt;
 3rd  7.84  15.69  23.53  31.37  39.22  47.06  54.90  62.75  70.59  78.43  86.28  94.12 101.96 109.81 117.65 125.49&lt;br /&gt;
 4th  9.46  18.92  28.39  37.85  47.31  56.77  66.23  75.70  85.16  94.62 104.08 113.54 123.00 132.47 141.93 151.39&lt;br /&gt;
 5th 11.22  22.45  33.67  44.90  56.12  67.35  78.57  89.80 101.02 112.25 123.47 134.70 145.92 157.15 168.37 179.60&lt;br /&gt;
 6th 12.92  25.85  38.77  51.69  64.62  77.54  90.46 103.38 116.31 129.23 142.15 155.08 168.00 180.92 193.85 206.77&lt;br /&gt;
&lt;br /&gt;
 km/h   10     20     30     40     50     60     70     80     90    100    110    120    130    140    150    160&lt;br /&gt;
 1st  2182   4378   6574   8757  10953  13149  15331&lt;br /&gt;
 2nd  1597   3204   4811   6408   8015   9622  11219  12826  14433  16031&lt;br /&gt;
 3rd  1269   2547   3824   5094   6372   7649   8919  10197  11474  12744  14022  15299&lt;br /&gt;
 4th  1052   2111   3170   4223   5282   6341   7393   8452   9511  10564  11623  12682  13735  14794  15853&lt;br /&gt;
 5th   887   1779   2672   3559   4452   5345   6232   7125   8017   8905   9797  10690  11577  12470  13363  14250&lt;br /&gt;
 6th   770   1546   2321   3092   3867   4642   5413   6188   6964   7735   8510   9285  10056  10831  11607  12377&lt;br /&gt;
&lt;br /&gt;
=== 使用可能なタイヤ ===&lt;br /&gt;
&lt;br /&gt;
今は以下くらいしか無さそう。&lt;br /&gt;
&lt;br /&gt;
* BRIDGESTONE&lt;br /&gt;
** [http://www.bridgestone.co.jp/personal/mc/products/battlax/s20.html BATTLAX HYPERSPORT S20]&lt;br /&gt;
** [http://www.bridgestone.co.jp/personal/mc/products/battlax/bt56.html BATTLAX BT-56]&lt;br /&gt;
* DUNLOP&lt;br /&gt;
** [http://ridersnavi.com/catalogue/tyre/Roadsport/ SPORTMAX Roadsport]&lt;br /&gt;
** [http://ridersnavi.com/catalogue/tyre/GPR200/ SPORTMAX GPR-200]&lt;br /&gt;
** [http://ridersnavi.com/catalogue/tyre/a13/ SPORTMAX α-13Z]&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=%E3%83%9B%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88&amp;diff=1084</id>
		<title>ホーネット</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=%E3%83%9B%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88&amp;diff=1084"/>
				<updated>2016-09-01T11:08:21Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: /* メンテナンス記録 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ひっそりと記録開始。&lt;br /&gt;
&lt;br /&gt;
== 来歴 ==&lt;br /&gt;
&lt;br /&gt;
* 2012 年&lt;br /&gt;
** 07-xx　唐突にバイクに乗ってみたくなり、自動車学校に通い始める。普通二輪、土日のみ。&lt;br /&gt;
** 08-31　免許も未取得ながら、HONDA ホーネット購入。&lt;br /&gt;
** 09-29　技能試験に合格。&lt;br /&gt;
** 10-04　免許を更新。&lt;br /&gt;
** 10-27　ようやく納車。&lt;br /&gt;
** 11-13　200 km 到達、かつ初エンスト。1 速に入ったまま誤ってクラッチを放す。さらに満タン納車だったため、初給油。&lt;br /&gt;
** 12-01　初の (なんちゃって) ツーリング。途中でみぞれが降り出し引き返し、48 km くらい。雨の中走ったのも、教習所含めて初。&lt;br /&gt;
** 12-10　奥多摩湖までツーリング。さすがに超寒い。片道 2 時間、総走行距離は 120 km くらいだった。&lt;br /&gt;
* 2013 年&lt;br /&gt;
** 02-08　駐車場で倒れてしまっていて、フロント左ウィンカーを破損。接着剤とビニールテープで修繕…。&lt;br /&gt;
** 03-30　友人と相模湖までツーリングに出かけたものの、途中で雨が降り出したためあえなく断念。&lt;br /&gt;
** 05-01　秩父へツーリング。初高速道路、初 200 km 超走行で疲労困憊したが楽しすぎる。&lt;br /&gt;
** 05-25　相模湖・宮ヶ瀬湖へツーリング。フラッと走りに行くには丁度良い距離で、アップダウンもあって良かった。&lt;br /&gt;
** 06-29　ナカハラちゃんの超絶ドタキャンにより１人ツーリング。時間の都合で都民の森で引き返した。&lt;br /&gt;
** 09-21　ようやく念願のナカハラちゃんとのツーリングで相模、宮ヶ瀬湖へ。エツシは体調不良で断念。&lt;br /&gt;
** 10-04　免許取得から 1 年が経過して、タンデムが可能に。&lt;br /&gt;
** 10-13　初のタンデムツーリングで相模湖・宮ヶ瀬湖へ。100 km ほどだったが異様に疲れた。&lt;br /&gt;
** 11-22　湘南・三浦半島ツーリング。&lt;br /&gt;
* 2014 年&lt;br /&gt;
** 03-23　相模湖・上野原早朝ツーリング。&lt;br /&gt;
** 05-01　初の一泊ツーリング。まったり富士山一周 (約 330 km)。&lt;br /&gt;
** 05-02　オイル・エレメント交換 (&amp;amp;yen;5,400)、負圧ホース交換 (&amp;amp;yen;3,350)。&lt;br /&gt;
** 05-17　相模湖・奥多摩湖ツーリング。&lt;br /&gt;
** 09-14　秩父ツーリング with ナカハラちゃん。エツシは仕事でドタキャン、前科２犯。&lt;br /&gt;
** 09-14　およそ 2 年でようやく 3,000 km 到達…。まだ下りカーブが怖い。&lt;br /&gt;
** 10-11　早朝ツーリング to 上野原〜小菅〜一の瀬高原〜勝沼 (約 230 km) *&lt;br /&gt;
** 11-19　住所変更を行って川崎ナンバーに。塩浜まで行くのは大変。&lt;br /&gt;
** 11-22　西房総半島ツーリング。スピードメータが壊れて距離がわからない。&lt;br /&gt;
** 12-27　スピードメータ修理。入力のギアが削れてしまっていたとのこと (&amp;amp;yen;410 + 工賃 = &amp;amp;yen;2,570)。&lt;br /&gt;
* 2015 年&lt;br /&gt;
** 04-31　一泊伊豆ツーリング。約 400 km&lt;br /&gt;
* 2016 年&lt;br /&gt;
** 05-02　陣馬・小菅・山梨市ツーリング。&lt;br /&gt;
&lt;br /&gt;
== マシン情報 ==&lt;br /&gt;
&lt;br /&gt;
カスタムには全然興味がないので、どノーマルである。&lt;br /&gt;
&lt;br /&gt;
[[画像:20120831_hornet.jpg|300px]]&lt;br /&gt;
[[画像:20121102-hornet.jpg|300px]]&lt;br /&gt;
[[画像:20121110-hornet.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| 型式 || BA-MC31&lt;br /&gt;
|-&lt;br /&gt;
| 年式 || 2003&lt;br /&gt;
|-&lt;br /&gt;
| 走行距離 || 11,600 km&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
購入したバイク屋が Web に出していた画像をよく見ると、メータが 29,590 km となっているものがあったので、&lt;br /&gt;
おそらく 11,600 km というのは巻き戻されたものだろう。&lt;br /&gt;
&lt;br /&gt;
=== パーツ情報 ===&lt;br /&gt;
&lt;br /&gt;
交換したパーツの情報をメモっておく。&lt;br /&gt;
&lt;br /&gt;
; フロント ストップスイッチ&lt;br /&gt;
: [http://www.marunakayoko.net/2rin-parts-product.html?eid=00003&amp;amp;lid=5 NTB SSH-02] (35340-MM5-600)&lt;br /&gt;
; ストップ・テールランプ バルブ&lt;br /&gt;
: 12V18/5W&lt;br /&gt;
; スピードメータ ジョイント交換&lt;br /&gt;
: 410 円 + 工賃 2,160 円 = 2,570 円&lt;br /&gt;
&lt;br /&gt;
交換してないけどメモ。価格は２りんかんでのもの。&lt;br /&gt;
&lt;br /&gt;
; 左レバー&lt;br /&gt;
: 53718-KV0-000 : 1,228 円&lt;br /&gt;
; 右レバー&lt;br /&gt;
: 53170-MBW-006 : 2,593 円&lt;br /&gt;
; プラグ&lt;br /&gt;
: NGK CR9EH-9 : 787 円&lt;br /&gt;
; フロントタイヤ (130/70ZR16)&lt;br /&gt;
: DUNLOP GPR-200 : 18,600 円&lt;br /&gt;
; リアタイヤ (180/55ZR17)&lt;br /&gt;
: DUNLOP GPR-200 : 25,700 円&lt;br /&gt;
&lt;br /&gt;
== 走行・燃費記録 ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 日付       !! ODD       !! TRIP       !!  給油量  !! 燃費      !! 単価     !! 燃料代      !! 備考&lt;br /&gt;
|-&lt;br /&gt;
| 2012-10-27 || 11,6xx km || -          ||  -       || -         || -        || -           ||&lt;br /&gt;
|-&lt;br /&gt;
| 2012-11-13 || 11,800 km ||   202.6 km ||   9.17 L || 22.1 km/L || &amp;amp;yen;139 ||  &amp;amp;yen;1,275 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2012-12-01 || 11,915 km ||   115.8 km ||   5.98 L || 19.4 km/L || &amp;amp;yen;142 ||    &amp;amp;yen;849 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2012-12-10 || 12,077 km ||   161.7 km ||   8.28 L || 19.5 km/L || &amp;amp;yen;140 ||  &amp;amp;yen;1,159 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2013-02-02 || 12,303 km ||   226.5 km ||   9.83 L || 23.0 km/L || &amp;amp;yen;143 ||  &amp;amp;yen;1,406 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2013-03-30 || 12,443 km ||   139.0 km ||   8.27 L || 16.8 km/L || &amp;amp;yen;148 ||  &amp;amp;yen;1,224 || 倒れてこぼれた可能性が高い&lt;br /&gt;
|-&lt;br /&gt;
| 2013-05-01 || 12,627 km ||   183.9 km ||   8.83 L || 20.8 km/L || &amp;amp;yen;147 ||  &amp;amp;yen;1,298 || 近場をウロウロのみ&lt;br /&gt;
|-&lt;br /&gt;
| 2013-05-02 || 12,871 km ||   244.7 km ||   9.47 L || 25.8 km/L || &amp;amp;yen;147 ||  &amp;amp;yen;1,392 || 高速・ツーリング含む&lt;br /&gt;
|-&lt;br /&gt;
| 2013-06-29 || 13,030 km ||   158.0 km ||   7.55 L || 20.9 km/L || &amp;amp;yen;147 ||  &amp;amp;yen;1,110 || 近場をウロウロのみ&lt;br /&gt;
|-&lt;br /&gt;
| 2013-09-22 || 13,213 km ||   183.3 km ||   8.29 L || 22.1 km/L || &amp;amp;yen;152 ||  &amp;amp;yen;1,260 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2013-10-09 || 13,343 km ||   130.4 km ||   7.22 L || 18.0 km/L || &amp;amp;yen;147 ||  &amp;amp;yen;1,061 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2013-11-22 || 13,467 km ||   144.0 km ||   7.28 L || 19.8 km/L || &amp;amp;yen;146 ||  &amp;amp;yen;1,063 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-01-28 || -         ||   -        ||  10.72 L || -         || &amp;amp;yen;157 ||  &amp;amp;yen;1,683 || 距離未記録&lt;br /&gt;
|-&lt;br /&gt;
| 2014-05-01 || 13,856 km ||   369.0 km ||   6.69 L || 21.2 km/L || &amp;amp;yen;157 ||  &amp;amp;yen;1,050 || 燃費は 11/22 からの値&lt;br /&gt;
|-&lt;br /&gt;
| 2014-05-02 || 14,081 km ||   224.4 km ||   8.24 L || 27.2 km/L || &amp;amp;yen;159 ||  &amp;amp;yen;1,310 || 高速あり&lt;br /&gt;
|-&lt;br /&gt;
| 2014-05-17 || 14,258 km ||   176.8 km ||   7.74 L || 22.8 km/L || &amp;amp;yen;158 ||  &amp;amp;yen;1,223 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-08-08 || 14,457 km ||   199.6 km ||   8.98 L || 22.2 km/L || &amp;amp;yen;163 ||  &amp;amp;yen;1,464 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-09-14 || 14,613 km ||   155.0 km ||   7.06 L || 22.0 km/L || &amp;amp;yen;160 ||  &amp;amp;yen;1,130 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-10-11 || 14,808 km ||   195.4 km ||   8.07 L || 24.2 km/L || &amp;amp;yen;154 ||  &amp;amp;yen;1,243 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-11-19 || 15,071 km ||   262.7 km ||  11.01 L || 23.9 km/L || &amp;amp;yen;152 ||  &amp;amp;yen;1,674 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-12-12 || 15,287 km ||  約 300 km ||  12.10 L || 24.8 km/L || &amp;amp;yen;139 ||  &amp;amp;yen;1,606 || メーター故障により推測距離&lt;br /&gt;
|-&lt;br /&gt;
| 2015-04-29 || 15,394 km ||   107.0 km ||    7.68 L || 13.9 km/L || &amp;amp;yen;129 ||  &amp;amp;yen;991 || 多めに入れた＆タンデム多し&lt;br /&gt;
|-&lt;br /&gt;
| 2015-05-01 || 15,668 km ||   274.0 km ||    9.94 L || 27.6 km/L || &amp;amp;yen;148 ||  &amp;amp;yen;1,471 || ツーリング中。伊豆高い&lt;br /&gt;
|-&lt;br /&gt;
| 2015-06-28 || 15,909 km ||   240.5 km ||  11.56 L || 20.8km/L || &amp;amp;yen;140 ||  &amp;amp;yen;1,618 || &lt;br /&gt;
|-&lt;br /&gt;
| 2015-03-06|| 16,057km ||   148.3 km ||    9.73 L || 15.2 km/L || &amp;amp;yen;99    ||  &amp;amp;yen;963 || バイク買ってからの最安値&lt;br /&gt;
|-&lt;br /&gt;
| 2016-05-01 || 16,286 km ||   228.5 km ||  10.03 L || 22.8 km/L || &amp;amp;yen;113 ||  &amp;amp;yen;1,133 || &lt;br /&gt;
|-&lt;br /&gt;
! 合計               !! -                !!  4771.1 km || 219.72 L || 21.7 km/L || -            || &amp;amp;yen;31,657 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== メンテナンス記録 ==&lt;br /&gt;
&lt;br /&gt;
最初からつけておけばよかった。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 日付       !! ODD       !! 内容&lt;br /&gt;
|-&lt;br /&gt;
| 2016-08-20 ||  16436 km || 交換：プラグ x 4、ブレーキフルード (F, R)、クーラント、ラジエータキャップ、ホース&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 関連リンク ==&lt;br /&gt;
* [http://www.honda.co.jp/pressroom/products/motor/hornet/hornet_1996-01-25/ Honda | バイク製品アーカイブ 「ホーネット」]&lt;br /&gt;
* [http://ja.wikipedia.org/wiki/%E3%83%9B%E3%83%B3%E3%83%80%E3%83%BB%E3%83%9B%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88 ホンダ・ホーネット - Wikipedia]&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
=== 回転数と速度の関係 ===&lt;br /&gt;
&lt;br /&gt;
理論値を計算してみた。&lt;br /&gt;
&lt;br /&gt;
 rpm  1000   2000   3000   4000   5000   6000   7000   8000   9000  10000  11000  12000  13000  14000  15000  16000&lt;br /&gt;
 1st  4.56   9.13  13.69  18.25  22.82  27.38  31.94  36.50  41.07  45.63  50.19  54.76  59.32  63.88  68.45  73.01&lt;br /&gt;
 2nd  6.24  12.47  18.71  24.94  31.18  37.41  43.65  49.88  56.12  62.35  68.59  74.82  81.06  87.30  93.53  99.77&lt;br /&gt;
 3rd  7.84  15.69  23.53  31.37  39.22  47.06  54.90  62.75  70.59  78.43  86.28  94.12 101.96 109.81 117.65 125.49&lt;br /&gt;
 4th  9.46  18.92  28.39  37.85  47.31  56.77  66.23  75.70  85.16  94.62 104.08 113.54 123.00 132.47 141.93 151.39&lt;br /&gt;
 5th 11.22  22.45  33.67  44.90  56.12  67.35  78.57  89.80 101.02 112.25 123.47 134.70 145.92 157.15 168.37 179.60&lt;br /&gt;
 6th 12.92  25.85  38.77  51.69  64.62  77.54  90.46 103.38 116.31 129.23 142.15 155.08 168.00 180.92 193.85 206.77&lt;br /&gt;
&lt;br /&gt;
 km/h   10     20     30     40     50     60     70     80     90    100    110    120    130    140    150    160&lt;br /&gt;
 1st  2182   4378   6574   8757  10953  13149  15331&lt;br /&gt;
 2nd  1597   3204   4811   6408   8015   9622  11219  12826  14433  16031&lt;br /&gt;
 3rd  1269   2547   3824   5094   6372   7649   8919  10197  11474  12744  14022  15299&lt;br /&gt;
 4th  1052   2111   3170   4223   5282   6341   7393   8452   9511  10564  11623  12682  13735  14794  15853&lt;br /&gt;
 5th   887   1779   2672   3559   4452   5345   6232   7125   8017   8905   9797  10690  11577  12470  13363  14250&lt;br /&gt;
 6th   770   1546   2321   3092   3867   4642   5413   6188   6964   7735   8510   9285  10056  10831  11607  12377&lt;br /&gt;
&lt;br /&gt;
=== 使用可能なタイヤ ===&lt;br /&gt;
&lt;br /&gt;
今は以下くらいしか無さそう。&lt;br /&gt;
&lt;br /&gt;
* BRIDGESTONE&lt;br /&gt;
** [http://www.bridgestone.co.jp/personal/mc/products/battlax/s20.html BATTLAX HYPERSPORT S20]&lt;br /&gt;
** [http://www.bridgestone.co.jp/personal/mc/products/battlax/bt56.html BATTLAX BT-56]&lt;br /&gt;
* DUNLOP&lt;br /&gt;
** [http://ridersnavi.com/catalogue/tyre/Roadsport/ SPORTMAX Roadsport]&lt;br /&gt;
** [http://ridersnavi.com/catalogue/tyre/GPR200/ SPORTMAX GPR-200]&lt;br /&gt;
** [http://ridersnavi.com/catalogue/tyre/a13/ SPORTMAX α-13Z]&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=%E3%83%9B%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88&amp;diff=1083</id>
		<title>ホーネット</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=%E3%83%9B%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88&amp;diff=1083"/>
				<updated>2016-08-20T00:38:47Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ひっそりと記録開始。&lt;br /&gt;
&lt;br /&gt;
== 来歴 ==&lt;br /&gt;
&lt;br /&gt;
* 2012 年&lt;br /&gt;
** 07-xx　唐突にバイクに乗ってみたくなり、自動車学校に通い始める。普通二輪、土日のみ。&lt;br /&gt;
** 08-31　免許も未取得ながら、HONDA ホーネット購入。&lt;br /&gt;
** 09-29　技能試験に合格。&lt;br /&gt;
** 10-04　免許を更新。&lt;br /&gt;
** 10-27　ようやく納車。&lt;br /&gt;
** 11-13　200 km 到達、かつ初エンスト。1 速に入ったまま誤ってクラッチを放す。さらに満タン納車だったため、初給油。&lt;br /&gt;
** 12-01　初の (なんちゃって) ツーリング。途中でみぞれが降り出し引き返し、48 km くらい。雨の中走ったのも、教習所含めて初。&lt;br /&gt;
** 12-10　奥多摩湖までツーリング。さすがに超寒い。片道 2 時間、総走行距離は 120 km くらいだった。&lt;br /&gt;
* 2013 年&lt;br /&gt;
** 02-08　駐車場で倒れてしまっていて、フロント左ウィンカーを破損。接着剤とビニールテープで修繕…。&lt;br /&gt;
** 03-30　友人と相模湖までツーリングに出かけたものの、途中で雨が降り出したためあえなく断念。&lt;br /&gt;
** 05-01　秩父へツーリング。初高速道路、初 200 km 超走行で疲労困憊したが楽しすぎる。&lt;br /&gt;
** 05-25　相模湖・宮ヶ瀬湖へツーリング。フラッと走りに行くには丁度良い距離で、アップダウンもあって良かった。&lt;br /&gt;
** 06-29　ナカハラちゃんの超絶ドタキャンにより１人ツーリング。時間の都合で都民の森で引き返した。&lt;br /&gt;
** 09-21　ようやく念願のナカハラちゃんとのツーリングで相模、宮ヶ瀬湖へ。エツシは体調不良で断念。&lt;br /&gt;
** 10-04　免許取得から 1 年が経過して、タンデムが可能に。&lt;br /&gt;
** 10-13　初のタンデムツーリングで相模湖・宮ヶ瀬湖へ。100 km ほどだったが異様に疲れた。&lt;br /&gt;
** 11-22　湘南・三浦半島ツーリング。&lt;br /&gt;
* 2014 年&lt;br /&gt;
** 03-23　相模湖・上野原早朝ツーリング。&lt;br /&gt;
** 05-01　初の一泊ツーリング。まったり富士山一周 (約 330 km)。&lt;br /&gt;
** 05-02　オイル・エレメント交換 (&amp;amp;yen;5,400)、負圧ホース交換 (&amp;amp;yen;3,350)。&lt;br /&gt;
** 05-17　相模湖・奥多摩湖ツーリング。&lt;br /&gt;
** 09-14　秩父ツーリング with ナカハラちゃん。エツシは仕事でドタキャン、前科２犯。&lt;br /&gt;
** 09-14　およそ 2 年でようやく 3,000 km 到達…。まだ下りカーブが怖い。&lt;br /&gt;
** 10-11　早朝ツーリング to 上野原〜小菅〜一の瀬高原〜勝沼 (約 230 km) *&lt;br /&gt;
** 11-19　住所変更を行って川崎ナンバーに。塩浜まで行くのは大変。&lt;br /&gt;
** 11-22　西房総半島ツーリング。スピードメータが壊れて距離がわからない。&lt;br /&gt;
** 12-27　スピードメータ修理。入力のギアが削れてしまっていたとのこと (&amp;amp;yen;410 + 工賃 = &amp;amp;yen;2,570)。&lt;br /&gt;
* 2015 年&lt;br /&gt;
** 04-31　一泊伊豆ツーリング。約 400 km&lt;br /&gt;
* 2016 年&lt;br /&gt;
** 05-02　陣馬・小菅・山梨市ツーリング。&lt;br /&gt;
&lt;br /&gt;
== マシン情報 ==&lt;br /&gt;
&lt;br /&gt;
カスタムには全然興味がないので、どノーマルである。&lt;br /&gt;
&lt;br /&gt;
[[画像:20120831_hornet.jpg|300px]]&lt;br /&gt;
[[画像:20121102-hornet.jpg|300px]]&lt;br /&gt;
[[画像:20121110-hornet.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| 型式 || BA-MC31&lt;br /&gt;
|-&lt;br /&gt;
| 年式 || 2003&lt;br /&gt;
|-&lt;br /&gt;
| 走行距離 || 11,600 km&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
購入したバイク屋が Web に出していた画像をよく見ると、メータが 29,590 km となっているものがあったので、&lt;br /&gt;
おそらく 11,600 km というのは巻き戻されたものだろう。&lt;br /&gt;
&lt;br /&gt;
=== パーツ情報 ===&lt;br /&gt;
&lt;br /&gt;
交換したパーツの情報をメモっておく。&lt;br /&gt;
&lt;br /&gt;
; フロント ストップスイッチ&lt;br /&gt;
: [http://www.marunakayoko.net/2rin-parts-product.html?eid=00003&amp;amp;lid=5 NTB SSH-02] (35340-MM5-600)&lt;br /&gt;
; ストップ・テールランプ バルブ&lt;br /&gt;
: 12V18/5W&lt;br /&gt;
; スピードメータ ジョイント交換&lt;br /&gt;
: 410 円 + 工賃 2,160 円 = 2,570 円&lt;br /&gt;
&lt;br /&gt;
交換してないけどメモ。価格は２りんかんでのもの。&lt;br /&gt;
&lt;br /&gt;
; 左レバー&lt;br /&gt;
: 53718-KV0-000 : 1,228 円&lt;br /&gt;
; 右レバー&lt;br /&gt;
: 53170-MBW-006 : 2,593 円&lt;br /&gt;
; プラグ&lt;br /&gt;
: NGK CR9EH-9 : 787 円&lt;br /&gt;
; フロントタイヤ (130/70ZR16)&lt;br /&gt;
: DUNLOP GPR-200 : 18,600 円&lt;br /&gt;
; リアタイヤ (180/55ZR17)&lt;br /&gt;
: DUNLOP GPR-200 : 25,700 円&lt;br /&gt;
&lt;br /&gt;
== 走行・燃費記録 ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 日付       !! ODD       !! TRIP       !!  給油量  !! 燃費      !! 単価     !! 燃料代      !! 備考&lt;br /&gt;
|-&lt;br /&gt;
| 2012-10-27 || 11,6xx km || -          ||  -       || -         || -        || -           ||&lt;br /&gt;
|-&lt;br /&gt;
| 2012-11-13 || 11,800 km ||   202.6 km ||   9.17 L || 22.1 km/L || &amp;amp;yen;139 ||  &amp;amp;yen;1,275 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2012-12-01 || 11,915 km ||   115.8 km ||   5.98 L || 19.4 km/L || &amp;amp;yen;142 ||    &amp;amp;yen;849 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2012-12-10 || 12,077 km ||   161.7 km ||   8.28 L || 19.5 km/L || &amp;amp;yen;140 ||  &amp;amp;yen;1,159 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2013-02-02 || 12,303 km ||   226.5 km ||   9.83 L || 23.0 km/L || &amp;amp;yen;143 ||  &amp;amp;yen;1,406 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2013-03-30 || 12,443 km ||   139.0 km ||   8.27 L || 16.8 km/L || &amp;amp;yen;148 ||  &amp;amp;yen;1,224 || 倒れてこぼれた可能性が高い&lt;br /&gt;
|-&lt;br /&gt;
| 2013-05-01 || 12,627 km ||   183.9 km ||   8.83 L || 20.8 km/L || &amp;amp;yen;147 ||  &amp;amp;yen;1,298 || 近場をウロウロのみ&lt;br /&gt;
|-&lt;br /&gt;
| 2013-05-02 || 12,871 km ||   244.7 km ||   9.47 L || 25.8 km/L || &amp;amp;yen;147 ||  &amp;amp;yen;1,392 || 高速・ツーリング含む&lt;br /&gt;
|-&lt;br /&gt;
| 2013-06-29 || 13,030 km ||   158.0 km ||   7.55 L || 20.9 km/L || &amp;amp;yen;147 ||  &amp;amp;yen;1,110 || 近場をウロウロのみ&lt;br /&gt;
|-&lt;br /&gt;
| 2013-09-22 || 13,213 km ||   183.3 km ||   8.29 L || 22.1 km/L || &amp;amp;yen;152 ||  &amp;amp;yen;1,260 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2013-10-09 || 13,343 km ||   130.4 km ||   7.22 L || 18.0 km/L || &amp;amp;yen;147 ||  &amp;amp;yen;1,061 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2013-11-22 || 13,467 km ||   144.0 km ||   7.28 L || 19.8 km/L || &amp;amp;yen;146 ||  &amp;amp;yen;1,063 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-01-28 || -         ||   -        ||  10.72 L || -         || &amp;amp;yen;157 ||  &amp;amp;yen;1,683 || 距離未記録&lt;br /&gt;
|-&lt;br /&gt;
| 2014-05-01 || 13,856 km ||   369.0 km ||   6.69 L || 21.2 km/L || &amp;amp;yen;157 ||  &amp;amp;yen;1,050 || 燃費は 11/22 からの値&lt;br /&gt;
|-&lt;br /&gt;
| 2014-05-02 || 14,081 km ||   224.4 km ||   8.24 L || 27.2 km/L || &amp;amp;yen;159 ||  &amp;amp;yen;1,310 || 高速あり&lt;br /&gt;
|-&lt;br /&gt;
| 2014-05-17 || 14,258 km ||   176.8 km ||   7.74 L || 22.8 km/L || &amp;amp;yen;158 ||  &amp;amp;yen;1,223 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-08-08 || 14,457 km ||   199.6 km ||   8.98 L || 22.2 km/L || &amp;amp;yen;163 ||  &amp;amp;yen;1,464 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-09-14 || 14,613 km ||   155.0 km ||   7.06 L || 22.0 km/L || &amp;amp;yen;160 ||  &amp;amp;yen;1,130 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-10-11 || 14,808 km ||   195.4 km ||   8.07 L || 24.2 km/L || &amp;amp;yen;154 ||  &amp;amp;yen;1,243 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-11-19 || 15,071 km ||   262.7 km ||  11.01 L || 23.9 km/L || &amp;amp;yen;152 ||  &amp;amp;yen;1,674 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-12-12 || 15,287 km ||  約 300 km ||  12.10 L || 24.8 km/L || &amp;amp;yen;139 ||  &amp;amp;yen;1,606 || メーター故障により推測距離&lt;br /&gt;
|-&lt;br /&gt;
| 2015-04-29 || 15,394 km ||   107.0 km ||    7.68 L || 13.9 km/L || &amp;amp;yen;129 ||  &amp;amp;yen;991 || 多めに入れた＆タンデム多し&lt;br /&gt;
|-&lt;br /&gt;
| 2015-05-01 || 15,668 km ||   274.0 km ||    9.94 L || 27.6 km/L || &amp;amp;yen;148 ||  &amp;amp;yen;1,471 || ツーリング中。伊豆高い&lt;br /&gt;
|-&lt;br /&gt;
| 2015-06-28 || 15,909 km ||   240.5 km ||  11.56 L || 20.8km/L || &amp;amp;yen;140 ||  &amp;amp;yen;1,618 || &lt;br /&gt;
|-&lt;br /&gt;
| 2015-03-06|| 16,057km ||   148.3 km ||    9.73 L || 15.2 km/L || &amp;amp;yen;99    ||  &amp;amp;yen;963 || バイク買ってからの最安値&lt;br /&gt;
|-&lt;br /&gt;
| 2016-05-01 || 16,286 km ||   228.5 km ||  10.03 L || 22.8 km/L || &amp;amp;yen;113 ||  &amp;amp;yen;1,133 || &lt;br /&gt;
|-&lt;br /&gt;
! 合計               !! -                !!  4771.1 km || 219.72 L || 21.7 km/L || -            || &amp;amp;yen;31,657 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== メンテナンス記録 ==&lt;br /&gt;
&lt;br /&gt;
最初からつけておけばよかった。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 日付       !! ODD       !! 内容&lt;br /&gt;
|-&lt;br /&gt;
| 2016-08-20 ||  xxx km || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 関連リンク ==&lt;br /&gt;
* [http://www.honda.co.jp/pressroom/products/motor/hornet/hornet_1996-01-25/ Honda | バイク製品アーカイブ 「ホーネット」]&lt;br /&gt;
* [http://ja.wikipedia.org/wiki/%E3%83%9B%E3%83%B3%E3%83%80%E3%83%BB%E3%83%9B%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88 ホンダ・ホーネット - Wikipedia]&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
=== 回転数と速度の関係 ===&lt;br /&gt;
&lt;br /&gt;
理論値を計算してみた。&lt;br /&gt;
&lt;br /&gt;
 rpm  1000   2000   3000   4000   5000   6000   7000   8000   9000  10000  11000  12000  13000  14000  15000  16000&lt;br /&gt;
 1st  4.56   9.13  13.69  18.25  22.82  27.38  31.94  36.50  41.07  45.63  50.19  54.76  59.32  63.88  68.45  73.01&lt;br /&gt;
 2nd  6.24  12.47  18.71  24.94  31.18  37.41  43.65  49.88  56.12  62.35  68.59  74.82  81.06  87.30  93.53  99.77&lt;br /&gt;
 3rd  7.84  15.69  23.53  31.37  39.22  47.06  54.90  62.75  70.59  78.43  86.28  94.12 101.96 109.81 117.65 125.49&lt;br /&gt;
 4th  9.46  18.92  28.39  37.85  47.31  56.77  66.23  75.70  85.16  94.62 104.08 113.54 123.00 132.47 141.93 151.39&lt;br /&gt;
 5th 11.22  22.45  33.67  44.90  56.12  67.35  78.57  89.80 101.02 112.25 123.47 134.70 145.92 157.15 168.37 179.60&lt;br /&gt;
 6th 12.92  25.85  38.77  51.69  64.62  77.54  90.46 103.38 116.31 129.23 142.15 155.08 168.00 180.92 193.85 206.77&lt;br /&gt;
&lt;br /&gt;
 km/h   10     20     30     40     50     60     70     80     90    100    110    120    130    140    150    160&lt;br /&gt;
 1st  2182   4378   6574   8757  10953  13149  15331&lt;br /&gt;
 2nd  1597   3204   4811   6408   8015   9622  11219  12826  14433  16031&lt;br /&gt;
 3rd  1269   2547   3824   5094   6372   7649   8919  10197  11474  12744  14022  15299&lt;br /&gt;
 4th  1052   2111   3170   4223   5282   6341   7393   8452   9511  10564  11623  12682  13735  14794  15853&lt;br /&gt;
 5th   887   1779   2672   3559   4452   5345   6232   7125   8017   8905   9797  10690  11577  12470  13363  14250&lt;br /&gt;
 6th   770   1546   2321   3092   3867   4642   5413   6188   6964   7735   8510   9285  10056  10831  11607  12377&lt;br /&gt;
&lt;br /&gt;
=== 使用可能なタイヤ ===&lt;br /&gt;
&lt;br /&gt;
今は以下くらいしか無さそう。&lt;br /&gt;
&lt;br /&gt;
* BRIDGESTONE&lt;br /&gt;
** [http://www.bridgestone.co.jp/personal/mc/products/battlax/s20.html BATTLAX HYPERSPORT S20]&lt;br /&gt;
** [http://www.bridgestone.co.jp/personal/mc/products/battlax/bt56.html BATTLAX BT-56]&lt;br /&gt;
* DUNLOP&lt;br /&gt;
** [http://ridersnavi.com/catalogue/tyre/Roadsport/ SPORTMAX Roadsport]&lt;br /&gt;
** [http://ridersnavi.com/catalogue/tyre/GPR200/ SPORTMAX GPR-200]&lt;br /&gt;
** [http://ridersnavi.com/catalogue/tyre/a13/ SPORTMAX α-13Z]&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=%E3%83%9B%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88&amp;diff=1082</id>
		<title>ホーネット</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=%E3%83%9B%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88&amp;diff=1082"/>
				<updated>2016-08-20T00:35:19Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: /* 走行・燃費記録 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ひっそりと記録開始。&lt;br /&gt;
&lt;br /&gt;
== 来歴 ==&lt;br /&gt;
&lt;br /&gt;
* 2012 年&lt;br /&gt;
** 07-xx　唐突にバイクに乗ってみたくなり、自動車学校に通い始める。普通二輪、土日のみ。&lt;br /&gt;
** 08-31　免許も未取得ながら、HONDA ホーネット購入。&lt;br /&gt;
** 09-29　技能試験に合格。&lt;br /&gt;
** 10-04　免許を更新。&lt;br /&gt;
** 10-27　ようやく納車。&lt;br /&gt;
** 11-13　200 km 到達、かつ初エンスト。1 速に入ったまま誤ってクラッチを放す。さらに満タン納車だったため、初給油。&lt;br /&gt;
** 12-01　初の (なんちゃって) ツーリング。途中でみぞれが降り出し引き返し、48 km くらい。雨の中走ったのも、教習所含めて初。&lt;br /&gt;
** 12-10　奥多摩湖までツーリング。さすがに超寒い。片道 2 時間、総走行距離は 120 km くらいだった。&lt;br /&gt;
* 2013 年&lt;br /&gt;
** 02-08　駐車場で倒れてしまっていて、フロント左ウィンカーを破損。接着剤とビニールテープで修繕…。&lt;br /&gt;
** 03-30　友人と相模湖までツーリングに出かけたものの、途中で雨が降り出したためあえなく断念。&lt;br /&gt;
** 05-01　秩父へツーリング。初高速道路、初 200 km 超走行で疲労困憊したが楽しすぎる。&lt;br /&gt;
** 05-25　相模湖・宮ヶ瀬湖へツーリング。フラッと走りに行くには丁度良い距離で、アップダウンもあって良かった。&lt;br /&gt;
** 06-29　ナカハラちゃんの超絶ドタキャンにより１人ツーリング。時間の都合で都民の森で引き返した。&lt;br /&gt;
** 09-21　ようやく念願のナカハラちゃんとのツーリングで相模、宮ヶ瀬湖へ。エツシは体調不良で断念。&lt;br /&gt;
** 10-04　免許取得から 1 年が経過して、タンデムが可能に。&lt;br /&gt;
** 10-13　初のタンデムツーリングで相模湖・宮ヶ瀬湖へ。100 km ほどだったが異様に疲れた。&lt;br /&gt;
** 11-22　湘南・三浦半島ツーリング。&lt;br /&gt;
* 2014 年&lt;br /&gt;
** 03-23　相模湖・上野原早朝ツーリング。&lt;br /&gt;
** 05-01　初の一泊ツーリング。まったり富士山一周 (約 330 km)。&lt;br /&gt;
** 05-02　オイル・エレメント交換 (&amp;amp;yen;5,400)、負圧ホース交換 (&amp;amp;yen;3,350)。&lt;br /&gt;
** 05-17　相模湖・奥多摩湖ツーリング。&lt;br /&gt;
** 09-14　秩父ツーリング with ナカハラちゃん。エツシは仕事でドタキャン、前科２犯。&lt;br /&gt;
** 09-14　およそ 2 年でようやく 3,000 km 到達…。まだ下りカーブが怖い。&lt;br /&gt;
** 10-11　早朝ツーリング to 上野原〜小菅〜一の瀬高原〜勝沼 (約 230 km) *&lt;br /&gt;
** 11-19　住所変更を行って川崎ナンバーに。塩浜まで行くのは大変。&lt;br /&gt;
** 11-22　西房総半島ツーリング。スピードメータが壊れて距離がわからない。&lt;br /&gt;
** 12-27　スピードメータ修理。入力のギアが削れてしまっていたとのこと (&amp;amp;yen;410 + 工賃 = &amp;amp;yen;2,570)。&lt;br /&gt;
* 2015 年&lt;br /&gt;
** 04-31　一泊伊豆ツーリング。約 400 km&lt;br /&gt;
* 2016 年&lt;br /&gt;
** 05-02　陣馬・小菅・山梨市ツーリング。&lt;br /&gt;
&lt;br /&gt;
== マシン情報 ==&lt;br /&gt;
&lt;br /&gt;
カスタムには全然興味がないので、どノーマルである。&lt;br /&gt;
&lt;br /&gt;
[[画像:20120831_hornet.jpg|300px]]&lt;br /&gt;
[[画像:20121102-hornet.jpg|300px]]&lt;br /&gt;
[[画像:20121110-hornet.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| 型式 || BA-MC31&lt;br /&gt;
|-&lt;br /&gt;
| 年式 || 2003&lt;br /&gt;
|-&lt;br /&gt;
| 走行距離 || 11,600 km&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
購入したバイク屋が Web に出していた画像をよく見ると、メータが 29,590 km となっているものがあったので、&lt;br /&gt;
おそらく 11,600 km というのは巻き戻されたものだろう。&lt;br /&gt;
&lt;br /&gt;
=== パーツ情報 ===&lt;br /&gt;
&lt;br /&gt;
交換したパーツの情報をメモっておく。&lt;br /&gt;
&lt;br /&gt;
; フロント ストップスイッチ&lt;br /&gt;
: [http://www.marunakayoko.net/2rin-parts-product.html?eid=00003&amp;amp;lid=5 NTB SSH-02] (35340-MM5-600)&lt;br /&gt;
; ストップ・テールランプ バルブ&lt;br /&gt;
: 12V18/5W&lt;br /&gt;
; スピードメータ ジョイント交換&lt;br /&gt;
: 410 円 + 工賃 2,160 円 = 2,570 円&lt;br /&gt;
&lt;br /&gt;
交換してないけどメモ。価格は２りんかんでのもの。&lt;br /&gt;
&lt;br /&gt;
; 左レバー&lt;br /&gt;
: 53718-KV0-000 : 1,228 円&lt;br /&gt;
; 右レバー&lt;br /&gt;
: 53170-MBW-006 : 2,593 円&lt;br /&gt;
; プラグ&lt;br /&gt;
: NGK CR9EH-9 : 787 円&lt;br /&gt;
; フロントタイヤ (130/70ZR16)&lt;br /&gt;
: DUNLOP GPR-200 : 18,600 円&lt;br /&gt;
; リアタイヤ (180/55ZR17)&lt;br /&gt;
: DUNLOP GPR-200 : 25,700 円&lt;br /&gt;
&lt;br /&gt;
== 走行・燃費記録 ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 日付       !! ODD       !! TRIP       !!  給油量  !! 燃費      !! 単価     !! 燃料代      !! 備考&lt;br /&gt;
|-&lt;br /&gt;
| 2012-10-27 || 11,6xx km || -          ||  -       || -         || -        || -           ||&lt;br /&gt;
|-&lt;br /&gt;
| 2012-11-13 || 11,800 km ||   202.6 km ||   9.17 L || 22.1 km/L || &amp;amp;yen;139 ||  &amp;amp;yen;1,275 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2012-12-01 || 11,915 km ||   115.8 km ||   5.98 L || 19.4 km/L || &amp;amp;yen;142 ||    &amp;amp;yen;849 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2012-12-10 || 12,077 km ||   161.7 km ||   8.28 L || 19.5 km/L || &amp;amp;yen;140 ||  &amp;amp;yen;1,159 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2013-02-02 || 12,303 km ||   226.5 km ||   9.83 L || 23.0 km/L || &amp;amp;yen;143 ||  &amp;amp;yen;1,406 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2013-03-30 || 12,443 km ||   139.0 km ||   8.27 L || 16.8 km/L || &amp;amp;yen;148 ||  &amp;amp;yen;1,224 || 倒れてこぼれた可能性が高い&lt;br /&gt;
|-&lt;br /&gt;
| 2013-05-01 || 12,627 km ||   183.9 km ||   8.83 L || 20.8 km/L || &amp;amp;yen;147 ||  &amp;amp;yen;1,298 || 近場をウロウロのみ&lt;br /&gt;
|-&lt;br /&gt;
| 2013-05-02 || 12,871 km ||   244.7 km ||   9.47 L || 25.8 km/L || &amp;amp;yen;147 ||  &amp;amp;yen;1,392 || 高速・ツーリング含む&lt;br /&gt;
|-&lt;br /&gt;
| 2013-06-29 || 13,030 km ||   158.0 km ||   7.55 L || 20.9 km/L || &amp;amp;yen;147 ||  &amp;amp;yen;1,110 || 近場をウロウロのみ&lt;br /&gt;
|-&lt;br /&gt;
| 2013-09-22 || 13,213 km ||   183.3 km ||   8.29 L || 22.1 km/L || &amp;amp;yen;152 ||  &amp;amp;yen;1,260 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2013-10-09 || 13,343 km ||   130.4 km ||   7.22 L || 18.0 km/L || &amp;amp;yen;147 ||  &amp;amp;yen;1,061 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2013-11-22 || 13,467 km ||   144.0 km ||   7.28 L || 19.8 km/L || &amp;amp;yen;146 ||  &amp;amp;yen;1,063 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-01-28 || -         ||   -        ||  10.72 L || -         || &amp;amp;yen;157 ||  &amp;amp;yen;1,683 || 距離未記録&lt;br /&gt;
|-&lt;br /&gt;
| 2014-05-01 || 13,856 km ||   369.0 km ||   6.69 L || 21.2 km/L || &amp;amp;yen;157 ||  &amp;amp;yen;1,050 || 燃費は 11/22 からの値&lt;br /&gt;
|-&lt;br /&gt;
| 2014-05-02 || 14,081 km ||   224.4 km ||   8.24 L || 27.2 km/L || &amp;amp;yen;159 ||  &amp;amp;yen;1,310 || 高速あり&lt;br /&gt;
|-&lt;br /&gt;
| 2014-05-17 || 14,258 km ||   176.8 km ||   7.74 L || 22.8 km/L || &amp;amp;yen;158 ||  &amp;amp;yen;1,223 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-08-08 || 14,457 km ||   199.6 km ||   8.98 L || 22.2 km/L || &amp;amp;yen;163 ||  &amp;amp;yen;1,464 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-09-14 || 14,613 km ||   155.0 km ||   7.06 L || 22.0 km/L || &amp;amp;yen;160 ||  &amp;amp;yen;1,130 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-10-11 || 14,808 km ||   195.4 km ||   8.07 L || 24.2 km/L || &amp;amp;yen;154 ||  &amp;amp;yen;1,243 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-11-19 || 15,071 km ||   262.7 km ||  11.01 L || 23.9 km/L || &amp;amp;yen;152 ||  &amp;amp;yen;1,674 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-12-12 || 15,287 km ||  約 300 km ||  12.10 L || 24.8 km/L || &amp;amp;yen;139 ||  &amp;amp;yen;1,606 || メーター故障により推測距離&lt;br /&gt;
|-&lt;br /&gt;
| 2015-04-29 || 15,394 km ||   107.0 km ||    7.68 L || 13.9 km/L || &amp;amp;yen;129 ||  &amp;amp;yen;991 || 多めに入れた＆タンデム多し&lt;br /&gt;
|-&lt;br /&gt;
| 2015-05-01 || 15,668 km ||   274.0 km ||    9.94 L || 27.6 km/L || &amp;amp;yen;148 ||  &amp;amp;yen;1,471 || ツーリング中。伊豆高い&lt;br /&gt;
|-&lt;br /&gt;
| 2015-06-28 || 15,909 km ||   240.5 km ||  11.56 L || 20.8km/L || &amp;amp;yen;140 ||  &amp;amp;yen;1,618 || &lt;br /&gt;
|-&lt;br /&gt;
| 2015-03-06|| 16,057km ||   148.3 km ||    9.73 L || 15.2 km/L || &amp;amp;yen;99    ||  &amp;amp;yen;963 || バイク買ってからの最安値&lt;br /&gt;
|-&lt;br /&gt;
| 2016-05-01 || 16,286 km ||   228.5 km ||  10.03 L || 22.8 km/L || &amp;amp;yen;113 ||  &amp;amp;yen;1,133 || &lt;br /&gt;
|-&lt;br /&gt;
! 合計               !! -                !!  4771.1 km || 219.72 L || 21.7 km/L || -            || &amp;amp;yen;31,657 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 関連リンク ==&lt;br /&gt;
* [http://www.honda.co.jp/pressroom/products/motor/hornet/hornet_1996-01-25/ Honda | バイク製品アーカイブ 「ホーネット」]&lt;br /&gt;
* [http://ja.wikipedia.org/wiki/%E3%83%9B%E3%83%B3%E3%83%80%E3%83%BB%E3%83%9B%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88 ホンダ・ホーネット - Wikipedia]&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
=== 回転数と速度の関係 ===&lt;br /&gt;
&lt;br /&gt;
理論値を計算してみた。&lt;br /&gt;
&lt;br /&gt;
 rpm  1000   2000   3000   4000   5000   6000   7000   8000   9000  10000  11000  12000  13000  14000  15000  16000&lt;br /&gt;
 1st  4.56   9.13  13.69  18.25  22.82  27.38  31.94  36.50  41.07  45.63  50.19  54.76  59.32  63.88  68.45  73.01&lt;br /&gt;
 2nd  6.24  12.47  18.71  24.94  31.18  37.41  43.65  49.88  56.12  62.35  68.59  74.82  81.06  87.30  93.53  99.77&lt;br /&gt;
 3rd  7.84  15.69  23.53  31.37  39.22  47.06  54.90  62.75  70.59  78.43  86.28  94.12 101.96 109.81 117.65 125.49&lt;br /&gt;
 4th  9.46  18.92  28.39  37.85  47.31  56.77  66.23  75.70  85.16  94.62 104.08 113.54 123.00 132.47 141.93 151.39&lt;br /&gt;
 5th 11.22  22.45  33.67  44.90  56.12  67.35  78.57  89.80 101.02 112.25 123.47 134.70 145.92 157.15 168.37 179.60&lt;br /&gt;
 6th 12.92  25.85  38.77  51.69  64.62  77.54  90.46 103.38 116.31 129.23 142.15 155.08 168.00 180.92 193.85 206.77&lt;br /&gt;
&lt;br /&gt;
 km/h   10     20     30     40     50     60     70     80     90    100    110    120    130    140    150    160&lt;br /&gt;
 1st  2182   4378   6574   8757  10953  13149  15331&lt;br /&gt;
 2nd  1597   3204   4811   6408   8015   9622  11219  12826  14433  16031&lt;br /&gt;
 3rd  1269   2547   3824   5094   6372   7649   8919  10197  11474  12744  14022  15299&lt;br /&gt;
 4th  1052   2111   3170   4223   5282   6341   7393   8452   9511  10564  11623  12682  13735  14794  15853&lt;br /&gt;
 5th   887   1779   2672   3559   4452   5345   6232   7125   8017   8905   9797  10690  11577  12470  13363  14250&lt;br /&gt;
 6th   770   1546   2321   3092   3867   4642   5413   6188   6964   7735   8510   9285  10056  10831  11607  12377&lt;br /&gt;
&lt;br /&gt;
=== 使用可能なタイヤ ===&lt;br /&gt;
&lt;br /&gt;
今は以下くらいしか無さそう。&lt;br /&gt;
&lt;br /&gt;
* BRIDGESTONE&lt;br /&gt;
** [http://www.bridgestone.co.jp/personal/mc/products/battlax/s20.html BATTLAX HYPERSPORT S20]&lt;br /&gt;
** [http://www.bridgestone.co.jp/personal/mc/products/battlax/bt56.html BATTLAX BT-56]&lt;br /&gt;
* DUNLOP&lt;br /&gt;
** [http://ridersnavi.com/catalogue/tyre/Roadsport/ SPORTMAX Roadsport]&lt;br /&gt;
** [http://ridersnavi.com/catalogue/tyre/GPR200/ SPORTMAX GPR-200]&lt;br /&gt;
** [http://ridersnavi.com/catalogue/tyre/a13/ SPORTMAX α-13Z]&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=%E3%83%9B%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88&amp;diff=1081</id>
		<title>ホーネット</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=%E3%83%9B%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88&amp;diff=1081"/>
				<updated>2016-08-20T00:27:21Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ひっそりと記録開始。&lt;br /&gt;
&lt;br /&gt;
== 来歴 ==&lt;br /&gt;
&lt;br /&gt;
* 2012 年&lt;br /&gt;
** 07-xx　唐突にバイクに乗ってみたくなり、自動車学校に通い始める。普通二輪、土日のみ。&lt;br /&gt;
** 08-31　免許も未取得ながら、HONDA ホーネット購入。&lt;br /&gt;
** 09-29　技能試験に合格。&lt;br /&gt;
** 10-04　免許を更新。&lt;br /&gt;
** 10-27　ようやく納車。&lt;br /&gt;
** 11-13　200 km 到達、かつ初エンスト。1 速に入ったまま誤ってクラッチを放す。さらに満タン納車だったため、初給油。&lt;br /&gt;
** 12-01　初の (なんちゃって) ツーリング。途中でみぞれが降り出し引き返し、48 km くらい。雨の中走ったのも、教習所含めて初。&lt;br /&gt;
** 12-10　奥多摩湖までツーリング。さすがに超寒い。片道 2 時間、総走行距離は 120 km くらいだった。&lt;br /&gt;
* 2013 年&lt;br /&gt;
** 02-08　駐車場で倒れてしまっていて、フロント左ウィンカーを破損。接着剤とビニールテープで修繕…。&lt;br /&gt;
** 03-30　友人と相模湖までツーリングに出かけたものの、途中で雨が降り出したためあえなく断念。&lt;br /&gt;
** 05-01　秩父へツーリング。初高速道路、初 200 km 超走行で疲労困憊したが楽しすぎる。&lt;br /&gt;
** 05-25　相模湖・宮ヶ瀬湖へツーリング。フラッと走りに行くには丁度良い距離で、アップダウンもあって良かった。&lt;br /&gt;
** 06-29　ナカハラちゃんの超絶ドタキャンにより１人ツーリング。時間の都合で都民の森で引き返した。&lt;br /&gt;
** 09-21　ようやく念願のナカハラちゃんとのツーリングで相模、宮ヶ瀬湖へ。エツシは体調不良で断念。&lt;br /&gt;
** 10-04　免許取得から 1 年が経過して、タンデムが可能に。&lt;br /&gt;
** 10-13　初のタンデムツーリングで相模湖・宮ヶ瀬湖へ。100 km ほどだったが異様に疲れた。&lt;br /&gt;
** 11-22　湘南・三浦半島ツーリング。&lt;br /&gt;
* 2014 年&lt;br /&gt;
** 03-23　相模湖・上野原早朝ツーリング。&lt;br /&gt;
** 05-01　初の一泊ツーリング。まったり富士山一周 (約 330 km)。&lt;br /&gt;
** 05-02　オイル・エレメント交換 (&amp;amp;yen;5,400)、負圧ホース交換 (&amp;amp;yen;3,350)。&lt;br /&gt;
** 05-17　相模湖・奥多摩湖ツーリング。&lt;br /&gt;
** 09-14　秩父ツーリング with ナカハラちゃん。エツシは仕事でドタキャン、前科２犯。&lt;br /&gt;
** 09-14　およそ 2 年でようやく 3,000 km 到達…。まだ下りカーブが怖い。&lt;br /&gt;
** 10-11　早朝ツーリング to 上野原〜小菅〜一の瀬高原〜勝沼 (約 230 km) *&lt;br /&gt;
** 11-19　住所変更を行って川崎ナンバーに。塩浜まで行くのは大変。&lt;br /&gt;
** 11-22　西房総半島ツーリング。スピードメータが壊れて距離がわからない。&lt;br /&gt;
** 12-27　スピードメータ修理。入力のギアが削れてしまっていたとのこと (&amp;amp;yen;410 + 工賃 = &amp;amp;yen;2,570)。&lt;br /&gt;
* 2015 年&lt;br /&gt;
** 04-31　一泊伊豆ツーリング。約 400 km&lt;br /&gt;
* 2016 年&lt;br /&gt;
** 05-02　陣馬・小菅・山梨市ツーリング。&lt;br /&gt;
&lt;br /&gt;
== マシン情報 ==&lt;br /&gt;
&lt;br /&gt;
カスタムには全然興味がないので、どノーマルである。&lt;br /&gt;
&lt;br /&gt;
[[画像:20120831_hornet.jpg|300px]]&lt;br /&gt;
[[画像:20121102-hornet.jpg|300px]]&lt;br /&gt;
[[画像:20121110-hornet.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| 型式 || BA-MC31&lt;br /&gt;
|-&lt;br /&gt;
| 年式 || 2003&lt;br /&gt;
|-&lt;br /&gt;
| 走行距離 || 11,600 km&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
購入したバイク屋が Web に出していた画像をよく見ると、メータが 29,590 km となっているものがあったので、&lt;br /&gt;
おそらく 11,600 km というのは巻き戻されたものだろう。&lt;br /&gt;
&lt;br /&gt;
=== パーツ情報 ===&lt;br /&gt;
&lt;br /&gt;
交換したパーツの情報をメモっておく。&lt;br /&gt;
&lt;br /&gt;
; フロント ストップスイッチ&lt;br /&gt;
: [http://www.marunakayoko.net/2rin-parts-product.html?eid=00003&amp;amp;lid=5 NTB SSH-02] (35340-MM5-600)&lt;br /&gt;
; ストップ・テールランプ バルブ&lt;br /&gt;
: 12V18/5W&lt;br /&gt;
; スピードメータ ジョイント交換&lt;br /&gt;
: 410 円 + 工賃 2,160 円 = 2,570 円&lt;br /&gt;
&lt;br /&gt;
交換してないけどメモ。価格は２りんかんでのもの。&lt;br /&gt;
&lt;br /&gt;
; 左レバー&lt;br /&gt;
: 53718-KV0-000 : 1,228 円&lt;br /&gt;
; 右レバー&lt;br /&gt;
: 53170-MBW-006 : 2,593 円&lt;br /&gt;
; プラグ&lt;br /&gt;
: NGK CR9EH-9 : 787 円&lt;br /&gt;
; フロントタイヤ (130/70ZR16)&lt;br /&gt;
: DUNLOP GPR-200 : 18,600 円&lt;br /&gt;
; リアタイヤ (180/55ZR17)&lt;br /&gt;
: DUNLOP GPR-200 : 25,700 円&lt;br /&gt;
&lt;br /&gt;
== 走行・燃費記録 ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 日付       !! ODD       !! TRIP       !!  給油量  !! 燃費      !! 単価     !! 燃料代      !! 備考&lt;br /&gt;
|-&lt;br /&gt;
| 2012-10-27 || 11,6xx km || -          ||  -       || -         || -        || -           ||&lt;br /&gt;
|-&lt;br /&gt;
| 2012-11-13 || 11,800 km ||   202.6 km ||   9.17 L || 22.1 km/L || &amp;amp;yen;139 ||  &amp;amp;yen;1,275 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2012-12-01 || 11,915 km ||   115.8 km ||   5.98 L || 19.4 km/L || &amp;amp;yen;142 ||    &amp;amp;yen;849 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2012-12-10 || 12,077 km ||   161.7 km ||   8.28 L || 19.5 km/L || &amp;amp;yen;140 ||  &amp;amp;yen;1,159 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2013-02-02 || 12,303 km ||   226.5 km ||   9.83 L || 23.0 km/L || &amp;amp;yen;143 ||  &amp;amp;yen;1,406 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2013-03-30 || 12,443 km ||   139.0 km ||   8.27 L || 16.8 km/L || &amp;amp;yen;148 ||  &amp;amp;yen;1,224 || 倒れてこぼれた可能性が高い&lt;br /&gt;
|-&lt;br /&gt;
| 2013-05-01 || 12,627 km ||   183.9 km ||   8.83 L || 20.8 km/L || &amp;amp;yen;147 ||  &amp;amp;yen;1,298 || 近場をウロウロのみ&lt;br /&gt;
|-&lt;br /&gt;
| 2013-05-02 || 12,871 km ||   244.7 km ||   9.47 L || 25.8 km/L || &amp;amp;yen;147 ||  &amp;amp;yen;1,392 || 高速・ツーリング含む&lt;br /&gt;
|-&lt;br /&gt;
| 2013-06-29 || 13,030 km ||   158.0 km ||   7.55 L || 20.9 km/L || &amp;amp;yen;147 ||  &amp;amp;yen;1,110 || 近場をウロウロのみ&lt;br /&gt;
|-&lt;br /&gt;
| 2013-09-22 || 13,213 km ||   183.3 km ||   8.29 L || 22.1 km/L || &amp;amp;yen;152 ||  &amp;amp;yen;1,260 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2013-10-09 || 13,343 km ||   130.4 km ||   7.22 L || 18.0 km/L || &amp;amp;yen;147 ||  &amp;amp;yen;1,061 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2013-11-22 || 13,467 km ||   144.0 km ||   7.28 L || 19.8 km/L || &amp;amp;yen;146 ||  &amp;amp;yen;1,063 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-01-28 || -         ||   -        ||  10.72 L || -         || &amp;amp;yen;157 ||  &amp;amp;yen;1,683 || 距離未記録&lt;br /&gt;
|-&lt;br /&gt;
| 2014-05-01 || 13,856 km ||   369.0 km ||   6.69 L || 21.2 km/L || &amp;amp;yen;157 ||  &amp;amp;yen;1,050 || 燃費は 11/22 からの値&lt;br /&gt;
|-&lt;br /&gt;
| 2014-05-02 || 14,081 km ||   224.4 km ||   8.24 L || 27.2 km/L || &amp;amp;yen;159 ||  &amp;amp;yen;1,310 || 高速あり&lt;br /&gt;
|-&lt;br /&gt;
| 2014-05-17 || 14,258 km ||   176.8 km ||   7.74 L || 22.8 km/L || &amp;amp;yen;158 ||  &amp;amp;yen;1,223 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-08-08 || 14,457 km ||   199.6 km ||   8.98 L || 22.2 km/L || &amp;amp;yen;163 ||  &amp;amp;yen;1,464 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-09-14 || 14,613 km ||   155.0 km ||   7.06 L || 22.0 km/L || &amp;amp;yen;160 ||  &amp;amp;yen;1,130 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-10-11 || 14,808 km ||   195.4 km ||   8.07 L || 24.2 km/L || &amp;amp;yen;154 ||  &amp;amp;yen;1,243 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-11-19 || 15,071 km ||   262.7 km ||  11.01 L || 23.9 km/L || &amp;amp;yen;152 ||  &amp;amp;yen;1,674 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-12-12 || 15,287 km ||  約 300 km ||  12.10 L || 24.8 km/L || &amp;amp;yen;139 ||  &amp;amp;yen;1,606 || メーター故障により推測距離&lt;br /&gt;
|-&lt;br /&gt;
| 2015-04-29 || 15,394 km ||   107.0 km ||    7.68 L || 13.9 km/L || &amp;amp;yen;129 ||  &amp;amp;yen;991 || 多めに入れた＆タンデム多し&lt;br /&gt;
|-&lt;br /&gt;
| 2015-05-01 || 15,668 km ||   274.0 km ||    9.94 L || 27.6 km/L || &amp;amp;yen;148 ||  &amp;amp;yen;1,471 || ツーリング中。伊豆高い&lt;br /&gt;
|-&lt;br /&gt;
! 合計               !! -                !!  4153.8 km || 188.40 L || 22.0 km/L || -            || &amp;amp;yen;27,942 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 関連リンク ==&lt;br /&gt;
* [http://www.honda.co.jp/pressroom/products/motor/hornet/hornet_1996-01-25/ Honda | バイク製品アーカイブ 「ホーネット」]&lt;br /&gt;
* [http://ja.wikipedia.org/wiki/%E3%83%9B%E3%83%B3%E3%83%80%E3%83%BB%E3%83%9B%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88 ホンダ・ホーネット - Wikipedia]&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
=== 回転数と速度の関係 ===&lt;br /&gt;
&lt;br /&gt;
理論値を計算してみた。&lt;br /&gt;
&lt;br /&gt;
 rpm  1000   2000   3000   4000   5000   6000   7000   8000   9000  10000  11000  12000  13000  14000  15000  16000&lt;br /&gt;
 1st  4.56   9.13  13.69  18.25  22.82  27.38  31.94  36.50  41.07  45.63  50.19  54.76  59.32  63.88  68.45  73.01&lt;br /&gt;
 2nd  6.24  12.47  18.71  24.94  31.18  37.41  43.65  49.88  56.12  62.35  68.59  74.82  81.06  87.30  93.53  99.77&lt;br /&gt;
 3rd  7.84  15.69  23.53  31.37  39.22  47.06  54.90  62.75  70.59  78.43  86.28  94.12 101.96 109.81 117.65 125.49&lt;br /&gt;
 4th  9.46  18.92  28.39  37.85  47.31  56.77  66.23  75.70  85.16  94.62 104.08 113.54 123.00 132.47 141.93 151.39&lt;br /&gt;
 5th 11.22  22.45  33.67  44.90  56.12  67.35  78.57  89.80 101.02 112.25 123.47 134.70 145.92 157.15 168.37 179.60&lt;br /&gt;
 6th 12.92  25.85  38.77  51.69  64.62  77.54  90.46 103.38 116.31 129.23 142.15 155.08 168.00 180.92 193.85 206.77&lt;br /&gt;
&lt;br /&gt;
 km/h   10     20     30     40     50     60     70     80     90    100    110    120    130    140    150    160&lt;br /&gt;
 1st  2182   4378   6574   8757  10953  13149  15331&lt;br /&gt;
 2nd  1597   3204   4811   6408   8015   9622  11219  12826  14433  16031&lt;br /&gt;
 3rd  1269   2547   3824   5094   6372   7649   8919  10197  11474  12744  14022  15299&lt;br /&gt;
 4th  1052   2111   3170   4223   5282   6341   7393   8452   9511  10564  11623  12682  13735  14794  15853&lt;br /&gt;
 5th   887   1779   2672   3559   4452   5345   6232   7125   8017   8905   9797  10690  11577  12470  13363  14250&lt;br /&gt;
 6th   770   1546   2321   3092   3867   4642   5413   6188   6964   7735   8510   9285  10056  10831  11607  12377&lt;br /&gt;
&lt;br /&gt;
=== 使用可能なタイヤ ===&lt;br /&gt;
&lt;br /&gt;
今は以下くらいしか無さそう。&lt;br /&gt;
&lt;br /&gt;
* BRIDGESTONE&lt;br /&gt;
** [http://www.bridgestone.co.jp/personal/mc/products/battlax/s20.html BATTLAX HYPERSPORT S20]&lt;br /&gt;
** [http://www.bridgestone.co.jp/personal/mc/products/battlax/bt56.html BATTLAX BT-56]&lt;br /&gt;
* DUNLOP&lt;br /&gt;
** [http://ridersnavi.com/catalogue/tyre/Roadsport/ SPORTMAX Roadsport]&lt;br /&gt;
** [http://ridersnavi.com/catalogue/tyre/GPR200/ SPORTMAX GPR-200]&lt;br /&gt;
** [http://ridersnavi.com/catalogue/tyre/a13/ SPORTMAX α-13Z]&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=Python&amp;diff=1080</id>
		<title>Python</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=Python&amp;diff=1080"/>
				<updated>2016-03-07T12:51:51Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: /* バージョンによる違い */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;かなり忘れつつある Python について。&lt;br /&gt;
&lt;br /&gt;
== 参考リンク ==&lt;br /&gt;
* [http://www.python.jp/doc/release/index.html Python 2.5 ドキュメント - 19th September, 2006]&lt;br /&gt;
* [http://www.unixuser.org/~euske/doc/python/tutorial0917.html Python 講習会 資料] ― 古いけど、まとまっていて見やすい。&lt;br /&gt;
&lt;br /&gt;
== 覚え書き ==&lt;br /&gt;
* グローバル変数など、外側のスコープにある変数は読み出し専用となる。&amp;lt;code&amp;gt;global&amp;lt;/code&amp;gt; 文を使えば代入できる。&lt;br /&gt;
* 一定時間待ちを入れる場合は、&amp;lt;code&amp;gt;import time&amp;lt;/code&amp;gt; して &amp;lt;code&amp;gt;time.sleep(n)&amp;lt;/code&amp;gt; を使う。&lt;br /&gt;
* gzip コマンドで圧縮したデータを zlib モジュールでは展開できない (ヘッダが異なるため)。gzip + StringIO モジュールを使って回避する。&lt;br /&gt;
* 対話モードでは、最後に表示された結果は変数 &amp;lt;code&amp;gt;_&amp;lt;/code&amp;gt; に代入される。&lt;br /&gt;
* &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt; の末尾にコンマを入れると、改行されない。&amp;lt;code&amp;gt;print &amp;quot;hoge&amp;quot;,&amp;lt;/code&amp;gt;&lt;br /&gt;
* 一つの要素のタプルは、値の後ろにコンマを付ける。&amp;lt;code&amp;gt;(&amp;quot;hoge&amp;quot;,)&amp;lt;/code&amp;gt;&lt;br /&gt;
* 複数の比較演算子を &amp;lt;code&amp;gt;a &amp;lt; b == c&amp;lt;/code&amp;gt; のように書ける素晴らしい言語。&lt;br /&gt;
* &amp;lt;code&amp;gt;print &amp;gt;&amp;gt; sys.stderr, ...&amp;lt;/code&amp;gt; で標準エラーに出力&lt;br /&gt;
&lt;br /&gt;
== 文字列 ==&lt;br /&gt;
* シングルクォートとダブルクオートに違いはない。&lt;br /&gt;
** エスケープシーケンスを無視する場合は raw 文字列を使う。&amp;lt;code&amp;gt;r&amp;quot;raw 文字列\n&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* 三重クォート &amp;lt;nowiki&amp;gt;&amp;quot;&amp;quot;&amp;quot; あるいは '''&amp;lt;/nowiki&amp;gt; は改行をそのまま含めることができる。&lt;br /&gt;
* 連結は + 演算子を用いる。&lt;br /&gt;
** 文字列リテラルは、列記で連結可能。&amp;lt;code&amp;gt;&amp;quot;ho&amp;quot; &amp;quot;ge&amp;quot; → &amp;quot;hoge&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; 組み込み関数でバイト数を得る。&lt;br /&gt;
** マルチバイトを考慮した文字数は &amp;lt;code&amp;gt;len(str.decode(&amp;quot;UTF-8&amp;quot;))&amp;lt;/code&amp;gt; で得ることができる。&lt;br /&gt;
* &amp;lt;code&amp;gt;in&amp;lt;/code&amp;gt; で包含判定ができる&lt;br /&gt;
* &amp;lt;code&amp;gt;int(str)&amp;lt;/code&amp;gt; で整数に変換。第 2 引き数で基数指定可能。&lt;br /&gt;
&lt;br /&gt;
=== スライス ===&lt;br /&gt;
文字の間に添字を置くとわかりやすい。&lt;br /&gt;
 s = &amp;quot;H e l l o&amp;quot;&lt;br /&gt;
     0 1 2 3 4 5&lt;br /&gt;
   - 5 4 3 2 1   ← ここは -0 でないことに注意!! (0 = -0 のため)&lt;br /&gt;
 &lt;br /&gt;
 s[1]   → 'e'&lt;br /&gt;
 s[:3]  → 'Hel' # 先頭 3 文字&lt;br /&gt;
 s[3:]  → 'lo'&lt;br /&gt;
 s[-4]  → 'e'&lt;br /&gt;
 s[-3:] → 'llo' # 末尾 3 文字&lt;br /&gt;
 s[:-1] → 'Hell' # 最後の 1 文字を削る (改行削りに有用)&lt;br /&gt;
 s[:]   → コピーを作る&lt;br /&gt;
&lt;br /&gt;
== リスト ==&lt;br /&gt;
書くのが面倒なくらい柔軟性に富んだデータ型である。&lt;br /&gt;
* 変更可能 (mutable)&lt;br /&gt;
* 入れ子可能 (リストの要素をリストにできる)&lt;br /&gt;
* 文字列と同様のスライス表現で操作できる。&lt;br /&gt;
* &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; でリストの長さを得る。&lt;br /&gt;
&lt;br /&gt;
 a = []          # 初期化、クリア&lt;br /&gt;
 a = [0, 3, 5]&lt;br /&gt;
 a[1:1] = [1, 2] # 挿入 → [0, 1, 2, 3, 5]&lt;br /&gt;
 a[1:4] = []     # 削除 → [0, 5]&lt;br /&gt;
 a = a + [6, 7]  # 連結 → [0, 5, 6, 7]&lt;br /&gt;
 a = a * 2       # 連続 → [0, 5, 6, 7, 0, 5, 6, 7]&lt;br /&gt;
&lt;br /&gt;
* [http://www.python.jp/doc/2.5/tut/node7.html 5. データ構造]&lt;br /&gt;
&lt;br /&gt;
== バージョンによる違い ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center&amp;quot;&lt;br /&gt;
! !! RHEL5 !! RHEL6 !! RHEL7&lt;br /&gt;
|-&lt;br /&gt;
! Python&lt;br /&gt;
| 2.4.3 || 2.6.6 || 2.7.5&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/reference/compound_stmts.html#the-with-statement with 文]&lt;br /&gt;
| x || o || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/reference/expressions.html#conditional-expressions 条件演算]&amp;lt;br /&amp;gt;(三項演算子)&lt;br /&gt;
| x || o || o&lt;br /&gt;
|-&lt;br /&gt;
! リスト内包表記&lt;br /&gt;
| o || o || o&lt;br /&gt;
|-&lt;br /&gt;
! 辞書内包表記&lt;br /&gt;
| x || x || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/reference/expressions.html#generator-expressions ジェネレータ式]&lt;br /&gt;
| o || o || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/library/functions.html#enumerate enumerate 関数]&amp;lt;br /&amp;gt;の start 引数&lt;br /&gt;
| x || o || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/reference/compound_stmts.html#the-try-statement try... except... finally]&lt;br /&gt;
| x || o || o&lt;br /&gt;
|-&lt;br /&gt;
! sort/[http://docs.python.jp/2/library/functions.html#sorted sorted] の key 引数&lt;br /&gt;
| o || o || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/library/functions.html#property @property デコレータ]&lt;br /&gt;
| o || o || o&lt;br /&gt;
|-&lt;br /&gt;
! property オブジェクトの&amp;lt;br&amp;gt;getter, setter, deleter 関数&lt;br /&gt;
| x || o || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/library/functions.html#all all, any 関数]&lt;br /&gt;
| x || o || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/library/functions.html#bin bin 関数]&lt;br /&gt;
| x || x || o&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
=== リストを N 分割する ===&lt;br /&gt;
ちょうど N 個に分割するわけではなく、最大で N 個なので注意。&lt;br /&gt;
&lt;br /&gt;
 def split_list(list, n):&lt;br /&gt;
     l = len(list)&lt;br /&gt;
     size = l / n + (l % n &amp;gt; 0)&lt;br /&gt;
     return [ list[i:i+size] for i in range(0, l, size) ]&lt;br /&gt;
&lt;br /&gt;
こんな感じで分割したリストのリストになる。&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; l = [1,2,3,4,5,7,8,9,10]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 2)&lt;br /&gt;
 [[1, 2, 3, 4, 5], [7, 8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 3)&lt;br /&gt;
 [[1, 2, 3], [4, 5, 7], [8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 4)&lt;br /&gt;
 [[1, 2, 3], [4, 5, 7], [8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 5)&lt;br /&gt;
 [[1, 2], [3, 4], [5, 7], [8, 9], [10]]&lt;br /&gt;
&lt;br /&gt;
=== モジュールに定義された名前のリスト ===&lt;br /&gt;
&lt;br /&gt;
dir 関数を使う。(忘れやすい)&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir()&lt;br /&gt;
 ['__builtins__', '__doc__', '__name__', '__package__']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; import time&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir()&lt;br /&gt;
 ['__builtins__', '__doc__', '__name__', '__package__', 'time']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir(time)&lt;br /&gt;
 ['__doc__', '__file__', '__name__', '__package__', 'accept2dyear', 'altzone', 'asctime', 'clock',&lt;br /&gt;
 'ctime', 'daylight', 'gmtime', 'localtime', 'mktime', 'sleep', 'strftime', 'strptime',&lt;br /&gt;
 'struct_time', 'time', 'timezone', 'tzname', 'tzset']&lt;br /&gt;
&lt;br /&gt;
=== socket の setsockopt() を使う ===&lt;br /&gt;
&lt;br /&gt;
* SO_KEEPALIVE の場合&lt;br /&gt;
&lt;br /&gt;
 import socket&lt;br /&gt;
 s = socket.socket()&lt;br /&gt;
 s.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)&lt;br /&gt;
&lt;br /&gt;
* SO_LINGER の場合&lt;br /&gt;
&lt;br /&gt;
 import socket&lt;br /&gt;
 import struct&lt;br /&gt;
 s = socket.socket()&lt;br /&gt;
 s.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack('ii', 1, 30))&lt;br /&gt;
&lt;br /&gt;
== テンプレート ==&lt;br /&gt;
&lt;br /&gt;
=== awk 風 Python スクリプトテンプレート ===&lt;br /&gt;
&lt;br /&gt;
テキスト処理を何でもかんでも簡単な awk で済ませちゃうクセがついてしまったので、&lt;br /&gt;
自分に Python を使うように仕向けるための awk 風テンプレート。&lt;br /&gt;
&lt;br /&gt;
FS, NR, FILENAME, FNR, NF, s[0], s[1..NF] が利用可能。&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env python&lt;br /&gt;
 import sys&lt;br /&gt;
 &lt;br /&gt;
 if len(sys.argv) == 1:&lt;br /&gt;
     files = [ sys.stdin ]&lt;br /&gt;
 else:&lt;br /&gt;
     files = [ open(f) for f in sys.argv[1:] ]&lt;br /&gt;
 &lt;br /&gt;
 ### BEGIN {&lt;br /&gt;
 FS = None&lt;br /&gt;
 &lt;br /&gt;
 ### }&lt;br /&gt;
 &lt;br /&gt;
 NR = 0&lt;br /&gt;
 for file in files:&lt;br /&gt;
     FNR = 0; FILENAME = file.name&lt;br /&gt;
     for line in file:&lt;br /&gt;
         NR += 1; FNR += 1&lt;br /&gt;
         s = line.split(FS)&lt;br /&gt;
         s[0:0] = [ line[:-1] ]&lt;br /&gt;
         NF = len(s)&lt;br /&gt;
         # print NR, FILENAME, FNR, NF, s&lt;br /&gt;
         ### {&lt;br /&gt;
 &lt;br /&gt;
         ### }&lt;br /&gt;
 &lt;br /&gt;
 ### END {&lt;br /&gt;
 &lt;br /&gt;
 ### }&lt;br /&gt;
&lt;br /&gt;
=== ファイルか標準入力から読む ===&lt;br /&gt;
&lt;br /&gt;
ファイルが指定されれば、それらをすべて処理し、指定されなければ標準入力から読む。&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 &lt;br /&gt;
 if len(sys.argv) == 1:&lt;br /&gt;
     files = [ sys.stdin ]&lt;br /&gt;
 else:&lt;br /&gt;
     files = [ open(f) for f in sys.argv[1:] ]&lt;br /&gt;
 &lt;br /&gt;
 for file in files:&lt;br /&gt;
     ...&lt;br /&gt;
&lt;br /&gt;
* [http://docs.python.jp/2/library/fileinput.html fileinput モジュール] というのがあった…&lt;br /&gt;
&lt;br /&gt;
=== getopt ===&lt;br /&gt;
どの言語でもこいつだけはテンプレート化する必要がある。。&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 import getopt&lt;br /&gt;
 &lt;br /&gt;
 def usage(exit_code):&lt;br /&gt;
     out = (exit_code and sys.stderr) or sys.stdout&lt;br /&gt;
     print &amp;gt;&amp;gt; out, 'Usage: %s [-a] [-b str]' % sys.argv[0]&lt;br /&gt;
     sys.exit(exit_code)&lt;br /&gt;
 &lt;br /&gt;
 try:&lt;br /&gt;
     opts, args = getopt.getopt(sys.argv[1:], 'ab:h')&lt;br /&gt;
 except getopt.GetoptError:&lt;br /&gt;
     usage(1)&lt;br /&gt;
 &lt;br /&gt;
 (opt_a, opt_b) = (False, None) # defaults&lt;br /&gt;
 for (opt, val) in opts:&lt;br /&gt;
     if opt == '-a':&lt;br /&gt;
         opt_a = True&lt;br /&gt;
     elif opt == '-b':&lt;br /&gt;
         opt_b = val&lt;br /&gt;
     elif opt == '-h':&lt;br /&gt;
          usage(0)&lt;br /&gt;
     else:&lt;br /&gt;
          usage(1)&lt;br /&gt;
 &lt;br /&gt;
 for arg in args: # remainder&lt;br /&gt;
     ...&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=Python&amp;diff=1079</id>
		<title>Python</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=Python&amp;diff=1079"/>
				<updated>2016-03-03T11:44:51Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: /* バージョンによる違い */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;かなり忘れつつある Python について。&lt;br /&gt;
&lt;br /&gt;
== 参考リンク ==&lt;br /&gt;
* [http://www.python.jp/doc/release/index.html Python 2.5 ドキュメント - 19th September, 2006]&lt;br /&gt;
* [http://www.unixuser.org/~euske/doc/python/tutorial0917.html Python 講習会 資料] ― 古いけど、まとまっていて見やすい。&lt;br /&gt;
&lt;br /&gt;
== 覚え書き ==&lt;br /&gt;
* グローバル変数など、外側のスコープにある変数は読み出し専用となる。&amp;lt;code&amp;gt;global&amp;lt;/code&amp;gt; 文を使えば代入できる。&lt;br /&gt;
* 一定時間待ちを入れる場合は、&amp;lt;code&amp;gt;import time&amp;lt;/code&amp;gt; して &amp;lt;code&amp;gt;time.sleep(n)&amp;lt;/code&amp;gt; を使う。&lt;br /&gt;
* gzip コマンドで圧縮したデータを zlib モジュールでは展開できない (ヘッダが異なるため)。gzip + StringIO モジュールを使って回避する。&lt;br /&gt;
* 対話モードでは、最後に表示された結果は変数 &amp;lt;code&amp;gt;_&amp;lt;/code&amp;gt; に代入される。&lt;br /&gt;
* &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt; の末尾にコンマを入れると、改行されない。&amp;lt;code&amp;gt;print &amp;quot;hoge&amp;quot;,&amp;lt;/code&amp;gt;&lt;br /&gt;
* 一つの要素のタプルは、値の後ろにコンマを付ける。&amp;lt;code&amp;gt;(&amp;quot;hoge&amp;quot;,)&amp;lt;/code&amp;gt;&lt;br /&gt;
* 複数の比較演算子を &amp;lt;code&amp;gt;a &amp;lt; b == c&amp;lt;/code&amp;gt; のように書ける素晴らしい言語。&lt;br /&gt;
* &amp;lt;code&amp;gt;print &amp;gt;&amp;gt; sys.stderr, ...&amp;lt;/code&amp;gt; で標準エラーに出力&lt;br /&gt;
&lt;br /&gt;
== 文字列 ==&lt;br /&gt;
* シングルクォートとダブルクオートに違いはない。&lt;br /&gt;
** エスケープシーケンスを無視する場合は raw 文字列を使う。&amp;lt;code&amp;gt;r&amp;quot;raw 文字列\n&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* 三重クォート &amp;lt;nowiki&amp;gt;&amp;quot;&amp;quot;&amp;quot; あるいは '''&amp;lt;/nowiki&amp;gt; は改行をそのまま含めることができる。&lt;br /&gt;
* 連結は + 演算子を用いる。&lt;br /&gt;
** 文字列リテラルは、列記で連結可能。&amp;lt;code&amp;gt;&amp;quot;ho&amp;quot; &amp;quot;ge&amp;quot; → &amp;quot;hoge&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; 組み込み関数でバイト数を得る。&lt;br /&gt;
** マルチバイトを考慮した文字数は &amp;lt;code&amp;gt;len(str.decode(&amp;quot;UTF-8&amp;quot;))&amp;lt;/code&amp;gt; で得ることができる。&lt;br /&gt;
* &amp;lt;code&amp;gt;in&amp;lt;/code&amp;gt; で包含判定ができる&lt;br /&gt;
* &amp;lt;code&amp;gt;int(str)&amp;lt;/code&amp;gt; で整数に変換。第 2 引き数で基数指定可能。&lt;br /&gt;
&lt;br /&gt;
=== スライス ===&lt;br /&gt;
文字の間に添字を置くとわかりやすい。&lt;br /&gt;
 s = &amp;quot;H e l l o&amp;quot;&lt;br /&gt;
     0 1 2 3 4 5&lt;br /&gt;
   - 5 4 3 2 1   ← ここは -0 でないことに注意!! (0 = -0 のため)&lt;br /&gt;
 &lt;br /&gt;
 s[1]   → 'e'&lt;br /&gt;
 s[:3]  → 'Hel' # 先頭 3 文字&lt;br /&gt;
 s[3:]  → 'lo'&lt;br /&gt;
 s[-4]  → 'e'&lt;br /&gt;
 s[-3:] → 'llo' # 末尾 3 文字&lt;br /&gt;
 s[:-1] → 'Hell' # 最後の 1 文字を削る (改行削りに有用)&lt;br /&gt;
 s[:]   → コピーを作る&lt;br /&gt;
&lt;br /&gt;
== リスト ==&lt;br /&gt;
書くのが面倒なくらい柔軟性に富んだデータ型である。&lt;br /&gt;
* 変更可能 (mutable)&lt;br /&gt;
* 入れ子可能 (リストの要素をリストにできる)&lt;br /&gt;
* 文字列と同様のスライス表現で操作できる。&lt;br /&gt;
* &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; でリストの長さを得る。&lt;br /&gt;
&lt;br /&gt;
 a = []          # 初期化、クリア&lt;br /&gt;
 a = [0, 3, 5]&lt;br /&gt;
 a[1:1] = [1, 2] # 挿入 → [0, 1, 2, 3, 5]&lt;br /&gt;
 a[1:4] = []     # 削除 → [0, 5]&lt;br /&gt;
 a = a + [6, 7]  # 連結 → [0, 5, 6, 7]&lt;br /&gt;
 a = a * 2       # 連続 → [0, 5, 6, 7, 0, 5, 6, 7]&lt;br /&gt;
&lt;br /&gt;
* [http://www.python.jp/doc/2.5/tut/node7.html 5. データ構造]&lt;br /&gt;
&lt;br /&gt;
== バージョンによる違い ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center&amp;quot;&lt;br /&gt;
! !! RHEL5 !! RHEL6 !! RHEL7&lt;br /&gt;
|-&lt;br /&gt;
! Python&lt;br /&gt;
| 2.4.3 || 2.6.6 || 2.7.5&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/reference/compound_stmts.html#the-with-statement with 文]&lt;br /&gt;
| x || o || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/reference/expressions.html#conditional-expressions 条件演算]&amp;lt;br /&amp;gt;(三項演算子)&lt;br /&gt;
| x || o || o&lt;br /&gt;
|-&lt;br /&gt;
! リスト内包表記&lt;br /&gt;
| o || o || o&lt;br /&gt;
|-&lt;br /&gt;
! 辞書内包表記&lt;br /&gt;
| x || x || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/reference/expressions.html#generator-expressions ジェネレータ式]&lt;br /&gt;
| o || o || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/library/functions.html#enumerate enumerate 関数]&amp;lt;br /&amp;gt;の start 引数&lt;br /&gt;
| x || o || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/reference/compound_stmts.html#the-try-statement try... except... finally]&lt;br /&gt;
| x || o || o&lt;br /&gt;
|-&lt;br /&gt;
! sort/[http://docs.python.jp/2/library/functions.html#sorted sorted] の key 引数&lt;br /&gt;
| o || o || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/library/functions.html#property @property デコレータ]&lt;br /&gt;
| o || o || o&lt;br /&gt;
|-&lt;br /&gt;
! property オブジェクトの&amp;lt;br&amp;gt;getter, setter, deleter 関数&lt;br /&gt;
| x || o || o&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
=== リストを N 分割する ===&lt;br /&gt;
ちょうど N 個に分割するわけではなく、最大で N 個なので注意。&lt;br /&gt;
&lt;br /&gt;
 def split_list(list, n):&lt;br /&gt;
     l = len(list)&lt;br /&gt;
     size = l / n + (l % n &amp;gt; 0)&lt;br /&gt;
     return [ list[i:i+size] for i in range(0, l, size) ]&lt;br /&gt;
&lt;br /&gt;
こんな感じで分割したリストのリストになる。&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; l = [1,2,3,4,5,7,8,9,10]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 2)&lt;br /&gt;
 [[1, 2, 3, 4, 5], [7, 8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 3)&lt;br /&gt;
 [[1, 2, 3], [4, 5, 7], [8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 4)&lt;br /&gt;
 [[1, 2, 3], [4, 5, 7], [8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 5)&lt;br /&gt;
 [[1, 2], [3, 4], [5, 7], [8, 9], [10]]&lt;br /&gt;
&lt;br /&gt;
=== モジュールに定義された名前のリスト ===&lt;br /&gt;
&lt;br /&gt;
dir 関数を使う。(忘れやすい)&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir()&lt;br /&gt;
 ['__builtins__', '__doc__', '__name__', '__package__']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; import time&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir()&lt;br /&gt;
 ['__builtins__', '__doc__', '__name__', '__package__', 'time']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir(time)&lt;br /&gt;
 ['__doc__', '__file__', '__name__', '__package__', 'accept2dyear', 'altzone', 'asctime', 'clock',&lt;br /&gt;
 'ctime', 'daylight', 'gmtime', 'localtime', 'mktime', 'sleep', 'strftime', 'strptime',&lt;br /&gt;
 'struct_time', 'time', 'timezone', 'tzname', 'tzset']&lt;br /&gt;
&lt;br /&gt;
=== socket の setsockopt() を使う ===&lt;br /&gt;
&lt;br /&gt;
* SO_KEEPALIVE の場合&lt;br /&gt;
&lt;br /&gt;
 import socket&lt;br /&gt;
 s = socket.socket()&lt;br /&gt;
 s.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)&lt;br /&gt;
&lt;br /&gt;
* SO_LINGER の場合&lt;br /&gt;
&lt;br /&gt;
 import socket&lt;br /&gt;
 import struct&lt;br /&gt;
 s = socket.socket()&lt;br /&gt;
 s.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack('ii', 1, 30))&lt;br /&gt;
&lt;br /&gt;
== テンプレート ==&lt;br /&gt;
&lt;br /&gt;
=== awk 風 Python スクリプトテンプレート ===&lt;br /&gt;
&lt;br /&gt;
テキスト処理を何でもかんでも簡単な awk で済ませちゃうクセがついてしまったので、&lt;br /&gt;
自分に Python を使うように仕向けるための awk 風テンプレート。&lt;br /&gt;
&lt;br /&gt;
FS, NR, FILENAME, FNR, NF, s[0], s[1..NF] が利用可能。&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env python&lt;br /&gt;
 import sys&lt;br /&gt;
 &lt;br /&gt;
 if len(sys.argv) == 1:&lt;br /&gt;
     files = [ sys.stdin ]&lt;br /&gt;
 else:&lt;br /&gt;
     files = [ open(f) for f in sys.argv[1:] ]&lt;br /&gt;
 &lt;br /&gt;
 ### BEGIN {&lt;br /&gt;
 FS = None&lt;br /&gt;
 &lt;br /&gt;
 ### }&lt;br /&gt;
 &lt;br /&gt;
 NR = 0&lt;br /&gt;
 for file in files:&lt;br /&gt;
     FNR = 0; FILENAME = file.name&lt;br /&gt;
     for line in file:&lt;br /&gt;
         NR += 1; FNR += 1&lt;br /&gt;
         s = line.split(FS)&lt;br /&gt;
         s[0:0] = [ line[:-1] ]&lt;br /&gt;
         NF = len(s)&lt;br /&gt;
         # print NR, FILENAME, FNR, NF, s&lt;br /&gt;
         ### {&lt;br /&gt;
 &lt;br /&gt;
         ### }&lt;br /&gt;
 &lt;br /&gt;
 ### END {&lt;br /&gt;
 &lt;br /&gt;
 ### }&lt;br /&gt;
&lt;br /&gt;
=== ファイルか標準入力から読む ===&lt;br /&gt;
&lt;br /&gt;
ファイルが指定されれば、それらをすべて処理し、指定されなければ標準入力から読む。&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 &lt;br /&gt;
 if len(sys.argv) == 1:&lt;br /&gt;
     files = [ sys.stdin ]&lt;br /&gt;
 else:&lt;br /&gt;
     files = [ open(f) for f in sys.argv[1:] ]&lt;br /&gt;
 &lt;br /&gt;
 for file in files:&lt;br /&gt;
     ...&lt;br /&gt;
&lt;br /&gt;
* [http://docs.python.jp/2/library/fileinput.html fileinput モジュール] というのがあった…&lt;br /&gt;
&lt;br /&gt;
=== getopt ===&lt;br /&gt;
どの言語でもこいつだけはテンプレート化する必要がある。。&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 import getopt&lt;br /&gt;
 &lt;br /&gt;
 def usage(exit_code):&lt;br /&gt;
     out = (exit_code and sys.stderr) or sys.stdout&lt;br /&gt;
     print &amp;gt;&amp;gt; out, 'Usage: %s [-a] [-b str]' % sys.argv[0]&lt;br /&gt;
     sys.exit(exit_code)&lt;br /&gt;
 &lt;br /&gt;
 try:&lt;br /&gt;
     opts, args = getopt.getopt(sys.argv[1:], 'ab:h')&lt;br /&gt;
 except getopt.GetoptError:&lt;br /&gt;
     usage(1)&lt;br /&gt;
 &lt;br /&gt;
 (opt_a, opt_b) = (False, None) # defaults&lt;br /&gt;
 for (opt, val) in opts:&lt;br /&gt;
     if opt == '-a':&lt;br /&gt;
         opt_a = True&lt;br /&gt;
     elif opt == '-b':&lt;br /&gt;
         opt_b = val&lt;br /&gt;
     elif opt == '-h':&lt;br /&gt;
          usage(0)&lt;br /&gt;
     else:&lt;br /&gt;
          usage(1)&lt;br /&gt;
 &lt;br /&gt;
 for arg in args: # remainder&lt;br /&gt;
     ...&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=Python&amp;diff=1078</id>
		<title>Python</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=Python&amp;diff=1078"/>
				<updated>2016-03-02T13:19:59Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: /* バージョンによる違い */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;かなり忘れつつある Python について。&lt;br /&gt;
&lt;br /&gt;
== 参考リンク ==&lt;br /&gt;
* [http://www.python.jp/doc/release/index.html Python 2.5 ドキュメント - 19th September, 2006]&lt;br /&gt;
* [http://www.unixuser.org/~euske/doc/python/tutorial0917.html Python 講習会 資料] ― 古いけど、まとまっていて見やすい。&lt;br /&gt;
&lt;br /&gt;
== 覚え書き ==&lt;br /&gt;
* グローバル変数など、外側のスコープにある変数は読み出し専用となる。&amp;lt;code&amp;gt;global&amp;lt;/code&amp;gt; 文を使えば代入できる。&lt;br /&gt;
* 一定時間待ちを入れる場合は、&amp;lt;code&amp;gt;import time&amp;lt;/code&amp;gt; して &amp;lt;code&amp;gt;time.sleep(n)&amp;lt;/code&amp;gt; を使う。&lt;br /&gt;
* gzip コマンドで圧縮したデータを zlib モジュールでは展開できない (ヘッダが異なるため)。gzip + StringIO モジュールを使って回避する。&lt;br /&gt;
* 対話モードでは、最後に表示された結果は変数 &amp;lt;code&amp;gt;_&amp;lt;/code&amp;gt; に代入される。&lt;br /&gt;
* &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt; の末尾にコンマを入れると、改行されない。&amp;lt;code&amp;gt;print &amp;quot;hoge&amp;quot;,&amp;lt;/code&amp;gt;&lt;br /&gt;
* 一つの要素のタプルは、値の後ろにコンマを付ける。&amp;lt;code&amp;gt;(&amp;quot;hoge&amp;quot;,)&amp;lt;/code&amp;gt;&lt;br /&gt;
* 複数の比較演算子を &amp;lt;code&amp;gt;a &amp;lt; b == c&amp;lt;/code&amp;gt; のように書ける素晴らしい言語。&lt;br /&gt;
* &amp;lt;code&amp;gt;print &amp;gt;&amp;gt; sys.stderr, ...&amp;lt;/code&amp;gt; で標準エラーに出力&lt;br /&gt;
&lt;br /&gt;
== 文字列 ==&lt;br /&gt;
* シングルクォートとダブルクオートに違いはない。&lt;br /&gt;
** エスケープシーケンスを無視する場合は raw 文字列を使う。&amp;lt;code&amp;gt;r&amp;quot;raw 文字列\n&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* 三重クォート &amp;lt;nowiki&amp;gt;&amp;quot;&amp;quot;&amp;quot; あるいは '''&amp;lt;/nowiki&amp;gt; は改行をそのまま含めることができる。&lt;br /&gt;
* 連結は + 演算子を用いる。&lt;br /&gt;
** 文字列リテラルは、列記で連結可能。&amp;lt;code&amp;gt;&amp;quot;ho&amp;quot; &amp;quot;ge&amp;quot; → &amp;quot;hoge&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; 組み込み関数でバイト数を得る。&lt;br /&gt;
** マルチバイトを考慮した文字数は &amp;lt;code&amp;gt;len(str.decode(&amp;quot;UTF-8&amp;quot;))&amp;lt;/code&amp;gt; で得ることができる。&lt;br /&gt;
* &amp;lt;code&amp;gt;in&amp;lt;/code&amp;gt; で包含判定ができる&lt;br /&gt;
* &amp;lt;code&amp;gt;int(str)&amp;lt;/code&amp;gt; で整数に変換。第 2 引き数で基数指定可能。&lt;br /&gt;
&lt;br /&gt;
=== スライス ===&lt;br /&gt;
文字の間に添字を置くとわかりやすい。&lt;br /&gt;
 s = &amp;quot;H e l l o&amp;quot;&lt;br /&gt;
     0 1 2 3 4 5&lt;br /&gt;
   - 5 4 3 2 1   ← ここは -0 でないことに注意!! (0 = -0 のため)&lt;br /&gt;
 &lt;br /&gt;
 s[1]   → 'e'&lt;br /&gt;
 s[:3]  → 'Hel' # 先頭 3 文字&lt;br /&gt;
 s[3:]  → 'lo'&lt;br /&gt;
 s[-4]  → 'e'&lt;br /&gt;
 s[-3:] → 'llo' # 末尾 3 文字&lt;br /&gt;
 s[:-1] → 'Hell' # 最後の 1 文字を削る (改行削りに有用)&lt;br /&gt;
 s[:]   → コピーを作る&lt;br /&gt;
&lt;br /&gt;
== リスト ==&lt;br /&gt;
書くのが面倒なくらい柔軟性に富んだデータ型である。&lt;br /&gt;
* 変更可能 (mutable)&lt;br /&gt;
* 入れ子可能 (リストの要素をリストにできる)&lt;br /&gt;
* 文字列と同様のスライス表現で操作できる。&lt;br /&gt;
* &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; でリストの長さを得る。&lt;br /&gt;
&lt;br /&gt;
 a = []          # 初期化、クリア&lt;br /&gt;
 a = [0, 3, 5]&lt;br /&gt;
 a[1:1] = [1, 2] # 挿入 → [0, 1, 2, 3, 5]&lt;br /&gt;
 a[1:4] = []     # 削除 → [0, 5]&lt;br /&gt;
 a = a + [6, 7]  # 連結 → [0, 5, 6, 7]&lt;br /&gt;
 a = a * 2       # 連続 → [0, 5, 6, 7, 0, 5, 6, 7]&lt;br /&gt;
&lt;br /&gt;
* [http://www.python.jp/doc/2.5/tut/node7.html 5. データ構造]&lt;br /&gt;
&lt;br /&gt;
== バージョンによる違い ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center&amp;quot;&lt;br /&gt;
! !! RHEL5 !! RHEL6 !! RHEL7&lt;br /&gt;
|-&lt;br /&gt;
! Python&lt;br /&gt;
| 2.4.3 || 2.6.6 || 2.7.5&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/reference/compound_stmts.html#the-with-statement with 文]&lt;br /&gt;
| x || o || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/reference/expressions.html#conditional-expressions 条件演算]&amp;lt;br /&amp;gt;(三項演算子)&lt;br /&gt;
| x || o || o&lt;br /&gt;
|-&lt;br /&gt;
! リスト内包表記&lt;br /&gt;
| o || o || o&lt;br /&gt;
|-&lt;br /&gt;
! 辞書内包表記&lt;br /&gt;
| x || x || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/reference/expressions.html#generator-expressions ジェネレータ式]&lt;br /&gt;
| o || o || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/library/functions.html#enumerate enumerate 関数]&amp;lt;br /&amp;gt;の start 引数&lt;br /&gt;
| x || o || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/reference/compound_stmts.html#the-try-statement try... except... finally]&lt;br /&gt;
| x || o || o&lt;br /&gt;
|-&lt;br /&gt;
! sort/[http://docs.python.jp/2/library/functions.html#sorted sorted] の key 引数&lt;br /&gt;
| o || o || o&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
=== リストを N 分割する ===&lt;br /&gt;
ちょうど N 個に分割するわけではなく、最大で N 個なので注意。&lt;br /&gt;
&lt;br /&gt;
 def split_list(list, n):&lt;br /&gt;
     l = len(list)&lt;br /&gt;
     size = l / n + (l % n &amp;gt; 0)&lt;br /&gt;
     return [ list[i:i+size] for i in range(0, l, size) ]&lt;br /&gt;
&lt;br /&gt;
こんな感じで分割したリストのリストになる。&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; l = [1,2,3,4,5,7,8,9,10]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 2)&lt;br /&gt;
 [[1, 2, 3, 4, 5], [7, 8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 3)&lt;br /&gt;
 [[1, 2, 3], [4, 5, 7], [8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 4)&lt;br /&gt;
 [[1, 2, 3], [4, 5, 7], [8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 5)&lt;br /&gt;
 [[1, 2], [3, 4], [5, 7], [8, 9], [10]]&lt;br /&gt;
&lt;br /&gt;
=== モジュールに定義された名前のリスト ===&lt;br /&gt;
&lt;br /&gt;
dir 関数を使う。(忘れやすい)&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir()&lt;br /&gt;
 ['__builtins__', '__doc__', '__name__', '__package__']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; import time&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir()&lt;br /&gt;
 ['__builtins__', '__doc__', '__name__', '__package__', 'time']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir(time)&lt;br /&gt;
 ['__doc__', '__file__', '__name__', '__package__', 'accept2dyear', 'altzone', 'asctime', 'clock',&lt;br /&gt;
 'ctime', 'daylight', 'gmtime', 'localtime', 'mktime', 'sleep', 'strftime', 'strptime',&lt;br /&gt;
 'struct_time', 'time', 'timezone', 'tzname', 'tzset']&lt;br /&gt;
&lt;br /&gt;
=== socket の setsockopt() を使う ===&lt;br /&gt;
&lt;br /&gt;
* SO_KEEPALIVE の場合&lt;br /&gt;
&lt;br /&gt;
 import socket&lt;br /&gt;
 s = socket.socket()&lt;br /&gt;
 s.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)&lt;br /&gt;
&lt;br /&gt;
* SO_LINGER の場合&lt;br /&gt;
&lt;br /&gt;
 import socket&lt;br /&gt;
 import struct&lt;br /&gt;
 s = socket.socket()&lt;br /&gt;
 s.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack('ii', 1, 30))&lt;br /&gt;
&lt;br /&gt;
== テンプレート ==&lt;br /&gt;
&lt;br /&gt;
=== awk 風 Python スクリプトテンプレート ===&lt;br /&gt;
&lt;br /&gt;
テキスト処理を何でもかんでも簡単な awk で済ませちゃうクセがついてしまったので、&lt;br /&gt;
自分に Python を使うように仕向けるための awk 風テンプレート。&lt;br /&gt;
&lt;br /&gt;
FS, NR, FILENAME, FNR, NF, s[0], s[1..NF] が利用可能。&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env python&lt;br /&gt;
 import sys&lt;br /&gt;
 &lt;br /&gt;
 if len(sys.argv) == 1:&lt;br /&gt;
     files = [ sys.stdin ]&lt;br /&gt;
 else:&lt;br /&gt;
     files = [ open(f) for f in sys.argv[1:] ]&lt;br /&gt;
 &lt;br /&gt;
 ### BEGIN {&lt;br /&gt;
 FS = None&lt;br /&gt;
 &lt;br /&gt;
 ### }&lt;br /&gt;
 &lt;br /&gt;
 NR = 0&lt;br /&gt;
 for file in files:&lt;br /&gt;
     FNR = 0; FILENAME = file.name&lt;br /&gt;
     for line in file:&lt;br /&gt;
         NR += 1; FNR += 1&lt;br /&gt;
         s = line.split(FS)&lt;br /&gt;
         s[0:0] = [ line[:-1] ]&lt;br /&gt;
         NF = len(s)&lt;br /&gt;
         # print NR, FILENAME, FNR, NF, s&lt;br /&gt;
         ### {&lt;br /&gt;
 &lt;br /&gt;
         ### }&lt;br /&gt;
 &lt;br /&gt;
 ### END {&lt;br /&gt;
 &lt;br /&gt;
 ### }&lt;br /&gt;
&lt;br /&gt;
=== ファイルか標準入力から読む ===&lt;br /&gt;
&lt;br /&gt;
ファイルが指定されれば、それらをすべて処理し、指定されなければ標準入力から読む。&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 &lt;br /&gt;
 if len(sys.argv) == 1:&lt;br /&gt;
     files = [ sys.stdin ]&lt;br /&gt;
 else:&lt;br /&gt;
     files = [ open(f) for f in sys.argv[1:] ]&lt;br /&gt;
 &lt;br /&gt;
 for file in files:&lt;br /&gt;
     ...&lt;br /&gt;
&lt;br /&gt;
* [http://docs.python.jp/2/library/fileinput.html fileinput モジュール] というのがあった…&lt;br /&gt;
&lt;br /&gt;
=== getopt ===&lt;br /&gt;
どの言語でもこいつだけはテンプレート化する必要がある。。&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 import getopt&lt;br /&gt;
 &lt;br /&gt;
 def usage(exit_code):&lt;br /&gt;
     out = (exit_code and sys.stderr) or sys.stdout&lt;br /&gt;
     print &amp;gt;&amp;gt; out, 'Usage: %s [-a] [-b str]' % sys.argv[0]&lt;br /&gt;
     sys.exit(exit_code)&lt;br /&gt;
 &lt;br /&gt;
 try:&lt;br /&gt;
     opts, args = getopt.getopt(sys.argv[1:], 'ab:h')&lt;br /&gt;
 except getopt.GetoptError:&lt;br /&gt;
     usage(1)&lt;br /&gt;
 &lt;br /&gt;
 (opt_a, opt_b) = (False, None) # defaults&lt;br /&gt;
 for (opt, val) in opts:&lt;br /&gt;
     if opt == '-a':&lt;br /&gt;
         opt_a = True&lt;br /&gt;
     elif opt == '-b':&lt;br /&gt;
         opt_b = val&lt;br /&gt;
     elif opt == '-h':&lt;br /&gt;
          usage(0)&lt;br /&gt;
     else:&lt;br /&gt;
          usage(1)&lt;br /&gt;
 &lt;br /&gt;
 for arg in args: # remainder&lt;br /&gt;
     ...&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=Python&amp;diff=1077</id>
		<title>Python</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=Python&amp;diff=1077"/>
				<updated>2016-02-16T23:36:27Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: /* バージョンによる違い */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;かなり忘れつつある Python について。&lt;br /&gt;
&lt;br /&gt;
== 参考リンク ==&lt;br /&gt;
* [http://www.python.jp/doc/release/index.html Python 2.5 ドキュメント - 19th September, 2006]&lt;br /&gt;
* [http://www.unixuser.org/~euske/doc/python/tutorial0917.html Python 講習会 資料] ― 古いけど、まとまっていて見やすい。&lt;br /&gt;
&lt;br /&gt;
== 覚え書き ==&lt;br /&gt;
* グローバル変数など、外側のスコープにある変数は読み出し専用となる。&amp;lt;code&amp;gt;global&amp;lt;/code&amp;gt; 文を使えば代入できる。&lt;br /&gt;
* 一定時間待ちを入れる場合は、&amp;lt;code&amp;gt;import time&amp;lt;/code&amp;gt; して &amp;lt;code&amp;gt;time.sleep(n)&amp;lt;/code&amp;gt; を使う。&lt;br /&gt;
* gzip コマンドで圧縮したデータを zlib モジュールでは展開できない (ヘッダが異なるため)。gzip + StringIO モジュールを使って回避する。&lt;br /&gt;
* 対話モードでは、最後に表示された結果は変数 &amp;lt;code&amp;gt;_&amp;lt;/code&amp;gt; に代入される。&lt;br /&gt;
* &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt; の末尾にコンマを入れると、改行されない。&amp;lt;code&amp;gt;print &amp;quot;hoge&amp;quot;,&amp;lt;/code&amp;gt;&lt;br /&gt;
* 一つの要素のタプルは、値の後ろにコンマを付ける。&amp;lt;code&amp;gt;(&amp;quot;hoge&amp;quot;,)&amp;lt;/code&amp;gt;&lt;br /&gt;
* 複数の比較演算子を &amp;lt;code&amp;gt;a &amp;lt; b == c&amp;lt;/code&amp;gt; のように書ける素晴らしい言語。&lt;br /&gt;
* &amp;lt;code&amp;gt;print &amp;gt;&amp;gt; sys.stderr, ...&amp;lt;/code&amp;gt; で標準エラーに出力&lt;br /&gt;
&lt;br /&gt;
== 文字列 ==&lt;br /&gt;
* シングルクォートとダブルクオートに違いはない。&lt;br /&gt;
** エスケープシーケンスを無視する場合は raw 文字列を使う。&amp;lt;code&amp;gt;r&amp;quot;raw 文字列\n&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* 三重クォート &amp;lt;nowiki&amp;gt;&amp;quot;&amp;quot;&amp;quot; あるいは '''&amp;lt;/nowiki&amp;gt; は改行をそのまま含めることができる。&lt;br /&gt;
* 連結は + 演算子を用いる。&lt;br /&gt;
** 文字列リテラルは、列記で連結可能。&amp;lt;code&amp;gt;&amp;quot;ho&amp;quot; &amp;quot;ge&amp;quot; → &amp;quot;hoge&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; 組み込み関数でバイト数を得る。&lt;br /&gt;
** マルチバイトを考慮した文字数は &amp;lt;code&amp;gt;len(str.decode(&amp;quot;UTF-8&amp;quot;))&amp;lt;/code&amp;gt; で得ることができる。&lt;br /&gt;
* &amp;lt;code&amp;gt;in&amp;lt;/code&amp;gt; で包含判定ができる&lt;br /&gt;
* &amp;lt;code&amp;gt;int(str)&amp;lt;/code&amp;gt; で整数に変換。第 2 引き数で基数指定可能。&lt;br /&gt;
&lt;br /&gt;
=== スライス ===&lt;br /&gt;
文字の間に添字を置くとわかりやすい。&lt;br /&gt;
 s = &amp;quot;H e l l o&amp;quot;&lt;br /&gt;
     0 1 2 3 4 5&lt;br /&gt;
   - 5 4 3 2 1   ← ここは -0 でないことに注意!! (0 = -0 のため)&lt;br /&gt;
 &lt;br /&gt;
 s[1]   → 'e'&lt;br /&gt;
 s[:3]  → 'Hel' # 先頭 3 文字&lt;br /&gt;
 s[3:]  → 'lo'&lt;br /&gt;
 s[-4]  → 'e'&lt;br /&gt;
 s[-3:] → 'llo' # 末尾 3 文字&lt;br /&gt;
 s[:-1] → 'Hell' # 最後の 1 文字を削る (改行削りに有用)&lt;br /&gt;
 s[:]   → コピーを作る&lt;br /&gt;
&lt;br /&gt;
== リスト ==&lt;br /&gt;
書くのが面倒なくらい柔軟性に富んだデータ型である。&lt;br /&gt;
* 変更可能 (mutable)&lt;br /&gt;
* 入れ子可能 (リストの要素をリストにできる)&lt;br /&gt;
* 文字列と同様のスライス表現で操作できる。&lt;br /&gt;
* &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; でリストの長さを得る。&lt;br /&gt;
&lt;br /&gt;
 a = []          # 初期化、クリア&lt;br /&gt;
 a = [0, 3, 5]&lt;br /&gt;
 a[1:1] = [1, 2] # 挿入 → [0, 1, 2, 3, 5]&lt;br /&gt;
 a[1:4] = []     # 削除 → [0, 5]&lt;br /&gt;
 a = a + [6, 7]  # 連結 → [0, 5, 6, 7]&lt;br /&gt;
 a = a * 2       # 連続 → [0, 5, 6, 7, 0, 5, 6, 7]&lt;br /&gt;
&lt;br /&gt;
* [http://www.python.jp/doc/2.5/tut/node7.html 5. データ構造]&lt;br /&gt;
&lt;br /&gt;
== バージョンによる違い ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center&amp;quot;&lt;br /&gt;
! !! RHEL5 !! RHEL6 !! RHEL7&lt;br /&gt;
|-&lt;br /&gt;
! Python&lt;br /&gt;
| 2.4.3 || 2.6.6 || 2.7.5&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/reference/compound_stmts.html#the-with-statement with 文]&lt;br /&gt;
| x || o || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/reference/expressions.html#conditional-expressions 条件演算]&amp;lt;br /&amp;gt;(三項演算子)&lt;br /&gt;
| x || o || o&lt;br /&gt;
|-&lt;br /&gt;
! リスト内包表記&lt;br /&gt;
| o || o || o&lt;br /&gt;
|-&lt;br /&gt;
! 辞書内包表記&lt;br /&gt;
| x || x || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/reference/expressions.html#generator-expressions ジェネレータ式]&lt;br /&gt;
| o || o || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/library/functions.html#enumerate enumerate 関数]&amp;lt;br /&amp;gt;の start 引数&lt;br /&gt;
| x || o || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/reference/compound_stmts.html#the-try-statement try... except... finally]&lt;br /&gt;
| x || o || o&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
=== リストを N 分割する ===&lt;br /&gt;
ちょうど N 個に分割するわけではなく、最大で N 個なので注意。&lt;br /&gt;
&lt;br /&gt;
 def split_list(list, n):&lt;br /&gt;
     l = len(list)&lt;br /&gt;
     size = l / n + (l % n &amp;gt; 0)&lt;br /&gt;
     return [ list[i:i+size] for i in range(0, l, size) ]&lt;br /&gt;
&lt;br /&gt;
こんな感じで分割したリストのリストになる。&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; l = [1,2,3,4,5,7,8,9,10]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 2)&lt;br /&gt;
 [[1, 2, 3, 4, 5], [7, 8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 3)&lt;br /&gt;
 [[1, 2, 3], [4, 5, 7], [8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 4)&lt;br /&gt;
 [[1, 2, 3], [4, 5, 7], [8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 5)&lt;br /&gt;
 [[1, 2], [3, 4], [5, 7], [8, 9], [10]]&lt;br /&gt;
&lt;br /&gt;
=== モジュールに定義された名前のリスト ===&lt;br /&gt;
&lt;br /&gt;
dir 関数を使う。(忘れやすい)&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir()&lt;br /&gt;
 ['__builtins__', '__doc__', '__name__', '__package__']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; import time&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir()&lt;br /&gt;
 ['__builtins__', '__doc__', '__name__', '__package__', 'time']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir(time)&lt;br /&gt;
 ['__doc__', '__file__', '__name__', '__package__', 'accept2dyear', 'altzone', 'asctime', 'clock',&lt;br /&gt;
 'ctime', 'daylight', 'gmtime', 'localtime', 'mktime', 'sleep', 'strftime', 'strptime',&lt;br /&gt;
 'struct_time', 'time', 'timezone', 'tzname', 'tzset']&lt;br /&gt;
&lt;br /&gt;
=== socket の setsockopt() を使う ===&lt;br /&gt;
&lt;br /&gt;
* SO_KEEPALIVE の場合&lt;br /&gt;
&lt;br /&gt;
 import socket&lt;br /&gt;
 s = socket.socket()&lt;br /&gt;
 s.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)&lt;br /&gt;
&lt;br /&gt;
* SO_LINGER の場合&lt;br /&gt;
&lt;br /&gt;
 import socket&lt;br /&gt;
 import struct&lt;br /&gt;
 s = socket.socket()&lt;br /&gt;
 s.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack('ii', 1, 30))&lt;br /&gt;
&lt;br /&gt;
== テンプレート ==&lt;br /&gt;
&lt;br /&gt;
=== awk 風 Python スクリプトテンプレート ===&lt;br /&gt;
&lt;br /&gt;
テキスト処理を何でもかんでも簡単な awk で済ませちゃうクセがついてしまったので、&lt;br /&gt;
自分に Python を使うように仕向けるための awk 風テンプレート。&lt;br /&gt;
&lt;br /&gt;
FS, NR, FILENAME, FNR, NF, s[0], s[1..NF] が利用可能。&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env python&lt;br /&gt;
 import sys&lt;br /&gt;
 &lt;br /&gt;
 if len(sys.argv) == 1:&lt;br /&gt;
     files = [ sys.stdin ]&lt;br /&gt;
 else:&lt;br /&gt;
     files = [ open(f) for f in sys.argv[1:] ]&lt;br /&gt;
 &lt;br /&gt;
 ### BEGIN {&lt;br /&gt;
 FS = None&lt;br /&gt;
 &lt;br /&gt;
 ### }&lt;br /&gt;
 &lt;br /&gt;
 NR = 0&lt;br /&gt;
 for file in files:&lt;br /&gt;
     FNR = 0; FILENAME = file.name&lt;br /&gt;
     for line in file:&lt;br /&gt;
         NR += 1; FNR += 1&lt;br /&gt;
         s = line.split(FS)&lt;br /&gt;
         s[0:0] = [ line[:-1] ]&lt;br /&gt;
         NF = len(s)&lt;br /&gt;
         # print NR, FILENAME, FNR, NF, s&lt;br /&gt;
         ### {&lt;br /&gt;
 &lt;br /&gt;
         ### }&lt;br /&gt;
 &lt;br /&gt;
 ### END {&lt;br /&gt;
 &lt;br /&gt;
 ### }&lt;br /&gt;
&lt;br /&gt;
=== ファイルか標準入力から読む ===&lt;br /&gt;
&lt;br /&gt;
ファイルが指定されれば、それらをすべて処理し、指定されなければ標準入力から読む。&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 &lt;br /&gt;
 if len(sys.argv) == 1:&lt;br /&gt;
     files = [ sys.stdin ]&lt;br /&gt;
 else:&lt;br /&gt;
     files = [ open(f) for f in sys.argv[1:] ]&lt;br /&gt;
 &lt;br /&gt;
 for file in files:&lt;br /&gt;
     ...&lt;br /&gt;
&lt;br /&gt;
* [http://docs.python.jp/2/library/fileinput.html fileinput モジュール] というのがあった…&lt;br /&gt;
&lt;br /&gt;
=== getopt ===&lt;br /&gt;
どの言語でもこいつだけはテンプレート化する必要がある。。&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 import getopt&lt;br /&gt;
 &lt;br /&gt;
 def usage(exit_code):&lt;br /&gt;
     out = (exit_code and sys.stderr) or sys.stdout&lt;br /&gt;
     print &amp;gt;&amp;gt; out, 'Usage: %s [-a] [-b str]' % sys.argv[0]&lt;br /&gt;
     sys.exit(exit_code)&lt;br /&gt;
 &lt;br /&gt;
 try:&lt;br /&gt;
     opts, args = getopt.getopt(sys.argv[1:], 'ab:h')&lt;br /&gt;
 except getopt.GetoptError:&lt;br /&gt;
     usage(1)&lt;br /&gt;
 &lt;br /&gt;
 (opt_a, opt_b) = (False, None) # defaults&lt;br /&gt;
 for (opt, val) in opts:&lt;br /&gt;
     if opt == '-a':&lt;br /&gt;
         opt_a = True&lt;br /&gt;
     elif opt == '-b':&lt;br /&gt;
         opt_b = val&lt;br /&gt;
     elif opt == '-h':&lt;br /&gt;
          usage(0)&lt;br /&gt;
     else:&lt;br /&gt;
          usage(1)&lt;br /&gt;
 &lt;br /&gt;
 for arg in args: # remainder&lt;br /&gt;
     ...&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=Python&amp;diff=1076</id>
		<title>Python</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=Python&amp;diff=1076"/>
				<updated>2016-02-16T23:31:48Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: /* バージョンによる違い */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;かなり忘れつつある Python について。&lt;br /&gt;
&lt;br /&gt;
== 参考リンク ==&lt;br /&gt;
* [http://www.python.jp/doc/release/index.html Python 2.5 ドキュメント - 19th September, 2006]&lt;br /&gt;
* [http://www.unixuser.org/~euske/doc/python/tutorial0917.html Python 講習会 資料] ― 古いけど、まとまっていて見やすい。&lt;br /&gt;
&lt;br /&gt;
== 覚え書き ==&lt;br /&gt;
* グローバル変数など、外側のスコープにある変数は読み出し専用となる。&amp;lt;code&amp;gt;global&amp;lt;/code&amp;gt; 文を使えば代入できる。&lt;br /&gt;
* 一定時間待ちを入れる場合は、&amp;lt;code&amp;gt;import time&amp;lt;/code&amp;gt; して &amp;lt;code&amp;gt;time.sleep(n)&amp;lt;/code&amp;gt; を使う。&lt;br /&gt;
* gzip コマンドで圧縮したデータを zlib モジュールでは展開できない (ヘッダが異なるため)。gzip + StringIO モジュールを使って回避する。&lt;br /&gt;
* 対話モードでは、最後に表示された結果は変数 &amp;lt;code&amp;gt;_&amp;lt;/code&amp;gt; に代入される。&lt;br /&gt;
* &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt; の末尾にコンマを入れると、改行されない。&amp;lt;code&amp;gt;print &amp;quot;hoge&amp;quot;,&amp;lt;/code&amp;gt;&lt;br /&gt;
* 一つの要素のタプルは、値の後ろにコンマを付ける。&amp;lt;code&amp;gt;(&amp;quot;hoge&amp;quot;,)&amp;lt;/code&amp;gt;&lt;br /&gt;
* 複数の比較演算子を &amp;lt;code&amp;gt;a &amp;lt; b == c&amp;lt;/code&amp;gt; のように書ける素晴らしい言語。&lt;br /&gt;
* &amp;lt;code&amp;gt;print &amp;gt;&amp;gt; sys.stderr, ...&amp;lt;/code&amp;gt; で標準エラーに出力&lt;br /&gt;
&lt;br /&gt;
== 文字列 ==&lt;br /&gt;
* シングルクォートとダブルクオートに違いはない。&lt;br /&gt;
** エスケープシーケンスを無視する場合は raw 文字列を使う。&amp;lt;code&amp;gt;r&amp;quot;raw 文字列\n&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* 三重クォート &amp;lt;nowiki&amp;gt;&amp;quot;&amp;quot;&amp;quot; あるいは '''&amp;lt;/nowiki&amp;gt; は改行をそのまま含めることができる。&lt;br /&gt;
* 連結は + 演算子を用いる。&lt;br /&gt;
** 文字列リテラルは、列記で連結可能。&amp;lt;code&amp;gt;&amp;quot;ho&amp;quot; &amp;quot;ge&amp;quot; → &amp;quot;hoge&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; 組み込み関数でバイト数を得る。&lt;br /&gt;
** マルチバイトを考慮した文字数は &amp;lt;code&amp;gt;len(str.decode(&amp;quot;UTF-8&amp;quot;))&amp;lt;/code&amp;gt; で得ることができる。&lt;br /&gt;
* &amp;lt;code&amp;gt;in&amp;lt;/code&amp;gt; で包含判定ができる&lt;br /&gt;
* &amp;lt;code&amp;gt;int(str)&amp;lt;/code&amp;gt; で整数に変換。第 2 引き数で基数指定可能。&lt;br /&gt;
&lt;br /&gt;
=== スライス ===&lt;br /&gt;
文字の間に添字を置くとわかりやすい。&lt;br /&gt;
 s = &amp;quot;H e l l o&amp;quot;&lt;br /&gt;
     0 1 2 3 4 5&lt;br /&gt;
   - 5 4 3 2 1   ← ここは -0 でないことに注意!! (0 = -0 のため)&lt;br /&gt;
 &lt;br /&gt;
 s[1]   → 'e'&lt;br /&gt;
 s[:3]  → 'Hel' # 先頭 3 文字&lt;br /&gt;
 s[3:]  → 'lo'&lt;br /&gt;
 s[-4]  → 'e'&lt;br /&gt;
 s[-3:] → 'llo' # 末尾 3 文字&lt;br /&gt;
 s[:-1] → 'Hell' # 最後の 1 文字を削る (改行削りに有用)&lt;br /&gt;
 s[:]   → コピーを作る&lt;br /&gt;
&lt;br /&gt;
== リスト ==&lt;br /&gt;
書くのが面倒なくらい柔軟性に富んだデータ型である。&lt;br /&gt;
* 変更可能 (mutable)&lt;br /&gt;
* 入れ子可能 (リストの要素をリストにできる)&lt;br /&gt;
* 文字列と同様のスライス表現で操作できる。&lt;br /&gt;
* &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; でリストの長さを得る。&lt;br /&gt;
&lt;br /&gt;
 a = []          # 初期化、クリア&lt;br /&gt;
 a = [0, 3, 5]&lt;br /&gt;
 a[1:1] = [1, 2] # 挿入 → [0, 1, 2, 3, 5]&lt;br /&gt;
 a[1:4] = []     # 削除 → [0, 5]&lt;br /&gt;
 a = a + [6, 7]  # 連結 → [0, 5, 6, 7]&lt;br /&gt;
 a = a * 2       # 連続 → [0, 5, 6, 7, 0, 5, 6, 7]&lt;br /&gt;
&lt;br /&gt;
* [http://www.python.jp/doc/2.5/tut/node7.html 5. データ構造]&lt;br /&gt;
&lt;br /&gt;
== バージョンによる違い ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center&amp;quot;&lt;br /&gt;
! !! RHEL5 !! RHEL6 !! RHEL7&lt;br /&gt;
|-&lt;br /&gt;
! Python&lt;br /&gt;
| 2.4.3 || 2.6.6 || 2.7.5&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/reference/compound_stmts.html#the-with-statement with 文]&lt;br /&gt;
| x || o || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/reference/expressions.html#conditional-expressions 条件演算]&amp;lt;br /&amp;gt;(三項演算子)&lt;br /&gt;
| x || o || o&lt;br /&gt;
|-&lt;br /&gt;
! リスト内包表記&lt;br /&gt;
| o || o || o&lt;br /&gt;
|-&lt;br /&gt;
! 辞書内包表記&lt;br /&gt;
| x || x || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/reference/expressions.html#generator-expressions ジェネレータ式]&lt;br /&gt;
| o || o || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/library/functions.html#enumerate enumerate 関数]&amp;lt;br /&amp;gt;の start 引数&lt;br /&gt;
| x || o || o&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
=== リストを N 分割する ===&lt;br /&gt;
ちょうど N 個に分割するわけではなく、最大で N 個なので注意。&lt;br /&gt;
&lt;br /&gt;
 def split_list(list, n):&lt;br /&gt;
     l = len(list)&lt;br /&gt;
     size = l / n + (l % n &amp;gt; 0)&lt;br /&gt;
     return [ list[i:i+size] for i in range(0, l, size) ]&lt;br /&gt;
&lt;br /&gt;
こんな感じで分割したリストのリストになる。&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; l = [1,2,3,4,5,7,8,9,10]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 2)&lt;br /&gt;
 [[1, 2, 3, 4, 5], [7, 8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 3)&lt;br /&gt;
 [[1, 2, 3], [4, 5, 7], [8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 4)&lt;br /&gt;
 [[1, 2, 3], [4, 5, 7], [8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 5)&lt;br /&gt;
 [[1, 2], [3, 4], [5, 7], [8, 9], [10]]&lt;br /&gt;
&lt;br /&gt;
=== モジュールに定義された名前のリスト ===&lt;br /&gt;
&lt;br /&gt;
dir 関数を使う。(忘れやすい)&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir()&lt;br /&gt;
 ['__builtins__', '__doc__', '__name__', '__package__']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; import time&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir()&lt;br /&gt;
 ['__builtins__', '__doc__', '__name__', '__package__', 'time']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir(time)&lt;br /&gt;
 ['__doc__', '__file__', '__name__', '__package__', 'accept2dyear', 'altzone', 'asctime', 'clock',&lt;br /&gt;
 'ctime', 'daylight', 'gmtime', 'localtime', 'mktime', 'sleep', 'strftime', 'strptime',&lt;br /&gt;
 'struct_time', 'time', 'timezone', 'tzname', 'tzset']&lt;br /&gt;
&lt;br /&gt;
=== socket の setsockopt() を使う ===&lt;br /&gt;
&lt;br /&gt;
* SO_KEEPALIVE の場合&lt;br /&gt;
&lt;br /&gt;
 import socket&lt;br /&gt;
 s = socket.socket()&lt;br /&gt;
 s.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)&lt;br /&gt;
&lt;br /&gt;
* SO_LINGER の場合&lt;br /&gt;
&lt;br /&gt;
 import socket&lt;br /&gt;
 import struct&lt;br /&gt;
 s = socket.socket()&lt;br /&gt;
 s.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack('ii', 1, 30))&lt;br /&gt;
&lt;br /&gt;
== テンプレート ==&lt;br /&gt;
&lt;br /&gt;
=== awk 風 Python スクリプトテンプレート ===&lt;br /&gt;
&lt;br /&gt;
テキスト処理を何でもかんでも簡単な awk で済ませちゃうクセがついてしまったので、&lt;br /&gt;
自分に Python を使うように仕向けるための awk 風テンプレート。&lt;br /&gt;
&lt;br /&gt;
FS, NR, FILENAME, FNR, NF, s[0], s[1..NF] が利用可能。&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env python&lt;br /&gt;
 import sys&lt;br /&gt;
 &lt;br /&gt;
 if len(sys.argv) == 1:&lt;br /&gt;
     files = [ sys.stdin ]&lt;br /&gt;
 else:&lt;br /&gt;
     files = [ open(f) for f in sys.argv[1:] ]&lt;br /&gt;
 &lt;br /&gt;
 ### BEGIN {&lt;br /&gt;
 FS = None&lt;br /&gt;
 &lt;br /&gt;
 ### }&lt;br /&gt;
 &lt;br /&gt;
 NR = 0&lt;br /&gt;
 for file in files:&lt;br /&gt;
     FNR = 0; FILENAME = file.name&lt;br /&gt;
     for line in file:&lt;br /&gt;
         NR += 1; FNR += 1&lt;br /&gt;
         s = line.split(FS)&lt;br /&gt;
         s[0:0] = [ line[:-1] ]&lt;br /&gt;
         NF = len(s)&lt;br /&gt;
         # print NR, FILENAME, FNR, NF, s&lt;br /&gt;
         ### {&lt;br /&gt;
 &lt;br /&gt;
         ### }&lt;br /&gt;
 &lt;br /&gt;
 ### END {&lt;br /&gt;
 &lt;br /&gt;
 ### }&lt;br /&gt;
&lt;br /&gt;
=== ファイルか標準入力から読む ===&lt;br /&gt;
&lt;br /&gt;
ファイルが指定されれば、それらをすべて処理し、指定されなければ標準入力から読む。&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 &lt;br /&gt;
 if len(sys.argv) == 1:&lt;br /&gt;
     files = [ sys.stdin ]&lt;br /&gt;
 else:&lt;br /&gt;
     files = [ open(f) for f in sys.argv[1:] ]&lt;br /&gt;
 &lt;br /&gt;
 for file in files:&lt;br /&gt;
     ...&lt;br /&gt;
&lt;br /&gt;
* [http://docs.python.jp/2/library/fileinput.html fileinput モジュール] というのがあった…&lt;br /&gt;
&lt;br /&gt;
=== getopt ===&lt;br /&gt;
どの言語でもこいつだけはテンプレート化する必要がある。。&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 import getopt&lt;br /&gt;
 &lt;br /&gt;
 def usage(exit_code):&lt;br /&gt;
     out = (exit_code and sys.stderr) or sys.stdout&lt;br /&gt;
     print &amp;gt;&amp;gt; out, 'Usage: %s [-a] [-b str]' % sys.argv[0]&lt;br /&gt;
     sys.exit(exit_code)&lt;br /&gt;
 &lt;br /&gt;
 try:&lt;br /&gt;
     opts, args = getopt.getopt(sys.argv[1:], 'ab:h')&lt;br /&gt;
 except getopt.GetoptError:&lt;br /&gt;
     usage(1)&lt;br /&gt;
 &lt;br /&gt;
 (opt_a, opt_b) = (False, None) # defaults&lt;br /&gt;
 for (opt, val) in opts:&lt;br /&gt;
     if opt == '-a':&lt;br /&gt;
         opt_a = True&lt;br /&gt;
     elif opt == '-b':&lt;br /&gt;
         opt_b = val&lt;br /&gt;
     elif opt == '-h':&lt;br /&gt;
          usage(0)&lt;br /&gt;
     else:&lt;br /&gt;
          usage(1)&lt;br /&gt;
 &lt;br /&gt;
 for arg in args: # remainder&lt;br /&gt;
     ...&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=Python&amp;diff=1075</id>
		<title>Python</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=Python&amp;diff=1075"/>
				<updated>2016-02-16T23:26:58Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: /* バージョンによる違い */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;かなり忘れつつある Python について。&lt;br /&gt;
&lt;br /&gt;
== 参考リンク ==&lt;br /&gt;
* [http://www.python.jp/doc/release/index.html Python 2.5 ドキュメント - 19th September, 2006]&lt;br /&gt;
* [http://www.unixuser.org/~euske/doc/python/tutorial0917.html Python 講習会 資料] ― 古いけど、まとまっていて見やすい。&lt;br /&gt;
&lt;br /&gt;
== 覚え書き ==&lt;br /&gt;
* グローバル変数など、外側のスコープにある変数は読み出し専用となる。&amp;lt;code&amp;gt;global&amp;lt;/code&amp;gt; 文を使えば代入できる。&lt;br /&gt;
* 一定時間待ちを入れる場合は、&amp;lt;code&amp;gt;import time&amp;lt;/code&amp;gt; して &amp;lt;code&amp;gt;time.sleep(n)&amp;lt;/code&amp;gt; を使う。&lt;br /&gt;
* gzip コマンドで圧縮したデータを zlib モジュールでは展開できない (ヘッダが異なるため)。gzip + StringIO モジュールを使って回避する。&lt;br /&gt;
* 対話モードでは、最後に表示された結果は変数 &amp;lt;code&amp;gt;_&amp;lt;/code&amp;gt; に代入される。&lt;br /&gt;
* &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt; の末尾にコンマを入れると、改行されない。&amp;lt;code&amp;gt;print &amp;quot;hoge&amp;quot;,&amp;lt;/code&amp;gt;&lt;br /&gt;
* 一つの要素のタプルは、値の後ろにコンマを付ける。&amp;lt;code&amp;gt;(&amp;quot;hoge&amp;quot;,)&amp;lt;/code&amp;gt;&lt;br /&gt;
* 複数の比較演算子を &amp;lt;code&amp;gt;a &amp;lt; b == c&amp;lt;/code&amp;gt; のように書ける素晴らしい言語。&lt;br /&gt;
* &amp;lt;code&amp;gt;print &amp;gt;&amp;gt; sys.stderr, ...&amp;lt;/code&amp;gt; で標準エラーに出力&lt;br /&gt;
&lt;br /&gt;
== 文字列 ==&lt;br /&gt;
* シングルクォートとダブルクオートに違いはない。&lt;br /&gt;
** エスケープシーケンスを無視する場合は raw 文字列を使う。&amp;lt;code&amp;gt;r&amp;quot;raw 文字列\n&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* 三重クォート &amp;lt;nowiki&amp;gt;&amp;quot;&amp;quot;&amp;quot; あるいは '''&amp;lt;/nowiki&amp;gt; は改行をそのまま含めることができる。&lt;br /&gt;
* 連結は + 演算子を用いる。&lt;br /&gt;
** 文字列リテラルは、列記で連結可能。&amp;lt;code&amp;gt;&amp;quot;ho&amp;quot; &amp;quot;ge&amp;quot; → &amp;quot;hoge&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; 組み込み関数でバイト数を得る。&lt;br /&gt;
** マルチバイトを考慮した文字数は &amp;lt;code&amp;gt;len(str.decode(&amp;quot;UTF-8&amp;quot;))&amp;lt;/code&amp;gt; で得ることができる。&lt;br /&gt;
* &amp;lt;code&amp;gt;in&amp;lt;/code&amp;gt; で包含判定ができる&lt;br /&gt;
* &amp;lt;code&amp;gt;int(str)&amp;lt;/code&amp;gt; で整数に変換。第 2 引き数で基数指定可能。&lt;br /&gt;
&lt;br /&gt;
=== スライス ===&lt;br /&gt;
文字の間に添字を置くとわかりやすい。&lt;br /&gt;
 s = &amp;quot;H e l l o&amp;quot;&lt;br /&gt;
     0 1 2 3 4 5&lt;br /&gt;
   - 5 4 3 2 1   ← ここは -0 でないことに注意!! (0 = -0 のため)&lt;br /&gt;
 &lt;br /&gt;
 s[1]   → 'e'&lt;br /&gt;
 s[:3]  → 'Hel' # 先頭 3 文字&lt;br /&gt;
 s[3:]  → 'lo'&lt;br /&gt;
 s[-4]  → 'e'&lt;br /&gt;
 s[-3:] → 'llo' # 末尾 3 文字&lt;br /&gt;
 s[:-1] → 'Hell' # 最後の 1 文字を削る (改行削りに有用)&lt;br /&gt;
 s[:]   → コピーを作る&lt;br /&gt;
&lt;br /&gt;
== リスト ==&lt;br /&gt;
書くのが面倒なくらい柔軟性に富んだデータ型である。&lt;br /&gt;
* 変更可能 (mutable)&lt;br /&gt;
* 入れ子可能 (リストの要素をリストにできる)&lt;br /&gt;
* 文字列と同様のスライス表現で操作できる。&lt;br /&gt;
* &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; でリストの長さを得る。&lt;br /&gt;
&lt;br /&gt;
 a = []          # 初期化、クリア&lt;br /&gt;
 a = [0, 3, 5]&lt;br /&gt;
 a[1:1] = [1, 2] # 挿入 → [0, 1, 2, 3, 5]&lt;br /&gt;
 a[1:4] = []     # 削除 → [0, 5]&lt;br /&gt;
 a = a + [6, 7]  # 連結 → [0, 5, 6, 7]&lt;br /&gt;
 a = a * 2       # 連続 → [0, 5, 6, 7, 0, 5, 6, 7]&lt;br /&gt;
&lt;br /&gt;
* [http://www.python.jp/doc/2.5/tut/node7.html 5. データ構造]&lt;br /&gt;
&lt;br /&gt;
== バージョンによる違い ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center&amp;quot;&lt;br /&gt;
! !! RHEL5 !! RHEL6 !! RHEL7&lt;br /&gt;
|-&lt;br /&gt;
! Python&lt;br /&gt;
| 2.4.3 || 2.6.6 || 2.7.5&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/reference/compound_stmts.html#the-with-statement with 文]&lt;br /&gt;
| x || o || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/reference/expressions.html#conditional-expressions 条件演算]&amp;lt;br /&amp;gt;(三項演算子)&lt;br /&gt;
| x || o || o&lt;br /&gt;
|-&lt;br /&gt;
! リスト内包表記&lt;br /&gt;
| o || o || o&lt;br /&gt;
|-&lt;br /&gt;
! 辞書内包表記&lt;br /&gt;
| x || x || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/reference/expressions.html#generator-expressions ジェネレータ式]&lt;br /&gt;
| o || o || o&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
=== リストを N 分割する ===&lt;br /&gt;
ちょうど N 個に分割するわけではなく、最大で N 個なので注意。&lt;br /&gt;
&lt;br /&gt;
 def split_list(list, n):&lt;br /&gt;
     l = len(list)&lt;br /&gt;
     size = l / n + (l % n &amp;gt; 0)&lt;br /&gt;
     return [ list[i:i+size] for i in range(0, l, size) ]&lt;br /&gt;
&lt;br /&gt;
こんな感じで分割したリストのリストになる。&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; l = [1,2,3,4,5,7,8,9,10]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 2)&lt;br /&gt;
 [[1, 2, 3, 4, 5], [7, 8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 3)&lt;br /&gt;
 [[1, 2, 3], [4, 5, 7], [8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 4)&lt;br /&gt;
 [[1, 2, 3], [4, 5, 7], [8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 5)&lt;br /&gt;
 [[1, 2], [3, 4], [5, 7], [8, 9], [10]]&lt;br /&gt;
&lt;br /&gt;
=== モジュールに定義された名前のリスト ===&lt;br /&gt;
&lt;br /&gt;
dir 関数を使う。(忘れやすい)&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir()&lt;br /&gt;
 ['__builtins__', '__doc__', '__name__', '__package__']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; import time&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir()&lt;br /&gt;
 ['__builtins__', '__doc__', '__name__', '__package__', 'time']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir(time)&lt;br /&gt;
 ['__doc__', '__file__', '__name__', '__package__', 'accept2dyear', 'altzone', 'asctime', 'clock',&lt;br /&gt;
 'ctime', 'daylight', 'gmtime', 'localtime', 'mktime', 'sleep', 'strftime', 'strptime',&lt;br /&gt;
 'struct_time', 'time', 'timezone', 'tzname', 'tzset']&lt;br /&gt;
&lt;br /&gt;
=== socket の setsockopt() を使う ===&lt;br /&gt;
&lt;br /&gt;
* SO_KEEPALIVE の場合&lt;br /&gt;
&lt;br /&gt;
 import socket&lt;br /&gt;
 s = socket.socket()&lt;br /&gt;
 s.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)&lt;br /&gt;
&lt;br /&gt;
* SO_LINGER の場合&lt;br /&gt;
&lt;br /&gt;
 import socket&lt;br /&gt;
 import struct&lt;br /&gt;
 s = socket.socket()&lt;br /&gt;
 s.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack('ii', 1, 30))&lt;br /&gt;
&lt;br /&gt;
== テンプレート ==&lt;br /&gt;
&lt;br /&gt;
=== awk 風 Python スクリプトテンプレート ===&lt;br /&gt;
&lt;br /&gt;
テキスト処理を何でもかんでも簡単な awk で済ませちゃうクセがついてしまったので、&lt;br /&gt;
自分に Python を使うように仕向けるための awk 風テンプレート。&lt;br /&gt;
&lt;br /&gt;
FS, NR, FILENAME, FNR, NF, s[0], s[1..NF] が利用可能。&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env python&lt;br /&gt;
 import sys&lt;br /&gt;
 &lt;br /&gt;
 if len(sys.argv) == 1:&lt;br /&gt;
     files = [ sys.stdin ]&lt;br /&gt;
 else:&lt;br /&gt;
     files = [ open(f) for f in sys.argv[1:] ]&lt;br /&gt;
 &lt;br /&gt;
 ### BEGIN {&lt;br /&gt;
 FS = None&lt;br /&gt;
 &lt;br /&gt;
 ### }&lt;br /&gt;
 &lt;br /&gt;
 NR = 0&lt;br /&gt;
 for file in files:&lt;br /&gt;
     FNR = 0; FILENAME = file.name&lt;br /&gt;
     for line in file:&lt;br /&gt;
         NR += 1; FNR += 1&lt;br /&gt;
         s = line.split(FS)&lt;br /&gt;
         s[0:0] = [ line[:-1] ]&lt;br /&gt;
         NF = len(s)&lt;br /&gt;
         # print NR, FILENAME, FNR, NF, s&lt;br /&gt;
         ### {&lt;br /&gt;
 &lt;br /&gt;
         ### }&lt;br /&gt;
 &lt;br /&gt;
 ### END {&lt;br /&gt;
 &lt;br /&gt;
 ### }&lt;br /&gt;
&lt;br /&gt;
=== ファイルか標準入力から読む ===&lt;br /&gt;
&lt;br /&gt;
ファイルが指定されれば、それらをすべて処理し、指定されなければ標準入力から読む。&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 &lt;br /&gt;
 if len(sys.argv) == 1:&lt;br /&gt;
     files = [ sys.stdin ]&lt;br /&gt;
 else:&lt;br /&gt;
     files = [ open(f) for f in sys.argv[1:] ]&lt;br /&gt;
 &lt;br /&gt;
 for file in files:&lt;br /&gt;
     ...&lt;br /&gt;
&lt;br /&gt;
* [http://docs.python.jp/2/library/fileinput.html fileinput モジュール] というのがあった…&lt;br /&gt;
&lt;br /&gt;
=== getopt ===&lt;br /&gt;
どの言語でもこいつだけはテンプレート化する必要がある。。&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 import getopt&lt;br /&gt;
 &lt;br /&gt;
 def usage(exit_code):&lt;br /&gt;
     out = (exit_code and sys.stderr) or sys.stdout&lt;br /&gt;
     print &amp;gt;&amp;gt; out, 'Usage: %s [-a] [-b str]' % sys.argv[0]&lt;br /&gt;
     sys.exit(exit_code)&lt;br /&gt;
 &lt;br /&gt;
 try:&lt;br /&gt;
     opts, args = getopt.getopt(sys.argv[1:], 'ab:h')&lt;br /&gt;
 except getopt.GetoptError:&lt;br /&gt;
     usage(1)&lt;br /&gt;
 &lt;br /&gt;
 (opt_a, opt_b) = (False, None) # defaults&lt;br /&gt;
 for (opt, val) in opts:&lt;br /&gt;
     if opt == '-a':&lt;br /&gt;
         opt_a = True&lt;br /&gt;
     elif opt == '-b':&lt;br /&gt;
         opt_b = val&lt;br /&gt;
     elif opt == '-h':&lt;br /&gt;
          usage(0)&lt;br /&gt;
     else:&lt;br /&gt;
          usage(1)&lt;br /&gt;
 &lt;br /&gt;
 for arg in args: # remainder&lt;br /&gt;
     ...&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=Python&amp;diff=1074</id>
		<title>Python</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=Python&amp;diff=1074"/>
				<updated>2016-02-16T23:24:40Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: /* バージョンによる違い */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;かなり忘れつつある Python について。&lt;br /&gt;
&lt;br /&gt;
== 参考リンク ==&lt;br /&gt;
* [http://www.python.jp/doc/release/index.html Python 2.5 ドキュメント - 19th September, 2006]&lt;br /&gt;
* [http://www.unixuser.org/~euske/doc/python/tutorial0917.html Python 講習会 資料] ― 古いけど、まとまっていて見やすい。&lt;br /&gt;
&lt;br /&gt;
== 覚え書き ==&lt;br /&gt;
* グローバル変数など、外側のスコープにある変数は読み出し専用となる。&amp;lt;code&amp;gt;global&amp;lt;/code&amp;gt; 文を使えば代入できる。&lt;br /&gt;
* 一定時間待ちを入れる場合は、&amp;lt;code&amp;gt;import time&amp;lt;/code&amp;gt; して &amp;lt;code&amp;gt;time.sleep(n)&amp;lt;/code&amp;gt; を使う。&lt;br /&gt;
* gzip コマンドで圧縮したデータを zlib モジュールでは展開できない (ヘッダが異なるため)。gzip + StringIO モジュールを使って回避する。&lt;br /&gt;
* 対話モードでは、最後に表示された結果は変数 &amp;lt;code&amp;gt;_&amp;lt;/code&amp;gt; に代入される。&lt;br /&gt;
* &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt; の末尾にコンマを入れると、改行されない。&amp;lt;code&amp;gt;print &amp;quot;hoge&amp;quot;,&amp;lt;/code&amp;gt;&lt;br /&gt;
* 一つの要素のタプルは、値の後ろにコンマを付ける。&amp;lt;code&amp;gt;(&amp;quot;hoge&amp;quot;,)&amp;lt;/code&amp;gt;&lt;br /&gt;
* 複数の比較演算子を &amp;lt;code&amp;gt;a &amp;lt; b == c&amp;lt;/code&amp;gt; のように書ける素晴らしい言語。&lt;br /&gt;
* &amp;lt;code&amp;gt;print &amp;gt;&amp;gt; sys.stderr, ...&amp;lt;/code&amp;gt; で標準エラーに出力&lt;br /&gt;
&lt;br /&gt;
== 文字列 ==&lt;br /&gt;
* シングルクォートとダブルクオートに違いはない。&lt;br /&gt;
** エスケープシーケンスを無視する場合は raw 文字列を使う。&amp;lt;code&amp;gt;r&amp;quot;raw 文字列\n&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* 三重クォート &amp;lt;nowiki&amp;gt;&amp;quot;&amp;quot;&amp;quot; あるいは '''&amp;lt;/nowiki&amp;gt; は改行をそのまま含めることができる。&lt;br /&gt;
* 連結は + 演算子を用いる。&lt;br /&gt;
** 文字列リテラルは、列記で連結可能。&amp;lt;code&amp;gt;&amp;quot;ho&amp;quot; &amp;quot;ge&amp;quot; → &amp;quot;hoge&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; 組み込み関数でバイト数を得る。&lt;br /&gt;
** マルチバイトを考慮した文字数は &amp;lt;code&amp;gt;len(str.decode(&amp;quot;UTF-8&amp;quot;))&amp;lt;/code&amp;gt; で得ることができる。&lt;br /&gt;
* &amp;lt;code&amp;gt;in&amp;lt;/code&amp;gt; で包含判定ができる&lt;br /&gt;
* &amp;lt;code&amp;gt;int(str)&amp;lt;/code&amp;gt; で整数に変換。第 2 引き数で基数指定可能。&lt;br /&gt;
&lt;br /&gt;
=== スライス ===&lt;br /&gt;
文字の間に添字を置くとわかりやすい。&lt;br /&gt;
 s = &amp;quot;H e l l o&amp;quot;&lt;br /&gt;
     0 1 2 3 4 5&lt;br /&gt;
   - 5 4 3 2 1   ← ここは -0 でないことに注意!! (0 = -0 のため)&lt;br /&gt;
 &lt;br /&gt;
 s[1]   → 'e'&lt;br /&gt;
 s[:3]  → 'Hel' # 先頭 3 文字&lt;br /&gt;
 s[3:]  → 'lo'&lt;br /&gt;
 s[-4]  → 'e'&lt;br /&gt;
 s[-3:] → 'llo' # 末尾 3 文字&lt;br /&gt;
 s[:-1] → 'Hell' # 最後の 1 文字を削る (改行削りに有用)&lt;br /&gt;
 s[:]   → コピーを作る&lt;br /&gt;
&lt;br /&gt;
== リスト ==&lt;br /&gt;
書くのが面倒なくらい柔軟性に富んだデータ型である。&lt;br /&gt;
* 変更可能 (mutable)&lt;br /&gt;
* 入れ子可能 (リストの要素をリストにできる)&lt;br /&gt;
* 文字列と同様のスライス表現で操作できる。&lt;br /&gt;
* &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; でリストの長さを得る。&lt;br /&gt;
&lt;br /&gt;
 a = []          # 初期化、クリア&lt;br /&gt;
 a = [0, 3, 5]&lt;br /&gt;
 a[1:1] = [1, 2] # 挿入 → [0, 1, 2, 3, 5]&lt;br /&gt;
 a[1:4] = []     # 削除 → [0, 5]&lt;br /&gt;
 a = a + [6, 7]  # 連結 → [0, 5, 6, 7]&lt;br /&gt;
 a = a * 2       # 連続 → [0, 5, 6, 7, 0, 5, 6, 7]&lt;br /&gt;
&lt;br /&gt;
* [http://www.python.jp/doc/2.5/tut/node7.html 5. データ構造]&lt;br /&gt;
&lt;br /&gt;
== バージョンによる違い ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center&amp;quot;&lt;br /&gt;
! !! RHEL5 !! RHEL6 !! RHEL7&lt;br /&gt;
|-&lt;br /&gt;
! Python&lt;br /&gt;
| 2.4.3 || 2.6.6 || 2.7.5&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/reference/compound_stmts.html#the-with-statement with 文]&lt;br /&gt;
| x || o || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/reference/expressions.html#conditional-expressions 条件演算]&amp;lt;br /&amp;gt;(三項演算子)&lt;br /&gt;
| x || o || o&lt;br /&gt;
|-&lt;br /&gt;
! リスト内包表記&lt;br /&gt;
| o || o || o&lt;br /&gt;
|-&lt;br /&gt;
! 辞書内包表記&lt;br /&gt;
| x || x || o&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
=== リストを N 分割する ===&lt;br /&gt;
ちょうど N 個に分割するわけではなく、最大で N 個なので注意。&lt;br /&gt;
&lt;br /&gt;
 def split_list(list, n):&lt;br /&gt;
     l = len(list)&lt;br /&gt;
     size = l / n + (l % n &amp;gt; 0)&lt;br /&gt;
     return [ list[i:i+size] for i in range(0, l, size) ]&lt;br /&gt;
&lt;br /&gt;
こんな感じで分割したリストのリストになる。&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; l = [1,2,3,4,5,7,8,9,10]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 2)&lt;br /&gt;
 [[1, 2, 3, 4, 5], [7, 8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 3)&lt;br /&gt;
 [[1, 2, 3], [4, 5, 7], [8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 4)&lt;br /&gt;
 [[1, 2, 3], [4, 5, 7], [8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 5)&lt;br /&gt;
 [[1, 2], [3, 4], [5, 7], [8, 9], [10]]&lt;br /&gt;
&lt;br /&gt;
=== モジュールに定義された名前のリスト ===&lt;br /&gt;
&lt;br /&gt;
dir 関数を使う。(忘れやすい)&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir()&lt;br /&gt;
 ['__builtins__', '__doc__', '__name__', '__package__']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; import time&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir()&lt;br /&gt;
 ['__builtins__', '__doc__', '__name__', '__package__', 'time']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir(time)&lt;br /&gt;
 ['__doc__', '__file__', '__name__', '__package__', 'accept2dyear', 'altzone', 'asctime', 'clock',&lt;br /&gt;
 'ctime', 'daylight', 'gmtime', 'localtime', 'mktime', 'sleep', 'strftime', 'strptime',&lt;br /&gt;
 'struct_time', 'time', 'timezone', 'tzname', 'tzset']&lt;br /&gt;
&lt;br /&gt;
=== socket の setsockopt() を使う ===&lt;br /&gt;
&lt;br /&gt;
* SO_KEEPALIVE の場合&lt;br /&gt;
&lt;br /&gt;
 import socket&lt;br /&gt;
 s = socket.socket()&lt;br /&gt;
 s.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)&lt;br /&gt;
&lt;br /&gt;
* SO_LINGER の場合&lt;br /&gt;
&lt;br /&gt;
 import socket&lt;br /&gt;
 import struct&lt;br /&gt;
 s = socket.socket()&lt;br /&gt;
 s.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack('ii', 1, 30))&lt;br /&gt;
&lt;br /&gt;
== テンプレート ==&lt;br /&gt;
&lt;br /&gt;
=== awk 風 Python スクリプトテンプレート ===&lt;br /&gt;
&lt;br /&gt;
テキスト処理を何でもかんでも簡単な awk で済ませちゃうクセがついてしまったので、&lt;br /&gt;
自分に Python を使うように仕向けるための awk 風テンプレート。&lt;br /&gt;
&lt;br /&gt;
FS, NR, FILENAME, FNR, NF, s[0], s[1..NF] が利用可能。&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env python&lt;br /&gt;
 import sys&lt;br /&gt;
 &lt;br /&gt;
 if len(sys.argv) == 1:&lt;br /&gt;
     files = [ sys.stdin ]&lt;br /&gt;
 else:&lt;br /&gt;
     files = [ open(f) for f in sys.argv[1:] ]&lt;br /&gt;
 &lt;br /&gt;
 ### BEGIN {&lt;br /&gt;
 FS = None&lt;br /&gt;
 &lt;br /&gt;
 ### }&lt;br /&gt;
 &lt;br /&gt;
 NR = 0&lt;br /&gt;
 for file in files:&lt;br /&gt;
     FNR = 0; FILENAME = file.name&lt;br /&gt;
     for line in file:&lt;br /&gt;
         NR += 1; FNR += 1&lt;br /&gt;
         s = line.split(FS)&lt;br /&gt;
         s[0:0] = [ line[:-1] ]&lt;br /&gt;
         NF = len(s)&lt;br /&gt;
         # print NR, FILENAME, FNR, NF, s&lt;br /&gt;
         ### {&lt;br /&gt;
 &lt;br /&gt;
         ### }&lt;br /&gt;
 &lt;br /&gt;
 ### END {&lt;br /&gt;
 &lt;br /&gt;
 ### }&lt;br /&gt;
&lt;br /&gt;
=== ファイルか標準入力から読む ===&lt;br /&gt;
&lt;br /&gt;
ファイルが指定されれば、それらをすべて処理し、指定されなければ標準入力から読む。&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 &lt;br /&gt;
 if len(sys.argv) == 1:&lt;br /&gt;
     files = [ sys.stdin ]&lt;br /&gt;
 else:&lt;br /&gt;
     files = [ open(f) for f in sys.argv[1:] ]&lt;br /&gt;
 &lt;br /&gt;
 for file in files:&lt;br /&gt;
     ...&lt;br /&gt;
&lt;br /&gt;
* [http://docs.python.jp/2/library/fileinput.html fileinput モジュール] というのがあった…&lt;br /&gt;
&lt;br /&gt;
=== getopt ===&lt;br /&gt;
どの言語でもこいつだけはテンプレート化する必要がある。。&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 import getopt&lt;br /&gt;
 &lt;br /&gt;
 def usage(exit_code):&lt;br /&gt;
     out = (exit_code and sys.stderr) or sys.stdout&lt;br /&gt;
     print &amp;gt;&amp;gt; out, 'Usage: %s [-a] [-b str]' % sys.argv[0]&lt;br /&gt;
     sys.exit(exit_code)&lt;br /&gt;
 &lt;br /&gt;
 try:&lt;br /&gt;
     opts, args = getopt.getopt(sys.argv[1:], 'ab:h')&lt;br /&gt;
 except getopt.GetoptError:&lt;br /&gt;
     usage(1)&lt;br /&gt;
 &lt;br /&gt;
 (opt_a, opt_b) = (False, None) # defaults&lt;br /&gt;
 for (opt, val) in opts:&lt;br /&gt;
     if opt == '-a':&lt;br /&gt;
         opt_a = True&lt;br /&gt;
     elif opt == '-b':&lt;br /&gt;
         opt_b = val&lt;br /&gt;
     elif opt == '-h':&lt;br /&gt;
          usage(0)&lt;br /&gt;
     else:&lt;br /&gt;
          usage(1)&lt;br /&gt;
 &lt;br /&gt;
 for arg in args: # remainder&lt;br /&gt;
     ...&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=Python&amp;diff=1073</id>
		<title>Python</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=Python&amp;diff=1073"/>
				<updated>2016-02-16T23:18:54Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: /* バージョンによる違い */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;かなり忘れつつある Python について。&lt;br /&gt;
&lt;br /&gt;
== 参考リンク ==&lt;br /&gt;
* [http://www.python.jp/doc/release/index.html Python 2.5 ドキュメント - 19th September, 2006]&lt;br /&gt;
* [http://www.unixuser.org/~euske/doc/python/tutorial0917.html Python 講習会 資料] ― 古いけど、まとまっていて見やすい。&lt;br /&gt;
&lt;br /&gt;
== 覚え書き ==&lt;br /&gt;
* グローバル変数など、外側のスコープにある変数は読み出し専用となる。&amp;lt;code&amp;gt;global&amp;lt;/code&amp;gt; 文を使えば代入できる。&lt;br /&gt;
* 一定時間待ちを入れる場合は、&amp;lt;code&amp;gt;import time&amp;lt;/code&amp;gt; して &amp;lt;code&amp;gt;time.sleep(n)&amp;lt;/code&amp;gt; を使う。&lt;br /&gt;
* gzip コマンドで圧縮したデータを zlib モジュールでは展開できない (ヘッダが異なるため)。gzip + StringIO モジュールを使って回避する。&lt;br /&gt;
* 対話モードでは、最後に表示された結果は変数 &amp;lt;code&amp;gt;_&amp;lt;/code&amp;gt; に代入される。&lt;br /&gt;
* &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt; の末尾にコンマを入れると、改行されない。&amp;lt;code&amp;gt;print &amp;quot;hoge&amp;quot;,&amp;lt;/code&amp;gt;&lt;br /&gt;
* 一つの要素のタプルは、値の後ろにコンマを付ける。&amp;lt;code&amp;gt;(&amp;quot;hoge&amp;quot;,)&amp;lt;/code&amp;gt;&lt;br /&gt;
* 複数の比較演算子を &amp;lt;code&amp;gt;a &amp;lt; b == c&amp;lt;/code&amp;gt; のように書ける素晴らしい言語。&lt;br /&gt;
* &amp;lt;code&amp;gt;print &amp;gt;&amp;gt; sys.stderr, ...&amp;lt;/code&amp;gt; で標準エラーに出力&lt;br /&gt;
&lt;br /&gt;
== 文字列 ==&lt;br /&gt;
* シングルクォートとダブルクオートに違いはない。&lt;br /&gt;
** エスケープシーケンスを無視する場合は raw 文字列を使う。&amp;lt;code&amp;gt;r&amp;quot;raw 文字列\n&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* 三重クォート &amp;lt;nowiki&amp;gt;&amp;quot;&amp;quot;&amp;quot; あるいは '''&amp;lt;/nowiki&amp;gt; は改行をそのまま含めることができる。&lt;br /&gt;
* 連結は + 演算子を用いる。&lt;br /&gt;
** 文字列リテラルは、列記で連結可能。&amp;lt;code&amp;gt;&amp;quot;ho&amp;quot; &amp;quot;ge&amp;quot; → &amp;quot;hoge&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; 組み込み関数でバイト数を得る。&lt;br /&gt;
** マルチバイトを考慮した文字数は &amp;lt;code&amp;gt;len(str.decode(&amp;quot;UTF-8&amp;quot;))&amp;lt;/code&amp;gt; で得ることができる。&lt;br /&gt;
* &amp;lt;code&amp;gt;in&amp;lt;/code&amp;gt; で包含判定ができる&lt;br /&gt;
* &amp;lt;code&amp;gt;int(str)&amp;lt;/code&amp;gt; で整数に変換。第 2 引き数で基数指定可能。&lt;br /&gt;
&lt;br /&gt;
=== スライス ===&lt;br /&gt;
文字の間に添字を置くとわかりやすい。&lt;br /&gt;
 s = &amp;quot;H e l l o&amp;quot;&lt;br /&gt;
     0 1 2 3 4 5&lt;br /&gt;
   - 5 4 3 2 1   ← ここは -0 でないことに注意!! (0 = -0 のため)&lt;br /&gt;
 &lt;br /&gt;
 s[1]   → 'e'&lt;br /&gt;
 s[:3]  → 'Hel' # 先頭 3 文字&lt;br /&gt;
 s[3:]  → 'lo'&lt;br /&gt;
 s[-4]  → 'e'&lt;br /&gt;
 s[-3:] → 'llo' # 末尾 3 文字&lt;br /&gt;
 s[:-1] → 'Hell' # 最後の 1 文字を削る (改行削りに有用)&lt;br /&gt;
 s[:]   → コピーを作る&lt;br /&gt;
&lt;br /&gt;
== リスト ==&lt;br /&gt;
書くのが面倒なくらい柔軟性に富んだデータ型である。&lt;br /&gt;
* 変更可能 (mutable)&lt;br /&gt;
* 入れ子可能 (リストの要素をリストにできる)&lt;br /&gt;
* 文字列と同様のスライス表現で操作できる。&lt;br /&gt;
* &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; でリストの長さを得る。&lt;br /&gt;
&lt;br /&gt;
 a = []          # 初期化、クリア&lt;br /&gt;
 a = [0, 3, 5]&lt;br /&gt;
 a[1:1] = [1, 2] # 挿入 → [0, 1, 2, 3, 5]&lt;br /&gt;
 a[1:4] = []     # 削除 → [0, 5]&lt;br /&gt;
 a = a + [6, 7]  # 連結 → [0, 5, 6, 7]&lt;br /&gt;
 a = a * 2       # 連続 → [0, 5, 6, 7, 0, 5, 6, 7]&lt;br /&gt;
&lt;br /&gt;
* [http://www.python.jp/doc/2.5/tut/node7.html 5. データ構造]&lt;br /&gt;
&lt;br /&gt;
== バージョンによる違い ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center&amp;quot;&lt;br /&gt;
! !! RHEL5 !! RHEL6 !! RHEL7&lt;br /&gt;
|-&lt;br /&gt;
! Python&lt;br /&gt;
| 2.4.3 || 2.6.6 || 2.7.5&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/reference/compound_stmts.html#the-with-statement with 文]&lt;br /&gt;
| x || o || o&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/reference/expressions.html#conditional-expressions 条件演算]&amp;lt;br /&amp;gt;(三項演算子)&lt;br /&gt;
| x || o || o&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
=== リストを N 分割する ===&lt;br /&gt;
ちょうど N 個に分割するわけではなく、最大で N 個なので注意。&lt;br /&gt;
&lt;br /&gt;
 def split_list(list, n):&lt;br /&gt;
     l = len(list)&lt;br /&gt;
     size = l / n + (l % n &amp;gt; 0)&lt;br /&gt;
     return [ list[i:i+size] for i in range(0, l, size) ]&lt;br /&gt;
&lt;br /&gt;
こんな感じで分割したリストのリストになる。&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; l = [1,2,3,4,5,7,8,9,10]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 2)&lt;br /&gt;
 [[1, 2, 3, 4, 5], [7, 8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 3)&lt;br /&gt;
 [[1, 2, 3], [4, 5, 7], [8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 4)&lt;br /&gt;
 [[1, 2, 3], [4, 5, 7], [8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 5)&lt;br /&gt;
 [[1, 2], [3, 4], [5, 7], [8, 9], [10]]&lt;br /&gt;
&lt;br /&gt;
=== モジュールに定義された名前のリスト ===&lt;br /&gt;
&lt;br /&gt;
dir 関数を使う。(忘れやすい)&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir()&lt;br /&gt;
 ['__builtins__', '__doc__', '__name__', '__package__']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; import time&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir()&lt;br /&gt;
 ['__builtins__', '__doc__', '__name__', '__package__', 'time']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir(time)&lt;br /&gt;
 ['__doc__', '__file__', '__name__', '__package__', 'accept2dyear', 'altzone', 'asctime', 'clock',&lt;br /&gt;
 'ctime', 'daylight', 'gmtime', 'localtime', 'mktime', 'sleep', 'strftime', 'strptime',&lt;br /&gt;
 'struct_time', 'time', 'timezone', 'tzname', 'tzset']&lt;br /&gt;
&lt;br /&gt;
=== socket の setsockopt() を使う ===&lt;br /&gt;
&lt;br /&gt;
* SO_KEEPALIVE の場合&lt;br /&gt;
&lt;br /&gt;
 import socket&lt;br /&gt;
 s = socket.socket()&lt;br /&gt;
 s.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)&lt;br /&gt;
&lt;br /&gt;
* SO_LINGER の場合&lt;br /&gt;
&lt;br /&gt;
 import socket&lt;br /&gt;
 import struct&lt;br /&gt;
 s = socket.socket()&lt;br /&gt;
 s.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack('ii', 1, 30))&lt;br /&gt;
&lt;br /&gt;
== テンプレート ==&lt;br /&gt;
&lt;br /&gt;
=== awk 風 Python スクリプトテンプレート ===&lt;br /&gt;
&lt;br /&gt;
テキスト処理を何でもかんでも簡単な awk で済ませちゃうクセがついてしまったので、&lt;br /&gt;
自分に Python を使うように仕向けるための awk 風テンプレート。&lt;br /&gt;
&lt;br /&gt;
FS, NR, FILENAME, FNR, NF, s[0], s[1..NF] が利用可能。&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env python&lt;br /&gt;
 import sys&lt;br /&gt;
 &lt;br /&gt;
 if len(sys.argv) == 1:&lt;br /&gt;
     files = [ sys.stdin ]&lt;br /&gt;
 else:&lt;br /&gt;
     files = [ open(f) for f in sys.argv[1:] ]&lt;br /&gt;
 &lt;br /&gt;
 ### BEGIN {&lt;br /&gt;
 FS = None&lt;br /&gt;
 &lt;br /&gt;
 ### }&lt;br /&gt;
 &lt;br /&gt;
 NR = 0&lt;br /&gt;
 for file in files:&lt;br /&gt;
     FNR = 0; FILENAME = file.name&lt;br /&gt;
     for line in file:&lt;br /&gt;
         NR += 1; FNR += 1&lt;br /&gt;
         s = line.split(FS)&lt;br /&gt;
         s[0:0] = [ line[:-1] ]&lt;br /&gt;
         NF = len(s)&lt;br /&gt;
         # print NR, FILENAME, FNR, NF, s&lt;br /&gt;
         ### {&lt;br /&gt;
 &lt;br /&gt;
         ### }&lt;br /&gt;
 &lt;br /&gt;
 ### END {&lt;br /&gt;
 &lt;br /&gt;
 ### }&lt;br /&gt;
&lt;br /&gt;
=== ファイルか標準入力から読む ===&lt;br /&gt;
&lt;br /&gt;
ファイルが指定されれば、それらをすべて処理し、指定されなければ標準入力から読む。&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 &lt;br /&gt;
 if len(sys.argv) == 1:&lt;br /&gt;
     files = [ sys.stdin ]&lt;br /&gt;
 else:&lt;br /&gt;
     files = [ open(f) for f in sys.argv[1:] ]&lt;br /&gt;
 &lt;br /&gt;
 for file in files:&lt;br /&gt;
     ...&lt;br /&gt;
&lt;br /&gt;
* [http://docs.python.jp/2/library/fileinput.html fileinput モジュール] というのがあった…&lt;br /&gt;
&lt;br /&gt;
=== getopt ===&lt;br /&gt;
どの言語でもこいつだけはテンプレート化する必要がある。。&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 import getopt&lt;br /&gt;
 &lt;br /&gt;
 def usage(exit_code):&lt;br /&gt;
     out = (exit_code and sys.stderr) or sys.stdout&lt;br /&gt;
     print &amp;gt;&amp;gt; out, 'Usage: %s [-a] [-b str]' % sys.argv[0]&lt;br /&gt;
     sys.exit(exit_code)&lt;br /&gt;
 &lt;br /&gt;
 try:&lt;br /&gt;
     opts, args = getopt.getopt(sys.argv[1:], 'ab:h')&lt;br /&gt;
 except getopt.GetoptError:&lt;br /&gt;
     usage(1)&lt;br /&gt;
 &lt;br /&gt;
 (opt_a, opt_b) = (False, None) # defaults&lt;br /&gt;
 for (opt, val) in opts:&lt;br /&gt;
     if opt == '-a':&lt;br /&gt;
         opt_a = True&lt;br /&gt;
     elif opt == '-b':&lt;br /&gt;
         opt_b = val&lt;br /&gt;
     elif opt == '-h':&lt;br /&gt;
          usage(0)&lt;br /&gt;
     else:&lt;br /&gt;
          usage(1)&lt;br /&gt;
 &lt;br /&gt;
 for arg in args: # remainder&lt;br /&gt;
     ...&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=Python&amp;diff=1072</id>
		<title>Python</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=Python&amp;diff=1072"/>
				<updated>2016-02-16T23:13:31Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: /* バージョンによる違い */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;かなり忘れつつある Python について。&lt;br /&gt;
&lt;br /&gt;
== 参考リンク ==&lt;br /&gt;
* [http://www.python.jp/doc/release/index.html Python 2.5 ドキュメント - 19th September, 2006]&lt;br /&gt;
* [http://www.unixuser.org/~euske/doc/python/tutorial0917.html Python 講習会 資料] ― 古いけど、まとまっていて見やすい。&lt;br /&gt;
&lt;br /&gt;
== 覚え書き ==&lt;br /&gt;
* グローバル変数など、外側のスコープにある変数は読み出し専用となる。&amp;lt;code&amp;gt;global&amp;lt;/code&amp;gt; 文を使えば代入できる。&lt;br /&gt;
* 一定時間待ちを入れる場合は、&amp;lt;code&amp;gt;import time&amp;lt;/code&amp;gt; して &amp;lt;code&amp;gt;time.sleep(n)&amp;lt;/code&amp;gt; を使う。&lt;br /&gt;
* gzip コマンドで圧縮したデータを zlib モジュールでは展開できない (ヘッダが異なるため)。gzip + StringIO モジュールを使って回避する。&lt;br /&gt;
* 対話モードでは、最後に表示された結果は変数 &amp;lt;code&amp;gt;_&amp;lt;/code&amp;gt; に代入される。&lt;br /&gt;
* &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt; の末尾にコンマを入れると、改行されない。&amp;lt;code&amp;gt;print &amp;quot;hoge&amp;quot;,&amp;lt;/code&amp;gt;&lt;br /&gt;
* 一つの要素のタプルは、値の後ろにコンマを付ける。&amp;lt;code&amp;gt;(&amp;quot;hoge&amp;quot;,)&amp;lt;/code&amp;gt;&lt;br /&gt;
* 複数の比較演算子を &amp;lt;code&amp;gt;a &amp;lt; b == c&amp;lt;/code&amp;gt; のように書ける素晴らしい言語。&lt;br /&gt;
* &amp;lt;code&amp;gt;print &amp;gt;&amp;gt; sys.stderr, ...&amp;lt;/code&amp;gt; で標準エラーに出力&lt;br /&gt;
&lt;br /&gt;
== 文字列 ==&lt;br /&gt;
* シングルクォートとダブルクオートに違いはない。&lt;br /&gt;
** エスケープシーケンスを無視する場合は raw 文字列を使う。&amp;lt;code&amp;gt;r&amp;quot;raw 文字列\n&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* 三重クォート &amp;lt;nowiki&amp;gt;&amp;quot;&amp;quot;&amp;quot; あるいは '''&amp;lt;/nowiki&amp;gt; は改行をそのまま含めることができる。&lt;br /&gt;
* 連結は + 演算子を用いる。&lt;br /&gt;
** 文字列リテラルは、列記で連結可能。&amp;lt;code&amp;gt;&amp;quot;ho&amp;quot; &amp;quot;ge&amp;quot; → &amp;quot;hoge&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; 組み込み関数でバイト数を得る。&lt;br /&gt;
** マルチバイトを考慮した文字数は &amp;lt;code&amp;gt;len(str.decode(&amp;quot;UTF-8&amp;quot;))&amp;lt;/code&amp;gt; で得ることができる。&lt;br /&gt;
* &amp;lt;code&amp;gt;in&amp;lt;/code&amp;gt; で包含判定ができる&lt;br /&gt;
* &amp;lt;code&amp;gt;int(str)&amp;lt;/code&amp;gt; で整数に変換。第 2 引き数で基数指定可能。&lt;br /&gt;
&lt;br /&gt;
=== スライス ===&lt;br /&gt;
文字の間に添字を置くとわかりやすい。&lt;br /&gt;
 s = &amp;quot;H e l l o&amp;quot;&lt;br /&gt;
     0 1 2 3 4 5&lt;br /&gt;
   - 5 4 3 2 1   ← ここは -0 でないことに注意!! (0 = -0 のため)&lt;br /&gt;
 &lt;br /&gt;
 s[1]   → 'e'&lt;br /&gt;
 s[:3]  → 'Hel' # 先頭 3 文字&lt;br /&gt;
 s[3:]  → 'lo'&lt;br /&gt;
 s[-4]  → 'e'&lt;br /&gt;
 s[-3:] → 'llo' # 末尾 3 文字&lt;br /&gt;
 s[:-1] → 'Hell' # 最後の 1 文字を削る (改行削りに有用)&lt;br /&gt;
 s[:]   → コピーを作る&lt;br /&gt;
&lt;br /&gt;
== リスト ==&lt;br /&gt;
書くのが面倒なくらい柔軟性に富んだデータ型である。&lt;br /&gt;
* 変更可能 (mutable)&lt;br /&gt;
* 入れ子可能 (リストの要素をリストにできる)&lt;br /&gt;
* 文字列と同様のスライス表現で操作できる。&lt;br /&gt;
* &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; でリストの長さを得る。&lt;br /&gt;
&lt;br /&gt;
 a = []          # 初期化、クリア&lt;br /&gt;
 a = [0, 3, 5]&lt;br /&gt;
 a[1:1] = [1, 2] # 挿入 → [0, 1, 2, 3, 5]&lt;br /&gt;
 a[1:4] = []     # 削除 → [0, 5]&lt;br /&gt;
 a = a + [6, 7]  # 連結 → [0, 5, 6, 7]&lt;br /&gt;
 a = a * 2       # 連続 → [0, 5, 6, 7, 0, 5, 6, 7]&lt;br /&gt;
&lt;br /&gt;
* [http://www.python.jp/doc/2.5/tut/node7.html 5. データ構造]&lt;br /&gt;
&lt;br /&gt;
== バージョンによる違い ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center&amp;quot;&lt;br /&gt;
! !! RHEL5 !! RHEL6 !! RHEL7&lt;br /&gt;
|-&lt;br /&gt;
! Python&lt;br /&gt;
| 2.4.3 || 2.6.6 || 2.7.5&lt;br /&gt;
|-&lt;br /&gt;
! [http://docs.python.jp/2/reference/compound_stmts.html#the-with-statement with 文]&lt;br /&gt;
| x || o || o&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
=== リストを N 分割する ===&lt;br /&gt;
ちょうど N 個に分割するわけではなく、最大で N 個なので注意。&lt;br /&gt;
&lt;br /&gt;
 def split_list(list, n):&lt;br /&gt;
     l = len(list)&lt;br /&gt;
     size = l / n + (l % n &amp;gt; 0)&lt;br /&gt;
     return [ list[i:i+size] for i in range(0, l, size) ]&lt;br /&gt;
&lt;br /&gt;
こんな感じで分割したリストのリストになる。&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; l = [1,2,3,4,5,7,8,9,10]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 2)&lt;br /&gt;
 [[1, 2, 3, 4, 5], [7, 8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 3)&lt;br /&gt;
 [[1, 2, 3], [4, 5, 7], [8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 4)&lt;br /&gt;
 [[1, 2, 3], [4, 5, 7], [8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 5)&lt;br /&gt;
 [[1, 2], [3, 4], [5, 7], [8, 9], [10]]&lt;br /&gt;
&lt;br /&gt;
=== モジュールに定義された名前のリスト ===&lt;br /&gt;
&lt;br /&gt;
dir 関数を使う。(忘れやすい)&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir()&lt;br /&gt;
 ['__builtins__', '__doc__', '__name__', '__package__']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; import time&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir()&lt;br /&gt;
 ['__builtins__', '__doc__', '__name__', '__package__', 'time']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir(time)&lt;br /&gt;
 ['__doc__', '__file__', '__name__', '__package__', 'accept2dyear', 'altzone', 'asctime', 'clock',&lt;br /&gt;
 'ctime', 'daylight', 'gmtime', 'localtime', 'mktime', 'sleep', 'strftime', 'strptime',&lt;br /&gt;
 'struct_time', 'time', 'timezone', 'tzname', 'tzset']&lt;br /&gt;
&lt;br /&gt;
=== socket の setsockopt() を使う ===&lt;br /&gt;
&lt;br /&gt;
* SO_KEEPALIVE の場合&lt;br /&gt;
&lt;br /&gt;
 import socket&lt;br /&gt;
 s = socket.socket()&lt;br /&gt;
 s.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)&lt;br /&gt;
&lt;br /&gt;
* SO_LINGER の場合&lt;br /&gt;
&lt;br /&gt;
 import socket&lt;br /&gt;
 import struct&lt;br /&gt;
 s = socket.socket()&lt;br /&gt;
 s.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack('ii', 1, 30))&lt;br /&gt;
&lt;br /&gt;
== テンプレート ==&lt;br /&gt;
&lt;br /&gt;
=== awk 風 Python スクリプトテンプレート ===&lt;br /&gt;
&lt;br /&gt;
テキスト処理を何でもかんでも簡単な awk で済ませちゃうクセがついてしまったので、&lt;br /&gt;
自分に Python を使うように仕向けるための awk 風テンプレート。&lt;br /&gt;
&lt;br /&gt;
FS, NR, FILENAME, FNR, NF, s[0], s[1..NF] が利用可能。&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env python&lt;br /&gt;
 import sys&lt;br /&gt;
 &lt;br /&gt;
 if len(sys.argv) == 1:&lt;br /&gt;
     files = [ sys.stdin ]&lt;br /&gt;
 else:&lt;br /&gt;
     files = [ open(f) for f in sys.argv[1:] ]&lt;br /&gt;
 &lt;br /&gt;
 ### BEGIN {&lt;br /&gt;
 FS = None&lt;br /&gt;
 &lt;br /&gt;
 ### }&lt;br /&gt;
 &lt;br /&gt;
 NR = 0&lt;br /&gt;
 for file in files:&lt;br /&gt;
     FNR = 0; FILENAME = file.name&lt;br /&gt;
     for line in file:&lt;br /&gt;
         NR += 1; FNR += 1&lt;br /&gt;
         s = line.split(FS)&lt;br /&gt;
         s[0:0] = [ line[:-1] ]&lt;br /&gt;
         NF = len(s)&lt;br /&gt;
         # print NR, FILENAME, FNR, NF, s&lt;br /&gt;
         ### {&lt;br /&gt;
 &lt;br /&gt;
         ### }&lt;br /&gt;
 &lt;br /&gt;
 ### END {&lt;br /&gt;
 &lt;br /&gt;
 ### }&lt;br /&gt;
&lt;br /&gt;
=== ファイルか標準入力から読む ===&lt;br /&gt;
&lt;br /&gt;
ファイルが指定されれば、それらをすべて処理し、指定されなければ標準入力から読む。&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 &lt;br /&gt;
 if len(sys.argv) == 1:&lt;br /&gt;
     files = [ sys.stdin ]&lt;br /&gt;
 else:&lt;br /&gt;
     files = [ open(f) for f in sys.argv[1:] ]&lt;br /&gt;
 &lt;br /&gt;
 for file in files:&lt;br /&gt;
     ...&lt;br /&gt;
&lt;br /&gt;
* [http://docs.python.jp/2/library/fileinput.html fileinput モジュール] というのがあった…&lt;br /&gt;
&lt;br /&gt;
=== getopt ===&lt;br /&gt;
どの言語でもこいつだけはテンプレート化する必要がある。。&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 import getopt&lt;br /&gt;
 &lt;br /&gt;
 def usage(exit_code):&lt;br /&gt;
     out = (exit_code and sys.stderr) or sys.stdout&lt;br /&gt;
     print &amp;gt;&amp;gt; out, 'Usage: %s [-a] [-b str]' % sys.argv[0]&lt;br /&gt;
     sys.exit(exit_code)&lt;br /&gt;
 &lt;br /&gt;
 try:&lt;br /&gt;
     opts, args = getopt.getopt(sys.argv[1:], 'ab:h')&lt;br /&gt;
 except getopt.GetoptError:&lt;br /&gt;
     usage(1)&lt;br /&gt;
 &lt;br /&gt;
 (opt_a, opt_b) = (False, None) # defaults&lt;br /&gt;
 for (opt, val) in opts:&lt;br /&gt;
     if opt == '-a':&lt;br /&gt;
         opt_a = True&lt;br /&gt;
     elif opt == '-b':&lt;br /&gt;
         opt_b = val&lt;br /&gt;
     elif opt == '-h':&lt;br /&gt;
          usage(0)&lt;br /&gt;
     else:&lt;br /&gt;
          usage(1)&lt;br /&gt;
 &lt;br /&gt;
 for arg in args: # remainder&lt;br /&gt;
     ...&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=Python&amp;diff=1071</id>
		<title>Python</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=Python&amp;diff=1071"/>
				<updated>2016-02-16T23:07:24Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;かなり忘れつつある Python について。&lt;br /&gt;
&lt;br /&gt;
== 参考リンク ==&lt;br /&gt;
* [http://www.python.jp/doc/release/index.html Python 2.5 ドキュメント - 19th September, 2006]&lt;br /&gt;
* [http://www.unixuser.org/~euske/doc/python/tutorial0917.html Python 講習会 資料] ― 古いけど、まとまっていて見やすい。&lt;br /&gt;
&lt;br /&gt;
== 覚え書き ==&lt;br /&gt;
* グローバル変数など、外側のスコープにある変数は読み出し専用となる。&amp;lt;code&amp;gt;global&amp;lt;/code&amp;gt; 文を使えば代入できる。&lt;br /&gt;
* 一定時間待ちを入れる場合は、&amp;lt;code&amp;gt;import time&amp;lt;/code&amp;gt; して &amp;lt;code&amp;gt;time.sleep(n)&amp;lt;/code&amp;gt; を使う。&lt;br /&gt;
* gzip コマンドで圧縮したデータを zlib モジュールでは展開できない (ヘッダが異なるため)。gzip + StringIO モジュールを使って回避する。&lt;br /&gt;
* 対話モードでは、最後に表示された結果は変数 &amp;lt;code&amp;gt;_&amp;lt;/code&amp;gt; に代入される。&lt;br /&gt;
* &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt; の末尾にコンマを入れると、改行されない。&amp;lt;code&amp;gt;print &amp;quot;hoge&amp;quot;,&amp;lt;/code&amp;gt;&lt;br /&gt;
* 一つの要素のタプルは、値の後ろにコンマを付ける。&amp;lt;code&amp;gt;(&amp;quot;hoge&amp;quot;,)&amp;lt;/code&amp;gt;&lt;br /&gt;
* 複数の比較演算子を &amp;lt;code&amp;gt;a &amp;lt; b == c&amp;lt;/code&amp;gt; のように書ける素晴らしい言語。&lt;br /&gt;
* &amp;lt;code&amp;gt;print &amp;gt;&amp;gt; sys.stderr, ...&amp;lt;/code&amp;gt; で標準エラーに出力&lt;br /&gt;
&lt;br /&gt;
== 文字列 ==&lt;br /&gt;
* シングルクォートとダブルクオートに違いはない。&lt;br /&gt;
** エスケープシーケンスを無視する場合は raw 文字列を使う。&amp;lt;code&amp;gt;r&amp;quot;raw 文字列\n&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* 三重クォート &amp;lt;nowiki&amp;gt;&amp;quot;&amp;quot;&amp;quot; あるいは '''&amp;lt;/nowiki&amp;gt; は改行をそのまま含めることができる。&lt;br /&gt;
* 連結は + 演算子を用いる。&lt;br /&gt;
** 文字列リテラルは、列記で連結可能。&amp;lt;code&amp;gt;&amp;quot;ho&amp;quot; &amp;quot;ge&amp;quot; → &amp;quot;hoge&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; 組み込み関数でバイト数を得る。&lt;br /&gt;
** マルチバイトを考慮した文字数は &amp;lt;code&amp;gt;len(str.decode(&amp;quot;UTF-8&amp;quot;))&amp;lt;/code&amp;gt; で得ることができる。&lt;br /&gt;
* &amp;lt;code&amp;gt;in&amp;lt;/code&amp;gt; で包含判定ができる&lt;br /&gt;
* &amp;lt;code&amp;gt;int(str)&amp;lt;/code&amp;gt; で整数に変換。第 2 引き数で基数指定可能。&lt;br /&gt;
&lt;br /&gt;
=== スライス ===&lt;br /&gt;
文字の間に添字を置くとわかりやすい。&lt;br /&gt;
 s = &amp;quot;H e l l o&amp;quot;&lt;br /&gt;
     0 1 2 3 4 5&lt;br /&gt;
   - 5 4 3 2 1   ← ここは -0 でないことに注意!! (0 = -0 のため)&lt;br /&gt;
 &lt;br /&gt;
 s[1]   → 'e'&lt;br /&gt;
 s[:3]  → 'Hel' # 先頭 3 文字&lt;br /&gt;
 s[3:]  → 'lo'&lt;br /&gt;
 s[-4]  → 'e'&lt;br /&gt;
 s[-3:] → 'llo' # 末尾 3 文字&lt;br /&gt;
 s[:-1] → 'Hell' # 最後の 1 文字を削る (改行削りに有用)&lt;br /&gt;
 s[:]   → コピーを作る&lt;br /&gt;
&lt;br /&gt;
== リスト ==&lt;br /&gt;
書くのが面倒なくらい柔軟性に富んだデータ型である。&lt;br /&gt;
* 変更可能 (mutable)&lt;br /&gt;
* 入れ子可能 (リストの要素をリストにできる)&lt;br /&gt;
* 文字列と同様のスライス表現で操作できる。&lt;br /&gt;
* &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; でリストの長さを得る。&lt;br /&gt;
&lt;br /&gt;
 a = []          # 初期化、クリア&lt;br /&gt;
 a = [0, 3, 5]&lt;br /&gt;
 a[1:1] = [1, 2] # 挿入 → [0, 1, 2, 3, 5]&lt;br /&gt;
 a[1:4] = []     # 削除 → [0, 5]&lt;br /&gt;
 a = a + [6, 7]  # 連結 → [0, 5, 6, 7]&lt;br /&gt;
 a = a * 2       # 連続 → [0, 5, 6, 7, 0, 5, 6, 7]&lt;br /&gt;
&lt;br /&gt;
* [http://www.python.jp/doc/2.5/tut/node7.html 5. データ構造]&lt;br /&gt;
&lt;br /&gt;
== バージョンによる違い ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !! RHEL5 !! RHEL6 !! RHEL7&lt;br /&gt;
|-&lt;br /&gt;
| Python || 2.4.3 || 2.6.6 || 2.7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
=== リストを N 分割する ===&lt;br /&gt;
ちょうど N 個に分割するわけではなく、最大で N 個なので注意。&lt;br /&gt;
&lt;br /&gt;
 def split_list(list, n):&lt;br /&gt;
     l = len(list)&lt;br /&gt;
     size = l / n + (l % n &amp;gt; 0)&lt;br /&gt;
     return [ list[i:i+size] for i in range(0, l, size) ]&lt;br /&gt;
&lt;br /&gt;
こんな感じで分割したリストのリストになる。&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; l = [1,2,3,4,5,7,8,9,10]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 2)&lt;br /&gt;
 [[1, 2, 3, 4, 5], [7, 8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 3)&lt;br /&gt;
 [[1, 2, 3], [4, 5, 7], [8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 4)&lt;br /&gt;
 [[1, 2, 3], [4, 5, 7], [8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 5)&lt;br /&gt;
 [[1, 2], [3, 4], [5, 7], [8, 9], [10]]&lt;br /&gt;
&lt;br /&gt;
=== モジュールに定義された名前のリスト ===&lt;br /&gt;
&lt;br /&gt;
dir 関数を使う。(忘れやすい)&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir()&lt;br /&gt;
 ['__builtins__', '__doc__', '__name__', '__package__']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; import time&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir()&lt;br /&gt;
 ['__builtins__', '__doc__', '__name__', '__package__', 'time']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir(time)&lt;br /&gt;
 ['__doc__', '__file__', '__name__', '__package__', 'accept2dyear', 'altzone', 'asctime', 'clock',&lt;br /&gt;
 'ctime', 'daylight', 'gmtime', 'localtime', 'mktime', 'sleep', 'strftime', 'strptime',&lt;br /&gt;
 'struct_time', 'time', 'timezone', 'tzname', 'tzset']&lt;br /&gt;
&lt;br /&gt;
=== socket の setsockopt() を使う ===&lt;br /&gt;
&lt;br /&gt;
* SO_KEEPALIVE の場合&lt;br /&gt;
&lt;br /&gt;
 import socket&lt;br /&gt;
 s = socket.socket()&lt;br /&gt;
 s.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)&lt;br /&gt;
&lt;br /&gt;
* SO_LINGER の場合&lt;br /&gt;
&lt;br /&gt;
 import socket&lt;br /&gt;
 import struct&lt;br /&gt;
 s = socket.socket()&lt;br /&gt;
 s.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack('ii', 1, 30))&lt;br /&gt;
&lt;br /&gt;
== テンプレート ==&lt;br /&gt;
&lt;br /&gt;
=== awk 風 Python スクリプトテンプレート ===&lt;br /&gt;
&lt;br /&gt;
テキスト処理を何でもかんでも簡単な awk で済ませちゃうクセがついてしまったので、&lt;br /&gt;
自分に Python を使うように仕向けるための awk 風テンプレート。&lt;br /&gt;
&lt;br /&gt;
FS, NR, FILENAME, FNR, NF, s[0], s[1..NF] が利用可能。&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env python&lt;br /&gt;
 import sys&lt;br /&gt;
 &lt;br /&gt;
 if len(sys.argv) == 1:&lt;br /&gt;
     files = [ sys.stdin ]&lt;br /&gt;
 else:&lt;br /&gt;
     files = [ open(f) for f in sys.argv[1:] ]&lt;br /&gt;
 &lt;br /&gt;
 ### BEGIN {&lt;br /&gt;
 FS = None&lt;br /&gt;
 &lt;br /&gt;
 ### }&lt;br /&gt;
 &lt;br /&gt;
 NR = 0&lt;br /&gt;
 for file in files:&lt;br /&gt;
     FNR = 0; FILENAME = file.name&lt;br /&gt;
     for line in file:&lt;br /&gt;
         NR += 1; FNR += 1&lt;br /&gt;
         s = line.split(FS)&lt;br /&gt;
         s[0:0] = [ line[:-1] ]&lt;br /&gt;
         NF = len(s)&lt;br /&gt;
         # print NR, FILENAME, FNR, NF, s&lt;br /&gt;
         ### {&lt;br /&gt;
 &lt;br /&gt;
         ### }&lt;br /&gt;
 &lt;br /&gt;
 ### END {&lt;br /&gt;
 &lt;br /&gt;
 ### }&lt;br /&gt;
&lt;br /&gt;
=== ファイルか標準入力から読む ===&lt;br /&gt;
&lt;br /&gt;
ファイルが指定されれば、それらをすべて処理し、指定されなければ標準入力から読む。&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 &lt;br /&gt;
 if len(sys.argv) == 1:&lt;br /&gt;
     files = [ sys.stdin ]&lt;br /&gt;
 else:&lt;br /&gt;
     files = [ open(f) for f in sys.argv[1:] ]&lt;br /&gt;
 &lt;br /&gt;
 for file in files:&lt;br /&gt;
     ...&lt;br /&gt;
&lt;br /&gt;
* [http://docs.python.jp/2/library/fileinput.html fileinput モジュール] というのがあった…&lt;br /&gt;
&lt;br /&gt;
=== getopt ===&lt;br /&gt;
どの言語でもこいつだけはテンプレート化する必要がある。。&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 import getopt&lt;br /&gt;
 &lt;br /&gt;
 def usage(exit_code):&lt;br /&gt;
     out = (exit_code and sys.stderr) or sys.stdout&lt;br /&gt;
     print &amp;gt;&amp;gt; out, 'Usage: %s [-a] [-b str]' % sys.argv[0]&lt;br /&gt;
     sys.exit(exit_code)&lt;br /&gt;
 &lt;br /&gt;
 try:&lt;br /&gt;
     opts, args = getopt.getopt(sys.argv[1:], 'ab:h')&lt;br /&gt;
 except getopt.GetoptError:&lt;br /&gt;
     usage(1)&lt;br /&gt;
 &lt;br /&gt;
 (opt_a, opt_b) = (False, None) # defaults&lt;br /&gt;
 for (opt, val) in opts:&lt;br /&gt;
     if opt == '-a':&lt;br /&gt;
         opt_a = True&lt;br /&gt;
     elif opt == '-b':&lt;br /&gt;
         opt_b = val&lt;br /&gt;
     elif opt == '-h':&lt;br /&gt;
          usage(0)&lt;br /&gt;
     else:&lt;br /&gt;
          usage(1)&lt;br /&gt;
 &lt;br /&gt;
 for arg in args: # remainder&lt;br /&gt;
     ...&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=RHEL&amp;diff=1070</id>
		<title>RHEL</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=RHEL&amp;diff=1070"/>
				<updated>2015-11-28T05:10:46Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: 「カーネルバージョン」を更新&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;言わずと知れた(?) Red Hat Enterprise Linux のページ。赤帽。&lt;br /&gt;
&lt;br /&gt;
もちろん、RHEL を買えるわけがないので、CentOS で代用しています。&lt;br /&gt;
CentOS って何？って方は、[http://ja.wikipedia.org/wiki/CentOS Wikipedia] をご覧下さい。&lt;br /&gt;
&lt;br /&gt;
== カーネルバージョン ==&lt;br /&gt;
&lt;br /&gt;
こんなページがあった…。&lt;br /&gt;
* [https://access.redhat.com/ja/articles/16476 Red Hat Enterprise Linux のリリース日と収録カーネルの一覧]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! RHEL バージョン !! カーネルバージョン !! リリース !! 最終 !! 提供カーネル !! リリース日 !! 経過日数&lt;br /&gt;
|-&lt;br /&gt;
| 7.0 || rowspan=&amp;quot;3&amp;quot; | 3.10.0 || 123.el7&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2015-0102.html 123.20.1.el7] || rowspan=&amp;quot;3&amp;quot; | kernel || 2014-06-10 ||&lt;br /&gt;
|-&lt;br /&gt;
| 7.1 || [https://rhn.redhat.com/errata/RHSA-2015-0290.html 229.el7]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2015-1978.html 229.20.1.el7] || 2015-03-05 || 268&lt;br /&gt;
|-&lt;br /&gt;
| 7.2 || [https://rhn.redhat.com/errata/RHSA-2015-2152.html 327.el7]&lt;br /&gt;
| 327.xx.x.el7 || 2015-11-19 || 259&lt;br /&gt;
|-&lt;br /&gt;
| 6 Beta 1 || rowspan=&amp;quot;10&amp;quot; | 2.6.32 || 19.el6 || || rowspan=&amp;quot;10&amp;quot; | kernel || 2010-04-22 ||&lt;br /&gt;
|-&lt;br /&gt;
| 6 Beta 2 || 37.el6 || || 2010-06-30 ||&lt;br /&gt;
|-&lt;br /&gt;
| 6.0 || 71.el6&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2011-0498.html 71.29.1.el6] || 2010-11-10 ||&lt;br /&gt;
|-&lt;br /&gt;
| 6.1 || [https://rhn.redhat.com/errata/RHSA-2011-0542.html 131.0.15.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2011-1465.html 131.21.1.el6] || 2011-05-19 || 190&lt;br /&gt;
|-&lt;br /&gt;
| 6.2 || [https://rhn.redhat.com/errata/RHSA-2011-1530.html 220.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2012-0743.html 220.23.1.el6] || 2011-12-06 || 201&lt;br /&gt;
|-&lt;br /&gt;
| 6.3 || [https://rhn.redhat.com/errata/RHSA-2012-0862.html 279.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2013-0223.html 279.22.1.el6] || 2012-06-20 || 197&lt;br /&gt;
|-&lt;br /&gt;
| 6.4 || [https://rhn.redhat.com/errata/RHSA-2013-0496.html 358.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2013-1436.html 358.23.2.el6] || 2013-02-21 || 246&lt;br /&gt;
|-&lt;br /&gt;
| 6.5 || [https://rhn.redhat.com/errata/RHSA-2013-1645.html 431.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2014-1167.html 431.29.2.el6] || 2013-11-21 || 273&lt;br /&gt;
|-&lt;br /&gt;
| 6.6 || [https://rhn.redhat.com/errata/RHSA-2014-1392.html 504.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2015-1221.html 504.30.3.el6] || 2014-10-14 || 327&lt;br /&gt;
|-&lt;br /&gt;
| 6.7 || [https://rhn.redhat.com/errata/RHSA-2015-1272.html 573.el6]&lt;br /&gt;
| 573.xx.x.el6 || 2015-07-22 || 281&lt;br /&gt;
|-&lt;br /&gt;
| 5.0&lt;br /&gt;
| rowspan=&amp;quot;13&amp;quot; | 2.6.18 || 8.el5 || 8.1.15.el5&lt;br /&gt;
| rowspan=&amp;quot;13&amp;quot; | kernel&amp;lt;br&amp;gt;kernel-PAE&amp;lt;br&amp;gt;kernel-xen || 2007-03-14 ||&lt;br /&gt;
|-&lt;br /&gt;
| 5.1 || [https://rhn.redhat.com/errata/RHBA-2007-0959.html 53.el5] || 53.1.21.el5 || 2007-11-07 || 238&lt;br /&gt;
|-&lt;br /&gt;
| 5.2 || [https://rhn.redhat.com/errata/RHBA-2008-0314.html 92.el5] || 92.1.22.el5 || 2008-05-21 || 196&lt;br /&gt;
|-&lt;br /&gt;
| 5.3 || [https://rhn.redhat.com/errata/RHSA-2009-0225.html 128.el5] || 128.7.1.el5 || 2009-01-20 || 244&lt;br /&gt;
|-&lt;br /&gt;
| 5.4 || [https://rhn.redhat.com/errata/RHSA-2009-1243.html 164.el5] || 164.15.1.el5 || 2009-09-01 || 224&lt;br /&gt;
|-&lt;br /&gt;
| 5.5 || [https://rhn.redhat.com/errata/RHSA-2010-0178.html 194.el5] || 194.32.1.el5 || 2010-03-30 || 210&lt;br /&gt;
|-&lt;br /&gt;
| 5.6 || [https://rhn.redhat.com/errata/RHSA-2011-0017.html 238.el5] || 238.19.1.el5 || 2011-01-13 || 289&lt;br /&gt;
|-&lt;br /&gt;
| 5.7 || [https://rhn.redhat.com/errata/RHSA-2011-1065.html 274.el5] || 274.18.1.el5 || 2011-07-21 || 189&lt;br /&gt;
|-&lt;br /&gt;
| 5.8 || [https://rhn.redhat.com/errata/RHSA-2012-0150.html 308.el5] || 308.24.1.el5 || 2012-02-21 || 215&lt;br /&gt;
|-&lt;br /&gt;
| 5.9 || [https://rhn.redhat.com/errata/RHBA-2013-0006.html 348.el5] || 348.18.1.el5 || 2013-01-08 || 322&lt;br /&gt;
|-&lt;br /&gt;
| 5.10 || [https://rhn.redhat.com/errata/RHSA-2013-1348.html 371.el5] || 371.12.1.el5 || 2013-09-30 || 265&lt;br /&gt;
|-&lt;br /&gt;
| 5.11 || [https://rhn.redhat.com/errata/RHBA-2014-1196.html 398.el5] ||              || 2014-09-16 || 351&lt;br /&gt;
|-&lt;br /&gt;
| latest || [https://rhn.redhat.com/errata/RHBA-2015-2025.html 407.el5] || || 2015-11-11 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! RHEL バージョン !! カーネルバージョン !! リリース !! 提供カーネル !! リリース日 !! 経過日数&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | 2.6.9 || 5.EL&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | kernel&amp;lt;br&amp;gt;kernel-hugemem&amp;lt;br&amp;gt;kernel-smp&amp;lt;br&amp;gt;kernel-largesmp&amp;lt;br&amp;gt;※kernel 以外 PAE が on&lt;br /&gt;
| 2005-02-15 ||&lt;br /&gt;
|-&lt;br /&gt;
| 4.1 || 11.EL || 2005-06-08 || 113&lt;br /&gt;
|-&lt;br /&gt;
| 4.2 || 22.EL || 2005-10-05 || 119&lt;br /&gt;
|-&lt;br /&gt;
| 4.3 || 34.EL || 2006-03-07 || 153&lt;br /&gt;
|-&lt;br /&gt;
| 4.4 || 42.EL || 2006-08-10 || 156&lt;br /&gt;
|-&lt;br /&gt;
| 4.5 || 55.EL || 2007-04-28 || 261&lt;br /&gt;
|-&lt;br /&gt;
| 4.6 || 67.EL || 2007-11-15 || 201&lt;br /&gt;
|-&lt;br /&gt;
| 4.7 || 78.EL || 2008-07-24 || 252&lt;br /&gt;
|-&lt;br /&gt;
| 4.8 || 89.EL || 2009-05-18 || 298&lt;br /&gt;
|-&lt;br /&gt;
| 4.9 || [https://rhn.redhat.com/errata/RHSA-2011-0263.html 100.EL] || 2011-02-16 || 639&lt;br /&gt;
|-&lt;br /&gt;
| last || [https://rhn.redhat.com/errata/RHBA-2011-1796.html 103.EL] || 2011-12-08 || 295&lt;br /&gt;
|-&lt;br /&gt;
| ELS latest || [https://rhn.redhat.com/errata/RHSA-2015-0009.html 106.EL] || 2015-01-05 ||&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | 2.4.21 || 4.EL&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | kernel&amp;lt;br&amp;gt;kernel-hugemem&amp;lt;br&amp;gt;kernel-smp&amp;lt;br&amp;gt;(kernel-BOOT)&lt;br /&gt;
| 2003-10-23 ||&lt;br /&gt;
|-&lt;br /&gt;
| 3.1 || 9.EL || 2004-01-16 || 85&lt;br /&gt;
|-&lt;br /&gt;
| 3.2 || 15.EL || 2004-05-11 || 116&lt;br /&gt;
|-&lt;br /&gt;
| 3.3 || 20.EL || 2004-09-01 || 113&lt;br /&gt;
|-&lt;br /&gt;
| 3.4 || 27.EL || 2004-12-20 || 110&lt;br /&gt;
|-&lt;br /&gt;
| 3.5 || 32.EL || 2005-05-18 || 149&lt;br /&gt;
|-&lt;br /&gt;
| 3.6 || 37.EL || 2005-09-28 || 133&lt;br /&gt;
|-&lt;br /&gt;
| 3.7 || 40.EL || 2006-03-15 || 168&lt;br /&gt;
|-&lt;br /&gt;
| 3.8 || 47.EL || 2006-07-20 || 127&lt;br /&gt;
|-&lt;br /&gt;
| 3.9 || 50.EL || 2007-06-11 || 326&lt;br /&gt;
|-&lt;br /&gt;
| last || 63.EL || 2009-11-03 || 876&lt;br /&gt;
|-&lt;br /&gt;
| ELS last || 66.EL || 2010-11-12 || 374&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== カーネルコンフィグ ==&lt;br /&gt;
=== RHEL 5 ===&lt;br /&gt;
普通の kernel と kernel-PAE では、SMP がデフォルトになったため、違いはわずか。&lt;br /&gt;
 # Linux kernel version: 2.6.18-128.1.6.el5  | # Linux kernel version: 2.6.18-128.1.6.el5PAE&lt;br /&gt;
 # Wed Apr  1 09:12:24 2009                  | # Wed Apr  1 09:55:25 2009&lt;br /&gt;
 CONFIG_HIGHMEM4G=y                          | # CONFIG_HIGHMEM4G is not set&lt;br /&gt;
 # CONFIG_HIGHMEM64G is not set              | CONFIG_HIGHMEM64G=y&lt;br /&gt;
                                             &amp;gt; CONFIG_X86_PAE=y&lt;br /&gt;
                                             &amp;gt; # CONFIG_NUMA is not set&lt;br /&gt;
 CONFIG_SOFTWARE_SUSPEND=y                   &amp;lt;&lt;br /&gt;
 CONFIG_PM_STD_PARTITION=&amp;quot;&amp;quot;                  &amp;lt;&lt;br /&gt;
                                             &amp;gt; CONFIG_I2O_EXT_ADAPTEC_DMA64=y&lt;br /&gt;
&lt;br /&gt;
=== RHEL 4 ===&lt;br /&gt;
UP カーネルと SMP カーネルと hugemem カーネルのコンフィグの相違を diff ってみた。&lt;br /&gt;
hugemem は SMP とほとんど変わらなかったので、右に付け足し。&lt;br /&gt;
&lt;br /&gt;
SMP では、SMP、PAE、HT などが on になっており、hugemem ではさらに X86_4G などが on になっている。&lt;br /&gt;
&lt;br /&gt;
 # Linux kernel version: 2.6.9-78.EL  | # Linux kernel version: 2.6.9-78.ELsmp  | # Linux kernel version: 2.6.9-78.ELhugemem&lt;br /&gt;
 # Wed Jul  9 15:24:56 2008           | # Wed Jul  9 15:37:00 2008              | # Wed Jul  9 15:55:03 2008&lt;br /&gt;
 CONFIG_BROKEN_ON_SMP=y               &amp;lt;&lt;br /&gt;
                                      &amp;gt; CONFIG_STOP_MACHINE=y&lt;br /&gt;
 CONFIG_X86_PC=y                      | CONFIG_MEM_MIRROR=y&lt;br /&gt;
                                      &amp;gt; # CONFIG_X86_PC is not set&lt;br /&gt;
 # CONFIG_X86_GENERICARCH is not set  | CONFIG_X86_GENERICARCH=y&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_CYCLONE_TIMER=y&lt;br /&gt;
 # CONFIG_X86_4G is not set                                                     | CONFIG_X86_4G=y&lt;br /&gt;
 # CONFIG_X86_SWITCH_PAGETABLES is not set                                      | CONFIG_X86_SWITCH_PAGETABLES=y&lt;br /&gt;
 # CONFIG_X86_4G_VM_LAYOUT is not set                                           | CONFIG_X86_4G_VM_LAYOUT=y&lt;br /&gt;
 # CONFIG_X86_UACCESS_INDIRECT is not set                                       | CONFIG_X86_UACCESS_INDIRECT=y&lt;br /&gt;
 # CONFIG_X86_HIGH_ENTRY is not set                                             | CONFIG_X86_HIGH_ENTRY=y&lt;br /&gt;
 # CONFIG_SMP is not set              | CONFIG_SMP=y&lt;br /&gt;
                                      &amp;gt; CONFIG_NR_CPUS=32&lt;br /&gt;
                                      &amp;gt; CONFIG_SCHED_SMT=y&lt;br /&gt;
                                      &amp;gt; CONFIG_SCHED_MC=y&lt;br /&gt;
 CONFIG_X86_UP_APIC=y                 &amp;lt;&lt;br /&gt;
 CONFIG_X86_UP_IOAPIC=y               &amp;lt;&lt;br /&gt;
 CONFIG_HIGHMEM4G=y                   | # CONFIG_HIGHMEM4G is not set&lt;br /&gt;
 # CONFIG_HIGHMEM64G is not set       | CONFIG_HIGHMEM64G=y&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_PAE=y&lt;br /&gt;
                                      &amp;gt; # CONFIG_NUMA is not set&lt;br /&gt;
                                      &amp;gt; # CONFIG_IRQBALANCE is not set&lt;br /&gt;
                                      &amp;gt; CONFIG_HAVE_DEC_LOCK=y                          &lt;br /&gt;
                                      &amp;gt; # CONFIG_HOTPLUG_CPU is not set                 &lt;br /&gt;
 # CONFIG_NI5010 is not set           &amp;lt;&lt;br /&gt;
 # CONFIG_PCMCIA_XIRTULIP is not set  &amp;lt;&lt;br /&gt;
 CONFIG_ISDN_DRV_LOOP=m               &amp;lt;&lt;br /&gt;
 CONFIG_HYSDN=m                       &amp;lt;&lt;br /&gt;
 CONFIG_HYSDN_CAPI=y                  &amp;lt;&lt;br /&gt;
 # CONFIG_COMPUTONE is not set        &amp;lt;&lt;br /&gt;
 # CONFIG_DIGIEPCA is not set         &amp;lt;&lt;br /&gt;
 # CONFIG_DIGI is not set             &amp;lt;&lt;br /&gt;
 # CONFIG_ESPSERIAL is not set        &amp;lt;&lt;br /&gt;
 # CONFIG_MOXA_INTELLIO is not set    &amp;lt;&lt;br /&gt;
 # CONFIG_MOXA_SMARTIO is not set     &amp;lt;&lt;br /&gt;
 # CONFIG_ISI is not set              &amp;lt;&lt;br /&gt;
 # CONFIG_RISCOM8 is not set          &amp;lt;&lt;br /&gt;
 # CONFIG_SPECIALIX is not set        &amp;lt;&lt;br /&gt;
 # CONFIG_SX is not set               &amp;lt;&lt;br /&gt;
 # CONFIG_RIO is not set              &amp;lt;&lt;br /&gt;
 # CONFIG_STALLION is not set         &amp;lt;&lt;br /&gt;
 # CONFIG_ISTALLION is not set        &amp;lt;&lt;br /&gt;
 # CONFIG_FTAPE is not set            &amp;lt;&lt;br /&gt;
 # CONFIG_I2C_ELEKTOR is not set      &amp;lt;&lt;br /&gt;
 # CONFIG_VIDEO_MEYE is not set       &amp;lt;&lt;br /&gt;
 CONFIG_USB_SERIAL_WHITEHEAT=m        &amp;lt;&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_SMP=y&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_HT=y&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_TRAMPOLINE=y&lt;br /&gt;
&lt;br /&gt;
要するに…&lt;br /&gt;
; kernel&lt;br /&gt;
: 搭載メモリ 4 GB まで対応、複数のコア (プロセッサ) やハイパースレッディングには非対応。&lt;br /&gt;
; kernel-smp&lt;br /&gt;
: 搭載メモリ 4 GB 以上に対応、複数のコアやハイパースレッディングにも対応。&lt;br /&gt;
; kernel-hugemem&lt;br /&gt;
: 搭載メモリ 4 GB 以上に対応、複数のコアやハイパースレッディングにも対応。ユーザ空間 4 GB (0xff000000 = 4080 MB)、カーネル空間 4 GB になる。ページテーブルの切り替え(?)によるオーバーヘッドが発生する。&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
=== 追加パッケージ ===&lt;br /&gt;
&lt;br /&gt;
やっぱり RPM でインストールするのが一番安心するね。&lt;br /&gt;
&lt;br /&gt;
* [https://fedoraproject.org/wiki/EPEL EPEL - FedoraProject]&lt;br /&gt;
* [http://rpmrepo.org/RPMforge RPMforge - RPMRepo Wiki]&lt;br /&gt;
&lt;br /&gt;
=== debuginfo ===&lt;br /&gt;
&lt;br /&gt;
日本人は理研から落としましょう。速いです。&lt;br /&gt;
&lt;br /&gt;
* [http://ftp.riken.jp/Linux/redhat/ftp.redhat.com/linux/enterprise/ ftp.riken.jp] (RHEL)&lt;br /&gt;
* [http://ftp.riken.jp/Linux/redhat/ftp.redhat.com/linux/updates/enterprise/ ftp.riken.jp] (RHEL updates)&lt;br /&gt;
* [http://debuginfo.centos.org/ debuginfo.centos.org] (CentOS)&lt;br /&gt;
&lt;br /&gt;
=== RHEL 5 ===&lt;br /&gt;
==== vim 7.0 のカラーリング ====&lt;br /&gt;
RHEL5 の vim 7.0 で /var/log/messages を見たときのカラーリングがすごい。ケバい。&lt;br /&gt;
&lt;br /&gt;
[[画像:vim7.png]]&lt;br /&gt;
&lt;br /&gt;
でもエラーを反転表示したりして、意外と使えるかもしれない。&lt;br /&gt;
&lt;br /&gt;
=== RHEL 4 ===&lt;br /&gt;
&lt;br /&gt;
=== RHEL 3 ===&lt;br /&gt;
&lt;br /&gt;
==== スケジューラ ====&lt;br /&gt;
今日知った、驚愕の事実。&lt;br /&gt;
&lt;br /&gt;
'''RHEL 3 のカーネルは 2.4 系だが、スケジューラは O(1) スケジューラである!!'''&lt;br /&gt;
&lt;br /&gt;
ソース読んで初めて知った…。&lt;br /&gt;
&lt;br /&gt;
2009/07/13 追記：RHEL 2.1 も O(1) スケジューラが載ってた。&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=Express5800%EF%BC%8FGT110b&amp;diff=1069</id>
		<title>Express5800／GT110b</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=Express5800%EF%BC%8FGT110b&amp;diff=1069"/>
				<updated>2015-10-25T07:49:24Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;hagio.org 実験用サーバ。&lt;br /&gt;
&lt;br /&gt;
== 技術資料 ==&lt;br /&gt;
* [http://support.express.nec.co.jp/pcserver/list.php?models=151 サポート情報 Express5800/GT110b]&lt;br /&gt;
* [http://wiki.nothing.sh/page/NEC%20Express5800%A1%BFGT110b NEC Express5800／GT110b - wiki@nothing]&lt;br /&gt;
&lt;br /&gt;
== 構成 ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 種別 !! 製品 !! 価格&lt;br /&gt;
|-&lt;br /&gt;
| 本体 || NEC Express5800/GT110b || \22,680&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | CPU || &amp;lt;s&amp;gt;Intel Celeron G1101 (2.26 GHz, L2: 256 kB x 2, L3: 3 MB)&amp;lt;/s&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| Intel Core i7-860 (2.80 GHz, L2: 256 kB x 4, L3: 8 MB) || \15,990&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | RAM || &amp;lt;s&amp;gt;ECC PC3-10600 (DDR3-1333) 1 GB x 1&amp;lt;/s&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| non-ECC PC3-10600 (DDR3-1333) 4 GB x 2 || \2,899&lt;br /&gt;
|-&lt;br /&gt;
| non-ECC PC3-10600 (DDR3-1333) 4 GB x 2 || \3,670&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | HDD || Western Digital WD1602ABYS-19B7A0 (160 GB) ||&lt;br /&gt;
|-&lt;br /&gt;
| HGST [http://www.hitachigst.com/tech/techlib.nsf/products/Deskstar_7K3000 Deskstar 7K3000] HDS723020BLA642 (2 TB) || \8,270&lt;br /&gt;
|-&lt;br /&gt;
| TOSHIBA MD04ACA300 (3 TB) ||  \10,789&lt;br /&gt;
|-&lt;br /&gt;
| OS || CentOS 6.0 (x86_64) ||&lt;br /&gt;
|-&lt;br /&gt;
| NIC || Intel Corporation 82574L Gigabit Network Connection ||&lt;br /&gt;
|-&lt;br /&gt;
| GPU || [http://www.xgitech.com/products/products_2.asp?P=23 XGI Volari Z9s] (64 MB) ||&lt;br /&gt;
|-&lt;br /&gt;
! 合計 || || \64,298&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== メモ ==&lt;br /&gt;
* CentOS 6 でファンが爆音で回り続ける現象は、ネットを参考に rpm -e microcode_ctl で解消した。&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=Express5800%EF%BC%8FGT110b&amp;diff=1068</id>
		<title>Express5800／GT110b</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=Express5800%EF%BC%8FGT110b&amp;diff=1068"/>
				<updated>2015-08-06T21:53:29Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;hagio.org 実験用サーバ。&lt;br /&gt;
&lt;br /&gt;
== 技術資料 ==&lt;br /&gt;
* [http://support.express.nec.co.jp/pcserver/list.php?models=151 サポート情報 Express5800/GT110b]&lt;br /&gt;
* [http://wiki.nothing.sh/page/NEC%20Express5800%A1%BFGT110b NEC Express5800／GT110b - wiki@nothing]&lt;br /&gt;
&lt;br /&gt;
== 構成 ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 種別 !! 製品 !! 価格&lt;br /&gt;
|-&lt;br /&gt;
| 本体 || NEC Express5800/GT110b || \22,680&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | CPU || &amp;lt;s&amp;gt;Intel Celeron G1101 (2.26 GHz, L2: 256 kB x 2, L3: 3 MB)&amp;lt;/s&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| Intel Core i7-860 (2.80 GHz, L2: 256 kB x 4, L3: 8 MB) || \15,990&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | RAM || &amp;lt;s&amp;gt;ECC PC3-10600 (DDR3-1333) 1 GB x 1&amp;lt;/s&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| non-ECC PC3-10600 (DDR3-1333) 4 GB x 2 || \2,899&lt;br /&gt;
|-&lt;br /&gt;
| non-ECC PC3-10600 (DDR3-1333) 4 GB x 2 || \3,670&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | HDD || Western Digital WD1602ABYS-19B7A0 (160 GB) ||&lt;br /&gt;
|-&lt;br /&gt;
| HGST [http://www.hitachigst.com/tech/techlib.nsf/products/Deskstar_7K3000 Deskstar 7K3000] HDS723020BLA642 (2 TB) || \8,270&lt;br /&gt;
|-&lt;br /&gt;
| TOSHIBA MD04ACA300 (3 TB) || 約 \10,000&lt;br /&gt;
|-&lt;br /&gt;
| OS || CentOS 6.0 (x86_64) ||&lt;br /&gt;
|-&lt;br /&gt;
| NIC || Intel Corporation 82574L Gigabit Network Connection ||&lt;br /&gt;
|-&lt;br /&gt;
| GPU || [http://www.xgitech.com/products/products_2.asp?P=23 XGI Volari Z9s] (64 MB) ||&lt;br /&gt;
|-&lt;br /&gt;
! 合計 || || 約 \63,509&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== メモ ==&lt;br /&gt;
* CentOS 6 でファンが爆音で回り続ける現象は、ネットを参考に rpm -e microcode_ctl で解消した。&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=Express5800%EF%BC%8FGT110b&amp;diff=1067</id>
		<title>Express5800／GT110b</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=Express5800%EF%BC%8FGT110b&amp;diff=1067"/>
				<updated>2015-08-06T21:52:47Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: /* 構成 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;hagio.org 実験用サーバ。&lt;br /&gt;
&lt;br /&gt;
== 技術資料 ==&lt;br /&gt;
* [http://support.express.nec.co.jp/pcserver/list.php?models=151 サポート情報 Express5800/GT110b]&lt;br /&gt;
* [http://wiki.nothing.sh/page/NEC%20Express5800%A1%BFGT110b NEC Express5800／GT110b - wiki@nothing]&lt;br /&gt;
&lt;br /&gt;
== 構成 ==&lt;br /&gt;
&lt;br /&gt;
本体をセール時に買えていればなぁ。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 種別 !! 製品 !! 価格&lt;br /&gt;
|-&lt;br /&gt;
| 本体 || NEC Express5800/GT110b || \22,680&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | CPU || &amp;lt;s&amp;gt;Intel Celeron G1101 (2.26 GHz, L2: 256 kB x 2, L3: 3 MB)&amp;lt;/s&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| Intel Core i7-860 (2.80 GHz, L2: 256 kB x 4, L3: 8 MB) || \15,990&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | RAM || &amp;lt;s&amp;gt;ECC PC3-10600 (DDR3-1333) 1 GB x 1&amp;lt;/s&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| non-ECC PC3-10600 (DDR3-1333) 4 GB x 2 || \2,899&lt;br /&gt;
|-&lt;br /&gt;
| non-ECC PC3-10600 (DDR3-1333) 4 GB x 2 || \3,670&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | HDD || Western Digital WD1602ABYS-19B7A0 (160 GB) ||&lt;br /&gt;
|-&lt;br /&gt;
| HGST [http://www.hitachigst.com/tech/techlib.nsf/products/Deskstar_7K3000 Deskstar 7K3000] HDS723020BLA642 (2 TB) || \8,270&lt;br /&gt;
|-&lt;br /&gt;
| TOSHIBA MD04ACA300 (3 TB) || \10,000 ほど&lt;br /&gt;
|-&lt;br /&gt;
| OS || CentOS 6.0 (x86_64) ||&lt;br /&gt;
|-&lt;br /&gt;
| NIC || Intel Corporation 82574L Gigabit Network Connection ||&lt;br /&gt;
|-&lt;br /&gt;
| GPU || [http://www.xgitech.com/products/products_2.asp?P=23 XGI Volari Z9s] (64 MB) ||&lt;br /&gt;
|-&lt;br /&gt;
! 合計 || || \53,509&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== メモ ==&lt;br /&gt;
* CentOS 6 でファンが爆音で回り続ける現象は、ネットを参考に rpm -e microcode_ctl で解消した。&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=Python&amp;diff=1066</id>
		<title>Python</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=Python&amp;diff=1066"/>
				<updated>2015-05-10T00:05:41Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: /* getopt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;かなり忘れつつある Python について。&lt;br /&gt;
&lt;br /&gt;
== 参考リンク ==&lt;br /&gt;
* [http://www.python.jp/doc/release/index.html Python 2.5 ドキュメント - 19th September, 2006]&lt;br /&gt;
* [http://www.unixuser.org/~euske/doc/python/tutorial0917.html Python 講習会 資料] ― 古いけど、まとまっていて見やすい。&lt;br /&gt;
&lt;br /&gt;
== 覚え書き ==&lt;br /&gt;
* グローバル変数など、外側のスコープにある変数は読み出し専用となる。&amp;lt;code&amp;gt;global&amp;lt;/code&amp;gt; 文を使えば代入できる。&lt;br /&gt;
* 一定時間待ちを入れる場合は、&amp;lt;code&amp;gt;import time&amp;lt;/code&amp;gt; して &amp;lt;code&amp;gt;time.sleep(n)&amp;lt;/code&amp;gt; を使う。&lt;br /&gt;
* gzip コマンドで圧縮したデータを zlib モジュールでは展開できない (ヘッダが異なるため)。gzip + StringIO モジュールを使って回避する。&lt;br /&gt;
* 対話モードでは、最後に表示された結果は変数 &amp;lt;code&amp;gt;_&amp;lt;/code&amp;gt; に代入される。&lt;br /&gt;
* &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt; の末尾にコンマを入れると、改行されない。&amp;lt;code&amp;gt;print &amp;quot;hoge&amp;quot;,&amp;lt;/code&amp;gt;&lt;br /&gt;
* 一つの要素のタプルは、値の後ろにコンマを付ける。&amp;lt;code&amp;gt;(&amp;quot;hoge&amp;quot;,)&amp;lt;/code&amp;gt;&lt;br /&gt;
* 複数の比較演算子を &amp;lt;code&amp;gt;a &amp;lt; b == c&amp;lt;/code&amp;gt; のように書ける素晴らしい言語。&lt;br /&gt;
* &amp;lt;code&amp;gt;print &amp;gt;&amp;gt; sys.stderr, ...&amp;lt;/code&amp;gt; で標準エラーに出力&lt;br /&gt;
&lt;br /&gt;
== 文字列 ==&lt;br /&gt;
* シングルクォートとダブルクオートに違いはない。&lt;br /&gt;
** エスケープシーケンスを無視する場合は raw 文字列を使う。&amp;lt;code&amp;gt;r&amp;quot;raw 文字列\n&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* 三重クォート &amp;lt;nowiki&amp;gt;&amp;quot;&amp;quot;&amp;quot; あるいは '''&amp;lt;/nowiki&amp;gt; は改行をそのまま含めることができる。&lt;br /&gt;
* 連結は + 演算子を用いる。&lt;br /&gt;
** 文字列リテラルは、列記で連結可能。&amp;lt;code&amp;gt;&amp;quot;ho&amp;quot; &amp;quot;ge&amp;quot; → &amp;quot;hoge&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; 組み込み関数でバイト数を得る。&lt;br /&gt;
** マルチバイトを考慮した文字数は &amp;lt;code&amp;gt;len(str.decode(&amp;quot;UTF-8&amp;quot;))&amp;lt;/code&amp;gt; で得ることができる。&lt;br /&gt;
* &amp;lt;code&amp;gt;in&amp;lt;/code&amp;gt; で包含判定ができる&lt;br /&gt;
* &amp;lt;code&amp;gt;int(str)&amp;lt;/code&amp;gt; で整数に変換。第 2 引き数で基数指定可能。&lt;br /&gt;
&lt;br /&gt;
=== スライス ===&lt;br /&gt;
文字の間に添字を置くとわかりやすい。&lt;br /&gt;
 s = &amp;quot;H e l l o&amp;quot;&lt;br /&gt;
     0 1 2 3 4 5&lt;br /&gt;
   - 5 4 3 2 1   ← ここは -0 でないことに注意!! (0 = -0 のため)&lt;br /&gt;
 &lt;br /&gt;
 s[1]   → 'e'&lt;br /&gt;
 s[:3]  → 'Hel' # 先頭 3 文字&lt;br /&gt;
 s[3:]  → 'lo'&lt;br /&gt;
 s[-4]  → 'e'&lt;br /&gt;
 s[-3:] → 'llo' # 末尾 3 文字&lt;br /&gt;
 s[:-1] → 'Hell' # 最後の 1 文字を削る (改行削りに有用)&lt;br /&gt;
 s[:]   → コピーを作る&lt;br /&gt;
&lt;br /&gt;
== リスト ==&lt;br /&gt;
書くのが面倒なくらい柔軟性に富んだデータ型である。&lt;br /&gt;
* 変更可能 (mutable)&lt;br /&gt;
* 入れ子可能 (リストの要素をリストにできる)&lt;br /&gt;
* 文字列と同様のスライス表現で操作できる。&lt;br /&gt;
* &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; でリストの長さを得る。&lt;br /&gt;
&lt;br /&gt;
 a = []          # 初期化、クリア&lt;br /&gt;
 a = [0, 3, 5]&lt;br /&gt;
 a[1:1] = [1, 2] # 挿入 → [0, 1, 2, 3, 5]&lt;br /&gt;
 a[1:4] = []     # 削除 → [0, 5]&lt;br /&gt;
 a = a + [6, 7]  # 連結 → [0, 5, 6, 7]&lt;br /&gt;
 a = a * 2       # 連続 → [0, 5, 6, 7, 0, 5, 6, 7]&lt;br /&gt;
&lt;br /&gt;
* [http://www.python.jp/doc/2.5/tut/node7.html 5. データ構造]&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
=== リストを N 分割する ===&lt;br /&gt;
ちょうど N 個に分割するわけではなく、最大で N 個なので注意。&lt;br /&gt;
&lt;br /&gt;
 def split_list(list, n):&lt;br /&gt;
     l = len(list)&lt;br /&gt;
     size = l / n + (l % n &amp;gt; 0)&lt;br /&gt;
     return [ list[i:i+size] for i in range(0, l, size) ]&lt;br /&gt;
&lt;br /&gt;
こんな感じで分割したリストのリストになる。&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; l = [1,2,3,4,5,7,8,9,10]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 2)&lt;br /&gt;
 [[1, 2, 3, 4, 5], [7, 8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 3)&lt;br /&gt;
 [[1, 2, 3], [4, 5, 7], [8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 4)&lt;br /&gt;
 [[1, 2, 3], [4, 5, 7], [8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 5)&lt;br /&gt;
 [[1, 2], [3, 4], [5, 7], [8, 9], [10]]&lt;br /&gt;
&lt;br /&gt;
=== モジュールに定義された名前のリスト ===&lt;br /&gt;
&lt;br /&gt;
dir 関数を使う。(忘れやすい)&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir()&lt;br /&gt;
 ['__builtins__', '__doc__', '__name__', '__package__']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; import time&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir()&lt;br /&gt;
 ['__builtins__', '__doc__', '__name__', '__package__', 'time']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir(time)&lt;br /&gt;
 ['__doc__', '__file__', '__name__', '__package__', 'accept2dyear', 'altzone', 'asctime', 'clock',&lt;br /&gt;
 'ctime', 'daylight', 'gmtime', 'localtime', 'mktime', 'sleep', 'strftime', 'strptime',&lt;br /&gt;
 'struct_time', 'time', 'timezone', 'tzname', 'tzset']&lt;br /&gt;
&lt;br /&gt;
=== socket の setsockopt() を使う ===&lt;br /&gt;
&lt;br /&gt;
* SO_KEEPALIVE の場合&lt;br /&gt;
&lt;br /&gt;
 import socket&lt;br /&gt;
 s = socket.socket()&lt;br /&gt;
 s.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)&lt;br /&gt;
&lt;br /&gt;
* SO_LINGER の場合&lt;br /&gt;
&lt;br /&gt;
 import socket&lt;br /&gt;
 import struct&lt;br /&gt;
 s = socket.socket()&lt;br /&gt;
 s.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack('ii', 1, 30))&lt;br /&gt;
&lt;br /&gt;
== テンプレート ==&lt;br /&gt;
&lt;br /&gt;
=== awk 風 Python スクリプトテンプレート ===&lt;br /&gt;
&lt;br /&gt;
テキスト処理を何でもかんでも簡単な awk で済ませちゃうクセがついてしまったので、&lt;br /&gt;
自分に Python を使うように仕向けるための awk 風テンプレート。&lt;br /&gt;
&lt;br /&gt;
FS, NR, FILENAME, FNR, NF, s[0], s[1..NF] が利用可能。&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env python&lt;br /&gt;
 import sys&lt;br /&gt;
 &lt;br /&gt;
 if len(sys.argv) == 1:&lt;br /&gt;
     files = [ sys.stdin ]&lt;br /&gt;
 else:&lt;br /&gt;
     files = [ open(f) for f in sys.argv[1:] ]&lt;br /&gt;
 &lt;br /&gt;
 ### BEGIN {&lt;br /&gt;
 FS = None&lt;br /&gt;
 &lt;br /&gt;
 ### }&lt;br /&gt;
 &lt;br /&gt;
 NR = 0&lt;br /&gt;
 for file in files:&lt;br /&gt;
     FNR = 0; FILENAME = file.name&lt;br /&gt;
     for line in file:&lt;br /&gt;
         NR += 1; FNR += 1&lt;br /&gt;
         s = line.split(FS)&lt;br /&gt;
         s[0:0] = [ line[:-1] ]&lt;br /&gt;
         NF = len(s)&lt;br /&gt;
         # print NR, FILENAME, FNR, NF, s&lt;br /&gt;
         ### {&lt;br /&gt;
 &lt;br /&gt;
         ### }&lt;br /&gt;
 &lt;br /&gt;
 ### END {&lt;br /&gt;
 &lt;br /&gt;
 ### }&lt;br /&gt;
&lt;br /&gt;
=== ファイルか標準入力から読む ===&lt;br /&gt;
&lt;br /&gt;
ファイルが指定されれば、それらをすべて処理し、指定されなければ標準入力から読む。&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 &lt;br /&gt;
 if len(sys.argv) == 1:&lt;br /&gt;
     files = [ sys.stdin ]&lt;br /&gt;
 else:&lt;br /&gt;
     files = [ open(f) for f in sys.argv[1:] ]&lt;br /&gt;
 &lt;br /&gt;
 for file in files:&lt;br /&gt;
     ...&lt;br /&gt;
&lt;br /&gt;
* [http://docs.python.jp/2/library/fileinput.html fileinput モジュール] というのがあった…&lt;br /&gt;
&lt;br /&gt;
=== getopt ===&lt;br /&gt;
どの言語でもこいつだけはテンプレート化する必要がある。。&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 import getopt&lt;br /&gt;
 &lt;br /&gt;
 def usage(exit_code):&lt;br /&gt;
     out = (exit_code and sys.stderr) or sys.stdout&lt;br /&gt;
     print &amp;gt;&amp;gt; out, 'Usage: %s [-a] [-b str]' % sys.argv[0]&lt;br /&gt;
     sys.exit(exit_code)&lt;br /&gt;
 &lt;br /&gt;
 try:&lt;br /&gt;
     opts, args = getopt.getopt(sys.argv[1:], 'ab:h')&lt;br /&gt;
 except getopt.GetoptError:&lt;br /&gt;
     usage(1)&lt;br /&gt;
 &lt;br /&gt;
 (opt_a, opt_b) = (False, None) # defaults&lt;br /&gt;
 for (opt, val) in opts:&lt;br /&gt;
     if opt == '-a':&lt;br /&gt;
         opt_a = True&lt;br /&gt;
     elif opt == '-b':&lt;br /&gt;
         opt_b = val&lt;br /&gt;
     elif opt == '-h':&lt;br /&gt;
          usage(0)&lt;br /&gt;
     else:&lt;br /&gt;
          usage(1)&lt;br /&gt;
 &lt;br /&gt;
 for arg in args: # remainder&lt;br /&gt;
     ...&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=%E3%83%9B%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88&amp;diff=1065</id>
		<title>ホーネット</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=%E3%83%9B%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88&amp;diff=1065"/>
				<updated>2015-05-07T13:05:30Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: /* 走行・燃費記録 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ひっそりと記録開始。&lt;br /&gt;
&lt;br /&gt;
== 来歴 ==&lt;br /&gt;
&lt;br /&gt;
* 2012 年&lt;br /&gt;
** 07-xx　唐突にバイクに乗ってみたくなり、自動車学校に通い始める。普通二輪、土日のみ。&lt;br /&gt;
** 08-31　免許も未取得ながら、HONDA ホーネット購入。&lt;br /&gt;
** 09-29　技能試験に合格。&lt;br /&gt;
** 10-04　免許を更新。&lt;br /&gt;
** 10-27　ようやく納車。&lt;br /&gt;
** 11-13　200 km 到達、かつ初エンスト。1 速に入ったまま誤ってクラッチを放す。さらに満タン納車だったため、初給油。&lt;br /&gt;
** 12-01　初の (なんちゃって) ツーリング。途中でみぞれが降り出し引き返し、48 km くらい。雨の中走ったのも、教習所含めて初。&lt;br /&gt;
** 12-10　奥多摩湖までツーリング。さすがに超寒い。片道 2 時間、総走行距離は 120 km くらいだった。&lt;br /&gt;
* 2013 年&lt;br /&gt;
** 02-08　駐車場で倒れてしまっていて、フロント左ウィンカーを破損。接着剤とビニールテープで修繕…。&lt;br /&gt;
** 03-30　友人と相模湖までツーリングに出かけたものの、途中で雨が降り出したためあえなく断念。&lt;br /&gt;
** 05-01　秩父へツーリング。初高速道路、初 200 km 超走行で疲労困憊したが楽しすぎる。&lt;br /&gt;
** 05-25　相模湖・宮ヶ瀬湖へツーリング。フラッと走りに行くには丁度良い距離で、アップダウンもあって良かった。&lt;br /&gt;
** 06-29　ナカハラちゃんの超絶ドタキャンにより１人ツーリング。時間の都合で都民の森で引き返した。&lt;br /&gt;
** 09-21　ようやく念願のナカハラちゃんとのツーリングで相模、宮ヶ瀬湖へ。エツシは体調不良で断念。&lt;br /&gt;
** 10-04　免許取得から 1 年が経過して、タンデムが可能に。&lt;br /&gt;
** 10-13　初のタンデムツーリングで相模湖・宮ヶ瀬湖へ。100 km ほどだったが異様に疲れた。&lt;br /&gt;
** 11-22　湘南・三浦半島ツーリング。&lt;br /&gt;
* 2014 年&lt;br /&gt;
** 03-23　相模湖・上野原早朝ツーリング。&lt;br /&gt;
** 05-01　初の一泊ツーリング。まったり富士山一周 (約 330 km)。&lt;br /&gt;
** 05-02　オイル・エレメント交換 (&amp;amp;yen;5,400)、負圧ホース交換 (&amp;amp;yen;3,350)。&lt;br /&gt;
** 05-17　相模湖・奥多摩湖ツーリング。&lt;br /&gt;
** 09-14　秩父ツーリング with ナカハラちゃん。エツシは仕事でドタキャン、前科２犯。&lt;br /&gt;
** 09-14　およそ 2 年でようやく 3,000 km 到達…。まだ下りカーブが怖い。&lt;br /&gt;
** 10-11　早朝ツーリング to 上野原〜小菅〜一の瀬高原〜勝沼 (約 230 km) *&lt;br /&gt;
** 11-19　住所変更を行って川崎ナンバーに。塩浜まで行くのは大変。&lt;br /&gt;
** 11-22　西房総半島ツーリング。スピードメータが壊れて距離がわからない。&lt;br /&gt;
** 12-27　スピードメータ修理。入力のギアが削れてしまっていたとのこと (&amp;amp;yen;410 + 工賃 = &amp;amp;yen;2,570)。&lt;br /&gt;
* 2015 年&lt;br /&gt;
** 04-31　一泊伊豆ツーリング。約 400 km&lt;br /&gt;
&lt;br /&gt;
== マシン情報 ==&lt;br /&gt;
&lt;br /&gt;
カスタムには全然興味がないので、どノーマルである。&lt;br /&gt;
&lt;br /&gt;
[[画像:20120831_hornet.jpg|300px]]&lt;br /&gt;
[[画像:20121102-hornet.jpg|300px]]&lt;br /&gt;
[[画像:20121110-hornet.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| 型式 || BA-MC31&lt;br /&gt;
|-&lt;br /&gt;
| 年式 || 2003&lt;br /&gt;
|-&lt;br /&gt;
| 走行距離 || 11,600 km&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
購入したバイク屋が Web に出していた画像をよく見ると、メータが 29,590 km となっているものがあったので、&lt;br /&gt;
おそらく 11,600 km というのは巻き戻されたものだろう。&lt;br /&gt;
&lt;br /&gt;
=== パーツ情報 ===&lt;br /&gt;
&lt;br /&gt;
交換したパーツの情報をメモっておく。&lt;br /&gt;
&lt;br /&gt;
; フロント ストップスイッチ&lt;br /&gt;
: [http://www.marunakayoko.net/2rin-parts-product.html?eid=00003&amp;amp;lid=5 NTB SSH-02] (35340-MM5-600)&lt;br /&gt;
; ストップ・テールランプ バルブ&lt;br /&gt;
: 12V18/5W&lt;br /&gt;
; スピードメータ ジョイント交換&lt;br /&gt;
: 410 円 + 工賃 2,160 円 = 2,570 円&lt;br /&gt;
&lt;br /&gt;
交換してないけどメモ。価格は２りんかんでのもの。&lt;br /&gt;
&lt;br /&gt;
; 左レバー&lt;br /&gt;
: 53718-KV0-000 : 1,228 円&lt;br /&gt;
; 右レバー&lt;br /&gt;
: 53170-MBW-006 : 2,593 円&lt;br /&gt;
; プラグ&lt;br /&gt;
: NGK CR9EH-9 : 787 円&lt;br /&gt;
; フロントタイヤ (130/70ZR16)&lt;br /&gt;
: DUNLOP GPR-200 : 18,600 円&lt;br /&gt;
; リアタイヤ (180/55ZR17)&lt;br /&gt;
: DUNLOP GPR-200 : 25,700 円&lt;br /&gt;
&lt;br /&gt;
== 走行・燃費記録 ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 日付       !! ODD       !! TRIP       !!  給油量  !! 燃費      !! 単価     !! 燃料代      !! 備考&lt;br /&gt;
|-&lt;br /&gt;
| 2012-10-27 || 11,6xx km || -          ||  -       || -         || -        || -           ||&lt;br /&gt;
|-&lt;br /&gt;
| 2012-11-13 || 11,800 km ||   202.6 km ||   9.17 L || 22.1 km/L || &amp;amp;yen;139 ||  &amp;amp;yen;1,275 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2012-12-01 || 11,915 km ||   115.8 km ||   5.98 L || 19.4 km/L || &amp;amp;yen;142 ||    &amp;amp;yen;849 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2012-12-10 || 12,077 km ||   161.7 km ||   8.28 L || 19.5 km/L || &amp;amp;yen;140 ||  &amp;amp;yen;1,159 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2013-02-02 || 12,303 km ||   226.5 km ||   9.83 L || 23.0 km/L || &amp;amp;yen;143 ||  &amp;amp;yen;1,406 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2013-03-30 || 12,443 km ||   139.0 km ||   8.27 L || 16.8 km/L || &amp;amp;yen;148 ||  &amp;amp;yen;1,224 || 倒れてこぼれた可能性が高い&lt;br /&gt;
|-&lt;br /&gt;
| 2013-05-01 || 12,627 km ||   183.9 km ||   8.83 L || 20.8 km/L || &amp;amp;yen;147 ||  &amp;amp;yen;1,298 || 近場をウロウロのみ&lt;br /&gt;
|-&lt;br /&gt;
| 2013-05-02 || 12,871 km ||   244.7 km ||   9.47 L || 25.8 km/L || &amp;amp;yen;147 ||  &amp;amp;yen;1,392 || 高速・ツーリング含む&lt;br /&gt;
|-&lt;br /&gt;
| 2013-06-29 || 13,030 km ||   158.0 km ||   7.55 L || 20.9 km/L || &amp;amp;yen;147 ||  &amp;amp;yen;1,110 || 近場をウロウロのみ&lt;br /&gt;
|-&lt;br /&gt;
| 2013-09-22 || 13,213 km ||   183.3 km ||   8.29 L || 22.1 km/L || &amp;amp;yen;152 ||  &amp;amp;yen;1,260 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2013-10-09 || 13,343 km ||   130.4 km ||   7.22 L || 18.0 km/L || &amp;amp;yen;147 ||  &amp;amp;yen;1,061 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2013-11-22 || 13,467 km ||   144.0 km ||   7.28 L || 19.8 km/L || &amp;amp;yen;146 ||  &amp;amp;yen;1,063 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-01-28 || -         ||   -        ||  10.72 L || -         || &amp;amp;yen;157 ||  &amp;amp;yen;1,683 || 距離未記録&lt;br /&gt;
|-&lt;br /&gt;
| 2014-05-01 || 13,856 km ||   369.0 km ||   6.69 L || 21.2 km/L || &amp;amp;yen;157 ||  &amp;amp;yen;1,050 || 燃費は 11/22 からの値&lt;br /&gt;
|-&lt;br /&gt;
| 2014-05-02 || 14,081 km ||   224.4 km ||   8.24 L || 27.2 km/L || &amp;amp;yen;159 ||  &amp;amp;yen;1,310 || 高速あり&lt;br /&gt;
|-&lt;br /&gt;
| 2014-05-17 || 14,258 km ||   176.8 km ||   7.74 L || 22.8 km/L || &amp;amp;yen;158 ||  &amp;amp;yen;1,223 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-08-08 || 14,457 km ||   199.6 km ||   8.98 L || 22.2 km/L || &amp;amp;yen;163 ||  &amp;amp;yen;1,464 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-09-14 || 14,613 km ||   155.0 km ||   7.06 L || 22.0 km/L || &amp;amp;yen;160 ||  &amp;amp;yen;1,130 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-10-11 || 14,808 km ||   195.4 km ||   8.07 L || 24.2 km/L || &amp;amp;yen;154 ||  &amp;amp;yen;1,243 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-11-19 || 15,071 km ||   262.7 km ||  11.01 L || 23.9 km/L || &amp;amp;yen;152 ||  &amp;amp;yen;1,674 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-12-12 || 15,287 km ||  約 300 km ||  12.10 L || 24.8 km/L || &amp;amp;yen;139 ||  &amp;amp;yen;1,606 || メーター故障により推測距離&lt;br /&gt;
|-&lt;br /&gt;
| 2015-04-29 || 15,394 km ||   107.0 km ||    7.68 L || 13.9 km/L || &amp;amp;yen;129 ||  &amp;amp;yen;991 || 多めに入れた＆タンデム多し&lt;br /&gt;
|-&lt;br /&gt;
| 2015-05-01 || 15,668 km ||   274.0 km ||    9.94 L || 27.6 km/L || &amp;amp;yen;148 ||  &amp;amp;yen;1,471 || ツーリング中。伊豆高い&lt;br /&gt;
|-&lt;br /&gt;
! 合計               !! -                !!  4153.8 km || 188.40 L || 22.0 km/L || -            || &amp;amp;yen;27,942 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 関連リンク ==&lt;br /&gt;
* [http://www.honda.co.jp/pressroom/products/motor/hornet/hornet_1996-01-25/ Honda | バイク製品アーカイブ 「ホーネット」]&lt;br /&gt;
* [http://ja.wikipedia.org/wiki/%E3%83%9B%E3%83%B3%E3%83%80%E3%83%BB%E3%83%9B%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88 ホンダ・ホーネット - Wikipedia]&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
=== 回転数と速度の関係 ===&lt;br /&gt;
&lt;br /&gt;
理論値を計算してみた。&lt;br /&gt;
&lt;br /&gt;
 rpm  1000   2000   3000   4000   5000   6000   7000   8000   9000  10000  11000  12000  13000  14000  15000  16000&lt;br /&gt;
 1st  4.56   9.13  13.69  18.25  22.82  27.38  31.94  36.50  41.07  45.63  50.19  54.76  59.32  63.88  68.45  73.01&lt;br /&gt;
 2nd  6.24  12.47  18.71  24.94  31.18  37.41  43.65  49.88  56.12  62.35  68.59  74.82  81.06  87.30  93.53  99.77&lt;br /&gt;
 3rd  7.84  15.69  23.53  31.37  39.22  47.06  54.90  62.75  70.59  78.43  86.28  94.12 101.96 109.81 117.65 125.49&lt;br /&gt;
 4th  9.46  18.92  28.39  37.85  47.31  56.77  66.23  75.70  85.16  94.62 104.08 113.54 123.00 132.47 141.93 151.39&lt;br /&gt;
 5th 11.22  22.45  33.67  44.90  56.12  67.35  78.57  89.80 101.02 112.25 123.47 134.70 145.92 157.15 168.37 179.60&lt;br /&gt;
 6th 12.92  25.85  38.77  51.69  64.62  77.54  90.46 103.38 116.31 129.23 142.15 155.08 168.00 180.92 193.85 206.77&lt;br /&gt;
&lt;br /&gt;
 km/h   10     20     30     40     50     60     70     80     90    100    110    120    130    140    150    160&lt;br /&gt;
 1st  2182   4378   6574   8757  10953  13149  15331&lt;br /&gt;
 2nd  1597   3204   4811   6408   8015   9622  11219  12826  14433  16031&lt;br /&gt;
 3rd  1269   2547   3824   5094   6372   7649   8919  10197  11474  12744  14022  15299&lt;br /&gt;
 4th  1052   2111   3170   4223   5282   6341   7393   8452   9511  10564  11623  12682  13735  14794  15853&lt;br /&gt;
 5th   887   1779   2672   3559   4452   5345   6232   7125   8017   8905   9797  10690  11577  12470  13363  14250&lt;br /&gt;
 6th   770   1546   2321   3092   3867   4642   5413   6188   6964   7735   8510   9285  10056  10831  11607  12377&lt;br /&gt;
&lt;br /&gt;
=== 使用可能なタイヤ ===&lt;br /&gt;
&lt;br /&gt;
今は以下くらいしか無さそう。&lt;br /&gt;
&lt;br /&gt;
* BRIDGESTONE&lt;br /&gt;
** [http://www.bridgestone.co.jp/personal/mc/products/battlax/s20.html BATTLAX HYPERSPORT S20]&lt;br /&gt;
** [http://www.bridgestone.co.jp/personal/mc/products/battlax/bt56.html BATTLAX BT-56]&lt;br /&gt;
* DUNLOP&lt;br /&gt;
** [http://ridersnavi.com/catalogue/tyre/Roadsport/ SPORTMAX Roadsport]&lt;br /&gt;
** [http://ridersnavi.com/catalogue/tyre/GPR200/ SPORTMAX GPR-200]&lt;br /&gt;
** [http://ridersnavi.com/catalogue/tyre/a13/ SPORTMAX α-13Z]&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=%E3%83%9B%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88&amp;diff=1064</id>
		<title>ホーネット</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=%E3%83%9B%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88&amp;diff=1064"/>
				<updated>2015-05-07T12:59:05Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: /* 来歴 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ひっそりと記録開始。&lt;br /&gt;
&lt;br /&gt;
== 来歴 ==&lt;br /&gt;
&lt;br /&gt;
* 2012 年&lt;br /&gt;
** 07-xx　唐突にバイクに乗ってみたくなり、自動車学校に通い始める。普通二輪、土日のみ。&lt;br /&gt;
** 08-31　免許も未取得ながら、HONDA ホーネット購入。&lt;br /&gt;
** 09-29　技能試験に合格。&lt;br /&gt;
** 10-04　免許を更新。&lt;br /&gt;
** 10-27　ようやく納車。&lt;br /&gt;
** 11-13　200 km 到達、かつ初エンスト。1 速に入ったまま誤ってクラッチを放す。さらに満タン納車だったため、初給油。&lt;br /&gt;
** 12-01　初の (なんちゃって) ツーリング。途中でみぞれが降り出し引き返し、48 km くらい。雨の中走ったのも、教習所含めて初。&lt;br /&gt;
** 12-10　奥多摩湖までツーリング。さすがに超寒い。片道 2 時間、総走行距離は 120 km くらいだった。&lt;br /&gt;
* 2013 年&lt;br /&gt;
** 02-08　駐車場で倒れてしまっていて、フロント左ウィンカーを破損。接着剤とビニールテープで修繕…。&lt;br /&gt;
** 03-30　友人と相模湖までツーリングに出かけたものの、途中で雨が降り出したためあえなく断念。&lt;br /&gt;
** 05-01　秩父へツーリング。初高速道路、初 200 km 超走行で疲労困憊したが楽しすぎる。&lt;br /&gt;
** 05-25　相模湖・宮ヶ瀬湖へツーリング。フラッと走りに行くには丁度良い距離で、アップダウンもあって良かった。&lt;br /&gt;
** 06-29　ナカハラちゃんの超絶ドタキャンにより１人ツーリング。時間の都合で都民の森で引き返した。&lt;br /&gt;
** 09-21　ようやく念願のナカハラちゃんとのツーリングで相模、宮ヶ瀬湖へ。エツシは体調不良で断念。&lt;br /&gt;
** 10-04　免許取得から 1 年が経過して、タンデムが可能に。&lt;br /&gt;
** 10-13　初のタンデムツーリングで相模湖・宮ヶ瀬湖へ。100 km ほどだったが異様に疲れた。&lt;br /&gt;
** 11-22　湘南・三浦半島ツーリング。&lt;br /&gt;
* 2014 年&lt;br /&gt;
** 03-23　相模湖・上野原早朝ツーリング。&lt;br /&gt;
** 05-01　初の一泊ツーリング。まったり富士山一周 (約 330 km)。&lt;br /&gt;
** 05-02　オイル・エレメント交換 (&amp;amp;yen;5,400)、負圧ホース交換 (&amp;amp;yen;3,350)。&lt;br /&gt;
** 05-17　相模湖・奥多摩湖ツーリング。&lt;br /&gt;
** 09-14　秩父ツーリング with ナカハラちゃん。エツシは仕事でドタキャン、前科２犯。&lt;br /&gt;
** 09-14　およそ 2 年でようやく 3,000 km 到達…。まだ下りカーブが怖い。&lt;br /&gt;
** 10-11　早朝ツーリング to 上野原〜小菅〜一の瀬高原〜勝沼 (約 230 km) *&lt;br /&gt;
** 11-19　住所変更を行って川崎ナンバーに。塩浜まで行くのは大変。&lt;br /&gt;
** 11-22　西房総半島ツーリング。スピードメータが壊れて距離がわからない。&lt;br /&gt;
** 12-27　スピードメータ修理。入力のギアが削れてしまっていたとのこと (&amp;amp;yen;410 + 工賃 = &amp;amp;yen;2,570)。&lt;br /&gt;
* 2015 年&lt;br /&gt;
** 04-31　一泊伊豆ツーリング。約 400 km&lt;br /&gt;
&lt;br /&gt;
== マシン情報 ==&lt;br /&gt;
&lt;br /&gt;
カスタムには全然興味がないので、どノーマルである。&lt;br /&gt;
&lt;br /&gt;
[[画像:20120831_hornet.jpg|300px]]&lt;br /&gt;
[[画像:20121102-hornet.jpg|300px]]&lt;br /&gt;
[[画像:20121110-hornet.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| 型式 || BA-MC31&lt;br /&gt;
|-&lt;br /&gt;
| 年式 || 2003&lt;br /&gt;
|-&lt;br /&gt;
| 走行距離 || 11,600 km&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
購入したバイク屋が Web に出していた画像をよく見ると、メータが 29,590 km となっているものがあったので、&lt;br /&gt;
おそらく 11,600 km というのは巻き戻されたものだろう。&lt;br /&gt;
&lt;br /&gt;
=== パーツ情報 ===&lt;br /&gt;
&lt;br /&gt;
交換したパーツの情報をメモっておく。&lt;br /&gt;
&lt;br /&gt;
; フロント ストップスイッチ&lt;br /&gt;
: [http://www.marunakayoko.net/2rin-parts-product.html?eid=00003&amp;amp;lid=5 NTB SSH-02] (35340-MM5-600)&lt;br /&gt;
; ストップ・テールランプ バルブ&lt;br /&gt;
: 12V18/5W&lt;br /&gt;
; スピードメータ ジョイント交換&lt;br /&gt;
: 410 円 + 工賃 2,160 円 = 2,570 円&lt;br /&gt;
&lt;br /&gt;
交換してないけどメモ。価格は２りんかんでのもの。&lt;br /&gt;
&lt;br /&gt;
; 左レバー&lt;br /&gt;
: 53718-KV0-000 : 1,228 円&lt;br /&gt;
; 右レバー&lt;br /&gt;
: 53170-MBW-006 : 2,593 円&lt;br /&gt;
; プラグ&lt;br /&gt;
: NGK CR9EH-9 : 787 円&lt;br /&gt;
; フロントタイヤ (130/70ZR16)&lt;br /&gt;
: DUNLOP GPR-200 : 18,600 円&lt;br /&gt;
; リアタイヤ (180/55ZR17)&lt;br /&gt;
: DUNLOP GPR-200 : 25,700 円&lt;br /&gt;
&lt;br /&gt;
== 走行・燃費記録 ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 日付       !! ODD       !! TRIP       !!  給油量  !! 燃費      !! 単価     !! 燃料代      !! 備考&lt;br /&gt;
|-&lt;br /&gt;
| 2012-10-27 || 11,6xx km || -          ||  -       || -         || -        || -           ||&lt;br /&gt;
|-&lt;br /&gt;
| 2012-11-13 || 11,800 km ||   202.6 km ||   9.17 L || 22.1 km/L || &amp;amp;yen;139 ||  &amp;amp;yen;1,275 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2012-12-01 || 11,915 km ||   115.8 km ||   5.98 L || 19.4 km/L || &amp;amp;yen;142 ||    &amp;amp;yen;849 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2012-12-10 || 12,077 km ||   161.7 km ||   8.28 L || 19.5 km/L || &amp;amp;yen;140 ||  &amp;amp;yen;1,159 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2013-02-02 || 12,303 km ||   226.5 km ||   9.83 L || 23.0 km/L || &amp;amp;yen;143 ||  &amp;amp;yen;1,406 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2013-03-30 || 12,443 km ||   139.0 km ||   8.27 L || 16.8 km/L || &amp;amp;yen;148 ||  &amp;amp;yen;1,224 || 倒れてこぼれた可能性が高い&lt;br /&gt;
|-&lt;br /&gt;
| 2013-05-01 || 12,627 km ||   183.9 km ||   8.83 L || 20.8 km/L || &amp;amp;yen;147 ||  &amp;amp;yen;1,298 || 近場をウロウロのみ&lt;br /&gt;
|-&lt;br /&gt;
| 2013-05-02 || 12,871 km ||   244.7 km ||   9.47 L || 25.8 km/L || &amp;amp;yen;147 ||  &amp;amp;yen;1,392 || 高速・ツーリング含む&lt;br /&gt;
|-&lt;br /&gt;
| 2013-06-29 || 13,030 km ||   158.0 km ||   7.55 L || 20.9 km/L || &amp;amp;yen;147 ||  &amp;amp;yen;1,110 || 近場をウロウロのみ&lt;br /&gt;
|-&lt;br /&gt;
| 2013-09-22 || 13,213 km ||   183.3 km ||   8.29 L || 22.1 km/L || &amp;amp;yen;152 ||  &amp;amp;yen;1,260 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2013-10-09 || 13,343 km ||   130.4 km ||   7.22 L || 18.0 km/L || &amp;amp;yen;147 ||  &amp;amp;yen;1,061 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2013-11-22 || 13,467 km ||   144.0 km ||   7.28 L || 19.8 km/L || &amp;amp;yen;146 ||  &amp;amp;yen;1,063 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-01-28 || -         ||   -        ||  10.72 L || -         || &amp;amp;yen;157 ||  &amp;amp;yen;1,683 || 距離未記録&lt;br /&gt;
|-&lt;br /&gt;
| 2014-05-01 || 13,856 km ||   369.0 km ||   6.69 L || 21.2 km/L || &amp;amp;yen;157 ||  &amp;amp;yen;1,050 || 燃費は 11/22 からの値&lt;br /&gt;
|-&lt;br /&gt;
| 2014-05-02 || 14,081 km ||   224.4 km ||   8.24 L || 27.2 km/L || &amp;amp;yen;159 ||  &amp;amp;yen;1,310 || 高速あり&lt;br /&gt;
|-&lt;br /&gt;
| 2014-05-17 || 14,258 km ||   176.8 km ||   7.74 L || 22.8 km/L || &amp;amp;yen;158 ||  &amp;amp;yen;1,223 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-08-08 || 14,457 km ||   199.6 km ||   8.98 L || 22.2 km/L || &amp;amp;yen;163 ||  &amp;amp;yen;1,464 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-09-14 || 14,613 km ||   155.0 km ||   7.06 L || 22.0 km/L || &amp;amp;yen;160 ||  &amp;amp;yen;1,130 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-10-11 || 14,808 km ||   195.4 km ||   8.07 L || 24.2 km/L || &amp;amp;yen;154 ||  &amp;amp;yen;1,243 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-11-19 || 15,071 km ||   262.7 km ||  11.01 L || 23.9 km/L || &amp;amp;yen;152 ||  &amp;amp;yen;1,674 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-12-12 || 15,287 km ||  約 300 km ||  12.10 L || 24.8 km/L || &amp;amp;yen;139 ||  &amp;amp;yen;1,606 || メーター故障により推測距離&lt;br /&gt;
|-&lt;br /&gt;
! 合計       !! -         !!  3772.8 km || 170.78 L || 22.1 km/L || -        || &amp;amp;yen;25,480 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 関連リンク ==&lt;br /&gt;
* [http://www.honda.co.jp/pressroom/products/motor/hornet/hornet_1996-01-25/ Honda | バイク製品アーカイブ 「ホーネット」]&lt;br /&gt;
* [http://ja.wikipedia.org/wiki/%E3%83%9B%E3%83%B3%E3%83%80%E3%83%BB%E3%83%9B%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88 ホンダ・ホーネット - Wikipedia]&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
=== 回転数と速度の関係 ===&lt;br /&gt;
&lt;br /&gt;
理論値を計算してみた。&lt;br /&gt;
&lt;br /&gt;
 rpm  1000   2000   3000   4000   5000   6000   7000   8000   9000  10000  11000  12000  13000  14000  15000  16000&lt;br /&gt;
 1st  4.56   9.13  13.69  18.25  22.82  27.38  31.94  36.50  41.07  45.63  50.19  54.76  59.32  63.88  68.45  73.01&lt;br /&gt;
 2nd  6.24  12.47  18.71  24.94  31.18  37.41  43.65  49.88  56.12  62.35  68.59  74.82  81.06  87.30  93.53  99.77&lt;br /&gt;
 3rd  7.84  15.69  23.53  31.37  39.22  47.06  54.90  62.75  70.59  78.43  86.28  94.12 101.96 109.81 117.65 125.49&lt;br /&gt;
 4th  9.46  18.92  28.39  37.85  47.31  56.77  66.23  75.70  85.16  94.62 104.08 113.54 123.00 132.47 141.93 151.39&lt;br /&gt;
 5th 11.22  22.45  33.67  44.90  56.12  67.35  78.57  89.80 101.02 112.25 123.47 134.70 145.92 157.15 168.37 179.60&lt;br /&gt;
 6th 12.92  25.85  38.77  51.69  64.62  77.54  90.46 103.38 116.31 129.23 142.15 155.08 168.00 180.92 193.85 206.77&lt;br /&gt;
&lt;br /&gt;
 km/h   10     20     30     40     50     60     70     80     90    100    110    120    130    140    150    160&lt;br /&gt;
 1st  2182   4378   6574   8757  10953  13149  15331&lt;br /&gt;
 2nd  1597   3204   4811   6408   8015   9622  11219  12826  14433  16031&lt;br /&gt;
 3rd  1269   2547   3824   5094   6372   7649   8919  10197  11474  12744  14022  15299&lt;br /&gt;
 4th  1052   2111   3170   4223   5282   6341   7393   8452   9511  10564  11623  12682  13735  14794  15853&lt;br /&gt;
 5th   887   1779   2672   3559   4452   5345   6232   7125   8017   8905   9797  10690  11577  12470  13363  14250&lt;br /&gt;
 6th   770   1546   2321   3092   3867   4642   5413   6188   6964   7735   8510   9285  10056  10831  11607  12377&lt;br /&gt;
&lt;br /&gt;
=== 使用可能なタイヤ ===&lt;br /&gt;
&lt;br /&gt;
今は以下くらいしか無さそう。&lt;br /&gt;
&lt;br /&gt;
* BRIDGESTONE&lt;br /&gt;
** [http://www.bridgestone.co.jp/personal/mc/products/battlax/s20.html BATTLAX HYPERSPORT S20]&lt;br /&gt;
** [http://www.bridgestone.co.jp/personal/mc/products/battlax/bt56.html BATTLAX BT-56]&lt;br /&gt;
* DUNLOP&lt;br /&gt;
** [http://ridersnavi.com/catalogue/tyre/Roadsport/ SPORTMAX Roadsport]&lt;br /&gt;
** [http://ridersnavi.com/catalogue/tyre/GPR200/ SPORTMAX GPR-200]&lt;br /&gt;
** [http://ridersnavi.com/catalogue/tyre/a13/ SPORTMAX α-13Z]&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=Python&amp;diff=1063</id>
		<title>Python</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=Python&amp;diff=1063"/>
				<updated>2015-04-27T23:36:22Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: /* ファイルか標準入力から読む */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;かなり忘れつつある Python について。&lt;br /&gt;
&lt;br /&gt;
== 参考リンク ==&lt;br /&gt;
* [http://www.python.jp/doc/release/index.html Python 2.5 ドキュメント - 19th September, 2006]&lt;br /&gt;
* [http://www.unixuser.org/~euske/doc/python/tutorial0917.html Python 講習会 資料] ― 古いけど、まとまっていて見やすい。&lt;br /&gt;
&lt;br /&gt;
== 覚え書き ==&lt;br /&gt;
* グローバル変数など、外側のスコープにある変数は読み出し専用となる。&amp;lt;code&amp;gt;global&amp;lt;/code&amp;gt; 文を使えば代入できる。&lt;br /&gt;
* 一定時間待ちを入れる場合は、&amp;lt;code&amp;gt;import time&amp;lt;/code&amp;gt; して &amp;lt;code&amp;gt;time.sleep(n)&amp;lt;/code&amp;gt; を使う。&lt;br /&gt;
* gzip コマンドで圧縮したデータを zlib モジュールでは展開できない (ヘッダが異なるため)。gzip + StringIO モジュールを使って回避する。&lt;br /&gt;
* 対話モードでは、最後に表示された結果は変数 &amp;lt;code&amp;gt;_&amp;lt;/code&amp;gt; に代入される。&lt;br /&gt;
* &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt; の末尾にコンマを入れると、改行されない。&amp;lt;code&amp;gt;print &amp;quot;hoge&amp;quot;,&amp;lt;/code&amp;gt;&lt;br /&gt;
* 一つの要素のタプルは、値の後ろにコンマを付ける。&amp;lt;code&amp;gt;(&amp;quot;hoge&amp;quot;,)&amp;lt;/code&amp;gt;&lt;br /&gt;
* 複数の比較演算子を &amp;lt;code&amp;gt;a &amp;lt; b == c&amp;lt;/code&amp;gt; のように書ける素晴らしい言語。&lt;br /&gt;
* &amp;lt;code&amp;gt;print &amp;gt;&amp;gt; sys.stderr, ...&amp;lt;/code&amp;gt; で標準エラーに出力&lt;br /&gt;
&lt;br /&gt;
== 文字列 ==&lt;br /&gt;
* シングルクォートとダブルクオートに違いはない。&lt;br /&gt;
** エスケープシーケンスを無視する場合は raw 文字列を使う。&amp;lt;code&amp;gt;r&amp;quot;raw 文字列\n&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* 三重クォート &amp;lt;nowiki&amp;gt;&amp;quot;&amp;quot;&amp;quot; あるいは '''&amp;lt;/nowiki&amp;gt; は改行をそのまま含めることができる。&lt;br /&gt;
* 連結は + 演算子を用いる。&lt;br /&gt;
** 文字列リテラルは、列記で連結可能。&amp;lt;code&amp;gt;&amp;quot;ho&amp;quot; &amp;quot;ge&amp;quot; → &amp;quot;hoge&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; 組み込み関数でバイト数を得る。&lt;br /&gt;
** マルチバイトを考慮した文字数は &amp;lt;code&amp;gt;len(str.decode(&amp;quot;UTF-8&amp;quot;))&amp;lt;/code&amp;gt; で得ることができる。&lt;br /&gt;
* &amp;lt;code&amp;gt;in&amp;lt;/code&amp;gt; で包含判定ができる&lt;br /&gt;
* &amp;lt;code&amp;gt;int(str)&amp;lt;/code&amp;gt; で整数に変換。第 2 引き数で基数指定可能。&lt;br /&gt;
&lt;br /&gt;
=== スライス ===&lt;br /&gt;
文字の間に添字を置くとわかりやすい。&lt;br /&gt;
 s = &amp;quot;H e l l o&amp;quot;&lt;br /&gt;
     0 1 2 3 4 5&lt;br /&gt;
   - 5 4 3 2 1   ← ここは -0 でないことに注意!! (0 = -0 のため)&lt;br /&gt;
 &lt;br /&gt;
 s[1]   → 'e'&lt;br /&gt;
 s[:3]  → 'Hel' # 先頭 3 文字&lt;br /&gt;
 s[3:]  → 'lo'&lt;br /&gt;
 s[-4]  → 'e'&lt;br /&gt;
 s[-3:] → 'llo' # 末尾 3 文字&lt;br /&gt;
 s[:-1] → 'Hell' # 最後の 1 文字を削る (改行削りに有用)&lt;br /&gt;
 s[:]   → コピーを作る&lt;br /&gt;
&lt;br /&gt;
== リスト ==&lt;br /&gt;
書くのが面倒なくらい柔軟性に富んだデータ型である。&lt;br /&gt;
* 変更可能 (mutable)&lt;br /&gt;
* 入れ子可能 (リストの要素をリストにできる)&lt;br /&gt;
* 文字列と同様のスライス表現で操作できる。&lt;br /&gt;
* &amp;lt;code&amp;gt;len()&amp;lt;/code&amp;gt; でリストの長さを得る。&lt;br /&gt;
&lt;br /&gt;
 a = []          # 初期化、クリア&lt;br /&gt;
 a = [0, 3, 5]&lt;br /&gt;
 a[1:1] = [1, 2] # 挿入 → [0, 1, 2, 3, 5]&lt;br /&gt;
 a[1:4] = []     # 削除 → [0, 5]&lt;br /&gt;
 a = a + [6, 7]  # 連結 → [0, 5, 6, 7]&lt;br /&gt;
 a = a * 2       # 連続 → [0, 5, 6, 7, 0, 5, 6, 7]&lt;br /&gt;
&lt;br /&gt;
* [http://www.python.jp/doc/2.5/tut/node7.html 5. データ構造]&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
=== リストを N 分割する ===&lt;br /&gt;
ちょうど N 個に分割するわけではなく、最大で N 個なので注意。&lt;br /&gt;
&lt;br /&gt;
 def split_list(list, n):&lt;br /&gt;
     l = len(list)&lt;br /&gt;
     size = l / n + (l % n &amp;gt; 0)&lt;br /&gt;
     return [ list[i:i+size] for i in range(0, l, size) ]&lt;br /&gt;
&lt;br /&gt;
こんな感じで分割したリストのリストになる。&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; l = [1,2,3,4,5,7,8,9,10]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 2)&lt;br /&gt;
 [[1, 2, 3, 4, 5], [7, 8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 3)&lt;br /&gt;
 [[1, 2, 3], [4, 5, 7], [8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 4)&lt;br /&gt;
 [[1, 2, 3], [4, 5, 7], [8, 9, 10]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; split_list(l, 5)&lt;br /&gt;
 [[1, 2], [3, 4], [5, 7], [8, 9], [10]]&lt;br /&gt;
&lt;br /&gt;
=== モジュールに定義された名前のリスト ===&lt;br /&gt;
&lt;br /&gt;
dir 関数を使う。(忘れやすい)&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir()&lt;br /&gt;
 ['__builtins__', '__doc__', '__name__', '__package__']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; import time&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir()&lt;br /&gt;
 ['__builtins__', '__doc__', '__name__', '__package__', 'time']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir(time)&lt;br /&gt;
 ['__doc__', '__file__', '__name__', '__package__', 'accept2dyear', 'altzone', 'asctime', 'clock',&lt;br /&gt;
 'ctime', 'daylight', 'gmtime', 'localtime', 'mktime', 'sleep', 'strftime', 'strptime',&lt;br /&gt;
 'struct_time', 'time', 'timezone', 'tzname', 'tzset']&lt;br /&gt;
&lt;br /&gt;
=== socket の setsockopt() を使う ===&lt;br /&gt;
&lt;br /&gt;
* SO_KEEPALIVE の場合&lt;br /&gt;
&lt;br /&gt;
 import socket&lt;br /&gt;
 s = socket.socket()&lt;br /&gt;
 s.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)&lt;br /&gt;
&lt;br /&gt;
* SO_LINGER の場合&lt;br /&gt;
&lt;br /&gt;
 import socket&lt;br /&gt;
 import struct&lt;br /&gt;
 s = socket.socket()&lt;br /&gt;
 s.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack('ii', 1, 30))&lt;br /&gt;
&lt;br /&gt;
== テンプレート ==&lt;br /&gt;
&lt;br /&gt;
=== awk 風 Python スクリプトテンプレート ===&lt;br /&gt;
&lt;br /&gt;
テキスト処理を何でもかんでも簡単な awk で済ませちゃうクセがついてしまったので、&lt;br /&gt;
自分に Python を使うように仕向けるための awk 風テンプレート。&lt;br /&gt;
&lt;br /&gt;
FS, NR, FILENAME, FNR, NF, s[0], s[1..NF] が利用可能。&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/env python&lt;br /&gt;
 import sys&lt;br /&gt;
 &lt;br /&gt;
 if len(sys.argv) == 1:&lt;br /&gt;
     files = [ sys.stdin ]&lt;br /&gt;
 else:&lt;br /&gt;
     files = [ open(f) for f in sys.argv[1:] ]&lt;br /&gt;
 &lt;br /&gt;
 ### BEGIN {&lt;br /&gt;
 FS = None&lt;br /&gt;
 &lt;br /&gt;
 ### }&lt;br /&gt;
 &lt;br /&gt;
 NR = 0&lt;br /&gt;
 for file in files:&lt;br /&gt;
     FNR = 0; FILENAME = file.name&lt;br /&gt;
     for line in file:&lt;br /&gt;
         NR += 1; FNR += 1&lt;br /&gt;
         s = line.split(FS)&lt;br /&gt;
         s[0:0] = [ line[:-1] ]&lt;br /&gt;
         NF = len(s)&lt;br /&gt;
         # print NR, FILENAME, FNR, NF, s&lt;br /&gt;
         ### {&lt;br /&gt;
 &lt;br /&gt;
         ### }&lt;br /&gt;
 &lt;br /&gt;
 ### END {&lt;br /&gt;
 &lt;br /&gt;
 ### }&lt;br /&gt;
&lt;br /&gt;
=== ファイルか標準入力から読む ===&lt;br /&gt;
&lt;br /&gt;
ファイルが指定されれば、それらをすべて処理し、指定されなければ標準入力から読む。&lt;br /&gt;
&lt;br /&gt;
 import sys&lt;br /&gt;
 &lt;br /&gt;
 if len(sys.argv) == 1:&lt;br /&gt;
     files = [ sys.stdin ]&lt;br /&gt;
 else:&lt;br /&gt;
     files = [ open(f) for f in sys.argv[1:] ]&lt;br /&gt;
 &lt;br /&gt;
 for file in files:&lt;br /&gt;
     ...&lt;br /&gt;
&lt;br /&gt;
* [http://docs.python.jp/2/library/fileinput.html fileinput モジュール] というのがあった…&lt;br /&gt;
&lt;br /&gt;
=== getopt ===&lt;br /&gt;
どの言語でもこいつだけはテンプレート化する必要がある。。&lt;br /&gt;
&lt;br /&gt;
ソースコード &amp;lt;toggledisplay&amp;gt;&lt;br /&gt;
 import sys&lt;br /&gt;
 import getopt&lt;br /&gt;
 &lt;br /&gt;
 def usage(exit_code):&lt;br /&gt;
     out = (exit_code and sys.stderr) or sys.stdout&lt;br /&gt;
     print &amp;gt;&amp;gt; out, 'Usage: %s [-a] [-b str]' % sys.argv[0]&lt;br /&gt;
     sys.exit(exit_code)&lt;br /&gt;
 &lt;br /&gt;
 try:&lt;br /&gt;
     opts, args = getopt.getopt(sys.argv[1:], 'ab:h')&lt;br /&gt;
 except getopt.GetoptError:&lt;br /&gt;
     usage(1)&lt;br /&gt;
 &lt;br /&gt;
 (opt_a, opt_b) = (False, None) # defaults&lt;br /&gt;
 for (opt, val) in opts:&lt;br /&gt;
     if opt == '-a':&lt;br /&gt;
         opt_a = True&lt;br /&gt;
     elif opt == '-b':&lt;br /&gt;
         opt_b = val&lt;br /&gt;
     elif opt == '-h':&lt;br /&gt;
          usage(0)&lt;br /&gt;
     else:&lt;br /&gt;
          usage(1)&lt;br /&gt;
 &lt;br /&gt;
 for arg in args: # remainder&lt;br /&gt;
     ...&lt;br /&gt;
&amp;lt;/toggledisplay&amp;gt;&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=RHEL&amp;diff=1062</id>
		<title>RHEL</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=RHEL&amp;diff=1062"/>
				<updated>2015-04-13T12:01:44Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: /* カーネルバージョン */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;言わずと知れた(?) Red Hat Enterprise Linux のページ。赤帽。&lt;br /&gt;
&lt;br /&gt;
もちろん、RHEL を買えるわけがないので、CentOS で代用しています。&lt;br /&gt;
CentOS って何？って方は、[http://ja.wikipedia.org/wiki/CentOS Wikipedia] をご覧下さい。&lt;br /&gt;
&lt;br /&gt;
== カーネルバージョン ==&lt;br /&gt;
&lt;br /&gt;
こんなページがあった…。&lt;br /&gt;
* [https://access.redhat.com/ja/articles/16476 Red Hat Enterprise Linux のリリース日と収録カーネルの一覧]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! RHEL バージョン !! カーネルバージョン !! リリース !! 最終 !! 提供カーネル !! リリース日 !! 経過日数&lt;br /&gt;
|-&lt;br /&gt;
| 7.0 || rowspan=&amp;quot;2&amp;quot; | 3.10.0 || 123.el7&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2015-0102.html 123.20.1.el7] || rowspan=&amp;quot;2&amp;quot; | kernel || 2014-06-10 ||&lt;br /&gt;
|-&lt;br /&gt;
| 7.1 || [https://rhn.redhat.com/errata/RHSA-2015-0290.html 229.el7]&lt;br /&gt;
| 229.xx.x.el7 || 2015-03-05 || 268&lt;br /&gt;
|-&lt;br /&gt;
| 6 Beta 1 || rowspan=&amp;quot;9&amp;quot; | 2.6.32 || 19.el6 || || rowspan=&amp;quot;9&amp;quot; | kernel || 2010-04-22 ||&lt;br /&gt;
|-&lt;br /&gt;
| 6 Beta 2 || 37.el6 || || 2010-06-30 ||&lt;br /&gt;
|-&lt;br /&gt;
| 6.0 || 71.el6&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2011-0498.html 71.29.1.el6] || 2010-11-10 ||&lt;br /&gt;
|-&lt;br /&gt;
| 6.1 || [http://rhn.redhat.com/errata/RHSA-2011-0542.html 131.0.15.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2011-1465.html 131.21.1.el6] || 2011-05-19 || 190&lt;br /&gt;
|-&lt;br /&gt;
| 6.2 || [http://rhn.redhat.com/errata/RHSA-2011-1530.html 220.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2012-0743.html 220.23.1.el6] || 2011-12-06 || 201&lt;br /&gt;
|-&lt;br /&gt;
| 6.3 || [http://rhn.redhat.com/errata/RHSA-2012-0862.html 279.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2013-0223.html 279.22.1.el6] || 2012-06-20 || 197&lt;br /&gt;
|-&lt;br /&gt;
| 6.4 || [http://rhn.redhat.com/errata/RHSA-2013-0496.html 358.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2013-1436.html 358.23.2.el6] || 2013-02-21 || 246&lt;br /&gt;
|-&lt;br /&gt;
| 6.5 || [http://rhn.redhat.com/errata/RHSA-2013-1645.html 431.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2014-1167.html 431.29.2.el6] || 2013-11-21 || 273&lt;br /&gt;
|-&lt;br /&gt;
| 6.6 || [http://rhn.redhat.com/errata/RHSA-2014-1392.html 504.el6]&lt;br /&gt;
| 504.xx.x.el6 || 2014-10-14 || 327&lt;br /&gt;
|-&lt;br /&gt;
| 5.0&lt;br /&gt;
| rowspan=&amp;quot;13&amp;quot; | 2.6.18 || 8.el5 || 8.1.15.el5&lt;br /&gt;
| rowspan=&amp;quot;13&amp;quot; | kernel&amp;lt;br&amp;gt;kernel-PAE&amp;lt;br&amp;gt;kernel-xen || 2007-03-14 ||&lt;br /&gt;
|-&lt;br /&gt;
| 5.1 || [http://rhn.redhat.com/errata/RHBA-2007-0959.html 53.el5] || 53.1.21.el5 || 2007-11-07 || 238&lt;br /&gt;
|-&lt;br /&gt;
| 5.2 || [http://rhn.redhat.com/errata/RHBA-2008-0314.html 92.el5] || 92.1.22.el5 || 2008-05-21 || 196&lt;br /&gt;
|-&lt;br /&gt;
| 5.3 || [http://rhn.redhat.com/errata/RHSA-2009-0225.html 128.el5] || 128.7.1.el5 || 2009-01-20 || 244&lt;br /&gt;
|-&lt;br /&gt;
| 5.4 || [http://rhn.redhat.com/errata/RHSA-2009-1243.html 164.el5] || 164.15.1.el5 || 2009-09-01 || 224&lt;br /&gt;
|-&lt;br /&gt;
| 5.5 || [http://rhn.redhat.com/errata/RHSA-2010-0178.html 194.el5] || 194.32.1.el5 || 2010-03-30 || 210&lt;br /&gt;
|-&lt;br /&gt;
| 5.6 || [http://rhn.redhat.com/errata/RHSA-2011-0017.html 238.el5] || 238.19.1.el5 || 2011-01-13 || 289&lt;br /&gt;
|-&lt;br /&gt;
| 5.7 || [http://rhn.redhat.com/errata/RHSA-2011-1065.html 274.el5] || 274.18.1.el5 || 2011-07-21 || 189&lt;br /&gt;
|-&lt;br /&gt;
| 5.8 || [http://rhn.redhat.com/errata/RHSA-2012-0150.html 308.el5] || 308.24.1.el5 || 2012-02-21 || 215&lt;br /&gt;
|-&lt;br /&gt;
| 5.9 || [http://rhn.redhat.com/errata/RHBA-2013-0006.html 348.el5] || 348.18.1.el5 || 2013-01-08 || 322&lt;br /&gt;
|-&lt;br /&gt;
| 5.10 || [http://rhn.redhat.com/errata/RHSA-2013-1348.html 371.el5] || 371.12.1.el5 || 2013-09-30 || 265&lt;br /&gt;
|-&lt;br /&gt;
| 5.11 || [http://rhn.redhat.com/errata/RHBA-2014-1196.html 398.el5] ||              || 2014-09-16 || 351&lt;br /&gt;
|-&lt;br /&gt;
| latest || 404.el5 || || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! RHEL バージョン !! カーネルバージョン !! リリース !! 提供カーネル !! リリース日 !! 経過日数&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | 2.6.9 || 5.EL&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | kernel&amp;lt;br&amp;gt;kernel-hugemem&amp;lt;br&amp;gt;kernel-smp&amp;lt;br&amp;gt;kernel-largesmp&amp;lt;br&amp;gt;※kernel 以外 PAE が on&lt;br /&gt;
| 2005-02-15 ||&lt;br /&gt;
|-&lt;br /&gt;
| 4.1 || 11.EL || 2005-06-08 || 113&lt;br /&gt;
|-&lt;br /&gt;
| 4.2 || 22.EL || 2005-10-05 || 119&lt;br /&gt;
|-&lt;br /&gt;
| 4.3 || 34.EL || 2006-03-07 || 153&lt;br /&gt;
|-&lt;br /&gt;
| 4.4 || 42.EL || 2006-08-10 || 156&lt;br /&gt;
|-&lt;br /&gt;
| 4.5 || 55.EL || 2007-04-28 || 261&lt;br /&gt;
|-&lt;br /&gt;
| 4.6 || 67.EL || 2007-11-15 || 201&lt;br /&gt;
|-&lt;br /&gt;
| 4.7 || 78.EL || 2008-07-24 || 252&lt;br /&gt;
|-&lt;br /&gt;
| 4.8 || 89.EL || 2009-05-18 || 298&lt;br /&gt;
|-&lt;br /&gt;
| 4.9 || [http://rhn.redhat.com/errata/RHSA-2011-0263.html 100.EL] || 2011-02-16 || 639&lt;br /&gt;
|-&lt;br /&gt;
| last || [http://rhn.redhat.com/errata/RHBA-2011-1796.html 103.EL] || 2011-12-08 || 295&lt;br /&gt;
|-&lt;br /&gt;
| ELS latest || [https://rhn.redhat.com/errata/RHSA-2015-0009.html 106.EL] || 2015-01-05 ||&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | 2.4.21 || 4.EL&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | kernel&amp;lt;br&amp;gt;kernel-hugemem&amp;lt;br&amp;gt;kernel-smp&amp;lt;br&amp;gt;(kernel-BOOT)&lt;br /&gt;
| 2003-10-23 ||&lt;br /&gt;
|-&lt;br /&gt;
| 3.1 || 9.EL || 2004-01-16 || 85&lt;br /&gt;
|-&lt;br /&gt;
| 3.2 || 15.EL || 2004-05-11 || 116&lt;br /&gt;
|-&lt;br /&gt;
| 3.3 || 20.EL || 2004-09-01 || 113&lt;br /&gt;
|-&lt;br /&gt;
| 3.4 || 27.EL || 2004-12-20 || 110&lt;br /&gt;
|-&lt;br /&gt;
| 3.5 || 32.EL || 2005-05-18 || 149&lt;br /&gt;
|-&lt;br /&gt;
| 3.6 || 37.EL || 2005-09-28 || 133&lt;br /&gt;
|-&lt;br /&gt;
| 3.7 || 40.EL || 2006-03-15 || 168&lt;br /&gt;
|-&lt;br /&gt;
| 3.8 || 47.EL || 2006-07-20 || 127&lt;br /&gt;
|-&lt;br /&gt;
| 3.9 || 50.EL || 2007-06-11 || 326&lt;br /&gt;
|-&lt;br /&gt;
| last || 63.EL || 2009-11-03 || 876&lt;br /&gt;
|-&lt;br /&gt;
| ELS last || 66.EL || 2010-11-12 || 374&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== カーネルコンフィグ ==&lt;br /&gt;
=== RHEL 5 ===&lt;br /&gt;
普通の kernel と kernel-PAE では、SMP がデフォルトになったため、違いはわずか。&lt;br /&gt;
 # Linux kernel version: 2.6.18-128.1.6.el5  | # Linux kernel version: 2.6.18-128.1.6.el5PAE&lt;br /&gt;
 # Wed Apr  1 09:12:24 2009                  | # Wed Apr  1 09:55:25 2009&lt;br /&gt;
 CONFIG_HIGHMEM4G=y                          | # CONFIG_HIGHMEM4G is not set&lt;br /&gt;
 # CONFIG_HIGHMEM64G is not set              | CONFIG_HIGHMEM64G=y&lt;br /&gt;
                                             &amp;gt; CONFIG_X86_PAE=y&lt;br /&gt;
                                             &amp;gt; # CONFIG_NUMA is not set&lt;br /&gt;
 CONFIG_SOFTWARE_SUSPEND=y                   &amp;lt;&lt;br /&gt;
 CONFIG_PM_STD_PARTITION=&amp;quot;&amp;quot;                  &amp;lt;&lt;br /&gt;
                                             &amp;gt; CONFIG_I2O_EXT_ADAPTEC_DMA64=y&lt;br /&gt;
&lt;br /&gt;
=== RHEL 4 ===&lt;br /&gt;
UP カーネルと SMP カーネルと hugemem カーネルのコンフィグの相違を diff ってみた。&lt;br /&gt;
hugemem は SMP とほとんど変わらなかったので、右に付け足し。&lt;br /&gt;
&lt;br /&gt;
SMP では、SMP、PAE、HT などが on になっており、hugemem ではさらに X86_4G などが on になっている。&lt;br /&gt;
&lt;br /&gt;
 # Linux kernel version: 2.6.9-78.EL  | # Linux kernel version: 2.6.9-78.ELsmp  | # Linux kernel version: 2.6.9-78.ELhugemem&lt;br /&gt;
 # Wed Jul  9 15:24:56 2008           | # Wed Jul  9 15:37:00 2008              | # Wed Jul  9 15:55:03 2008&lt;br /&gt;
 CONFIG_BROKEN_ON_SMP=y               &amp;lt;&lt;br /&gt;
                                      &amp;gt; CONFIG_STOP_MACHINE=y&lt;br /&gt;
 CONFIG_X86_PC=y                      | CONFIG_MEM_MIRROR=y&lt;br /&gt;
                                      &amp;gt; # CONFIG_X86_PC is not set&lt;br /&gt;
 # CONFIG_X86_GENERICARCH is not set  | CONFIG_X86_GENERICARCH=y&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_CYCLONE_TIMER=y&lt;br /&gt;
 # CONFIG_X86_4G is not set                                                     | CONFIG_X86_4G=y&lt;br /&gt;
 # CONFIG_X86_SWITCH_PAGETABLES is not set                                      | CONFIG_X86_SWITCH_PAGETABLES=y&lt;br /&gt;
 # CONFIG_X86_4G_VM_LAYOUT is not set                                           | CONFIG_X86_4G_VM_LAYOUT=y&lt;br /&gt;
 # CONFIG_X86_UACCESS_INDIRECT is not set                                       | CONFIG_X86_UACCESS_INDIRECT=y&lt;br /&gt;
 # CONFIG_X86_HIGH_ENTRY is not set                                             | CONFIG_X86_HIGH_ENTRY=y&lt;br /&gt;
 # CONFIG_SMP is not set              | CONFIG_SMP=y&lt;br /&gt;
                                      &amp;gt; CONFIG_NR_CPUS=32&lt;br /&gt;
                                      &amp;gt; CONFIG_SCHED_SMT=y&lt;br /&gt;
                                      &amp;gt; CONFIG_SCHED_MC=y&lt;br /&gt;
 CONFIG_X86_UP_APIC=y                 &amp;lt;&lt;br /&gt;
 CONFIG_X86_UP_IOAPIC=y               &amp;lt;&lt;br /&gt;
 CONFIG_HIGHMEM4G=y                   | # CONFIG_HIGHMEM4G is not set&lt;br /&gt;
 # CONFIG_HIGHMEM64G is not set       | CONFIG_HIGHMEM64G=y&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_PAE=y&lt;br /&gt;
                                      &amp;gt; # CONFIG_NUMA is not set&lt;br /&gt;
                                      &amp;gt; # CONFIG_IRQBALANCE is not set&lt;br /&gt;
                                      &amp;gt; CONFIG_HAVE_DEC_LOCK=y                          &lt;br /&gt;
                                      &amp;gt; # CONFIG_HOTPLUG_CPU is not set                 &lt;br /&gt;
 # CONFIG_NI5010 is not set           &amp;lt;&lt;br /&gt;
 # CONFIG_PCMCIA_XIRTULIP is not set  &amp;lt;&lt;br /&gt;
 CONFIG_ISDN_DRV_LOOP=m               &amp;lt;&lt;br /&gt;
 CONFIG_HYSDN=m                       &amp;lt;&lt;br /&gt;
 CONFIG_HYSDN_CAPI=y                  &amp;lt;&lt;br /&gt;
 # CONFIG_COMPUTONE is not set        &amp;lt;&lt;br /&gt;
 # CONFIG_DIGIEPCA is not set         &amp;lt;&lt;br /&gt;
 # CONFIG_DIGI is not set             &amp;lt;&lt;br /&gt;
 # CONFIG_ESPSERIAL is not set        &amp;lt;&lt;br /&gt;
 # CONFIG_MOXA_INTELLIO is not set    &amp;lt;&lt;br /&gt;
 # CONFIG_MOXA_SMARTIO is not set     &amp;lt;&lt;br /&gt;
 # CONFIG_ISI is not set              &amp;lt;&lt;br /&gt;
 # CONFIG_RISCOM8 is not set          &amp;lt;&lt;br /&gt;
 # CONFIG_SPECIALIX is not set        &amp;lt;&lt;br /&gt;
 # CONFIG_SX is not set               &amp;lt;&lt;br /&gt;
 # CONFIG_RIO is not set              &amp;lt;&lt;br /&gt;
 # CONFIG_STALLION is not set         &amp;lt;&lt;br /&gt;
 # CONFIG_ISTALLION is not set        &amp;lt;&lt;br /&gt;
 # CONFIG_FTAPE is not set            &amp;lt;&lt;br /&gt;
 # CONFIG_I2C_ELEKTOR is not set      &amp;lt;&lt;br /&gt;
 # CONFIG_VIDEO_MEYE is not set       &amp;lt;&lt;br /&gt;
 CONFIG_USB_SERIAL_WHITEHEAT=m        &amp;lt;&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_SMP=y&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_HT=y&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_TRAMPOLINE=y&lt;br /&gt;
&lt;br /&gt;
要するに…&lt;br /&gt;
; kernel&lt;br /&gt;
: 搭載メモリ 4 GB まで対応、複数のコア (プロセッサ) やハイパースレッディングには非対応。&lt;br /&gt;
; kernel-smp&lt;br /&gt;
: 搭載メモリ 4 GB 以上に対応、複数のコアやハイパースレッディングにも対応。&lt;br /&gt;
; kernel-hugemem&lt;br /&gt;
: 搭載メモリ 4 GB 以上に対応、複数のコアやハイパースレッディングにも対応。ユーザ空間 4 GB (0xff000000 = 4080 MB)、カーネル空間 4 GB になる。ページテーブルの切り替え(?)によるオーバーヘッドが発生する。&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
=== 追加パッケージ ===&lt;br /&gt;
&lt;br /&gt;
やっぱり RPM でインストールするのが一番安心するね。&lt;br /&gt;
&lt;br /&gt;
* [https://fedoraproject.org/wiki/EPEL EPEL - FedoraProject]&lt;br /&gt;
* [http://rpmrepo.org/RPMforge RPMforge - RPMRepo Wiki]&lt;br /&gt;
&lt;br /&gt;
=== debuginfo ===&lt;br /&gt;
&lt;br /&gt;
日本人は理研から落としましょう。速いです。&lt;br /&gt;
&lt;br /&gt;
* [http://ftp.riken.jp/Linux/redhat/ftp.redhat.com/linux/enterprise/ ftp.riken.jp] (RHEL)&lt;br /&gt;
* [http://ftp.riken.jp/Linux/redhat/ftp.redhat.com/linux/updates/enterprise/ ftp.riken.jp] (RHEL updates)&lt;br /&gt;
* [http://debuginfo.centos.org/ debuginfo.centos.org] (CentOS)&lt;br /&gt;
&lt;br /&gt;
=== RHEL 5 ===&lt;br /&gt;
==== vim 7.0 のカラーリング ====&lt;br /&gt;
RHEL5 の vim 7.0 で /var/log/messages を見たときのカラーリングがすごい。ケバい。&lt;br /&gt;
&lt;br /&gt;
[[画像:vim7.png]]&lt;br /&gt;
&lt;br /&gt;
でもエラーを反転表示したりして、意外と使えるかもしれない。&lt;br /&gt;
&lt;br /&gt;
=== RHEL 4 ===&lt;br /&gt;
&lt;br /&gt;
=== RHEL 3 ===&lt;br /&gt;
&lt;br /&gt;
==== スケジューラ ====&lt;br /&gt;
今日知った、驚愕の事実。&lt;br /&gt;
&lt;br /&gt;
'''RHEL 3 のカーネルは 2.4 系だが、スケジューラは O(1) スケジューラである!!'''&lt;br /&gt;
&lt;br /&gt;
ソース読んで初めて知った…。&lt;br /&gt;
&lt;br /&gt;
2009/07/13 追記：RHEL 2.1 も O(1) スケジューラが載ってた。&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=RHEL&amp;diff=1061</id>
		<title>RHEL</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=RHEL&amp;diff=1061"/>
				<updated>2015-04-13T11:51:31Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;言わずと知れた(?) Red Hat Enterprise Linux のページ。赤帽。&lt;br /&gt;
&lt;br /&gt;
もちろん、RHEL を買えるわけがないので、CentOS で代用しています。&lt;br /&gt;
CentOS って何？って方は、[http://ja.wikipedia.org/wiki/CentOS Wikipedia] をご覧下さい。&lt;br /&gt;
&lt;br /&gt;
== カーネルバージョン ==&lt;br /&gt;
&lt;br /&gt;
こんなページがあった…。&lt;br /&gt;
* [https://access.redhat.com/ja/articles/16476 Red Hat Enterprise Linux のリリース日と収録カーネルの一覧]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! RHEL バージョン !! カーネルバージョン !! リリース !! 最終 !! 提供カーネル !! リリース日 !! 経過日数&lt;br /&gt;
|-&lt;br /&gt;
| 7.0 || rowspan=&amp;quot;2&amp;quot; | 3.10.0 || 123.el7&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2015-0102.html 123.20.1.el7] || rowspan=&amp;quot;2&amp;quot; | kernel || 2014-06-10 ||&lt;br /&gt;
|-&lt;br /&gt;
| 7.1 || [https://rhn.redhat.com/errata/RHSA-2015-0290.html 229.el7]&lt;br /&gt;
| 229.xx.x.el7 || 2015-03-05 || 268&lt;br /&gt;
|-&lt;br /&gt;
| 6 Beta 1 || rowspan=&amp;quot;9&amp;quot; | 2.6.32 || 19.el6 || || rowspan=&amp;quot;9&amp;quot; | kernel || 2010-04-22 ||&lt;br /&gt;
|-&lt;br /&gt;
| 6 Beta 2 || 37.el6 || || 2010-06-30 ||&lt;br /&gt;
|-&lt;br /&gt;
| 6.0 || 71.el6&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2011-0498.html 71.29.1.el6] || 2010-11-10 ||&lt;br /&gt;
|-&lt;br /&gt;
| 6.1 || [http://rhn.redhat.com/errata/RHSA-2011-0542.html 131.0.15.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2011-1465.html 131.21.1.el6] || 2011-05-19 || 190&lt;br /&gt;
|-&lt;br /&gt;
| 6.2 || [http://rhn.redhat.com/errata/RHSA-2011-1530.html 220.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2012-0743.html 220.23.1.el6] || 2011-12-06 || 201&lt;br /&gt;
|-&lt;br /&gt;
| 6.3 || [http://rhn.redhat.com/errata/RHSA-2012-0862.html 279.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2013-0223.html 279.22.1.el6] || 2012-06-20 || 197&lt;br /&gt;
|-&lt;br /&gt;
| 6.4 || [http://rhn.redhat.com/errata/RHSA-2013-0496.html 358.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2013-1436.html 358.23.2.el6] || 2013-02-21 || 246&lt;br /&gt;
|-&lt;br /&gt;
| 6.5 || [http://rhn.redhat.com/errata/RHSA-2013-1645.html 431.el6]&lt;br /&gt;
| [https://rhn.redhat.com/errata/RHSA-2014-1167.html 431.29.2.el6] || 2013-11-21 || 273&lt;br /&gt;
|-&lt;br /&gt;
| 6.6 || [http://rhn.redhat.com/errata/RHSA-2014-1392.html 504.el6]&lt;br /&gt;
| 504.xx.x.el6 || 2014-10-14 || 327&lt;br /&gt;
|-&lt;br /&gt;
| 5.0&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | 2.6.18 || 8.el5&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | kernel&amp;lt;br&amp;gt;kernel-PAE&amp;lt;br&amp;gt;kernel-xen&amp;lt;br&amp;gt;※いずれも SMP が on || 2007-03-14 ||&lt;br /&gt;
|-&lt;br /&gt;
| 5.1 || [http://rhn.redhat.com/errata/RHBA-2007-0959.html 53.el5] || 2007-11-07 || 238&lt;br /&gt;
|-&lt;br /&gt;
| 5.2 || [http://rhn.redhat.com/errata/RHBA-2008-0314.html 92.el5] || 2008-05-21 || 196&lt;br /&gt;
|-&lt;br /&gt;
| 5.3 || [http://rhn.redhat.com/errata/RHSA-2009-0225.html 128.el5] || 2009-01-20 || 244&lt;br /&gt;
|-&lt;br /&gt;
| 5.4 || [http://rhn.redhat.com/errata/RHSA-2009-1243.html 164.el5] || 2009-09-01 || 224&lt;br /&gt;
|-&lt;br /&gt;
| 5.5 || [http://rhn.redhat.com/errata/RHSA-2010-0178.html 194.el5] || 2010-03-30 || 210&lt;br /&gt;
|-&lt;br /&gt;
| 5.6 || [http://rhn.redhat.com/errata/RHSA-2011-0017.html 238.el5] || 2011-01-13 || 289&lt;br /&gt;
|-&lt;br /&gt;
| 5.7 || [http://rhn.redhat.com/errata/RHSA-2011-1065.html 274.el5] || 2011-07-21 || 189&lt;br /&gt;
|-&lt;br /&gt;
| 5.8 || [http://rhn.redhat.com/errata/RHSA-2012-0150.html 308.el5] || 2012-02-21 || 215&lt;br /&gt;
|-&lt;br /&gt;
| 5.9 || [http://rhn.redhat.com/errata/RHBA-2013-0006.html 348.el5] || 2013-01-08 || 322&lt;br /&gt;
|-&lt;br /&gt;
| 5.10 || [http://rhn.redhat.com/errata/RHSA-2013-1348.html 371.el5] || 2013-09-30 || 265&lt;br /&gt;
|-&lt;br /&gt;
| 5.11 || [http://rhn.redhat.com/errata/RHBA-2014-1196.html 398.el5] || 2014-09-16 || 351&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! RHEL バージョン !! カーネルバージョン !! リリース !! 提供カーネル !! リリース日 !! 経過日数&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | 2.6.9 || 5.EL&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | kernel&amp;lt;br&amp;gt;kernel-hugemem&amp;lt;br&amp;gt;kernel-smp&amp;lt;br&amp;gt;kernel-largesmp&amp;lt;br&amp;gt;※kernel 以外 PAE が on&lt;br /&gt;
| 2005-02-15 ||&lt;br /&gt;
|-&lt;br /&gt;
| 4.1 || 11.EL || 2005-06-08 || 113&lt;br /&gt;
|-&lt;br /&gt;
| 4.2 || 22.EL || 2005-10-05 || 119&lt;br /&gt;
|-&lt;br /&gt;
| 4.3 || 34.EL || 2006-03-07 || 153&lt;br /&gt;
|-&lt;br /&gt;
| 4.4 || 42.EL || 2006-08-10 || 156&lt;br /&gt;
|-&lt;br /&gt;
| 4.5 || 55.EL || 2007-04-28 || 261&lt;br /&gt;
|-&lt;br /&gt;
| 4.6 || 67.EL || 2007-11-15 || 201&lt;br /&gt;
|-&lt;br /&gt;
| 4.7 || 78.EL || 2008-07-24 || 252&lt;br /&gt;
|-&lt;br /&gt;
| 4.8 || 89.EL || 2009-05-18 || 298&lt;br /&gt;
|-&lt;br /&gt;
| 4.9 || [http://rhn.redhat.com/errata/RHSA-2011-0263.html 100.EL] || 2011-02-16 || 639&lt;br /&gt;
|-&lt;br /&gt;
| last || [http://rhn.redhat.com/errata/RHBA-2011-1796.html 103.EL] || 2011-12-08 || 295&lt;br /&gt;
|-&lt;br /&gt;
| ELS latest || [https://rhn.redhat.com/errata/RHSA-2015-0009.html 106.EL] || 2015-01-05 ||&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | 2.4.21 || 4.EL&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | kernel&amp;lt;br&amp;gt;kernel-hugemem&amp;lt;br&amp;gt;kernel-smp&amp;lt;br&amp;gt;(kernel-BOOT)&lt;br /&gt;
| 2003-10-23 ||&lt;br /&gt;
|-&lt;br /&gt;
| 3.1 || 9.EL || 2004-01-16 || 85&lt;br /&gt;
|-&lt;br /&gt;
| 3.2 || 15.EL || 2004-05-11 || 116&lt;br /&gt;
|-&lt;br /&gt;
| 3.3 || 20.EL || 2004-09-01 || 113&lt;br /&gt;
|-&lt;br /&gt;
| 3.4 || 27.EL || 2004-12-20 || 110&lt;br /&gt;
|-&lt;br /&gt;
| 3.5 || 32.EL || 2005-05-18 || 149&lt;br /&gt;
|-&lt;br /&gt;
| 3.6 || 37.EL || 2005-09-28 || 133&lt;br /&gt;
|-&lt;br /&gt;
| 3.7 || 40.EL || 2006-03-15 || 168&lt;br /&gt;
|-&lt;br /&gt;
| 3.8 || 47.EL || 2006-07-20 || 127&lt;br /&gt;
|-&lt;br /&gt;
| 3.9 || 50.EL || 2007-06-11 || 326&lt;br /&gt;
|-&lt;br /&gt;
| last || 63.EL || 2009-11-03 || 876&lt;br /&gt;
|-&lt;br /&gt;
| ELS last || 66.EL || 2010-11-12 || 374&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== カーネルコンフィグ ==&lt;br /&gt;
=== RHEL 5 ===&lt;br /&gt;
普通の kernel と kernel-PAE では、SMP がデフォルトになったため、違いはわずか。&lt;br /&gt;
 # Linux kernel version: 2.6.18-128.1.6.el5  | # Linux kernel version: 2.6.18-128.1.6.el5PAE&lt;br /&gt;
 # Wed Apr  1 09:12:24 2009                  | # Wed Apr  1 09:55:25 2009&lt;br /&gt;
 CONFIG_HIGHMEM4G=y                          | # CONFIG_HIGHMEM4G is not set&lt;br /&gt;
 # CONFIG_HIGHMEM64G is not set              | CONFIG_HIGHMEM64G=y&lt;br /&gt;
                                             &amp;gt; CONFIG_X86_PAE=y&lt;br /&gt;
                                             &amp;gt; # CONFIG_NUMA is not set&lt;br /&gt;
 CONFIG_SOFTWARE_SUSPEND=y                   &amp;lt;&lt;br /&gt;
 CONFIG_PM_STD_PARTITION=&amp;quot;&amp;quot;                  &amp;lt;&lt;br /&gt;
                                             &amp;gt; CONFIG_I2O_EXT_ADAPTEC_DMA64=y&lt;br /&gt;
&lt;br /&gt;
=== RHEL 4 ===&lt;br /&gt;
UP カーネルと SMP カーネルと hugemem カーネルのコンフィグの相違を diff ってみた。&lt;br /&gt;
hugemem は SMP とほとんど変わらなかったので、右に付け足し。&lt;br /&gt;
&lt;br /&gt;
SMP では、SMP、PAE、HT などが on になっており、hugemem ではさらに X86_4G などが on になっている。&lt;br /&gt;
&lt;br /&gt;
 # Linux kernel version: 2.6.9-78.EL  | # Linux kernel version: 2.6.9-78.ELsmp  | # Linux kernel version: 2.6.9-78.ELhugemem&lt;br /&gt;
 # Wed Jul  9 15:24:56 2008           | # Wed Jul  9 15:37:00 2008              | # Wed Jul  9 15:55:03 2008&lt;br /&gt;
 CONFIG_BROKEN_ON_SMP=y               &amp;lt;&lt;br /&gt;
                                      &amp;gt; CONFIG_STOP_MACHINE=y&lt;br /&gt;
 CONFIG_X86_PC=y                      | CONFIG_MEM_MIRROR=y&lt;br /&gt;
                                      &amp;gt; # CONFIG_X86_PC is not set&lt;br /&gt;
 # CONFIG_X86_GENERICARCH is not set  | CONFIG_X86_GENERICARCH=y&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_CYCLONE_TIMER=y&lt;br /&gt;
 # CONFIG_X86_4G is not set                                                     | CONFIG_X86_4G=y&lt;br /&gt;
 # CONFIG_X86_SWITCH_PAGETABLES is not set                                      | CONFIG_X86_SWITCH_PAGETABLES=y&lt;br /&gt;
 # CONFIG_X86_4G_VM_LAYOUT is not set                                           | CONFIG_X86_4G_VM_LAYOUT=y&lt;br /&gt;
 # CONFIG_X86_UACCESS_INDIRECT is not set                                       | CONFIG_X86_UACCESS_INDIRECT=y&lt;br /&gt;
 # CONFIG_X86_HIGH_ENTRY is not set                                             | CONFIG_X86_HIGH_ENTRY=y&lt;br /&gt;
 # CONFIG_SMP is not set              | CONFIG_SMP=y&lt;br /&gt;
                                      &amp;gt; CONFIG_NR_CPUS=32&lt;br /&gt;
                                      &amp;gt; CONFIG_SCHED_SMT=y&lt;br /&gt;
                                      &amp;gt; CONFIG_SCHED_MC=y&lt;br /&gt;
 CONFIG_X86_UP_APIC=y                 &amp;lt;&lt;br /&gt;
 CONFIG_X86_UP_IOAPIC=y               &amp;lt;&lt;br /&gt;
 CONFIG_HIGHMEM4G=y                   | # CONFIG_HIGHMEM4G is not set&lt;br /&gt;
 # CONFIG_HIGHMEM64G is not set       | CONFIG_HIGHMEM64G=y&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_PAE=y&lt;br /&gt;
                                      &amp;gt; # CONFIG_NUMA is not set&lt;br /&gt;
                                      &amp;gt; # CONFIG_IRQBALANCE is not set&lt;br /&gt;
                                      &amp;gt; CONFIG_HAVE_DEC_LOCK=y                          &lt;br /&gt;
                                      &amp;gt; # CONFIG_HOTPLUG_CPU is not set                 &lt;br /&gt;
 # CONFIG_NI5010 is not set           &amp;lt;&lt;br /&gt;
 # CONFIG_PCMCIA_XIRTULIP is not set  &amp;lt;&lt;br /&gt;
 CONFIG_ISDN_DRV_LOOP=m               &amp;lt;&lt;br /&gt;
 CONFIG_HYSDN=m                       &amp;lt;&lt;br /&gt;
 CONFIG_HYSDN_CAPI=y                  &amp;lt;&lt;br /&gt;
 # CONFIG_COMPUTONE is not set        &amp;lt;&lt;br /&gt;
 # CONFIG_DIGIEPCA is not set         &amp;lt;&lt;br /&gt;
 # CONFIG_DIGI is not set             &amp;lt;&lt;br /&gt;
 # CONFIG_ESPSERIAL is not set        &amp;lt;&lt;br /&gt;
 # CONFIG_MOXA_INTELLIO is not set    &amp;lt;&lt;br /&gt;
 # CONFIG_MOXA_SMARTIO is not set     &amp;lt;&lt;br /&gt;
 # CONFIG_ISI is not set              &amp;lt;&lt;br /&gt;
 # CONFIG_RISCOM8 is not set          &amp;lt;&lt;br /&gt;
 # CONFIG_SPECIALIX is not set        &amp;lt;&lt;br /&gt;
 # CONFIG_SX is not set               &amp;lt;&lt;br /&gt;
 # CONFIG_RIO is not set              &amp;lt;&lt;br /&gt;
 # CONFIG_STALLION is not set         &amp;lt;&lt;br /&gt;
 # CONFIG_ISTALLION is not set        &amp;lt;&lt;br /&gt;
 # CONFIG_FTAPE is not set            &amp;lt;&lt;br /&gt;
 # CONFIG_I2C_ELEKTOR is not set      &amp;lt;&lt;br /&gt;
 # CONFIG_VIDEO_MEYE is not set       &amp;lt;&lt;br /&gt;
 CONFIG_USB_SERIAL_WHITEHEAT=m        &amp;lt;&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_SMP=y&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_HT=y&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_TRAMPOLINE=y&lt;br /&gt;
&lt;br /&gt;
要するに…&lt;br /&gt;
; kernel&lt;br /&gt;
: 搭載メモリ 4 GB まで対応、複数のコア (プロセッサ) やハイパースレッディングには非対応。&lt;br /&gt;
; kernel-smp&lt;br /&gt;
: 搭載メモリ 4 GB 以上に対応、複数のコアやハイパースレッディングにも対応。&lt;br /&gt;
; kernel-hugemem&lt;br /&gt;
: 搭載メモリ 4 GB 以上に対応、複数のコアやハイパースレッディングにも対応。ユーザ空間 4 GB (0xff000000 = 4080 MB)、カーネル空間 4 GB になる。ページテーブルの切り替え(?)によるオーバーヘッドが発生する。&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
=== 追加パッケージ ===&lt;br /&gt;
&lt;br /&gt;
やっぱり RPM でインストールするのが一番安心するね。&lt;br /&gt;
&lt;br /&gt;
* [https://fedoraproject.org/wiki/EPEL EPEL - FedoraProject]&lt;br /&gt;
* [http://rpmrepo.org/RPMforge RPMforge - RPMRepo Wiki]&lt;br /&gt;
&lt;br /&gt;
=== debuginfo ===&lt;br /&gt;
&lt;br /&gt;
日本人は理研から落としましょう。速いです。&lt;br /&gt;
&lt;br /&gt;
* [http://ftp.riken.jp/Linux/redhat/ftp.redhat.com/linux/enterprise/ ftp.riken.jp] (RHEL)&lt;br /&gt;
* [http://ftp.riken.jp/Linux/redhat/ftp.redhat.com/linux/updates/enterprise/ ftp.riken.jp] (RHEL updates)&lt;br /&gt;
* [http://debuginfo.centos.org/ debuginfo.centos.org] (CentOS)&lt;br /&gt;
&lt;br /&gt;
=== RHEL 5 ===&lt;br /&gt;
==== vim 7.0 のカラーリング ====&lt;br /&gt;
RHEL5 の vim 7.0 で /var/log/messages を見たときのカラーリングがすごい。ケバい。&lt;br /&gt;
&lt;br /&gt;
[[画像:vim7.png]]&lt;br /&gt;
&lt;br /&gt;
でもエラーを反転表示したりして、意外と使えるかもしれない。&lt;br /&gt;
&lt;br /&gt;
=== RHEL 4 ===&lt;br /&gt;
&lt;br /&gt;
=== RHEL 3 ===&lt;br /&gt;
&lt;br /&gt;
==== スケジューラ ====&lt;br /&gt;
今日知った、驚愕の事実。&lt;br /&gt;
&lt;br /&gt;
'''RHEL 3 のカーネルは 2.4 系だが、スケジューラは O(1) スケジューラである!!'''&lt;br /&gt;
&lt;br /&gt;
ソース読んで初めて知った…。&lt;br /&gt;
&lt;br /&gt;
2009/07/13 追記：RHEL 2.1 も O(1) スケジューラが載ってた。&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=RHEL&amp;diff=1060</id>
		<title>RHEL</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=RHEL&amp;diff=1060"/>
				<updated>2015-04-13T11:27:00Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: RHEL3/4 と RHEL5/6/7 で表を分けた&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;言わずと知れた(?) Red Hat Enterprise Linux のページ。赤帽。&lt;br /&gt;
&lt;br /&gt;
もちろん、RHEL を買えるわけがないので、CentOS で代用しています。&lt;br /&gt;
CentOS って何？って方は、[http://ja.wikipedia.org/wiki/CentOS Wikipedia] をご覧下さい。&lt;br /&gt;
&lt;br /&gt;
== カーネルバージョン ==&lt;br /&gt;
&lt;br /&gt;
こんなページがあった…。&lt;br /&gt;
* [https://access.redhat.com/ja/articles/16476 Red Hat Enterprise Linux のリリース日と収録カーネルの一覧]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! RHEL バージョン !! カーネルバージョン !! リリース !! 提供カーネル !! リリース日 !! 経過日数&lt;br /&gt;
|-&lt;br /&gt;
| 7.0&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 3.10.0 || 123.el7&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | kernel || 2014-06-10 ||&lt;br /&gt;
|-&lt;br /&gt;
| 7.1 || 229.el7 || 2015-03-05 || 268&lt;br /&gt;
|-&lt;br /&gt;
| 6 Beta 1&lt;br /&gt;
| rowspan=&amp;quot;9&amp;quot; | 2.6.32 || 19.el6&lt;br /&gt;
| rowspan=&amp;quot;9&amp;quot; | kernel&amp;lt;br&amp;gt;※SMP, PAE が on || 2010-04-22 ||&lt;br /&gt;
|-&lt;br /&gt;
| 6 Beta 2 || 37.el6 || 2010-06-30 ||&lt;br /&gt;
|-&lt;br /&gt;
| 6.0 || 71.el6 || 2010-11-10 ||&lt;br /&gt;
|-&lt;br /&gt;
| 6.1 || [http://rhn.redhat.com/errata/RHSA-2011-0542.html 131.0.15.el6 ] || 2011-05-19 || 190&lt;br /&gt;
|-&lt;br /&gt;
| 6.2 || [http://rhn.redhat.com/errata/RHSA-2011-1530.html 220.el6] || 2011-12-06 || 201&lt;br /&gt;
|-&lt;br /&gt;
| 6.3 || [http://rhn.redhat.com/errata/RHSA-2012-0862.html 279.el6] || 2012-06-20 || 197&lt;br /&gt;
|-&lt;br /&gt;
| 6.4 || [http://rhn.redhat.com/errata/RHSA-2013-0496.html 358.el6] || 2013-02-21 || 246&lt;br /&gt;
|-&lt;br /&gt;
| 6.5 || [http://rhn.redhat.com/errata/RHSA-2013-1645.html 431.el6] || 2013-11-21 || 273&lt;br /&gt;
|-&lt;br /&gt;
| 6.6 || [http://rhn.redhat.com/errata/RHSA-2014-1392.html 504.el6] || 2014-10-14 || 327&lt;br /&gt;
|-&lt;br /&gt;
| 5.0&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | 2.6.18 || 8.el5&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | kernel&amp;lt;br&amp;gt;kernel-PAE&amp;lt;br&amp;gt;kernel-xen&amp;lt;br&amp;gt;※いずれも SMP が on || 2007-03-14 ||&lt;br /&gt;
|-&lt;br /&gt;
| 5.1 || [http://rhn.redhat.com/errata/RHBA-2007-0959.html 53.el5] || 2007-11-07 || 238&lt;br /&gt;
|-&lt;br /&gt;
| 5.2 || [http://rhn.redhat.com/errata/RHBA-2008-0314.html 92.el5] || 2008-05-21 || 196&lt;br /&gt;
|-&lt;br /&gt;
| 5.3 || [http://rhn.redhat.com/errata/RHSA-2009-0225.html 128.el5] || 2009-01-20 || 244&lt;br /&gt;
|-&lt;br /&gt;
| 5.4 || [http://rhn.redhat.com/errata/RHSA-2009-1243.html 164.el5] || 2009-09-01 || 224&lt;br /&gt;
|-&lt;br /&gt;
| 5.5 || [http://rhn.redhat.com/errata/RHSA-2010-0178.html 194.el5] || 2010-03-30 || 210&lt;br /&gt;
|-&lt;br /&gt;
| 5.6 || [http://rhn.redhat.com/errata/RHSA-2011-0017.html 238.el5] || 2011-01-13 || 289&lt;br /&gt;
|-&lt;br /&gt;
| 5.7 || [http://rhn.redhat.com/errata/RHSA-2011-1065.html 274.el5] || 2011-07-21 || 189&lt;br /&gt;
|-&lt;br /&gt;
| 5.8 || [http://rhn.redhat.com/errata/RHSA-2012-0150.html 308.el5] || 2012-02-21 || 215&lt;br /&gt;
|-&lt;br /&gt;
| 5.9 || [http://rhn.redhat.com/errata/RHBA-2013-0006.html 348.el5] || 2013-01-08 || 322&lt;br /&gt;
|-&lt;br /&gt;
| 5.10 || [http://rhn.redhat.com/errata/RHSA-2013-1348.html 371.el5] || 2013-09-30 || 265&lt;br /&gt;
|-&lt;br /&gt;
| 5.11 || [http://rhn.redhat.com/errata/RHBA-2014-1196.html 398.el5] || 2014-09-16 || 351&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! RHEL バージョン !! カーネルバージョン !! リリース !! 提供カーネル !! リリース日 !! 経過日数&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | 2.6.9 || 5.EL&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | kernel&amp;lt;br&amp;gt;kernel-hugemem&amp;lt;br&amp;gt;kernel-smp&amp;lt;br&amp;gt;kernel-largesmp&amp;lt;br&amp;gt;※kernel 以外 PAE が on&lt;br /&gt;
| 2005-02-15 ||&lt;br /&gt;
|-&lt;br /&gt;
| 4.1 || 11.EL || 2005-06-08 || 113&lt;br /&gt;
|-&lt;br /&gt;
| 4.2 || 22.EL || 2005-10-05 || 119&lt;br /&gt;
|-&lt;br /&gt;
| 4.3 || 34.EL || 2006-03-07 || 153&lt;br /&gt;
|-&lt;br /&gt;
| 4.4 || 42.EL || 2006-08-10 || 156&lt;br /&gt;
|-&lt;br /&gt;
| 4.5 || 55.EL || 2007-04-28 || 261&lt;br /&gt;
|-&lt;br /&gt;
| 4.6 || 67.EL || 2007-11-15 || 201&lt;br /&gt;
|-&lt;br /&gt;
| 4.7 || 78.EL || 2008-07-24 || 252&lt;br /&gt;
|-&lt;br /&gt;
| 4.8 || 89.EL || 2009-05-18 || 298&lt;br /&gt;
|-&lt;br /&gt;
| 4.9 || [http://rhn.redhat.com/errata/RHSA-2011-0263.html 100.EL] || 2011-02-16 || 639&lt;br /&gt;
|-&lt;br /&gt;
| last || [http://rhn.redhat.com/errata/RHBA-2011-1796.html 103.EL] || 2011-12-08 || 295&lt;br /&gt;
|-&lt;br /&gt;
| ELS latest || [https://rhn.redhat.com/errata/RHSA-2015-0009.html 106.EL] || 2015-01-05 ||&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | 2.4.21 || 4.EL&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | kernel&amp;lt;br&amp;gt;kernel-hugemem&amp;lt;br&amp;gt;kernel-smp&amp;lt;br&amp;gt;(kernel-BOOT)&lt;br /&gt;
| 2003-10-23 ||&lt;br /&gt;
|-&lt;br /&gt;
| 3.1 || 9.EL || 2004-01-16 || 85&lt;br /&gt;
|-&lt;br /&gt;
| 3.2 || 15.EL || 2004-05-11 || 116&lt;br /&gt;
|-&lt;br /&gt;
| 3.3 || 20.EL || 2004-09-01 || 113&lt;br /&gt;
|-&lt;br /&gt;
| 3.4 || 27.EL || 2004-12-20 || 110&lt;br /&gt;
|-&lt;br /&gt;
| 3.5 || 32.EL || 2005-05-18 || 149&lt;br /&gt;
|-&lt;br /&gt;
| 3.6 || 37.EL || 2005-09-28 || 133&lt;br /&gt;
|-&lt;br /&gt;
| 3.7 || 40.EL || 2006-03-15 || 168&lt;br /&gt;
|-&lt;br /&gt;
| 3.8 || 47.EL || 2006-07-20 || 127&lt;br /&gt;
|-&lt;br /&gt;
| 3.9 || 50.EL || 2007-06-11 || 326&lt;br /&gt;
|-&lt;br /&gt;
| last || 63.EL || 2009-11-03 || 876&lt;br /&gt;
|-&lt;br /&gt;
| ELS last || 66.EL || 2010-11-12 || 374&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== カーネルコンフィグ ==&lt;br /&gt;
=== RHEL 5 ===&lt;br /&gt;
普通の kernel と kernel-PAE では、SMP がデフォルトになったため、違いはわずか。&lt;br /&gt;
 # Linux kernel version: 2.6.18-128.1.6.el5  | # Linux kernel version: 2.6.18-128.1.6.el5PAE&lt;br /&gt;
 # Wed Apr  1 09:12:24 2009                  | # Wed Apr  1 09:55:25 2009&lt;br /&gt;
 CONFIG_HIGHMEM4G=y                          | # CONFIG_HIGHMEM4G is not set&lt;br /&gt;
 # CONFIG_HIGHMEM64G is not set              | CONFIG_HIGHMEM64G=y&lt;br /&gt;
                                             &amp;gt; CONFIG_X86_PAE=y&lt;br /&gt;
                                             &amp;gt; # CONFIG_NUMA is not set&lt;br /&gt;
 CONFIG_SOFTWARE_SUSPEND=y                   &amp;lt;&lt;br /&gt;
 CONFIG_PM_STD_PARTITION=&amp;quot;&amp;quot;                  &amp;lt;&lt;br /&gt;
                                             &amp;gt; CONFIG_I2O_EXT_ADAPTEC_DMA64=y&lt;br /&gt;
&lt;br /&gt;
=== RHEL 4 ===&lt;br /&gt;
UP カーネルと SMP カーネルと hugemem カーネルのコンフィグの相違を diff ってみた。&lt;br /&gt;
hugemem は SMP とほとんど変わらなかったので、右に付け足し。&lt;br /&gt;
&lt;br /&gt;
SMP では、SMP、PAE、HT などが on になっており、hugemem ではさらに X86_4G などが on になっている。&lt;br /&gt;
&lt;br /&gt;
 # Linux kernel version: 2.6.9-78.EL  | # Linux kernel version: 2.6.9-78.ELsmp  | # Linux kernel version: 2.6.9-78.ELhugemem&lt;br /&gt;
 # Wed Jul  9 15:24:56 2008           | # Wed Jul  9 15:37:00 2008              | # Wed Jul  9 15:55:03 2008&lt;br /&gt;
 CONFIG_BROKEN_ON_SMP=y               &amp;lt;&lt;br /&gt;
                                      &amp;gt; CONFIG_STOP_MACHINE=y&lt;br /&gt;
 CONFIG_X86_PC=y                      | CONFIG_MEM_MIRROR=y&lt;br /&gt;
                                      &amp;gt; # CONFIG_X86_PC is not set&lt;br /&gt;
 # CONFIG_X86_GENERICARCH is not set  | CONFIG_X86_GENERICARCH=y&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_CYCLONE_TIMER=y&lt;br /&gt;
 # CONFIG_X86_4G is not set                                                     | CONFIG_X86_4G=y&lt;br /&gt;
 # CONFIG_X86_SWITCH_PAGETABLES is not set                                      | CONFIG_X86_SWITCH_PAGETABLES=y&lt;br /&gt;
 # CONFIG_X86_4G_VM_LAYOUT is not set                                           | CONFIG_X86_4G_VM_LAYOUT=y&lt;br /&gt;
 # CONFIG_X86_UACCESS_INDIRECT is not set                                       | CONFIG_X86_UACCESS_INDIRECT=y&lt;br /&gt;
 # CONFIG_X86_HIGH_ENTRY is not set                                             | CONFIG_X86_HIGH_ENTRY=y&lt;br /&gt;
 # CONFIG_SMP is not set              | CONFIG_SMP=y&lt;br /&gt;
                                      &amp;gt; CONFIG_NR_CPUS=32&lt;br /&gt;
                                      &amp;gt; CONFIG_SCHED_SMT=y&lt;br /&gt;
                                      &amp;gt; CONFIG_SCHED_MC=y&lt;br /&gt;
 CONFIG_X86_UP_APIC=y                 &amp;lt;&lt;br /&gt;
 CONFIG_X86_UP_IOAPIC=y               &amp;lt;&lt;br /&gt;
 CONFIG_HIGHMEM4G=y                   | # CONFIG_HIGHMEM4G is not set&lt;br /&gt;
 # CONFIG_HIGHMEM64G is not set       | CONFIG_HIGHMEM64G=y&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_PAE=y&lt;br /&gt;
                                      &amp;gt; # CONFIG_NUMA is not set&lt;br /&gt;
                                      &amp;gt; # CONFIG_IRQBALANCE is not set&lt;br /&gt;
                                      &amp;gt; CONFIG_HAVE_DEC_LOCK=y                          &lt;br /&gt;
                                      &amp;gt; # CONFIG_HOTPLUG_CPU is not set                 &lt;br /&gt;
 # CONFIG_NI5010 is not set           &amp;lt;&lt;br /&gt;
 # CONFIG_PCMCIA_XIRTULIP is not set  &amp;lt;&lt;br /&gt;
 CONFIG_ISDN_DRV_LOOP=m               &amp;lt;&lt;br /&gt;
 CONFIG_HYSDN=m                       &amp;lt;&lt;br /&gt;
 CONFIG_HYSDN_CAPI=y                  &amp;lt;&lt;br /&gt;
 # CONFIG_COMPUTONE is not set        &amp;lt;&lt;br /&gt;
 # CONFIG_DIGIEPCA is not set         &amp;lt;&lt;br /&gt;
 # CONFIG_DIGI is not set             &amp;lt;&lt;br /&gt;
 # CONFIG_ESPSERIAL is not set        &amp;lt;&lt;br /&gt;
 # CONFIG_MOXA_INTELLIO is not set    &amp;lt;&lt;br /&gt;
 # CONFIG_MOXA_SMARTIO is not set     &amp;lt;&lt;br /&gt;
 # CONFIG_ISI is not set              &amp;lt;&lt;br /&gt;
 # CONFIG_RISCOM8 is not set          &amp;lt;&lt;br /&gt;
 # CONFIG_SPECIALIX is not set        &amp;lt;&lt;br /&gt;
 # CONFIG_SX is not set               &amp;lt;&lt;br /&gt;
 # CONFIG_RIO is not set              &amp;lt;&lt;br /&gt;
 # CONFIG_STALLION is not set         &amp;lt;&lt;br /&gt;
 # CONFIG_ISTALLION is not set        &amp;lt;&lt;br /&gt;
 # CONFIG_FTAPE is not set            &amp;lt;&lt;br /&gt;
 # CONFIG_I2C_ELEKTOR is not set      &amp;lt;&lt;br /&gt;
 # CONFIG_VIDEO_MEYE is not set       &amp;lt;&lt;br /&gt;
 CONFIG_USB_SERIAL_WHITEHEAT=m        &amp;lt;&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_SMP=y&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_HT=y&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_TRAMPOLINE=y&lt;br /&gt;
&lt;br /&gt;
要するに…&lt;br /&gt;
; kernel&lt;br /&gt;
: 搭載メモリ 4 GB まで対応、複数のコア (プロセッサ) やハイパースレッディングには非対応。&lt;br /&gt;
; kernel-smp&lt;br /&gt;
: 搭載メモリ 4 GB 以上に対応、複数のコアやハイパースレッディングにも対応。&lt;br /&gt;
; kernel-hugemem&lt;br /&gt;
: 搭載メモリ 4 GB 以上に対応、複数のコアやハイパースレッディングにも対応。ユーザ空間 4 GB (0xff000000 = 4080 MB)、カーネル空間 4 GB になる。ページテーブルの切り替え(?)によるオーバーヘッドが発生する。&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
=== 追加パッケージ ===&lt;br /&gt;
&lt;br /&gt;
やっぱり RPM でインストールするのが一番安心するね。&lt;br /&gt;
&lt;br /&gt;
* [https://fedoraproject.org/wiki/EPEL EPEL - FedoraProject]&lt;br /&gt;
* [http://rpmrepo.org/RPMforge RPMforge - RPMRepo Wiki]&lt;br /&gt;
&lt;br /&gt;
=== debuginfo ===&lt;br /&gt;
&lt;br /&gt;
日本人は理研から落としましょう。速いです。&lt;br /&gt;
&lt;br /&gt;
* [http://ftp.riken.jp/Linux/redhat/ftp.redhat.com/linux/enterprise/ ftp.riken.jp] (RHEL)&lt;br /&gt;
* [http://ftp.riken.jp/Linux/redhat/ftp.redhat.com/linux/updates/enterprise/ ftp.riken.jp] (RHEL updates)&lt;br /&gt;
* [http://debuginfo.centos.org/ debuginfo.centos.org] (CentOS)&lt;br /&gt;
&lt;br /&gt;
=== RHEL 5 ===&lt;br /&gt;
==== vim 7.0 のカラーリング ====&lt;br /&gt;
RHEL5 の vim 7.0 で /var/log/messages を見たときのカラーリングがすごい。ケバい。&lt;br /&gt;
&lt;br /&gt;
[[画像:vim7.png]]&lt;br /&gt;
&lt;br /&gt;
でもエラーを反転表示したりして、意外と使えるかもしれない。&lt;br /&gt;
&lt;br /&gt;
=== RHEL 4 ===&lt;br /&gt;
&lt;br /&gt;
=== RHEL 3 ===&lt;br /&gt;
&lt;br /&gt;
==== スケジューラ ====&lt;br /&gt;
今日知った、驚愕の事実。&lt;br /&gt;
&lt;br /&gt;
'''RHEL 3 のカーネルは 2.4 系だが、スケジューラは O(1) スケジューラである!!'''&lt;br /&gt;
&lt;br /&gt;
ソース読んで初めて知った…。&lt;br /&gt;
&lt;br /&gt;
2009/07/13 追記：RHEL 2.1 も O(1) スケジューラが載ってた。&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=SNMP&amp;diff=1059</id>
		<title>SNMP</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=SNMP&amp;diff=1059"/>
				<updated>2015-04-03T14:00:31Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: /* 実行例 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;RHEL の net-snmp パッケージについて。&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
snmpd サービスの設定 (/etc/snmp/snmpd.conf) について。&lt;br /&gt;
&lt;br /&gt;
=== アクセス制御の基本設定 ===&lt;br /&gt;
&lt;br /&gt;
 # com2sec&lt;br /&gt;
 # ソース (SOURCE) とコミュニティ (COMMUNITY) のペアから&lt;br /&gt;
 # セキュリティ名 (SECURITY) へのマッピングを指定する。&lt;br /&gt;
 #        SECURITY     SOURCE           COMMUNITY&lt;br /&gt;
 com2sec  publicUser   default          public&lt;br /&gt;
 com2sec  privateUser  192.168.1.10/32  private&lt;br /&gt;
 com2sec  localUser    localhost        private&lt;br /&gt;
 &lt;br /&gt;
 # group&lt;br /&gt;
 # セキュリティモデル (MODEL) とセキュリティ名 (SECURITY) のペアから&lt;br /&gt;
 # グループ名 (GROUP) へのマッピングを指定する。&lt;br /&gt;
 #        GROUP         MODEL           SECURITY&lt;br /&gt;
 group    publicGroup   v1              publicUser&lt;br /&gt;
 group    privateGroup  v1              privateUser&lt;br /&gt;
 group    privateGroup  v2c             privateUser&lt;br /&gt;
 group    privateGroup  v1              localUser&lt;br /&gt;
 group    privateGroup  v2c             localUser&lt;br /&gt;
 &lt;br /&gt;
 # view&lt;br /&gt;
 # ビューの定義&lt;br /&gt;
 #        VIEW          TYPE            SUBTREE              [MASK]&lt;br /&gt;
 view     systemView    included        .1.3.6.1.2.1.1&lt;br /&gt;
 view     systemView    included        .1.3.6.1.2.1.25.1.1&lt;br /&gt;
 view     allView       included        .1&lt;br /&gt;
 &lt;br /&gt;
 # access&lt;br /&gt;
 # グループセキュリティとモデルセキュリティをビュー (VIEW) にマップする。&lt;br /&gt;
 #        GROUP         CONTEXT  SEC.MODEL  SEC.LEVEL  PREFIX  READ        WRITE  NOTIF&lt;br /&gt;
 access   publicGroup   &amp;quot;&amp;quot;       any        noauth     exact   systemView  none   none&lt;br /&gt;
 access   privateGroup  &amp;quot;&amp;quot;       any        noauth     exact   allView     none   none&lt;br /&gt;
&lt;br /&gt;
==== 実行例 ====&lt;br /&gt;
&lt;br /&gt;
snmpwalk コマンドを使用する。-On オプションは、MIB を数字 (OID) で出力する (SUBTREE チェックのため)。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
public でのアクセス例&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
 $ snmpwalk -On -v 1 -c public localhost&lt;br /&gt;
 .1.3.6.1.2.1.1.1.0 = STRING: Linux lab.hagio.org 2.6.18-194.el5PAE #1 SMP Tue Mar 16 22:00:21 EDT 2010 i686&lt;br /&gt;
 .1.3.6.1.2.1.1.2.0 = OID: .1.3.6.1.4.1.8072.3.2.10&lt;br /&gt;
 .1.3.6.1.2.1.1.3.0 = Timeticks: (39553) 0:06:35.53&lt;br /&gt;
 .1.3.6.1.2.1.1.4.0 = STRING: Root &amp;lt;root@localhost&amp;gt; (configure /etc/snmp/snmp.local.conf)&lt;br /&gt;
 .1.3.6.1.2.1.1.5.0 = STRING: lab.hagio.org&lt;br /&gt;
 .1.3.6.1.2.1.1.6.0 = STRING: Unknown (edit /etc/snmp/snmpd.conf)&lt;br /&gt;
 .1.3.6.1.2.1.1.8.0 = Timeticks: (1) 0:00:00.01&lt;br /&gt;
 .1.3.6.1.2.1.1.9.1.2.1 = OID: .1.3.6.1.6.3.1&lt;br /&gt;
 .1.3.6.1.2.1.1.9.1.2.2 = OID: .1.3.6.1.2.1.49&lt;br /&gt;
 .1.3.6.1.2.1.1.9.1.2.3 = OID: .1.3.6.1.2.1.4&lt;br /&gt;
 .1.3.6.1.2.1.1.9.1.2.4 = OID: .1.3.6.1.2.1.50&lt;br /&gt;
 .1.3.6.1.2.1.1.9.1.2.5 = OID: .1.3.6.1.6.3.16.2.2.1&lt;br /&gt;
 .1.3.6.1.2.1.1.9.1.2.6 = OID: .1.3.6.1.6.3.10.3.1.1&lt;br /&gt;
 .1.3.6.1.2.1.1.9.1.2.7 = OID: .1.3.6.1.6.3.11.3.1.1&lt;br /&gt;
 .1.3.6.1.2.1.1.9.1.2.8 = OID: .1.3.6.1.6.3.15.2.1.1&lt;br /&gt;
 .1.3.6.1.2.1.1.9.1.3.1 = STRING: The MIB module for SNMPv2 entities&lt;br /&gt;
 .1.3.6.1.2.1.1.9.1.3.2 = STRING: The MIB module for managing TCP implementations&lt;br /&gt;
 .1.3.6.1.2.1.1.9.1.3.3 = STRING: The MIB module for managing IP and ICMP implementations&lt;br /&gt;
 .1.3.6.1.2.1.1.9.1.3.4 = STRING: The MIB module for managing UDP implementations&lt;br /&gt;
 .1.3.6.1.2.1.1.9.1.3.5 = STRING: View-based Access Control Model for SNMP.&lt;br /&gt;
 .1.3.6.1.2.1.1.9.1.3.6 = STRING: The SNMP Management Architecture MIB.&lt;br /&gt;
 .1.3.6.1.2.1.1.9.1.3.7 = STRING: The MIB for Message Processing and Dispatching.&lt;br /&gt;
 .1.3.6.1.2.1.1.9.1.3.8 = STRING: The management information definitions for the SNMP User-based Security Model.&lt;br /&gt;
 .1.3.6.1.2.1.1.9.1.4.1 = Timeticks: (0) 0:00:00.00&lt;br /&gt;
 .1.3.6.1.2.1.1.9.1.4.2 = Timeticks: (0) 0:00:00.00&lt;br /&gt;
 .1.3.6.1.2.1.1.9.1.4.3 = Timeticks: (0) 0:00:00.00&lt;br /&gt;
 .1.3.6.1.2.1.1.9.1.4.4 = Timeticks: (0) 0:00:00.00&lt;br /&gt;
 .1.3.6.1.2.1.1.9.1.4.5 = Timeticks: (0) 0:00:00.00&lt;br /&gt;
 .1.3.6.1.2.1.1.9.1.4.6 = Timeticks: (1) 0:00:00.01&lt;br /&gt;
 .1.3.6.1.2.1.1.9.1.4.7 = Timeticks: (1) 0:00:00.01&lt;br /&gt;
 .1.3.6.1.2.1.1.9.1.4.8 = Timeticks: (1) 0:00:00.01&lt;br /&gt;
 .1.3.6.1.2.1.25.1.1.0 = Timeticks: (294883722) 34 days, 3:07:17.22&lt;br /&gt;
 End of MIB&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
private でのアクセス例 (ローカルか 192.168.1.10 からのみ)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
 $ snmpwalk -On -v 1 -c private localhost&lt;br /&gt;
 .1.3.6.1.2.1.1.1.0 = STRING: Linux lab.hagio.org 2.6.18-194.el5PAE #1 SMP Tue Mar 16 22:00:21 EDT 2010 i686&lt;br /&gt;
 .1.3.6.1.2.1.1.2.0 = OID: .1.3.6.1.4.1.8072.3.2.10&lt;br /&gt;
 .1.3.6.1.2.1.1.3.0 = Timeticks: (7061) 0:01:10.61&lt;br /&gt;
 .1.3.6.1.2.1.1.4.0 = STRING: Root &amp;lt;root@localhost&amp;gt; (configure /etc/snmp/snmp.local.conf)&lt;br /&gt;
 .1.3.6.1.2.1.1.5.0 = STRING: lab.hagio.org&lt;br /&gt;
 .1.3.6.1.2.1.1.6.0 = STRING: Unknown (edit /etc/snmp/snmpd.conf)&lt;br /&gt;
 .1.3.6.1.2.1.1.8.0 = Timeticks: (0) 0:00:00.00&lt;br /&gt;
 .1.3.6.1.2.1.1.9.1.2.1 = OID: .1.3.6.1.6.3.1&lt;br /&gt;
 .1.3.6.1.2.1.1.9.1.2.2 = OID: .1.3.6.1.2.1.49&lt;br /&gt;
 .1.3.6.1.2.1.1.9.1.2.3 = OID: .1.3.6.1.2.1.4&lt;br /&gt;
 .1.3.6.1.2.1.1.9.1.2.4 = OID: .1.3.6.1.2.1.50&lt;br /&gt;
  ...&lt;br /&gt;
 .1.3.6.1.2.1.88.1.4.3.1.3.6.95.115.110.109.112.100.95.108.105.110.107.68.111.119.110 = STRING: _linkUpDown&lt;br /&gt;
 .1.3.6.1.2.1.88.1.4.3.1.3.6.95.115.110.109.112.100.95.108.105.110.107.85.112 = STRING: _linkUpDown&lt;br /&gt;
 .1.3.6.1.2.1.88.1.4.3.1.3.6.95.115.110.109.112.100.95.109.116.101.84.114.105.103.103.101.114.70.97.105.108.117.114.101 = STRING: _triggerFail&lt;br /&gt;
 .1.3.6.1.2.1.88.1.4.3.1.3.6.95.115.110.109.112.100.95.109.116.101.84.114.105.103.103.101.114.70.97.108.108.105.110.103 = STRING: _triggerFire&lt;br /&gt;
 .1.3.6.1.2.1.88.1.4.3.1.3.6.95.115.110.109.112.100.95.109.116.101.84.114.105.103.103.101.114.70.105.114.101.100 = STRING: _triggerFire&lt;br /&gt;
 .1.3.6.1.2.1.88.1.4.3.1.3.6.95.115.110.109.112.100.95.109.116.101.84.114.105.103.103.101.114.82.105.115.105.110.103 = STRING: _triggerFire&lt;br /&gt;
 .1.3.6.1.2.1.92.1.1.1.0 = Gauge32: 1000&lt;br /&gt;
 .1.3.6.1.2.1.92.1.1.2.0 = Gauge32: 1440 minutes&lt;br /&gt;
 .1.3.6.1.2.1.92.1.2.1.0 = Counter32: 0 notifications&lt;br /&gt;
 .1.3.6.1.2.1.92.1.2.2.0 = Counter32: 0 notifications&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
=== MIB と OID の変換 ===&lt;br /&gt;
&lt;br /&gt;
snmptranslate コマンドを使用して MIB と OID の相互変換を行うことができる。&lt;br /&gt;
&lt;br /&gt;
まず、OID を渡すと省略形の MIB 名が得られる。&lt;br /&gt;
-Of オプションを使用すると、完全な MIB 名となる。&lt;br /&gt;
&lt;br /&gt;
 $ snmptranslate .1.3.6.1.2.1.1&lt;br /&gt;
 SNMPv2-MIB::system&lt;br /&gt;
 $ snmptranslate -Of .1.3.6.1.2.1.1&lt;br /&gt;
 .iso.org.dod.internet.mgmt.mib-2.system&lt;br /&gt;
&lt;br /&gt;
例えば、ipForwarding という MIB 情報の OID が知りたい場合、&lt;br /&gt;
単に ipForwarding だけを指定しても、辿り方がわからないのでエラーとなる。&lt;br /&gt;
&lt;br /&gt;
 $ snmptranslate ipForwarding&lt;br /&gt;
 No log handling enabled - turning on stderr logging&lt;br /&gt;
 ipForwarding: Unknown Object Identifier (Sub-id not found: (top) -&amp;gt; ipForwarding)&lt;br /&gt;
&lt;br /&gt;
この場合は -Ib オプションを指定して検索を行うようにする必要がある。&lt;br /&gt;
また、上記と同様に -Of オプションも指定可能。&lt;br /&gt;
OID で出力したい場合は、-On オプションを使用する。&lt;br /&gt;
&lt;br /&gt;
 $ snmptranslate -Ib ipForwarding&lt;br /&gt;
 IP-MIB::ipForwarding&lt;br /&gt;
 $ snmptranslate -Of -Ib ipForwarding&lt;br /&gt;
 .iso.org.dod.internet.mgmt.mib-2.ip.ipForwarding&lt;br /&gt;
 $ snmptranslate -On -Ib ipForwarding&lt;br /&gt;
 .1.3.6.1.2.1.4.1&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=RHEL&amp;diff=1058</id>
		<title>RHEL</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=RHEL&amp;diff=1058"/>
				<updated>2015-04-03T13:53:52Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: /* カーネルバージョン */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;言わずと知れた(?) Red Hat Enterprise Linux のページ。赤帽。&lt;br /&gt;
&lt;br /&gt;
もちろん、RHEL を買えるわけがないので、CentOS で代用しています。&lt;br /&gt;
CentOS って何？って方は、[http://ja.wikipedia.org/wiki/CentOS Wikipedia] をご覧下さい。&lt;br /&gt;
&lt;br /&gt;
== カーネルバージョン ==&lt;br /&gt;
&lt;br /&gt;
こんなページがあった…。&lt;br /&gt;
* [https://access.redhat.com/ja/articles/16476 Red Hat Enterprise Linux のリリース日と収録カーネルの一覧]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! RHEL バージョン !! カーネルバージョン !! リリース !! 提供カーネル !! リリース日 !! 経過日数&lt;br /&gt;
|-&lt;br /&gt;
| 7.0&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 3.10.0 || 123.el7&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | kernel || 2014-06-10 ||&lt;br /&gt;
|-&lt;br /&gt;
| 7.1 || 229.el7 || 2015-03-05 || 268&lt;br /&gt;
|-&lt;br /&gt;
| 6 Beta 1&lt;br /&gt;
| rowspan=&amp;quot;9&amp;quot; | 2.6.32 || 19.el6&lt;br /&gt;
| rowspan=&amp;quot;9&amp;quot; | kernel&amp;lt;br&amp;gt;※SMP, PAE が on || 2010-04-22 ||&lt;br /&gt;
|-&lt;br /&gt;
| 6 Beta 2 || 37.el6 || 2010-06-30 ||&lt;br /&gt;
|-&lt;br /&gt;
| 6.0 || 71.el6 || 2010-11-10 ||&lt;br /&gt;
|-&lt;br /&gt;
| 6.1 || [http://rhn.redhat.com/errata/RHSA-2011-0542.html 131.0.15.el6 ] || 2011-05-19 || 190&lt;br /&gt;
|-&lt;br /&gt;
| 6.2 || [http://rhn.redhat.com/errata/RHSA-2011-1530.html 220.el6] || 2011-12-06 || 201&lt;br /&gt;
|-&lt;br /&gt;
| 6.3 || [http://rhn.redhat.com/errata/RHSA-2012-0862.html 279.el6] || 2012-06-20 || 197&lt;br /&gt;
|-&lt;br /&gt;
| 6.4 || [http://rhn.redhat.com/errata/RHSA-2013-0496.html 358.el6] || 2013-02-21 || 246&lt;br /&gt;
|-&lt;br /&gt;
| 6.5 || [http://rhn.redhat.com/errata/RHSA-2013-1645.html 431.el6] || 2013-11-21 || 273&lt;br /&gt;
|-&lt;br /&gt;
| 6.6 || [http://rhn.redhat.com/errata/RHSA-2014-1392.html 504.el6] || 2014-10-14 || 327&lt;br /&gt;
|-&lt;br /&gt;
| 5.0&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | 2.6.18 || 8.el5&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | kernel&amp;lt;br&amp;gt;kernel-PAE&amp;lt;br&amp;gt;kernel-xen&amp;lt;br&amp;gt;※いずれも SMP が on || 2007-03-14 ||&lt;br /&gt;
|-&lt;br /&gt;
| 5.1 || [http://rhn.redhat.com/errata/RHBA-2007-0959.html 53.el5] || 2007-11-07 || 238&lt;br /&gt;
|-&lt;br /&gt;
| 5.2 || [http://rhn.redhat.com/errata/RHBA-2008-0314.html 92.el5] || 2008-05-21 || 196&lt;br /&gt;
|-&lt;br /&gt;
| 5.3 || [http://rhn.redhat.com/errata/RHSA-2009-0225.html 128.el5] || 2009-01-20 || 244&lt;br /&gt;
|-&lt;br /&gt;
| 5.4 || [http://rhn.redhat.com/errata/RHSA-2009-1243.html 164.el5] || 2009-09-01 || 224&lt;br /&gt;
|-&lt;br /&gt;
| 5.5 || [http://rhn.redhat.com/errata/RHSA-2010-0178.html 194.el5] || 2010-03-30 || 210&lt;br /&gt;
|-&lt;br /&gt;
| 5.6 || [http://rhn.redhat.com/errata/RHSA-2011-0017.html 238.el5] || 2011-01-13 || 289&lt;br /&gt;
|-&lt;br /&gt;
| 5.7 || [http://rhn.redhat.com/errata/RHSA-2011-1065.html 274.el5] || 2011-07-21 || 189&lt;br /&gt;
|-&lt;br /&gt;
| 5.8 || [http://rhn.redhat.com/errata/RHSA-2012-0150.html 308.el5] || 2012-02-21 || 215&lt;br /&gt;
|-&lt;br /&gt;
| 5.9 || [http://rhn.redhat.com/errata/RHBA-2013-0006.html 348.el5] || 2013-01-08 || 322&lt;br /&gt;
|-&lt;br /&gt;
| 5.10 || [http://rhn.redhat.com/errata/RHSA-2013-1348.html 371.el5] || 2013-09-30 || 265&lt;br /&gt;
|-&lt;br /&gt;
| 5.11 || [http://rhn.redhat.com/errata/RHBA-2014-1196.html 398.el5] || 2014-09-16 || 351&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | 2.6.9 || 5.EL&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | kernel&amp;lt;br&amp;gt;kernel-hugemem&amp;lt;br&amp;gt;kernel-smp&amp;lt;br&amp;gt;kernel-largesmp&amp;lt;br&amp;gt;※kernel 以外 PAE が on&lt;br /&gt;
| 2005-02-15 ||&lt;br /&gt;
|-&lt;br /&gt;
| 4.1 || 11.EL || 2005-06-08 || 113&lt;br /&gt;
|-&lt;br /&gt;
| 4.2 || 22.EL || 2005-10-05 || 119&lt;br /&gt;
|-&lt;br /&gt;
| 4.3 || 34.EL || 2006-03-07 || 153&lt;br /&gt;
|-&lt;br /&gt;
| 4.4 || 42.EL || 2006-08-10 || 156&lt;br /&gt;
|-&lt;br /&gt;
| 4.5 || 55.EL || 2007-04-28 || 261&lt;br /&gt;
|-&lt;br /&gt;
| 4.6 || 67.EL || 2007-11-15 || 201&lt;br /&gt;
|-&lt;br /&gt;
| 4.7 || 78.EL || 2008-07-24 || 252&lt;br /&gt;
|-&lt;br /&gt;
| 4.8 || 89.EL || 2009-05-18 || 298&lt;br /&gt;
|-&lt;br /&gt;
| 4.9 || [http://rhn.redhat.com/errata/RHSA-2011-0263.html 100.EL] || 2011-02-16 || 639&lt;br /&gt;
|-&lt;br /&gt;
| last || [http://rhn.redhat.com/errata/RHBA-2011-1796.html 103.EL] || 2011-12-08 || 295&lt;br /&gt;
|-&lt;br /&gt;
| ELS latest || [https://rhn.redhat.com/errata/RHSA-2015-0009.html 106.EL] || 2015-01-05 ||&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | 2.4.21 || 4.EL&lt;br /&gt;
| rowspan=&amp;quot;12&amp;quot; | kernel&amp;lt;br&amp;gt;kernel-hugemem&amp;lt;br&amp;gt;kernel-smp&amp;lt;br&amp;gt;(kernel-BOOT)&lt;br /&gt;
| 2003-10-23 ||&lt;br /&gt;
|-&lt;br /&gt;
| 3.1 || 9.EL || 2004-01-16 || 85&lt;br /&gt;
|-&lt;br /&gt;
| 3.2 || 15.EL || 2004-05-11 || 116&lt;br /&gt;
|-&lt;br /&gt;
| 3.3 || 20.EL || 2004-09-01 || 113&lt;br /&gt;
|-&lt;br /&gt;
| 3.4 || 27.EL || 2004-12-20 || 110&lt;br /&gt;
|-&lt;br /&gt;
| 3.5 || 32.EL || 2005-05-18 || 149&lt;br /&gt;
|-&lt;br /&gt;
| 3.6 || 37.EL || 2005-09-28 || 133&lt;br /&gt;
|-&lt;br /&gt;
| 3.7 || 40.EL || 2006-03-15 || 168&lt;br /&gt;
|-&lt;br /&gt;
| 3.8 || 47.EL || 2006-07-20 || 127&lt;br /&gt;
|-&lt;br /&gt;
| 3.9 || 50.EL || 2007-06-11 || 326&lt;br /&gt;
|-&lt;br /&gt;
| last || 63.EL || 2009-11-03 || 876&lt;br /&gt;
|-&lt;br /&gt;
| ELS last || 66.EL || 2010-11-12 || 374&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== カーネルコンフィグ ==&lt;br /&gt;
=== RHEL 5 ===&lt;br /&gt;
普通の kernel と kernel-PAE では、SMP がデフォルトになったため、違いはわずか。&lt;br /&gt;
 # Linux kernel version: 2.6.18-128.1.6.el5  | # Linux kernel version: 2.6.18-128.1.6.el5PAE&lt;br /&gt;
 # Wed Apr  1 09:12:24 2009                  | # Wed Apr  1 09:55:25 2009&lt;br /&gt;
 CONFIG_HIGHMEM4G=y                          | # CONFIG_HIGHMEM4G is not set&lt;br /&gt;
 # CONFIG_HIGHMEM64G is not set              | CONFIG_HIGHMEM64G=y&lt;br /&gt;
                                             &amp;gt; CONFIG_X86_PAE=y&lt;br /&gt;
                                             &amp;gt; # CONFIG_NUMA is not set&lt;br /&gt;
 CONFIG_SOFTWARE_SUSPEND=y                   &amp;lt;&lt;br /&gt;
 CONFIG_PM_STD_PARTITION=&amp;quot;&amp;quot;                  &amp;lt;&lt;br /&gt;
                                             &amp;gt; CONFIG_I2O_EXT_ADAPTEC_DMA64=y&lt;br /&gt;
&lt;br /&gt;
=== RHEL 4 ===&lt;br /&gt;
UP カーネルと SMP カーネルと hugemem カーネルのコンフィグの相違を diff ってみた。&lt;br /&gt;
hugemem は SMP とほとんど変わらなかったので、右に付け足し。&lt;br /&gt;
&lt;br /&gt;
SMP では、SMP、PAE、HT などが on になっており、hugemem ではさらに X86_4G などが on になっている。&lt;br /&gt;
&lt;br /&gt;
 # Linux kernel version: 2.6.9-78.EL  | # Linux kernel version: 2.6.9-78.ELsmp  | # Linux kernel version: 2.6.9-78.ELhugemem&lt;br /&gt;
 # Wed Jul  9 15:24:56 2008           | # Wed Jul  9 15:37:00 2008              | # Wed Jul  9 15:55:03 2008&lt;br /&gt;
 CONFIG_BROKEN_ON_SMP=y               &amp;lt;&lt;br /&gt;
                                      &amp;gt; CONFIG_STOP_MACHINE=y&lt;br /&gt;
 CONFIG_X86_PC=y                      | CONFIG_MEM_MIRROR=y&lt;br /&gt;
                                      &amp;gt; # CONFIG_X86_PC is not set&lt;br /&gt;
 # CONFIG_X86_GENERICARCH is not set  | CONFIG_X86_GENERICARCH=y&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_CYCLONE_TIMER=y&lt;br /&gt;
 # CONFIG_X86_4G is not set                                                     | CONFIG_X86_4G=y&lt;br /&gt;
 # CONFIG_X86_SWITCH_PAGETABLES is not set                                      | CONFIG_X86_SWITCH_PAGETABLES=y&lt;br /&gt;
 # CONFIG_X86_4G_VM_LAYOUT is not set                                           | CONFIG_X86_4G_VM_LAYOUT=y&lt;br /&gt;
 # CONFIG_X86_UACCESS_INDIRECT is not set                                       | CONFIG_X86_UACCESS_INDIRECT=y&lt;br /&gt;
 # CONFIG_X86_HIGH_ENTRY is not set                                             | CONFIG_X86_HIGH_ENTRY=y&lt;br /&gt;
 # CONFIG_SMP is not set              | CONFIG_SMP=y&lt;br /&gt;
                                      &amp;gt; CONFIG_NR_CPUS=32&lt;br /&gt;
                                      &amp;gt; CONFIG_SCHED_SMT=y&lt;br /&gt;
                                      &amp;gt; CONFIG_SCHED_MC=y&lt;br /&gt;
 CONFIG_X86_UP_APIC=y                 &amp;lt;&lt;br /&gt;
 CONFIG_X86_UP_IOAPIC=y               &amp;lt;&lt;br /&gt;
 CONFIG_HIGHMEM4G=y                   | # CONFIG_HIGHMEM4G is not set&lt;br /&gt;
 # CONFIG_HIGHMEM64G is not set       | CONFIG_HIGHMEM64G=y&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_PAE=y&lt;br /&gt;
                                      &amp;gt; # CONFIG_NUMA is not set&lt;br /&gt;
                                      &amp;gt; # CONFIG_IRQBALANCE is not set&lt;br /&gt;
                                      &amp;gt; CONFIG_HAVE_DEC_LOCK=y                          &lt;br /&gt;
                                      &amp;gt; # CONFIG_HOTPLUG_CPU is not set                 &lt;br /&gt;
 # CONFIG_NI5010 is not set           &amp;lt;&lt;br /&gt;
 # CONFIG_PCMCIA_XIRTULIP is not set  &amp;lt;&lt;br /&gt;
 CONFIG_ISDN_DRV_LOOP=m               &amp;lt;&lt;br /&gt;
 CONFIG_HYSDN=m                       &amp;lt;&lt;br /&gt;
 CONFIG_HYSDN_CAPI=y                  &amp;lt;&lt;br /&gt;
 # CONFIG_COMPUTONE is not set        &amp;lt;&lt;br /&gt;
 # CONFIG_DIGIEPCA is not set         &amp;lt;&lt;br /&gt;
 # CONFIG_DIGI is not set             &amp;lt;&lt;br /&gt;
 # CONFIG_ESPSERIAL is not set        &amp;lt;&lt;br /&gt;
 # CONFIG_MOXA_INTELLIO is not set    &amp;lt;&lt;br /&gt;
 # CONFIG_MOXA_SMARTIO is not set     &amp;lt;&lt;br /&gt;
 # CONFIG_ISI is not set              &amp;lt;&lt;br /&gt;
 # CONFIG_RISCOM8 is not set          &amp;lt;&lt;br /&gt;
 # CONFIG_SPECIALIX is not set        &amp;lt;&lt;br /&gt;
 # CONFIG_SX is not set               &amp;lt;&lt;br /&gt;
 # CONFIG_RIO is not set              &amp;lt;&lt;br /&gt;
 # CONFIG_STALLION is not set         &amp;lt;&lt;br /&gt;
 # CONFIG_ISTALLION is not set        &amp;lt;&lt;br /&gt;
 # CONFIG_FTAPE is not set            &amp;lt;&lt;br /&gt;
 # CONFIG_I2C_ELEKTOR is not set      &amp;lt;&lt;br /&gt;
 # CONFIG_VIDEO_MEYE is not set       &amp;lt;&lt;br /&gt;
 CONFIG_USB_SERIAL_WHITEHEAT=m        &amp;lt;&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_SMP=y&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_HT=y&lt;br /&gt;
                                      &amp;gt; CONFIG_X86_TRAMPOLINE=y&lt;br /&gt;
&lt;br /&gt;
要するに…&lt;br /&gt;
; kernel&lt;br /&gt;
: 搭載メモリ 4 GB まで対応、複数のコア (プロセッサ) やハイパースレッディングには非対応。&lt;br /&gt;
; kernel-smp&lt;br /&gt;
: 搭載メモリ 4 GB 以上に対応、複数のコアやハイパースレッディングにも対応。&lt;br /&gt;
; kernel-hugemem&lt;br /&gt;
: 搭載メモリ 4 GB 以上に対応、複数のコアやハイパースレッディングにも対応。ユーザ空間 4 GB (0xff000000 = 4080 MB)、カーネル空間 4 GB になる。ページテーブルの切り替え(?)によるオーバーヘッドが発生する。&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
=== 追加パッケージ ===&lt;br /&gt;
&lt;br /&gt;
やっぱり RPM でインストールするのが一番安心するね。&lt;br /&gt;
&lt;br /&gt;
* [https://fedoraproject.org/wiki/EPEL EPEL - FedoraProject]&lt;br /&gt;
* [http://rpmrepo.org/RPMforge RPMforge - RPMRepo Wiki]&lt;br /&gt;
&lt;br /&gt;
=== debuginfo ===&lt;br /&gt;
&lt;br /&gt;
日本人は理研から落としましょう。速いです。&lt;br /&gt;
&lt;br /&gt;
* [http://ftp.riken.jp/Linux/redhat/ftp.redhat.com/linux/enterprise/ ftp.riken.jp] (RHEL)&lt;br /&gt;
* [http://ftp.riken.jp/Linux/redhat/ftp.redhat.com/linux/updates/enterprise/ ftp.riken.jp] (RHEL updates)&lt;br /&gt;
* [http://debuginfo.centos.org/ debuginfo.centos.org] (CentOS)&lt;br /&gt;
&lt;br /&gt;
=== RHEL 5 ===&lt;br /&gt;
==== vim 7.0 のカラーリング ====&lt;br /&gt;
RHEL5 の vim 7.0 で /var/log/messages を見たときのカラーリングがすごい。ケバい。&lt;br /&gt;
&lt;br /&gt;
[[画像:vim7.png]]&lt;br /&gt;
&lt;br /&gt;
でもエラーを反転表示したりして、意外と使えるかもしれない。&lt;br /&gt;
&lt;br /&gt;
=== RHEL 4 ===&lt;br /&gt;
&lt;br /&gt;
=== RHEL 3 ===&lt;br /&gt;
&lt;br /&gt;
==== スケジューラ ====&lt;br /&gt;
今日知った、驚愕の事実。&lt;br /&gt;
&lt;br /&gt;
'''RHEL 3 のカーネルは 2.4 系だが、スケジューラは O(1) スケジューラである!!'''&lt;br /&gt;
&lt;br /&gt;
ソース読んで初めて知った…。&lt;br /&gt;
&lt;br /&gt;
2009/07/13 追記：RHEL 2.1 も O(1) スケジューラが載ってた。&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=Express5800%EF%BC%8F110Ge&amp;diff=1057</id>
		<title>Express5800／110Ge</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=Express5800%EF%BC%8F110Ge&amp;diff=1057"/>
				<updated>2015-03-28T07:37:28Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: /* fancontrol の設定 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;hagio.org 2 代目サーバ。&lt;br /&gt;
&lt;br /&gt;
== 構成 ==&lt;br /&gt;
&lt;br /&gt;
=== 物理構成 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 種別 !! 製品 !! 価格&lt;br /&gt;
|-&lt;br /&gt;
| 本体 || NEC Express5800/110Ge || \12,800&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | CPU || &amp;lt;s&amp;gt;Intel Celeron 430 (1.8 GHz, L2: 512 KB)&amp;lt;/s&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| Intel Core 2 Quad Q8400 (2.66 GHz, L2: 4 MB) || \16,000&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | RAM || DDR2-800 2 GB x 2 || \4,200&lt;br /&gt;
|-&lt;br /&gt;
| DDR2-800 2 GB x 2 || \4,700&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | HDD || HGST Deskstar 7K160 HDS721680 (80 GB) ||&lt;br /&gt;
|-&lt;br /&gt;
| HGST Deskstar P7K500 HDP72505 (500 GB) || \5,500&lt;br /&gt;
|-&lt;br /&gt;
| HGST Deskstar 7K2000 HDS722020ALA330 (2 TB) || \12,800&lt;br /&gt;
|-&lt;br /&gt;
| OS || CentOS 5.2 (i386) ||&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | NIC || Intel 82566DM-2 Gigabit ||&lt;br /&gt;
|-&lt;br /&gt;
| Realtek RTL-8169 Gigabit || \1,500&lt;br /&gt;
|-&lt;br /&gt;
| GPU || [http://www.xgitech.com/products/products_2.asp?P=23 XGI Volari Z9s] (32 MB) ||&lt;br /&gt;
|-&lt;br /&gt;
! 合計 || || \57,500&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 運用中サービス ===&lt;br /&gt;
数えてみるといろいろやってんなぁ。&lt;br /&gt;
* DHCP サーバ (dhcpd)&lt;br /&gt;
* Web サーバ (Apache)&lt;br /&gt;
** MediaWiki&lt;br /&gt;
** PENS, kAlbum (自作のしょーもないプログラムたち)&lt;br /&gt;
* データベース (MySQL)&lt;br /&gt;
* ファイル共有 (NFS)&lt;br /&gt;
* NTP サーバ (ntpd)&lt;br /&gt;
* SSH サーバ (sshd)&lt;br /&gt;
* VNC サーバ (Xvnc)&lt;br /&gt;
* SMTP サーバ (Postfix)&lt;br /&gt;
* DNS (BIND)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 各種センサー ===&lt;br /&gt;
チップは ITE IT8718F とのこと。CentOS では、5.5 以降 (2.6.18-194.el5 以降) で対応している。&lt;br /&gt;
 # sensors&lt;br /&gt;
 it8718-isa-0290&lt;br /&gt;
 Adapter: ISA adapter&lt;br /&gt;
 in0:       +1.09 V  (min =  +0.77 V, max =  +1.54 V)&lt;br /&gt;
 in1:       +1.79 V  (min =  +1.62 V, max =  +1.98 V)&lt;br /&gt;
 in2:       +3.28 V  (min =  +2.96 V, max =  +3.63 V)&lt;br /&gt;
 in3:       +2.96 V  (min =  +2.54 V, max =  +3.46 V)&lt;br /&gt;
 in4:       +3.04 V  (min =  +2.70 V, max =  +3.30 V)&lt;br /&gt;
 in5:       +0.05 V  (min =  +0.02 V, max =  +4.06 V)&lt;br /&gt;
 in6:       +1.09 V  (min =  +0.02 V, max =  +4.06 V)&lt;br /&gt;
 in7:       +2.56 V  (min =  +2.24 V, max =  +2.75 V)&lt;br /&gt;
 in8:       +3.22 V&lt;br /&gt;
 fan1:     1939 RPM  (min = 1500 RPM) ★pwm1 CPU ファン&lt;br /&gt;
 fan2:     1650 RPM  (min = 1149 RPM) ★pwm2 フロントファン&lt;br /&gt;
 fan3:     1650 RPM  (min = 1149 RPM) ★pwm3 リアファン(1)&lt;br /&gt;
 fan4:     1622 RPM  (min = 1149 RPM) ★pwm3 リアファン(2)&lt;br /&gt;
 fan5:        0 RPM  (min =   10 RPM)&lt;br /&gt;
 temp1:       +38°C  (low  =    +5°C, high =   +62°C)   sensor = thermistor ★MCH (ノース) 付近のサーミスタ&lt;br /&gt;
 temp2:       +34°C  (low  =    +5°C, high =   +62°C)   sensor = thermistor ★DDR (メモリ?) 付近のサーミスタ&lt;br /&gt;
 temp3:       +44°C  (low  =    +5°C, high =   +90°C)   sensor = diode      ★CPU 内蔵のサーマルダイオード&lt;br /&gt;
 vid:      +3.500 V&lt;br /&gt;
&lt;br /&gt;
* 参考文献&lt;br /&gt;
** [http://wiki.nothing.sh/page/NEC%20Express5800%A1%BF110Gd NEC Express5800／110Gd - wiki@nothing]&lt;br /&gt;
&lt;br /&gt;
==== fancontrol の設定 ====&lt;br /&gt;
fancontrol は、上記温度センサの値を利用して、動的にファンの回転数を制御するツールだ。&lt;br /&gt;
lm_sensors に含まれている。設定ファイルは /etc/fancontrol だが、以下のように設定した。&lt;br /&gt;
&lt;br /&gt;
 INTERVAL=5&lt;br /&gt;
 FCTEMPS=hwmon0/device/pwm1=hwmon0/device/temp3_input hwmon0/device/pwm2=hwmon0/device/temp3_input hwmon0/device/pwm3=hwmon0/device/temp3_input&lt;br /&gt;
 FCFANS=hwmon0/device/pwm1=hwmon0/device/fan1_input hwmon0/device/pwm2=hwmon0/device/fan2_input hwmon0/device/pwm3=hwmon0/device/fan3_input&lt;br /&gt;
 MINTEMP=hwmon0/device/pwm1=40 hwmon0/device/pwm2=40 hwmon0/device/pwm3=40&lt;br /&gt;
 MAXTEMP=hwmon0/device/pwm1=55 hwmon0/device/pwm2=55 hwmon0/device/pwm3=55&lt;br /&gt;
 MINSTART=hwmon0/device/pwm1=150 hwmon0/device/pwm2=150 hwmon0/device/pwm3=150&lt;br /&gt;
 MINSTOP=hwmon0/device/pwm1=75 hwmon0/device/pwm2=50 hwmon0/device/pwm3=50&lt;br /&gt;
 MINPWM=hwmon0/device/pwm1=75 hwmon0/device/pwm2=50 hwmon0/device/pwm3=50&lt;br /&gt;
&lt;br /&gt;
; CPU ファン (fan1-pwm1)&lt;br /&gt;
: CPU 温度が 40 度を下回ると、最低速度 75 (1500rpm 程度) で回す (停止させない)。55 度を上回ると最大速度で回す。&lt;br /&gt;
; フロント、リアファン (fan2-pwm2, fan3/fan4-pwm3)&lt;br /&gt;
: CPU 温度が 40 度を下回ると、最低速度 50 (1000rpm 程度) で回す (停止させない)。55 度を上回ると最大速度で回す。&lt;br /&gt;
&lt;br /&gt;
パラメータの詳細は '''man fancontrol''' を参照のこと。&lt;br /&gt;
&lt;br /&gt;
; INTERVAL&lt;br /&gt;
: 温度監視およびファン制御が行なわれる間隔 (単位は秒)。短くすると、温度変化に滑らかに追従するようになるが、あまり短すぎてもうるさいかも。&lt;br /&gt;
; FCTEMPS&lt;br /&gt;
: ファンが連動する温度センサを指定する。&lt;br /&gt;
; FCFANS&lt;br /&gt;
: PWM とファンの対応を設定する。&lt;br /&gt;
; MINTEMP&lt;br /&gt;
: 温度がこの値を下回ると、ファンを停止させる。&lt;br /&gt;
; MAXTEMP&lt;br /&gt;
: 温度がこの値を上回ると、ファンを最大速度で回す。&lt;br /&gt;
; MINSTART&lt;br /&gt;
: ファンを回し始めるときに用いられる速度。&lt;br /&gt;
; MINSTOP&lt;br /&gt;
: ファンの最低速度。温度がほぼ MINTEMP の場合の速度。&lt;br /&gt;
; MINPWM (オプション)&lt;br /&gt;
: この値を指定すると、温度が MINTEMP を下回ったときにファンと停止せずにこの速度で回す。デフォルトは 0 (停止させる)。&lt;br /&gt;
; MAXPWM (オプション)&lt;br /&gt;
: この値を指定すると、温度が MAXTEMP を上回ったときにファンを全開にせずにこの速度で回す。デフォルトは 255 (最大速度で回す)。&lt;br /&gt;
&lt;br /&gt;
 # 2015-03-28 現在 (lucida)&lt;br /&gt;
 INTERVAL=15&lt;br /&gt;
 FCTEMPS=hwmon0/device/pwm1=hwmon0/device/temp3_input hwmon0/device/pwm2=hwmon0/device/temp3_input hwmon0/device/pwm3=hwmon0/device/temp3_input&lt;br /&gt;
 FCFANS=hwmon0/device/pwm1=hwmon0/device/fan1_input hwmon0/device/pwm2=hwmon0/device/fan2_input hwmon0/device/pwm3=hwmon0/device/fan3_input&lt;br /&gt;
 MINTEMP=hwmon0/device/pwm1=55 hwmon0/device/pwm2=55 hwmon0/device/pwm3=55&lt;br /&gt;
 MAXTEMP=hwmon0/device/pwm1=80 hwmon0/device/pwm2=80 hwmon0/device/pwm3=80&lt;br /&gt;
 MINSTART=hwmon0/device/pwm1=150 hwmon0/device/pwm2=120 hwmon0/device/pwm3=120&lt;br /&gt;
 MINSTOP=hwmon0/device/pwm1=100 hwmon0/device/pwm2=80 hwmon0/device/pwm3=80&lt;br /&gt;
 MINPWM=hwmon0/device/pwm1=100 hwmon0/device/pwm2=80 hwmon0/device/pwm3=80&lt;br /&gt;
 #MINPWM=hwmon0/device/pwm1=80 hwmon0/device/pwm2=50 hwmon0/device/pwm3=50&lt;br /&gt;
 MAXPWM=hwmon0/device/pwm1=255 hwmon0/device/pwm2=160 hwmon0/device/pwm3=160&lt;br /&gt;
&lt;br /&gt;
== HOWTO ==&lt;br /&gt;
&lt;br /&gt;
=== フロントパネルにフィルタを取り付ける ===&lt;br /&gt;
&lt;br /&gt;
以下の日記を参照。&lt;br /&gt;
&lt;br /&gt;
* [http://hagio.org/diary/index.php?20110602#day25 hagio.org - 日記 (2011/06/25)]&lt;br /&gt;
&lt;br /&gt;
=== XGI Volari Z9s のドライバをインストールする ===&lt;br /&gt;
&lt;br /&gt;
Express5800/110Ge に UXGA のディスプレイを接続しても、&lt;br /&gt;
デフォルトの CentOS 5.1 では UXGA 表示できない上に、描画がかなりとろい。&lt;br /&gt;
ドライバを入れたら変わるかもしれないと思い、試してみたのでメモしておく。&lt;br /&gt;
&lt;br /&gt;
以下のページから、Server → Volari Z7/Z9/Z9s/Z11 → Linux と選択。&lt;br /&gt;
&lt;br /&gt;
http://www.xgitech.com/sd/sd_download.asp&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Z7/Z9/Z9s/Z11 - Linux Xorg6.9-7.3&amp;quot; をダウンロードすると、&lt;br /&gt;
バージョンによるが &amp;quot;2.70.09.rar&amp;quot; といった名前のファイルとなる。&lt;br /&gt;
Linux のドライバなのに、なんで rar やねん！という気持ちを抑えつつ、&lt;br /&gt;
Mac や Windows で解凍して転送するか、おとなしく rar や unrar をインストールして解凍する。&lt;br /&gt;
&lt;br /&gt;
 # mkdir xgi; cd xgi&lt;br /&gt;
 # unrar e ../2.70.09.rar&lt;br /&gt;
 &lt;br /&gt;
 UNRAR 3.90 beta 3 freeware      Copyright (c) 1993-2009 Alexander Roshal&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 Extracting from ../2.70.09.rar&lt;br /&gt;
 &lt;br /&gt;
 Extracting  xgipkg_Xorg7_i386.tgz                                     OK &lt;br /&gt;
 Extracting  xgi_xg27_x86_xorg7_2_70_09.run                            OK &lt;br /&gt;
 Extracting  xgipkg_Xorg7_x86_64.tgz                                   OK &lt;br /&gt;
 Extracting  xgi_xg27_x86_64_xorg7_2_70_09.run                         OK &lt;br /&gt;
 All OK&lt;br /&gt;
&lt;br /&gt;
.run というファイルは bash スクリプトっぽいが、よくわからないので無視して、&lt;br /&gt;
該当アーキテクチャの tgz ファイルを展開し、install.sh を実行する。&lt;br /&gt;
&lt;br /&gt;
 # tar xzfvp xgipkg_Xorg7_i386.tgz &lt;br /&gt;
 install.sh&lt;br /&gt;
 install_nor.sh&lt;br /&gt;
 install_slackware.sh&lt;br /&gt;
 install_ubuntu.sh&lt;br /&gt;
   :&lt;br /&gt;
 # sh install.sh&lt;br /&gt;
 &lt;br /&gt;
 XGI Linux driver installation for package 2.70.9&lt;br /&gt;
 &lt;br /&gt;
 redhat&lt;br /&gt;
 &lt;br /&gt;
 XGI Linux driver installation for package 2.70.9&lt;br /&gt;
   :&lt;br /&gt;
&lt;br /&gt;
成功したような気がしたら、system-config-display や X 起動したりして設定をいじってみる。&lt;br /&gt;
&lt;br /&gt;
確かに UXGA (1600x1200) 表示されるようになったが、色は変だし、描画はとろいままである。&lt;br /&gt;
やはり、\12,800 円のマシンのオンボード GPU を期待しちゃダメだということですな。&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	<entry>
		<id>http://hagio.org/wiki/index.php?title=%E3%83%9B%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88&amp;diff=1056</id>
		<title>ホーネット</title>
		<link rel="alternate" type="text/html" href="http://hagio.org/wiki/index.php?title=%E3%83%9B%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88&amp;diff=1056"/>
				<updated>2015-03-28T03:24:52Z</updated>
		
		<summary type="html">&lt;p&gt;Hagio: /* パーツ情報 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ひっそりと記録開始。&lt;br /&gt;
&lt;br /&gt;
== 来歴 ==&lt;br /&gt;
&lt;br /&gt;
* 2012 年&lt;br /&gt;
** 07-xx　唐突にバイクに乗ってみたくなり、自動車学校に通い始める。普通二輪、土日のみ。&lt;br /&gt;
** 08-31　免許も未取得ながら、HONDA ホーネット購入。&lt;br /&gt;
** 09-29　技能試験に合格。&lt;br /&gt;
** 10-04　免許を更新。&lt;br /&gt;
** 10-27　ようやく納車。&lt;br /&gt;
** 11-13　200 km 到達、かつ初エンスト。1 速に入ったまま誤ってクラッチを放す。さらに満タン納車だったため、初給油。&lt;br /&gt;
** 12-01　初の (なんちゃって) ツーリング。途中でみぞれが降り出し引き返し、48 km くらい。雨の中走ったのも、教習所含めて初。&lt;br /&gt;
** 12-10　奥多摩湖までツーリング。さすがに超寒い。片道 2 時間、総走行距離は 120 km くらいだった。&lt;br /&gt;
* 2013 年&lt;br /&gt;
** 02-08　駐車場で倒れてしまっていて、フロント左ウィンカーを破損。接着剤とビニールテープで修繕…。&lt;br /&gt;
** 03-30　友人と相模湖までツーリングに出かけたものの、途中で雨が降り出したためあえなく断念。&lt;br /&gt;
** 05-01　秩父へツーリング。初高速道路、初 200 km 超走行で疲労困憊したが楽しすぎる。&lt;br /&gt;
** 05-25　相模湖・宮ヶ瀬湖へツーリング。フラッと走りに行くには丁度良い距離で、アップダウンもあって良かった。&lt;br /&gt;
** 06-29　ナカハラちゃんの超絶ドタキャンにより１人ツーリング。時間の都合で都民の森で引き返した。&lt;br /&gt;
** 09-21　ようやく念願のナカハラちゃんとのツーリングで相模、宮ヶ瀬湖へ。エツシは体調不良で断念。&lt;br /&gt;
** 10-04　免許取得から 1 年が経過して、タンデムが可能に。&lt;br /&gt;
** 10-13　初のタンデムツーリングで相模湖・宮ヶ瀬湖へ。100 km ほどだったが異様に疲れた。&lt;br /&gt;
** 11-22　湘南・三浦半島ツーリング。&lt;br /&gt;
* 2014 年&lt;br /&gt;
** 03-23　相模湖・上野原早朝ツーリング。&lt;br /&gt;
** 05-01　初の一泊ツーリング。まったり富士山一周 (約 330 km)。&lt;br /&gt;
** 05-02　オイル・エレメント交換 (&amp;amp;yen;5,400)、負圧ホース交換 (&amp;amp;yen;3,350)。&lt;br /&gt;
** 05-17　相模湖・奥多摩湖ツーリング。&lt;br /&gt;
** 09-14　秩父ツーリング with ナカハラちゃん。エツシは仕事でドタキャン、前科２犯。&lt;br /&gt;
** 09-14　およそ 2 年でようやく 3,000 km 到達…。まだ下りカーブが怖い。&lt;br /&gt;
** 10-11　早朝ツーリング to 上野原〜小菅〜一の瀬高原〜勝沼 (約 230 km) *&lt;br /&gt;
** 11-19　住所変更を行って川崎ナンバーに。塩浜まで行くのは大変。&lt;br /&gt;
** 11-22　西房総半島ツーリング。スピードメータが壊れて距離がわからない。&lt;br /&gt;
** 12-27　スピードメータ修理。入力のギアが削れてしまっていたとのこと (&amp;amp;yen;410 + 工賃 = &amp;amp;yen;2,570)。&lt;br /&gt;
&lt;br /&gt;
== マシン情報 ==&lt;br /&gt;
&lt;br /&gt;
カスタムには全然興味がないので、どノーマルである。&lt;br /&gt;
&lt;br /&gt;
[[画像:20120831_hornet.jpg|300px]]&lt;br /&gt;
[[画像:20121102-hornet.jpg|300px]]&lt;br /&gt;
[[画像:20121110-hornet.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| 型式 || BA-MC31&lt;br /&gt;
|-&lt;br /&gt;
| 年式 || 2003&lt;br /&gt;
|-&lt;br /&gt;
| 走行距離 || 11,600 km&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
購入したバイク屋が Web に出していた画像をよく見ると、メータが 29,590 km となっているものがあったので、&lt;br /&gt;
おそらく 11,600 km というのは巻き戻されたものだろう。&lt;br /&gt;
&lt;br /&gt;
=== パーツ情報 ===&lt;br /&gt;
&lt;br /&gt;
交換したパーツの情報をメモっておく。&lt;br /&gt;
&lt;br /&gt;
; フロント ストップスイッチ&lt;br /&gt;
: [http://www.marunakayoko.net/2rin-parts-product.html?eid=00003&amp;amp;lid=5 NTB SSH-02] (35340-MM5-600)&lt;br /&gt;
; ストップ・テールランプ バルブ&lt;br /&gt;
: 12V18/5W&lt;br /&gt;
; スピードメータ ジョイント交換&lt;br /&gt;
: 410 円 + 工賃 2,160 円 = 2,570 円&lt;br /&gt;
&lt;br /&gt;
交換してないけどメモ。価格は２りんかんでのもの。&lt;br /&gt;
&lt;br /&gt;
; 左レバー&lt;br /&gt;
: 53718-KV0-000 : 1,228 円&lt;br /&gt;
; 右レバー&lt;br /&gt;
: 53170-MBW-006 : 2,593 円&lt;br /&gt;
; プラグ&lt;br /&gt;
: NGK CR9EH-9 : 787 円&lt;br /&gt;
; フロントタイヤ (130/70ZR16)&lt;br /&gt;
: DUNLOP GPR-200 : 18,600 円&lt;br /&gt;
; リアタイヤ (180/55ZR17)&lt;br /&gt;
: DUNLOP GPR-200 : 25,700 円&lt;br /&gt;
&lt;br /&gt;
== 走行・燃費記録 ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 日付       !! ODD       !! TRIP       !!  給油量  !! 燃費      !! 単価     !! 燃料代      !! 備考&lt;br /&gt;
|-&lt;br /&gt;
| 2012-10-27 || 11,6xx km || -          ||  -       || -         || -        || -           ||&lt;br /&gt;
|-&lt;br /&gt;
| 2012-11-13 || 11,800 km ||   202.6 km ||   9.17 L || 22.1 km/L || &amp;amp;yen;139 ||  &amp;amp;yen;1,275 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2012-12-01 || 11,915 km ||   115.8 km ||   5.98 L || 19.4 km/L || &amp;amp;yen;142 ||    &amp;amp;yen;849 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2012-12-10 || 12,077 km ||   161.7 km ||   8.28 L || 19.5 km/L || &amp;amp;yen;140 ||  &amp;amp;yen;1,159 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2013-02-02 || 12,303 km ||   226.5 km ||   9.83 L || 23.0 km/L || &amp;amp;yen;143 ||  &amp;amp;yen;1,406 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2013-03-30 || 12,443 km ||   139.0 km ||   8.27 L || 16.8 km/L || &amp;amp;yen;148 ||  &amp;amp;yen;1,224 || 倒れてこぼれた可能性が高い&lt;br /&gt;
|-&lt;br /&gt;
| 2013-05-01 || 12,627 km ||   183.9 km ||   8.83 L || 20.8 km/L || &amp;amp;yen;147 ||  &amp;amp;yen;1,298 || 近場をウロウロのみ&lt;br /&gt;
|-&lt;br /&gt;
| 2013-05-02 || 12,871 km ||   244.7 km ||   9.47 L || 25.8 km/L || &amp;amp;yen;147 ||  &amp;amp;yen;1,392 || 高速・ツーリング含む&lt;br /&gt;
|-&lt;br /&gt;
| 2013-06-29 || 13,030 km ||   158.0 km ||   7.55 L || 20.9 km/L || &amp;amp;yen;147 ||  &amp;amp;yen;1,110 || 近場をウロウロのみ&lt;br /&gt;
|-&lt;br /&gt;
| 2013-09-22 || 13,213 km ||   183.3 km ||   8.29 L || 22.1 km/L || &amp;amp;yen;152 ||  &amp;amp;yen;1,260 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2013-10-09 || 13,343 km ||   130.4 km ||   7.22 L || 18.0 km/L || &amp;amp;yen;147 ||  &amp;amp;yen;1,061 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2013-11-22 || 13,467 km ||   144.0 km ||   7.28 L || 19.8 km/L || &amp;amp;yen;146 ||  &amp;amp;yen;1,063 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-01-28 || -         ||   -        ||  10.72 L || -         || &amp;amp;yen;157 ||  &amp;amp;yen;1,683 || 距離未記録&lt;br /&gt;
|-&lt;br /&gt;
| 2014-05-01 || 13,856 km ||   369.0 km ||   6.69 L || 21.2 km/L || &amp;amp;yen;157 ||  &amp;amp;yen;1,050 || 燃費は 11/22 からの値&lt;br /&gt;
|-&lt;br /&gt;
| 2014-05-02 || 14,081 km ||   224.4 km ||   8.24 L || 27.2 km/L || &amp;amp;yen;159 ||  &amp;amp;yen;1,310 || 高速あり&lt;br /&gt;
|-&lt;br /&gt;
| 2014-05-17 || 14,258 km ||   176.8 km ||   7.74 L || 22.8 km/L || &amp;amp;yen;158 ||  &amp;amp;yen;1,223 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-08-08 || 14,457 km ||   199.6 km ||   8.98 L || 22.2 km/L || &amp;amp;yen;163 ||  &amp;amp;yen;1,464 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-09-14 || 14,613 km ||   155.0 km ||   7.06 L || 22.0 km/L || &amp;amp;yen;160 ||  &amp;amp;yen;1,130 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-10-11 || 14,808 km ||   195.4 km ||   8.07 L || 24.2 km/L || &amp;amp;yen;154 ||  &amp;amp;yen;1,243 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-11-19 || 15,071 km ||   262.7 km ||  11.01 L || 23.9 km/L || &amp;amp;yen;152 ||  &amp;amp;yen;1,674 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2014-12-12 || 15,287 km ||  約 300 km ||  12.10 L || 24.8 km/L || &amp;amp;yen;139 ||  &amp;amp;yen;1,606 || メーター故障により推測距離&lt;br /&gt;
|-&lt;br /&gt;
! 合計       !! -         !!  3772.8 km || 170.78 L || 22.1 km/L || -        || &amp;amp;yen;25,480 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 関連リンク ==&lt;br /&gt;
* [http://www.honda.co.jp/pressroom/products/motor/hornet/hornet_1996-01-25/ Honda | バイク製品アーカイブ 「ホーネット」]&lt;br /&gt;
* [http://ja.wikipedia.org/wiki/%E3%83%9B%E3%83%B3%E3%83%80%E3%83%BB%E3%83%9B%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88 ホンダ・ホーネット - Wikipedia]&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
=== 回転数と速度の関係 ===&lt;br /&gt;
&lt;br /&gt;
理論値を計算してみた。&lt;br /&gt;
&lt;br /&gt;
 rpm  1000   2000   3000   4000   5000   6000   7000   8000   9000  10000  11000  12000  13000  14000  15000  16000&lt;br /&gt;
 1st  4.56   9.13  13.69  18.25  22.82  27.38  31.94  36.50  41.07  45.63  50.19  54.76  59.32  63.88  68.45  73.01&lt;br /&gt;
 2nd  6.24  12.47  18.71  24.94  31.18  37.41  43.65  49.88  56.12  62.35  68.59  74.82  81.06  87.30  93.53  99.77&lt;br /&gt;
 3rd  7.84  15.69  23.53  31.37  39.22  47.06  54.90  62.75  70.59  78.43  86.28  94.12 101.96 109.81 117.65 125.49&lt;br /&gt;
 4th  9.46  18.92  28.39  37.85  47.31  56.77  66.23  75.70  85.16  94.62 104.08 113.54 123.00 132.47 141.93 151.39&lt;br /&gt;
 5th 11.22  22.45  33.67  44.90  56.12  67.35  78.57  89.80 101.02 112.25 123.47 134.70 145.92 157.15 168.37 179.60&lt;br /&gt;
 6th 12.92  25.85  38.77  51.69  64.62  77.54  90.46 103.38 116.31 129.23 142.15 155.08 168.00 180.92 193.85 206.77&lt;br /&gt;
&lt;br /&gt;
 km/h   10     20     30     40     50     60     70     80     90    100    110    120    130    140    150    160&lt;br /&gt;
 1st  2182   4378   6574   8757  10953  13149  15331&lt;br /&gt;
 2nd  1597   3204   4811   6408   8015   9622  11219  12826  14433  16031&lt;br /&gt;
 3rd  1269   2547   3824   5094   6372   7649   8919  10197  11474  12744  14022  15299&lt;br /&gt;
 4th  1052   2111   3170   4223   5282   6341   7393   8452   9511  10564  11623  12682  13735  14794  15853&lt;br /&gt;
 5th   887   1779   2672   3559   4452   5345   6232   7125   8017   8905   9797  10690  11577  12470  13363  14250&lt;br /&gt;
 6th   770   1546   2321   3092   3867   4642   5413   6188   6964   7735   8510   9285  10056  10831  11607  12377&lt;br /&gt;
&lt;br /&gt;
=== 使用可能なタイヤ ===&lt;br /&gt;
&lt;br /&gt;
今は以下くらいしか無さそう。&lt;br /&gt;
&lt;br /&gt;
* BRIDGESTONE&lt;br /&gt;
** [http://www.bridgestone.co.jp/personal/mc/products/battlax/s20.html BATTLAX HYPERSPORT S20]&lt;br /&gt;
** [http://www.bridgestone.co.jp/personal/mc/products/battlax/bt56.html BATTLAX BT-56]&lt;br /&gt;
* DUNLOP&lt;br /&gt;
** [http://ridersnavi.com/catalogue/tyre/Roadsport/ SPORTMAX Roadsport]&lt;br /&gt;
** [http://ridersnavi.com/catalogue/tyre/GPR200/ SPORTMAX GPR-200]&lt;br /&gt;
** [http://ridersnavi.com/catalogue/tyre/a13/ SPORTMAX α-13Z]&lt;/div&gt;</summary>
		<author><name>Hagio</name></author>	</entry>

	</feed>