2008年8月28日木曜日

VxWorksの雰囲気

vxWorks.h
vxWorksCommon.h
にはvxworksの雰囲気。


vxWorksCommon.h
FALSE (0)
TRUE (1)

OK 0
ERROR (-1)

NO_WAIT 0
WAIT_FOREVER (-1)

32bitバイトスワップ
LLSB(x) ((x) & 0xff)
LNLSB(x) (((x) >> 8) & 0xff)
LNMSB(x) (((x) >> 16) & 0xff)
LMSB(x) (((x) >> 24) & 0xff)
LONGSWAP(x) ((LLSB(x) << 24) | \
(LNLSB(x) << 16)| \
(LNMSB(x) << 8) | \
(LMSB(x)))

FOREVER for (;;)

max(x, y) (((x) < (y)) ? (y) : (x))
min(x, y) (((x) < (y)) ? (x) : (y))

FAST register
IMPORT extern
LOCAL static



2008年8月22日金曜日

ビットカウント

【C言語】
int bit_count( __WORD x)
{
int i;

for ( i = 0; x != 0; x &= x-1 ) {
++i;
}

return i;
}


【perl】
#!/usr/bin/perl

use strict;
use warnings;

chomp(my $line = <STDIN>);

my $count;
for($count=0; $line!=0; $line &= $line-1) {
++$count;
}

print $count, "\n";

同じ。



2008年8月20日水曜日

SolarisとSunOSのバージョン表記の関係

時々Solaris2.7, 2.8, 2.9の表記があるが、それぞれSolaris7, 8, 9を意味する。

Solaris 9 8 7 2.6 2.5.1 2.5 2.4 2.3 1.1.2 1.1.1B
SunOS 5.9 5.8 5.7 5.6 5.5.1 5.5 5.4 5.3 4.1.4 4.1.3_U1


Solaris10
SunOS5.10

Solaris 9
SunOS 5.9

Solaris 8
SunOS 5.8

Solaris 7
SunOS 5.7

Solaris 2.6
SunOS 5.6

Solaris 2.5.1
SunOS 5.5.1

Solaris 2.5
SunOS 5.5

Solaris 2.4
SunOS 5.4

Solaris 2.3
SunOS 5.3

Solaris 1.1.2
SunOS 4.1.4

Solaris 1.1.1B
SunOS 4.1.3_U1



2008年8月13日水曜日

シャットダウン リブート shutdown reboot init

◎shutdown:manyより「shutdown はシステムを安全に終了させる。」
○reboot:haltへのリンク。shutdownが起動される。
○init 6:initプロセスの制御



2008年8月9日土曜日

perl tips

(誤)my (@numbers,$x,$y) = @_;
(正)my ($x,$y,@numbers) = @_;
@number配列は全ての@_(サブルーチン引数)を食べ尽くしてしまう。

【配列要素を数値の小さい順にソート】
my @sorted = sort { $a <=> $b } @array;

【配列空判定】
if(@array){print "空ではない\n";}

$< プロセスの実ユーザーID
$> プロセスの実効ユーザーID
$( プロセスの実グループID
$) プロセスの実効グループID

【タイムゾーンオフセット】
#!/usr/bin/perl
use Time::Local;
my $now = time();
my $off = (timegm(localtime($now))-timegm(gmtime($now)));
print "$off\n";
(文字列)
use POSIX 'strftime';
my $itemTimezoneStr = strftime "%Z", localtime;

【パーミッション】
chmod 0644, $targetFilePath;

【配列重複要素削除】
# array -> hash (Delete Repetition)
my %uniq_num;
foreach (@number) { $uniq_num{$_} = 1; }

# hash -> array
my @uniqarray_num = keys(%uniq_num);
print "uniqarray_num = @uniqarray_num\n" if($debug);

【配列操作】(いろいろできそう)
use List::Util; #配列操作ユーティリティクラス



emacs tips

grep、grep-find
grep結果ウィンドウ内、
 C-x `場所にタグジャンプ。
 M-p と M-n(permissionエラーメッセージ等スキップ)

同時スクロール
 M-x scroll-all-mode

シェルのコマンド履歴利用:
 M-n 履歴を次に進む
 M-p 履歴を前に戻る

置換:
M-x、query-replace【return】、旧文字【リターン】、新文字【リターン】

左下に「Aあuuuu:---…」等と表示されたら、CTRL+「ろ(\)」で元に戻す。(キー押し間違い)

やり直し(ctrl+shift+-(=))のやり直し(ctrl+u)

文字化け
export LANG=ja_JP.UTF-8 でないと日本語化け化け。

* キーボード入力のエンコーディング(C-x RET k)
* 端末出力のエンコーディング(C-x RET t)
* ファイルに保存する際のエンコーディング(C-x RET f)

日本語on/off
ctrl+\


ウィンドウの幅を広げる
縦方向 C-x ^
横方向 C-x {
Esc 3 C-x ^ のように、Esc 数字 であらかじめ何回繰り返すが指定してからやった方が便利です。
http://www1.ocn.ne.jp/~ruby11/linux/emacs3.html



2008年8月8日金曜日

2008年8月7日木曜日

.emacs

;; C-hをDELに変換する。
(keyboard-translate ?\C-h ?\C-?)

;; DELをC-hに変換する。
(keyboard-translate ?\C-? ?\C-h)


;;TAB
(setq default-tab-width 4)

;オートインデント
(global-set-key "\C-m" 'newline-and-indent)

;; テキストの折り返し無効
(setq-default truncate-partial-width-windows t)
(setq-default truncate-lines t)