JavaをMacで使う為に中古のMacBookを買ったが、いざJavacを使ってみたところ激しく文字化けしたので文字化けを直す方法をメモしておく。
ユーザディレクトリ直下.bash_profileに# vim .bash_profile 等で上記の内容を書き込むことで文字化けを解消することが出来る。
alias javac=”javac -J-Dfile.encoding=UTF8″
JavaをMacで使う為に中古のMacBookを買ったが、いざJavacを使ってみたところ激しく文字化けしたので文字化けを直す方法をメモしておく。
ユーザディレクトリ直下.bash_profileに# vim .bash_profile 等で上記の内容を書き込むことで文字化けを解消することが出来る。
alias javac=”javac -J-Dfile.encoding=UTF8″
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)とし実行してみると激しくエラーが表示される。
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); } }
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"); } }
意外にもあまり紹介されていないのでメモしておきたいと思う。
EUC-JPの文字コード表では次の通りに並んでる。
!”#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~
よって/[!-~]/iこれで全ての半角英数文字をマッチすることが可能である。
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の公式サービスとして認定されております。
全く同じ働きをする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; }
これをエラーページにしてるのかリダイレクトしてるのか多分そんなところかと思います。
自分は使うことは無いので触る予定はありませんでしたが利用者が使いたい方もおられるでしょうので一応対応させました。
これはその際のメモです。
# yum install *python*
# ln -s /usr/bin/python /usr/local/bin/python
これで対応します。
Python CGIプログラミング入門
ここの例文を利用させていただいたところ無事動作を確認できました^^
先日からの不正アクセスからの状況から色々セキュリティー関連を調べていたら
恐ろしい物を見つけました。
一般的にサーバをダウンさせるには大量のマシンから大量のリクエストを送信する必要がありますが、今回紹介したツールはApacheのセキュリティーホールを突き、少数のマシンから少数のリクエストでサーバをダウンさせてしまいます。
非常に危険で恐ろしいツールですね。
当サーバでも対策を急がないといけないです(汗
cpanでIO::Socket::SSLがインストールできない場合は下記が入ってない可能性がありますので追加します。
# apt-get install openssl libssl-dev
原本に一部間違いや遠回りをしていると思われる点がありましたので修正してあります。
#!/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";
最近のコメント