絶対見とくべきアニメ[2009年3月時点]

絶対見とくべきアニメ[2008年1月時点]

ちょっと修正。

とりあえず、絶対見とくべきアニメをまとめておきます。

レビューではないですよ。

(上であればあるほど好きなアニメ。)

■アニメの国宝
・交響詩篇エウレカセブン
・プラネテス ΠΛΑΝΗΤΕΣ

■ゆずれない最高のアニメ
・攻殻機動隊 STAND ALONE COMPLEX
・攻殻機動隊 S.A.C 2nd GIG
・トップをねらえ!

—————————–絶対的な差——————————–

■かなり好きなアニメ
・機動戦士 ガンダム SEED
・マクロスプラス MACROSS PLUS
・機動戦士 ガンダム SEED DESTINY
・コードギアス -反逆のルルーシュ-
・ゼーガペイン ZEGAPAIN
・精霊の守り人
・紅
・機動戦士ガンダム
・機動戦士Zガンダム

■好きなアニメ
・BLACK LAGOON -ブラックラグーン-
・BLACK LAGOON -ブラックラグーン- The Second Barrage
・ジパング
・鋼の錬金術師
・ラーゼフォン
・COWBOY BEBOP
・機動戦士 ガンダム0083 -STARDUST MEMORY-
・新機動戦記 ガンダムW

■まぁまぁ好きなアニメ
・フルメタル・パニック!
・フルメタル・パニック!The Second Raid
・創聖のアクエリオン
・ぼくらの
・CLAYMORE -クレイモア-
・無限のリヴァイアス

[おまけ]
■まだ見てないけど気になってるアニメ
・機動戦艦ナデシコ
・機動戦士 ガンダム 0080
・蟲師

・DARKER THAN BLACK 黒の契約者
・FREEDOM
・スクライド
・カレイドスター
・銀河英雄伝説
・銀色のオリンシス
・蒼穹のファフナー
・灰羽連盟
・地獄少女
・テクノライズ Texhnolyze
・Serial Experiments Lain
・MADLAX -マドラックス-
・LAST EXILE ラストエグザイル
・キスダム -ENGAGE planet-
・ヒロイック・エイジ

※完結しているアニメだけを選択しています。

NTPD上の示す時間とLocal Timeを比較

NTPD上の時間と、LocalTimeとを比較するスクリプトを作ってみた。

結構色んな要素を含んでいて勉強になったかな。
ネットワークバイト列から時間への変換などをunpackを用いて実装する。

#!/usr/bin/perl

use strict;
use Socket;

# Local Time Lag Alart Threshold Seconds
my $threshold_sec = 30;

# NTPD Informations
my $host = 'ntp1.jst.mfeed.ad.jp';
my $protocol = "ntp";
my $sec_of_70years = 2_208_988_800;

# Local Settings
my $hostname = `/bin/hostname`;
chomp($hostname);
my $date = `/bin/date +%Y/%m/%d-%H:%M:%S`;
chomp($date);

# Variable Settings
my @buf;
my ($connect_host, $port, $ipaddr, $host_addr);
my ($send_data, $send_data_byte, $port_by_byte, $host_by_in_addr_struct, $recv_data);
my ($TransmitTime, $ntpd_time, $ntpd_time_sec, $local_time, $local_time_sec, $deley_sec);

if (!socket(SOCKET, PF_INET, SOCK_DGRAM, getprotobyname("udp"))) {
    print "socket: $!";
    exit 1;
}

$port_by_byte = scalar(getservbyname($protocol, "udp"));
$host_by_in_addr_struct = inet_aton($host);
$connect_host = sockaddr_in($port_by_byte, $host_by_in_addr_struct);

$send_data = pack("N12", 0x0B000000);
$send_data_byte = send(SOCKET, $send_data, 0, $connect_host);
if (!defined($send_data_byte)) {
    print "send : $!";
    exit 2;
}

$host_addr = recv(SOCKET, $recv_data, 1024, 0);
if (!defined($host_addr)) {
    print "recv : $!";
    exit 3;
}

($port, $ipaddr) = sockaddr_in($host_addr);
$host = gethostbyaddr($ipaddr, AF_INET);
print "DEBUG: Host: $host, Port: $port\n";

@buf = unpack("B32 B32 B32 B32 B64 B64 B64 B64 B*", $recv_data);
@buf = unpack("N*" , $recv_data);
$TransmitTime = $buf[10];

$ntpd_time_sec = $TransmitTime - $sec_of_70years;
$local_time_sec = time();
$deley_sec = abs($local_time_sec - $ntpd_time_sec);

# DEBUG
$ntpd_time = scalar(localtime($ntpd_time_sec));
$local_time = scalar(localtime());
print "DEBUG: ntpd? time: $ntpd_time.???? ntpd? time sec: $ntpd_time_sec\n";
print "DEBUG: local time: $local_time.???? local time sec: $local_time_sec\n";

if ($deley_sec >= $threshold_sec) {
    print "DEBUG: There is Local time lag ( = $deley_sec seconds ) over $threshold_sec seconds in $date at $hostname.\n";
}

実行結果はこんな感じ。

# perl a
DEBUG: Host: ntp1.jst.mfeed.ad.jp, Port: 123
DEBUG: ntpd  time: Wed Mar 11 22:43:06 2009.     ntpd  time sec: 1236778986
DEBUG: local time: Wed Mar 11 22:41:23 2009.     local time sec: 1236778883
DEBUG: There is Local time lag ( = 103 seconds ) over 30 seconds in 2009/03/11-22:41:23 at server01.

PEAR Auth で認証メモ

すごい簡単にできてしまう。
PHPのこういうところが大好きだ。

まずは、auth部分のスクリプト。

<html>
<body>
<?php

require_once("Auth/Auth.php");

$params = array(
    "dsn" => "mysql://db_user:db_user_pass@127.0.0.1/db_name",
    "table" => "db_tbl",
    "usernamecol" => "user_col",
    "passwordcol" => "pass_col"
);

$auth = new Auth("DB", $params);
$auth->start();

if ($auth->getAuth()) {
    print("認証成功\n");
    print("ユーザ名:".$auth->getUsername()."\n");
}
else{
    print("認証失敗\n");
}

?>
</body>
</html>

次に実際に認証したいページで上記PHPをrequire。

# cat index.php
<?php
require_once("./auth.php");
if (!$auth->getAuth()) {
    echo "ダメ";
    exit;
}
?>

<HTML>
<HEAD>
<TITLE>AUTH_TEST!!!</TITLE>
</HEAD>
<BODY>

認証したいページのコンテンツ

</BODY>
</HTML>

楽にできるなぁ。

db構成は以下みたいなもので。

> use auth_test
> select * from auth_tbl;
user                   pass
--------------------------------
matsumoto_r       パスワードのハッシュ

ちなみに忘れがちなテキストのハッシュのとり方は以下。

# echo -n "matsumoto_r" | md5sum

nオプションを忘れないように。

忘れがちなviの操作メモ

どうしてもメモっときたくて、忘れがちなviの操作をメモ。

Ctrl+d    半ページ下    fほど早く行きたくないときとか
Ctrl+u    半ページ上    bほど早く行きたくないときとか
/文字列後 shift+n    上向きに検索    ?でやるよりもnと対になってていい感じ
Shift+i    カーソルの行頭からInsertモードへ    コメントアウトしたいときとか
Shift+a    カーソルの行末からInsertモードへ    ;忘れとか
o    カーソルの下に1行改行してInsertモードへ     もう一行書きたいときとか
Shift+o    カーソルの上に1行改行してInsertモードへ    上に書き忘れたときとか
w    右の単語の先頭へ    なんとなくパッパと動きたいときとか
d    左の単語の先頭へ    なんとなくパッパと動きたいときとか
ZZ    変更があれば保存して終了    とりあえず保存して終了したいときとか
:sh    シェルに入る、exitでviに戻る    viは常に起動なのだ!的なときとか
:!シェルコマンド     シェルコマンドを実行    sh試したいけどそこまで本格的にしたくないときとか
!!シェルコマンド    シェルコマンドの実行結果を挿入    結果をそのまま流用したいときとか
:e ファイル名    ファイル名を読み込む    vi続けてつかいたいときとか
:r ファイル名    ファイル名の内容を下行に挿入    過去のスクリプトとか流用したくなったときとか
:w ファイル名    ファイル名のファイルに内容保存    cpし忘れたときとか

誰でもできるARPクリア

これ本当なのか?

サーバ交換とかした後に、交換後起動したサーバからそのつながってるスイッチのデフォルトゲートウェウイにPing飛ばしたら、スイッチ側のそのサーバIPのARP情報がよしなに書き換えられるという話。

とりあえず、サーバ同士では書き換わった。

これがうまくいったらスイッチ側でARPクリアとか必要ないような。
ブート時にIP設定してる数だけデフォルトゲートウェイにPing飛ばすスクリプト仕込めばいいだけになってしまう・・・・・

怪しいなぁ。