home ホーム search 検索 -  login ログイン  | help ヘルプ

find 検索

221 - 230 / 1320    [|<]  [|<]  [<]  21  22  23  24  25  26  27  28  29  30   [>]  [>|][>|]
タイトル/名前 更新者 更新日
技術/UNIX/端末やターミナルの文字化け対処(clear,reset,stty sane,tput,ncurses) msakamoto-sf 2013-12-31 13:00:24
技術/Linux/CentOS/network-scripts msakamoto-sf 2013-12-15 23:59:10
技術/Linux/RPMコマンドメモ(実践レベル) msakamoto-sf 2013-12-15 23:26:54
技術/Linux/RPMコマンドメモ(パッケージ作成など) msakamoto-sf 2013-12-15 21:12:32
技術/Linux/RPMコマンドメモ(入門レベル) msakamoto-sf 2013-12-15 21:12:14
日記/2013/12/14/たまには昔の自分に甘えても msakamoto-sf 2013-12-14 23:49:34
技術/Android/LogAndLogLevelTips msakamoto-sf 2013-12-04 00:02:43
技術/Linux/dpkg,aptコマンドメモ1 msakamoto-sf 2013-11-24 23:08:35
日記/2013/11/12/2013-11-04-10 高野山・京都のお寺・友人の結婚式参列 msakamoto-sf 2013-11-12 18:51:05
Java/Tuning/GC msakamoto-sf 2013-10-20 20:36:07
ソート項目 / ソート順     1ページ 件ずつ表示

技術/UNIX/端末やターミナルの文字化け対処(clear,reset,stty sane,tput,ncurses)  

所有者: msakamoto-sf    作成日: 2013-12-31 12:58:02
カテゴリ: Linux UNIX 

ちょっと気になりまして、以下の記事に便乗してみました。

戻す方法として

echo ^[c

が紹介されてるわけですが、元記事ではこれを"clear2"にalias設定してまして、これがちょっと気になりました。

「clearコマンドと "echo ^[c" って何が違うの?」

というところですね。で、しかもはてブコメントを見てみますと"reset"コマンドでOK、というのもありました。他にも"stty sane"というのも出てきてます。

ちょっと確認してみます。

いずれも端末の設定や制御に絡んできてます。特にclear/resetのtput(1)というのは、以下で実験しているCentOS6系ではncursesが提供しているコマンドになりますのでドンピシャです(rpm -ql ncurses)。なおCentOS6系のncursesは 5.7 のバージョンになりまして、terminfoは "/etc/terminfo/" 以下ではなく、 "/usr/share/terminfo" 以下にありました(rpm -ql ncurses-base)。

ではtputってなんだろう?というところですが、以下の記事が参考になりそうです。

つまり、本来は端末ごとに制御コードが微妙に異なっていて統一されていないところを、terminfoというデータベースで共通の属性名にmappingされるようにしたことで、そうした端末ごとの細かい差異は気にせず、抽象化された属性名だけで操作できるようになりました、ということですね。多分。

あと参考になりそうなのはこの辺でしょうか。Linuxのncursesなら"terminfo"、BSD系だと"termcap"という名前の場合もあるようです。

どんな属性名で共通化されているか?それについてはterminfo(5)のmanページで確認できます。clear, reset コマンドで使われているのを拾い上げてみますと・・・

$ man 5 termifno

Variable                Cap-name   TCap Code    Description
clear_screen            clear      cl           clear screen and home cursor (P*)
exit_alt_charset_mode   rmacs      ae           end alternate char-acter set (P)
meta_off                rmm        mo           turn off meta mode
exit_underline_mode     rmul       ue           exit underline mode
reset_1string           rs1        r1           reset string
reset_2string           rs2        r2           reset string
reset_3string           rs3        r3           reset string

詳細は置いておくとして、resetだと上記すべてをtputで使ってますので、なんとなーく「色々不用意にONになっちゃったものをOFFにして、あとリセットできるものはリセットしておく」みたいな心意気を感じ取れますね。

実際の制御コードはどうなっているのでしょうか?CentOS6系でのterminfoを確認してみましょう。今回はCentOS 6.3で、ncurses系は以下のパッケージがインストールされてる状態で実験しています。

$ rpm -qa | grep ncurses | sort
ncurses-5.7-3.20090208.el6.x86_64
ncurses-base-5.7-3.20090208.el6.x86_64
ncurses-devel-5.7-3.20090208.el6.x86_64
ncurses-libs-5.7-3.20090208.el6.x86_64
ncurses-static-5.7-3.20090208.el6.x86_64
ncurses-term-5.7-3.20090208.el6.x86_64

まず、今ログイン中の端末の種類を確認します。WindowsのCygwinが提供しているmintty上でsshログインしているためか、"cygwin"であることを確認できました。

$ echo $TERM
cygwin

では、これに対応するterminfoファイルを探してみます。といっても/usr/share/terminfo/の下で、端末種類の頭文字でまずディレクトリが分けられてるのですぐに見つかります。

$ ls -l /usr/share/terminfo/c/cygwin
-rw-r--r--. 1 root root 1529 Aug 19  2010 /usr/share/terminfo/c/cygwin
$ file /usr/share/terminfo/c/cygwin
/usr/share/terminfo/c/cygwin: Compiled terminfo entry

"Compiled terminfo entry" と出てしまいまして・・・これだと専用のバイナリファイルになってますので、元々の人間が読める定義ファイルになってないようです・・・。
"/etc/terminfo/"は今回の環境では空っぽでしたので、ちょっと元の定義ファイルがわかりませんね。ncurses系パッケージはフルで入れてますので、ソースRPM見てみないとわからないかもしれません。

・・・が、最新かどうかはわからないのですが、おおよそどんな感じになっているのかは以下のサイトからDLして確認できました。

上のサイトから"terminfo"のりんくをクリックしてtermtypes.ti.gzをDLしたら展開します。termtypes.tiをテキストエディタで開いてみると、"clear"などtputの引数に対応する実際の制御コードの定義が確認できます。

...
ansi+erase, 
	clear=\E[H\E[J, ed=\E[J, el=\E[K, 
...

ただやっぱりこれが最新かどうかはわからないですし、ソースRPM展開して確認するのもいい加減面倒くさくなってきましたので、straceコマンドで見れるか試してみましょう。straceはプログラムのシステムコールと、もしファイルのI/Oがあればその中身も多少は見れる便利なデバッグツールです。まだ入れてない人は "yum install strace" で入れて下さい。

まずclearコマンドを試してみます。そのまま "strace clear" すると、clearコマンドが出力する制御コードで端末がクリアされてしまってstraceの出力が見れないという情けない状態になりますので、clearコマンドの出力をファイルにリダイレクトします。

※以下、Linuxのシステムコール系の関数の話が何の前提も無く出てきますが、一応コメントは入れますので、なんとなく「terminfoのファイルを読み込んで、cygwinの端末だとあーいう制御コードがclearに割り当てられるんだなー」というのを感じ取ってくれればまずはOKかと。

$ strace clear > clear.dat
execve("/usr/bin/clear", ["clear"], [/* 24 vars */]) = 0
(しばらくは実行ファイルを実行する準備部分はスルー)

(ここから、cygwin端末に対応するterminfoファイルを開き、中身を読み取ります。)
access("/etc/terminfo/c/cygwin", R_OK)  = -1 ENOENT (No such file or directory)
stat("/usr/share/terminfo", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
access("/usr/share/terminfo/c/cygwin", R_OK) = 0
open("/usr/share/terminfo/c/cygwin", O_RDONLY) = 3
read(3, "\32\1!\0\25\0\17\0}\1\237\2cygwin|ansi emulatio"..., 4097) = 1529
close(3)                                = 0

(ioctl(1)の第一引数が2=stderrなので、これは・・・なんでしょうかね。標準エラー向けに何かしてるのかな?)
ioctl(2, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(2, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(2, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(2, TIOCGWINSZ, {ws_row=30, ws_col=140, ws_xpixel=1120, ws_ypixel=510}) = 0

(これもよくわかりませんが、大筋には影響しないと思うのでスルーします)
fstat(1, {st_mode=S_IFREG|0664, st_size=0, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f932a679000

(ここが、write(2)の第一引数=1、つまり標準出力に制御コードを出力しているところになります。
write(1, "\33[H\33[J", 6)               = 6
exit_group(0)                           = ?

実際にclearコマンドの出力をリダイレクトしたデータファイルを覗いてみます。

$ hexdump -C clear.dat
00000000  1b 5b 48 1b 5b 4a                                 |.[H.[J|
00000006


1b 5b 48 = ESC [ H = \33[H
1b 5b 4a = ESC [ J = \33[J

となり、write(2)で標準出力に書き出しているものと一緒ですね。

resetはどうでしょうか?

$ strace reset > reset.dat
→なんか標準エラーも細工してるようでstraceの出力が崩れたので省略

$ hexdump -C reset.dat
(空っぽ)

→標準出力は細工してないようなので、標準エラーをファイルにリダイレクトしてみる。
$ reset 2>reset.dat
$ hexdump -C reset.dat
00000000  72 65 73 65 74 3a 20 73  74 61 6e 64 61 72 64 20  |reset: standard |
00000010  65 72 72 6f 72 3a 20 49  6e 61 70 70 72 6f 70 72  |error: Inappropr|
00000020  69 61 74 65 20 69 6f 63  74 6c 20 66 6f 72 20 64  |iate ioctl for d|
00000030  65 76 69 63 65 0a 0a                              |evice..|
00000037

→stat(2)かioctl(2)か何かでファイルディスクリプタの種類を判別しているっぽい・・・。

そういえば、straceって "-o" オプションでログファイルに書き出せるんだった。
$ strace -o reset.log reset
$ more reset.log
...
ioctl(2, TIOCGWINSZ, {ws_row=30, ws_col=140, ws_xpixel=1120, ws_ypixel=510}) = 0
ioctl(2, SNDCTL_TMR_STOP or TCSETSW, {B38400 -opost isig icanon echo ...}) = 0
write(2, "\33", 1)                      = 1
write(2, "c", 1)                        = 1    ## →上のと合わせれば "ESC c" になる!
write(2, "\33", 1)                      = 1
write(2, "]", 1)                        = 1
write(2, "R", 1)                        = 1
write(2, "\r", 1)                       = 1
nanosleep({1, 0}, 0x7fff2074f680)       = 0
ioctl(2, SNDCTL_TMR_STOP or TCSETSW, {B38400 opost isig icanon echo ...}) = 0
...

resetの場合は標準エラーの方に制御コードを送ってる様子を確認できました。しかもその中には、便乗元の記事にある "ESC c" の制御コードも(多分)含まれてるのを確認できました。

ただ、clearもresetも、tput(1)を起動している様子は確認できませんでした。stringsコマンドでバイナリ中の文字列も抜き出してみたんですが、tputs(man 3 curs_terminfo) は見つかったものの、tputは見当たらず。

$ strings /usr/bin/clear
...
tputs
...
$ strings /usr/bin/reset
...
tputs
...

lddで依存関係を見てみますと、ncurses-libsの提供している /lib64/libtinfo.so.5.7 に依存しています。

$ ldd /usr/bin/clear
        linux-vdso.so.1 =>  (0x00007fffaddff000)
        libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00007f12c5d2d000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f12c599a000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f12c5f53000)
$ ldd /usr/bin/reset
        linux-vdso.so.1 =>  (0x00007fff35bff000)
        libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00007fdcc5130000)
        libc.so.6 => /lib64/libc.so.6 (0x00007fdcc4d9d000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fdcc5356000)
$ ls -l /lib64/libtinfo.so.5
lrwxrwxrwx. 1 root root 15 Nov 24 18:21 /lib64/libtinfo.so.5 -> libtinfo.so.5.7
$ rpm -qf /lib64/libtinfo.so.5.7
ncurses-libs-5.7-3.20090208.el6.x86_64

ということで、恐らくCentOS6系のclear/resetコマンドは、tputを呼び出す方式ではなく、ncursesに依存してそちらのtputs()関数を呼び出す方式になっていると思われます。

大体気になっていた点で押さえられるところは押さえられた気がしますので、一旦まとめます。

  • clearコマンドと "ESC c" の違いは?
    • clearコマンドはterminfoで共通化された"clear"コードを使って端末をクリアしている。terminfoに依存することで、端末間の制御コードの細かい差異を吸収できる。
    • "ESC c"がどの機能になるのかは、元記事からはTERMが読み取れなかったので(TeraTermっぽいスクリーンショットがあることから、vt100 or xterm系かその互換?)分からないが、clearコマンドではカバーしきれない機能に相当していた可能性がある。
  • 結局どれが良いのか?
    • まずシステムが提供しているコマンドが複数種類あるので、試すと良い。clear, reset, "stty sane" を試す。これで大体カバー出来るはず。
    • それでも駄目なら、まず "echo $TERM" して端末の種類を調べ、それと"clear", "reset" あたりをキーワードに組み合わせてググる。マイナーな端末種別だと、terminfo/termcapに存在せず、その端末の開発MLとかのアーカイブを調べると見つかるかもしれない。

いや~、端末制御コードのエスケープシーケンス一つからここまで話が膨らみまして、大変面白いですね~。

なお、以下に今回実験したCentOS6での各種パッケージバージョン情報を記載します。

$ rpm -qa | grep ncurses | sort
ncurses-5.7-3.20090208.el6.x86_64
ncurses-base-5.7-3.20090208.el6.x86_64
ncurses-devel-5.7-3.20090208.el6.x86_64
ncurses-libs-5.7-3.20090208.el6.x86_64
ncurses-static-5.7-3.20090208.el6.x86_64
ncurses-term-5.7-3.20090208.el6.x86_64

$ rpm -qf /usr/bin/clear
ncurses-5.7-3.20090208.el6.x86_64

$ rpm -qf /usr/bin/reset
ncurses-5.7-3.20090208.el6.x86_64

・・・clearもreestも、ncursesパッケージ提供だったんですね。そりゃ、わざわざtputをexecする必要も無いわけだ・・・。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2013-12-31 13:00:24
md5:7fae0bdaf9a902547fa484d88ee9c063
sha1:5ed313d5283a2a84b851417d5dbed98bd8368e31

技術/Linux/CentOS/network-scripts  

所有者: msakamoto-sf    作成日: 2013-12-15 23:48:27
カテゴリ: Linux NTP 

"/etc/sysconfig/network-scripts/ifcfg-xxxx" を始めとするネットワーク設定について。

"Minimal Setup"などで最低限度の、GUIや周辺ツールを一切インストールせずにセットアップした場合

"system-config-network-tui" をインストールしてGUI的なUIでコンソールから設定する

cursesを使ってGUI的なUIでインターフェイスやDNSの設定が可能。

設定ツールに頼らず、ifcfg-xxxxを手書きする

(CentOS6の場合)
"/etc/sysconfig/network-scripts/" 以下のファイルはinitscriptsパッケージに含まれている。このパッケージは他にも"/etc/sysconfig/" 以下のファイルも提供している。
そのため、initscriptsパッケージに sysconfig 以下のファイルの書式説明一式が集約されたドキュメントファイルが同梱されていて、manページではなくそちらを参照すると良い。

$ rpm -ql initscripts | grep sysconfig.txt
/usr/share/doc/initscripts-9.03.31/sysconfig.txt
$ less /usr/share/doc/initscripts-9.03.31/sysconfig.txt
...
/etc/sysconfig/network-scripts/ifcfg-<interface-name> and
/etc/sysconfig/network-scripts/ifcfg-<interface-name>:<alias-name>:

 The first defines an interface, and the second contains
...

CentOSの公式ドキュメントも参考になるが、ネットワーク設定が済んでいない状態だとオンラインドキュメント自体にアクセス出来ない場合もある。
パッケージに含まれるオフラインドキュメントの場所を知っておいて損はないだろう。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2013-12-15 23:59:10
md5:70c3c2b830470dbc3549056c78aa53a5
sha1:2fa7628e4e4e83eadde1508996f6b799e35f83f1

技術/Linux/RPMコマンドメモ(実践レベル)  

所有者: msakamoto-sf    作成日: 2009-11-20 17:11:06
カテゴリ: Linux 

2009年11月現在、メジャーなLinuxディストリビューションではyumやaptが整備されているとはいえ、ある程度はRPMを触れないと楽しくないので、自分用にメモ。
技術/Linux/RPMコマンドメモ(入門レベル) でも簡単にまとめているが、もう少し詳細にまとめておく。

CentOS5.2, RPM 4.4.2 で動作確認しており、本文も同左のmanページを元にしている。

(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2013-12-15 23:26:54
md5:145f89bd8c0f1d8f5c98cbc749d0e84a
sha1:e16959ed7f6d2e8c2adb0d43a7f7a2daf10b58e5

技術/Linux/RPMコマンドメモ(パッケージ作成など)  

所有者: msakamoto-sf    作成日: 2009-11-20 22:47:25
カテゴリ: Linux 

RPMパッケージを作成する時の注意点とか、RPMで"/"(root)ディレクトリを変更してRPMの使うDBの構築やパッケージのインストールを行う場合の自分用メモ。
なお動作検証は CentOS 5.2, RPM 4.4.2 で行っている。

(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2013-12-15 21:12:32
md5:2567e9c71791ba36d5199789f069a027
sha1:9f3db2313b16c401490690442b0a433503a5e43c

技術/Linux/RPMコマンドメモ(入門レベル)  

所有者: msakamoto-sf    作成日: 2007-02-25 15:07:47
カテゴリ: Linux 

  • あるコマンドが使用できるか。
    • which または whereis コマンドを使用する。
$ whereis perl
perl: /usr/bin/perl /usr/share/man/man1/perl.1.gz
$ which perl
/usr/bin/perl
  • そのコマンドはどのRPMで提供されているか。
$ rpm -qf /usr/bin/perl
perl-5.8.5-8
  • そのRPMの情報を表示する。
$ rpm -qi perl
Name        : perl                         Relocations: (not relocateable)
Version     : 5.8.5                        Vendor:....
...
  • そのRPMが提供しているファイルの一覧を取得する。
$ rpm -ql perl
/usr/bin/a2p
/usr/bin/c2ph
/usr/bin/cpan
/usr/bin/dprofpp
...

RPMファイルについて調査したい場合は次のようにする。

  • RPMファイルの情報を表示する。
$ rpm -qpi ****.rpm
  • RPMファイルがインストールするファイルの一覧を取得する。
$ rpm -qpl ****.rpm

その他、依存性を無視して -i, -U を使用したい場合、--nodeps や --force などが使用できる。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2013-12-15 21:12:14
md5:c5d8fd6ec40e28753c68a82f095dcd73
sha1:8c68dd7cd29df50719ae8b688ce679862030e9ac

日記/2013/12/14/たまには昔の自分に甘えても  

所有者: msakamoto-sf    作成日: 2013-12-14 23:08:06
カテゴリ:

良いよね?

いや決して過去の自分のoutputに甘えて心を慰めるとかそんなワケ無いから!単なる承認欲求に基づく「俺ってこんなに苦労してたんだぜ。スゲーだろ?|д゚)チラッ」というだけだから!

はてダ使ってた時にわざわざ "鬱エントリ" つけたのもあるので注意。(じゃぁ書くなよと怒られそう)

2008年9月

http://d.hatena.ne.jp/msakamoto-sf/20080908
http://d.hatena.ne.jp/msakamoto-sf/20080911/1221139291

あ~、あの地獄(主観)の頃のか。あれは、自分が自分の中で作り上げた地獄の中で苦しんでただけだった。
そう、今は言えるけれど、渦中に居た当時はそこまで客観視できるわけがなかった。

2009年10月

http://d.hatena.ne.jp/msakamoto-sf/20091017/1255790996
"開発現場で一度は耳にする「何で聞いてくれなかったの!?」なんて台詞は二度と聞きたく無い。 - ぐらめぬ・ぜぷつぇんのはてダ"

これは、転職した先で「やっちまった」話。今だったら、どうだろう?

2010年3月

http://www.glamenv-septzen.net/view/608
"日記/2010/03/07/「銀の弾丸」が無くても狼男を倒せる世界へ - Glamenv-Septzen.net"

冒頭はまじめにTDDとかアジャイルの話してますが、本題はその後という。
2010年の1月から無職になり、3ヶ月くらいだらだらとして、ようやくエンジンがかかり始めた頃のエントリー。仏教に触れたこともあり、「何もしない時間を過ごす」ことを試してみようとしたが、結果としては「自分は何もすることが無いと、何をやり始めるのだろうか?」という人生の根源に関わるテーマに対して一つの答えを見つけることが出来た超重要イベントの1年間だった。

2010年8月

http://d.hatena.ne.jp/msakamoto-sf/20100815/1281808194
"派遣PGの感じる「怒り」をデコンパイルしてみた - ぐらめぬ・ぜぷつぇんのはてダ"

今でも時々はてブされる記事(ドヤァ・・・)。それだけ、辛い思いをしているエンジニアは多いのだろう。
辛い世界を作り上げているのは自分の心の中で、世間は自分が求めるほど美しくなくて、美しくないのが当たり前で、それでもナントカ世界は回ってる。
(ンなこと今更言われなくてもわかってるよ、というのも、今でも自分自身例外とはいえない、人間の一面ではあります。)
環境を動かすのはとても大変でエネルギーは要るし、ロジックと熱情の両方を長期間維持して人を感化して、やり逃げも出来ない。
だからまずは自分のものの見方を変えたほうが安上がりなのだけれど、それも精神的な負担が半端無い。真面目な人は特に。

なぜ自分はこんなに辛いのか?どうあれば、辛くなくなるのか?周りに絶望しているが、では周りがどうあれば自分は幸せなのか?自分が感じるやるせなさ、絶望、無力感、冷めた感情は、こころとして感じられる一番表層の部分なので、対症療法だけでなく、その裏側に潜り、条件反射で絶え間なく湧き上がる情動と感情の渦に潜って、それが感じられなくなるくらいの深さまでいって、自分の根っこを見つけ出す(ドヤァ)。

2010年12月31日

http://www.glamenv-septzen.net/view/883
"日記/2010/12/31/2010年のまとめ - Glamenv-Septzen.net"

仕事として社会還元の成果はゼロだった1年。
しかし、純粋にアウトプットの「質」で言えば、30年を越えたこれまでの人生中、今のところ2010年が最大値。
次点が現職に就いた 2011年~2012年の激動の2年。

正直、もう1度あの2010年を繰り返したとしても、同じだけの質と量をアウトプット出来るかまるで自信がない。

とはいえ、もう3年が経ち、考え方も興味も変化している。
2010年の自分に甘えることはできるし、2010年の成果に対してドヤ顔することは今でも出来るが、せっかくエキサイティングな現場に居るので、今の現場ならではの、さらにエキサイティングな作品や成果を築きたいところであります!

・・・ただ、腰が重いのに諦めが悪くて、「時間ないし~」とずるずると延ばした挙句、賞味期限が切れた頃に一歩一歩ヒタヒタとスニーキングして、時代遅れになったころに「獲ったど~~!!」とドヤ顔するのが自分の典型的な・・・というか2010年の成果の内訳なので、この特性をどうやって会社組織に活かすのが目下、頭の使いドコロであります!


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2013-12-14 23:49:34
md5:8c6ed23ba7253677a4e97837819c3373
sha1:27915a206bd52e7a489222ba8eebc6b67ae2a5b9

技術/Android/LogAndLogLevelTips  

所有者: msakamoto-sf    作成日: 2011-07-18 19:24:11
カテゴリ: Android 

android.util.Logでログレベルの調整が分かりづらかったのでメモ。
公開されている資料をベースに、自分がつまずいた箇所を抜書きしました。

参考:

(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 3
更新者: msakamoto-sf
更新日: 2013-12-04 00:02:43
md5:b63b473bd6c390937f54b55be76f4f90
sha1:8b5ac0839ee665c78ac0cd97f9e76dc0c79b554e

技術/Linux/dpkg,aptコマンドメモ1  

所有者: msakamoto-sf    作成日: 2011-09-19 12:05:37
カテゴリ: Linux 

Debian, Ubuntu系のdpkgとaptコマンドのメモ。Ubuntu10.04 LTSにて確認。

参考:

dpkgコマンド

・インストール済みのパッケージ一覧。

$ dpkg -l

・あるファイルを含んでいるパッケージはどれか。

$ which python
/usr/bin/python
$ dpkg -S /usr/bin/python
python-minimal: /usr/bin/python

フルパスでなくても良い。

$ dpkg -S stdio.h
libc6-dev: /usr/include/bits/stdio.h
libstdc++6-4.4-dev: /usr/include/c++/4.4/tr1/stdio.h
libc6-dev: /usr/include/stdio.h
perl: /usr/lib/perl/5.10.1/CORE/nostdio.h

・そのパッケージの情報を表示する。

$ dpkg -s python-minimal
Package: python-minimal
Essential: yes
Status: install ok installed
...

・そのパッケージが提供しているファイルの一覧を表示する。

$ dpkg -L python-minimal
/.
/usr
/usr/bin
/usr/bin/pycompile
/usr/bin/pyclean
...

・".deb"ファイルの情報を表示する。

$ cd /var/cache/apt/archives
$ dpkg -I php5-cli_5.3.2-1ubuntu4.9_i386.deb   # 大文字の"I"
new debian package, version 2.0.
size 2817008 bytes: control archive= 1530 bytes.
   1626 bytes,    26 lines      control
    181 bytes,     3 lines      md5sums
    307 bytes,    19 lines   *  postinst             #!/bin/sh
    166 bytes,    18 lines   *  postrm               #!/bin/sh
    133 bytes,    11 lines   *  prerm                #!/bin/sh
Package: php5-cli
Source: php5
Version: 5.3.2-1ubuntu4.9
Architecture: i386
...

小文字の"-l"(エル)だとインストールしたパッケージの一覧になってしまうので注意。

・".deb"ファイルの提供するファイル一覧を表示する。

$ dpkg -c php5-cli_5.3.2-1ubuntu4.9_i386.deb
drwxr-xr-x root/root         0 2011-05-02 18:00 ./
drwxr-xr-x root/root         0 2011-05-02 17:58 ./etc/
drwxr-xr-x root/root         0 2011-05-02 17:58 ./etc/php5/
drwxr-xr-x root/root         0 2011-05-02 18:00 ./etc/php5/cli/
drwxr-xr-x root/root         0 2011-05-02 17:59 ./usr/
drwxr-xr-x root/root         0 2011-05-02 18:00 ./usr/bin/
-rwxr-xr-x root/root   7467156 2011-05-02 18:00 ./usr/bin/php5
drwxr-xr-x root/root         0 2011-05-02 17:59 ./usr/share/
drwxr-xr-x root/root         0 2011-05-02 17:58 ./usr/share/man/
drwxr-xr-x root/root         0 2011-05-02 18:00 ./usr/share/man/man1/
-rw-r--r-- root/root      3229 2011-05-02 17:59 ./usr/share/man/man1/php5.1.gz
drwxr-xr-x root/root         0 2011-05-02 17:59 ./usr/share/lintian/
drwxr-xr-x root/root         0 2011-05-02 17:59 ./usr/share/lintian/overrides/
-rw-r--r-- root/root       318 2011-05-02 17:59 ./usr/share/lintian/overrides/php5-cli
drwxr-xr-x root/root         0 2011-05-02 18:00 ./usr/share/doc/
drwxr-xr-x root/root         0 2011-05-02 17:59 ./usr/lib/
drwxr-xr-x root/root         0 2011-05-02 17:59 ./usr/lib/php5/
drwxr-xr-x root/root         0 2011-05-02 17:59 ./usr/lib/php5/20090626+lfs/
lrwxrwxrwx root/root         0 2011-05-02 18:00 ./etc/php5/cli/conf.d -> ../conf.d
lrwxrwxrwx root/root         0 2011-05-02 18:00 ./usr/share/doc/php5-cli -> php5-common

・設定ファイル、ディレクトリなど

/etc/dpkg/dpkg.cfg : 設定ファイル
/var/lib/dpkg/available : 利用可能なパッケージ
/var/log/dpkg.log : ログファイル

apt-cache, apt-getコマンド

・利用可能なパッケージを探す。

$ apt-cache search ^php5
dwoo - PHP5 template engine
libgv-php5 - Php5 bindings for graphviz
php5-adodb - Extension optimising the ADOdb database abstraction library
php5-auth-pam - A PHP5 extension for PAM authentication
...

・利用可能なパッケージの情報を取得する。

$ apt-cache show php-pear
Package: php-pear
Priority: optional
Section: php
Installed-Size: 2600
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian PHP Maintainers <pkg-php-maint@lists.alioth.debian.org>
Architecture: all
Source: php5
Version: 5.3.2-1ubuntu4.9
...

・パッケージの「仮」インストールを行なってみる("-s" or "--dry-run"オプション)。

$ sudo apt-get install --dry-run php5-cli
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
  php5-common
Suggested packages:
  php-pear php5-suhosin
The following NEW packages will be installed:
  php5-cli php5-common
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Inst php5-common (5.3.2-1ubuntu4.9 Ubuntu:10.04/lucid-updates)
Inst php5-cli (5.3.2-1ubuntu4.9 Ubuntu:10.04/lucid-updates)
Conf php5-common (5.3.2-1ubuntu4.9 Ubuntu:10.04/lucid-updates)
Conf php5-cli (5.3.2-1ubuntu4.9 Ubuntu:10.04/lucid-updates)

・パッケージをダウンロードするだけで、インストールはしない("-d", "--download-only")。

$ sudo apt-get install -d php5-cli
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
  php5-common
Suggested packages:
  php-pear php5-suhosin
The following NEW packages will be installed:
  php5-cli php5-common
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 3,363kB of archives.
After this operation, 8,610kB of additional disk space will be used.
Do you want to continue [Y/n]?
Get:1 http://us.archive.ubuntu.com/ubuntu/ lucid-updates/main php5-common 5.3.2-1ubuntu4.9 [546kB]
Get:2 http://us.archive.ubuntu.com/ubuntu/ lucid-updates/main php5-cli 5.3.2-1ubuntu4.9 [2,817kB]
Fetched 3,363kB in 7s (429kB/s)
Download complete and in download only mode
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ <- インストールまでは実行していない。

デフォルトでは"/var/cache/apt/archives/"に保存される。

・(まだインストールしていないパッケージも含めて)あるファイルを含むパッケージを探す。
事前に"apt-file"パッケージをインストールしておくこと。

$ dpkg -l | grep -i ruby | wc -l
0
$ apt-file search /usr/bin/ruby
libglade2-ruby1.8: /usr/bin/ruby-glade-create-template
libruby1.8-dbg: /usr/lib/debug/usr/bin/ruby1.8
libruby1.9: /usr/lib/debug/usr/bin/ruby1.9
libruby1.9.1-dbg: /usr/lib/debug/usr/bin/ruby1.9.1
ruby: /usr/bin/ruby
ruby-prof: /usr/bin/ruby-prof
ruby1.8: /usr/bin/ruby1.8
ruby1.9: /usr/bin/ruby1.9
ruby1.9.1: /usr/bin/ruby1.9.1
sloccount: /usr/bin/ruby_count

・ソースコードのURIを表示する。

$ apt-get source --print-uris libpng
Reading package lists... Done
Building dependency tree
Reading state information... Done
Need to get 693kB of source archives.
'http://us.archive.ubuntu.com/ubuntu/pool/main/libp/libpng/libpng_1.2.42-1ubuntu2.2.dsc' \
    libpng_1.2.42-1ubuntu2.2.dsc 1939 MD5Sum:77bdd4a86079d816f208d23e6a56d8e8
'http://us.archive.ubuntu.com/ubuntu/pool/main/libp/libpng/libpng_1.2.42.orig.tar.bz2' \
    libpng_1.2.42.orig.tar.bz2 670811 MD5Sum:9a5cbe9798927fdf528f3186a8840ebe
'http://us.archive.ubuntu.com/ubuntu/pool/main/libp/libpng/libpng_1.2.42-1ubuntu2.2.debian.tar.bz2' \
    libpng_1.2.42-1ubuntu2.2.debian.tar.bz2 20532 MD5Sum:f0eb3be297e03dd258d73c36bb3dff8d

・ソースコードをカレントディレクトリにダウンロードする。

$ apt-get source --download-only libpng
Reading package lists... Done
Building dependency tree
Reading state information... Done
Need to get 693kB of source archives.
Get:1 http://us.archive.ubuntu.com/ubuntu/ lucid-updates/main libpng 1.2.42-1ubuntu2.2 (dsc) [1,939B]
Get:2 http://us.archive.ubuntu.com/ubuntu/ lucid-updates/main libpng 1.2.42-1ubuntu2.2 (tar) [671kB]
Get:3 http://us.archive.ubuntu.com/ubuntu/ lucid-updates/main libpng 1.2.42-1ubuntu2.2 (diff) [20.5kB]
Fetched 693kB in 5s (125kB/s)
Download complete and in download only mode

・設定ファイル・ディレクトリなど

/etc/apt/sources.list : リポジトリのリスト
/etc/apt/apt.conf : 設定ファイル
/var/cache/apt/archives/ : ダウンロードしたパッケージの保存先

apt-fileコマンド

$ apt-file search xxxxx

→ ファイル名をもとに、そのファイルを提供しているパッケージを検索してくれる。



プレーンテキスト形式でダウンロード
現在のバージョン : 2
更新者: msakamoto-sf
更新日: 2013-11-24 23:08:35
md5:5b453e184140eaa91318d66bdbdec2c0
sha1:b3dd82e11c674672116d487778b5eabc221013c5

日記/2013/11/12/2013-11-04-10 高野山・京都のお寺・友人の結婚式参列  

所有者: msakamoto-sf    作成日: 2013-11-12 17:05:47
カテゴリ:

11/04 - 10にかけて、高野山参拝・京都のお寺参拝・友人の結婚式参列をしてきました。

11/01-03の社内研修での合宿で、なぜか風邪をひいてしまったようで、体調不良を薬で抑えこんで巡ってきました。

(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2013-11-12 18:51:05
md5:b43f68300dce7b129caa7df0e21166a5
sha1:405755e46523f867096369580e5b8bd99d0d10d8

Java/Tuning/GC  

所有者: msakamoto-sf    作成日: 2013-10-20 17:13:42
カテゴリ: Java 

GC(Garbage Collection)のチューニング関連のメモ

日本語資料

Java5 - 6での基本

Java6 - 7での基本と、Java7になって本格的に導入されたG1(Garbage First) GCの解説

G1GCのOracle本家ドキュメント



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2013-10-20 20:36:07
md5:9f24f4c132ebdb008d0bcd10abdbcfb3
sha1:9ec398d0122e930e68a325310735a322648e0b99