Ubuntuで Javaを使おう

UbuntuでもJavaは使える。というか,Java自体どんなOSでも同じプログラムで同じ動作が前提の言語です。
Ubuntuで,Javaの開発環境を整えるのは,Windowsよりもずーと簡単。

Ubuntu(Linux)でJavaをするときに,真っ先に気がつくことがある。
Javaのバージョンは同じでもオープンソース版のJavaとSUNから提供しているの2種類のJavaがあるということ。

どちらも無料である。違いを簡単に言うとオープンソース版の方はSUNのものから,ライセンスの関係上オープンソースにできない部分を取り除いたものだ。

オープンソース版でも基本的なプログラムを書く分には,まったく問題ない。普通はSUNのバージョンを入れる。オープンソース版は,オープンソースだけで構成するとか,SUNの定めたライセンスに左右されたくないとき等に使う。

オープンソース版のJavaの環境のダウンロード・インストール・環境設定は,端末から以下のコマンド実行

sudo apt-get install openjdk-6-jdk openjdk-6-jre

SUNのバージョンのダウンロード・インストール・環境設定なら,こちら。

sudo apt-get install sun-java6-jdk sun-java6-jre

こちらは,あらかじめUbuntuの「ソフトウエアソース」の設定をしておく必要がある。設定方法は,このページの一番下の「おまけ」を参照。

オープンソース版,SUN版の どちらか,片方だけでよい。
たったこれだけで,環境が完成する。(当然javaのコマンドはPATHも通ったところに入る。)

コンパイル方法は,
端末から

javac any.java

とすれば,

any.classが出来る。

実行は,同じく端末から

java any

とすれば出来る。

プログラムは gedit 等のテキストエディタを使って書きます。他のテキストエディタは「Ubuntuで C言語を使おう」を参照してください。

Javaの統合開発環境のEclipse を使うことも出来ます。

sudo apt-get install eclipse

だけでEclipseのダウンロードとインストールがすべて出来て,使える様になります。

Ubuntu 8.04で入れた場合,eclipse バージョンは,3.2 が入ります。新しいバージョンは手動で入れる必要があります。

eclipes-c

基本的に Windows版などと同じですね。

eclipes-ide

Eclipseのメニューの位置:

eclipes-menu

おまけ:
SUNのバージョンを入れるための前 設定方法:

software sorce

「ソフトウエアソース」を開き

ライセンスの問題のあるもの

から 
著作権もしくは法的な問題によって制限されたソフトウェア (multiverse) のチェックを入れる。

閉じて,パッケージの更新を行えば,SUNのバージョンをインストールすることが出来ます。

comments

Ubuntuで C言語を使おう

Ubuntu は Linux。Linuxはプログラミングの環境が充実している。
プログラミングを始めるために必要な作業というのが少ないので,すぐに始められる。

Ubuntuなら,C言語で書いたものとスクリプト言語で書いたものも同じ様に使えるので,わざわざC言語を使わなくても,アプリケーションの作成は十分です。実際に,Ubuntu のソフトは スクリプト言語の Python で書かれたソフトも多いし,PerlでもGUIプログラミングが簡単に出来る。(Windowsだと,そうはいかない。)

 それでも,やはりC言語は「システム開発言語」なので,特別な言語なのである。

 多くの言語がオブジェクト指向を取り入れているが,C言語に追加されることは無いだろう。もし,必要ならばC++を使えばよいのだから。

基本的に端末で作業をする。

C言語を使うためのソフトのインストール方法:
端末から

sudo apt-get install build-essential

と実行。これで,コンパイラなど一式ダウンロード・インストール・設定が完了する。

fuu.c をコンパイルするなら,端末から

gcc fuu.c

と入力。
コンパイラは GCC というオープンソースの世界では定番中の定番であるのGNU C コンパイラ。

実行は

./a.out

とする。

実行可能ファイルは a.out となる。

実行するには,パスを指定してやらないと動かせない。
カレントでぃテクトリならば
./ を頭につければ,OK

実行可能ファイル名を指定してコンパイルする方法:
program という名前にしたいなら,

gcc -oprogram fuu.c

とする。

./program

で実行出来る。

入力手段(テキストエディタ)は?
gedit :

gedit-c

Ubuntuで標準のテキスト・エディタ。標準でもC言語などのプログラミング言語の
構文・キーワードを認識してVisual Studioみたいに強調表示してくれる。

Ubuntuのメニューから「テキスト・エディタ」を選ぶとこれが起動する。
普通はこれで十分。
カスタマイズも結構出来る。

もうちょっと高機能なもの。
Geany :

Geany-c

高速で軽量な IDE(統合開発環境)
これなら,端末を使わなくても,快適に使える。

インストール方法:
端末から

sudo apt-get install geany

UNIX的なもの:
vi とか emacs。UNIX系環境では定番ソフト。

vi:

vi-c

シンプルなテキストエディタ。編集モードとコマンドモードを持つ。
コマンドモードで :w とすれば,上書き保存し, :q とすれば,終了。
:q! とすれば,変更を破棄して終了。:wq なら,保存して終了。
i キーでインサートモードで編集モードに入る。ESCキーで編集モード終了
a キーで追加モードで編集モードに入る。ESCキーで編集モード終了
他にも色々あるが,とりあえずこれだけ知っていれば,なんとか使えます。

vi foo.c

で起動とかします。

emacs:

emacs-c

なんでもかんでも入っているエディタ。統合環境。

メールソフトやWebブラウザ(テキスト表示のみ)とかも入っている。
多数の画面(ウインドウ)分割も可能。
機能の大半が emacs LISPというプログラミング言語で書かれている。
設定ファイルもLISPで書く。
そのためLISPのプログラムを書くことで機能を追加していける。
多分一番使われているLISPの処理系・・・。

複数のショートカットキーを使ってコマンドを実行したり,
ESCキーを押し,xキーを押して,機能名を入力してコマンドを実行したりする。
複数キーでやるので,キャンセルはCtrl + G を2回押すということは覚えておこう。キー入力中によく分からなくなって,中断したいときは Ctrl + G を何回も押そう。
終了は Ctrl + X の直後 Ctrl + C
保存は Ctrl + X の直後 Ctrl + S

ウインドウ分割系コマンド(一部):
Ctrl + 2
で上下2分割
Ctrl + 3
で左右2分割
Ctrl + x のあと o を 入力すると,ウインドウ間を移動出来る

Ctrl + 0 で現在いるウインドウを閉じる
Ctrl + 1 で現在いるウインドウ以外をすべて閉じる

ちなみにemcas内では
ESCキーは M- と表記
Ctrl キーは C- と表記

例:
ESCキーを押した後 Xキーを押す場合は M-x と表記
Ctrl + S は C-s と表記。

emacsの裏情報:「やらたと日本語に強い」
他のエディタで開いたら文字化けで困る時はこれを使おう!!
現在のemacsには,mule プロジェクトの成果が組み込まれており,漢字コード認識能力は圧倒的に高い。mule とは,emacsの日本語などの多言語対応のカスタマイズがされたもの。最近は本家のemacsに取り込まれたので,emacs 自体が日本語の認識力が高い。なのでgeditやviなどで文字化けしても,emacsでは普通に見えたりします。

それぞれのインストール方法:
vi:

sudo apt-get install vim

vi は標準で入っているのですが,vim-tinyという必要最小限の機能しかないバージョンです。ファイルサイズが小さくHDD領域あまり消費しませんが使いにくいので,フルバージョンを入れます。

emacs:

sudo apt-get install emacs

emacsは,いくつかのバージョンがありますが,普通は上記の方法で入れるとOKです。

GUI(X-Window)が使えないときで,viやemacs以外の簡単なテキストエディタ
nano:

nano-c

画面下にキー操作のヘルプが常に出ている。機能は多くないが,ややこしいことが少ないテキストエディタ。

とりあえず:
Ctrl + O : 保存
Ctrl + X : 終了

他にも,MonoDevelop とい環境もある。ほとんどVisual Studio。 .NETプログラミングも出来る。

参照:.NET開発をLinuxで MonoDevelop 1.0

おまけ:
C++を使うためのソフトのインストール方法:
端末から

sudo apt-get install g++

と実行

コンパイル方法。gcc を g++ に書き換えるだけ。

g++ fuu.cpp

g++ -oprogram fuu.cpp

comments

インストールマニアックス2009鉄人というコンテスト

インストールマニアックス2009鉄人というコンテストがあるそうです。

「Windows Server (64bit) + IIS にできるだけ多くのソフトウェアをインストールせよ」
http://www.thinkit.co.jp/maniax/2009/
だそうな。。

http://www.thinkit.co.jp/maniax/2009/about.html
によると,
インストールマニアックスは、64ビット版WindowsサーバーにOSS(一部除く)をいくつインストールできるかを競い合う、いわば技術者の異種格闘技戦です。

とのこと。
なんだか,おもしろそうです。

だけど・・・LinuxのDebian だったら,無数のOSS(オープンソースソフトウェア)を
apt-get install なんとか
で,検索・ダウンロード・インストール・初期設定まで,ほぼ全自動で出来てしまうので,Debianだと,コンテストというよりは,Debianプロジェクト自体がこのLinux版コンテストみたいな感じ。

Debianは,無数のOSSを入れることができて,それらすべてをサポートしょうとする巨大なプロジェクトです。規模が巨大すぎて,いつバージョンアップするのかわからないという弱点もありますが・・・。

comments

ツノウサギって何だ?( Ubuntu 9.04 )

Ubuntu 9.04のコードネームは Jaunty Jackalope 軽快なツノウサギだそうです。

Ubuntuのコードネームは,2語で構成されていて
すべて,○○な動物 シリーズです。

実際のコードネーム一覧
Ubuntu 4.10 : Warty Warthog イボだらけのイボイノシシ
Ubuntu 5.04 : Hoary Hedgehog 年老いたハリネズミ
Ubuntu 5.10 : Breezy Badger 快活なタヌキ
Ubuntu 6.06 : Dapper Darke 敏捷なカモ
Ubuntu 6.10 : Edgy Eft 鋭いイモリ
Ubuntu 7.04 : Feisty Fawn おこりっぽい(元気?短気?)な子鹿
Ubuntu 7.10 : Gutsy Gibbon 根性あるテナガザル
Ubuntu 8.04 : Hardy Heron 頑健なサギ
Ubuntu 8.10 : Interpid Ibex 勇敢な野生ヤギ
Ubuntu 9.04 : Jaunty Jackalope 軽快なツノウサギ
Ubuntu 9.10 : Karmic Koala 霊的(因果?)なコアラ

で,動物の名前が2つ目に来ているのですが,
ツノウサギってちょっと引っかかります。

・・・そんな動物,いたっけ?

調べてみると,・・・どうも「うさぎ」に「鹿の角」が付いた空想上の動物らしい。
結構メジャーだそうな。

参考:
1322 「テキサス・ジャッカロープ」の真贋を問う
http://magicbassoon.at.webry.info/200811/article_8.html

コードネームを良く見ると 2語の頭文字が揃えられているのが分かります。
さらにその頭文字も,6.06からD,E,F,G,H,I,J とABC順になっています。

ちなみに,バージョン番号は,x.10 と x.04 の繰り返しです。
200x年10月と200x年4月がリリース月です。
Ubuntu 6.06のみ,2006年6月と,2ヶ月遅れですが,それ以外は,全部この法則になっています。

comments

PHPの使用メモリの上限設定変更Windows・Linux(Ubuntu/Debian/Fedora/CentOS)・FreeBSD

PHPで使えるメモリ量の上限設定は,標準では案外低めに設定されています。高く設定しているとOSがメモリ不足になる可能性があるので,普通は変更しないのですが,プログラムによってはメモリ不足でPHPのプログラムが止まってしまうことがあります。

PHPの実行で メモリ不足だと,ページが真っ白になってしまい,何も出力されないこともあります。(エラーメッセージすら出ない)

PHPで使えるメモリ量の上限を変更する方法は,サーバの設定を変更してやる必要があります。
php.ini という設定ファイルで変更できます。php.iniの場所は環境によって異なります。

php.ini の中から

;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;

max_execution_time = 60 ; Maximum execution time of each script, in seconds
max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
memory_limit = 32M ; Maximum amount of memory a script may consume (16MB)

という部分を探し,
memory_limit = 32M ; Maximum amount of memory a script may consume (16MB)

32M という風になっている部分を修正すれば,使えるメモリ上限を変更出来ます。
もちろん32M は,上限 32MBの意味。バージョンとかによっては初期設定で 16Mとか 8Mとかになっていることもあります。

OS,環境ごとのPHPのphp.ini設定ファイルの位置が違うので,メジャーな環境の php.ini の設定ファイルの位置の一覧表を載せておきます。

Windows環境の場合:
XAMPPでインストールした場合
C:\\xampp\\php
の中の
php.ini
ので設定

WindowsにPHPを単体でインストールした場合
C:\\Windows\\php.ini や C:\\php\\php.ini など,環境によって異なります・・・。

Linux 環境で LAMPPで入れた場合
/opt/xampp/etc/php.ini
を編集
LAMPPはXAMPPのLinux版。

Linux (CentOS/RedHat/Fedora系)の場合
/etc/php.ini
設定後,apacheを再起動。( apachectrl restart これが使えない場合は /etc/init.d/httpd restart でも出来ます。)

Linux (Ubuntu/Debian系)の場合は,ソフトのバージョンの組み合わせ ごとに決まっている。バージョンを把握していれば,どこにあるか,迷うことはない。
Apache2 + PHP5 なら
/etc/php5/apache2/php.ini
設定後,apache2を再起動。( apache2ctrl restart もしくは /etc/init.d/apache2 restart )

Apache + PHP4 なら
/etc/php4/apache/php.ini
設定後,apacheを再起動。( apachectrl restart もしくは /etc/init.d/apache restart )

PHP5 cli (コマンドラインで使えるPHP)なら
/etc/php5/cli/php.ini
(この場合は再起動などの処理は不要です。)

FreeBSD の場合
/usr/local/etc/php.ini
の場合が一般的らしい。

comments

Ubuntu 9.04はクラウドへ

もうすぐ,Ubuntuの最新版 Ubuntu 9.04 がリリースされます。(4月23日の予定)

Ubuntu Home Page (ubuntu.com)
Ubuntu Japanese Team

Ubuntu 9.04 はクラウドコンピューティングへの対応がされるそうです。

次期Ubuntu Linux,「Ubuntu 9.04」のベータ版がリリース
http://itpro.nikkeibp.co.jp/article/MAG/20090406/327888/
より

 Ubuntu 9.04では,旧版の「Ubuntu 8.10」(開発コード名「Intrepid Ibex」)からさまざまな機能強化が図られている。具体的には,新しい通知システム,起動プロセスの変更,Ubuntuでは初となるクラウドコンピューティングへの対応などだ。

←に Ubuntu 9.04 リリースまでのカウントダウン バナーをつけてみました。

私は,Ubuntu 8.04を使い続けています。( 2011年4月までサポートがあるので。)
こんなに長くLinuxを常用したのは,はじめてです。
Ubuntu は ディスプレイドライバかネットワークインタフェースかACPI(省電力系)で引っかからなければ,ほぼ,問題なく使いつづける事が出来ます。

(ちなみに,Windowsが必要な場面はUbuntu上で VMware を使ってWindowsを起動して対応しています。)

comments

Javaにおける役に立たない知識を教えます!!

Javaは,良く使われているプログラミング言語。
そんなJavaの「まったく」役に立たない知識を教えます!!(いらんか・・・。)

問題!以下のプログラムの間違いを指摘してください。

// $.java
class $
{
 public static void main(String args[])
 {
   int $ = 10;
   System.out.println("This class name is $." + $);
 }
}

答え:
全角スペースが沢山使われいる。(半角スペースだとレイアウトが崩れるんで・・・。)

なんと $ は,クラス名とか変数名で使ってもエラーにならないんです。

http://java.sun.com/docs/books/tutorial/java/nutsandbolts/variables.html
より
Javaのクラス名とか変数名は,英字, $ , _ で始まっている必要がある。

あんまり使ってはいけないらしいが,$ が変数名などの頭文字として使える事が明記されています。つまり,$が 1文字でも変数名とかクラス名として使えてしまいます。

だから,全角スペースが入っている以外は間違っていません。

comments

F1 新チーム「ブラウンGP」がいきなり1位2位

HONDAがF1を去った。そのチーム自体は,ロスブラウンさんが個人で買い取った。そしてチーム名は「ブラウンGP」となった。
http://ja.wikipedia.org/wiki/%E3%83%96%E3%83%A9%E3%82%A6%E3%83%B3GP

メンバーは,HONDA F1のチームとほとんど同じらしい。
いろいろ混乱しているはずなのに,F1開幕戦でいきなり,1位2位を獲得。

しかも,昨シーズン(HONDA F1)は最下位争いをしていたチームだっただけに,ありえない。

レギュレーションの大幅変更とか,色々あったにせよ,チームにとって突然のHONDA F1撤退というあわや解散かも?等 混乱していて十分にテスト出来ていないのに,この結果は,奇跡に近い。

http://www.jiji.com/jc/a?g=afp_spo&k=20090329021705a

comments

あなたのウェブサイトにも,雪の降るページを

京都コンピュータ学院のウェブサイトに雪を降らせるコードを実装しました。
ページの右上の検索ボックスの横にある小さい雪だるまの絵をクリックすると雪が降り始めます。もう一度押すと雪が止みます。

これは,JavaScriptでかかれています。●の文字をいろんな大きさで色々な場所に配置して,ちょっとずつ下に移動させています。(●は画像や円を描いているわけではなく,●の文字そのものです。)

自由にお使い下さい。

といっても,これは京都コンピュータ学院のウェブサイト用に最適化されていますので,こちらに,再利用しやすくしたバージョンをおいておきました。
こちらは雪が●と*が混ざったバージョンに変更されています。
実行例:雪のサンプルページ(雪が●と*の両方)。

最低限のHTMLの場合:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript" src="kcg-snow.js"></script>
</head>
<body onload="onload_snow()" bgcolor="#000000" text="#ffffff">
<div style="height:100%">

</div>
</body>
</html>

とりあえず使うことが出来ます。
これで あなたのウェブサイトにも,雪の降るページを。

カスタマイズの例:
kcg-snow.js
の中の
count = 30;
は同時に出る雪の個数です。40とか80とかにすれば,雪の量を増やすことが出来ます。
‘●’ とか ‘*’ は雪の形です。ただの文字なので,好きな文字に書き換えれば,その文字が降ってきます。これは,HTMLなので,'<img src="snow.gif" alt="">’ とかにして画像を入れることも出来ます。

私は,雪を降らすプログラムがとても好きです。
子供のころによく書いたプログラムも雪を降らせるプログラムでした。
その時 使っていたコンピュータは父親のCASIO FP-1100。言語はC82-BASICでした。(電源入れると,C82-BASICの入力画面になった。)
CとはカシオのCで,82は1982年のことだったと思う。
すさまじく遅かったので,雪のようにゆったり動くプログラムとかは最適でした。その時も,雪は画像ではなくて,文字でした。雪を表している文字は*を使用していました。
この手のプログラムを作るのは,当時も楽しかったですし,今でも楽しいです。

CASIO FP-1100は,現在,京都コンピュータ学院京都駅前校の1階に展示されていますね。

comments

スーパー キーとハイパー キー

Windowsのコンピュータのキーボードには,Windowsキーがあります。
Macには,Appleキーがあります。Optionキーもあります。

昔は,もっとすごいキーがありました。

そのキーは スーパー と ハイパーです。

ええ?ほんまかいな?って感じですが,

Space-cadet keyboard (Wikipedia 英語)
の画像
http://upload.wikimedia.org/wikipedia/commons/4/47/Space-cadet.jpg
を見ると,確かに 一番左下と一番右下にそれぞれに「HYPER」と「SUPER」が並んでいます。
その隣には,「META」キーもあります。
良く見ると,見たことがないキーがたくさんあって非常に興味深い。
手の絵で指差ししているものや,λとか・・・。

MITのLisp マシンで使われていたそうです。
変わった文字を入力できるみたいです。
(参照:Space-cadet keyboard (Wikipedia 英語)

参照(日本語の解説 宇宙飛行士養成キーボード ):http://d.hatena.ne.jp/masatoi/20051202/1133537070

現在も, スーパーキー を積極的に使うソフトがあります。
compiz-fusion です。LinuxのX-Windowで動く 3D デスクトップ環境です。
http://blog.kcg.ne.jp/s2node/?p=323
とか
http://blog.kcg.ne.jp/s2node/?p=302
ができるソフトです。

そういった3Dウインドウや3Dデスクトップを出すのにスーパーキーを押しながら操作しているのがいくつかあります。

でも,今のコンピュータに スーパーキーはありません。
どうやって,スーパーキーを押すのかというと,WindowsキーやAppleキーを押します。これらのキーがスーパーキーとして機能します。( WindowsキーやAppleキーがスーパーキーとして割り当てられています。)

つまり,Linuxを使っているのにWindowsキーやAppleキーをよく使います。なんか変な感じです。

スーパーキーについて Wikipedia(英語):
http://en.wikipedia.org/wiki/Super_key_(keyboard_button)

あと,「META」キーは Alt で代用できます。
じゃあ,「HYPER」キーは なにで代用するんでしょうか?(私は知らないです・・・。)

comments