2014年6月7日土曜日

isolated storage エラー

Microsoft Visual Studio Express 2013 for Web

Silverlightアプリケーション


isolated storageを試してみようと思ったら次のエラー

'System.IO.IsolatedStorage.IsolatedStorageFile' に 'GetUserStoreForDomain' の定義がありません。


どういうことなんだ

2013年12月12日木曜日

標準出力先の文字エンコードが異なってもPythonのコードを変更せずに済む方法


問題:

Python 2.7を使用してSublime Text 2でBuildした際に,
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-7: ordinal not in range(128)
となる.

条件:

マルチバイト文字を使用した,標準出力を行っている.

原因:

unicode型をstr型のエンコードが正常にいっていない.

解決策:

以下を,標準出力が行われる前に貼付.
import locale,codecs
enc = locale.getpreferredencoding();
sys.stdout = codecs.lookup(enc)[-1](sys.stdout)


解説:


Python 2.7 で日本語などのマルチバイト文字を扱う場合,次のように'の前にuを付けて使用する.
uni = u'日本語の文字列'

この変数uniを標準出力に表示させる場合,単に
print uni
とすることで大抵は正常に実行される.

ここで,実際に行われていることは,例えばコマンドプロンプトであれば
print uni.encode('cp932')
というように,cp932の文字コードでuniをエンコードした結果をprintしている.

このときに,エンコーディングに使用される文字コードは
sys.stdout.encoding
から参照することができる.


では,なぜSublime Text 2上でBuildするとエラーが発生したのか.
私の環境で,sys.stdout.encodingを参照してみたところ,帰ってきた値は
None
だった.

この場合,Python 2.7 ではunicode型からstr型からのエンコーディング時に
デフォルトでasciiを使用する.

当然ながら,日本語はasciiに存在しない文字であるため,エラーが発生ししてしまう.

私の環境ではSublime Text 2の標準出力はutf-8を利用しているので,
print uni.encode('utf-8')
と明示的に文字コードを指定してあげれば,正常に表示される.

しかしながら,このコードをそのままコマンドプロンプトなどの
標準出力文字コードが異なるターミナル上で実行すると
文字化けが起きてしまう(当たり前だが).


とりあえず,ネットの情報から以下のコードを追加すると,
他のターミナルでもある程度はそのまま表示されると思う.

enc = locale.getpreferredencoding();
sys.stdout = codecs.lookup(enc)[-1](sys.stdout)
ここで
enc = locale.getpreferredencoding()
そのターミナルで使用している文字コードを取得(?).

sys.stdout = codecs.lookup(enc)[-1](sys.stdout)
で,標準出力で使用する文字コードを指定する.

参考

2013年4月2日火曜日

avast!が無効になってしまったときの対処法

症状:

  • avast!のアンチウィルスが無効になり,有効にできない.
  • 「全て解決」を選択しても,サービスがシャットダウンされてしまう.
  • ライセンスファイルなどに問題はない.
状況:
  • Windows 7 でMacTypeをインストールしている.
  • 最近,avast!のアップデートを行いバージョンを8にした.


原因:

  • avast!8とMacTypeの干渉


対処:

 1. タスクトレイのMacTrayを右クリックして,プロセスマネージャーを起動.
   (タスクトレイにアイコンがなければ,スタートメニューからMacType Trayを起動して再度試す)

   

 2. 以下のプロセスを除外する.
  • AvastSvc.exe
  • AvastUI.exe
  • afwServ.exe


 3. PCを再起動して完了.



参考:

2013年2月25日月曜日

latexmk

latexmkのオプションは以下のサイトのdocumentationを参照。

http://www.phys.psu.edu/~collins/software/latexmk-jcc/


sublime text 2 + LaTeX


sublime text 2でビルドしようとするときに出るエラー

・Decode error - output not utf-8
LaTeX.sublime-buildに次の行を追加する。
"encoding": "cp932",

"windows":
{
...

"cmd": ["texify",
"-b", "-p",
"--tex-option=\"--synctex=1\""
],
"encoding": "cp932",
"path": "",

...
}


 ・[Error 2] 指定されたファイルが見つかりません。

(1) 環境変数Pathが正しく設定されていない場合は設定する。
(2) 設定している人は落ち着いてPCを再起動する。

解決しなかった人は別の方法を試してください。

・Latexmk: -dvipdf bad option
-dvipdfオプションを消す。
追記
正しくは-pdfdvi
詳細はlatexmkのオプションを参照のこと。

2013年1月24日木曜日

Homebrewの前にMacTexを入れてしまった

MacにTex環境を整えようと,Homebrewで

$ brew install tex

と打つと,「MacTexを使って入れてね☆(ゝω・)v」と言われます.


そのまま何も考えずに,MacTexのホームページからMacTex.pkgをダウンロード.
pkgからインストーラを起動し,「続ける」を連打した結果.

/usr/local/bin/

にghostscriptやらのフォルダがroot権限で出来上がりました.
(/usr/local/binはHomebrewが管理するファイルが格納される場所)

もちろん,Homebrewの管理下はないため,
几帳面な人にとっては非常に精神衛生上よろしくないことに.


てなわけで綺麗にしていきます。

ghostscript

$ brew install ghostscript

でインストール

最後,リンクがうまくいかないのでやり直してと言われる.

$ brew link --overwrite --dry-run ghostscript

と打つと,MacTexで入れたghostscript関連の競合しているファイルがリストで表示される.

$ brew link --overwrite ghostscript

と打つと,リストのファイルが全て上書きされる.

しかし,まだエラーが

$ brew link --overwrite ghostscript
Linking /usr/local/Cellar/ghostscript/9.06... Warning: Could not link ghostscript. Unlinking...

Error: Could not symlink file: /usr/local/Cellar/ghostscript/9.06/share/ghostscript/Resource
/usr/local/share/ghostscript is not writable. You should change its permissions.

権限を変更しろといわれるので

$ sudo chown -R ユーザ名:admin /usr/local/share/ghostscript

でOK。

その後、

$ brew link ghostscript
とすれば、
Linking /usr/local/Cellar/ghostscript/9.06... 61 symlinks created


となる。

また、
brew doctor
とすると、
Warning: Some directories in /usr/local/share/man aren't writable.
This can happen if you "sudo make install" software that isn't managed
by Homebrew. If a brew tries to add locale information to one of these
directories, then the install will fail during the link step.
You should probably `chown` them:

    /usr/local/share/man/de
    /usr/local/share/man/de/man1

となったので、さっきの要領でこちらも権限を変更する。

$ sudo chown -R ユーザ名:admin /usr/local/share/man

OK。


imagemagick

$ brew install imagemagick
と、打つ。

Warning: Could not link imagemagick. Unlinking...
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
You can try again using `brew link imagemagick'

ここでも、リンクが上手くいかないといわれるので解決する。

$ brew link --overwrite --dry-run imagemagick
Would remove:
/usr/local/etc/ImageMagick/type.xml
/usr/local/etc/ImageMagick/type-windows.xml
/usr/local/etc/ImageMagick/type-ghostscript.xml
/usr/local/etc/ImageMagick/type-dejavu.xml
/usr/local/etc/ImageMagick/thresholds.xml
/usr/local/etc/ImageMagick/quantization-table.xml
/usr/local/etc/ImageMagick/policy.xml
/usr/local/etc/ImageMagick/mime.xml
/usr/local/etc/ImageMagick/magic.xml
/usr/local/etc/ImageMagick/log.xml
/usr/local/etc/ImageMagick/delegates.xml
/usr/local/etc/ImageMagick/colors.xml
/usr/local/etc/ImageMagick/coder.xml
/usr/local/bin/convert
/usr/local/share/man/man1/convert.1

こんもり。全部上書きします。

$ brew link --overwrite imagemagick
Linking /usr/local/Cellar/imagemagick/6.8.0-10... Warning: Could not link imagemagick. Unlinking...

Error: Permission denied - /usr/local/etc/ImageMagick/type.xml

権限がないと言われたので、権限を変更、その後再度実行。

$ sudo chown -R inabakengo:admin /usr/local/etc/ImageMagick

$ brew link --overwrite imagemagick
Linking /usr/local/Cellar/imagemagick/6.8.0-10... 71 symlinks created

OK。

MacTex


公式のMacTex.pkgからインストーラを起動。
途中のInstalation Type画面のカスタマイズボタンを押し、
GhostscriptとConvert-IMのチェックを外しておく。

後はそのまま。

インストールが完了したら、TexLive Utilityを起動し、自動アップデートを行う。

更新情報がうまくダウンロードできなかったらリポジトリのURLを変えてみる。
設定→リポジトリを管理→好きなサイトを選択。

その後、「作業→すべてのパッケージを更新」とする。




2013年1月22日火曜日

igo-phpを使って形態素解析をする方法

XAMPP for MacのPHPでMecabを使おうとして挫折した愚か者のメモ。

形態素解析をもっと簡単に使える方法を探す
igo-phpを発見。

READMEによると、

これは「Igo - Java形態素解析器」の PHP による実装です。 Igo は、MeCab由来の辞書フォーマットを用い、ほぼ MeCab と同様の解析結果を提供する形態素解析プログラムです。 Igo-phpは、Igoと同様の形態素解析と分かち書きの機能を提供します。

とのこと。素晴らしい。ちなみにigoの本家はこちら

早速、READMEに書かれている手順でインストール。


igo-phpのダウンロード
展開後、好きな場所にコピーし、php.iniのinclude_pathに追加する。

igo本体のダウンロード
mecabの辞書をダウンロード
jarファイルと辞書フォルダを両方共ホームディレクトリにコピー。
以下のコマンドを入力する。

$ java -cp igo-0.4.5.jar net.reduls.igo.bin.BuildDic ipadic mecab-ipadic-2.7.0-20070801 EUC-JP

と、何やらエラー

### Build word trie
### Build word dictionary
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2882)
at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100)
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:390)
at java.lang.StringBuilder.append(StringBuilder.java:119)
at net.reduls.igo.dictionary.build.WordDic.buildWordInfo(Unknown Source)
at net.reduls.igo.bin.BuildDic.main(Unknown Source)

このエラーはJava heap spaceが不足していることが原因だそうなので、javaコマンドに-Xmxオプションで適当なヒープサイズ(最大値)を指定しておく。
-Xmx1024mを追加。
再度、実行。

java -Xmx1024m -cp igo-0.4.5.jar net.reduls.igo.bin.BuildDic ipadic mecab-ipadic-2.7.0-20070801 EUC-JP

### Build word trie
### Build word dictionary
### Build matrix
### Build char-category dictionary
DONE

出来たっぽい。
あとは、作成されたipadicフォルダを適当な場所にコピーすれば、辞書が使用可能に。

とりあえず、PHPから形態素解析をしてみる。
<?php
    require_once 'Igo.php';

    $igo = new Igo("/home/user/ipadic");
    $result = $igo->parse("すもももももももものうち");
    print_r($result);
    ?>

実行結果

Array
(
    [0] => Morpheme Object
        (
            [surface] => すもも
            [feature] => 名詞,一般,*,*,*,*,すもも,スモモ,スモモ
            [start] => 0
        )

    [1] => Morpheme Object
        (
            [surface] => も
            [feature] => 助詞,係助詞,*,*,*,*,も,モ,モ
            [start] => 3
        )

    [2] => Morpheme Object
        (
            [surface] => もも
            [feature] => 名詞,一般,*,*,*,*,もも,モモ,モモ
            [start] => 4
        )

    [3] => Morpheme Object
        (
            [surface] => も
            [feature] => 助詞,係助詞,*,*,*,*,も,モ,モ
            [start] => 6
        )

    [4] => Morpheme Object
        (
            [surface] => もも
            [feature] => 名詞,一般,*,*,*,*,もも,モモ,モモ
            [start] => 7
        )

    [5] => Morpheme Object
        (
            [surface] => の
            [feature] => 助詞,連体化,*,*,*,*,の,ノ,ノ
            [start] => 9
        )

    [6] => Morpheme Object
        (
            [surface] => うち
            [feature] => 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
            [start] => 10
        )

)
以上。