]
トップ 追記

Yukiharu YABUKI の tDiary



このtDiaryを検索します。

2019-09-30 [長年日記]

_ [Linux] 動画をCLIで編集する。MELT

Debianで見つけたソフトで、MELTってなんじゃ?と思って、軽く調べたら動画編集ソフトのようだ。ごちゃごちゃ書くより、まずは下記のyoutube解説動画を見た方が良いと思う。youtuber(?)で自動化したいならええんでは? そんでから、man pageを読んでみるとか。もちろん最初からman pageや付属のドキュメントでもいい。


2019-09-07 Debian work [長年日記]

_ [Debian] source only upload (cont'd)

承前 source only upload をやる理由と問題点、そして解決方法

以下,具体的な作業例
(1) I had already downloaded original orig.tar.gz in /tmp/ like this.

 (cd /tmp;wget
 http://deb.debian.org/debian/pool/main/v/vim-voom/vim-voom_5.3.orig.tar.gz)

(2) Do gbp pristine-tar commit:

 $ gbp pristine-tar commit --upstream-tag=upstream/5.3 /tmp/vim-voom_5.3.orig.tar.gz 
 gbp:info: Successfully committed pristine-tar data for version 5.3 of /tmp/vim-voom_5.3.orig.tar.gz

(3) I checked:

 $ git switch pristine-tar 
 Switched to branch 'pristine-tar'
 
 $ git branch
   master
 * pristine-tar
   upstream
 
 $ ls -la
 > total 8
 > drwxr-xr-x 1 yabuki yabuki  122 Sep  6 16:37 .
 > drwxr-xr-x 1 yabuki yabuki 5216 Sep  6 11:36 ..
 > drwxr-xr-x 1 yabuki yabuki  182 Sep  6 16:37 .git
 > -rw-r--r-- 1 yabuki yabuki 1943 Sep  6 16:37 vim-voom_5.3.orig.tar.gz.delta 
 > -rw-r--r-- 1 yabuki yabuki   41 Sep  6 16:37 vim-voom_5.3.orig.tar.gz.id

(4) then build it.

 $ git switch master
  
 $ gbp buildpackage --git-pbuilder --git-pbuilder-options=--source-only-changes --git-tag --git-notify=auto

(5) check the result.

  ls -la ../vim-voom*
 -rw-r--r-- 1 yabuki yabuki   5416 Sep  6 11:32 ../vim-voom_5.3-3.debian.tar.xz
 -rw-r--r-- 1 yabuki yabuki   1804 Sep  6 11:32 ../vim-voom_5.3-3.dsc
 -rw-r--r-- 1 yabuki yabuki  99560 Sep  6 11:32 ../vim-voom_5.3-3_all.deb
 -rw-r--r-- 1 yabuki yabuki  21173 Sep  6 11:32 ../vim-voom_5.3-3_amd64.build
 -rw-r--r-- 1 yabuki yabuki   5461 Sep  6 11:32 ../vim-voom_5.3-3_amd64.buildinfo
 -rw-r--r-- 1 yabuki yabuki   2458 Sep  6 11:32 ../vim-voom_5.3-3_amd64.changes
 -rw-r--r-- 1 yabuki yabuki   2142 Sep  6 11:35 ../vim-voom_5.3-3_source.changes
 -rw-r--r-- 1 yabuki yabuki 115841 Sep  6 11:23 ../vim-voom_5.3.orig.tar.gz
I checked orig.tar.gz file size and contents. It seems ok.

upload準備

$ dput vim-voom
vim-voom/                       vim-voom_5.3-3_all.deb          vim-voom_5.3-3_amd64.changes
vim-voom_5.3-3.debian.tar.xz    vim-voom_5.3-3_amd64.build      vim-voom_5.3-3_source.changes
vim-voom_5.3-3.dsc              vim-voom_5.3-3_amd64.buildinfo  vim-voom_5.3.orig.tar.gz
$ dput vim-voom_5.3-3_source.changes 
Trying to upload package to ftp-master (ftp.upload.debian.org)
Checking signature on .changes
gpg: /home/yabuki/scm/git/debian/vim-voom_5.3-3_source.changes: error 58: gpgme_op_verify
gpgme_op_verify: GPGME: No data
$ dput vim-voom_5.3-3.dsc 
Not a .changes file.
Please select a .changes file to upload.
Tried to upload: vim-voom_5.3-3.dsc
$ debsign vim-voom_5.3-3_source.changes 
The .buildinfo file is already signed.
Would you like to use the current signature? [Yn]
Leaving current signature unchanged.
 fixup_changes dsc vim-voom_5.3-3.dsc vim-voom_5.3-3_source.changes
 fixup_changes buildinfo vim-voom_5.3-3_amd64.buildinfo vim-voom_5.3-3_source.changes
 signfile changes vim-voom_5.3-3_source.changes Yukiharu YABUKI 
 
Successfully signed changes file
$ dput vim-voom_5.3-3_source.changes 
Trying to upload package to ftp-master (ftp.upload.debian.org)
Checking signature on .changes
gpg: /home/yabuki/scm/git/debian/vim-voom_5.3-3_source.changes: Valid signature from 71A802D0BCD1BC92
Checking signature on .dsc
gpg: /home/yabuki/scm/git/debian/vim-voom_5.3-3.dsc: Valid signature from 71A802D0BCD1BC92
Uploading to ftp-master (via ftp to ftp.upload.debian.org):
  Uploading vim-voom_5.3-3.dsc: done.
  Uploading vim-voom_5.3-3.debian.tar.xz: done.
  Uploading vim-voom_5.3-3_amd64.buildinfo: done.
  Uploading vim-voom_5.3-3_source.changes: done.
Successfully uploaded packages.


2019-09-06 Debian related video [長年日記]

_ [Debian] youtube video:What are Debian maintainer scripts?

Debian packageのメンテナースクリプトについて理解を深めたい場合や、技術英語について触れてみたい。場合は見てみると良いでしょう。
この動画は再生するとあなたのyoutubeアカウントに記録が残ります。

_ [Debian] fdpowermon

fdpowermon/fdpowermon at master · yoe/fdpowermon Thinkpadで、電池容量が一定以下になったら、suspendやaplayで音を出して状態を知りたいので、使っているが、上手く動かせていない。うーん。 ~/.config/fdpowermon/theme.plに下記を置いて実行している。

# Copy this file to ~/.config/fdpowermon/theme.pl.
#
# If you don't like the 'default' theme, define a new one by copying
# /etc/fdpowermon/theme.cfg to ~/.config/fdpowermon/theme.cfg and
# renaming/adjusting the 'default' theme there to something new.
# Don't forget to replace "default" below with your new theme name.
#
# See the manpage fdpowermon(1) for full details on what you can do
# here.
 
# define a suspend action
sub suspend {
    #       /usr/bin/dbus-send --print-reply --system --dest=org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager.Suspend boolean:true
    system("/usr/bin/dbus-send --print-reply --system --dest=org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager.Suspend boolean:true");
}
 
sub beep {
    system("/usr/bin/aplay /usr/share/games/wesnoth/1.14/sounds/bell.wav");
}
 
# initialize our theme, from /etc/fdpowermon/theme.cfg or
# ~/.config/fdpowermon/theme.cfg
# my $theme = fdpowermon::theme::get_theme("mytheme");
my $theme = fdpowermon::theme::get_theme("default");
 
# on the discharge event for the lowest element in the list of steps (0 = first
# in the index, "d" for discharge), call the "suspend" sub defined above
$theme->set_event( 1, \&suspend, 'd' );
$theme->set_event( 2, \&beep, 'd' );

2019-09-05 working for Debian [長年日記]

_ [Debian] source only upload

souce only uploadするのに gbp + cowbuilderを使っている私は、debian wikiを参照して、--git-pbuider-options=--source-only-changesを設定した。いろいろとコミット済みだったので、--git-tagをつけた。  xzでuploadすると怒られたので、--git-commpression=gzipにして、オリジナルと同じ圧縮方式にした。--git-retagで再ビルドを指示した。
gbp buildpackage --git-pbuilder --git-pbuilder-options=--source-only-changes --git-tag --git-notify=auto --git-compression=gzip --git-retag
 
これで、dputして accept されるといいな。って思った。こんな感じ。
drwxr-xr-x 1 yabuki yabuki      94  9月  5 15:50 vim-voom
-rw-r--r-- 1 yabuki yabuki    5432  9月  5 18:10 vim-voom_5.3-3.debian.tar.xz
-rw-r--r-- 1 yabuki yabuki    1804  9月  5 18:10 vim-voom_5.3-3.dsc
-rw-r--r-- 1 yabuki yabuki   99568  9月  5 18:10 vim-voom_5.3-3_all.deb
-rw-r--r-- 1 yabuki yabuki   21173  9月  5 18:10 vim-voom_5.3-3_amd64.build
-rw-r--r-- 1 yabuki yabuki    5461  9月  5 18:10 vim-voom_5.3-3_amd64.buildinfo
-rw-r--r-- 1 yabuki yabuki    2458  9月  5 18:10 vim-voom_5.3-3_amd64.changes
-rw-r--r-- 1 yabuki yabuki     446  9月  5 18:17 vim-voom_5.3-3_amd64.ftp-master.upload
-rw-r--r-- 1 yabuki yabuki    1227  9月  5 18:10 vim-voom_5.3-3_source.changes
-rw-r--r-- 1 yabuki yabuki  115854  9月  5 18:00 vim-voom_5.3.orig.tar.gz

_ [Git] git push --all --tags

これは、ダメ。stack overflowの記事 をみて、cloneしてきた、.git/configに
[remote "origin"]
  push = refs/heads/*
  push = refs/tags/*
を書き込んで同じようにやった。

2019-08-29 肉の日 [長年日記]

_ [tDiary] emacs with tDiary-mode.el

なんだかんだと、長い間tDiaryをサボって来ました。https化の対応や、emacsでtdiary-mode.elを使わなくなって、不精ぐせがついてしまいました。最近、佐々木さんのメンテしている、tdiary-modeのgit repoを知って使わせてもらうことにしました。emacsのtls.el対応emacs gnutlsで、httpsでも安心。

Edit tdiary from Emacsで、ちょっと楽ができそうです。

_ 大雨

夏の豪雨に遭遇した。


2019-08-28 Still alive [長年日記]

_ お久しぶりです。

生きてます。


2014-10-29 [長年日記]

_ [Awk] pdbを処理するプログラム、再び。

このエントリーはほぼ一人のために書いています。他の人で有用かどうかは分かりません。 PDB原子座標入力形式 バージョン 3.2 の形式を扱う awk のコード の続き 下記のようなデータを処理するawkのひな形
ATOM   1534  O   HOH D4175     -15.917  -2.349  -5.049 10.50 38.70           O  
ANISOU 1534  O   HOH D4175     9613   1110   3981    739   -737   -411       O  
ATOM   1535  O   HOH D4176     -22.395 -31.001 -14.913 11.00 42.50           O  
ANISOU 1535  O   HOH D4176     2536   4368   9243    126   -371   -647       O
任意の数字の4桁を3桁にしたいらしいので、awkのfunctionをつくっておいた。diminish_digitです。 以下、参考ソースコード。上記のデータをツッコンで実行し、エラーがないことは、Linuxで確認した。
#!/usr/bin/env awk -f
# PDB data manipulator basics (awk version)
#
# This program give you skeleton of manipulating PDB data.
# Enjoy!
#
# * How to use
# $awk -f your.awk < input.data > output.data
#  
# Author: Yukiharu YABUKI 
# License : GPL v3 
# If you don't know GPL v3 license.
# Please go to http://gplv3.fsf.org
{
    # ATOMが先頭だったときの行処理
    if ($1 ~ /^ATOM/){
        # print $0 #Debug print
        # 何カラム目か分からないので、該当するカラムでやること
        if ($2 > 1000){
            d = $2 - 1000; # 1000引くだけじゃないなら、functionを呼べ
        }
        # そのカラムでの出力処理
        printf("%3d", d);
        # データを、そのままか加工して出す
        # 最後 改行して一行おわり
        printf("\n");
    }
    # ANISOUが先頭だったときの行処理
    if($1 ~ /^ANISOU/){
        # print $0 #Debug print
        # 何カラム目か分からないので、該当するカラムでやること
        if ($2 > 1000){
            d = diminish_digit($2);
        }else{
            d = $2 - 10; # 10だけ引く
        }
        # そのカラムでの出力処理
        printf("%3d", d);
        # データを、そのままか加工して出す
        # 最後 改行して一行おわり
        printf("\n");
    }
}
# 桁を縮める
function diminish_digit(d){
    while(d > 999){
        d = d - 1000;
    }
    return d;
}
本日のツッコミ(全1件) [ツッコミを入れる]

_ いくこ [酔った頭では意味わからんかったんですが今見たらすぐわかりました。なるほどなるほど。ありがとうございますです。]


2014-07-08 ffmpegがなくなったという前に [長年日記]

_ [Debian] libav が ffmpeg から fork したので、avconv を使うようにした。

最近、ffmpegがsidにないと言う人をみたので、インターネット上に日本語の記事として書いておこうと思った。(もともとは、ubutsuでという話だったかは、記憶が定かでないので、自分が分かっている範囲だけ)

libavがffmpegからforkしたのは、ffmpegとlibavの背景事情 (http://cpplover.blogspot.jp/2012/03/ffmpeglibav.html)を読めば、情報としてとっかかりが得られると思う。

では、具体的にどうすればいいのか。Debian Projectで再度、ffmpegがITPされているようだが、次のリリース jessie に間に合うかどうかは、まだ分からない。間に合えば使い続けるという方法もある。が、間に合わなかったら?

Debian Multimediaのリポジトリを使う方法もあるが、私は、オススメしない。ライブラリの使い方でミスると思い通りに動かなくなる場合がある。オフィシャルじゃないしねえ。

では、どうするか。libav-tools パッケージに入っている、avconvコマンドが、あなたの欲しがっていた(いまは)ffmpegと同等の働きをします。コマンドラインも確認がいりますが、ffmpegからavconvへ、そのまま移行できました。私の場合。

$ avconv 
avconv version 10.2-6:10.2-1, Copyright (c) 2000-2014 the Libav developers
  built on Jun 28 2014 16:18:48 with gcc 4.9 (Debian 4.9.0-7)
Hyper fast Audio and Video encoder
usage: avconv [options] [[infile options] -i infile]... {[outfile options] outfile}...
まあ、jessie/sidを使っている人は(たぶん、ubuntuなどの派生ディストリも)試してみてくださいな。

2014-05-07 [長年日記]

_ [Debian] memo my gbp workflow

workflow memo

  • パッケージに更新を加える
  • gbp buildpackage --git-no-create-orig --git-ignore-new --git-pbuilder
  • 変更点確認
  • テスト
  • (cd ../;debsign *.changes)
  • dput
  • gbp buildpackage に --git-tag をつけて、タグを打つ
  • git push して リモート・レポジトリへ反映する
分岐点
  • gbp dchを使うかどうか
    • 使う:commit logからdebian/changelogを生成する。うっかりすると UNRELEASED になるからちゃんとオプションを指定すること。コミット粒度は細かめ? gbp dch しても debian/changelog が更新されるので別途コミットが必要です。
    • 使わない: debian/changelog は自分で生成する
     

2014-05-02 [長年日記]

_ [tDiary] 次のtDiaryがでたら、やる手順

ruby 2.1.1 をwget で取ってくる。 tDiary 4.0.4 (フルセット)を wget でとってくる

ruby 2.1.1 を
    ./configure --prefix=$HOME
    make
make test で確認する。 .installed-list で前バージョンがインストールしているのを消していく。
    yabuki@aegis:~/src/tdiary/tdiary-3.0.1$ grep -Rni yabuki *.rb
    index.rb:1:#!/home/yabuki/bin/ruby
    update.rb:1:#!/home/yabuki/bin/ruby
  • .htaccess を tdiary-v4.0.3/へコピー
  • パーミッションの確認とshbangの書き換え
  • ./src/tdiary/tdiary-3.0.1/images/* をコピー
  • ./src/tdiary/tdiary-v4.0.3/に tdiary.conf を作る
  • tdiary.confに@styleの設定をWikiからtDiaryへ変更する
  • パーミッションは、www-dataが読み書きできるようにしておくこと
  • index.rssなど作れないと困る

2014-05-01 [長年日記]

_ [tDiary] style

どこに、store しているかわからないが、tDiary 日付毎に、スタイルを保持しているようだ。新しいバージョンのデフォルトが Wiki スタイルになっていて、覚えている記法が、そのまま通らなくなり、ちょっと調べた。

Webでの書き込み画面で、本文という表示のとなりに、xxxxスタイルと表示されるので、わかる。

tdiary.conf で @style 変数に、スタイルを設定する。いまは書き換えて 'tDiary' に変更済み。これで、Emacsからも書き込みできるようになったかな。

この日のstyleをどうやったら、tDiary style に直せるかは、優先度が低いのでまた、そのうちに(というと、永遠になおさないかもしれないが)


2014-03-04 [長年日記]

_ [Debian] lvm is not available

自分のsidマシンが、"lvm is not available" というメッセージを出すようになり、起動しなくなった。

これから書くことは、上記のメッセージを出てから直すまでの話です。最初に、最小手順だけ書くと

  1. Debian rescue live image を使って、レスキュー・ディスクを作る
  2. 対象PCを rescue live image を使って立ち上げる。
  3. lvdisplayで状況を確認
  4. lvm がアクティブなら、cryptsetup luksOpen 確認したlvmデバイス名 適当な名前 で、パスワードを入力して、暗号化を解く。
  5. 解いた暗号化ファイルシステムを、順番にmountしていく
  6. ネットワーク接続を確認
  7. chroot 自分が、ファイルシステムツリーを作った場所(/とした場所)
  8. システムの検査, 今回は apt-get install lvm2, と update-initramfs -u
  9. 再ブートして、確認。もちろん、usb memory stick などの起動メディアは抜いておく。Debian live rescue image は、ちゃんと警告してくれるので、メッセージを見逃さないなら大丈夫

原因

私の予想では、(1)何らかの理由(私の操作の依存関係か?)で lvm2 のパッケージが抜けて、linux-imageの更新かかかり、update-initramfs を作るときに、lvm を含めていなかった。kernel更新をしても、再起動させるタイミングで、即時チェックをしなかったので、発見が遅れた。noteパソコンを、運用していて、メモリーサスペンド最中に放電サイクルで、誤って全部放電させて、再起動をかけて、問題が発覚した。

レスキュー・ディスクの作成

live-imageでレスキュー・ディスクを作るには、(https://www.debian.org/CD/faq/#write-usb)を参考に、ddで、usb memory stick に作った。GUIが使える環境も魅力的ではあるが、今回は、復旧が目的なので、レスキューイメージを書き込んだ。usb 3.0 のポートと memory stick を使ったが、想定したよりは時間がかかった。これは、BSを4Mにしろと、助言がされるわけだ。

起動は、ThinkPad の青いボタンを押下して、BIOSメニューに入り、usb memory stick からbootするように設定する。

調査

ありがたいことに、家には複数台のPCがあり、片方で Google 検索を行い、片方の復旧を行った。(余談開始)こういうことで、成功体験があるから、何台もPCを所有してしまうのかもしれない。(余談終了) まずは、Debianの BTS とか漁ったが、もう closed しているものばかりで、その日の段階で、同じような目に会っている人はいなかった。

rescueで上げて、lvdisplay で確認すると、lvm は active になっているので、lvm の設定で躓いているのだろうと、推測。

とすると、lvm + 暗号化しているノートを手動で、暗号化を解いて、マウントする方法を確認する。(http://digitalvectorz.wordpress.com/tag/unknown-filesystem-type-crypto_luks/)を参考にしながら、/mnt を / と見立てて /boot や / をマウントしていく(ここは、ご自分のパーティションというか、lvmの構成というか、に依存します。)

復旧

準備のマウントが終わったら、localeの設定、ネットワーク接続を確認してから、chroot で /mnt を / として、システムの修復を行う。/sys や /proc はマウントされてないし、locale の設定内容によっては、Cへfaillback するかもしれない

apt-get install lvm2で、lvmのパッケージを導入しておく。あとは、update-initramfs -u で、/boot/initrd.img を更新(lvmを含める) する。その後、exitでchrootを抜けて、reboot コマンドを実行、画面にusbメモリーなどを抜けといわれたら、抜いてから、エンターキーを押す

すると、無事に起動して、パスフレーズを聞いてくれるようになり、立ち上がるようになりました。ほっ。と一安心


2014-03-01 [長年日記]

_ [Gauche] Lisp/scheme 属の Gauche

apt-get install gauche-docで info は必ず入れよう。Gauche 自体のチュートリアルで、online ですぐに読めるのは見つけられなかった。schemeのチュートリアルで遊ぶのが良い

Gauche は、インタラクティブ・モードを持っている。が、編集機能は、今のところ予期したほど強力ではない。そのため、Emacsと協調して動かすのが良い。分業ですね。

設定方法は、info の gauche (ja) に書いてある。が、せっかちな人のために、引用する。

`gosh'をEmacs内部で走らせることをお勧めします。
EmacsはSchemeサブプロセスを操作するための豊富な機能を持っています。
次の行を`.emacs'に加えておくと、<M-x run-scheme> で
Emacsのバッファ内で`gosh'が走ります。
     (setq scheme-program-name "gosh -i")
また、エンコーディングのことも書いてある。


2014-02-23 [長年日記]

_ 関西Debian勉強会 で systemd

TLをみていると、ぽこぽこと風邪で欠席されるかたがいて大変そうだったので、関西Debian勉強会の様子を見に行った。

開催はされていて一安心。Debian kFreeBSD をいれて苦労されている方がいたので少しお手伝い。日本語入力で、Debian の default である task-Japanese-desktop に入っている、uim の設定を続行してユーザで日本語入力を行える所まで確認した。

systemdの話題が、やはりホットであったので、自分の sid マシンを sysv-init から systemd-sysv を入れて、移行してみた。いろいろとドラスチックに変わるが、i3-wmで、ノートパソコンのlidを閉じるとメモリー・サスペンドするようになって幸せです。i3-wm を network-managerやhp-systrayともicon表示して便利に使えるようにしたし、暮らしていける気になってきた。i3-wm の要求リソースが低いのと、gnome-shellがメモリーを食いつぶしていたせいもあり、長時間稼働させていても、(プログラムの反応が機敏なため)ずっと楽しさが続く。

i3-wm で複数のディスプレイの実験をしていて、複数画面の設定をしたついでに、最近使っている、i3-wm の話を少しした。


2014-02-19 [長年日記]

_ graphviz の dot 言語みたいな感じで

コンサルな人が良く書きそうなパターンの図、例えば、こんな図3つの円が重なっている図を dot言語みたいに、テキストから生成する方法ってないのかな。

円が重なる図で日本語フォントがぶっ込めるのは、まだ見つけられていない


2014-02-11 [長年日記]

_ [Vim] Debian での vim の作法

いままで、Emacsだけで、vimは、ほぼ素で使ってきたが、いざ vim を設定しようと思うと、よくわからない部分がいっぱいある。例えば、~/.vimrc を作るのは良いとして、

$ locate markdown.vim
/usr/share/vim/vim73/ftplugin/markdown.vim
/usr/share/vim/vim73/syntax/markdown.vim
のようなプラグインがある模様だが、拡張子が .markdown 以外に を利用していた時に、.md をシンタックス・ハイライトするのに、どうすればいいとか。何を読めばいいのかしら? とかね。

シンタックス・ハイライトの色も変えたくなるだろうし、フォントも変えたくなるに違いない。fixedの、いわゆる漢字の空白を可視化しているフォントをプログラミング時には使いたいから。

_ [Vim] help を日本語で見る

(https://code.google.com/p/vimdoc-ja/downloads/list)にvimの日本語helpがあるので、~/.vim/doc に展開して (scriptの方はべつの時に)

helptags ~/.vim/doc
set helplang=ja,en
を~/.vimへ追記する。参考にしたのは、(http://www.sougetu.net/archives/1170)でした。


2014-02-10 [長年日記]

_ [Emacs] dired-virtual-mode


2014-02-03 [長年日記]

_ MikuMikuPenguin を Debian GNU/Linux Wheezy で動かす(OpenGL 2.1)

3Dのモデルを動かすことができる。pmx と vmd の形式と呼ばれるファイルを読み込み、PMXViewer として動く。ライセンスは GPLv3 (https://github.com/sn0w75/MikuMikuPenguin) で開発が進んでいる。いまは、PMXViewer だけだが、libmmp を作って、利用されるのが直近の目標のようだ。

開発者は、かなり日本語が上手なアメリカ在住の人みたいで、英語はもちろん、日本語も堪能だ。が、3Dモデルの世界では用語も難しく(日本人でも関心がなければ、そのような語彙は身に付かないだろう)、C++のプログラミングだけでなく、ドキュメンテーションなどでも助力できる人もいるんじゃないかと思う。

以下は、ThinkPad X201s の上で、Debian GNU/Linux Wheezy で、MikuMikuPenguin の PMXViewer をコンパイルして動かすまでの話です。

ビルド

どれをビルドするか、github の master は、OpenGL 3.0 以上を想定している。いまの README.md にはチェック方法を書いているので、そっちを参照してもらいたい。

buildをするのに、wheezy の下記のライブラリをインストールする。細かい所だと、抜けがあるかと思う。私は他の関係で automake, autotool など入れているから。

sudo apt-get install build-essential
sudo apt-get install libglfw-dev
sudo apt-get install libglew-dev
sudo apt-get install libglm-dev
sudo apt-get install libsoil-dev
で、libbulletdynamicsは、wheezy にはない。sidからソースパッケージを取ってきて、自分のマシンでrebuildする。buildd-depの解決はそんなに難しくない。下記参照。(ただし、クリーンな環境から試してないから抜けてる依存関係があるかもしれないが)deb-src をsidに向けて、apt-get source で、 bullet のソースコードを落として、再ビルドすればいい。
sudo apt-get install cmake freeglut3-dev libtinyxml-dev zlib1g-dev doxygen rdfind symlinks
再ビルドすると、
yabuki@yelona:~/src/deb-package/i386/libbulletdynamics$ ls
bullet-2.81-rev2613+dfsg2
bullet_2.81-rev2613+dfsg2-1.debian.tar.xz
bullet_2.81-rev2613+dfsg2-1.dsc
bullet_2.81-rev2613+dfsg2-1_i386.build
bullet_2.81-rev2613+dfsg2-1_i386.changes
bullet_2.81-rev2613+dfsg2.orig.tar.xz
libbullet-dev_2.81-rev2613+dfsg2-1_i386.deb
libbullet-doc_2.81-rev2613+dfsg2-1_all.deb
libbullet-extras-dev_2.81-rev2613+dfsg2-1_i386.deb
libbullet2.81-dbg_2.81-rev2613+dfsg2-1_i386.deb
libbulletcollision2.81_2.81-rev2613+dfsg2-1_i386.deb
libbulletdynamics2.81_2.81-rev2613+dfsg2-1_i386.deb
libbulletfileloader2.81_2.81-rev2613+dfsg2-1_i386.deb
libbulletsoftbody2.81_2.81-rev2613+dfsg2-1_i386.deb
libbulletworldimporter2.81_2.81-rev2613+dfsg2-1_i386.deb
libbulletxmlworldimporter2.81_2.81-rev2613+dfsg2-1_i386.deb
libconvexdecomposition2.81_2.81-rev2613+dfsg2-1_i386.deb
libgimpactutils2.81_2.81-rev2613+dfsg2-1_i386.deb
libhacd2.81_2.81-rev2613+dfsg2-1_i386.deb
liblinearmath2.81_2.81-rev2613+dfsg2-1_i386.deb
な感じで、パッケージができあがっているので
sudo dpkg -i libbulletdynamics2.81_2.81-rev2613+dfsg2-1_i386.deb libbulletcollision2.81_2.81-rev2613+dfsg2-1_i386.deb liblinearmath2.81_2.81-rev2613+dfsg2-1_i386.deb libbullet-dev_2.81-rev2613+dfsg2-1_i386.deb libbulletsoftbody2.81_2.81-rev2613+dfsg2-1_i386.deb
上記のようにインストールする。後は
export CXXFLAGS="-fpermissive"
autoreconf -i
./configure
make
で、カレントディレクトリに、pmx という実行ファイルができてるはず。このバイナリーにデータを入力するといいのだが、Windowsな世界なので、漢字コードが違うファイル名でzipされているので、Ubuntuの unizp -O オプション(これは、ubuntuだけでなく、arch Linux でも、upstreamに還元せずに自前で保守されているようだ)を使って、圧縮ファイルを伸長するか、samba を使い、windowsでの伸長された内容を取ってくる。smbclientでもいいかと思う。

データ自体は、NicoNico系で取ってこれるとおもう。

      $ ls -la
      合計 18596
      drwxr-xr-x  5 yabuki yabuki     4096  1月 31 03:51 .
      drwxr-xr-x 18 yabuki yabuki     4096  1月 29 13:19 ..
      drwxr-xr-x 14 yabuki yabuki     4096  2月  1 04:11 MikuMikuPenguin
      drwx------  3 yabuki yabuki     4096  1月 28 22:13 Tda式初音ミク・アペンドVer1.00
      -rw-r--r--  1 yabuki yabuki 18216215  1月 28 22:12 Tda式初音ミク・アペンドVer1.00.zip
      drwx------  2 yabuki yabuki     4096  1月 28 22:14 私の時間short
      -rw-r--r--  1 yabuki yabuki   766184  1月 28 22:12 私の時間short.zip
    
本当は、Debian GNU/Linux Sid ならもっと簡単

Debianの開発版である、Sidを使った方がもっと簡単なのだ。が、人によっては開発版で生活できない人もいる。ので、安定版のWheezyでやりましたが、自力で調べて問題解決できる人間なら、Debian Sidの方が話が早い。再ビルドもしなくていいし、ライブラリのバージョンも upstream とほぼ同じになる。


2013-12-12 [長年日記]

_ [Debian] 予は如何にしてless使いに成りしや

私は、これまで lv を愛用してきた。(1) 各種ファイルのエンコードを変換してくれる (2) gzip されたファイルを明示的に zcat することなく中身が見えた (3) less の 4文字より lv の2文字の方が楽という理由である。カラーにするには、lv -cなどすればよかったし、gitのページャーにも lv を使ってきた。

だが、最近 lv を使っているのは、どうなのか? という disり を聞いて、less の現状をチェックしなおしてみた。上記の(2)に該当することは、Debianの~/.bashrcの中に

# make less more friendly for non-text input files, see lesspipe(1)
#[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
という行もあるし、青木さんの Debian referenceの「8.6 覚えるべき小さくて洒落たコマンド」に「8.6.1 Pager」として軽く言及がある。

上記の2行目の部分をコメントを外し、再ログインすれば、zcat を入力する手間は省ける。そして,,,lessを使うことで、次のエントリーが生きてくるのであった。他には

なども参考になると思う。

_ [Debian] git diff-highlight

Debian GNU/Linux wheezy で, 下記の話を具体的にやるとどうなるって話を書いておきます。対象にしているのは、Debian GNU/Linux wheezy 7.3 です。以降のバージョンでもある程度は参考になるかと思いますが、無保証です。

Git に同梱されている contrib/diff-highlight を使います。

あとは README に書いてあることの引き写しですが、PATH の通ったディレクトリに置いて、~/.gitconfig に以下のように設定を書く。

[ 2013-11-26 Git の diff を美しく表示するために必要なたった 1 つの設定 #git より引用]

locateで捜すと

$ locate diff-highlight 
/usr/share/doc/git/contrib/diff-highlight
/usr/share/doc/git/contrib/diff-highlight/README
/usr/share/doc/git/contrib/diff-highlight/diff-highlight
のように発見できます。Debianの場合、pathの通っている場所で、自分だけ使うのであれば ~/bin ディレクトリを作成すると良いでしょう。system wide に使いたい場合は、そのマシンのポリシーに従っておいてください。 Debian Package は /usr/local/以下は、利用しないので、自分や Debian パッケージのポリシーに沿ってないプログラムを扱わない限り壊されないので、考慮するのも良いでしょう

上記の文章で、READMEと呼んでいるのは、検索結果の2つ目になるので、英語ですが眺めておきましょう。良いことがあるかも知れません。

一つ気がかりなのは、gitのversion upがあっても、~/bin/のdiff-highlightは、ずっとそのままなので、定期的にcpしてくるか、ln -s とかするのも良いのかも知れませんね。良い方法があれば、愛のあるツッコミ欄をご利用ください。


2013-11-27 [長年日記]

_ [Debian] apt-build の置き土産

自分のマシンで、update-managerが、気に入らない挙動をするが、調べる時間を作らなかったのですが、我慢ができなくなり

W: Failed to fetch file:/var/cache/apt-build/repository/dists/apt-build/main/binary-i386/Packages  File not found
W: file:/var/cache/apt-build/repository/dists/apt-build/main/binary-i386/Packages の取得に失敗しました  ファイルが見つかりません
 
E: いくつかのインデックスファイルのダウンロードに失敗しました。これらは無視されるか、古いものが代わりに使われます。
を、真面目に対処することにした。apt-get remove --purge apt-build で全部消したつもりだったが? apt-get remove だけだったのか、
yelona:/var/cache# vi /etc/apt/sources.list.d/
apt-build.list
となっており、まだ apt-build の設定を全部消してなかったわけです。消したらサッパリ。思い通り。誰かがエラーメッセージそのままぶっ込んで、検索するかもしれないので、こういうエントリーをつくっておきます。

2013-10-29 [長年日記]

_ [Debian] Debian GNU/Linux Wheezy (7.x) でのGW-USMicroN の認識

usb WifiのGW-USMicroNは、ubuntuなどでは挿したら認識するぞ。と雑誌の記事には書いてあったわけですが、Debian GNU/Linux Wheezy (7.x) では、カーネルモジュールが変わっていたり、設定の教え方が変わっていたりするので、以下のようにすれば動きます。

  1. #apt-get install firmware-ralink
  2. #modprobe rt2800usb
  3. #echo "2019 ed14" >> /sys/bus/usb/drivers/rt2800usb/new_id

途中を知りたいひとは、usbを挿した時のログやwiki.debian.orgを検索してみてください。rt2880usbモジュールは、カーネルバージョンが古いと別の記事にあるモジュールを使いますが、いまは、wheezy がstableなので、必要な人だけ調べてください


2013-10-28 [長年日記]

_ [Debian] git-buildpackage を始めるにあたってのチェックポイント

git-buildpackage (以下 gbp と略す)を使いはじめるにあたって、気になった点を列挙しておきます。

  • gitで管理するわけですから、どのエンティティを外に出すか決めておく。個人のメールアドレスなのか debian.org のメールアドレスなのか。
  • gbp import-dcs --download は便利だが、git config --global user.name および git config --global user.email の設定がしてなかったり、適切かどうかは事前にチェックしておくのが良い
  • いったん、git repo ができてしまえば、git config user.name や git config user.email で運用できるので自分の好みのエンティティを使えばいい。
    • 便利機能を使わないで、自分でリポジトリを作って、設定してから gbp import-dsc をすればいいのかもしれないが、まだ試してはいない
  • githubでgbp の練習をしたいなら、github側でリポジトリを初期化するのではなく、gbp create-remote-repo --pristine-tar --remote-url-pattern=git@github.com:yabuki/xfireworks.git のように私はやってみた。ちなみに、--remote-url-pattern を指定しなかったら git.debian.org が暗黙の指定となる。
  • --pristine-tar の指定は、ケースバイケースだが、gbp buildpackage はなかったら orig.tar.gz (圧縮方法は指定できる) を作るので、new upstream の時に上げた、オリジナルソースと異なるなら考える
  • ちなみに、upstream からの変更点についてはダウンロードして変更したものは git が全て追跡しているので、upstream を起点とする連鎖は保持していると考えられるのではないか。なので新規パッケージを作るときに、upstream が指定するソースコードをダウンロードしているか?どうかが神経の使い所か。
    • git tag -v deiban/1.0 などで検証できるってことは、やっぱりここまでの変更は私がやりました。ってのを明示して責任の所在をハッキリさせる意味なんだろうな。upstream/1.0 もこの内容で upstream からダウンロードして、私が展開しましたと。
  • --git-bilderオプションは必要に応じて pbuilderや cowbuilder や qemubuilder を呼び出してビルドする。プログラムによって、異なるアーキテクチャもエミュレーションしてビルドをチェックできるようだから、一度は上記の環境設定と実行方法を学んでおくと良いかもしれない。
  • ブランチレイアウトは、ドキュメントにもあるが、upstram-branch, debian-branch, (使うのなら)pristine-tar, stable, security, nmu, dfsg, backports, snapshot など自分の使い方を考えておくのがいいのではないか。gitだからあとからでもブランチは切れるが、練習しておかないといきなり本番投入は厳しいと思います。「思い通りに設定する方法」や「便利に使う設定」を見つけて設定する時間もありますし。
  • debian/.gbp.conf は、チームならチームの方針が決まったものだけを設定するのが良さそうですね。ほかにも自分のユーザー設定やリポジトリだけに有効なgbp.confを置けるので、自分で試しながらgbp.confを練り込む感じなんでしょうか。
  • gitでtagをgpg でサインする機能を提供しているが、ちゃんと事前に検証方法もドキュメントで調べておくこと。2.6 Git の基本 - タグのあたりですかね。
  • --key-id=オプションは、設定ファイルに書いて安心する前に、コマンドラインで指定して、動作を確認してから。(0xは要らんかった)

_ [Debian] gbp で、そういうものなのか?と思ったが、多分困らないこと

gbp をつかって、慣れていないため? かそういうものなのかと思う部分について

  • gbp create-remote-repo すると、カレントか.gitなのかわからないが、bare repo を作ってから転送しているようだ。やり直したかったら、リポジトリを消して、git remote remove orign すれば、やり直しできるが、たいていの場合、そもそものリポジトリ操作ミスをリカバリーするなら、手順によっては、全部消してやり直したほうが楽かもね


2013-09-22 [長年日記]

_ [Debian] dgit

関西 Debian 勉強会に顔を出してきた。ALSAのお話を拝聴し、dgitのことを聞いていたら、Debian Developerでないと dgit は実行できないという。

それじゃあ、困るべなと。せめて実演するぐらいはガンバロウと。躓いていた点は、自分のアカウント名(yabuki)とDDのアカウント名(yyabuki)が違っていたこと。基本的に~/.ssh/config に

HOST *.debian.org
  USER yyabuki
ってのを追加しておけという、オチでした。
$ dgit clone etckeeper
canonical suite name for unstable is sid
fetching existing git history
remote: Counting objects: 2693, done.
remote: Compressing objects: 100% (809/809), done.
Receiving objects:   7% (189/2693), 36.00 KiB | 56.00 KiB/s
[snip!]
Receiving objects:  99% (2667/2693), 292.00 KiB | 24.00 KiB/s
Receiving objects: 100% (2693/2693), 292.00 KiB | 24.00 KiB/s
Receiving objects: 100% (2693/2693), 327.28 KiB | 24.00 KiB/s, done.
Resolving deltas: 100% (1859/1859), done.
From git+ssh://git.debian.org/git/dgit-repos/repos/etckeeper
 * [new ref]         refs/dgit/sid -> dgit/dgit/sid
 * [new tag]         debian/1.9 -> debian/1.9
From git+ssh://git.debian.org/git/dgit-repos/repos/etckeeper
 * [new tag]         debian/1.8 -> debian/1.8
downloading http://ftp.debian.org/debian//pool/main/e/etckeeper/etckeeper_1.9.dsc...
last upload to archive specified git hash
HEAD is now at def8d3a releasing package etckeeper version 1.9
dgit ok: ready for work in etckeeper
ってな感じ。branchは
$ git branch -a
* dgit/sid
  remotes/dgit/dgit/sid
$ dgit fetch wheezy
W: suite 'wheezy' not recognised.
E: No valid suite given.
no version available from the archive
dgit: package etckeeper does not exist in suite wheezy
wheezy は用意されてなかっかった。まあこれからですね。

2013-09-21 [長年日記]

_ [Debian] perf in Wheezy

パフォーマンス測定ツールのperfですが、対応するパッケージが入っていないと

$ perf --version
/usr/bin/perf: 24 行: exec: perf_3.2: 見つかりません
E: linux-tools-3.2 is not installed.
という、メッセージが出て、足りないパッケージを教えてくれます。

そこで、足りないパッケージを補うわけです。

$ sudo apt-get install linux-tools-3.2
[sudo] password for yabuki: 
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の特別パッケージがインストールされます:
  libdw1
提案パッケージ:
  linux-doc-3.2
以下のパッケージが新たにインストールされます:
  libdw1 linux-tools-3.2
アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 0 個。
618 kB のアーカイブを取得する必要があります。
この操作後に追加で 1,509 kB のディスク容量が消費されます。
続行しますか [Y/n]? 
取得:1 http://cdn.debian.or.jp/debian/ wheezy/main libdw1 i386 0.152-1+wheezy1 [217 kB]
取得:2 http://cdn.debian.or.jp/debian/ wheezy/main linux-tools-3.2 i386 3.2.17-1 [402 kB]
618 kB を 1秒 で取得しました (371 kB/s)
以前に未選択のパッケージ libdw1 を選択しています。
(データベースを読み込んでいます ... 現在 472298 個のファイルとディレクトリがインストールされています。)
(.../libdw1_0.152-1+wheezy1_i386.deb から) libdw1 を展開しています...
以前に未選択のパッケージ linux-tools-3.2 を選択しています。
(.../linux-tools-3.2_3.2.17-1_i386.deb から) linux-tools-3.2 を展開しています...
man-db のトリガを処理しています ...
libdw1 (0.152-1+wheezy1) を設定しています ...
linux-tools-3.2 (3.2.17-1) を設定しています ...
という、風にインストールが進むわけです。

_ perf自体の使い方

perfの使いかた(http://int.main.jp/txt/perf/)を参照せよ。


2013-09-03 [長年日記]

_ [Debian][Python] sitecustom.py

pythonで、システムワイドの設定を行う手の一つに sitecustom.py があるようだ。(see also (http://d.hatena.ne.jp/kakurasan/20101217/p1)

pythonの対話*1モードにおいて、ipythonのようなtab補完を効かせる設定(既出リンク)や、デフォルトエンコードを設定する(http://d.hatena.ne.jp/motie/20090615/sitecustomize20090615)などの設定*2は、もちろん手動でやってもいいが、Debian的には、Debconf でやるか、コマンドを作った方がいいのかしら?

import rlcompleter
import readline
readline.parse_and_bind ('tab: complete')

で、tab補完を有効にして

import sys
sys.getdefaultencoding()

とすると、'ascii' 返ってくる。毎回プログラムで宣言するというスタイルを取るのも一理あるが、site wide で utf8 に変更してもいいよねえ?

*1 インタラクティブ

*2 いまの時点で日本語を扱うなら、utf8が妥当か。


2013-08-19 [長年日記]

_ [Debian] Wheezy における Eclipse の設定 --- 日本語メニュー(Pleiades)

apt-getかaptitudeなどのツールを使って、eclipseをdebで導入しておきます。次に、pleiadesパッケージも導入しておきましょう

そうしたら、ドキュメントの /usr/share/doc/pleiades/readme_pleiades.txt.gz は、lv などで呼んでおこう。あとではまりやすいことも、読んでおけば回避できます。-clean オプションの件とかね。

/var/lib/dpkg/info/pleiades.list の中を確認して、特に更新手段は本パッケージにはなさそうなので、手動でやる。

私の場合は、旧バージョンのeclipseで、オプションの書き換えをしていたのでvim /etc/eclipse.ini /etc/eclipse.ini.dpkg-oldとして、:sn(画面分割), ^W w(ウィンドウ切り替え) と入力し、新しい設定ファイルに、下記のような設定にした。(Memory 16Gなので、既定値から少々大きくしている) スプラッシュは、pleiades のを使う設定にしている。

-startup
plugins/org.eclipse.equinox.launcher_1.3.0.dist.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.1.200.dist
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Xms128m
-Xmx512m
-Dorg.eclipse.equinox.p3.reconciler.dropins.directory=/usr/share/eclipse/dropins
-javaagent:/usr/share/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar

後は、pydevを別途インストールや、旧バージョンのメタファイル(私の場合は、.eclipse/org.eclipse.platform_3.5.0_155965261 以下ね。現在のは消すと寂しいことになるので要注意)を削除したり*1とお掃除などしておく。

ということで、スプラッシュが変化して、メニューが日本語になった、eclipseが使えるようになったわけです。

*1 最悪バックアップがあるから取り戻せるし


2013-08-16 [長年日記]

_ [Debian][LaTeX] Wheezy で TexLive 環境を作って、そこでのつれづれに書きとめる

ようやくメイン環境を、Debian GNU/Linux Wheezy の TexLive に乗り換えて、既存の(La)TeX環境から移行中、気がついていることをランダムにメモっておく

一番、嬉しいことは utf-8 で、LaTeX のソースコードを書いてコンパイルできる。ということだ。OSのエンコード環境そのままで、LaTeX のソースコードを書いて、Type Set できる。これは良い点があるが、既存のJISまたは、EUCコードで書いた LaTeX 資産を持っている人には、変換の手間や、変更箇所が多すぎて、変換するのに実際的でない人もいるだろう。私の場合、具体的には 履歴書を LaTeX で作成する rireki という LaTeX のソースコードを使っている。これは、もともと EUC-JP で使っていた。これを EUC-JP から UTF-8 に変換する*1のは、LaTeX ファイル 2行変更し、再コンパイルするのに、変更箇所をチェックして直すのに時間が掛かりそうだったので、platex --kanji=euc rireki.tex で、再コンパイルし、dvipdfmx コマンドを使い、pdf に変換し、思い通りの結果になっていることを確認した。

slashbox.sty が、なくなっているのを、apt-file update && apt-file search slashbox.sty コマンドで確認した。どうしても必要なら、LaTeX のマクロライブラリを集積しているCTANからや、TeX FAQ の slashbox (http://www.tex.ac.uk/cgi-bin/texfaq2html?label=slashbox) などから取ってくるのが良さそうだ。

YaTeX(野鳥)で、どのエンコードを指定するのが良いかは、時間とのトレードオフだ。EUC-JPじゃなく、システムワイドのUTF-8に合わせるのが良いのだろうが、既存の文書もあり、悩み所である。

直接の関係は、薄いが Emacs の flyspell mode が、ja_JP がねーぞ。と怒るので ~/.aspell.conf に、lang en_US などとスペルチェッカーの言語を指定するのが良いというのは、(http://sky-y.hatenablog.jp/entry/20091229/1262106336)を参照した。"Error: No word lists can be found for the language "ja_JP""というエラーメッセージが、検索する時に助かりました。

pdfplatex

pdflatex というコマンドがある。が、TeXworks には、pdfplatex コマンドが存在しているようだ。2013年3月19日 (火) UbuntuやDebianのTeXworksを使いやすくするを読むと、UbuntuやDebianの環境でも 文字コードを決めうちして dvipdfmx を実行するスクリプトでエミュレーションするアイディアが書いてある。

kcc -c で文字コードの推定をさせるともうちょいインテリジェントにできるのかも

*1 パッと考えただけでは、本体とstyファイルをutf8にしたらいいのかも知れないけど


2013-08-07 [長年日記]

_ akrさんのtb

akrさんの tb - manipulation tool for table: CSV, TSV, JSON, etc.が便利そうなのです。Rubyのgemですが、gem2debとか使えばいいのかなあ。


2013-08-06 [長年日記]

_ 自分の分析結果

遅まきながら、流行っていた自分の分析結果を貼り付けておきます。自分のようなタイプは、そのへんに溢れているのかと思いきや、出現頻度が2.356%とか書いてて、そういうものなの? ってな感じ。

バランスタイプ(テスト結果)|適職診断 - 職業適性(適職)を診断・検査(http://vcap.vone.co.jp/test_end.php?cp=35&np=32&a=39&fc=27&ac=30)


2013-08-05 [長年日記]

_ 節電の実験レポート

外気温が35度の場合、こまめにエアコンを切るよりは付けっぱなしの方が節電できる。(http://www.kepco.co.jp/home/setsuden/eco2/jikken/01.html) 条件が変われば、分岐点は変わるが、いったん恒温を変えるとリカバリーが大変なのは覚えておくのがよい。