follow me

aptにautoremove機能

Linux - DebianDebian系はパッケージ管理が強力だと言われているが、モノを入れるのは便利だが。
いらなくなった物を削除するのがめんどくさい。
から、開放される様です。

いままでは、apt-get installで導入すると、必要なライブラリがごっそり自動で導入されました。
そして、不要になった場合は、dpkg --purgeでこりこり削除してました。
同時に入ってしまった不要になったライブラリ群を探すのは面倒な作業。
deborphanコマンドぐは~。このコマンド信頼できるのかしらん?
だったわけですが。

これからは、自動で不要な物を判別して削除してくれる様です。
まだ、Ubuntu 6.10 Edgyでだけの実装なのかもしれませんが、Debian 4.0で本家にも搭載されますかどうか。
本家は、SecureAptになるようですし。
follow me

雑誌付録にMSP430

2007年1月号 トランジスタ技術の付録にMSP430の基盤が付いてました。
はずかしながら、本屋で見て初めて気が付きました。
もちろん2冊買って、また店員に変な顔されますたw

ちなみに、MSP430についてよく知らないです。
わたくし日立系のチップが好きだったので。。。

でMSP430の特徴は
・超低消費電力
・乗算器あり
・最大8MHz
・16ビットADC
どのページみても、消費電力が小さい事をデカデカと書いているようですね~。
久々に組み込みやってみますかw

follow me

CPU limitはどのようにCPUリソースを制限するのか?

UNIX系OSで指定したプロセスのCPUリソースの使用を制限するプログラムとしてCPU limitは以前紹介しましたが。
実際にどのように使用リソースの制限をしているのでしょうか。

ソースをのぞいてみてシンプルさに驚いたw
kill(pid,SIGCONT)
kill(pid,SIGSTOP)
この2個だけですね。

SIGSTOPシグナルでプロセスを一時停止させて休ませて、SIGCONTシグナルでまた戻す。
これを短時間で繰り返すだけですか。

PIDを自身のPIDではなく、親PIDみて制限するように改良して、
複数同時に立ち上がってるプロセスへのリソースの分配方法を決めてやれば、
ごちゃごちゃプロセス起動するプログラムでも制限かけれそうですね~。

う~ん、どうやって分配すれば綺麗に動くんですかね~?
follow me

コメントスパム対策を始めてみるorz

なぜでしょうか。このコメントスパムの数は。。。
消しても消しても現れます。
こんなページに、スパムしても意味ないですよ。

コメントスパムがひどくなって来ている為、Geeklogに搭載しているスパム対策プラグインSpam-Xを試してみる。
とりあえず、標準的な単語を登録して、あとURLのリストを追加して。
これで、スパムが減ってくれればいいのですが。。。
follow me

LinuxWORLD休刊でIT系雑誌は皆無な状態?

OSM、JavaWORLD、LinuxJapan、UNIX Magazine、BSD Magazine、 FreeBSD Pressいろいろ無くなったな~。
あと残ってる雑誌ってトラ技とかインターフェイスとかぐらいか。。。
結局、ネットで調べた方が早いし、雑誌の必要性って低くなってしまってるんですかね~?
Linux始めた当初は、お世話になってた雑誌なだけに、残って欲しかったのですが。

でLinuxWORLDに、創刊当初のLinuxと現在での比較なんてやってましたが。
昔は「Linuxは導入でコケルなんて云われていた。」と。
うんうん、ハード構成調べてIRQやら調べてからLinux入れて、kernel panic起きたりもして、うわーって事もあったな~。
kernelビルドしてみたら、機能絞ったはずなのに3時間も延々と待ってみたり。

で、最近のディストリビューションは、何も気にする事無くなったな~。
自分は楽になったな~と感じている訳ですが。
同時に、ソース読むどころかkernelビルドした事もないLinux技術者が登場しだしているのは、何でしょうね~。
Apacheとか扱えても、Linux扱えてるとは云えないと思うのですが。。。
Linuxが楽になればなるほど、何も出来ないエセLinux技術者が増えてる気がするのですが。。。

ちなみに、LinuxWORLD2007開催されますよね。
また会社休んで行くつもりなのですが。。。
follow me

z/390 Emulator Hercules

z/390 EmulatorであるHerculesで汎用機生活
。 とりあえず、最新のSnapshotを取得しビルド。
# ./configure --prefix=/usr/local
# make
# make isntall
いたって普通。んで、hercules.cnfを/usr/local/etcへコピーして、起動。
# hercules -f /usr/local/etc/hercules.cnf
毎回、設定ファイルを指定しなくてはならない。
めんどくさいので、シェルにalias登録。
# alias hercules='hercules -f /usr/local/etc/hercules.cnf'
で、こんな画面が起動。
Hercules Version 3.04.1
(c)Copyright 1999-2006 by Roger Bowler, Jan Jaeger, and others
Built on Nov 28 2006 at 20:28:52
Build information:
  Modes: S/370 ESA/390 z/Arch
  Max CPU Engines: 8
  Using setresuid() for setting privileges
  With Dynamic loading support
  Loadable module default base directory is /usr/local/lib/hercules
  Using shared libraries
  No external GUI support
  HTTP Server support
  No ZLIB support
  National Language Support
  Machine dependent assists: cmpxchg1 cmpxchg4 cmpxchg8 cmpxchg16 fetch_dw store_dw
Running on vmsl Linux-2.4.33.3.#1 Fri Sep 1 01:48: i686 UP
Crypto module loaded (c) Copyright Bernard van der Helm, 2003-2005
HHCCF065I Hercules: tid=00004000, pid=22719, pgid=22719, priority=0
HHCRD010E Unable to access file "./util/zzsacard.bin": No such file or directory
HHCCF044E Initialization failed for device 000C
HHCCF069I Run-options enabled for this run:
          NUMCPU:           1
          ASN-and-LX-reuse: DISabled
          DIAG8CMD:         DISabled
HHCTE001I Console connection thread started: tid=00008003, pid=22722
HHCTE003I Waiting for console connection on port 3270
HHCCP002I CPU0000 thread started: tid=0000C004, pid=22723, priority=15
HHCTT002I Timer thread started: tid=00010005, pid=22724, priority=-20
HHCCP003I CPU0000 architecture mode ESA/390
HHCHT001I HTTP listener thread started: tid=00018007, pid=22726
HHCHT013I Using HTTPROOT directory "/usr/local/share/hercules/"
HHCHT006I Waiting for HTTP requests on port 8081
HHCPN001I Control panel thread started: tid=00004000, pid=22719


Command ==>
CPU0000 PSW=00000000 00000000 M.......                                    instcount=0
メディアの扱いやらは、どぅするんだろう。
follow me

IBM 3270 Terminal Emulator

使いやすいIBM 3270 Terminal Emulatorがない。
SSHやTelnetであればTeraTermが使いやすい。
しかし、3270となるとコレといったものが見つからない。

とりあえず、Linux環境では、x3270を使ってみる。
UNIX系で使うには、こういったシンプルな物が好きだ。
Windowsではどうするか?Cygwinは嫌いだし。SFU使うべきなのか?
だれか、TeraTerm風に移植しないかね~
follow me

VMwareでもCPUリソース制限

VMwareServerとMicrosoftのVirtualServerを比べてみると、VirtualServerで設定できるCPU使用率の制限設定がVMwareで出来ないのは気に入らなかったわけで。
探してみた。

見つかったのがCPU limit

これは良さそうだと思い試してみた。意外と普通に抑えられてる。
満足。
で、ソフトのビルドなんかもVMに影響しないようにしようと思い。cpulimit make 30なんてしてみたが。。。
CPU使用率100%状態。。。
cc1がCPU使用率99%。。。。。。。。
makeから呼び出されたプロセスまでは面倒見てくれないのね。。。。。
とりあえずVMの様に単一プロセスなら問題ないので、VMだけで使用しておきます。

暇な時にでもソース読んで、makeとかでバシバシ別プロセス呼んでもCPU制限出来るように修正しましょう。
follow me

NotifyChangeEventLog()にやられた

WindowsのEventLogを扱うためのAPIで、新しいEventLogの発生の検出を行う物があるのですが、この変な仕様(WMIの仕様?)なんとかなりません?

NotifyChangeEventLog()って名前のAPIなのですが。
内容は、hEventLogで指定されたイベントログにイベントが書き込まれたらhEventで指定されたイベントオブジェクトをシグナル状態にする。
となっているのですが、5秒以内に複数のEventLogが発生した際に取りこぼしが発生する可能性があります。
実際に試した所、確かに取りこぼしが発生しました。
それもかなりの高確率で。。。
Microsoftのページでも、取りこぼしの可能性があるってなってました。。。
とりあえずは、2003SP1では修正されているそうですが。

詳細は、Microsoftのページに記載されています。
follow me

タスクトレイ格納型プログラム

タスクトレイに格納されたプログラムの作成。
久々にプログラム作ろうと思ってみて、せっかくなのでタスクトレイ格納型にしたいと思ったので、やり方を調べてみたメモ。
内容は、Shell_NotifyIcon()使えばイイだけ。これを使ってトレイ内のアイコンを変えてみたり~。
とりあえず、プログラム初期化部分に以下のコードを埋め込み完了。
nidNoftyIconData.cbSize  = sizeof(NOTIFYICONDATA);
nidNoftyIconData.hWnd    = hwnd;
nidNoftyIconData.uID     = 1;
nidNoftyIconData.uFlags  = NIF_ICON | NIF_TIP | NIF_MESSAGE;
nidNoftyIconData.uCallbackMessage = WM_USER + 1;
nidNoftyIconData.hIcon   = LoadIcon(hCurInst, MAKEINTRESOURCE(IDI_ICON));
strcpy(nidNoftyIconData.szTip, APP_DESCRIPTION);

Shell_NotifyIcon( NIM_ADD, &nidNoftyIconData );

あと、ウィンドウが無いので、プログラムを終了するために、ポップアップメニューを追加しないと。。。プログラムが終了できない。。。
ちなみにメニュー箇所は、こんな感じにしてみた。
  case (WM_USER + 1):  //アイコンからのメッセージ処理
    if( lParam == WM_RBUTTONDOWN ){
      // マウス右押し
      GetCursorPos( &pt );
      hMenuPop = CreatePopupMenu();
      AppendMenu( hMenuPop, MF_BYCOMMAND | MF_STRING, IDR_EXIT, TEXT("Exit(&X)") );
      SetForegroundWindow( hwnd );
      TrackPopupMenu( hMenuPop, TPM_RIGHTBUTTON, pt.x, pt.y, 0, hwnd, NULL );
      if( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) ) {
        TranslateMessage( &msg );
        DispatchMessage( &msg );
      }
      DestroyMenu( hMenuPop );
    }

とりあえず、ポップアップメニューまで追加したタスクトレイ格納型の雛形。
プログラムはVC++6.0で作成。
TaskTray.zip