もともと、アクセス対策はしてなかったとはいえ、この現象の原因は、ちょっと気になっている。SyntaxHilighterに対応して、古い記事のカテゴリ、記事を修正したあたりだろうか…。
2010年9月21日火曜日
2010年9月2日木曜日
親指シフト入力の環境2010
親指シフト環境については今まで何度か試してきたが、今日見かけたエントリで
以前に一度お試しで、Google日本語入力については、インストールしていたが、
今回インストールし直した。
それ以外については、上記のエントリで、最低限の設定については知ることができる。
blechmuzik氏によるDovorakJのページは、こちら。
細かい操作方法で気になる点はある─GoogleIMEとDovorakJの両方の設定の問題と思われるが─ので、別途エントリをあげようと思う。
が、この環境は、これはまったくすばらしい。
なにより、これでやっと、糞のようなMS-IMEから、完全に開放される!!
Google日本語入力+DvorakJ(キーボード配列の設定変更ソフト)
が、最強だとわかったので、以降コレで通そうと思う。以前に一度お試しで、Google日本語入力については、インストールしていたが、
今回インストールし直した。
それ以外については、上記のエントリで、最低限の設定については知ることができる。
blechmuzik氏によるDovorakJのページは、こちら。
細かい操作方法で気になる点はある─GoogleIMEとDovorakJの両方の設定の問題と思われるが─ので、別途エントリをあげようと思う。
が、この環境は、これはまったくすばらしい。
なにより、これでやっと、糞のようなMS-IMEから、完全に開放される!!
ラベル:
CT-ライフハック・GTD,
DvorakJ,
Google日本語入力,
IME,
todo,
Windows,
やまぶき,
親指シフト,
親指ひゅんQ
2010年8月23日月曜日
ExcelVBA漢数字を数値に変換するマクロ
Sep. 2nd, 2011追記:久々に見なおしてみたら、千、百、十などの小さなくらいの処理にバグを見つけた。修正したものを github に格納している。下記のコードも更新した。
またこの修正に伴い、新たに、壱萬などの漢字表記による漢数字もサポートする仕様追加を行った。
官公庁の発表している文書を読んでいるときに、グラフにしてみたいデータが有っ
た。そのデータ部分をコピペで、Excelに張り付けていた。
ところが、そのデータは漢数字で表記されていたのだ。当然このデータは、セル
上で文字列(String)として認識される。グラフを作成するのためには、数値デー
タが必要だ──漢数字を、いちいち手打ちで数値に修正するのはバカバカしい…
下向いちゃうし。
このような思いから、Excelで、漢数字を数値に変換する方法についてぐぐってみたところ、似たようなニーズがあったようで、いくつか参考となるVBAマクロを見つけることができた。
しかし、この例の場合は
- 4桁までの数字+位を表す漢数字という形式
- 位が固定
- データの指定方法がセルのみ
などの点で、一般性にかけるように思われた。
そこで、当方で
- 二千十、二〇一〇、2千十、いずれの表記も可
- 〇~京の単位まで、柔軟に使用可
- 引数は、セル、もしくは文字列いずれも使用可
であるような、マクロ関数(Function): STRINGNUMBER を作ってみた。
Attribute VB_Name = "KanNum" '''' KanNum.bas ' ' 'Author: mephistobooks (http://voidptr.seesaa.net) 'Date: 2010 Aug. 13 'Updated: Sep. 1st, 2011 bugfix (千, 百, 十) ' ''' as use stricts in Perl; Option Explicit 'Private Const DEBUG_KANNUM = True Private Const DEBUG_KANNUM = False 'NAME ' STRINGNUMBER ' 'SYNOPSIS ' =STRINGNUMBER(v) ' v は、漢数字で書かれた、セルまたは文字列 ' ' 'DESCRIPTION ' 漢数字を数値に変換する。数値を漢数字に変換する関数:NUMBERSTRING の逆を行う。 ' 漢数字は、京の単位まで指定できる。 ' 漢数字の指定方法は、セルまたは文字列で指定できる。 ' 漢数字の表記は、下記の例のいずれにも対応: ' ' 例. ' STRINGNUMBER("一九七六") => 1,976 ' STRINGNUMBER("千九百七十六") => 1,976 ' STRINGNUMBER("56万3千") => 563,000 ' STRINGNUMBER("参阡伍百萬壱拾") => 35,000,010 ' 'REFERENCES ' Q.“Excelで漢数字を数値に変換する方法を教えてください。” ' http://q.hatena.ne.jp/1268555767 ' Public Function STRINGNUMBER(ByVal varcl As Variant) As Variant ''' Dim str As String 'kanji-number string (working variable) Dim str_org As String 'kanji-number string (original) ' Dim tmp As String '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''' (0) Initialize the variables ' tmp = TypeName(varcl) If DEBUG_KANNUM Then Call MsgBox("TypeName(varcl)[" & tmp & "]" & vbCrLf & _ "str[" & str & "]") End If ' Process the argument due to its type. If TypeName(tmp) = "String" Then str_org = varcl Else str_org = varcl.Value End If 'Kanji-number string. str = str_org If DEBUG_KANNUM Then Call MsgBox("TypeName(varcl)[" & tmp & "]" & vbCrLf & _ "str[" & str & "]") End If '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 'Algorithm: ' '*Assumption ' assume that kanji-number string (漢数字文字列) consists of three type of ' number string: compound units, semi-compound units, and literal ' numbers. ' ' compound units (京,兆,億,万) consists of semi-compound units ' and literal number string. ' ' semi-compound units (千,百,十) consists of themselves (ex. 千十), ' and also they sometimes includes literal number string (ex. 3千4百). ' ' literal number string (〇~九) is able to convert to number (value) ' directly. ' '*Way of getting the value of kanji-number string ' generate the expression from kanji-number string like the following: ' ((n_1)億)+(n_2)万+(n_3)) ' where n_? is a*1000+b*100+c*10+d, and a-d here indicates 0-9. ' ' after the step (4), we can obtain the above expression which ' consists from only numbers, parentheses, product(*), and addition(+). ' ' and finally, the value is obtained by evaluation of the generated ' expression at the step (5) ' '''' (1) Normalize the value. ' `normalize' means that hankaku, and all characters of ' [0-9],[〇-九] to [0-9]. ' str = StrConv(str, vbNarrow) '半角 'for semi-compound units str = Replace(str, "拾", "十") str = Replace(str, "阡", "千") str = Replace(str, "萬", "万") 'for the literal number strings. str = Replace(str, "九", "9") str = Replace(str, "八", "8") str = Replace(str, "七", "7") str = Replace(str, "六", "6") str = Replace(str, "五", "5") str = Replace(str, "伍", "5") str = Replace(str, "四", "4") str = Replace(str, "三", "3") str = Replace(str, "参", "3") str = Replace(str, "二", "2") str = Replace(str, "弐", "2") str = Replace(str, "一", "1") str = Replace(str, "壱", "1") str = Replace(str, "〇", "0") '''' (2) Structurize for the compound units: 京,兆,億,万. ' ' (.*)兆+(.*)億+(.*)万+(.*) ' str = "(" + str ' str = Replace(str, "京", ")京+(") str = Replace(str, "兆", ")兆+(") str = Replace(str, "億", ")億+(") str = Replace(str, "万", ")万+(") str = str + ")" ''' (3) Numerize the value 'semi-compound units str = Replace(str, "千", "*1000+") str = Replace(str, "百", "* 100+") str = Replace(str, "十", "* 10+") 'compound units str = Replace(str, "京", "*10000000000000000+") str = Replace(str, "兆", "* 1000000000000+") str = Replace(str, "億", "* 100000000+") str = Replace(str, "万", "* 10000+") ''' (4) correct the expression of the value. str = Replace(str, "()", "0") str = Replace(str, "++", "+") str = Replace(str, "+)", "+0)") str = Replace(str, "(*", "(1*") str = Replace(str, "+*", "+1*") If DEBUG_KANNUM Then Call MsgBox("org:" & str_org & vbCrLf & "str:" & str) End If ''' (5) Eval the generated expression! STRINGNUMBER = Application.Evaluate(str) End Function
各構成単位ごとに、丸括弧でくくることが、みそだ。
最終的に、漢数字部分は数字に置き換えられ、数式の形になる。そして、それがApplication.Evaluate()により、数値に変換される。
Have fun!!
2010年8月13日金曜日
VBAのドキュメントの目次一覧
Microsoftのヘルプ機能は、OSのそれにしろOfficeアプリケーションのそれにし
ろ、まったくひどいしろものだ。なにしろ、知りたい機能で検索しても当該ページがで
てこない。
また、このヘルプ・ドキュメントそのものについても、同じ類のことがいえる:
一覧性が非常にひくいのだ──5万数万もの高い金を取りながら、電子マニュア
ルしか存在しないためだ。
最近、立て続けにそんな経験をしたので、ここにExcel2003 のVisual Basic Editor
のヘルプの目次をテキスト形式で一覧にし、示すこととする。これにより、マニュアル全体
を俯瞰することができ、Googleによってインデックス化されれば、検索性も増すであろう。
対象は、Excel2003のVisual Basic Editorのヘルプメニューを開いたときに出て
来るドキュメントだ。これらは開いたときの順番の通りに、項目を挙げている。
本来的には、順番で読むのに適さないが、資料としてこのままとする。
凡例
このテキストでは、■-□-◆の順に、ドキュメントの階層を表す。■がトップレ
ベルだ。
◆A-Zは、必ずしも、AからZまでの項目があるわけではない;実際には歯抜けと
なる項目が存在する。
��?)は、?アイコンを示す。
項目右端の★は、読むべき注目を表す。基礎的な概念について述べている項目に
付した。というのも、資料は必ずしも理解に適した順番で配列されているわけで
はないのだ。階層構造についても、同じことが言える。機会があれば、VBA版
『プログラミング言語C』を書いてみたい。
Visual Basic Editor のヘルプの目次一覧
■Microsoft Excel Visual Basic リファレンス
□(?)Microsoft Office Excel オブジェクト モデル
□新機能
◆(?)新しいオブジェクト
◆(?)新しいプロパティ(アルファベット順)
◆(?)新しいプロパティ(オブジェクト順)
◆(?)新しいメソッド(アルファベット順)
◆(?)新しいメソッド(オブジェクト順)
◆(?)新しいイベント
□プログラミングの概念・・・★
◆ブックとワークシート
◆セルとセル範囲
◆コントロール、ダイアログ、ボックス、フォーム
◆イベント、ワークシート関数、図形
◆他のアプリケーションを使って作業する
□コレクション
◆A-Z
□オブジェクト
◆A-Z
□メソッド
◆A-Z
□プロパティ
◆A-Z
□イベント
◆A-Z
□列挙
◆(?)Microsoft Office Excel の定数
■Microsoft Visual Basic Documentation
□Visual Basic ユーザー インターフェース
◆コマンド
◆キー
◆メニュー
◆その他
◆ショートカット
◆タブおよびダイアログ ボックス
◆ツールバー
◆ウィンドウ
□Visual Basic プログラミングのヒント
◆(?)名前の二重定義の回避
◆(?)同じ名前のプロシージャの呼び出し
◆(?)Property プロシージャの呼び出し・・・★
◆(?)Sub プロシージャと Function プロシージャの呼び出し・・・★
◆(?)オブジェクト変数の作成・・・★
◆(?)再帰プロシージャの作成・・・★
◆(?)配列の宣言・・・★
◆(?)定数の宣言・・・★
◆(?)変数の宣言・・・★
◆(?)プロパティ設定時のコードの実行
◆(?)コードのループ
◆(?)For...Next ループの高速化
◆(?)引数の効率的な引き渡し
◆(?)関数からの文字列の取得
◆(?)オートメーションの概要
◆(?)条件付きコンパイルの概要
◆(?)名前付き引数と省略可能な引数の概要
◆(?)オブジェクト、プロパティ、メソッド、およびイベントの概要・・・★
◆(?)パラメータ配列の概要・・・★
◆(?)適用範囲と参照可能範囲の概要・・・★
◆(?)変数の有効期間の概要・・・★
◆(?)バリアント型 (Variant)の概要・・・★
◆(?)Visual Basic の構文の概要・・・★
◆(?)配列の使い方・・・★
◆(?)定数の使い方・・・★
◆(?)データ型の効率的な使い方
◆(?)Do...Loop ステートメントの使い方・・・★
◆(?)For Each...Next ステートメントの使い方・・・★
◆(?)For...Next ステートメントの使い方・・・★
◆(?)If...Then...Else ステートメントの使い方・・・★
◆(?)コードでのかっこの使い方
◆(?)Select Case ステートメントの使い方・・・★
◆(?)With ステートメントの使い方・・・★
◆(?)Visual Basic の名前付け規則・・・★
◆(?)アプリケーション間の連携
◆(?)Function プロシージャの記述方法・・・★
◆(?)Property プロシージャの記述方法・・・★
◆(?)Sub プロシージャの記述方法・・・★
◆(?)代入ステートメントの記述方法・・・★
◆(?)ファイルへのデータの書き込み・・・★
◆(?)宣言ステートメントの記述方法・・・★
◆(?)実行可能なステートメントの記述方法
◆(?)Visual Basic ステートメントの作成
□Visual Basic 開発環境
◆(?)オブジェクト ライブラリの確認および参照設定の追加
◆(?)実行の継続
◆(?)ヘルプから使用例をコピーするには
◆(?)プロシージャの作成
◆(?)コードへの宣言の入力
◆(?)特定のステートメントの実行
◆(?)プロシージャの検索・・・★
◆(?)変数の定義の検索・・・★
◆(?)コード内の文字列の置換・・・★
◆(?)実行の再開・・・★
◆(?)コード内の文字列の検索・・・★
◆(?)タイプ ライブラリへの参照設定
◆(?)ブレークポイントの設定と解除
◆(?)プロジェクト プロパティの設定
◆(?)テキスト ファイルのコードへのインポート・・・★
◆(?)Visual Basic 環境オプションの設定
◆(?)コード ウィンドウの分割
◆(?)コード実行の開始・・・★
◆(?)コード実行の停止・・・★
◆(?)コード実行のトレース・・・★
◆(?)構文チェックの設定と解除の切り替え・・・★
◆(?)イミディエイト ウィンドウの使用
◆(?)オブジェクト ブラウザの使用・・・★
◆(?)プロジェクト エクスプローラの使用・・・★
◆(?)プロパティ ウィンドウの使用
□Visual Basic ランゲージ リファレンス
◆定数
◆データ型
◆ディレクティブ
◆イベント
◆関数
◆グループ
◆インデックス/一覧
◆キーワード
◆メソッド
◆その他
◆オブジェクト
◆演算子
◆プロパティ
◆ステートメント
□Visual Basic アドイン モデル
◆コレクション
◆イベント
◆メソッド
◆オブジェクト
◆プロパティ
□Microsoft Forms リファレンス
◆(?)Microsoft Forms オブジェクト モデルの全体像
◆Microsoft Forms デザイン リファレンス
◆Microsoft Forms 開発者へのヒント
◆Microsoft Forms オブジェクト リファレンス
■Microsoft Office Visual Basic リファレンス
□(?)Microsoft Office オブジェクト モデル
□新機能
◆(?)新しいオブジェクト
◆(?)新しいプロパティ (アルファベット順)
◆(?)新しいプロパティ (オブジェクト順)
◆(?)新しいオブジェクト (アルファベット順)
◆(?)新しいオブジェクト (オブジェクト順)
□プログラミングの概念
◆(?)Microsoft Office ソリューション開発者向けのセキュリティ情報
◆Office コマンド バーを使用する
◆Office アシスタントを使用する
◆(?)コレクションからオブジェクトを取得する
◆(?)OLE プログラム ID
◆(?)MSDN で MODI VBA のリファレンスを検索する
□コレクション
◆A-Z
□オブジェクト
◆A-Z
□メソッド
◆A-Z
□プロパティ
◆A-Z
□イベント
◆A-Z
□列挙
◆(?)Microsoft Office の定数
References
Microsoft Excel 2003; "Visual Basic のヘルプ"; Microsoft, メニュー>ヘルプ(H)
ろ、まったくひどいしろものだ。なにしろ、知りたい機能で検索しても当該ページがで
てこない。
また、このヘルプ・ドキュメントそのものについても、同じ類のことがいえる:
一覧性が非常にひくいのだ──5万数万もの高い金を取りながら、電子マニュア
ルしか存在しないためだ。
最近、立て続けにそんな経験をしたので、ここにExcel2003 のVisual Basic Editor
のヘルプの目次をテキスト形式で一覧にし、示すこととする。これにより、マニュアル全体
を俯瞰することができ、Googleによってインデックス化されれば、検索性も増すであろう。
対象は、Excel2003のVisual Basic Editorのヘルプメニューを開いたときに出て
来るドキュメントだ。これらは開いたときの順番の通りに、項目を挙げている。
本来的には、順番で読むのに適さないが、資料としてこのままとする。
凡例
このテキストでは、■-□-◆の順に、ドキュメントの階層を表す。■がトップレ
ベルだ。
◆A-Zは、必ずしも、AからZまでの項目があるわけではない;実際には歯抜けと
なる項目が存在する。
��?)は、?アイコンを示す。
項目右端の★は、読むべき注目を表す。基礎的な概念について述べている項目に
付した。というのも、資料は必ずしも理解に適した順番で配列されているわけで
はないのだ。階層構造についても、同じことが言える。機会があれば、VBA版
『プログラミング言語C』を書いてみたい。
Visual Basic Editor のヘルプの目次一覧
■Microsoft Excel Visual Basic リファレンス
□(?)Microsoft Office Excel オブジェクト モデル
□新機能
◆(?)新しいオブジェクト
◆(?)新しいプロパティ(アルファベット順)
◆(?)新しいプロパティ(オブジェクト順)
◆(?)新しいメソッド(アルファベット順)
◆(?)新しいメソッド(オブジェクト順)
◆(?)新しいイベント
□プログラミングの概念・・・★
◆ブックとワークシート
◆セルとセル範囲
◆コントロール、ダイアログ、ボックス、フォーム
◆イベント、ワークシート関数、図形
◆他のアプリケーションを使って作業する
□コレクション
◆A-Z
□オブジェクト
◆A-Z
□メソッド
◆A-Z
□プロパティ
◆A-Z
□イベント
◆A-Z
□列挙
◆(?)Microsoft Office Excel の定数
■Microsoft Visual Basic Documentation
□Visual Basic ユーザー インターフェース
◆コマンド
◆キー
◆メニュー
◆その他
◆ショートカット
◆タブおよびダイアログ ボックス
◆ツールバー
◆ウィンドウ
□Visual Basic プログラミングのヒント
◆(?)名前の二重定義の回避
◆(?)同じ名前のプロシージャの呼び出し
◆(?)Property プロシージャの呼び出し・・・★
◆(?)Sub プロシージャと Function プロシージャの呼び出し・・・★
◆(?)オブジェクト変数の作成・・・★
◆(?)再帰プロシージャの作成・・・★
◆(?)配列の宣言・・・★
◆(?)定数の宣言・・・★
◆(?)変数の宣言・・・★
◆(?)プロパティ設定時のコードの実行
◆(?)コードのループ
◆(?)For...Next ループの高速化
◆(?)引数の効率的な引き渡し
◆(?)関数からの文字列の取得
◆(?)オートメーションの概要
◆(?)条件付きコンパイルの概要
◆(?)名前付き引数と省略可能な引数の概要
◆(?)オブジェクト、プロパティ、メソッド、およびイベントの概要・・・★
◆(?)パラメータ配列の概要・・・★
◆(?)適用範囲と参照可能範囲の概要・・・★
◆(?)変数の有効期間の概要・・・★
◆(?)バリアント型 (Variant)の概要・・・★
◆(?)Visual Basic の構文の概要・・・★
◆(?)配列の使い方・・・★
◆(?)定数の使い方・・・★
◆(?)データ型の効率的な使い方
◆(?)Do...Loop ステートメントの使い方・・・★
◆(?)For Each...Next ステートメントの使い方・・・★
◆(?)For...Next ステートメントの使い方・・・★
◆(?)If...Then...Else ステートメントの使い方・・・★
◆(?)コードでのかっこの使い方
◆(?)Select Case ステートメントの使い方・・・★
◆(?)With ステートメントの使い方・・・★
◆(?)Visual Basic の名前付け規則・・・★
◆(?)アプリケーション間の連携
◆(?)Function プロシージャの記述方法・・・★
◆(?)Property プロシージャの記述方法・・・★
◆(?)Sub プロシージャの記述方法・・・★
◆(?)代入ステートメントの記述方法・・・★
◆(?)ファイルへのデータの書き込み・・・★
◆(?)宣言ステートメントの記述方法・・・★
◆(?)実行可能なステートメントの記述方法
◆(?)Visual Basic ステートメントの作成
□Visual Basic 開発環境
◆(?)オブジェクト ライブラリの確認および参照設定の追加
◆(?)実行の継続
◆(?)ヘルプから使用例をコピーするには
◆(?)プロシージャの作成
◆(?)コードへの宣言の入力
◆(?)特定のステートメントの実行
◆(?)プロシージャの検索・・・★
◆(?)変数の定義の検索・・・★
◆(?)コード内の文字列の置換・・・★
◆(?)実行の再開・・・★
◆(?)コード内の文字列の検索・・・★
◆(?)タイプ ライブラリへの参照設定
◆(?)ブレークポイントの設定と解除
◆(?)プロジェクト プロパティの設定
◆(?)テキスト ファイルのコードへのインポート・・・★
◆(?)Visual Basic 環境オプションの設定
◆(?)コード ウィンドウの分割
◆(?)コード実行の開始・・・★
◆(?)コード実行の停止・・・★
◆(?)コード実行のトレース・・・★
◆(?)構文チェックの設定と解除の切り替え・・・★
◆(?)イミディエイト ウィンドウの使用
◆(?)オブジェクト ブラウザの使用・・・★
◆(?)プロジェクト エクスプローラの使用・・・★
◆(?)プロパティ ウィンドウの使用
□Visual Basic ランゲージ リファレンス
◆定数
◆データ型
◆ディレクティブ
◆イベント
◆関数
◆グループ
◆インデックス/一覧
◆キーワード
◆メソッド
◆その他
◆オブジェクト
◆演算子
◆プロパティ
◆ステートメント
□Visual Basic アドイン モデル
◆コレクション
◆イベント
◆メソッド
◆オブジェクト
◆プロパティ
□Microsoft Forms リファレンス
◆(?)Microsoft Forms オブジェクト モデルの全体像
◆Microsoft Forms デザイン リファレンス
◆Microsoft Forms 開発者へのヒント
◆Microsoft Forms オブジェクト リファレンス
■Microsoft Office Visual Basic リファレンス
□(?)Microsoft Office オブジェクト モデル
□新機能
◆(?)新しいオブジェクト
◆(?)新しいプロパティ (アルファベット順)
◆(?)新しいプロパティ (オブジェクト順)
◆(?)新しいオブジェクト (アルファベット順)
◆(?)新しいオブジェクト (オブジェクト順)
□プログラミングの概念
◆(?)Microsoft Office ソリューション開発者向けのセキュリティ情報
◆Office コマンド バーを使用する
◆Office アシスタントを使用する
◆(?)コレクションからオブジェクトを取得する
◆(?)OLE プログラム ID
◆(?)MSDN で MODI VBA のリファレンスを検索する
□コレクション
◆A-Z
□オブジェクト
◆A-Z
□メソッド
◆A-Z
□プロパティ
◆A-Z
□イベント
◆A-Z
□列挙
◆(?)Microsoft Office の定数
References
Microsoft Excel 2003; "Visual Basic のヘルプ"; Microsoft, メニュー>ヘルプ(H)
2010年7月28日水曜日
WinXP環境でGAE/JRuby/Rails/Sinatraにより彼女と自宅でデートする
0. Abstract
熱海はハードル高いので、まずは自宅だよね。ということで、ちょっと以前から:
GoogleAppEngine + JRubyでクリスマスまでに彼女をつくる方法
[Ruby][クラウド] GAE/JRuby/SinatraでHello World
appengine-jrubyで簡単GAE/JRuby開発
JRuby on Rails を GAE/J 上へデプロイ
- 10分ではじめる GAE/JRuby (OAuth + Sinatraのサンプル)
- Impossible to do POSTs with appengine-jruby/RoR: Reflection is not allowed
などを参照して、ローカルPC(XP)でGAEの実験してたわけだが、これまで当方の環境では、ThreadErrorを吐くなど不具合があり、寸分も動作しなかった。
この度、やっと動作を確認できたので、ここに試行錯誤をまとめて示そうと思う。
結論だけ先に挙げますと、gemパッケージ内の主にJRubyに何らかの原因がありいくつか不具合現象が生じていたが、gemの更新により、それらが解消された、というつまらないことなのですが…。
それに加えて、今回ちょっと特殊なのは:
- XPのアカウント名が日本語だったこと
- 動作確認にCygwinも用いたこと
になります。
上記に起因する不具合現象について、相当調査し(ぐぐっ)たが、エラーそのものも含めて、全然情報がなかった。ActiveScriptRubyやCygwinという当方とまっ
たく同じ環境でも、何の問題も無く、みんなすんなり動いてるようでした。
本稿ではまず、1.に実験した環境・構成を示します。次に2.にて、当初存在した
不具合現象を示します。そして、3.に今回成功した修正方法を、4.に修正後の動作結果を示します。最後に、修正方法を5.結論に述べ、今後の課題を6.とします。
またリファレンスと付録を、それぞれ7.、8.とします。
1.動作確認に使用した環境と構成
以下、(1)~(2)に、環境・構成等を示す。
Windows XPは、以下XPと略す。
Cygwin/XPは、XP上にインストールしたCygwinを示す。
ActiveScriptRubyでの実験は、同環境をインストールするとできるruby console
から行った。
Cygwin/XPでの実験は、Cygwinのコンソールから行った。
(1) 実験した環境
実験していたのは、下記のような環境である:
OS Windows XP(winver.exe; Version 5.1 (Build 2600.xpsp_sp3_gdr .100216-1514 :Service Pack 3)), Cygwin/XP(setup.exe version 2.697) Ruby ActiveScriptRuby 1.8.7 (XP; ruby 1.8.7 (2010-01-10 patchlevel 249) [i386-mswin32]), Ruby 1.8.7 (Cygwin/XP; ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-cygwin]) Java java version "1.6.0_20" Java(TM) SE Runtime Environment (build 1.6.0_20-b02) Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode)
AcriveScriptRuby、Cygwin/XP上のruby両者で、動作することを確認できた。
(2)gemの構成
- 構成1(動作しない)
$ gem list *** LOCAL GEMS *** appengine-apis (0.0.16) appengine-rack (0.0.9) appengine-sdk (1.3.4) appengine-tools (0.0.13) bundler08 (0.8.5) google-appengine (0.0.13) jruby-jars (1.4.1) jruby-rack (1.0.1) rack (1.1.0) rubygems-update (1.3.7) rubyzip (0.9.4)
$ gem list *** LOCAL GEMS *** appengine-apis (0.0.18, 0.0.16) appengine-rack (0.0.11, 0.0.9) appengine-sdk (1.3.5, 1.3.4) appengine-tools (0.0.15, 0.0.13) bundler08 (0.8.5) google-appengine (0.0.15, 0.0.13) jruby-jars (1.5.1, 1.4.1) jruby-rack (1.0.1) rack (1.1.0) rubygems-update (1.3.7) rubyzip (0.9.4)
2.不具合現象
不具合現象は、実行時に下記ログに示されるような現象である(一部、当方で入れた
デバッグ用のメッセージも含む)。
◇ログ1(ActiveScriptRuby; No such file or directory (Errno::ENOENT))
D:\Program Files\ruby-1.8\usr\local\sinatra_test>appcfg.rb bundle . D:/Program Files/ruby-1.8/lib/ruby/gems/1.8/gems/appengine-tools-0.0.13/lib/appe ngine-tools/boot.rb:78: warning: `*' interpreted as argument prefix file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/jruby-stdlib -1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb:926:in `set_pa ths': No such file or directory - No such file or directory - C:/Documents and S ettings/テ」ツ・セテ」ツ・・(Errno::ENOENT) from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/ jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/ jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/ jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/defa ults/jruby.rb:17:in `set_paths' from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/ jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/ jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/defa ults/jruby.rb:60:in `installed_spec_directories' from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/ jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/sour ce_index.rb:58:in `from_installed_gems' from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/ jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/ jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/gem_ path_searcher.rb:84:in `init_gemspecs' from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/ jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/gem_ path_searcher.rb:19:in `initialize' from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/ jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/ jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/ jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/ jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/ jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/ jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb from D:/PROGRA~1/ruby-1.8/bin/appcfg.rb:9 Error executing jruby
◇エラーログ2 (Cygwin/XP, dev_appserver.rb; Error opening zip file or JAR manifest missing)
$dev_appserver.rb . /usr/lib/ruby/gems/1.8/gems/appengine-tools-0.0.15/lib/appengine-tools/boot.rb => Booting DevAppServer => Press Ctrl-C to shutdown server exec "java" "-classpath" "/usr/lib/ruby/gems/1.8/gems/appengine-sdk-1.3.5/appeng ine-java-sdk-1.3.5/lib/appengine-tools-api.jar" "-Djava.util.logging.config.file =/usr/lib/ruby/gems/1.8/gems/appengine-sdk-1.3.5/appengine-java-sdk-1.3.5/config /sdk/logging.properties" "-Dcom.google.appengine.plugin.path=/usr/lib/ruby/gems/1 .8/gems/appengine-tools-0.0.15/lib/appengine-tools/app_yaml.jar" "-javaagent:/u sr/lib/ruby/gems/1.8/gems/appengine-sdk-1.3.5/appengine-java-sdk-1.3.5/lib/agent /appengine-agent.jar" "com.google.appengine.tools.development.DevAppServerMain" "--disable_update_check" "/home/masa/local/sinatra_test" Error opening zip file or JAR manifest missing : /usr/lib/ruby/gems/1.8/gems/app engine-sdk-1.3.5/appengine-java-sdk-1.3.5/lib/agent/appengine-agent.jar Error occurred during initialization of VM agent library failed to init: instrument
◇エラーログ3(ActiveScriptRuby; Mutex relocking by same thread (ThreadError))
D:\Program Files\ruby-1.8\usr\local\sinatra_test>appcfg.rb generate_app . D:/Program Files/ruby-1.8/lib/ruby/gems/1.8/gems/appengine-tools-0.0.13/lib/appe ngine-tools/boot.rb:78: warning: `*' interpreted as argument prefix => Generating gemfile => Bundling gems D:/Program Files/ruby-1.8/lib/ruby/1.8/pathname.rb:263: warning: `*' interpreted as argument prefix D:/Program Files/ruby-1.8/lib/ruby/gems/1.8/gems/bundler08-0.8.5/lib/bundler08/d ependency.rb:59: warning: discarding old version Calculating dependencies... Updating source: http://gems.rubyforge.org D:/Program Files/ruby-1.8/lib/ruby/gems/1.8/gems/bundler08-0.8.5/lib/bundler08/r esolver.rb:115:Warning: Gem::Dependency#version_requirements is deprecated and w ill be removed on or after August 2010. Use #requirement Caching: appengine-rack-0.0.9.gem Caching: jruby-jars-1.4.1.gem Caching: jruby-rack-1.0.1.gem Caching: rack-1.1.0.gem Installing jruby-jars (1.4.1) Installing rack (1.1.0) Installing jruby-rack (1.0.1) Installing appengine-rack (0.0.9) Done. => Packaging gems => Installing appengine-rack.jar => Installing jruby-core-1.4.1.jar => Installing jruby-stdlib-1.4.1.jar => Installing jruby-rack-1.0.1.jar => Installing appengine-sdk => Generating rackup file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/jruby-stdlib -1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb:888:in `search er': Mutex relocking by same thread (ThreadError) from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/ jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/cust om_require.rb:33:in `require' from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/ jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/shared/builtin/ja vasupport.rb:37 from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/ jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/shared/builtin/ja vasupport.rb:31:in `require' from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/ jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/cust om_require.rb:31:in `require' from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/ jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/defa ults/jruby.rb:70:in `spec_directories_from_classpath' from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/ jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/defa ults/jruby.rb:60:in `installed_spec_directories' from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/ jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/sour ce_index.rb:58:in `from_installed_gems' from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/ jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/ jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/gem_ path_searcher.rb:84:in `init_gemspecs' from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/ jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/gem_ path_searcher.rb:19:in `initialize' from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/ jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/ jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/ jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/ jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/ jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/ jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb:9 from D:/PROGRA~1/ruby-1.8/bin/appcfg.rb:9 Error executing jruby
3.回避・修正方法
不具合現象の(1)、(3)に関しては、google-appengineパッケージの更新(下記(1))で、修正されることがわかった。不具合現象(2)については、パッケージ内のスクリプトの一部のパスの指定方法に、問題があることがわかった(下記(2))。
下記(1)、(2)に回避・修正方法を示す。
(1) GAE gemファイルの更新
エラーログから、jruby-jar等に問題があることが推測された。
google-appengineのgemを最新のものに更新することで、当該現象は発生が抑えられた。
gem update google-appengine
(2) GAE/JRubyのスクリプトdev_appserver.rbの修正(Cygwinの場合)
パスの指定部分を、全てcygpathでラッピングする[1]。
/lib/ruby/gems/1.8/gems/appengine-tools-0.0.15/lib/appengine-tools/ appserver.rb < server_args[-1] = File.expand_path(path) --- > tmp_expath = File.expand_path(path) > server_args[-1] = `cygpath -wp #{tmp_expath}`.chomp < java_args << AppEngine::SDK::TOOLS_JAR --- > java_args << `cygpath -wp #{AppEngine::SDK::TOOLS_JAR}`.chomp < AppEngine::SDK::SDK_ROOT + '/config/sdk/logging.properties' < java_args << "-Dcom.google.appengine.plugin.path=#{plugin_jar}" --- > `cygpath -wp #{AppEngine::SDK::SDK_ROOT}/config/sdk/logging.prop erties`.chomp > java_args << "-Dcom.google.appengine.plugin.path="+`cygpath -wp #{pl ugin_jar}`.chomp > < java_args << '-javaagent:' + AppEngine::SDK::AGENT_JAR --- > java_args << '-javaagent:' + `cygpath -wp #{AppEngine::SDK::AGENT_ JAR}`.chomp
これもっと綺麗な方法ないかな、とも思いますが・・・。
4.動作結果
ブラウザからhttp://localhost:8080/にアクセスすれば、所望の結果が得られる。
D:\Program Files\ruby-1.8\usr\local\sinatra_test>dev_appserver.rb.bat . D:/PROGRA~1/ruby-1.8/lib/ruby/gems/1.8/gems/appengine-tools-0.0.15/lib/appengine -tools/boot.rb:50: warning: `*' interpreted as argument prefix => Booting DevAppServer => Press Ctrl-C to shutdown server 2010/07/26 1:23:22 com.google.apphosting.utils.jetty.JettyLogger info 情報: Logging to JettyLogger(null) via com.google.apphosting.utils.jetty.JettyLo gger 2010/07/26 1:23:22 com.google.apphosting.utils.config.AppEngineWebXmlReader read AppEngineWebXml 情報: Successfully processed D:\Program Files\ruby-1.8\usr\local\sinatra_test\WE B-INF/appengine-web.xml 2010/07/26 1:23:22 com.google.apphosting.utils.config.AbstractConfigXmlReader re adConfigXml 情報: Successfully processed D:\Program Files\ruby-1.8\usr\local\sinatra_test\WE B-INF/web.xml 2010/07/26 1:23:22 com.google.apphosting.utils.jetty.JettyLogger info 情報: jetty-6.1.x 2010/07/26 1:23:25 com.google.apphosting.utils.jetty.JettyLogger info 情報: Started SelectChannelConnector@127.0.0.1:8080 2010/07/26 1:23:25 com.google.appengine.tools.development.DevAppServerImpl start 情報: The server is running at http://localhost:8080/
5.結論
JRuby(jruby-jars)は、バージョンによってはActiveScriptRuby、もしくはCygwin/XPにおいて、ThreadErrorにより動作しない
Cygwinでは、一部のスクリプトのjavaコマンド発行時のパス名が問題となる
上記により、ActiveScriptRuby, Cygwin/XP両者の環境で、ローカルPC上で、GAE/JRubyの動作を確認できた。
gemパッケージ:google-appengineを、最新のバージョンに更新する。
Cygwinのコマンド:cygpath -wp で、ラッピングしてjavaコマンドに渡されるように、dev_appserver.rbを修正する。
6. Future Works
- gem, appcfg.rb, dev_appserver.rb の使い方詳細の調査
- リモート・サーバ上での動作
- 彼女を作る
- 不具合現象の原因となるgemパッケージの依存関係、ThreadErrorの生じる箇所
については、今回あきらめた。JRubyの内部動作に強い興味を持つ向きは、探ってみてもよいかもしれない。
7.補論
- Gemリポジトリ格納場所の再設定
不具合現象(1)の発生は、3.回避・修正方法の(1)により、抑えられる。しかし、類似の現象を未然に防止するため、Gemリポジトリの設定をしておいたほうがよいかもしれない。
本稿の場合、3.appcfg.rbから実行されるgemにおいて、リポジトリ処理に日本語パス名起因である不具合現象(1)が、当初存在していた。
gemは、動作時にリポジトリ・ファイルを作成する[2]。
AcitiveScriptRubyの場合、特に指定がなければ、リポジトリはディレクトリ:%HOME%となる。このパス名に、日本語が含まれている場合、google-appengineのバージョンによっては、不具合現象(1) の原因になる。
これを防ぐには、google-appengineパッケージの更新、もしくは環境変数GEM_HOMEを、適切に設定する。
設定方法は、
コンパネ>システム>詳細設定、またはコマンド・プロンプト で、環境変数:GEM_HOMEを、日本語を含まないパスに設定する
である。
Cygwinに関しては、ホーム・ディレクトリを、日本語パス名を含まないものに変更している。
8.References
[1] Toru Takahashi; "CygwinでJavaを快適に使う";http://www.02.246.ne.jp/~torutk/javaoncygwin/javaoncygwin.html
[2] docs.rubygems.org; "RubyGems User Guide | RubyGems Manuals";
3.2 Installing RubyGems in a User Directory,
http://docs.rubygems.org/read/chapter/3#page83
ラベル:
CT-技術,
ENOENT,
GAE,
JRuby,
Mutex relocking,
ruby,
RubyOnRails,
sinatra,
ThreadError,
エラー
2010年5月10日月曜日
InfoViz APIドキュメンテーション(目次)
API ドキュメンテーション
o Input JSON データの入力
o HyperTree
o RGraph
o SpaceTree
クイック・チュートリアル
o RGraph
o HyperTree
o SpaceTree
o TreeMap
API ドキュメンテーション全文
JSON をロードする
Loader.js
Canvas クラス
Canvas.js
可視化(Visualizations)
Spacetree.js
Treemap.js
Hypertree.js
RGraph.js
Graph クラス
Graph.js
Graph.Op.js
Graph.Plot.js
Point (2D) クラス
Complex.js
Polar.js
アニメーション(Animations)
Animation.js
その他(Other)
AngularWidth.js
索引(Index)
すべて(Everything)
クラス群(Classes)
関数群(Functions)
ファイル群(Files)
o Input JSON データの入力
o HyperTree
o RGraph
o SpaceTree
クイック・チュートリアル
o RGraph
o HyperTree
o SpaceTree
o TreeMap
API ドキュメンテーション全文
JSON をロードする
Loader.js
Canvas クラス
Canvas.js
可視化(Visualizations)
Spacetree.js
Treemap.js
Hypertree.js
RGraph.js
Graph クラス
Graph.js
Graph.Op.js
Graph.Plot.js
Point (2D) クラス
Complex.js
Polar.js
アニメーション(Animations)
Animation.js
その他(Other)
AngularWidth.js
索引(Index)
すべて(Everything)
クラス群(Classes)
関数群(Functions)
ファイル群(Files)
2010年4月14日水曜日
JavaScriptによるデータ可視化ライブラリ:InfoVis の概要訳
InfoVisは、JavaScriptで記述されたデータ可視化ライブラリである。この種のライブラリは、Javaであれば、例えば、JUNG(http://jung.sourceforge.net/)などが存在する。
InfoVisにおいて、可視化対象のデータは、JSON形式のものを扱う。このため、このライブラリにはJSONを扱うためのAPIを含む(TreeUtil)。可視化関連のものは、Core.jsにて提供される。
InfoVisの概要が示されたページについて、日本語訳をおこなったのでここに示す。
url:
http://thejit.org/
download:
http://thejit.org/downloads/Jit-1.1.3.zip
license:
BSD(http://thejit.org/docs/files/Core-js.html)
概要:
http://thejit.org/docs/files/Core-js.html
●Core
Core.js
説明(Description)
JSONツリー構造を操作する共通ユーティリティ関数と、ライブラリとして、内部で使
用されているクラス・オブジェクトを提供する。
また、JSONツリー構造を操作する TreeUtil オブジェクトを、提供する。
作者(Author)
ニコラス・ガルシア・ベルモンテ(Nicolas Garcia Belmonte)
コピーライト(Copyright)
Copyright 2008-2009 by Nicolas Garcia Belmonte
ホームページ(Homepage)
http://thejit.org
バージョン(Version)
1.1.3
ライセンス(License)
BSD License
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the organization nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY Nicolas Garcia Belmonte ``AS IS'' AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL Nicolas Garcia Belmonte BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
サマリ(Summary)
Core.js 共通ユーティリティ関数とライブラリ内部で使用されるクラス・
オブジェクトを提供
TreeUtil 共通JSONツリー操作メソッドをいくつか
Functions
prune ツリー上でmaxLevelより大きな深さを持つノードを、クリアする
getParent idの識別子を持つノードの、親ノードを、返す
getSubtree 指定したidにマッチするサブツリーを、返す
getLeaves ツリーの葉を、返す
eachLevel ツリー上の相対的に指定した深さ以下の深さのノードを、イテレートする
each ツリーのイテレータ
loadSubtrees requestメソッドによって新たにリクエストされたサブツリーを、葉に追加する
TreeUtil
共通JSONツリー操作メソッド。
サマリ(Summary)
Functions
prune ツリー上でmaxLevelより大きな深さを持つノードを、クリアする
getParent idの識別子を持つノードの、親ノードを、返す
getSubtree 指定したidにマッチするサブツリーを、返す
getLeaves ツリーの葉を、返す
eachLevel ツリー上の相対的に指定した深さ以下の深さのノードを、イテレートする
each ツリーのイテレータ
loadSubtrees requestメソッドによって新たにリクエストされたサブツリーを、葉に追加する
InfoVisにおいて、可視化対象のデータは、JSON形式のものを扱う。このため、このライブラリにはJSONを扱うためのAPIを含む(TreeUtil)。可視化関連のものは、Core.jsにて提供される。
InfoVisの概要が示されたページについて、日本語訳をおこなったのでここに示す。
url:
http://thejit.org/
download:
http://thejit.org/downloads/Jit-1.1.3.zip
license:
BSD(http://thejit.org/docs/files/Core-js.html)
概要:
http://thejit.org/docs/files/Core-js.html
●Core
Core.js
説明(Description)
JSONツリー構造を操作する共通ユーティリティ関数と、ライブラリとして、内部で使
用されているクラス・オブジェクトを提供する。
また、JSONツリー構造を操作する TreeUtil オブジェクトを、提供する。
作者(Author)
ニコラス・ガルシア・ベルモンテ(Nicolas Garcia Belmonte)
コピーライト(Copyright)
Copyright 2008-2009 by Nicolas Garcia Belmonte
ホームページ(Homepage)
http://thejit.org
バージョン(Version)
1.1.3
ライセンス(License)
BSD License
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the organization nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY Nicolas Garcia Belmonte ``AS IS'' AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL Nicolas Garcia Belmonte BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
サマリ(Summary)
Core.js 共通ユーティリティ関数とライブラリ内部で使用されるクラス・
オブジェクトを提供
TreeUtil 共通JSONツリー操作メソッドをいくつか
Functions
prune ツリー上でmaxLevelより大きな深さを持つノードを、クリアする
getParent idの識別子を持つノードの、親ノードを、返す
getSubtree 指定したidにマッチするサブツリーを、返す
getLeaves ツリーの葉を、返す
eachLevel ツリー上の相対的に指定した深さ以下の深さのノードを、イテレートする
each ツリーのイテレータ
loadSubtrees requestメソッドによって新たにリクエストされたサブツリーを、葉に追加する
TreeUtil
共通JSONツリー操作メソッド。
サマリ(Summary)
Functions
prune ツリー上でmaxLevelより大きな深さを持つノードを、クリアする
getParent idの識別子を持つノードの、親ノードを、返す
getSubtree 指定したidにマッチするサブツリーを、返す
getLeaves ツリーの葉を、返す
eachLevel ツリー上の相対的に指定した深さ以下の深さのノードを、イテレートする
each ツリーのイテレータ
loadSubtrees requestメソッドによって新たにリクエストされたサブツリーを、葉に追加する
2010年1月31日日曜日
日本語の辞書(国語辞典)についての考察
ひんしつ【品質】 〔quality〕 ・・・品物の質。
��大辞林第3版より引用)
私は、こういう記述は嫌いだ。
このような記述は、意味がない。なぜなら、何の説明もしていない、同語反復のトートロジーであるからだ。人が辞書を引くとき、普通は意味を知りたい時ではないだろうか?しかし、そこに意味は記されていない―無意味な作業というわけだ。
そんなことを好んでする利用者は、誰もいないであろう。
したがって、
語とその意味のカタログという辞書本来の性質と、利用者の利用目的の観点から、
辞書における語の記述は、説明的な叙述・定義であるべきである。
意味を表現することができる。
ところが、
日本のいわゆる「国語辞典」には、ここで例に挙げた大辞林のように、こういう類の「無意味な」記述が多すぎる。その結果、シソーラス(類語辞典)ともディクショナリ(国語辞典)ともつかぬものとなってしまっている。
それこそ「品質」が低すぎる。
一方で、OALDではどうか。
qual" ity noun, adj.
> noun (pl. -ies)
1 [U, C] the standard of sth when it is compared to other things like it; how good or bad sth is: to be of good / poor / top quality * goods of a high quality * high-quality goods * a decline in water quality * When costs are cut product quality suffers. * Their quality of life improved dramatically when they moved to France.
2 [U] a high standard syn excellence: contemporary writers of quality * We aim to provide quality at reasonable prices. * Get it right, even if it takes time; it’s quality not quantity that matters.
3 [C] a thing that is part of a person’s character, especially sth good: personal qualities such as honesty and generosity * to have leadership qualities * She has all the qualities of a good teacher. * It’s hard to find people with the right qualities for the job.
4 [C, U] a feature of sth, especially one that makes it different from sth else: the special quality of light and shade in her paintings * His voice has a rich, melodic quality.
5 [C] (BrE) = quality newspaper
(http://www.oup.com/oald-bin/web_getald7index1a.pl
より引用。ここでは名詞だけを引用した。発音記号は、表示上の問題から削除)
その記述の量もさることながら、記述の仕方が、全然違うことに、気付くことができる。たとえば、1は
その何か(sth)と同じようなものと比較するときの
sthの水準;いかに良いか悪いかの
と言っている。
無論、「水準」とは何かという疑問があるだろう。しかしこの語(quality)が、複数の比較対象の存在によって規定される;良い・悪いを判断する尺度であることは、理解できる。
「品物の質」などという馬鹿げた記述より、はるかに明瞭な定義であり、説明だ。
(大辞林の記述にさらに付言すれば、品質は、べつに品物(有体物)にだけ成り立つものでもあるまい。サービス品質などともいうだろう)
今後いくつかの国語辞典について、主に語の記述の観点から、比較を行ってみたい。
まとめ
・日本語の辞書(国語辞典)は、品質が悪い
・辞書における語の記述は、説明的な叙述・定義であるべきである
��大辞林第3版より引用)
私は、こういう記述は嫌いだ。
このような記述は、意味がない。なぜなら、何の説明もしていない、同語反復のトートロジーであるからだ。人が辞書を引くとき、普通は意味を知りたい時ではないだろうか?しかし、そこに意味は記されていない―無意味な作業というわけだ。
そんなことを好んでする利用者は、誰もいないであろう。
したがって、
語とその意味のカタログという辞書本来の性質と、利用者の利用目的の観点から、
辞書における語の記述は、説明的な叙述・定義であるべきである。
意味を表現することができる。
ところが、
日本のいわゆる「国語辞典」には、ここで例に挙げた大辞林のように、こういう類の「無意味な」記述が多すぎる。その結果、シソーラス(類語辞典)ともディクショナリ(国語辞典)ともつかぬものとなってしまっている。
それこそ「品質」が低すぎる。
一方で、OALDではどうか。
qual" ity noun, adj.
> noun (pl. -ies)
1 [U, C] the standard of sth when it is compared to other things like it; how good or bad sth is: to be of good / poor / top quality * goods of a high quality * high-quality goods * a decline in water quality * When costs are cut product quality suffers. * Their quality of life improved dramatically when they moved to France.
2 [U] a high standard syn excellence: contemporary writers of quality * We aim to provide quality at reasonable prices. * Get it right, even if it takes time; it’s quality not quantity that matters.
3 [C] a thing that is part of a person’s character, especially sth good: personal qualities such as honesty and generosity * to have leadership qualities * She has all the qualities of a good teacher. * It’s hard to find people with the right qualities for the job.
4 [C, U] a feature of sth, especially one that makes it different from sth else: the special quality of light and shade in her paintings * His voice has a rich, melodic quality.
5 [C] (BrE) = quality newspaper
(http://www.oup.com/oald-bin/web_getald7index1a.pl
より引用。ここでは名詞だけを引用した。発音記号は、表示上の問題から削除)
その記述の量もさることながら、記述の仕方が、全然違うことに、気付くことができる。たとえば、1は
その何か(sth)と同じようなものと比較するときの
sthの水準;いかに良いか悪いかの
と言っている。
無論、「水準」とは何かという疑問があるだろう。しかしこの語(quality)が、複数の比較対象の存在によって規定される;良い・悪いを判断する尺度であることは、理解できる。
「品物の質」などという馬鹿げた記述より、はるかに明瞭な定義であり、説明だ。
(大辞林の記述にさらに付言すれば、品質は、べつに品物(有体物)にだけ成り立つものでもあるまい。サービス品質などともいうだろう)
今後いくつかの国語辞典について、主に語の記述の観点から、比較を行ってみたい。
まとめ
・日本語の辞書(国語辞典)は、品質が悪い
・辞書における語の記述は、説明的な叙述・定義であるべきである
2009年8月11日火曜日
Tumblr:Postへのタグ表示方法メモ
手順
関連ドキュメント
- Tumblrにログイン
- ダッシュボード(Dashboard)>カスタマイズ(Customize)
- Theme>customHTML
- block:Posts のお好みの場所に、下記のような block:HasTags を追加
{block:HasTags}
<div class="tags">
{block:Tags}
<a href="{TagURL}">[{Tag}]</a>
{/block:Tags}
</div>
{/block:HasTags}
関連ドキュメント
2009年8月6日木曜日
FirefoxでGoogleの表示設定が保持されない
ひきつづき、解決に向けた方策を調査したい。(2009/8/10)
なぜか最近、Googleのクッキーが有効でない挙動をしていた。
具体的には、Googleの表示設定の(1)セルフサーチ フィルタリング、(2)検索結果の表示件数表示数、が、ブラウザ(Firefox)を立ち上げてネットにアクセスする際、毎回デフォルトの設定に戻ってしまうというものだ。
対策
以下の手順で、(1)既存のクッキーの削除と、(2)クッキーのサイト許可登録を行うことで、改善を得た。
(1) 既存のクッキーの削除の手順
- メニューバーから、ツール>オプション...を、選択
- 表示されたオプションウィンドウの上段の「プライバシ」ボタンを、押下
- Cookieペインの「Cookieを表示」ボタンを押下
- 表示されるCookieウィンドウ中のサイトリストから、Google.com, Google.co.jpに対して、5.を、実施
- 「Cookieを削除」ボタンでクッキーを、削除
(2) クッキーの許可登録
- メニューバーから、ツール>オプション...を、選択
- 表示されたオプションウィンドウの上段の「プライバシ」ボタンを、押下
- Cookieペインの「例外サイト(E)...」ボタンを、押下
- サイトのアドレス入力で、Google.com, Google.co.jpを、「許可」で、追加
結果
(1)と(2)を併せて行うことで、Googleの表示設定の内容が、PCの再起動後も、ちゃんと設定どおりに表示されるようになった。
ラベル:
Cookie,
CT-TIPS,
Firefox,
google,
iGoogle,
クッキー,
セルフサーチフィルタリング,
ブラウザ,
検索結果の表示件数表示,
表示設定
登録:
投稿 (Atom)