チェックデジット(モジュラス11用)の計算
/** * チェックデジット計算処理をします。(モジュラス11用) * <p> * 1.チェックデジット対象文字列を個々の数値に分解しウェイトを掛ける<br> * 2.ウェイト掛けた後の数値をすべて足す。<br> * 3.足した結果をモジュラス(11)で割り余りを求める<br> * 4.チェックデジットを求める<br> * 4-1. 3の余りが0または1の場合、0を保持する。<br> * 4-2. 3の余りが0または1以外の場合、11より余りを差し引いた値を求め保持する。<br> * 5.4で求めたチェックデジットをString型にして返却する。<br> * @param value チェックデジット対象文字列 * @param maxlength 最大桁数 * @return String チェックデジット */ public static String getCheckDigitModulus11(String value) { value = reverse(value); int maxlength = value.length(); String checkDigitValue = null; long modulus11 = 11; // 分割後の文字列格納変数 long divisions[] = new long[maxlength]; // チェックデジット対象文字列を個々の数値に分解し、ウェイトを掛ける for (int i = 0; i < maxlength; i++) { long division = 0; division = Long.parseLong(value.substring(i, i+1)); // 配列の添え字が偶数のときは1を掛けて奇数のときは3を掛ける divisions[i] = division * (i % 6 + 2); } // 分割した数値をすべて足す long plusValue = 0; for (int i = 0; i < maxlength; i++) { plusValue = plusValue + divisions[i]; } // 足した結果をモジュラス(11)で割り余りを求める long remainder = 0; remainder = plusValue % modulus11; if (remainder == 0 || remainder == 1) { checkDigitValue = String.valueOf(0); } else { checkDigitValue = String.valueOf(11 - remainder); } return checkDigitValue; } /** * 文字列を逆順にして返す * @param str 文字列 * @return 逆順にした文字列 */ public static String reverse(String str) { //反転した文字列(返り値) String ret = ""; //文字列を反転する int length = str.length(); for(int i = length - 1; i >= 0; i--) { ret += str.charAt(i); } //反転した文字列を返す return ret; }
MapでIteratorを使用する良い方法
private void print(){ Map<String, String> map = new HashMap<String, String>(); map.put("aaa", "1"); for (Iterator it = map.entrySet().iterator(); it.hasNext();) { Map.Entry entry = (Map.Entry)it.next(); System.out.println(entry.getKey()); System.out.println(entry.getValue()); } }
Iteratorの要素を元に戻す
private void print(){ List<String> list = new ArrayList<String>(); list.add("sample"); Iterator iterator = list.iterator(); while(iterator.hasNext()) { System.out.println(iterator.next()); } //これで元に戻る iterator = list.iterator(); while(iterator.hasNext()) { System.out.println(iterator.next()); } }
インスタンス変数をクールなやり方で初期化する
Java 5以降なら…
Listの初期化
class SampleList{ private List<String> list = Arrays.asList(”aaa”, ”bbb”, ”ccc”); }
Arrays.asList()で生成されるListは不変らしい。
RumixでRubyを簡単インストール
最近では、Windows環境にRubyをインストールする際はRumixなんでしょうか。
One-Click Ruby Installerとの違いが気になりますが配布サイトでは次のように紹介されています。
One-Click Ruby Installerとの違い
Rumixと同じようなパッケージとして、One-Click Ruby Installerが存在します。 One-Click Ruby Installerは、Windows環境へrubyおよび関連ツールを一度にインストールしてくれるという点で、 Rumixと構成・コンセプトがよく似ており、Rumixが大きな影響を受けたプロジェクトでもあります。
RumixとOne-Click Ruby Installerの間には、次のような違いがあります。
- One-Click Ruby Installerが基本的に英語圏向けのパッケージであるのに対し、Rumixは日本語圏向けのパッケージです。 インストーラでの解説が日本語だったり、同梱のリファレンスマニュアルが日本語だったりします。
- パッケージ構成がやや異なります。たとえば、Rumixにはコマンドラインシェル(NYAOS)が含まれていますが、One-Click Ruby Installerにはシェルが含まれていません。 逆に、One-Click Ruby Installerに含まれているテキストエディタ(Notepad++/SciTE)や、英語版のリファレンスなどは、Rumixには含まれていません。
- Rumixインストーラは、環境変数RUBYOPTに
-rubygems
を追加しません。
ダウンロードはこちらから
インストールは非常に簡単で、zipを解凍して、rumix_install.exeをキックするだけです。
一つ疑問ですが、ruby-mode.el等のlispは同梱されていないのでしょうか。
これがないとかなり困るんですが。
VLフォント良いです
配布サイトでは次のように紹介されています。
- M+ FONTS PROJECT による M+1C および M+1M フォントを英数字、かな、および 一部の漢字(教育漢字を含む約1725文字)に使用
- 不足部分の一部(約2207文字)をProject Vine の 鈴木大輔が M+ の漢字部品を元に新規に 製作したものを使用
- 残りの部分 Electronic Font Open Laboratory による さざなみゴシックフォントをベースに Project Vineが改変したもので補填
- Latin 1 Supplement を含む一部の文字、記号をM+の英数などの部品を 元に作成したものを追加(VLGothic)
- 全角記号の一部を新規に作成し追加
- ギリシャ文字をSans-serif風に修正
の作業を行った、モダンゴシック体の日本語 TrueType フォントです。
ダウンロードはこちらから
以前MeadowではIPAフォントを使用していましたが、Windows版GNU Emacsを使用するにあたり気分的にフォントもチェンジしました。
なかなか良い感じです。
フォントサイズが10ポイント程度だと、"~"(チルダ)が"-"に見えるのはご愛嬌。フォントサイズを上げれば問題ありません。
しばらくはVLフォント使ってみます。
.emacs.elのフォントの設定部分のみ抜粋
(cond ( (string-match "^23\." emacs-version) (cond (window-system (set-default-font "VL Gothic-13") (set-fontset-font (frame-parameter nil 'font) 'japanese-jisx0208 '("VL ゴシック" . "unicode-bmp")) ))))