Tag Archives: PROGRAM - Page 4

Mac OS X 10.6 Snow Leopard Javac 文字化け 解決方法

JavaをMacで使う為に中古のMacBookを買ったが、いざJavacを使ってみたところ激しく文字化けしたので文字化けを直す方法をメモしておく。

ユーザディレクトリ直下.bash_profileに# vim .bash_profile 等で上記の内容を書き込むことで文字化けを解消することが出来る。

alias javac=”javac -J-Dfile.encoding=UTF8″

Javaで四則演算をする

Javaを使って四則演算をしてみたいと思う。 Math.javaというファイルを作成し下記のソースコードを書いき保存する。

# javac Math.java
# javac Math

実行すると次のように表示されると思う。

——文字として出力—–
5 + 5
5 – 5
5 * 5
5 / 5
——数式として演算—–
10
0
25
1

ここで気づくのだがPerlやCやPHPとは異なりprintf(“%d”,数式)というような整形型の記述ではないこと。何が言いたいかというとJavaには標準でprintfのような機能が備わっていないようである。仮に、 System.out.println(“%d”,5 + 5)とし実行してみると激しくエラーが表示される。

参考:Javaでの文字列整形 (J2SE 1.4系)

public class Math {
    public static void main(String args[]) {
    System.out.println("n------文字として出力-----n");
    System.out.println("5 + 5");
    System.out.println("5 - 5");
    System.out.println("5 * 5");
    System.out.println("5 / 5");
    System.out.println("n------数式として演算-----n");
    System.out.println(5 + 5);
    System.out.println(5 - 5);
    System.out.println(5 * 5);
    System.out.println(5 / 5);
    }
}

Java で Hello Word を表示させてみる

Perlが一応落ち着いたのでJavaに手を出すことにした。そこでPerlと同じ様に基礎周辺をブログに書き残しておく。コンパイラはパソコンにインストールされている事を前提にメモを書く。

まず、Javaのコンパイルは直接マシン語に訳すのではなく、Javaバイトコード(.class)と呼ばれるものを作成する。通常の言語とは異なりJava VMで実行させる独自の言語となっている。

ファイル作成についてもCやPerl等と大きく異なりプログラム中に宣言するクラスと同じ名前でなければならない。よって下のソースをコンパイルするには”public class Hello_Word”で宣言していることからファイル名を”Hello_Word.java”とする必要がある。なお、”public”とはクラスやメソッドを外部から呼び出せるかどうかを指定している。

実際にコンパイルするにはjavacというコマンドを使用し”javac [ファイル名].java”として実行するとコンパイルすることが可能である。下記の例では次のようにコンパイルする。

# javac Hello_Word.java

上記で記述したようにjavaはコンパイル後マシン語で直接実行ファイルを作成するのではないので、Java VMを呼び出しクラスファイルを指定させた上で実行する必要がある。よって次の様に実行する。

# java Hello_Word

この時、拡張子”.class”は省略する。 (つけて実行するとエラーとなる。)

public class Hello_Word {
   public static void main(String args[]) {
       System.out.println("Hello Word");
   }
}

Visitors 0.7日本語化 色々修正版

ソフトの窓様がVisitorsの日本語化をされていらっしゃいましたので、ファイルを元にその日本語化をもっと徹底的に行ないました。

修正内容
・残りの英語表記であった部分を日本語化しました。
・解析結果を表示するページが左寄でしたので中央寄せに修正しました。

visitors-0.7-JPORSP.tar.gz

使い方はソフトの窓様を参考にお願いします。

Perl 正規表現 半角文字全てにマッチ

意外にもあまり紹介されていないのでメモしておきたいと思う。
EUC-JPの文字コード表では次の通りに並んでる。

!”#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~

よって/[!-~]/iこれで全ての半角英数文字をマッチすることが可能である。

ORSP ブラクラ判定 リファラ隠蔽 公式サービス提供開始

http://jump.orsx.net/
リファラの隠蔽により掲示板等の設置場所をアクセス先の管理人に悟られなくする機能に加えブラウザクラッシャーや不快動画・画像、ウイルス、グロ画像、パス抜きサイト等のURLが含まれていた場合過去の経歴より判別し即座に警告表示を出す機能を追加しました。また今回、利用者自信も自分で危険なURLを登録することが可能です。よって自分でオリジナルの環境をカスタムすることが可能となっております。

利用例)
https://www.orsx.net/ へリンクしたい場合は下記の②通りの書き方が可能です
http://jump.orsx.net/www.orsx.net/blog/
http://jump.orsx.net/https://www.orsx.net/

このサービスはRental Orbit Spaceの公式サービスとして認定されております。

2ch ジャンプ確認 再現 ime.nu

全く同じ働きをするCGIを書いてみました。
※私の妄想にしか過ぎないので間違ってる可能性もあります。

#!/usr/bin/perl
#===================================
#スクリプト名:ジャンプCGI
#作者:ORBIT
#===================================

# URLの後ろパスがついているかチェック
if ($ENV{'PATH_INFO'} eq ""){&error;}

# パスにhttp:/が含まれている場合削除
$ENV{'PATH_INFO'} =~ s/http:///;

# URLの作成
$PATH = "http:/$ENV{'PATH_INFO'}";

# 出力
print "Content-type: text/htmlnn";
print <<EOT
<html><head>
<title>jump</title></head>
<body>
以下のURLに飛びますよろしいですか?<br>
<a href="$PATH">$PATH</a>
</body></html>
EOT
;

# パスが見つからなかった場合は下記を出力
sub error {
print "Content-type: text/htmlnn";
print <<EOT
<html><head>
<title>jump</title></head>
<body>
test
</body></html>
EOT
;
exit;
}

これをエラーページにしてるのかリダイレクトしてるのか多分そんなところかと思います。

CentOS 5.4 Python CGI対応

自分は使うことは無いので触る予定はありませんでしたが利用者が使いたい方もおられるでしょうので一応対応させました。
これはその際のメモです。

# yum install *python*
# ln -s /usr/bin/python /usr/local/bin/python

これで対応します。

Python CGIプログラミング入門
ここの例文を利用させていただいたところ無事動作を確認できました^^

Apache1/2のDos攻撃に対する脆弱性

先日からの不正アクセスからの状況から色々セキュリティー関連を調べていたら
恐ろしい物を見つけました。

Slowloris HTTP DoS
WS000031

一般的にサーバをダウンさせるには大量のマシンから大量のリクエストを送信する必要がありますが、今回紹介したツールはApacheのセキュリティーホールを突き、少数のマシンから少数のリクエストでサーバをダウンさせてしまいます。

非常に危険で恐ろしいツールですね。
当サーバでも対策を急がないといけないです(汗

cpanでIO::Socket::SSLがインストールできない場合は下記が入ってない可能性がありますので追加します。
# apt-get install openssl libssl-dev

ポートスキャンプログラムの構造解説と作成 Perl

原本に一部間違いや遠回りをしていると思われる点がありましたので修正してあります。

#!/usr/bin/perl
#-------------------------------------------------#
# Name: Port Scan Program
# 原作: Perl scan port
# (URL: http://www.perlmonks.org/?node_id=806461)
# 解説: ORBIT SPACE
# 目的: ポートスキャンプログラムの構造の
#       理解とモジュール利用方法等の理解
#       を行う為に今回構造の解説とプログ
#       ラムの変更を行いました。
#-------------------------------------------------#

#モジュール使用宣言
use IO::Socket;

# Very Simple Scan Port Write in Perl

# MAIN PROG

print "Perl Scan Port V1.0nn";

# User Var

# perl port.pl 127.0.0.1のように入力されたIPアドレスを取得
my $iptarget =  $ARGV[0];
unless($ARGV[0]){die "MISSING IP ADRESSnn";}

print "Interesting ports on $iptargetnn";

print "PORT // STATE // SERVICEn";

# Scanning fonction
# ポート番号をインクリメントして作成する。
for(my $iport = 0; $iport != 65537; $iport++){
# 指定されたIPアドレスのポートへ接続
if (my $remote = IO::Socket::INET->new(
   	Proto => "tcp",
   	PeerAddr => $iptarget,
   	PeerPort => $iport,
   	Timeout => "5")){

	# サービス内容(http,ftp,ssh等)の表示し格変数へ格納
	(my $name, my $aliases, my $port_number, my $protocol_name) =+
	getservbyport($iport , "tcp");

	# サービス名が不明な場合NAを格納
	unless($name){$name = "NA";}
	# 出力
	print "$iport     open      $namen";
	# 切断
	close($remote);
	}
}

print "Scan Finishn";