2011年11月16日水曜日

plastex

LaTexをHTMLに変換するのはplasTexがよいらしい。と言うことでインストール

sudo apt-get install python-plastex

Thinking Forth の Latexソースを取得

アーカイブにはイメージファイルが含まれていないのでCVSリポジトリから取得する
export CVS_RSH=ssh
cvs -z3 -d:ext:developername@thinking-forth.cvs.sourceforge.net:/cvsroot/thinking-forth co thinking-forth

2011年11月15日火曜日

google code の wiki 飛ばした

google code のwikiはリポジトリに格納されているのでリポジトリの種類を変更すると無くなってしまう。
もちろん事前にバックアップしておけば問題ない。またはfront pageに全部書いとく。

2011年11月11日金曜日

JavaScript typo onlaod

ブラウザ上でJavaScriptがさっぱり動かなかったのでよくよく見たら
window.onlaod = function() {
    hogehoge....
}
onload を onlaod と typo。

文法上はなんの問題も無いのでjslint掛けても検出できない。皆どうやってチェックしてるんだろう?

node-jslint

$ nvm use v0.6.0
$ npm install jslint -g

毎回 nvm use しないとダメっぽい。調べきれていない。

node-jslint


$ npm install jslint -g
npm WARN jslint@0.1.0 package.json: bugs['web'] should probably be bugs['url']
/home/hideo/.node/v0.6.0/bin/jslint -> /home/hideo/.node/v0.6.0/lib/node_modules/jslint/bin/jslint.js
abbrev@1.0.3 /home/hideo/.node/v0.6.0/lib/node_modules/jslint/node_modules/nopt/node_modules/abbrev
nopt@1.0.10 /home/hideo/.node/v0.6.0/lib/node_modules/jslint/node_modules/nopt
jslint@0.1.0 /home/hideo/.node/v0.6.0/lib/node_modules/jslint

nvm インストール


$ sudo apt-get install curl
インストール後、ログインしなおす必要がある。
$ sudo apt-get install build-essential libssl-dev
$ git clone git://github.com/creationix/nvm.git ~/.node
.bashrcに
. $HOME/.node/nvm.sh
を追加(ドットはsouceと同意だそう)
初回は . ~/.node/nvm.sh と手動実行してもよい。
$ nvm install v0.6.0
atom 2GHz だと 15分ぐらい? screen,byobu等を介して実行した方が幸せかも。
$ nvm use v0.6.0

$ node -v
v0.6.0




2011年11月7日月曜日

Google 翻訳者ツールキット Tips?

場所

Googleで翻訳を選び、下のメニューから翻訳者ツールキットを選ぶ

操作補足

些か癖のある操作となっている。
  • 翻訳メモリの新規作成→翻訳メモリのアップロード画面でファイルを選択せずに名前だけ入力して「TMの追加」ボタンを押す
  • 出来上がったものを得る→ダウンロードする

使い方(自己流)

  • 別画面でGoogle翻訳を開いておく。ツールキット表示すると下部に機械翻訳を表示するが、エディットは出来ない。よって原文をGoogle翻訳に貼り付けていろいろ試してみる。
  • Web画面をURL指定で持ってこれない。ブラウザの保存を使うと画像とかまで引っ張ってきてしまうのでwget等で当該のhtmlファイルのみを取得する→Webはアップロード画面でウェブページタブを選択。

2011年10月28日金曜日

Using ediff as git mergetool

実際には各行の末尾に継続行 \ を付加する必要があった。
[mergetool.ediff]
    cmd = emacs --eval \"
(progn
  (defun ediff-write-merge-buffer ()
    (let ((file ediff-merge-store-file))
      (set-buffer ediff-buffer-C)
      (write-region (point-min) (point-max) file)
      (message \\\"Merge buffer saved in: %s\\\" file)
      (set-buffer-modified-p nil)
      (sit-for 1)))
  (setq ediff-quit-hook 'kill-emacs
        ediff-quit-merge-hook 'ediff-write-merge-buffer) 
  (ediff-merge-files-with-ancestor \\\"$LOCAL\\\" \\\"$REMOTE\\\"
                                   \\\"$BASE\\\" nil \\\"$MERGED\\\"))\"
参考:emacs - Using ediff as git mergetool - Stack Overflow

pycheker and pep8 on win

windows版のpython2.7では
pychekerは
c:/Python27/Scripts/pychecker.bat
を実行する。gnupackのshellモードではカレントディレクトリのファイルは ./hoge と指定することに注意。

c:/Python27/Scripts/pychecker.bat --stdlib ./hoge.py
pep8は
c:/Python27/Scripts/pep8.exe
を実行する。

c:/Python27/Scripts/pep8.exe -v ./hoge.py



2011年10月26日水曜日

forth-mode for gforth

gforth-mode
http://www.complang.tuwien.ac.at/forth/gforth/Docs-html/

gforth manual 12. Emacs and Gforth, 12.3 Installing gforth.el

2011年10月25日火曜日

gforth で日本語

LC_CTYPE – Gforth の起動時点で、この環境変数の値に “UTF-8” が含まれるときは、Gforth は文字列の内部表現に UTF-8 エンコーディングを用い、また入出力のエンコーディングも UTF-8 であると見なす。そうでなければ、8 ビットのエンコーディングを用いる (xchar と Unicode を参照)。この環境変数が設定されていない場合、Gforth は LC_ALL を同様に参照し、これもまた設定されていなければ、LANG を同様に参照する。

で、

xc は、スタック要素として表現される拡張文字 (xchar) である。セルサイズは 1 であり、符号なしセルのサブセットと見なされる。なお、UTF-8 は 31 ビットまでのコードポイントしか表現できない。また、セルサイズが 16 ビットになるシステム上の Gforth では、UTF-8 のうち UCS-2 として表現可能なサブセットにしか対応しない。 

と言うことで、32bit以上なら日本語もふつーに通るようである。

2011年9月7日水曜日

pywin32 + Excel

pywin32でCOMでEXCELを操作するメモ。当然Windows上で実行が必要。

  • EXCELファイルを直接操作するタイプのライブラリで xlsx に対応したものが見当たら無かった(2011/09/07現在)
  • 既にEXCEL上で作り溜めたVBAを活用したかった
ということでpywin32。

※先頭が□なのはToDo。
  • pywin32をインストールする。インストーラはPythonのバージョン毎にあるので注意。
  • import win32com.client
  • xlApp = win32com.clinet.Dispatch("Excel.Application")
  • □特定のEXCELブックを開く方法が分からなかった。とりあえず手動で開く。
  • EXCEL内部の自作のPublic Subを動かすには xlApp.Evaluate("ModuleName.SubName()") 。モジュール名から指定しないと動かない。文を直接流すのは無理のようだ。
  • 外部からモジュールをインポート。 xlApp.VBE.ActiveVBProject.VBComponents.Import("pathotofile")
  • 現在あるモジュールを削除(確認無しで削除の模様) xlApp.VBE.ActiveVBProject.VBComponents.Remove(xlApp.VBE.ActiveVBProject.VBComponents("Module1"))
  • Evaluateを使わずに普通にコマンドを指定するのは出来る。

2011年8月12日金曜日

tweepy

install

synapticパッケージマネージャで ppa:chris-lea/python-tweepy を追加。
synapticパッケージマネージャで tweepy をインストール

GPGエラー

apt-get update でGPGエラーが出た場合は以下のようにする。

W: GPG エラー: http://ppa.launchpad.net natty Release: 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY B9316A7BC7917B12



gpg --keyserver keyserver.ubuntu.com --recv-keys B9316A7BC7917B12
gpg: ディレクトリー「/home/hideo/.gnupg」ができました
gpg: 新しい構成ファイル「/home/hideo/.gnupg/gpg.conf」ができました
gpg: 警告: 「/home/hideo/.gnupg/gpg.conf」のオプションは起動している間、有効になりません
gpg: 鍵輪「/home/hideo/.gnupg/secring.gpg」ができました
gpg: 鍵輪「/home/hideo/.gnupg/pubring.gpg」ができました
gpg: 鍵C7917B12をhkpからサーバーkeyserver.ubuntu.comに要求
gpg: /home/hideo/.gnupg/trustdb.gpg: 信用データベースができました
gpg: 鍵C7917B12: 公開鍵“Launchpad chrislea”を読み込みました
gpg: 処理数の合計: 1
gpg:               読込み: 1  (RSA: 1)
gpg --armor --export B9316A7BC7917B12 | sudo apt-key add -
OK


  • $HOMEに .gnupg を作るので sudo じゃなくて自分のユーザで実行する
  • そうしないと gpg --armor ... で読み出せなくてコケる

補足

ubuntuをupgradeする時にはこの作業を再度やる必要があるかもしれない。

2011年7月6日水曜日

PIL

Google App Engine のページだがPILのインストールの説明がある。
PIL のインストール

2011年6月27日月曜日

ttf-ipamonafont release1.0.8-0ubuntu0ja3

参考:ubuntu 11.04でttf-ipamonafontパッケージのエラーの解消法 等

sudo apt-get remove ttf-ipamonafont
sudo apt-get autoremove
sudo apt-get clean
sudo apt-get update
sudo apt-get install ttf-ipamonafont

ttf-ipamonafontが依存していたopfc-modulehp-ipamonafont-sourceも削除する必要があった(autoremove)

2011年6月26日日曜日

diskのuuidを知る

ls -l /dev/disk/by-uuid
参考:UUIDを調べる方法

2011年6月25日土曜日

ubuntu では RedHatで言うchkconfig相当のは何て言うの?

update-rc.d

dump & restore

Ubuntuをシステムまるごとバックアップ、リストアするを参考参考にさせて貰ったと言うか、そのまま。
ここでは、既存のメディア(microSD 8G)は/dev/sdg。
新しいメディア(SDHC16G)は/dev/sde。
作業フォルダは母艦の/home/hideo。
既存のメディアはlinuxパーティションとスワップだけのシンプルな構成なので、1つだけあるlinuxパーティションをバックアップすればそれでお終い。

dump -0vf - /dev/sdg1 | gzip > /home/hideo/n10jc_ubuntu_11.04.dump.gz


新しいメディアは既存のを踏襲し、swapに1G程残して残りをlinuxパーティションに(fdisk)。そしてmkfs -t ext4 /dev/sde1 としてファイルシステムを作ってからマウント。
ボリューム名をubuntuとしたのでマウントしたら/media/ubuntuにマウントされた。/media/ubuntuをカレントにし、スーパーユーザになってから

zcat /home/hideo/n10jc_ubuntu_11.04.dump.gz | restore -rf -


あとはブートローダの設定。
sudo grub-install /dev/sde

で、/etc/fstabのuuidを新しいのに書き換えておく。ここがミソ。

そしておもむろに新しいメディアをターゲットマシンで起動する。すると、
grub rescure>
が出る。これは母艦の環境でinsall-grubしたから。おもむろに手動で立ち上げる。
ls
すると、ドライブ(?)がリストされるので1つ1つ試していく。当然ながらキーボードは英語キーボードになっているので注意。(はSHIFT+9、)はSHIFT+0、=は^の所。今回は
ls (hd1,msdos1)/
で、それらしきフォルダが表示された。次に手動で起動する。
insmod (hd1,msdos1)/boot/grub/normal.mod
normal
起動。遅いけど。これでえっちらおっちら立ち上げたら、立ち上げた
ターミナルの中で改めてinstall-grubする。母艦接続時とはデバイス名が変わってたりするので注意。今回は/dev/sdbだった。よって
sudo install-grub /dev/sdb
sudo update-grub
これで次回からはふつーに起動してくる筈。

高速化

さて、普通に起動するようになったら次は高速化を試みます。

2011年6月7日火曜日

WindowsのMBRを飛ばした(^^;

ms-sys

microSDを指して、microSDから起動するとubuntu、何もせずに起動するとWindowsXPが立ちあがるようにしている。
何も考えずにアップグレードするとHDDのMBRを書き換えてしまう訳である。
しかしそうなってしまっても慌てることはない。復旧させればよいのである。

  1. /dev/sdaがWindows, /dev/sdbがmicroSDとする。
  2. まずはmicroSDのMBRにgrubを書き込む。 sudo install-grub /dev/sdb
  3. update-grub
  4. 確認する。microSDからブートしてブートメニューが表示され、ubuntuが起動することを確認。
  5. /dev/sdaのMBRを修復する。正式にはWindowsの回復コンソールとか使うらしいが、プレインストールなせいかやり方が分からなかった。
  6. 多少リスキーらしいが、 ms-sysを使う。 sudo ms-sys -m /dev/sda
  7. -mのところはWindowsの種類によって変える。
  8. なんもせずに起動するとWindowsXP,microSDを選ぶとgrubメニューが出ることを確認する。

2011年5月2日月曜日

QRコード生成

qrencodeを使う。
qrencodeにshift-jisを指定するオプションもあるので、エディタ等でshift-jisのテキストを流し込みイメージ生成。
生成したイメージをイメージビュワーかブラウザで file:/// とかで呼び出す。

2011年3月31日木曜日

/dev/zero と /dev/null の違い

書き込み時は両方とも入力を破棄する。
読み込み時、/dev/zero は \0 を返す。 /dev/null は EOF を返す。

読み込み書き込み
/dev/zero\0を返す入力を破棄
/dev/nullEOFを返す入力を破棄

2011年3月30日水曜日

sshでCTRL+Sすると固まる

その場での対策

CTRL+Qで復活する

恒久対策

stty -ixon
を.bashrc等に入れる

原因

ソフトウェアアップデート掛けた際に設定が書き変わった模様。

2011年3月22日火曜日

pyrocket on django

  1. とりあえずpyrocketをインストールしとく。 sudo apt-get pyrocket
  2. /etc/udev/rules.d に 40-rocketlauncher.rules があるのを確認
  3. USB ミサイルランチャーを抜き差し。
  4. usbを制御するユーザを plugdev グループに参加させる。Djangoの場合はwww-dataのグループに plugdevを参加させる必要がある。pyrocketを試しに動かしてみる場合は操作しているユーザに同様にする。
  5. グループを追加後は sudo service apache2 restart しておく。
  6. Django用のファイルはそのうち。

自分自身の別ポートへリバースプロキシ

a2enmod proxy
a2enmod proxy_http

proxyだけだとダメでproxy_httpも有効化する必要がある。

proxy.conf

proxy.confを編集。proxy_httpは編集するものは無い

# If you want to use apache2 as a forward proxy, uncomment the
# 'ProxyRequests On' line and the  block below.
# WARNING: Be careful to restrict access inside the  block.
# Open proxy servers are dangerous both to your network and to the
# Internet at large.
#
# If you only want to use apache2 as a reverse proxy/gateway in
# front of some web application server, you DON'T need
# 'ProxyRequests On'.

#ProxyRequests On
#
#        AddDefaultCharset off
#        Order deny,allow
#        Deny from all
#        #Allow from .example.com
#

# Enable/disable the handling of HTTP/1.1 "Via:" headers.
# ("Full" adds the server version; "Block" removes all outgoing Via: headers)
# Set to one of: Off | On | Full | Block
#ProxyVia Off

        ProxyRequests Off
        
               Order deny,allow
               Allow from all
        
        ProxyPass /stream http://127.0.0.1:9999
        ProxyPassReverse /stream http://127.0.0.1:9999

        ProxyVia On


2011年3月21日月曜日

ubuntuのapache2でモジュールを有効化する

mods-enableからmos-availableへシンボリックリンクを張ってからapache2をrestartさせりゃいいんだが、専用のコマンドがある。
sudo a2enmod hogehoge

2011年3月20日日曜日

日本語のmanページを使えるようにする

最初は入ってないらしい。


sudo apt-get install manpages-ja manpages-ja-dev xmanpages-ja

2011年3月19日土曜日

mjpg_streamer 計画停電対応

停電から復旧時は自動的に起動させたい

mjpg_streamer設定

  1. source forge (http://sourceforge.net/projects/mjpg-streamer/develop)のfileからmjpg-streamer_r94-1_i386.debを入手しインストール(普通に sudo dpkg -i jpg-streamer_r94-1_i386.deb)
  2. 利用しているJava applet cambozola.jar は同梱よりちょっと新しいのがあるので http://www.charliemouse.com/code/cambozola/ から持ってくる(cambozola.jar だけでOK)
  3. 適当なディレクトリにcambozola.jarを配置。/var/wwwとかでも構わない。ここでは/home/httpd/mjpg_streamer/とした。
  4. Webカメラを接続してみる。lsusbして接続を確認。 ls /dev/video* としてモノがあるのを確認。ここでは /dev/video0だったとする。複数ある場合はデバイス名を固定する方法があったはず....スマンがそれはgoogle先生に聞いてください。
  5. ログインしているユーザで mjpg_stremaer をとりあえず起動してみる。
    /usr/bin/mjpg_streamer -i input_uvc.so -d /dev/video0 -o output_http.so -p 9999 -www /home/httpd/mjpg_streamer
  6. パーミッションが無いと怒られた場合は、ls /dev/video0 で表示されたグループが現在のユーザのグループに入ってない。usermodなどでそのユーザを追加し、再ログインする。
  7. ちょっと本格的に。Webカメラに合わせてフレームレートとサイズを指定している。ここでは1FPS、サイズは1280x720。どんなサイズを指定できるかはカメラに依存する。各自調査されたし。
    /usr/bin/mjpg_streamer -i input_uvc.so -d /dev/video0 -f 1 -r 1280x720 -o output_http.so -p 9999 -www /home/httpd/mjpg_streamer
    ちゃんとうごきだすとCTRL+Cでストップするまで端末に戻ってこない。








  8. このままでWebブラウザから閲覧する。motion-jpegに対応したブラウザなら直接ストリームを見れる。google chromeとか。 http://《ipアドレス》:9999/?action=stream とする。自分自身なら当然 http://127.0.0.1:9999/?action=stream








  9. 試しにcambozola.jarを使ってみる場合は、手元にcambozola.jarを持ってきた後、
    java -jar cambozola.jar http://《ipアドレス》:9999/?action=stream -width=1280 -height=720 -accessorystyle=overlay
    mjpg_streamerと違うサイズを変更することもできるが、mjpg_streamer側から送られている画像を指定サイズに変換しているだけみたい。通信が軽くなる訳ではない。左肩に表示されるコントロールはデジタルズーム相当の機能







共存

mjpg_streamerはhttpサーバの機能を持っているが、これを80番ポートで運用するとApacheとかと競合する。

競合を避けるため、mjpg_streamerは9999ポートでリッスンし、Apacheの方で工夫してやる。

今回はApacheのproxy機能を使って /stream/ へのアクセスがあったら 《mjpg_streamerマシンのipアドレス》:9999へ渡すようにした。



# If you want to use apache2 as a forward proxy, uncomment the
# 'ProxyRequests On' line and the  block below.
# WARNING: Be careful to restrict access inside the  block.
# Open proxy servers are dangerous both to your network and to the
# Internet at large.
#
# If you only want to use apache2 as a reverse proxy/gateway in
# front of some web application server, you DON'T need
# 'ProxyRequests On'.

#ProxyRequests On
#
#        AddDefaultCharset off
#        Order deny,allow
#        Deny from all
#        #Allow from .example.com
#

# Enable/disable the handling of HTTP/1.1 "Via:" headers.
# ("Full" adds the server version; "Block" removes all outgoing Via: headers)
# Set to one of: Off | On | Full | Block
#ProxyVia Off

        ProxyRequests Off
        
               Order deny,allow
               Allow from all
        
        ProxyPass /stream http://《mjpg_streamerマシンのipアドレス》:9999
        ProxyPassReverse /stream http://《mjpg_streamerマシンのipアドレス》:9999

        ProxyVia On



ubuntu(10.10)の場合は /etc/apache2/mods-available/proxy.conf に追記する必要がある。

これで、 http://《webサーバのアドレス》/stream/?action=stream でストリームが見れるようになった。職場のF/W越えも出来てウハウハである。

自動起動対応

  1. マシンのBIOS設定を変更し、停電後は起動するようにする。AC RECOVERYとか。
    停電から復帰時にどうするかの設定。Onは電源On。Offは電源Off。Lastは停電前の状態にする。今回はOnとした。

/etc/rc.local

(/bin/su - 《ユーザ名》 《実行するスクリプト》> 《logファイル名へのフルパス》 2>&1 ) &

フルパスで指定する。

スクリプトは最初に30秒スリープさせている。/etc/rc.localの走るタイミングが早過ぎるらしく、スリープ無しで実行するとV4Lのエラーとなったため。カメラの認識前なのかな?

#!/bin/sh
echo `date '+%Y/%m/%d (%a) %H:%M:%S (%Z)'`: delay 30 sec for start mjpg_streamer
/bin/sleep 30
echo `date '+%Y/%m/%d (%a) %H:%M:%S (%Z)'`: start mjpg_streamer
/usr/bin/mjpg_streamer -i "input_uvc.so -d /dev/video0 -f 1 -r 1280x720" -o "output_http.so -p 9999 -www /home/httpd/mjpg_streamer"

http://d.hatena.ne.jp/DGL/20080119 を参考にさせて頂いた。

2011年2月23日水曜日

ubuntu 10.10 NetworkManager に モバイルブロードバンドがでなくなる件

/usr/share/mobile-broadband-provider-info

serviceproviders.xml  e-mobile の に書き換えた。

効果があるかどうかは不明

抜き差しすれば認識しやすい。

2011年2月21日月曜日

javaランタイムでproxyを指定

java -Dhttp.proxyHost=《proxyのホスト》 -Dhttp.proxyPort=《proxyのポート》 -jar hogeghoe.jar http:/
/fugafuga/

2011年2月20日日曜日

chrome 9.0.597.98(Windows版) で DirectoryIndex が効かない。

/ 直下は動くけど、
/hogehoge/ の場合は動いてない。

閲覧:chrome 9.0.597.98 (on Windows XP Home)
サーバ:ubuntu 10.10 apache2

原因不明。

ubuntu 10.4 LTSのchromiumでは普通に動いたりしたので当該バージョンだけのピンポイントな現象なのかもorz.

FireFox 3.6.13(Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 (.NET CLR 3.5.30729))でも問題なし。

2011年2月8日火曜日

ubuntu 10.10 ウインドウマネージャが動いていない


gconftool-2 --get -T /desktop/gnome/applications/window_manager/default
gconftool-2 --set /desktop/gnome/applications/window_manager/default --type=string /usr/bin/metacity

として、metacityで上がるようにする(とりあえず)
参照:https://forums.ubuntulinux.jp/viewtopic.php?id=9743

2011年2月6日日曜日

ubuntuのグラフィカルログインをやめる

  1. /etc/default/grub GRUB_CMDLINE_LINUX_DEFAULT=quiet splash → GRUB_CMDLINE_LINUX_DEFAULT=quiet splash text

ubuntu で grub メニューを出す

  1. /etc/default/grub の GRUB_HIDDEN_TIMEOUT をコメントアウト(sudo emacs -nw /etc/default/grub とか)
  2. update-grub

SD(microSD) boot linuxのハマりどころ?

起動時に/がrwでマウントできない。おまけにswapもro。

SDカードのLOCK(書き込み禁止)がONになっていることがある。