Categories: "Freesoftware and Open Source Software" or "Desktop Applications" or "Input Methods" or "OpenOffice.org" or "Distro" or "Debian" or "Ubuntu" or "Linux" or "Programming" or "Erlang" or "Java" or "デバッグ" or "Web Applications" or "b2evolution"

2016/05/22

  10:09:00 by , Categories: Freesoftware and Open Source Software, Web Applications

皆さんは、パスワード管理ソフトウエアにどのような物を使っていますか?

ここ数年、SNSなどWebのサービスを利用することが増えていることに加えて、タブレットやスマートフォンなどで、パスワード入力が面倒に感じるために、弱いパスワードをつかうことで、情報流出や、他人の情報取得のための踏み台になってしまうことが増えています。

そこで、パスワード管理のベストプラクティスを維持するために、パスワード管理ソフトウエアを使うことがとても推奨されます。

  1. パスワードの使い回しをしない.  サービス毎にパスワードを変える
  2. 強度の高いパスワードを使用する .  辞書に乗っている単語や、生年月日を組み合わせない
  3. パスワードの流出の危険が有るときは、変更する。

 
これらを維持するには、手書き&記憶では、もう不可能ですよね.ということで、OSSでは、Keepassというソフトが有効です。

Windowsでは、.NETでうごくKeePass2が提供されています。Linuxでは、Monoで同じバイナリが動きます。Androidでは、Keepass2Android Password Safeというのがあります。iOSでは、MiniKeePassというのが有るようです。

さて、このように安全に管理しているパスワードデータベースですが、利用しているデバイス間で安全に共有する方法がとても悩ましいことになります。
ネットの記事などでは、Dropboxを利用する方法が解説されています。パスワードデータベースの強度を維持するため、マスターパスワードだけではなく、キーファイルも用いて、データベースを安全に保つのが推奨されます。

さて、できれば、Dropboxのようなサービスを使わず、自分の管理の範囲内でこのファイルを維持したいですよね。
そこで、お勧めなのが、Seafileです。

Seafileは、DropboxクローンのOSSで、DropboxのようなことがOSSで実現することができます。
ファイルの同期については、専用クライアントがあって、Windows/Linux/Android/iOSに対応しています。
サーバは、Cで書かれており、コンパクトで高速です。また、Pythonで書かれたWebインタフェースもあり、容易に利用することができます。

Raspberry Piのサーバも公開されているので、自宅Piサーバで運用することも可能です。

実は、Seafileは独自プロトコル以外に、ファイルの同期にhttpをつかったプロトコルもサポートされています。HTTPしかつかえない環境もままありますので利用しやすいですね。

またそのうち、続きを投稿します。

2015/12/25

  20:30:00 by , Categories: Freesoftware and Open Source Software

Link: https://blogs.da-cha.jp/index.php/momokuri/omegat-stardict

 昨年末、「OmegaTで英字郎を変換したStarDict辞書を使う」というエントリをかきました。
 しばらく使っていましたが、やっぱりメモリ消費に我慢ならず、また不満もでてきましたので、夏頃から、OmegaTプロジェクトへの提案を行いました

様々な議論や取り組みがありましたが、最新のバージョンのOmegaT 3.5.3において、StarDict形式の辞書の取扱いをよりスマートに行って、メモリ使用量を削減し、速度が向上しました。

英辞郎を使う場合にも、ストレスなく利用できるようになりました。

ぜひ、利用してみてください。

2015/01/24

  15:50:00 by , Categories: Freesoftware and Open Source Software, Linux, Debian, Ubuntu, Distro

Link: https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1261459

FTPクライアントのFilezillaで、 vsftpdで運用するFTPサーバにFTP over SSL/TLSで接続すると、ディレクトリ一覧取得エラーになる事象が発生します。

これは、vsftpdがセキュリティ維持のために導入した、ssl_session_reuseにfilezillaが対応しているものの、新しいバージョンのGnuTLSの組み合わせではないと、有効に動作しないという問題のためです。

残念ながら、Ubuntu precise 12.04(LTS)や、Trusty 14.04 (LTS)に含まれるFilezillaでは、古いGnuTLS (gnutls26)に対してコンパイルをおこなっているために、このようなエラーになります。

バグトラッカーに対して、一行パッチを提出しました。
https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1261459

Ubuntu Precise 12.04 (LTS)を使っている方は、わたしのPPAから入手も可能です。
https://launchpad.net/~miurahr/+archive/ubuntu/ppa

2014/12/30

  09:01:00 by , Categories: Freesoftware and Open Source Software

通常、アプリケーションの翻訳では、gettextなどのライブラリに
よって、メッセージやメニュー等がDB化され、PO ファイル等の形式になっています。
poeditなどの編集ツールや、汎用のエディタでも編集できますが、
Transifex(https://www.transifex.com/)やTranslateWiki(https://translatewiki.net/)を使うと
便利だとされています。

便利なのは、翻訳メモリという機能が利用できるためです。

詳しくは、OSCでもおなじみのエラリーさん(@brandelune)のOSPN記事が分かりやすいです。
http://www.ospn.jp/press/20101109no3-useit-oss.html

ほかにもこのへんが分かりやすいです。
http://www.slideshare.net/katayama2004/ss-20582795

さて、翻訳メモリで著名なツールは、OSSだとOmegaTです。
OmegaTでは、辞書引きの機能がついています。
StarDictという形式の辞書が使えます。英辞郎のような辞書を変換すれば便利そうですね。
このあたりのことは、以前に書きました。

さて、今月は、OSMの団体のOSMFJの定款を翻訳するというとりくみをしています。
この翻訳を正確に効率良く行うために、ちょっとした工夫をしました。

OmegaTは、チーム連携機能があるので、Githubなどで共有しながら翻訳を協力して
行なっています。
https://github.com/osmfj/teikan-translate

続いて、翻訳の参考例を増やすために、
法務省の日本法令外国語訳データベースシステムから、法令の日本語、英語の対訳を入手し、
http://www.japaneselawtranslation.go.jp/?re=01
法令関係の和英辞書を生成すると共に、用例から翻訳用例DB(tmx)を生成しました。

https://github.com/miurahr/jlaw-tmx

辞書は、 OmegaTのdictionaryディレクトリへ、用例tmxはtmディレクトリに配置することで
翻訳を効率良くしています。その他、フリーの辞書もプロジェクトに配置して、チームメンバーが同じような環境で
翻訳に協力できるようにしています。

2014/12/29

  14:35:00 by , Categories: Freesoftware and Open Source Software, Linux

OmegaTでは、StarDict辞書を使えることを前回触れました。
前回は、英字郎の辞書ソース(TXT形式)をstardict形式に変換できました。

StarDictで使うためには、 /usr/share/stardict/dic/ へ、前回作製したファイルを配置することで使い始めることができます。

さて、OmegaTでは、プロジェクトディレクトリのdictionaryへ配置すれば良いことを前回に述べました。しかしながら、おそらくそのままでは、一向に利用できないものと思います。

というのは、


14101: 情報: Loaded dictionary from '/home/miurahr/translate/dictionary/reiji-136.ifo': 10490ms
14101: FINER: File '/home/miurahr/translate/dictionary/eiji-136.dict.dz' added
14101: FINER: File '/home/miurahr/translate/dictionary/reiji-136.idx' added
14101: FINER: File '/home/miurahr/translate/dictionary/reiji-136.dict.dz' added
14101: FINER: File '/home/miurahr/translate/dictionary/waei-136.idx' added
14101: FINER: File '/home/miurahr/translate/dictionary/waei-136.ifo' added
14101: エラー: Uncatched exception in thread [DirectoryMonitor]
14101: エラー: java.lang.OutOfMemoryError: Java heap space
14101: エラー: at java.util.Arrays.copyOf(Arrays.java:2271)
14101: エラー: at java.io.ByteArrayOutputStream.grow
(ByteArrayOutputStream.java:113)
14101: エラー: at java.io.ByteArrayOutputStream.ensureCapacity
(ByteArrayOutputStream.java:93)
14101: エラー: at java.io.ByteArrayOutputStream.write
(ByteArrayOutputStream.java:140)
14101: エラー: at org.omegat.util.LFileCopy.copy(LFileCopy.java:90)
14101: エラー: at org.omegat.core.dictionaries.StarDict.readFile
(StarDict.java:193)
14101: エラー: at org.omegat.core.dictionaries.StarDict.readHeader
(StarDict.java:95)
14101: エラー: at org.omegat.core.dictionaries.DictionariesManager.fileChanged
(DictionariesManager.java:96)
14101: エラー: at org.omegat.util.DirectoryMonitor.checkChanges
(DirectoryMonitor.java:156)
14101: エラー: at org.omegat.util.DirectoryMonitor.run
(DirectoryMonitor.java:96)

こんなふうにメモリ不足エラーになってしまうからなのです。

OmegaTは、いまのところ辞書をすべてメモリー上に読みこもうとします。
英字郎のように大きな辞書を読もうとすると、既定のメモリ上限にすぐに達してしまいます。

そこで、/usr/bin/omegat/usr/local/bin/omegat(インストール方法によりパスは異なる)をエディタで開いて(スーパーユーザで編集してください)、メモリ上限を上げる必要があります。

既定では


#!/bin/bash
# readlink follows any symbolic links to get the real file
REALOMEGATPATH=`dirname "$(readlink -nf $0)"`
java -jar -Xmx512M "${REALOMEGATPATH}/OmegaT.jar" $*

こんなになっていますので


#!/bin/bash
# readlink follows any symbolic links to get the real file
REALOMEGATPATH=`dirname "$(readlink -nf $0)"`
java -jar -Xmx2048M "${REALOMEGATPATH}/OmegaT.jar" $*

のように上限設定を2GBへ変更してやります。 32ビットのWindowsなど、古いPCでは、利用可能なメモリが少な過ぎで利用できませんから、64bitのLinuxなど最新のOSと、メモリ搭載量の多い比較的新しめのPCを使ってみてください。

さて、これで辞書の利用はできるようになりますが、辞書引きが利用できるようになるために、最初にすごく時間がかかります。


37202: 情報: Loaded dictionary from '/home/miurahr/translate/dictionary/reiji-136.ifo': 6587ms
37202: FINER: File '/home/miurahr/translate/dictionary/eiji-136.dict.dz' added
37202: FINER: File '/home/miurahr/translate/dictionary/reiji-136.idx' added
37202: FINER: File '/home/miurahr/translate/dictionary/reiji-136.dict.dz' added
37202: FINER: File '/home/miurahr/translate/dictionary/waei-136.idx' added
37202: FINER: File '/home/miurahr/translate/dictionary/waei-136.ifo' added
37202: 情報: Loaded dictionary from '/home/miurahr/translate/dictionary/waei-136.ifo': 17402ms
37202: FINER: File '/home/miurahr/translate/dictionary/ryaku-136.idx' added
37202: FINER: File '/home/miurahr/translate/dictionary/eiji-136.ifo' added
37202: 情報: Loaded dictionary from '/home/miurahr/translate/dictionary/eiji-136.ifo': 45780ms
37202: FINER: File '/home/miurahr/translate/dictionary/ryaku-136.ifo' added
37202: 情報: Loaded dictionary from '/home/miurahr/translate/dictionary/ryaku-136.ifo': 5818ms
37202: FINER: File '/home/miurahr/translate/dictionary/ryaku-136.dict.dz' added

わたしの2010年ころの4コアの Core i7, SSD diskの利用でも80秒ほどかかっています。2GB分近くメモリ上にデータを読み込んで展開しているわけで、当然と思います。

このあたりは、辞書そのものをメモリーに読み込まず、一時ファイルに圧縮展開後、mmap するような作りにすべきだと思います。OmegaTはJavaで書かれているので、すこし難しいのかもしれないですね。

2014/12/27

  22:48:00 by , Categories: Freesoftware and Open Source Software, Linux

翻訳作業を多数行う方は、翻訳メモリを使っていることと思います。
商用では、Tradosが有名のようですが、もっぱら私はOmegaTを使っています。

OmegaTでは、辞書引きの機能があり、StarDict形式の辞書をプロジェクトのdistionaryディレクトリに配置することで、自動的に辞書を引いて画面に表示してくれるようになっています。

そこで、これまでEPWING形式の辞書をEBViewで閲覧していたのですが、StarDict形式の辞書を作って、利用することにしました。

既に、StarDict形式への変換について、複数の方がブログに書いています。
sora_hさんは、 http://codnote.blogspot.jp/2010/01/i-installed-stardict-and-eijiro.html PDIC for WinをLinuxでWINEを使って動作させ、変換することで作業していました。

Design Recipe 別館Blog http://blog.designrecipe.jp/2011/01/01/eijiro-stardict-memo/ では、短いRubyプログラムを使って、実現されていました。

TXT形式のオリジナルのデータを持っていますので、後者の方法を試すことにしました。

スクリプトpdic1line2tab.rbは次のとおりです

<pre>
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
ARGF.each do |line|
line.gsub!("■・", "\\n・")
line.gsub!(/■/, '')
attr = nil
line.sub!(/ \{(.+?)\}/) do |e|
attr = $1
''
end
key, content = line.split(' : ')
next if content == nil
content = "【#{attr}】" << content if attr
puts [key, content].join("\t")
end
</pre>

使い方ですが、辞書ソースをUTF8に変換し,改行コードも整形したうえで、このスクリプトを通します。

$ iconv -f SJIS-WIN -t UTF8 EIJI-136.TXT | sed -e 's/^M//g' | ruby pdic1line2tab.rb > eiji-136.tab

StarDict形式に変換するために、 stardict-toolsパッケージを導入します。
apt-get install stardict-tools

そして
$ /usr/lib/stardict-tools/tabfile eiji-136.tab

実行したeiji-136.tabファイルのあるディレクトリに、stardict形式の辞書ファイルが3つ出来ます。

さて、Ubuntu /Debianに含まれているStarDict-toolsは、3.0.2バージョンです。このバージョンには、レコードの重複を許さないという仕様が有ります。3.0.1までと、3.0.3以降は、重複OKであるため、これは仕様バグです。

https://code.google.com/p/stardict-3/issues/detail?id=37

実際にバグ報告37番として報告され、修正されています。

Ubuntu/Debianのパッケージでは、この修正は含まれていませんので、パッチが必要です。
パッケージをソースからコンパイルすることで対応します。

パッチは、stardict-tools-tabfile-fix-issue37.diffを取得します。

以下は、パッケージの再ビルド例です。

$ apt-get source stardict-tools

$ apt-get build-dep stardict-tools

$ cd stardict-tools-3.0.2

$ quilt import ../stardict-tools-tabfile-duplication-fix-issue37.diff

$ quilt push -a

$ debuild -us -uc -b -i

できあがったパッケージをインストールしましょう。

$ sudo dpkg -i stardict-tools-3.0.2_2build2_amd64.deb

2014/09/06

  14:43:00 by , Categories: Freesoftware and Open Source Software, Linux, Programming, Devops

Link: http://minimul.com/ssh-and-scp-into-a-vagrant-box.html

Vagrantは便利ですね。
vagrantで作業中にscpしたくなることがあります。virtualboxやkvmなど、ローカルのVMの時は、そんなに面倒ではありません。
しかし、AWSプロバイダーのようにクラウドを使っている場合、アドレス等が決め打ちできないので、面倒デス。

そんな時は、vagrantでssh設定を生成すればいいのです。


vagrant ssh-config > ./vagrant.ssh.config
scp -F vagrant.ssh.config default:/etc/httpd/conf.d/ssl.conf ./

このようにすると、いちいちインスタンスのIPアドレスを調べなくても、SCPできます。やったー。

::