SSH で、リモートのサーバにパスワードなしでログインする方法
- まず、ローカルのマシンで ssh-keygen というコマンドを使って公開鍵・秘密鍵のペアを作成する。オプションの -t dsa だが、DSA (Digital Signature Algorithm) の説明はここ
# ssh-keygen -t dsa -
上のコマンドを実行すると、.ssh というディレクトリに、id_dsa と id_dsa.pub という 2つのファイルができあがる。どちらもテキストファイルで、この 2つが鍵ペアとなる。拡張子 .pub はその名の通り公開鍵(public key)だから、こちらの方をリモートのサーバに転送する。
転送の仕方は、# ssh-copy-id remote_username@remote_host.comまたは、# ssh-copy-id -i ~/.ssh/id_dsa.pub remote_username@remote_host.com
Squid で、キャッシュは使わずに単にプロキシとして動作させたい。
/etc/squid/squid.conf に 以下の 2行を追加するのが吉。
acl all src 0.0.0.0/0.0.0.0
no_cache deny all
Ubuntu で、トラフィックの監視をしたい(MRTG)。
トラフィックの監視は MRTG を使う。Ubuntu の場合は、とりあえず以下のパッケージをインストールしておけばよいと思う。
# apt-get install mrtg
# apt-get install mrtg-contrib
# apt-get install mrtg-ping-probe
# apt-get install mrtg-rrd
# apt-get install mrtgutils
# apt-get snmp
# apt-get install apache2
設定のポイントは、1. /etc/mrtg.cfg の作成、2. index.html の作成、3. snmpd.conf の修正の 3つ。
Linux (Ubuntu)で、起動時のサービス(デーモン)を指定する方法
Debian 系のディストリビューションのパッケージである Ubuntu には、RedHat / Fedora 系の chkconfig がない。なので、起動時のサービスの追加・削除にはchkconfig に相当する update-rc.d を使う(デフォルトで備わっているのでインストール不要)か、sysv-rc-conf を使う(下記のように要インストール)と、CUI で設定できるので便利。
# apt-get install sysv-rc-conf
ちなみに Redhat / Fedora 系では、デーモンを起動時に自動実行するには以下のようにする。コマンド名は /etc/init.d/コマンド名 にあるのと同じ名前。
# chkconfig --add コマンド名
Ubuntu で、コマンドラインからサービスを起動、再起動、停止する方法
以前、Drupal を Ubuntu で動かす方法でも書いたのだが、Ubuntu で
# apt-get install debian-helper-scripts
としておくと、
/etc/init.d/apache2 restart
とするところは
service apache2 restart
とできるので便利である。これは、Fedora ではデフォルトで使える技。
Java で、クイックソート(Quick Sort)を実装する。
ソートのアルゴリズムの中でも最も速いとされているのがクイックソートだ。平均計算量は O(n log n) とされている。しかし最悪のケースの場合は O(n^2) である。
このアルゴリズムは、
Java で、挿入ソートを考える。
import java.util.*;
public class Sort {
private Sort() {
}
public static void output(List data) {
for(int i = 0, n = data.size(); i < n; i++)
System.out.print(data.get(i) + ", ");
System.out.println();
}
public static void insert(List data) {
for(int i = 0, n = data.size(); i < n; i++ ) {
int j = i;
while(j > 0 && data.get(i) < data.get(j - 1))
j--;
int tmp = data.get(i);
for(int k = i; k > j; k--)
data.set(k, data.get(k - 1));
data.set(j, tmp);
output(data);
}
Java で、バブルソートを実現する。
Java でバブルソートのアルゴリズムを考える。
今さらバブルソート・・・でもバブルソートっていったい何なんだ?と思いつつプログラマ業を営んでいる輩も多いかもしれない。バブルソートのアルゴリズムを知らなくても業務プログラムは組めるからね。