2008年04月30日

正規表現で、文字列は全て全角カタカナか?のチェック(Java編)


/**
* 文字列が「カタカナ」のみか?
* 参考:
* http://www.unicode.org/charts/PDF/U30A0.pdf
*/

private static final String P_KATAKANA_ONLY = "^[\\u30A0-\\u30FF]+$";

/**
* 全てカタカナか?
* @param str チェック対象文字列
* @return はい:true いいえ:false
*/

public static boolean isKatakanaOnly(String str) {
return str.matches(P_KATAKANA_ONLY);
}

posted by 台北猫々 at 20:07| Comment(0) | TrackBack(0) | 技術メモ(Java)

2008年04月29日

生産性の底上げ

今、考えているのは日本のソフトウエア技術者の生産性を上げるための手助けとして自分に何ができるのか?ということです。

今さらStrutsやRoRのような「フレームワーク」を増やすことは、現場の負担を増加させるだけでしょうし。。。

posted by 台北猫々 at 08:45| Comment(0) | TrackBack(0) | 日記

2008年04月28日

正規表現で、文字列は全て全角カタカナか?のチェック(Python編)


UTF-8対応です。


#全て全角カタカナか?
#Pythonの正規表現で、渡された文字列が全てASCII文字かチェックします。(UTF-8向け)
#Python 正規表現 ASCII文字 UTF8
regexp = re.compile(r'^(?:\xE3\x81[\x81-\xBF]|\xE3\x82[\x80-\x93])+$')
result = regexp.search("あいうえおわいうえおん")
if result != None :
print(u"すべてが全角カタカナである".encode('shift_jis'))
else :
print(u"すべてが全角カタカナではない".encode('shift_jis'))


※標準出力をunicode→SJISに変換しているのは、開発環境がWindows+Eclipseの都合です。Windows+Eclipseのコンソールは、SJISエンコーディングオンリーなので。

posted by 台北猫々 at 23:55| Comment(0) | TrackBack(0) | 技術メモ(Python)

2008年04月27日

今日は掃除など

今日は、急にやる気になったので、早朝から部屋の掃除をしていました。けど、なかなか綺麗にはなりません。。。せめてGW中にはなんとかしよう・・・

あと、なかなか上手く作れなかった肉じゃがを↓のレシピで作ってみました。
「だしも水もいっさい使わない肉じゃが」
http://cookpad.com/miomiokooc/recipe/5629/

これが、結構思い描いている味に近いものができました猫
。今までは、出し汁の量が多すぎていたのかもしれません。引き続き精進しよう。
posted by 台北猫々 at 21:39| Comment(0) | TrackBack(0) | 日記

2008年04月26日

正規表現で、文字列は全て全角カタカナか?のチェック(Perl編)

★★★
正規表現で、文字列は全て全角カタカナか?のチェック(Perl編)


UTF-8対応です。



$str = "アイウエオワイウエオン";
if ( $str =~ /^(?:\xE3\x82[\xA1-\xBF]|\xE3\x83[\x80-\xB6])+$/ ) {
print encode('shift-jis', decode('utf-8', "すべてが全角カタカナである\n"));
} else {
print encode('shift-jis', decode('utf-8', "全角カタカナでない文字がある\n"));
}



標準出力をUTF8→SJISに変換しているものは、開発環境がWindows+Eclipseの都合です。Windows+Eclipseのコンソールは、SJISエンコーディングオンリーなので。
posted by 台北猫々 at 23:20| Comment(0) | TrackBack(0) | 技術メモ(Perl)

2008年04月25日

まあ、ちょっとした傾向みたいな?

code*なにがしにWebアプリのサーバ側のファイルダウンロード処理のロジックを、Java, PHP, Perl, Ruby, Pythonについて投稿したのですが、約1ヶ月半が経過してのアクセス数は、

Java 727件(コメント5件)
PHP 403件(コメント1件)
Ruby 208件(コメント無し)
Perl 216件(コメント2件)
Python 143件(コメント無し)

となっています(投稿した日付がちょっとずれているのと、コメントの有無がアクセス数に影響を与えているかもしれませんが、、、といいつつJavaは一番最後に投稿しています)。

まあ、前提条件が違うので統計的なことは言えないのですが、それでもJava, PHPのアクセス数は多いですね。やっぱり、WebアプリでのJavaとPHPの利用シーンは多いのでしょうね。(リファラーがどうなっているのかは、code*なにがしサーバのアクセスログを見ないと分かりませんが、)

Pythonのアクセス数が少ないのは、コンテンツが日本語なので頷ける結果な気がします(Pythonは海外で人気ですので)。Perlが少ないのは、現在ではPerl-CGIよりも、PHPを選択することが標準になっているということかな?


posted by 台北猫々 at 22:06| Comment(0) | TrackBack(1) | 日記

2008年04月24日

正規表現で、文字列は全て全角カタカナか?のチェック(Ruby編)


UTF-8対応です。



# -* coding: UTF-8 -*-
require 'kconv'

str = "アイウエオワイウエオン"
if str =~ /^(?:\xE3\x82[\xA1-\xBF]|\xE3\x83[\x80-\xB6])+$/
puts Kconv.tosjis("すべてが全角カタカナである")
else
puts Kconv.tosjis("全角カタカナでない文字がある")
end


posted by 台北猫々 at 20:43| Comment(0) | TrackBack(0) | 技術メモ(Ruby)

2008年04月23日

それちょっと違うのでは?

だいぶ昔の記事↓をたまたま読んだのですが、

「第6回 開発存続の危機で分かったSEに必要なスキル」
http://jibun.atmarkit.co.jp/lskill01/rensai/devgenba06/devgenba01.html

「SEにとって本当に必要なスキルとは何ですか」というテーマで実例を挙げて「危機察知能力」が必要なスキルですと、言っているようなのです。

が、実例の内容は単純な、若手にありがちな思い込みによる「報告・連絡・相談」の欠如であって、「危機察知能力」なんて大袈裟なものではないと思うのですよね。。。

まあ、ふと思っただけですが猫
posted by 台北猫々 at 20:44| Comment(0) | TrackBack(0) | 日記

2008年04月22日

Googleからのアクセス数が急に減少

しました。何でだろう?と思ってググッテみると似たようなことを経験している人が他にもいるようです。

そして、しばらくすると元に戻るとのこと。一体に何が起きているのだろう??
posted by 台北猫々 at 22:55| Comment(0) | TrackBack(0) | 日記

2008年04月21日

C++ Boostのインストール(Windows編)

Boostの正規表現機能を使うために、Boost環境を構築しましたので、メモ。

前提条件:
・WindowsXP SP2
・VisualC++ 2005

1.インストーラー入手
Boost Consulting
http://www.boost-consulting.com/products/free
から、「BoostPro Binary Installer for Visual C++」をダウンロードします。
(本稿では、BoostPro 1.34.1 Installer (188K .exe)を使用します。)

2.Boostをインストール
ダウンロードしたインストーラー(boost_1_34_1_setup.exe)適当なフォルダにコピーして、
ダブルクリックして起動します。

以下のように対話方式でインストール操作を行います。
BoostInstall01.jpg

BoostInstall02.jpg

BoostInstall03.jpg

BoostInstall04.jpg

BoostInstall05.jpg
とりあえず全部入れちゃいます!

BoostInstall06.jpg
本稿では、"C:\usr\local\boost\boost_1_34_1"にインストールします。

BoostInstall07.jpg

BoostInstall08.jpg
「はい」をクリックして、PATHの設定を行います。

BoostInstall09.jpg

3.VisualC++ 2005の設定

「ツール」→「オプション」→「プロジェクトおよびソリューション」→「VC++ディレクトリ」→ 「ディレクトリを表示するプロジェクト」→「インクルード ファイル」に C:\usr\local\boost\boost_1_34_1 を加える。

BoostInstall10.jpg

「ツール」→「オプション」→「プロジェクトおよびソリューション」→「VC++ディレクトリ」→ 「ディレクトリを表示するプロジェクト」→「ライブラリ ファイル」に C:\usr\local\boost\boost_1_34_1\lib を加える。

BoostInstall11.jpg

完了です!
posted by 台北猫々 at 18:48| Comment(0) | TrackBack(0) | 技術メモ(Windows C/C++)

2008年04月20日

正規表現で、文字列は全て全角カタカナか?のチェック(PHP編)


UTF-8対応です。



$str = "アイウエオワイウエオン";
if (preg_match("/^(?:\xE3\x82[\xA1-\xBF]|\xE3\x83[\x80-\xB6])+$/", $str)) {
echo "すべて全角カタカナである"."<br>\n";
} else {
echo "すべて全角カタカナではない"."<br>\n";
}

posted by 台北猫々 at 21:48| Comment(0) | TrackBack(0) | 技術メモ(PHP)

2008年04月19日

正規表現で、文字列は全て半角カタカナか?のチェック(なでしこ編)


「アイウエオワイウエオン」を「^[ア-ン゙゚]+$」で正規表現マッチ
それで条件分岐
 空ならば
  「すべてが半角カタカナではない」と表示
 違えば
  「すべてが半角カタカナである」と表示

posted by 台北猫々 at 20:40| Comment(0) | TrackBack(0) | 技術メモ(なでしこ)

2008年04月18日

プログラミング言語比較の巻(3)

RubyとJavaについて

Rubyは、正直たいしたものだと思います。洗練されたオブジェクト指向というのでしょうか。プログラミングを楽しめる言語いうのも頷けます。欲しいメソッドが欲しいインスタンスに準備されているのですよね。

ただ、贅沢なことをいうと、Rubyに型宣言(変数宣言時の型を指定すること)が付けば、いいなあと思います。

私は、ふと思ってしまうのです。スクリプト言語に多くある型宣言をしなくていいということで、本当にプログラミングは楽になっているのだろうか?と。実はデメリットの方が大きいのでは?と。

というのは、型宣言がないとIDE(統合開発環境)の効果がほとんどなくなってしまいます。静的なエラーチェックや、候補表示による入力支援などできないですからね。(一部、PHPなどでは、コメント内に変数の型をアノテートすることで入力支援が可能になるものもあるようですが、実際やるとなると厳しいなあと)

私は、ここ数年で最もプログラマーを助けたのは言語やフレームワークではなく、Eclipseだと思っています(Javaに限ってしまいますが)。Eclipseの入力支援、リファクタリング、文法チェックなどの機能は卓越していると思います。これらの機能により、プログラマーが覚えておかなければならないことが軽減するからです。

JavaとRuby、StrutsとRailsを比較すれば、Ruby側の方が生産性が高いかと思いますが、これにEclipseが加わった場合はどうでしょう?ある程度の規模になった場合は、Javaの方が結局生産性が高くなると思います。

近年、開発技術は複雑化の一途を辿っています。そういった情勢の中で、IDEの存在は必要不可欠なものになっているといえます。
なので、RubyがもっとIDEとの相性が良くなってくれればなあ、などと思ってしまう今日このごろです。猫

posted by 台北猫々 at 22:47| Comment(0) | TrackBack(0) | コラムみたいな

2008年04月17日

正規表現で、文字列は全て全角カタカナか?のチェック(なでしこ編)


「アイウエオワイウエオン」を「^[ア-ン]+$」で正規表現マッチ
それで条件分岐
 空ならば
  「すべてが全角カタカナではない」と表示
 違えば
  「すべてが全角カタカナである」と表示

posted by 台北猫々 at 21:07| Comment(0) | TrackBack(0) | 技術メモ(なでしこ)

2008年04月16日

プログラミング言語比較の巻(2)

私の独断と偏見で、「業務SE・PG向けのコア技術として習得すべき言語5選」を選出しました。

ちなみに私が使える言語は、C, C++, Java, PHP, Perl, Ruby, Python, BShell, COBOL, VB, VC++, HTML, JavaScriptです。


「業務SE・PG向けのコア技術として習得すべき言語5選」
1.C言語
2.Java
3.PHP
4.Ruby
5.HTML

1.業務アプリでC言語を使用することは、最早少ないかもしれないので、実際に仕事で使用することはないかもしれないのですが、コンピュータ・ネットワーク・プログラミングの基礎をおさえるという意味では、やはり習得しておきたい言語です。他の言語と比較して、低レベルのインタフェースを持っているため、バイナリデータや生ソケットを自由に扱えるというのは、技術への理解を深めるためには最適なものです。また、C言語を習得しておくと制御系への転身のチャンスもできるという副産物もあります。

2.Javaについては、多くを語る必要は無いように思えます。言語の特徴というより、シェアが最大の理由です。

3.PHPの「Webアプリ作成のための言語である」という特徴はやはり無視できないものです。言語開発のベクトルが明確なだけ、他の言語と比較して標準装備されている関数などが、Webアプリ開発に関して充実しています。「何にでも使えるように作ったものは、何に使う時にも微妙に不便になってしまうの法則」に縛られていないということですね。また、1次情報・2次情報ともに充実しているということも大きいです。

4.コンパイルを必要としない手軽なコマンドを作成できるスクリプト言語を1つ習得しておくべきでしょう。候補としては、Perl, Python, Rubyがあるのですが、私はRubyを挙げます。Perlについては、増改築を繰り返した老舗旅館、もしくは進化の袋小路(多くの省略記号は、本当にメンテナンスを含めた生産性を上げているのか?)というイメージがあるので、除外。残るPythonとRubyを比較すると、Rubyの方が後発である分、言語仕様が良くできている(例外処理やブロック)こと、さらにRubyが国産であることからRubyを選択しました。私的には、「Ruby on Rails」の存在よりも言語仕様の方に魅力を感じました。

5.HTMLについても、多くを語る必要はありませんね。知らなければお話にならないです。

挙げませんでしたが、C++も余裕があれば習得しておきたいところです。C言語を包含しているオブジェクト指向言語という点です。ともすれば、速度性能面が問題になりがちなオブジェクト指向で、場合によりC言語を使用して速度を出すことができるという柔軟性は魅力です(私の場合、ソフトウエアのコアエンジンを担当する場合が多かったので。昔、プロジェクトの方針でC++で作成していたエンジンを、速度UPのために大部分をC言語に書き換えたこともありました)。

あと、Windowsローカル言語(VB, VC++, C#など)は挙げませんでした。プラットフォームに依存する言語をコア技術とするのは知識や仕事の幅を狭めてしまうと考えているからです。また、挙げた4つの言語を習得していれば、後でWindowsローカル言語を覚えるのは、さほど難しくないと思っています。
posted by 台北猫々 at 20:25| Comment(0) | TrackBack(0) | コラムみたいな

2008年04月15日

正規表現で、文字列は全て平仮名か?のチェック(Ruby編)


UTF-8対応です。



# -* coding: UTF-8 -*-
require 'kconv'

str = "あいうえおわいうえおん"
if str =~ /^(?:\xE3\x81[\x81-\xBF]|\xE3\x82[\x80-\x93])+$/
puts Kconv.tosjis("すべてが全角ひらがなである")
else
puts Kconv.tosjis("すべてが全角ひらがなではない")
end



※標準出力をutf8→SJISに変換しているのは、開発環境がWindows+Eclipseの都合です。Windows+Eclipseのコンソールは、SJISエンコーディングオンリーなので。

posted by 台北猫々 at 19:31| Comment(0) | TrackBack(0) | 技術メモ(Ruby)

2008年04月14日

正規表現で、文字列は全て平仮名か?のチェック(なでしこ編)


「あいうえおわいうえおん」を「^[あ-ん]+$」で正規表現マッチ
それで条件分岐
 空ならば
  「すべてが全角ひらがなではない」と表示
 違えば
  「すべてが全角ひらがなである」と表示
posted by 台北猫々 at 19:03| Comment(0) | TrackBack(0) | 技術メモ(なでしこ)

2008年04月13日

正規表現で、文字列は全て平仮名か?のチェック(Perl編)



文字エンコーディング:UTF8対応です。

$str = "あいうえおわいうえおん";
if ( $str =~ /^(?:\xE3\x81[\x81-\xBF]|\xE3\x82[\x80-\x93])+$/ ) {
print encode('shift-jis', decode('utf-8', "すべてが全角ひらがなである\n"));
} else {
print encode('shift-jis', decode('utf-8', "すべてが全角ひらがなではない\n"));
}
#↓
#"すべて全角ひらがなである"



※標準出力をutf8→SJISに変換しているのは、開発環境がWindows+Eclipseの都合です。Windows+Eclipseのコンソールは、SJISエンコーディングオンリーなので。

posted by 台北猫々 at 20:18| Comment(0) | TrackBack(0) | 技術メモ(Perl)

2008年04月12日

正規表現で、文字列は全て平仮名か?のチェック(Python編)


文字エンコーディング:UTF8対応です。



regexp = re.compile(r'^(?:\xE3\x81[\x81-\xBF]|\xE3\x82[\x80-\x93])+$')
result = regexp.search("あいうえおわいうえおん")
if result != None :
print(u"すべてが全角ひらがなである".encode('shift_jis'))
else :
print(u"すべてが全角ひらがなではない".encode('shift_jis'))



※標準出力をUnicode→SJISに変換しているのは、開発環境がWindows+Eclipseの都合です。Windows+Eclipseのコンソールは、SJISエンコーディングオンリーなので。
posted by 台北猫々 at 04:00| Comment(0) | TrackBack(0) | 技術メモ(Python)

2008年04月11日

正規表現で、文字列は全てASCII文字か?のチェック(なでしこ編)


「 abcdefghijklmnopqrstuvwxyz!#$&'()[]@」を「^[\x20-\x7E]+$」で正規表現マッチ
それで条件分岐
 空ならば
  「すべてがASCIIではない」と表示
 違えば
  「すべてがASCIIである」と表示
posted by 台北猫々 at 04:00| Comment(0) | TrackBack(0) | 技術メモ(なでしこ)