Pages - Menu

2012-12-22

Home Group Listener サービスが開始できない

Home Group Listenerが起動できず、エラー番号:-2147023143を吐く問題。
原因はよく分からないが、Windows Firewallサービスを開始することで解決するようだ。
参考
Windows Forum
HomeGroup Listener Error -2147023143

Peer Name Resolution Protocol サービスが開始できない

MicrosoftのPeerNetworking(リモートアシスタンスやホームグループなど)に必要な次のサービスが起動できない問題

  • Peer Networking Grouping (エラー:依存関係のサービス)
  • Peer Name Resolution Protocol (エラー:0x80630801)

原因はPeerNameResolutionProtocolのサービスファイルが壊れているのが原因のようだ。
解決策は以下の通り。
以下のファイルを消去する(idstore.sstはサービス開始時に自動生成される)。
C:\Windows\ServiceProfiles\LocalService\AppData\Roaming\PeerNetworking\idstore.sst
参考
Windows Forum
Can't start Peer Name Resolution Protocol

2012-12-16

VMWare上のUbuntuへのファイルコピー

VMWareでは、ドラッグ&ドロップまたはコピー&ペーストの単純な操作で、仮想OS上にファイルをコピーすることができる。

ただし、たまに指定したディレクトリへのコピーに失敗することがある。
原因はファイルサイズだろうか。

その場合は、次のテンポラリディレクトリにファイルが置かれていることがあるので、チェックしてみる。
/tmp/VMwareDnD/

2012-12-08

EXCELでの簡易的なクエリ

ある表を別の表から参照したいときに便利なのがVLOOKUP関数。

example

  A B C D E
1 12月6日 20   12月1日 #N/A
2 12月8日 30   12月2日 #N/A
3       12月3日 #N/A
4       12月4日 #N/A
5       12月5日 #N/A
6       12月6日 20
7       12月7日 #N/A
8       12月8日 30
9       12月9日 #N/A

E2=VLOOKUP(D2,A:B,2,)

となっている。引数は次の通り:
1:検索値
2:検索範囲
3:返り値としたい値の列番号
4:検索方法(デフォルトでFALSE:完全一致、TRUEを指定すると近似一致(=LOOKUPと同じ?))

2012-11-27

XML 基本的な注意点メモ

XML構造

ルート要素は文書内でユニークなものでなければならない。

NG例
<?xml version="1.0" encoding="utf-8"?>
<book>
    <title>abc</title>
</book>
<book>
    <title>efg</title>
</book>
ルートエレメント(book)がユニークでないので、XMLパーサがエラーを返してくる:The markup in the document following the root element must be well-formed.

ルートエレメント<books>でまとめればOK。
<?xml version="1.0" encoding="utf-8"?>
<books>
    <book>
        <title>abc</title>
    </book>
    <book>
        <title>efg</title>
    </book>
</books>

DTDの記述

エレメントの宣言を忘れていたりすると、"Element type *** must be declared."といったエラーが返ってくる。特にルートエレメントの宣言忘れに注意。
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE books[
<!ELEMENT books (book)*>
<!ELEMENT book (title)*>
<!ELEMENT title (#PCDATA)>
]>
<books>
    <book>
        <title>abc</title>
    </book>
    <book>
        <title>efg</title>
    </book>
</books>

2012-11-12

[Win7] ログイン画面の背景画像の設定

次の方法で背景画像を設定できる

  1. レジストリエディタで以下のキーの値を設定
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\Background OEMBackground (DWORD) = 1
  2. 以下のディレクトリに画像をおく(形式はjpg、250KBまで)
    C:\Windows\System32\oobe\info\backgrounds\backgroundDefault.jpg
参考
[Windows7] ログオン画面の背景をかっこいい画像に変更する方法

2012-10-29

Photoshopで名刺づくり

Photoshop(またはIllustrator)で名刺をデザインし、名刺用紙(A4, 10枚分)で印刷する方法
※ここではPS7.0を使用
  1. 91mm×55mmのカンバスサイズで名刺をデザイン、psdで保存
  2.  別名で保存(画像を統合後は再編集できないため)
  3. レイヤー > 「画像を統合」
  4. (背景)レイヤーを複製して名刺レイヤーとする
  5. 「カンバスサイズの変更」 > 182mm×275mmに変更
  6. ガイドを作成(x=91mm, y=55, 110, 165, 220)
  7. 名刺レイヤーを複製し、ガイドにしたがって配置(2×5)
  8. プリントプレビュー > 「画像を中央に配置」にチェック
  9. プリンタの設定を確認して印刷

2012-10-27

複数行にマッチする正規表現

JavaScriptのString.matchメソッドでは、1行しかマッチングが行われない。
正規表現内に\nを含めても良いが、次のように書くことですべての行でマッチングが行われる。
String.match(/[\s\S]/)

参考
FFFF JavaScriptで改行にもマッチする正規表現Add Star

2012-10-19

invalid XML character

An invalid XML character (Unicode: 0x1e) was found in ...
というエラーメッセージを吐くことがある。
原因はよく分からないが、とりあえず、replaceAllメソッドで回避することは可能。
String.replaceAll("\\x1e", "")
\x1eは、16進数コード1eの文字。

ついでに、ネットでコードを調べているとよく出てくる"\"は、文字コードの問題でスラッシュになっているが、"¥"のことである。

2012-10-18

Protegeの関連付けができない問題

何かしらの条件で、Protegeを拡張子に関連付けられなくなる問題があるようである。
症状は次の通り。
  • 「ファイルを開くプログラムの選択」でProtege.exeを指定しても、エクスプローラが反応しない
  • コンパネの「既定のプログラム」 も同様に変更不可
原因は不明。
(私の場合、Protege.3.4.6を一旦アンインストールし、Protege3.4.8をインストールし直したところ、この症状になった)

仕方ないのでレジストリを直接いじって修正。
(レジストリの変更は自己責任で)

  1.  Protegeを開き、適当にプロジェクトを保存する
  2. *.owl *.pprj が作成される
    (*.owlのアイコンがProtege(またはLaunchAnywhere)→解決)
  3. *.pprjは少なくともProtegeに関連付けされてるのを確認
  4. Regeditを起動
  5. タスクマネージャーのプロセスでexplorer.exeを終了
  6. 次のキーを開く
    \HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts
  7. ここで、.owl以下のサブキーすべてを、.pprjと同じになるように変更する
  8. Regedit終了
  9. タスクマネージャー(win7/Ctrl+Shift+Esc winXP/Ctrl+Alt+Delete)を開き
    新しいタスクの実行からExplorerを実行

以上で関連付けが行われる。

String.splitメソッドによるOutOfBoundsException

String.splitメソッドで分割すると、値を代入する配列全体が初期化される。
例えば
String[] str = {"a", "b", "c"};
String x = "abcde";
str = x.split("g", 2);
としたとき、当然文字列xには"g"は含まれない。そのため、
str[0] -> "abcde"
となる。
ところで、予め初期化しておいた配列の第2・3要素は開放されてしまうことに注意する。
つまり、参照しようとするとエラーとなる。
str[1] -> OutOfBoundsException : 1
str[2] -> OutOfBoundsException : 2
そのため、第2以降の要素を用いる場合は、ほぼ必ずstr.lengthの判定が必要ということになる。

2012-10-17

Javaでの正規表現

正規表現では"."や"?"などのいくつかの文字は特殊文字となる。
それらの文字を検索条件に含めるためには、"\"でエスケープする必要がある。
しかし、Javaでは"\"自体がエスケープ文字として認識されてしまうため、二重にエスケープする必要がある。

example
"11.2 Test"  にマッチする正規表現
regex = "[\d]+" + "\\." + "[\d]+" + "\\s" + ".*"

2012-10-12

Javascriptでのローカルファイルの読み込み

FileAPIを使ってローカルファイルの操作ができる。
Fileタイプのinputを用いる。
<input type="file" id="fileId"/>
注意すべきは、fileの実体は配列になっていることである。
ファイルが一つの場合でも、[0]に格納されている。
document.getElementById("fileId").files[0]
ファイルの内容を読み出すためには、FileReaderを用いる。
var fileData = document.getElementById("fileId").files[0];
var reader = new FileReader();
reader.onload = function(evt){
        document.getElementById("text").innerHTML = evt.target.result;
}
reader.readAsText(fileData, "utf-8");
参考
ASCII.jp - FileAPIでブラウザーからローカルファイルを操作


2012-10-03

String#matchesメソッド

簡易的な検索にはcontains, startsWith, endsWithメソッドなどが使える。
正規表現を用いた高度な検索が必要な場合は、matchesメソッドを用いる。

ex)文字列aに数字が4回以上含まれるか
a.matches(".*"+"[0-9]{4,}"+".*")
参考
JAVA Developer

2012-09-30

Firefoxでgoogleリーダーやカレンダーが表示されない

Firefoxを最新バージョンにアップデートしてから、googleリーダーやカレンダーがうまく動作しなくなった。症状は次の通り。

・リーダーは左側のコラムのみ表示される
・カレンダーは本体は表示されるものの、予定の追加等のアクションができない

原因はアドオンのIEtab(plus)のようで、無効にしたところ、正常に動作するようになった。
Firefoxのアップデートと相性が悪かったようである。
IEtabの改善アップデート待ち(2012/09現在)。


2012-09-25

Java ファイルに出力


PrintWriterクラスを使うと便利なようだ。
標準出力のようにprintやprintlnが使えて分かりやすい。
最後はclose()で閉じる。
File file = new File("test.txt");
PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file)));
pw.print("hello world");
pw.close();
参考
JavaDrive

2012-09-24

ドメインのIPアドレスを調べる

コマンドプロンプトを使った小ネタ。
pingコマンドを用いると、ドメインのIPアドレスを調べることができる。

example
C:\Users\xxx>ping google.co.jp

google.co.jp [173.194.38.120]に ping を送信しています 32 バイトのデータ:
173.194.38.120 からの応答: バイト数 =32 時間 =3ms TTL=55
173.194.38.120 からの応答: バイト数 =32 時間 =4ms TTL=55
173.194.38.120 からの応答: バイト数 =32 時間 =7ms TTL=55
173.194.38.120 からの応答: バイト数 =32 時間 =7ms TTL=55

173.194.38.120 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 3ms、最大 = 7ms、平均 = 5ms

C:\Users\xxx>


エクスプローラーの表示が最新の情報に更新されない

あるときから、エクスプローラーの情報の更新が遅くなった。
フォルダオプション > 設定をリセット で解決。
原因は不明。

2012-07-12

ログオン時に実行されるタスクのレジストリキー

以下に登録されているタスクがログオン時に実行される。
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce 
参考
Windows XP レジストリの Run キーの定義

2012-06-28

cd でドライブを切り替える

コマンドプロンプトのcdコマンドではディレクトリの変更ができるが、ドライブを変更する場合は/dオプションが必要。
C:\test01\> cd /d D:\test02\
D:\test02\>


2012-06-06

スクリーンセーバーのショートカットを作成

Windows標準のスクリーンセーバーは、以下に保存されている。
Windows - System32 - *.scr
それを開けばスクリーンセーバーが起動するので、そのショートカットを作成する。

2012-05-24

Java Script の日付オブジェクト

  1. 日付オブジェクトの生成
    dd = new Date();
  2. 年月日の値の取得と表示
    yy = dd.getYear();
    mm = dd.getMonth() + 1;
    dd = dd.getDate();
    if (yy < 2000) { yy += 1900; }
    if (mm < 10) { mm = "0" + mm; }
    if (dd < 10) { dd = "0" + dd; }
    document.write(yy + "/" + mm + "/" + dd);  
参考
ととほのjavascript入門

2012-05-22

Googleリーダーでフィードを統合する

Googleリーダーを使って、複数のRSS/ATOMフィードを統合してひとつのフィードにまとめる方法。

  1. 「ホーム」を開く
  2. 「ディレクトリの一覧から探したり、(略)」のディレクトリをクリック
  3. 下のほうにある「パッケージを作成」
  4. パッケージを作成し、「ウェブサイトやブログにリンクを追加」
  5. 右上の「Atom」フィードを選択

2012-05-19

RSSをHTMLでまとめて表示する

複数のRSSをまとめたい場合、以下のサイトでひとつのRSSにまとめる。
The Search RSS Remix

※ただし、RSS(.xml)とATOM(.rdf)では情報量に差があることに気をつける必要がある。
例えば、RSSごとにリンク元のページ名を表示したい場合はATOMを使う。

RSS

title,link,guid,pubDate,description

ATOM

title,link,updated,auther(name,uri),id,summery

RSSの表示にはいくつかツールがあるが、GoogleAPIが最も自由度が高く便利である。

Google Developers
Google Feed API Developer's Guide
Code PlayGround

2012-04-19

ネットワークプリンタの設定

ネットワークプリンタの設定方法
(Brother MFC-930CLWN)

ネットワークの構築

PC・プリンタともにルータのLAN側、またはPCがLAN側ならOK。
プリンタがLAN側、PCがWAN側だと出来るかは不明。

プリンタの設定

IPアドレスを自動取得にする。
レポート印刷→LAN で印刷が出来れば、設定はOK。
レポート印刷ができない場合は、一旦再起動。

PC側の設定

メーカーHPから、ドライバをDLしてくる。
インストールでLAN(カスタム)を選択。
インストールするものは、少なくともドライバだけでOK。
プリンタ側のIPを入力。
再起動。

※プリンタにpingが通っていても、印刷ができないことがある。
プリンタを再起動してみると直るかもしれない。

LocalHostのファイルが更新されない

Tomcatなどのサーバーにアップロードしたファイル(cssファイルなど)が更新されない場合は、ブラウザ側が一時フォルダを参照している可能性がある。
ブラウザキャッシュを消去すると解決する。

2012-04-14

無線LANルータ メモ

無線LANルータはルータ+アクセスポイントが一緒になったもの。
ルータがある環境では、アクセスポイントだけで十分である。

ただし、ルータに比べてアクセスポイントは数も少ないし、高いことが多い。それは、アクセスポイントのニーズが少ないからであり、メーカーとしても、ルータ機能のON/OFFができる無線LANルータを作ったほうが安上がりだからである。
そのため、ルータ機能は不要でも、無線LANルータを買うほうが賢明だろう。

規格

11n/a/b/gがベター
*最新のハードでは必要なこともある

通信速度]

そんなに気にしなくても良い
*最大300Mbpに対応してるPCはほとんどない

パワー

3LDK以上はハイパワーが良い
参考
BB Watch

USB延長ケーブルとUSBリピーターケーブルの違い

USB延長ケーブル

単純に延長するだけで、USBの規格に則り5mまでしか保証されない。
500mAまでの機器しか使えない?※

USBリピーターケーブル]

信号の減衰を補うために、信号増幅・補正回路がある。
最長20mまで。
延長する度に電力を消費することに注意。


2012-02-07

複数ファイルの選択のTips

Ctrl+Click または Shift+Click で複数ファイルを選択し、ファイル名の変更などの操作を行うときは、最後に選択されたものが最初に処理される。

例えば、3個のファイルの名前を変更するとき、次の操作をしたとする。
  1. 先頭のファイルを選択
  2. Shiftを押しながら最後のファイルを選択
  3. F2(名前の変更)を実行してtestと入力
すると、変更後のファイル名は次のようになる。
  • もとの1つ目のファイル→test(2)
  • もとの2つ目のファイル→test(3)
  • もとの3つ目のファイル→test(1)
ソート順が変わってしまうため、困ることが多い。
選択の順番を変えることで、これを解決できる。
  1. 最後のファイルを選択
  2. Shiftを押しながら最初のファイルを選択

2012-01-31

vocabulary memo

  • state-of-the-art 最先端の
  • "as is" 現状の
  • flash crowd webページへのアクセス過多

2012-01-28

[Win7] ライブラリのパス

ライブラリの実体は以下のディレクトリに入っている。

フォルダオプション - 「保護されたオペレーティングシステムファイルを表示しない」のチェックを外す。
C:\Users\[ユーザー名]\AppData\Roaming\Microsoft\Windows\Libraries


Shift / Ctrl + マウス操作

意外と知っておくと便利なマウス操作。

ファイル操作

Ctrl + クリック → 複数選択
Shift+クリック → 最初に選択したファイルからクリックしたファイルまでを選択

画像操作

Ctrl+サイズ変更 → 左右対称にサイズ変更
Shift+サイズ変更 → 縦横比固定でサイズ変更


2012-01-25

[Excel] 保存時のプライバシー警告

マクロ付きのxlsmファイルなどを保存するとき、毎回次のようなメッセージが表示される。

プライバシーに関する注意:このドキュメントには、マクロ、ActiveXコントロール、XML拡張パックの情報、またはWebコンポーネントが含まれています。これらにはドキュメント検査機能で削除することができない個人情報が含まれる場合があります。

これは次のようなことを意味する。

  • 非表示になっているが、データとして残っている情報がある可能性がある
  • 作成者などのメタデータが保存されている可能性がある
  • ドキュメント内に個人情報を含んでいる可能性がある

しかし、いちいち表示されるのは鬱陶しい。
このメッセージは次の方法で非表示にすることができる。

Excel 2007

  1. 左上 > Excelのオプション
  2. セキュリティセンター > セキュリティセンターの設定
  3. プライバシーオプション > ドキュメント固有の設定
  4. 「ファイルを消去するときにファイルのプロパティから個人情報を消去する」
    のチェックをはずす

参考
人力検索はてな ― エクセル2007で保存しようとすると
Microsoft Office


2012-01-24

[Word] 本文中に図番号を挿入

手動で入力すると、後から図や表を加えた際に、以降の番号がすべてずれる。
なるべくテキストではなく、参照を用いることを推奨。

  1. 参考資料 > 相互参照
  2. 参照する項目で、図や表を選ぶ
  3. 相互参照の文字列を選択
    (図番号のみ表示したい場合は、「図番号とラベルのみ」)
  4. 図表番号の参照先を選択して「挿入」

※途中で図を加えるなどの変更後は、フィールドを更新しないと表示が反映されない
※リンクは更新せずとも保たれている

googleIME で入力言語入れ替えができない

googleIMEを使っている際に、ホットキーによる入力言語の入れ替え(たとえばMicrosoftOfficeIME)
が出来ないときの対処法。

googleIMEはデフォルトで、ホットキーによる入力言語の入れ替えを禁止しているため、それを解除する。

  1. テキストサービスと入力言語 で「googleIME」を選択し、プロパティ
  2.  「その他」タブで、「ホットキー(Ctrl+Shift)によるIMEの切り替えを無効化する」
    のチェックをはずす。

[Excel] 簡単なマクロメモ

文字列の検索

e.g.
Sheet1!A2の文字列を検索
戻り値は Cells(lngYLine, intXLine) の形式
Dim lngYLine As Integer
Dim intXLine As Integer
Dim Obj As Object
   
Set Obj = Worksheets("Sheet2").Cells.Find(Worksheets("Sheet1").Range("A2").Value)
    If Obj Is Nothing Then
        MsgBox "日付が見つかりませんでした。"
    Else
        lngYLine = Worksheets("Sheet2").Cells.Find(Worksheets("Sheet1").Range("A2").Value).Row
        intXLine = Worksheets("Sheet2").Cells.Find(Worksheets("Sheet1").Range("A2").Value).Column
        Worksheets("Sheet2").Cells(lngYLine, intXLine + 1).Value = Worksheets("Sheet1").Range("D14")
    End If



現在の日付を取得

e.g.
2012年1月24日 のような形式。
Formatで変更可。
Dim myDate As Date
myDate = Date
Worksheets("Sheet1").Range("A2").Value = Format(myDate, "Long Date")

[Excel] マクロ実行ボタンの作成

  1. 挿入 > 図 > 適当な図形を作成
  2. 図形を右クリック、マクロの登録

マクロ登録後、クリックでマクロが実行される。
移動やプロパティを設定する場合は右クリック。

2012-01-23

ログイン・ログアウトの時間を確認する方法

  1. コントロールパネル - 管理ツール - イベントビュアー
    (または、eventvwr.mscを指定して実行)
  2. カスタムビューの作成
  3. フィルターを次のように設定
    • 「ログごと」にチェック
    • イベントログ:「システム」
    • イベントソース:「Power-Troubleshooter,Winlogon」にチェック 
  4. カスタムビューを保存

次のイベントが確認できる
  • [ログオン] Winlogon(Event ID:7001)
  • [ログオフ] Winlogon(Event ID:7002)
  • [スリープからの復帰] Power-Troubleshooter(Event ID:1)

コントロールパネルの実体

コントロールパネルの各アイテムの実体は

%SystemRoot%\system32

以下にある、拡張子.cplのファイル。
PATHが通っているので、「ファイル名を指定して実行」から実行可能。

私的によく使うもの
マウス main.cpl
プログラムの追加と消去 appwiz.cpl
地域と言語のオプション intl.cpl

参考
Windows TIPS

2012-01-22

[Network] 突然のネットワーク切断への対処

たまに何の予兆もなくネットワークから切断されることがある。
切断の原因は不明。ルーターの問題か。
後述する方法ですぐに復帰はできる。

※参考までに接続環境
プロバイダ:USEN(マンション一括タイプ)
スイッチングハブ使用
Windows7 SP1

復帰方法

  1. コマンドプロンプトで ipconfig /release
  2. 続いてipconfig /renew 

2012-01-21

[Word] セクションの使い方

セクションの設定

ページレイアウト > ページ設定 > セクション区切り
「次のページから開始」など適当なものを選択

セクションの利用

セクションを分けておくことで、次のような使い方ができる。
  • ヘッダーに章題目を表示
  • 途中のページからページ番号をふる
前のセクションを引き継いでしまう場合があるため、
新しいセクションを編集するときは、「前と同じヘッダー/フッター」のチェックをはずず。


2012-01-20

まめ知識

.GIF

本来の読み方は"ジフ"ではなく"ギフ"。
日本人のほとんどは"ジフ"と読んでいる。

(2013.07.18追記)
gif開発者であるスティーブ・ウィルハイト氏は、"ジフ"が正しい読み方であると説明した。
「gif」の読み方「ジフ」で確定

ぬるぽ

NullPointerExpcetionのこと。
"NullPointerExceptionを「ぬるぽ」と呼ぶスレ"が元ネタ。

2012-01-17

[Java] 例外処理

必ずしも値が入っているわけではない変数を扱う場合は、java.lang.NullPointerExceptionが返ってきたりする。
そんなときは例外処理を使うのが便利である。

例) SPARQLのOPTIONAL構文で Literal note に値が入っているか不明なとき

Literal note = (Literal) qs.get("note");
String note_s;
try{
      note_s = note.toString();
}catch(Exception e){
      note_s = "null";
}

[Eclipse] 実行パスの変更

参照したい外部ファイルが大量にある場合、実行パスを変更すると楽になる。

  1. クラス(またはパッケージ、プロジェクト)を右クリック > プロパティー
  2. 「実行/デバッグ設定」 > クラスを選択して「編集」
  3. 「引数」タブの作業ディレクトリーを「その他」にして指定

Javaメモ - Static修飾子

Static修飾子

Staticなものはすべてクローン、もとの変数を参照している。
Staticでないものは、すべて別々のオブジェクト。

Staticなものは、オブジェクトを生成しなくてもよい。
Staticでないものは、newを用いて定義する必要がある。

参考
Javaの道

2012-01-16

[Java] 文字列の桁埋め

/*
 * 文字列のバイト長を返すメソッド
 */
public static int getByteLength(String value) {
    int length = 0;
    for (int i = 0; i < value.length(); i++) {
        char c = value.charAt(i);
        if (c >= 0x20 && c <= 0x7E) {
            // JISローマ字(ASCII)
            length++;
        } else if (c >= 0xFF61 && c <= 0xFF9F) {
            // JISカナ(半角カナ)
            length++;
        } else {
            // その他(全角)
            length += 2;
        }
    }
    return length;
}

/*
 * 文字列の桁あわせを行うメソッド
 * @param string 文字列
 * @param int 長さ
 * @return 指定した長さの文字列
 */
public static String pad(String str, int len){
    int bytelen = getByteLength(str);
    for(int i=0; i<(len - bytelen);i++){
        str = str + " ";
    }
    return str;
}
※getByteLengthメソッドはKigoWiki様からお借りしました

StringFormatではダメなのか?

StringFormatでは、全角を含む変数の場合、等幅のコンソールでうまく表示されない。
そのため、半角/全角の判定をした上で空白を埋める必要がある。

参考
Kigo Wiki
Chat&Messenger

[Jena] ARQの問い合わせ、出力結果の整形

ARQエンジンを用いた問い合わせ

ソースは Jena 17章 検索実行エンジン(ARQ) を参照。

出力結果を整形する

Resource型やLiteral型はそのままでは編集できないため、次のメソッドを用いてString型へ変換する。

[Resouce] toString() 
[Literal] getString() toString()

ex)
String stringresource = testresource.toString();
参考
Jena
Interface Resource
Interface Literal

[Eclipse] プロジェクトをインポート

Eclipseでプロジェクトをインポートする方法
  1. ファイル > インポート を開く
  2. 「既存のプロジェクトをワークスペースへ」
  3. 「ルート・ディレクトリーの選択」でプロジェクトフォルダを選択

2012-01-15

EclipseでJenaを使う

EclipseでJenaを使う際の設定

ユーザー・ライブラリーの設定

  1. ウィンドウ(Window) > 設定(Preferences)を開く
  2. Java > ビルド・パス(Build Path) > ユーザー・ライブラリー(User Libraries)
  3. 「新規」で適当な名前をつけてライブラリーを作成
  4. ライブラリーを選択し「JARの追加」で、[jenaインストールディレクトリ]\lib以下のjarファイルをすべて選択

プロジェクトの設定

  1. プロジェクトを右クリック、ビルド・パス(Build Path) > ライブラリーの追加
  2. ユーザー・ライブラリーを選択、jenaのライブラリーにチェックを入れて完了

テストコード
Jena.java
package jenatutorial;

import com.hp.hpl.jena.datatypes.xsd.XSDDatatype;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.rdf.model.Property;
import com.hp.hpl.jena.rdf.model.Resource;

public class Jena {
    public static void main(String[] args){
        Model m = ModelFactory.createDefaultModel();
        String NS = "http://example.com/test/";

        Resource r = m.createResource( NS + "r");
        Property p = m.createProperty( NS + "p");

        r.addProperty( p, "hello world", XSDDatatype.XSDnormalizedString );

        m.write( System.out, "Turtle");
    }
}
次のように出力されればOK。
<http://example.com/test/r>
      <http://example.com/test/p>
              "hello world"^^<http://www.w3.org/2001/XMLSchema#normalizedString> .

参考
A complete beginner's guide to starting a Jena project in Eclipse

2012-01-13

Windows7での休止状態

Windows7ではハイブリッドスリープ機能があり、これが休止状態に取って代わられている。
設定でハイブリッドスリープ機能を停止可能。
スリープにしてもファンが止まらずうるさいなどの場合は休止状態にすると良い。

ハイブリッドスリープ機能の設定方法

コントロールパネル - 電源オプション - プラン設定の変更 - 詳細な電源設定の変更
を開く。
スリープ - ハイブリッドスリープを許可する - オフ

[Lhaplus] 64bit Windowsでの不具合

Lhaplus標準のシェル拡張では32bit版Windows用しか対応していない。
そのため、64bit Windowsではコンテキストメニューに「解凍」や「圧縮」が表示されない。

Lhaplus x64 shell extension の拡張シェルで修正される。

2012-01-12

複数ファイルの一括処理ソフト

文字列置換ソフト

GrepReplace 配布サイト

文字コード変換

KanjiTranslator 配布サイト
※対応文字コードはShiftJIS, ISO-2022-JP, EUC-JP, UTF-8(日本語のみ)となっているが、UTF-8(BOM無し)=UTF-8N、UTF-8(BOM付き)=UTF-8が選択できる。

2012-01-11

Jenaインストール方法 (Windows)

ダウンロード

Apache JenaからJenaをダウンロードする。
解凍して適当なディレクトリに設置する。

環境変数

以下の環境変数を設定する。
ARQROOT  [インストールディレクトリ]\Jena-2.6.4
JENAROOT  [インストールディレクトリ]\Jena-2.6.4

IDEでの利用

EclipseなどのIDEで使う場合の設定。 [インストールディレクトリ]\Jena-2.6.4\lib以下のすべてのjarファイルにCLASSPATHを通す。
詳しくはEclipseでJenaを使うの記事を参照

SPARQLのクエリで日本語を使う

SQARQLのクエリで日本語を使う際、文字コードがShift_JISだと失敗する。
以下のようにrdfファイルとクエリファイルを設定する。

rdfファイル

ヘッダーのencodingを以下のように"UTF-8"にする
<?xml version="1.0" encoding="UTF-8"?>
文字コードを"UTF-8N"で指定保存

クエリファイル

文字コードを"UTF-8N"で指定保存

コマンドプロンプトでの文字化け

コマンドプロンプトで文字化けする際の対処法

文字コード変更

chcpコマンドで文字コードを変更

コマンドプロンプトのフォントを変更

アクセサリ→コマンドプロンプト のプロパティ
または
コマンドプロンプトを起動→タイトルバーを右クリックからプロパティ