QRコードの真ん中にロゴ入れてみる

QRコードは2次元バーコードの一種で,ケータイでウェブとかアクセスするのが多い。それぐらいは誰でも知っているけど,

QRコードは,ある程度汚れても認識できるという特徴があるので,真ん中に,さりげなくロゴとか絵とかを入れているのがある。でも,控えめが多い。

QRコードを生成するときに,エラー訂正レベルを変更できるので,最大ににしてみて,思いっきり違うものを入れて,かつ,ちゃんと機能するものがどこまでいけるか?

以前から試してみたかったので,適当に作ってみた。

qr-test

とりあえず,これでも正しくQRコードとして機能します。
行き先は,京都コンピュータ学院のケータイサイトのオープンキャンパスのイベント情報のページ。

ちなみに,角を消すと,認識しない・・・。当然といえば,当然かも。

comments

MySQLでデータ保存形式がCSV形式のデータベースを使ってみる

ぽんさんの記事にもあるようにSUNは,Oracle に買収された・・・。
MySQLはSUNに買収されているので,MySQLはOracle に買収された・・・。
MySQLの運命やいかに!?

・・・・は,おいておいて。

MySQLでデータ保存形式がCSV形式のデータベースを使ってみる(というか,なんか,色々使えそうなので技術メモ。)

MySQLは,データベースのストレージエンジンを切り替えて使うことが出来る。
ストレージエンジンっとはデータを保存したり呼び出したりする,
データベースのパフォーマンスに直結する部分だ。
詳細:http://dev.mysql.com/doc/refman/5.1/ja/pluggable-storage-overview.html

MySQLの標準はMyISAM が使われている。何も考えないと,これが使われていることになる。
いつくかあり,個人的に興味深いものは MEMORYエンジンやCSVエンジンというものがある。
参考:http://dev.mysql.com/doc/refman/5.1/ja/storage-engines.html

MEMORYエンジンとは,その名前のとおり,ハードディスクなどに記憶せずにメインメモリ内だけでやってしまうエンジンだ。
参考:http://dev.mysql.com/doc/refman/5.1/ja/memory-storage-engine.html
物理メモリを大量に積んでやると,いい感じに使えそうだ。

SQL文でテーブル作成時に,ENGINE = MEMORY を後ろに付けると,そのテーブルで使えます。
たとえば

CREATE TABLE t (i INT) ENGINE = MEMORY;

とすれば,テーブルtだけをメモリ上のエンジンとして使える。

CSVエンジンも,名前のとおり,CSVファイルにデータを保存してくれるエンジンだ。
参考:http://dev.mysql.com/doc/refman/5.1/ja/csv-storage-engine.html
テーブルデータファイルの構造は,まんまCSVファイルだ。

SQL文でテーブル作成時に,ENGINE = CSV を後ろに付けると,そのテーブルで使えます。
たとえば

CREATE TABLE test(i INT, c CHAR(10)) ENGINE = CSV;

とすれば,このテーブルtestをCSVファイルで使える。すばらしい。

test.CSV というファイルで保存される。

たとえば,以下のSQL文を実行すれば,

INSERT INTO test VALUES(1,’one’);

test.CSV ファイルの中身は,テキスト形式で

"1","one"

となります。

通常,CSV形式は,データベースにインポートやエクスポートするものだが,
いきなりCSVを書き換える事ができるので,使い方次第では大変便利。もちろん,パフォーマンスは,期待できないでしょうが・・・。

LinuxやUNIX環境では,パーミッションやオーナーの都合でCSVファイルには簡単にはアクセス出来ない。そこは,一工夫必要かも。

普段は,メモリ上のテーブルで作業して,時々バックアップでCSV形式で保存すということもSQL文の組み合わせで可能かと。

そして EXAMPLEエンジンだ。「例」エンジン。
参考:http://dev.mysql.com/doc/refman/5.1/ja/example-storage-engine.html
もっとも基本的なことしかしない。というか,「機能が全くない」。
これらストレージエンジン開発者のための「例」なので,データを追加出来ない。。。
オリジナルのストレージエンジン開発なら,これをベースに作ればよいらしい。

comments

WindowsXPのメインストリームサポートが終了!

WindowsXPのメインストリームサポートが先週終了した。

Windows XP メインストリームサポートの終了
http://www.microsoft.com/japan/windows/products/windowsxp/future.mspx
より

これまでお知らせしてまいりましたとおり、2009 年 4 月 14 日(米国時間) にて、Windows XP メインストリームサポートを終了いたします。

WindowsとUbuntuのサポート期間とソフトウエアの更新の違い でも紹介したとおり,ついにその日が来てしまった。

何も問題が起こらないことを祈りましょう・・・(^^;

また,こういう記事もあります:
企業の80%がVistaを飛ばしてWindows 7へ——ただし、時間を置いて – ITmedia アンカーデスク

によると

 Dimensional Researchの調査では、ほかにも興味深い点がある。
* Windows 7にアップグレードする企業の半数強が、主な理由として「Vistaを避けるため」と答えている
* 調査に参加したIT購買担当者の17%が、Windows 7β1をテストしている
* 企業の14%が別のOSに乗り替えており、そのうち27%がMac、25%がUbuntuを挙げている

アメリカではUbuntuのシェアが増えているみたいですね。
アメリカでの話なので,日本だと事情が違うかもしれません。

そうそう,Ubuntu 9.04 のリリースは,もうすぐですね。
通常版なので,サポート期間は,1.5年です。
2010年10月までサポートされます。
ただ,毎度のごとくリリース直後は不安定なことが多いので様子見がおすすめ。

Ubuntu 8.04 LTS は 2011年4月までサポートなので,まだ,Ubuntu 8.04 の方がサポート期間が長いですね。

comments

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