2011年2月10日木曜日

ブログについて!

今後は技術的な記事もメインアカウントの新庄 航のアメブロに移行します。。


いままでありがとうございました(゜∀゜)

2011年1月12日水曜日

Linuxプログラミングの準備

あけおめ・・・だった(汗)


今年のチームテーマは『作る』ってことで、さっそく僕もプログラム作るぞ!

ふつうのLinuxプログラミング』(ソフトバンククリエイティブ)って本を買ったので、それにそって最終的にHTTPサーバを作ってみようかな♪

プログラマの必須ツール、テキストエディタ☆
いろいろ面倒だったりするので(笑)Vimを使ってみよう!←

WEB+DB PRESS vol.52 2009』の特集「Vimの流儀」をパラ見しながら、とりいそぎタブ幅を4桁にするように設定してみたよ・o・

といっても設定ファイルとかソースコード以外のファイルを編集するときはタブ幅は8桁にしておきたいので、ファイル種別(拡張子)別に設定する方法を試してみた。

まずは、~/vimrcに以下の設定を追加する。
filetype plugin indent on  "ファイルタイプ別の設定(インデント)
「"」以降はコメント。

ファイル種別ごとの設定は以下のファイルに…
~/.vim/after/ftplugin/c.vim (C言語ソースファイルの場合)

インデントの設定は以下のファイルに…
~/.vim/after/indent/c.vim  (C言語ソースファイルの場合)

今回はインデントの設定のみなので、c.vimに以下の設定を追加する。
setlocal tabstop=4
これで完了☆

『WEB+DB PRESS』にはタブを空白に置換する場合の設定が書いてあったよ〜こんな感じ…
setlocal expandtab
setlocal shiftwidth=2
setlocal softtabstop=2
HTMLファイルのときはこれもいいかもな♪

ちなみに僕が開発用に借りているサーバはNTT-PC WebARENA PRO☆
OSはCentOS5でデフォルトでインストールされているVimはversion 7.0.237☆

カラーシンタックスがデフォルトで入ってたのでキャプチャはこんな感じ!
タブ幅を4桁にした例

2010年12月6日月曜日

Printopia for Mac

最近iPadを買った・o・


技術者には「大きなiPhone」より「小さなMacBook」が適してるという思いがあってずっと敬遠してたんだけど、小さなプレゼン用にKeynoteだけでも使ったら便利かなとおもって…


そしたらけっこう使い道があることに気づいて、たとえばMacBook Airで作業しながら ついっぷる でツイッターを眺めたり、メールを確認したり…


僕は紙派?なのでけっこう紙に印刷して参照したりするんだけど、まさにそのときの紙感覚でiPadって使えるんだぁ〜という贅沢な(笑)


この前、総務省の任意団体の作り方のPDFがあまりにもページ数多すぎて「もう印刷はやめよう」と、とりまpdf-notesを入れてiPadで読むことにしたんだけど…


読んでると今度はどうしてもここだけはプリントしたいっていうページが出てきて、全然、気にもとめてなかったiPadの印刷機能に注目し始めた☆


どうやらAirPrintっていうWi-Fi経由の印刷機能が備わっているってことだったんだけど、僕のプリンタには対応してない…というかbluetoothだし(汗)


そこで発見したのが(前置き長げぇーよ!笑)


Printopia for Mac



MacBook Airのほうでプリンタを共有しておけば、iPadから直接プリントアウトできる☆
PDFファイルにしてMacに送信することもできるんだ。


これってウィンドウズのプリンタ共有にも対応してるんだろうか…


ま、どっちにしても僕がMacを持たずに外に出ることは当分なさそうだけど。



2010年9月20日月曜日

後輩キャラで…『語らないったー』

わたる兄(中の人は同じとかw)が考えた

フィルタリング機能付きツイッター・ブログパーツ

『自分のことは語らないったー』を僕が作っていくことになりました(`・ω・´)ゞ

wikiページを作ったのでよろしくね★

そうそう、わたる兄はアメブロ用こえ部パーツも作ってるけど…Bloggerにはフツーに貼れちゃうのかな?


そんなことより僕のブログにも『語らないったー』貼らなきゃいけないじゃないか∩`・◇・)

2010年5月11日火曜日

ファイル、ディレクトリだけを chmod する方法

ファイル、ディレクトリだけを chmod する方法

ファイル:
  find . -type f -print | xargs chmod 664

ディレクトリ:
  find . -type d -print | xargs chmod 775

2008年6月24日火曜日

[Java]ローカル変数に対するfinalの意味

Javaで、ローカル変数にfinalを付けると、その変数は変更されないということを保障します。
では、変更しないローカル変数には全てfinalを付けるべきなのでしょうか?

今回は、必ずfinalを付けざるを得ない、以下のコードのような場合を考えてみたいと思います。


class DisplayImpl implements Display {
private JFrame frame;

public DisplayImpl(int width, int height) {
final Dimension size =
new Dimension(width, height);

// ① finalで宣言

frame = new JFrame() {
Dimension getPrefferedSize() {
return size;
// ② finalでないと参照できない
}
};

size.height = 5; // ③ OK

size = null; // ④ コンパイル・エラー
}
}

JFrameを派生した内部無名クラスからローカル変数sizeにアクセスする場合、final宣言が必要です。

これは評価のタイミングで、無名クラスが生成されるタイミングが、コードの順番どおりという訳ではないので、例えば、④のようにnullを代入してしまうと、冒頭でnewしたDimensionオブジェクトを参照していいのか、nullを代入したあとの値を参照していいのかの判断がつかないためだと思われます。

しかし、Javaではプリミティブ型以外は全て参照ですので、参照先を変更する(③のような)コードならOKなのです。

ソースコードを検査するあるツールを入れたりすると、変更していないローカル変数にfinalが付いていない旨のエラーがでることがあります(設定次第)。

そうなると、参照型のローカル変数というのは大抵、finalを付けないといけないということになってしまいます。

同じローカル変数に何度も別のオブジェクトを割り当てたり、わざわざnullを設定するようなことが少ないからです。

結論として、個人的なルールとしてはローカル内部クラスか無名内部クラスからアクセスする場合のみfinalを付けるという方針をとることにしました。

『プログラミング言語Java 第4版』P151にも、同様の意見が書かれていました。

2008年6月18日水曜日

.svnフォルダの削除(メモ)

削除したいディレクトリに移動して、以下のコマンドを実行。

for /R %i in (.svn) do rd /Q /S "%i"


↑普段はsvn exportを使えば良いのですが、バックアップの削除のときなどに。

2008年6月17日火曜日

メイリオ on Emacs-22


メイリオというフォントがあるようですね。Windows Vistaのフォントだそうで…
Vistaは仕事関係でもまったく縁がないので触ったこともないですが、このフォントだけ欲しいなと思い探しました。

理由は、前々からWindowsにはClearTypeというフォントを滑らかにする機能があるのを知っていて、使いたかったのですが、ビットマップフォントには効かないのだそうで…

MS明朝やMSゴシックでは、16ポイント以下のフォントがビットマップになってしまうので(回避する方法はあるようですが)、メイリオならと思った訳です。

それともうひとつ、こちらのほうが大事ですが、Emacs-22の日本語フォントが汚くて…いろいろ物色していたらメイリオに出会ったという訳です。

nobさんのサイトを参考に設定しようとしましたが、Windows版のEmacs-22の設定ファイル(.emacs)がどこにあるのか(どこに作るのか)分からなくて断念。

ブラウザのデフォルトフォントをメイリオにして気分を変えてみましたが、今日はここまで^^;

ちょっとお休み

実は、Emacsを自宅のMacBookにもインストールしたのでそのレポートを書きたかったのですが、自宅でゆっくりブログを書く時間がなくてなかなか進まなかったのです^^;

昨日から客先の僕のPCが新しくなって、今、入れ替え作業中です。

この前まで、C#.NETにどっぷり浸かっていた僕ですが、今週からは一転、Javaの仕事になります。
流行でいうとEclipseを使うところなのですが、NetBeans IDEが無償になっているので、一度、検証してみました…

が、無償で付いてきてリバース/フォワードエンジニアリングも対応しているUMLエディタに期待していたのに、モデリングツールとしても並以下(根拠はまたいずれ…)だし、何といっても印刷機能が貧弱すぎる。

バグじゃないのかとすら思えます。
まず、まともに印刷できないですから。。なんかちっちゃくなります^^;

画像出力にも対応しておらず、コピーしてワードに貼り付けたりしてみましたが、文字が潰れてしまってまったく駄目!

今、次のUMLデザイナを探してますが、Eclipseプラグイン形式のものが多く、やはり開発環境としてもEclipseを使うことになりそうです。

そんな中でも、テキストエディタというのは必要なもので、なんでもかんでもEclipseのエディタで開くわけにいかないですし、Eclipseプロジェクトとは紐付かないテキストファイルを開いたり、検索したり、編集したりするのに、軽くて便利なテキストエディタは欠かせません。

いつもWindowsのときは秀丸エディタを使っているのですが、マシンの入れ替えを機にEmacsにチェンジしようかなと考えています。

かなり、突飛な考えですが、そうでもしないとEmacsの操作を覚えられないだろうと思うので…

2008年6月4日水曜日

書籍

プログラミング in OCaml ~関数型プログラミングの基礎からGUI構築まで~』買ってしまいました。
できるだけお金をかけないで…と思っていたのですが、言語を覚えるのに何か一冊、やはり、書籍としてまとめられたものがないと辛いと感じました。
(インターネットが普及してからプログラマになった世代の人たちには不要なのでしょうか?)

2008年5月23日金曜日

Emacsのインストール

Obtaining/Downloading GNU Emacsにアーカイブの取得方法が書いてあります。


Windows用のバイナリはFTPサーバのwindowsディレクトリにあります。

そのときの最新は、22.2でしたのでemacs-22.2-bin-i386.zipをダウンロードしました。
因みに、emacs-22.2-barebin-i386.zipは、LispコードとドキュメントがないバージョンだということがREADMEに書かれています。
(Windows版に関しては、GNU Emacs FAQ For MS Windowsを参照するようにも書かれています...まだ、読んでません(^_^; 個人的にはCombined on one pageのほうが見やすいと思います)

ダウンロードが完了すれば、あとはインストールと言っても、好きなフォルダに解凍するだけ。
「Program Files」など空白を含むフォルダだと無用なトラブルに巻き込まれないとも限らないので、僕は「C:\usr\emacs-22」に解凍して使ってます。

binフォルダ内のemacs.exeをダブルクリックで起動するのですが、ショートカットを作っておくといいでしょう。

余談ですが、僕はアンチ・マイクロソフトです! いや、本当に...

2008年5月22日木曜日

C#のインターフェース

さっき、他人のサンプル見てて、見つけたんですが、
C#で、


public interface IPlugin
{
void InitializePlugin();
}

のような、インターフェースを実装するクラスで、

public void InitializePlugin()

のように書くところを、

void IPlugin.InitializePlugin()

と書けるようです。

それなら、

void IPlugin.Initialize()

と書いて、名前の衝突を気にすることなく、短いメソッド名が使えるということですね!?

今さら気付いたか...ですか(^_^;

DataGridView::RowFilter特殊文字のエスケープ

DataColumn.Expression プロパティ (System.Data)に記されているのですが、分かりづらいのでまとめてみました。
(実際のコードでしまします)


class EscapePair
{
public EscapePair(char specialChar, string prefix, string surfix)
{
SpecialChar = specialChar;
Prefix = prefix;
Surfix = surfix;
}
public char SpecialChar;
public string Prefix;
public string Surfix;
}

// ~ ( ) # \ / = > < + - * % & | ^ ' " [ ]
private EscapePair[] EscapePairs = new EscapePair[]
{
new EscapePair('~', "[", "]"),
new EscapePair('(', "[", "]"),
new EscapePair(')', "[", "]"),
new EscapePair('#', "[", "]"),
new EscapePair('\\', "[", "]"),
new EscapePair('/', "[", "]"),
new EscapePair('=', "[", "]"),
new EscapePair('>', "[", "]"),
new EscapePair('<', "[", "]"),
new EscapePair('+', "[", "]"),
new EscapePair('-', "[", "]"),
new EscapePair('*', "[", "]"),
new EscapePair('%', "[", "]"),
new EscapePair('&', "[", "]"),
new EscapePair('|', "[", "]"),
new EscapePair('^', "[", "]"),
new EscapePair('\'', "[\'", "]"), // 注意:シングルクォーテーションは二つ並べる
new EscapePair('"', "[", "]"),
new EscapePair('[', "[", "]"),
new EscapePair(']', "[", "]"),
};

private string EscapeSpecialChar(string text)
{
StringBuilder src = new StringBuilder(text);
StringBuilder dst = new StringBuilder(text.Length * 2);

for (int i = 0; i < src.Length; i++)
{
bool escaped = false;

foreach (EscapePair ep in EscapePairs)
{
if (src[i] == ep.SpecialChar)
{
dst.Append(ep.Prefix);
dst.Append(src[i]);
dst.Append(ep.Surfix);
escaped = true;
break;
}
}

if (!escaped)
{
dst.Append(src[i]);
}
}

return dst.ToString();
}

HaloScan...

HaloScanをインストールしました。

Blogger(このブログ)にはトラックバックの機能がないのです(・oT)

さっき参考にさせてもらったピーコ@げてもの...ぢゃない...おすぎ@にせものさんのブログに愛のトラックバックを送りたかったのですが、そういえば、Wikipediaにそう書いてあったような(^_^;

という訳で、「blogger trackback」とググって、同じBloggerらしき@akaさん(カスタマイズばりばりでカッコいいんだから(*^o^*))の記事に辿り着きました!

@akaさんいわく、「打つのが面倒」だそうですが、何とか僕のラブコールはおすぎさんに届いたようで...あ、@にせものさんね(^_^;

承認していただけるかどうか...

C# .NET Bitmap シリアライズ

プラグインベースのシステムを作っていて、
あるプラグインから別のプラグインにビットマップオブジェクトを渡す必要ができました。

GUIは基本的にC#で組んでいるのですが、システム全体がC言語も含むので、
プラグイン同士のデータの受け渡しは、(もちろんカプセル化して)メモリブロックを使っています。

メモリレイアウトを規約で決めて、お互いがレイアウトを知っているという前提で読み書きしているのですが、やっぱり、予想通り、.NETのオブジェクトをそのまま渡したいケースが出てきてしまったという訳で、

「C# .NET Bitmap シリアライズ」でググってみたところ、

おすぎ@にせものさんのブログに「XMLシリアライズ時にビットマップも含める」という記事があり、参考にさせてもらいます。

なんだか、スマートな感じにbyte配列に変換しています。
無論、逆変換もできるのでしょう♪

真似して以下のようにしてみました。
Load and Save objects to XML using serializationを参考にされたということです...時間と気力があれば見てみたいとおもいます(^_^;)


public Bitmap Picture{ get { return _picture; } set { _picture = value; } }
private Bitmap _picture;

public byte[] PictureByteArray {
get {
if (Picture != null) {
TypeConverter BitmapConverter =
TypeDescriptor.GetConverter(Picture.GetType());

return (byte[])BitmapConverter.ConvertTo(Picture, typeof(byte[]));
} else {
return null;
}
}
set {
if (value != null) {
Picture = new Bitmap(new MemoryStream(value));
} else {
Picture = null;
}
}
}

2008年5月21日水曜日

OCamlしたいのに...Emacs!?

OCamlというのは今はやりの関数型言語(Objective Caml-Wikipediaをみてね)。

オキャムルと読むらしい。
ラクダの表紙の入門書があったりするのは、その発音がCamel(ラクダ)と同じだからとか違うとか...たしかにCamelのeはあいまい母音だから本当はキャメルじゃなくて、キャムルのほうが近いのかな?

それならば、僕はOCamlはオゥキャムルと発音したいと強く主張する!
主張はするけど、検索に引っ掛からなくなるので、ま、オキャムルということで(^_^;

ところで、今日から勉強開始なのに、今、Emacs Tutorial(Emacs入門ガイド)やってます(^_^;

前出のラクダ本『プログラミング in OCaml ~関数型プログラミングの基礎からGUI構築まで~』を著された五十嵐先生のウェブサイト「Objective Caml入門」を羅針盤に、いざ出航!

って、意気込んでたら、「Emacsエディタでのプログラム編集/実行のための設定を行う」と...