過去の小技
pathの追加
cp ファイルをコピー
locate 高速検索
xhost リモートディスプレー
terminal ターミナルの操作
gdb 簡単なデバッグ
wmaker ドックから複数のターミナルを起動
ダブルバッファ javaアプレットでちらつき防止
pathの追加 |
linuxの解説書をみながら,書かれている通りに
commandを打ち込んだのにcommand not foundと
エラーが出てくることはありませんか.
例えば,ネットスケープをインストールした後,
netscapeと打ち込んでもcommand not foundと
表示されたことはありませんか.
このエラーは本当にそのコマンドがないか,
pathが通っていないときに起こります.
ここからはpathの設定を行い,netscapeと打ち込んで
netscapeが立ち上がるようにします.
ここではnetscapeという実行ファイルが/usr/local/netscape7.1/bin/
ディレクトリのなかにあるとします.
まずviやemacsなどで~/.bash_profileを開きます.
~/.bash_profileを開くと
PATH=$PATH
という行があるはずです.
この行を
PATH=$PATH:/usr/local/netscape7.1/bin
と編集すると,次にlinuxを立ち上げたときは
terminalでnetscapeと打ち込むだけでnetscapeがたちあがります.
編集した内容をすぐ適用したいときは
source .bash_profile |
とすればすぐ適用できます.
cp |
cpの基本は
cp コピー元 コピー先 |
という書式でコピーをします.
cpの応用
cpにオプションつけるといろいろできます.
ディレクトリをコピーしたいときは
cp -r コピー元ディレクトリ コピー先ディレクトリ |
-rだけだと同じファイル名が存在する場合,上書きしていいですかって聞かれます.
そんなのうっとうしいって人は
cp -rf コピー元ディレクトリ コピー先ディレクトリ |
としましょう.さらに,-uというオプションをつけると,
最後に編集した時間が同じ,またはコピー先の方が
新しい場合はコピーしなくなります.
cp -ruf コピー元ディレクトリ コピー先ディレクトリ |
locate |
locateはファイルを高速で検索するコマンド
例えばshutdownというファイルをハードディスク全体から
探したいときは
locate shutdown |
とします.locateの仕組みはハードディスク全体のファイル構成を
データベースとして保存しておき,そのデータベースから
ファイルを検索します.だから早い.
しかし,ダウンロードしたてのファイルはlocateでみつかりません.
なぜなら,データベースは少し前の状態だからです.
このデータベースは自動的に更新されますが,今すぐ更新したいというときは
su updatedb |
としましょう
xhost |
今日は他人のディスプレーに自分のパソコンで起動した
プログラムを表示させる,または,他人のパソコンで起動した
プログラムを自分のディスプレーに表示させる技を紹介します.
まず,準備として,自分のIPアドレス,他人のIPアドレスを
調べておきます.
@自分のパソコンのプログラムを相手のディスプレーに表示するには
相手のパソコン上でターミナルを開き,
xhost +自分のパソコンのIPアドレス |
と打ち込みます.
例として,xeyesを相手のPCに表示させるには
xeyes -display 相手のIP:0.0 |
とします.そうすると相手のPCにxeyesを表示させることができます.
A相手のパソコンのプログラムを自分のディスプレーに表示させるには
xhost +相手のパソコンのIPアドレス |
と打ち込みます.
例として,xeyesを自分のPCに表示させるには
xeyes -display 自分のIP:0.0 |
とします.そうすると自分のPCにxeyesを表示させることができます.
gtkで作られたプログラムは -display が --display になっているかもしれません.
注意: 悪用はやめましょう.
terminalの小技 |
terminal上で作業しているとき,以前,使用したコマンドを
もう一度使いたいってことがある.
コンパイルのコマンドなどは入力するのが面倒.もし,
直前にコンパイルしたのであれば,terminal上で
↑またはC-pを押してみる.
すると先ほど入力した,コマンドが表示される.
入力したコマンドは ~/.bash_historyというファイルに保存されている.
↑を押しつづけるとずっと前のコマンドも探すことができる.
いつ実行したかわからないけど,最近コンパイルした.
それで,もう一度コンパイルしたいってときは
C-r gccと入力してみよう.すると,~/.bash_historyの中から
gccが含まれているコマンドを探してくれる.
みつかったコマンドが目的のコマンドでなかったら,つづけて
C-rを押してみよう.~/.bash_historyの中からどんどんさかのぼって
検索してくれます.
terminal上ではemacsのカーソル操作がそのまま使えます.
例えば,行頭へジャンプしたいときは
C-aとしてみましょう.
C-kで1行消去ってのもできます.
他にもいろいろできるんで試してみましょう.
デバッグ |
1から10まで,足し合わせるプログラムを作ってみた.
こんな感じ↓
add.c
#include<stdio.h>
int main(void){
int i;
int ans ;
for(i=1;i<11;i++)
ans+=i;
printf("%d\n",ans);
}
実行してみると,55にならないぞ.なんでだ?
こんなときはデバッグしよう.
デバッグするとき,コンパイルのオプションは-gだったな.
gcc -g -o add add.c |
んで,デバッグのソフト起動するときは
gdb add |
一回普通に実行してみようかな.
<gdb> r (実行) |
やっぱり55にならない.
ソースファイルはどうなってるんだ?
<gdb> list (プログラムのソースを表示) |
6行目で一旦停止させて,ansの値をのぞいてみよう.
<gdb> b 6 (ブレイクポイントを6行目に設定)
|
ans の値が134517964って値になってる.そうか,
ansの初期化を忘れていた.
6行目に ans=0;を挿入して,コンパイルしなおすか.
<gdb> q (gdbの終了)
|
今度はちゃんと55と表示されたぞ.
めでたし,めでたし.
windowmakerの設定 |
windowmakerを使っていて,右端のドックから
terminalを一つ起動すると,二つ目はドックから
起動できない.
そんなときはterminalのドックを
右クリック→設定
アプリケーションのパスと引数の欄に
/bin/sh -c "exec gnome-terminal &"
と入力します.gnome-terminalの部分は
自分の使っているターミナルでもかまいません.
つぎからは,ドックから複数のターミナルを開くことが
できます.
ダブルバッファ |
ダブルバッファリングというのは動きのあるアプレットを
作ったときにちらつきをおさえる方法です.
ここでは,paint(Graphics g)メソッドを
g.drawLine, g.drawStringなどで定義して
ちらついてしまうソースを作ってしまった後で,
ダブルバッファリングを追加する方法について紹介します.
ダブルバッファリングの原理はわからなくてもいいという人
むけです.
まず,ソースの最初のあたりに
public class Hogehoge extends Applet, Runnable{
Image buffer; //←この行を追加
Graphics bufferg; //←この行を追加
Dimension d; //←この行を追加
次に,initメソッドのところへ
public void init(){
d=getSize(); //←この行を追加
buffer=createImage(d.width, d.height) //←この行を追加
最後に,paintメソッドのところへ
public void paint(Graphics g) {
if(bufferg==null) //←この行を追加
bufferg=buffer.getGraphics(); //←この行を追加
g.setColor, g.setFont などg.と続くところをすべて
bufferg. に置き換える.
paint メソッドの最後に
g.drawImage(buffer,0,0,this); //この行を追加
これで,appletにダブルバッファリングの機能が追加されます.
すべてのappletがこれだけでうまくいくとは限りませんので
ご了承ください.