Monthly Archives: 10月 2010

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

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

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

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

旧MacBook(ブラック) Windows 7 64 インストール Select CD-ROM Boot Type: BootCamp

どうしてもMac OS Xが使いたく色々迷いながら結局Windowsと仲良く出来るらしいintel CPUの搭載された旧MacBookを中古で購入してみた。

そこで実際にWIndows 7をインストールしてみたが何かSelect CD-ROM Boot Type: とか出て止まる・・・ あれ?っとか思い調べてみたところなんと購入した機種は64bit版に対応していないじゃないか!という事が判明。。。

じょ・・・冗談でしょ?とか思いながら色々調べてみたところなんとかWindows 7をインストール出来るようなのでインストールしてみた。

先ず、Windows AIKを使いインストールDVDを作り替える(Windowsでの作業です)

この先行き止まり Select CD-ROM Boot Type: 
こちらの方がとてもわかりやすく解説していらっしゃいましたので参考にどうぞ。

ディスクが出来てインストールしWIndows 7を起動することができたのですが何故かトラックパッドで右クリック出来ない。 嘘!?とか思い、英数・カナのキーを押すと案の定入力切り替えも出来ない。。。

色々調べてみるとBootCampがインストールされていないみたいなのでSnow Leopardのインストールディスクを入れてBootCampのインストーラを実行してみるも非対応であると出てインストール出来ない。 ここまで来てそれは無いだろ!!と思いながら色々探してみると無理やりBootCampをインストールする方法があるようでインストールしてみた。

人柱しないヒトバシラー MacBook(late2006)をBootCampでWindows7(x64)
こちらの方がとてもわかりやすく解説していらっしゃいましたので参考にどうぞ。

D:BootCampDriverApple
のAppleフォルダをCドライブ直下にコピーしコマンドプロンプトを開く。
> cd Apple
> msiexec /i BootCamp64.msi
でBootCampのインストーラを実行でき問題なくBootCampをWindows 7にインストールできた。

超簡易版 フィボナッチ数列 Perl言語

C,Javaときたら普段から慣れ親しんでるPerlを出さない訳にはいかない為書いてみた。
書いて思う事は、やはり素晴らしい言語であるということ。
最も必要最低限で意志を伝えやすい。

#!/usr/bin/perl
# 初期値を設定
$x = "0";
$y = "1";
# 値の入力を求める
$input = <STDIN>;
for($i = $input;$i > 0;$i--){
    $z = $x + $y; # 今の値を出す
    $y = $x;      # 前の値を代入→次のループで2回前の値になる
    $x = $z;      # 今の値を代入→次のループで1回前の値になる
}
print $z;  # 最後の値を表示

超簡易版 フィボナッチ数列 JAVA言語

バカの一つ覚えとしてこの際、Javaでも同じ事が出来るかを試してみた。入力を受け付ける時にint型を直接指定出来ないようなのでString型で指定しその後、型の変換を行う。IOエラーについての記述やパッケージのインポート等あるが対してC言語との変化は無く同じ動作を行える。

// パッケージをまとめてロード
import java.io.*;
public class fibonacci {
   public static void main(String args[]) {
       int x=0,y=1,z=0,i,input;
       // 入力データ読み込み用オブジェクトの作成
       BufferedReader myReader = new BufferedReader(new InputStreamReader(System.in),1);
       try{
       System.out.println ("値を入力してください:");
       String myString = myReader.readLine();
       input = Integer.parseInt(myString);
       for(i = input;i > 0;i--){
           z = x + y;  /*今の値を出す*/
           y = x;      /*前の値を代入→次のループで2回前の値になる*/
           x = z;      /*今の値を代入→次のループで1回前の値になる*/
       }
       System.out.println (input + "の値は" + z + "です。");  /*最後の値を表示*/
       // エラー処理ブロック
       }catch (IOException e) {}
   }
}

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");
   }
}

Apache 2 再起動 エラー

最近Apacheを再起動させると下記のようなエラーが出る事が多くなってきたのでメモしておく

エラー内容
Address already in use: make_sock: could not bind to address [::]:80 (98)Address already in use: make_sock: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down Unable to open logs
おそらく殺しきらなかった子プロセスが80番ポートを使っている為に新しくApacheを再起動出来ませんと言ってるんであろうと思われる。

Apacheの子プロセスを探しプロセスID(PID)を見る
# /usr/sbin/lsof -i | grep http

子プロセスを強制的に終了し
# kill -9

再起動すると問題なく再起動出来る。