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"

2011/03/25

  13:29:00 by , Categories: Freesoftware and Open Source Software, Android

rdesktopで英語キーボードをもちいて、つながった先のWindowsターミナルサーバにて日本語変換を、Alt+~で行いたい。 そんなひとには、以下のような内容のファイルをen-jpというファイル名で作って、/usr/share/rdesktop/keymaps/において、 $ rdesktop -k en-jp とすると、幸せになれるでしょう。

# generated from XKB map us
include common
0x411
exclam 0x02 shift
at 0x03 shift
numbersign 0x04 shift
dollar 0x05 shift
percent 0x06 shift
asciicircum 0x07 shift
ampersand 0x08 shift
asterisk 0x09 shift
parenleft 0x0a shift
parenright 0x0b shift
minus 0x0c
underscore 0x0c shift
equal 0x0d
plus 0x0d shift
kana_HE 0x0d altgr
kana_TA 0x10 altgr
kana_TE 0x11 altgr
kana_I 0x12 altgr
kana_i 0x12 shift altgr
kana_SU 0x13 altgr
kana_KA 0x14 altgr
kana_N 0x15 altgr
kana_NA 0x16 altgr
kana_NI 0x17 altgr
kana_RA 0x18 altgr
kana_SE 0x19 altgr
bracketleft 0x1a
braceleft 0x1a shift
bracketright 0x1b
braceright 0x1b shift
semicolon 0x27
colon 0x27 shift
apostrophe 0x28
quotedbl 0x28 shift
grave 0x29
asciitilde 0x29 shift
backslash 0x2b
bar 0x2b shift
comma 0x33
less 0x33 shift
period 0x34
greater 0x34 shift
slash 0x35
question 0x35 shift

2011/01/16

  13:12:00 by , Categories: Freesoftware and Open Source Software, OpenOffice.org, Java, Ubuntu

Link: http://ubuntuguide.org/wiki/BigBlueButton#Install_BBB_.3C-.3E_Moodle_API

BigBlueButtonは、APIを持っており、CMSなどと連携させることができる。

デフォルトでは、APIのデモページがあり、JSPによる具体的な利用方法を理解することができる。

人気のあるCMSといえば、Joomla!やDrupalがあるし、BBBは教育用途を意図して作られているところもあるので、Moodleも考慮に値するだろう。

このページでは、MoodleとDrupalについて、連携方法を示している。

Drupalとの連携については、
http://drupal.org/project/bbbで、すでにモジュールも用意されている。

Moodleの連携については、 http://www.dualcode.com/bigbluebutton/に、プラグインが提供されている。

活用してみようと思う。

2011/01/09

Link: http://bigbluebutton-blog.blogspot.com/2010/11/193-simultaneous-users.html

世の中には、OSSの、LGPLでライセンスされたTV会議ソフトウエアというものが存在する。これは、アーキテクチャ的には、他のOSSに大きく依存している。たとえば、Ubuntu, Tomcat6, Ngidx, ghostscript, OpenOffice.org, swftools, MySql, Astariskなどだ。このソフトウエア・プロジェクトの名前は、BigBlueButtonという。

実に、素晴らしいソフトウエアで、ローカライズもすごく頑張っている。インターフェースもクールだ。複数名の同時カンファレンスができる。開発者のブログによれば、193同時ユーザの会議をホストできたようだ。WebCamによるテレビ会議も20人までいけたようだ。 Asteriskを使っているのは、普通の電話からも会議に入れるように。この193同時ユーザの実験でも、45人は電話からはいったようだ。

さて、自分の利用を用意にするため、そしてみなさんの実験をするのを容易にできるよう、Amazon EC2にイメージを作ってみた。

AMI ID: ami-58b7c90a
Name: bbb-0.71-Ubuntu-10.04-64
Description: BigBlueButton 0.71 on Ubuntu 10.04LTS(64bit)
Owner: 457068382909

そして、その取り扱いを容易にするスクリプトも書いてみた。

ubuntuなどのAmazon EC2に対応したLinuxディストリビューションで
apt-get install ec2-api-tools
として必要なツールを導入し、
以下のスクリプトをbbb.shというファイル名で保存しているとすると、

./bbb.sh run

で、EC2上でUbuntu Linuxが起動し、

./bbb.sh status

として起動したことを確認したあとに

./bbb.sh start

とするとサーバが立ち上がり、必要なIP設定を自動でおこないます。

./bbb.sh login

とすると立ち上がったサーバにログインできて、

./bbb.sh stop

とすると終了するはず。
スクリプトは、適宜、Amazon EC2の登録情報を書き換えて欲しい。また、自分がオーナーではないイメージからの起動については実験していないので、うまく動かす方法をしっていたら、教えて欲しい。

2010/07/04

  13:14:00 by , Categories: Linux, Ubuntu

Link: http://bugs.calibre-ebook.com/ticket/6086

Kindle2を使っている。電子ブックを上手に使うには、calibreというアプリケーションが便利だ。Linuxだけではなく、mac, windowsでも使えるだろう。

Ubuntu GNU/Linux (10.04)上で、Calibreをつかって、外部のWebニュースを巡回して、電子ブックを生成して、Kindle2に流し込んでいる。

Calibreは、スケジュールされた時間帯にWebを巡回して、たとえばLWNやTimes, CNN, BBC, Japan Timesなどニュースサイトからニュースを取得して、ebookを生成してくれる。
また、kindle2を接続すると、自動的に、まだkindle2に取り込んでいないNewsを転送してくれる。すぐれものだ。

ただし、ちょっとした不具合がある。
Calibreを英語以外のlocaleで起動すると、Timesなどのサイト巡回結果のタイトルに日付がつくのだが、それが日本語混じりになる。技術的にはstrftime()がロケールLC_TIMEの影響を受けるためだ。

一方、Kindle2は、まだ英語以外の言語に対応していない。Kindle2をUbnutuにつなぐと、vfatとして認識されて自動マウントされる。マウントオプションは、

/dev/sdc1 on /media/Kindle type vfat (rw,nosuid,nodev,uhelper=udisks,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,flush)

こんな感じ。
そこに、日本語のファイル名のついたニュースファイルを流し込むと、怪しいことが起こる。
具体的には、マウントしたKindleが読み込みのみになってしまう。

で、リンク先のようなバグレポートとなった。

でも、本当は、OSがわで対応すべきではないのか?ということで、たとえばuni_xlateというマウントオプションをつけることを考えたい。これは、unicode文字がきたときに、適当なエスケープシーケンスでlatin文字に変換するというものだ。

では、オートマウントされるときの機構でどこをどのようにいじればいいのか。

gconf-editorで、設定を開いて、system/storage/vfatあたりを見ればいいのかとおもったが、ここに設定を追加すると、すべてのデバイスで影響してしまう。kindleの時だけ、オプションを追加するには、どうすればいいか。

Automounting a storage device with GNOMEを参考にすると、hal-device というコマンドを見ればいいらしい。

Kindleに関わる部分をみるとこんなふうになっている。

0: udi = '/org/freedesktop/Hal/devices/volume_uuid_0096_AB41'
  linux.hotplug_type = 3  (0x3)  (int)
  info.interfaces = { 'org.freedesktop.Hal.Device.Volume' } (string list)
  block.storage_device = '/org/freedesktop/Hal/devices/storage_serial_Kindle_Internal_Storage_B003B0A200930A7F_0_0'  (string)
  volume.fstype = 'vfat'  (string)
  volume.fsusage = 'filesystem'  (string)
  volume.fsversion = 'FAT32'  (string)
  volume.uuid = '0096-AB41'  (string)
  volume.label = 'Kindle'  (string)
  info.udi = '/org/freedesktop/Hal/devices/volume_uuid_0096_AB41'  (string)
  volume.mount_point = '/media/Kindle'  (string)
  volume.is_mounted = true  (bool)
  volume.is_mounted_read_only = false  (bool)
  volume.is_disc = false  (bool)
  info.product = 'Kindle'  (string)
  volume.partition.number = 1  (0x1)  (int)
  block.major = 8  (0x8)  (int)
  block.device = '/dev/sdc1'  (string)
  block.is_volume = true  (bool)
  volume.partition.start = 8192  (0x2000)  (uint64)
  volume.partition.media_size = 1602191360  (0x5f7f8000)  (uint64)
  volume.size = 1602183168  (0x5f7f6000)  (uint64)
  block.minor = 33  (0x21)  (int)
  volume.num_blocks = 3129264  (0x2fbfb0)  (uint64)
  volume.is_partition = true  (bool)
  org.freedesktop.Hal.Device.Volume.method_names = { 'Mount', 'Unmount', 'Eject' } (string list)
  volume.block_size = 512  (0x200)  (int)
  volume.linux.is_device_mapper = false  (bool)
  org.freedesktop.Hal.Device.Volume.method_execpaths = { 'hal-storage-mount', 'hal-storage-unmount', 'hal-storage-eject' } (string li
st)
  org.freedesktop.Hal.Device.Volume.method_signatures = { 'ssas', 'as', 'as' } (string list)
  org.freedesktop.Hal.Device.Volume.method_argnames = { 'mount_point fstype extra_options', 'extra_options', 'extra_options' } (strin
g list)
  volume.ignore = false  (bool)
  volume.mount.valid_options = { 'ro', 'sync', 'dirsync', 'noatime', 'nodiratime', 'relatime', 'noexec', 'quiet', 'remount', 'exec', 
'utf8', 'shortname=', 'codepage=', 'iocharset=', 'umask=', 'dmask=', 'fmask=', 'uid=', 'flush' } (string list)
  volume.unmount.valid_options = { 'lazy' } (string list)
  linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8:1.0/host16/target16:0:0/16:0:0:0/block/sdc/sdc1'  (string)
  info.parent = '/org/freedesktop/Hal/devices/storage_serial_Kindle_Internal_Storage_B003B0A200930A7F_0_0'  (string)
  info.capabilities = { 'volume', 'block' } (string list)
  info.category = 'volume'  (string)

あとは、このUDIなどをつかって、labelがKindleのようなストレージデバイスのときは、こうしろ的な設定を gconftoolなんかつかって、書き込めばいいらしい。

2010/05/23

Link: http://andymatuschak.org/articles/2008/05/07/more-on-launchpad-bazaar-vs-lighthouse-github/

最近、gpxviewerというアプリケーションをいじっている。これは、GPXファイルの管理を行う上で、容易に地図上でどこをトレースした物かを表示してくれる。
Python + GTKでかかれており、小さく、最低限必要な機能を満たしている。
多数のGPXファイルがあると、JOSMで開いて確認していくのでは、少々手間がかかりすぎる。また、できればファイル管理ソフトウエア(nautilus) から簡単に起動できた方がいい。

これは、まだリリースして日が浅く、コードベースも小さいので、こういった用途に向けて改良するには、ちょうどよかった。
わたしの改良点は、Githubリポジトリにおいてある。すでに、作者にパッチを送っており、gpxviewer on launchpadから最新のコードを入手できる。
5月に入ってから、7つのコミットに関わる貢献をしている。

さて、作者のAndrew Geeさんからは、BazaarをつかってLaunchpadにブランチを開いてくれ。そしたら、マージもレビューも簡単だ、といわれている。たしかに、bazaarを使ってlaunchpad からコードを入手して開発しているが、bazaarはその使い勝手が気持ち悪くて、git-bzrをつかって、(たとえば、git-bzrの使いかた),gitにインポートして開発し、ブランチの歴史をきれいにしてから、git format-patchを用いてパッチを生成して送っている。送ったパッチをそのままインポートしてくれれば、リポジトリに取り込むときに面倒はないのだけれども、Andrewは(bzrにそんな機能はないのかもしれないが)、パッチをあてて適当なコメントをつけてupstreamにマージをするので、パッチを送った後は、upstreamの最新から再度ブランチを切って作業をする羽目になる。

そもそも、プロジェクトのオーナーがlaunchpad+bazaarを使っているのだから、選択するのはオーナーだ。それに不満はない。けど、開発する方は、使いたい奴を使いたいではないか。

閑話休題

その選択にあたっても、プロジェクトオーナーは、pros/consがあって悩ましいはず。launchpadのサイトとしての機能はすばらしいが、bazaarよりgitのほうが使いやすいじゃん。という悩みをこの記事では吐露してくれているのである。

2010/01/17

  15:06:00 by , Categories: Linux, Input Methods

Gnucashという会計ソフトがあり、複式簿記ができる。Windowsのバイナリもあり、sqlite3やmysql, PostgresQLもバックエンドに使えるようになってきているんで、共同作業にも使えるようになっている。

メッセージの日本語化も進んでいるので、いろいろ使えると思うが、入力メソッドを使ったときに、変換候補がインラインで表示されない、という仕様になっている。

これは、GTKのインライン要素を不可視にした上で、入力内容をパースして、セルに記入するという動作をしているためである。

gnucashのシートイメージは、gnome officeのひとつ、gnumericのシートのコードが祖先になっているようだ。gnumericのほうでは、入力メソッドを使ったときの動作は改良されているので、同じような改良をgnucashに行う必要がある。

ソースは以下から入手可能
http://svn.gnucash.org/repo/gnucash/trunk

問題のコードは、
gnucash/src/register/register-gnome/gnucash-sheet.c
とおもわれる。

修正内容は、IM Contextの使い方を参照すると酔い。

2010/01/01

  15:55:56 by , Categories: Linux, Ubuntu

Dell mini 10v(ubuntuプレインストール版)は、Dell mini 10vに、Dellカスタマイズ版のUbuntu 8.04 LTS (LPIA) UNR(Ubuntu netbook remix)がのった製品である。
詳細は、技術評論社のhttp://gihyo.jp/admin/serial/01/ubuntu-recipe/0084
記事をみてもらうとして、実際のところ、ただのカスタマイズ版ではなかったことが、後ほど判明している。

さて、2009年11月27日、このDell miniに搭載されているUbuntuのLPIAアーキテクチャ版のサポートは打ち切られることが発表された。その結果、現行のLPIAアーキテクチャ版のUbuntuが搭載されたPCやネットブックは、i386版の再インストール無しにアップグレードはできないことが判明した。

したがって、現在も今後も入手できるLPIA版のUbuntuは、9.10(Karmic Koala)であることになる。ところで、LPIA とは、Low Power Intel Architectureの略で、ATOMプロセッサを軸としたアーキテクチャで、省電力にチューニングしたコンパイルやカーネル提供がなされることになっていた。

CanonicalのUbuntu公式のサポート対象外になったのを記念して(?)、Dell mini 10v(Ubuntuプレインストール版)を、Ubuntu 9.10 (LPIA)にアップグレードしてみた。もちろん、このアップグレードによって、Dellによるサポートは受けられなくなるので、ご注意を。

Ubuntu公式サポート対象外であるので、aptのリポジトリ指定も、従来とは異なって、 ports.archive.ubuntu.comを指定しなければならない。
たとえば、既定の状態では、/etc/apt/sources.listには、次のように指定されているはずである。

deb http://dell-mini.archive.canonical.com/ubuntu/ hardy main universe multiverse restricted
deb-src http://dell-mini.archive.canonical.com/ubuntu/ hardy main universe multiverse restricted

これに対して、サポートされないことを覚悟の上、通常のUbuntuにアップグレードするには、

deb http://ports.ubuntu.com/ubuntu-ports intrepid main universe multiverse restricted

このように指定する。
いったん、upgrade-managerも、Dellカスタマイズ版ではなく、通常版を使わせるために削除し、新リポジトリから再インストールしておこう。

また、もとのシステムは、LTS(長期間サポート)として設定されているので、通常アップデートが表示されない。これは、UbuntuのFAQにもあるように、/etc/update-manager/release-upgradesに、

[DEFAULT]
# default prompting behavior, valid options:
#  never  - never prompt for a new distribution version
#  normal - prompt if a new version of the distribution is available
#  lts    - prompt only if a LTS version of the distribution is available
Prompt=lts

とあるのを、

[DEFAULT]
# default prompting behavior, valid options:
#  never  - never prompt for a new distribution version
#  normal - prompt if a new version of the distribution is available
#  lts    - prompt only if a LTS version of the distribution is available#Prompt=lts
[DEFAULT]
# default prompting behavior, valid options:
#  never  - never prompt for a new distribution version
#  normal - prompt if a new version of the distribution is available
#  lts    - prompt only if a LTS version of the distribution is available
Prompt=normal

と書き換えることによって、アップグレードを行うことができる。

さて、このようにして、Dellカスタマイズ版Ubuntu 8.04LTSをベースとしてアップグレードをかけていくと、途中でXが正常に起動しなくなることがあるかもしれない。これは、Xの設定を作り直すことで解消することができる。正常に起動しなくなったとき、トラブルシューティングの画面になるので、設定の作り直しを選択すればよい。(このときのメニューは英語だ)

ところで、Dell mini 10v は、mini 9/10/12が使用しているIntel GMA500 (Poulsbo) チップと違い、Intelの Mobile 945GME Express 統合グラフィックコントローラを採用している。したがって、間違えて mini 9などの情報を流用することのないようにしたいところ。

Ubuntuは(ほかのディストリビューションも同様であるが)、バージョンとばしのアップグレードはサポートされない。したがって、LPIA版の最新かつ最終版である9.10にするには、途中 8.10, 9.04バージョンを順にあげていく必要がある。

さて、8.10以降、サスペンドできなくなることに気づくであろう。これは、Dellカスタマイズ版に含まれているプロプラソフトウエアが、バージョンアップに追従しないため、内部構造の変更に追従できないことから起こる。

Dellカスタマイズ版には、少なくとも次のプロプラエタリ・ソフトウエアが含まれる。

  • Fruendo メディアプレイヤーのエンコード・デコードライブラリ
  • Adobe Acrobat Reader 8
  • PowerDVD DVDプレイヤー
  • Dell Video Chat チャットソフトウエア
  • DELL V505 ドライバー
  • Dell launcher

これらのうち、Fruendo ライブラリは、アップグレードの過程で、フリー版のビデオエンコード・ライブラリを導入しようとすると、削除されるかもしれない。したがって、アップグレード前に、これらのソフトウエアはパッケージとして保存しておくとよい。

# apt-get install dpkg-repack
# dpkg-repack gstreamer0.10-fluendo-plugins

などとすることで、アップグレードの心配は少し軽減されるだろう。
もし、すでにアップグレードの過程で知らずに消してしまった場合、、、 Dellからのパッケージについていた、Ubuntu DVDで再インストールすることで、入手できる。というか、再インストールが必要である。

さて、サスペンドの問題であるが、これは、上記のうちPowerDVDが原因である。
Gnome power managerからのサスペンドであるが、これはgnome-power-managerがHALを経由して、システムユーティリティを呼び出すことで実行される。呼び出されるユーティリティはHALが判断するが、今回は、/usr/sbin/pm-suspnedが呼び出される。

カーネルを直接呼び出してサスペンドさせた場合には、成功するが、pm-suspendは失敗する。したがって、pm-suspendの問題である。

そこで、pm-suspendでサスペンドをさせようとした後、ログファイルを見ると、


/var/log/pm-suspend.log

/etc/pm/sleep.d/07-stop-play.sh suspend suspend: kill: 4: Usage: kill [-s sigspec | -signum | -sigspec] [pid | job]... or
kill -l [exitstatus]
Returned exit code 2.
Fri Dec 25 09:05:03 JST 2009: Inhibit found, will not perform suspend
Fri Dec 25 09:05:03 JST 2009: Running hooks for resume
/etc/pm/sleep.d/01f3507g resume suspend: Fatal open FIFO for writing: /dev/ttyACM0: No such file or directory
mbm_gpsd: no process found
Returned exit code 1.

というように、ログにエラーが残っている。これによると、/etc/pm/sleep.d/07-stop-play.sh が失敗しているとされている。dpkg -S 07-stop-play.shとして、どのパッケージに含まれるファイルが失敗したか、検索すると、pdvdlinuxだという。そこで、この問題のファイルを削除することで、サスペンドできるようになる。
本質的には、当該ファイルを修正して、意図する動作をするようにしなければならない。

ちなみに、pdvdlinuxパッケージは、つぎのようなパッケージである。

パッケージ: pdvdlinux
バージョン: 5.0.1218
優先度: 任意
セクション: non-free/graphics
メンテナ: Bazooka Shih <bazooka_shih@cyberlink.com>
説明: Dell Media Experience
 With Dell Media Experience, you can play back your DVD movies, with the features and controls of a normal living room DVD
 player.

::