2013-12-30

HDP2 Gold がなぜかUSB1.1ポートに接続と認識される

SKNET HDP2 Goldは PCI接続ののディジタルTV受信機である. 実装上は, ボード上にUSBハブが載っており, それに受信機が接続されているようだ.

私は Scientific Linux 6.3 (CentOS 6.3 と同様に RHEL 6.3 のクローン) がインストールされたマシンに接続しているが, 以下のようなエラーが出ることがある.

dvb-usb: found a 'SKNET MonsterTV HDP2 Gold ISDB-T PCI' in warm state.
dvb-usb: This USB2.0 device cannot be run on a USB1.1 port. (it lacks a hardware PID filter)
dvb-usb: SKNET MonsterTV HDP2 Gold ISDB-T PCI error while loading driver (-19)
この場合, 以下のようなコマンドを実行すれば良い.
sudo tee /sys/bus/pci/drivers/ehci_hcd/unbind <<< 0000:03:01.2
sudo tee /sys/bus/pci/drivers/ehci_hcd/bind <<< 0000:03:01.2

参考

2013-12-27

WARPSTAR デフォルトSSIDとIPアドレス

型番 対応暗号方式 初期ESSID 初期暗号キー 初期IPアドレス
WG1800HP
WG1400HP
11ac/11n/11a/11g/11b,
WEP/WPA2-PSK (AES/TKIP)
aterm-xxxxxx-g,
aterm-xxxxxx-a (オーナ),
aterm-xxxxxx-gx,
aterm-xxxxxx-ax (ゲスト),
aterm-xxxxxx-aw (WEP専用)
ラベル記載 192.168.10.1/23,
192.168.1.245
WR7600 11a/11g/11b,
WEP/WPA2-PSK TKIP/AES
WR7600-XXXXXX ラベル記載
WR6600H 11a/11b/11g,
WEP/WPA2-PSK TKIP/AES
WARPSTAR-XXXXXX ラベル記載 192.168.0.1,
192.168.0.210
WR4100N
WR4500N
11n/11b/11g,
WEP/WPA/WPA2-PSK TKIP/AES
WARPSTAR-****** ラベル記載 192.168.0.1,
192.168.1.1

2013-12-23

MMSストリームをFFmpegで保存

以前の投稿と似ているが, FFmpeg で MMS ストリームを取得・保存する方法を説明する.
ffmpeg -i mmst://media.example.org/stream1 -codec copy output.wmv

上記のように, mmst://...と記述する. FFmpegでは, MMSの扱いとして2種類 (over TCP と over HTTP) 用意されている. mmst と書くと over TCP, mmsh と書くと over HTTP になる. 単に mms://... と書くと動作しない.

コーデックとして -codec copy を選ぶと, 変換は行わずにそのまま保存することができる. (まったく同じストリームになるわけではなく, ストリーム番号が変わったりすることもあるようだ.)
-codec copy」のかわりに「-codec:v copy」「-codec:a copy」と書くとビデオ・オーディオのみ変換しないように指定することもできる.

OpenLP + FFmpeg でテキストをオーバレイ

OpenLP には, 遠隔操作用プラグインがあり, JSONによって表示中のテキストを取得することができる. OpenLP のテキストを FFmpeg でオーバレイするためのスクリプトを作成した.
#! /bin/env python
# vi: set expandtab sw=4 ts=4:

server='http://192.168.xx.xx:4316'
out='/dev/shm/live.txt'
tmp='/dev/shm/live.txt.tmp'

def get(url):
    import urllib2
    import json
    s = urllib2.urlopen(server+url).read()
    j = json.loads(s)
    return j

def text():
    t = get('/api/controller/live/text')
    ss = t[u'results'][u'slides']
    for s in ss:
        text = s[u'text']
        selected= s[u'selected']
        if selected:
            return text

def update(s):
    import os
    if s==u'':
        s = u'\n'
    open(tmp, 'w').write(s.encode('utf_8'))
    os.rename(tmp, out)

pp = False

while True:
    try:
        p = get('/api/poll')
        if p!=pp:
            t = text()
            pp = p
            print p
            print t.encode('utf_8')
            update(t)
    except:
        update(u'')
        import time
        time.sleep(10)
    import time
    time.sleep(1)
これを実行した上で, FFmpeg を以下のように起動する.
/usr/local/bin/ffmpeg -loglevel warning -f video4linux2 -i /dev/video0 -f alsa -i hw:0 \
-vf drawtext='fontfile=/usr/share/fonts/ipa-gothic/ipag.ttf:textfile=/dev/shm/live.txt:fontsize=24:fontcolor=black:box=1:y=12:x=(W-tw)/2:reload=1:boxcolor=white@0.5' \
-vb 2048k -ab 64 -f mpegts -vcodec mpeg2video -pix_fmt yuv420p -b:v 3M -acodec mp2 -ab 128k -ar 44100 -ac 2 -aspect 4:3 - | \
/usr/local/bin/ffmpeg -loglevel warning -f mpegts -i - http://127.0.0.1:9999/feed1.ffm
なぜか feed1.ffmを出力にするとフィルタが機能しなかったので, パイプを使った.

FFserver + MediaTomb でビエラに映像を配信

PCに接続したキャプチャデバイスでリアルタイムに映像を取り込み, パナソニックのテレビ (Viera) に映像を配信する方法をメモする.

FFmpeg はキャプチャデバイスから映像を取り込んだり様々な映像フォーマットに変換することができる. FFmpeg に付属する FFserver で HTTP 形式での映像配信は可能. 残念なことに FFserver は DLNA には対応していないので, DLNA での配信は MediaTomb に任せることにする. ここでは主に FFserver から MediaTomb にストリームを渡す部分を説明する.
FFmpeg でデータの変換, FFserver でストリームを配信可能にし, MediaTomb で配信をする.

FFserverの設定

FFserver の設定の中に Launch を書いておくことで, FFmpeg を呼び出すことが可能.
フォーマットやコーデックを下記のように指定すると, Viera で再生することができる.
Port 9999
RTSPPort 9990
BindAddress 0.0.0.0
MaxClients 1000
MaxBandwidth 100000
CustomLog -

<Feed feed1.ffm>
File /dev/shm/feed1.ffm
FileMaxSize 100M
Launch /usr/local/bin/ffmpeg -f video4linux2 -i /dev/video0 -f alsa -i hw:0
</Feed>

<Stream mpegts.mpeg>
Feed feed1.ffm
Format mpegts

VideoCodec mpeg2video
VideoBitRate 2048
VideoFrameRate 29.97
VideoSize 720x480
VideoGopSize 12
PixelFormat yuv420p

AudioCodec mp2
AudioBitRate 64
AudioChannels 2
AudioSampleRate 44100
</Stream>

<Stream teststat.html>
Format status
</Stream>

MediaTomb config.xml

MediaTomb から CURL を呼び出し, FFmpeg の配信するストリームを MediaTomb に渡す.
CURLを呼び出すため, まずはシェルスクリプトを実行可能にする. 拡張子.shvideo/scriptというMIMEtypeにマップする. video/scriptは, bashというプロファイルでトランスコード. 最後に, プロファイルbashを定義する. -xオプションを付けておくことで, どのようなスクリプトが実行されたのか分かり, デバッグに役立つ.
...
        <map from="sh" to="video/script"/>
...
          <transcode mimetype="video/script" using="bash"/>
...
      <profile name="bash" enabled="yes" type="external">
        <mimetype>video/mpeg</mimetype>
        <accept-url>yes</accept-url>
        <first-resource>yes</first-resource>
        <accept-ogg-theora>yes</accept-ogg-theora>
                <agent command="/bin/bash" arguments="-x %in %out"/>
        <buffer size="14400000" chunk-size="512000" fill-size="120000"/>
      </profile>
...
CURLを実行するスクリプトを用意し, MediaTomb に追加する. 引数$1%outになるので, これへ出力する. 実際には名前付きパイプになっているようだ.
#! /bin/bash
exec curl -s -o "$1" http://localhost:9999/mpegts.mpeg

Vieraでの操作

操作方法がやや複雑なので, 以下に手順を書いておく.
  • リモコンのボタンビエラリンクを押す.
  • お部屋ジャンプリンクを選び, 決定を押す.
  • MediaTombを選び, 決定を押す.
  • Videoを選び, 決定を押す.
  • All Videoを選び, 決定を押す.
  • stream1.shを選び, 決定を押す.
  • を選び, 決定を押す. 当然のことながら, 発売時期などによって対応状況や操作方法が異なるので, 型番を調べて記載する予定である.

    お部屋ジャンプに対応しているテレビを以下に挙げる.

  • 2013-12-22

    FFmpeg で動画にテキストをリアルアイムでオーバレイ

    FFmpeg に, drawtext というビデオフィルタがあり, テキストを動画にオーバレイすることができる. 色々と便利な機能もついている.
    1. 文字部分のボックスを塗りつぶす.
      背景の色によっては文字が見えにくくなることもあるが, このような場合はボックス機能を使えば良い.
      box=1:boxcolor=black
      ボックスを半透明にする場合は, @の後に数字を書く.
      box=1:boxcolor=black@0.5
    2. フォントの指定が可能.
      日本語のフォントも指定可能. 文字の色や大きさも指定できる.
      fontfile=/usr/share/fonts/ipa-gothic/ipag.ttf:fontsize=48:fontcolor=white
    3. 文字列の展開が可能
      1. 時刻
    4. 影をつけることが可能
    5. ファイルから読み込み
      reload=1をつけると, 1フレーム毎にファイルを読み込む.
      textfile=tmp.txt:reload=1
      なお, ファイルを更新するときには, 以下のようにファイルの更新がアトミックに行われるようにすればよい.
    6. 予め別のファイルで新しいデータを作成.
      echo '新しいテキスト' >tmp1.txt
    7. ムーブでファイルを更新.
      mv tmp1.txt tmp.txt
      もし頻繁に書き換えるなら, /dev/shm/下などのtmpfs上に作成するのが良いだろう.
    8. 文字の表示位置
      数式で表示位置を指定可能. センタリグするには, 以下の式:
      x=(W-tw)/2

    意外といろいろな機能がついていることが分かった. OpenLP と組み合わせて使おうと思う.

    2013-12-21

    yahooオークションとamazon出品サービスの比較

    古い教科書や参考書, その他の雑貨などを処分しようと思うことがあるものの, 捨てるにはもったいなく思ってしまう. そこで, だれか必要とする人に譲れたらと思い, Yahooオークション, Amazon出品サービスで販売してみた. これらのサービスを使ってみて, 色々と違いがあることがわかってきたので, まとめてみる.
    YahooオークションAmazon出品サービス
    月額手数料必要 399円/月不要
    取引成立時手数料不要必要
    100円+15% (本, CD, DVDなどの場合)
    配送料出品者が決定一律
    配送方法落札者との交渉で決定出品者が自由に選べる
    発送期日出品者が自由に提示できる2日以内
    取引日時オークション日時を出品者が決定購入者が購入手続きをした時
    前もって全出品を一時停止することが可能
    支払い落札者との交渉で決定1週間ごとに銀行振込
    返品などの対応落札者と直接交渉アマゾンやクレジットカード会社を経由

    所感

    Yahooオークションは, 出品者と落札者との取引の場を設けられているという感じ. 個人出品でもとっつきやすい.
    Amazon出品サービスは, 一律的な販売が求められている感じがする. 個人よりは業者向けなのだろう.

    古物営業の許可?

    中古品を販売するには許可が必要. しかし, このように個人で使用したもの・使用するために購入したものを販売する場合は, 許可はいらない.
    ただ, 「せどり」といわれる転売目的で古本屋などで購入しそれを販売するときは, 許可が必要だろう.

    2013-12-19

    Explorer Mouse のための設定

    Microsoft Explorer Mouse を使っていると, 思わぬ時にホイールが動いてしまうことがある. 各種ソフトで, ホイールの動きを無効化する設定を書いておく.

    Gnome Terminal

    Gnome Terminal では設定できないので, その中で動くツール毎に設定が必要である. カーソルの上下3回に変換されてしまう場合がある. Gnome Terminal のお節介な機能である.

    Vim

    挿入モードにして, 中ボタンクリックで貼り付けようとする時, ホイールが動きカーソルが飛んでゆくことがよく有る. imapで挿入モード時のカーソル上下を無効化する. さらに, 通常モード・ビジュアルモードでのカーソル上下も map で無効化する.
    .vimrc に以下を追加する.
    # 挿入モード
    imap <silent><expr> <up> ""
    imap <silent><expr> <down> ""
    # 通常モード・ビジュアルモード
    map <silent><expr> <up> ""
    map <silent><expr> <down> ""
    

    Mutt

    ページャでメールを読んでいる時, ホイールをつい動かしてしまい, 前後いずれかの3通のメールの未読フラグを解除してしまう. ページャ使用時のカーソル上下をページャのスクロールに割り当てる.
    .muttrc に以下の2行を追加する.
    bind generic,attach,browser,index,compose,pager  next-line
    bind generic,attach,browser,index,compose,pager  previous-line
    


    2013-12-17

    スクリプトでbloggerに投稿

    Blogger にスクリプトでポストするようにしたので, その方法を簡単に説明する. HTMLのタグを使用するには, 単に本文にタグを書くだけではダメで, いわゆるHTMLメールにする必要がある.
    1. タイトルと本文のみを投稿できる.
    2. ラベル・スケジュール・パーマリンクなどは指定できない.
    3. HTMLのタグを使用出来る
    From: xxx@example.com
    Content-Type: multipart/alternative; boundary="boundary"
    Subject: %(title)s
    
    --boundary
    Content-Type: text/html
    
    %lt;div class="body">%(body_html)s%lt;/div>
    --boundary--
    
    %(title)s, %(body_html)s の部分を置換し, /usr/sbin/sendmailで送る.
    From ヘッダはなくても良いようだが, エラーの時に帰ってくるようにと追加しておいた.
    boundaryはいいかげん.

    #end と記述すると, それ以降を投稿しないという機能があるらしい. 同様にして, #label とか書くとラベル指定できないかと思ったが, ダメだった. (開発者さん, こういう機能を実装して!)

    大量に (50件程度) 投稿すると, captcha の入力が必要になってしまった.

    Technical details of permanent failure:
    You have exceeded the the allowable number of posts without solving a captcha.
    

    2013-12-04

    HSPICE にて中断した過渡解析を再開

    HSPICEでは, 過渡解析の途中の状態を保存し, あとでその状態から解析を開始することができる. 以下のような場合に便利である.
    • PLLやスイッチトキャパシタ回路にて, 準安定状態に達した後に, 様々な外乱や入力信号を与える場合.
      シミュレーションの後半で条件を振って特性を調べる場合, 初めの起動シーケンスなどを毎回シミュレーションする必要がなくなり, 時間の短縮につながる.
    • シミュレーション条件を間違えたことに気づいた場合.
      PWLなどで入力電圧を作る時, 1箇所間違えただけで最初からシミュレーションをやり直すのは時間の無駄. 予め, 途中の状態を保存するようにしておけば, 保存した時刻からやり直せばよい.
      あるいは, シミュレーション時間が短すぎた場合, 最後の状態から再開させれば, 続きをシミュレーションできる.
    • 停電やサーバの異常に備える.
      停電やサーバの異常停止が起こっても, 途中から再開できる.
    以下に例を示す. 過渡解析を 500us 間行い, 時刻 99.7us で1回目の保存, その後 100us ごと (199.7us, 299.7us, ..., 499.7us) に保存を行う.
    .tran 0.1u 500u
    .store type=IC file=prefix time=99.7u repeat=100u
    

    2013-12-02

    ICC による tie ネットの配線

    IC Compiler でタイネット (H, L レベルに固定する入力) の配線方法はいろいろある.
    • preroute_standard_cellspreroute_instances-tie オプションをつけて配線する.
      この場合, 電源配線として配線されるので, やや違反を起こしやすいきがする.
    • derive_pg_connection -tie にて電源に接続させ, route_zrt_autoroute_opt で配線する.
      この場合, Classical router, Z-router を使用するので, エレガントに処理してくれる. それでも, 電源レールや電源メッシュの太い配線から細い配線を出すので, DRC違反を起こす可能性がある.
      set_route_zrt_common_options -tie_off_mode rail_only を設定しておくと, 少しはましかもしれない.
    • connect_tie_cells によってタイセルを追加し, 完全に信号線にしてしまう.
      この場合, 電源から配線を伸ばすわけではないので, 違反が起こりにくい.

    理想的にはタイネットは無駄なことをしているのだけれど, モジュール間の信号や, S/R入力付DFFのRのみを使う場合に発生してしまうようだ.

    2013-11-30

    HSPICE サブサーキットのポート電流

    HSPICE でシミュレーションする際, サブサーキットのポート電流をモニタすることができる. 通常,電流をプローブするためには, 0Vの電圧源を取り付けるなど, ネットリストを改変する必要があるが, HSPICE では, isub によってサブサーキットのポートに流れる電流を記録できる. 以下に例を挙げる.
    .subckt INV_X1 IN OUT VDD VSS
    m0  OUT IN VSS VSS  nmos ...
    m1  OUT IN VDD VDD  pmos ...
    .ends
    
    VVDD VDD_sim 0  1.5
    VVDD VSS_sim 0  0.0
    VVA  A   0  PWL(1n 0.0  2n 1.5  6n 1.5  7n 0.0)
    CY   Y   0  100f
    x1  A Y VDD_sim VSS_sim INV_1X
    
    .tran 10p 10n
    .probe Isub(x1.VDD) Isub(x1.VSS)
    
    もちろん, 階層が深くても, ドット (.) で区切って深い階層のポートを指定することで, ポート電流を記録できる.

    2013-11-27

    Android Play Store からのダウンロードデータ圧縮

    Play Store でアプリをアップデートすると, 前のバージョンからの差分をダウンロードするらしい. application/vnd.android.package-delta というMIMEタイプをサーバが返している. strings をつかって含まれているテキストを抽出すると, 更新しようとしているファイル名がプレーンで書かれていた.

    2013-11-21

    This proram cannot display the webpage

    Microsoft Internet Explorer を使用している時に, ウェブサイト接続でエラーが起こると, 以下の図のようにエラーが出る. このエラー, 全く情報がなくて困る. 原因を調べるには, Google Chrome で接続してみるか, コマンドプロンプトを出して同じサイトに接続を試みる, あるいは, トラブルシューティングを起動して調査させる必要がある.

    2013-11-19

    ffmpeg で動画を切り取り

    FFmpeg にて開始時刻・終了時間をしていして動画を切り取る方法をメモする.
    $ ffmpeg -ss 開始時刻 -t 時間 -i 入力 -codec copy 出力
    
    -ssにて開始する時刻を指定できる. -tで, 出力する時間 (終了時刻-開始時刻) を指定できる. -codec copyで, デコード・エンコードの処理をせずにストリームをコピーする.

    X/Y軸方向に切り取るには, cropというフィルターを使用する.

    $ ffmpeg -i 入力 -vf 'crop=W:H:X:Y' -vb 1600k -ab 64k 出力
    

    参考にしたサイト

    2013-11-14

    外付けUSB機器を内蔵化

    デスクトップ用マザーボードのUSB端子をUSB-A端子に変換する製品を見つけたので, 紹介したい.

    USBメモリを内蔵SSDにする

    これをつかうと, デスクトップの内部で何個かのUSBメモリを接続することができる. CentOS などたいていのディストリビューションでは, LVM に対応しているので, 複数個のUSBメモリをひとつのパーティションにすることができる. 各フラッシュROMをPV (物理ボリューム), それらを複数組み合わせてVG (ボリューム・グループ) としてゆくことで, 一つの大きなパーティションを作れる.
    最近は, 1000円/16GB程度らしい. SSDより容量当たりの価格はやや安価だし, 容量が小さく安価なUSBメモリがある. 容量はやや小さくなってしまうが, 大した作業をしない場合や, シンクライアントに適している.

    その他

    USB接続の無線LAN機器, B-CASカードを読み込むためのカードリーダなど, めったに取り外ししない機器を デスクトップ内部に入れてしまいたい時に使用できそうだ.

    2013-11-12

    NTTCom SCR3310 を RHEL6 で使用

    NTTCom の SCR3310 を Scientific Linux 6.3 (CentOS 6.3, RHEL 6.3) で使用する方法をメモする.

    概要

    使用するパッケージは, openct, pcsc-lite, pcsc-lite-openct である. openct の提供する ifdhandler でディバイスにアクセスする. pcsc-lite は Windows SCard インターフェイスを提供しており, Windows のコードを簡単に移植できる. (ARIB B25 テストプログラム は SCard インターフェイスで実装されている.)

    一時期, ccid が必要とか, 古い pcsc-lite が必要といった情報も出ていたが, 本稿の執筆時点では, 最新の rpm を使用し, 設定ファイルにディバイスのIDを書き加えているだけである.

    手順

  • ディバイスのIDを確認する.
    $ lsusb | grep 04e6
    Bus 004 Device 002: ID 04e6:511a SCM Microsystems, Inc. 
    
  • Info.plist を編集し, ifdVendorID, ifdProductID, ifdFriendlyName にSCR3310のエントリを追加する.
    --- /usr/lib64/pcsc/drivers/openct-ifd.bundle/Contents/Info.plist
    +++ /usr/lib64/pcsc/drivers/openct-ifd.bundle/Contents/Info.plist
    @@ -48,6 +48,7 @@
       <string>0x04e6</string>
       <string>0x04e6</string>
       <string>0x04e6</string>
    +  <string>0x04e6</string>
       <string>0x073d</string>
       <string>0x076b</string>
       <string>0x076b</string>
    @@ -91,6 +92,7 @@
       <string>0x5115</string>
       <string>0x5116</string>
       <string>0x5117</string>
    +  <string>0x511a</string>
       <string>0x511d</string>
       <string>0xE001</string>
       <string>0xE003</string>
    @@ -137,6 +139,7 @@
       <string>Generic CCID Reader</string>
       <string>Generic CCID Reader</string>
       <string>Generic CCID Reader</string>
    +  <string>NTTCom SCR3310</string>
       <string>Generic CCID Reader</string>
       <string>Generic CCID Reader</string>
       <string>Generic CCID Reader</string>
    
    
  • openct.conf を編集し, SCR3310のエントリを追加する. Safe to disable force_poll と書いてあったので, safe_poll も無効にしておいた.
    --- /etc/openct.conf-20131112 2013-11-12 19:56:49.858551225 +0900
    +++ /etc/openct.conf 2013-11-12 19:56:53.836633386 +0900
    @@ -12,9 +12,9 @@
      # Safe to disable force_poll:
      #  >=linux-2.6.27.14
      #  >=linux-2.6.28.3
      #
    - force_poll = 1;
    + force_poll = 0;
     # user  = openctd;
     # groups = {
     #  usb,
     # };
    @@ -116,8 +116,9 @@
       usb:046a/0010, # Cherry smartboard G83-6744
       usb:04e6/5115,
       usb:04e6/5116,
       usb:04e6/5117, # SCM Micro token size reader
    +  usb:04e6/511a, # NTTCom SCR3310
       usb:04e6/511d, # SCM Micro SCR3311
       usb:04e6/E001,
       usb:04e6/E003,
       usb:073d/0c00, # Eutron SimPocket (doesn't work yet)
    
  • pcscd と openct を再起動
    $ sudo service openct restart
    $sudo service pcscd restart
    
  • /var/log/messagesに以下のようなログが出ればOK.
    pcscd: pcscdaemon.c:506:main() pcsc-lite 1.5.2 daemon ready.
    pcscd: hotplug_libhal.c:342:HPAddDevice() Adding USB device: usb_device_4e6_511a_21120651308587_if0
    pcscd: readerfactory.c:1024:RFInitializeReader() Attempting startup of NTTCom SCR3310 (21120651308587) 00 00 using /usr/lib64/pcsc/drivers/openct-ifd.bundle/Contents/Linux/openct-ifd.so
    pcscd: readerfactory.c:846:RFBindFunctions() Loading IFD Handler 2.0
    pcscd: readerfactory.c:249:RFAddReader() Using the pcscd polling thread
    
  • pcsc_scan にて, カードの情報を読み込めるか確認することができるが, 必須ではない. Vendor や EPEL などでは提供されていないので, Fedora Core 13 の pcsc-perl-1.4.8-2.fc13.x86_64.rpm と pcsc-tools-1.4.16-1.fc13.x86_64.rpm を使用した. なお, pcscd のみ設定すると, 以下のようなログが出る.
    pcscd: readerfactory.c:846:RFBindFunctions() Loading IFD Handler 2.0
    pcscd: readerfactory.c:1050:RFInitializeReader() Open Port 200000 Failed (usb:04e6/511a:libhal:/org/freedesktop/Hal/devices/usb_device_4e6_511a_21120651308587_if0)
    pcscd: readerfactory.c:914:RFUnloadReader() Unloading reader driver.
    pcscd: readerfactory.c:233:RFAddReader() NTTCom SCR3310 (21120651308587) init failed.
    pcscd: hotplug_libhal.c:397:HPAddDevice() Failed adding USB device: usb_device_4e6_511a_21120651308587_if0
    pcscd: utils.c:207:CheckForOpenCT() Remove OpenCT and try again
    

    参考

  • fedora17 で PT3 を使う
    このページに pcscd の設定方法が書いてあるが, openct の設定が書かれていなかった.

  • 広告

    以下は, 関連する機器・書籍の広告である. なお, 以下の機器を購入してこのページに記載の方法通りになるかどうかを保証しない. その他, 以下の機器の購入によるトラブル等には関知しない.

    楽天の Market Speed FX の時刻

    楽天から Market Speed FX をダウンロード・インストールし, 起動したのだけれど, 時刻が間違っている. Windows の設定で PST に設定していたら, 東京の時刻が PTS と同じ時刻になった. どうやら, Windows の現地時刻を東京の時刻として処理しているらしい.

    ログインボタンをクリックすと, 一瞬で「タイムアウトしました」というダイアログが出る. 1秒も経っていないのにタイムアウトするはずがない. きっとファイアウォールが通信を遮断しているのだろう. ログを見たら, 32137番ポートへ接続しようとしていた.
    32137番ポートを開けたが, 依然としてログインできない. 80番ポートに透過型プロキシを設定していることが問題だろうか...

    こういう会社のソフトは作りが雑だと思う.

    2013-11-11

    IEEE文献再利用許諾 (RightsLink)

    IEEExplore の各文献のページには, Request Permission というリンクがついており, ここか再利用許諾 (permission to reuse) を申請することができる. 詳しい操作方法は, Japan Chapter のページに書かれている. 再利用許諾を要求すると, しばらくして返信が届き, 通常は, requirements として full credit to the original source (クレジットを書くこと) が要求されるらしい.

    2013-11-04

    CDなしでScientific Linux 6.4をインストール

    Scientific Linux 6.4 (CentOS 6.4 でも同様だろう) をネットワークからインストールする方法を紹介する. 今回は, ネットワークインストール用のCDは用意せず, PXE (ネットワークからの起動) を使用する. CD/DVDドライブの無いマシンにインストールする場合や, インストールCD/DVDを作成することが出来ない場合に便利である.
    1. TFTP および DHCP は設定済み. 以下では, tftp のルートを tftpboot として記述する.
      # cat /etc/dhcp/dhcpd.conf
      ...
      subnet 192.168.0.0 netmask 255.255.255.0 {
        range 192.168.0.129 192.168.0.191;
        option routers 192.168.0.1;
        filename "/pxelinux.0";
      }
      
    2. $ cat tftpboot/pxelinux.cfg/default
      default menu.c32
      prompt 0
      timeout 300
      ONTIMEOUT local
      
      MENU TITLE PXE Menu
      
      LABEL Scientific Linux 6.4 x86_64
              MENU LABEL Scientific Linux 6.4 x86_64 installer
              KERNEL sl64/vmlinuz
              APPEND initrd=/sl64/initrd.img textinst apm=off acpi=off noapic noswap
      
      $ mkdir tftpboot/sl64
      $ cp ~/pub/linux/scientificlinux/6.4/x86_64/os/images/pxeboot/* tftpboot/sl64
      
      (textinst は効いていない気がする.)
    3. インストールするマシンの起動時に, ネットワークブートを選ぶ. defaultに設定したメニューが出てきたら, PXEは成功だろう. Enterを押すと, vmlinuz が読み込まれ, 続いて, initrd.img が読み込まれるはず. そして, インストーラが起動する.
      (なぜか, VirtualBox では失敗した.)
    4. 言語などを選んでゆく. Install Method を聞かれたら, URL または NFS directory を選ぶ. 私の環境では, NFSサーバ上にデータがあるので, それを指定する. もしなければ, URL を選んで, FTPサーバ (本家またはミラー) のURLを指定すればよいだろう.
    5. パスを聞かれたら,
      ...scientificlinux/6.4/x86_64/os/
      を指定する. (例えば, JAISTのFTPサーバからダウンロードするのであれば, ftp://ftp.jaist.ac.jp/pub/Linux/scientific/6.4/x86_64/os/ を入力する.)
    6. あとは通常通りにインストールすればよいだろう.

    2013-11-14追記; 最近はSDカードスロットを搭載したノートPCが増えており, SDカードでインストールする方が準備が簡単である.

    広告


    2013-10-29

    Mendeley Desktop でエラー

    ある知人が Mendeley というソフトを使っているのだけれど, 久しぶりに使用するとエラーが出て起動しないという. 設定ファイルが破損したようなので, 消せば良いのだけれど, どこにあるのか調べるのに手間取った. このような場合の対処方法をメモしておく.
    1. まず, HOME を適当な別のディレクトリ (今回は /dev/shm/) に設定して, Mendeleyを起動する.
      $ env HOME=/dev/shm mendeleydesktop
    2. これで正常に起動するか確認.
    3. どのようなファイルが出来るのかを調べる.
    4. find /dev/shm/
    この結果, Mendeley では, 以下の3個のディレクトリを作り, その中にデータを格納することが分かった.
    ~/.local/share/data/Mendeley Ltd./Mendeley Desktop
    ~/.cache/Mendeley Ltd./Mendeley Desktop
    ~/.config/Mendeley Ltd.
    
    従って, このディレクトリを削除・移動してやれば, 起動できるようになるだろう.
    mv ~/.local/share/data/Mendeley\ Ltd./Mendeley\ Desktop ~/.local/share/data/Mendeley\ Ltd./Mendeley\ Desktop-1
    rm -rf ~/.cache/Mendeley\ Ltd./Mendeley\ Desktop
    

    2013-10-28

    MALLOC_PERTURB_

    あるソフトを使っていたら, 私だけエラーが起こる. 同じマシン (RHEL 6がインストールされたマシンをリモートログインで共有していた) を使っている人に聞くと, 同様のエラーは起こらないという. 私とその人との違いは, ログインシェル. 私は bash, その人は tcsh を使っていた. ログインシェルを tcsh に変更してみると, このエラーは起こらなくなった. しかし, ログインシェルを tcsh にした後, bash を起動し, その中でそのソフトを起動するとエラー. こんな時には環境変数が原因だろうと考え, diff をとってみた.
    > env | sort > tcsh-env.out
    > bash
    $ env | sort > bash-env.out
    $ diff tcsh-env.out bash-env.out
    
    ここで分かったのは, bash 環境では MALLOC_PERTURB_ が設定されているということ. この環境変数を消すと, エラーは起こらなくなった.

    この環境変数がどこで設定されているのかを探ってみると, debugmode というパッケージが原因であることが分かった.

    $ rpm -ql debugmode 
    /etc/profile.d/debug.csh
    /etc/profile.d/debug.sh
    /etc/sysconfig/debug
    
    私の使っている bash では, /etc/profile.d にある設定を律儀に読んでいたのでエラーが起こり, 彼の tcsh (の設定である .cshrc) はこのディレクトリを無視していたのでエラーが起こっていなかったらしい.

    今回使っていたマシンは, パッケージの選択を面倒に思ったのかフルインストールされていたのだが, どんなパッケージでも闇雲にインストールしてしまうのはダメだという例になった.

    2013-10-18

    vim with NFS4 home

    ホームディレクトリを NFS4 でマウントしていると, vim を終了した時に以下のエラーが出てくる.
    E137: Viminfo file is not writable: /home/user/.viminfo
    これは何なのだろう? このエラーが時々出るが, エラーが鬱陶しい以外には問題がない.

    LinuxユーザがWindowsにインストールするべきソフト

    普段 Linux を使う人におすすめの, Windows に入れておくべきソフトを挙げる.

    私は Linux と Windows のデュアルブートにしており, 稀に Windows を使う必要が出てくることがある. その時に, 使いたいソフトがインストールされておらず, 不便を感じることがある. そのような事態を未然に防ぐため, 予めインストールしておくべきソフトを列挙してみた.

  • GVIM, 日本語なら, kaoriya からインストールするのが良いだろう.
  • PuTTY, 最近は, 本家からダウンロードしても, 日本語に対応しているようだ. (Encodeの設定があり, デフォルトではフォントの文字コードになっているが, ログイン先の文字コードを設定する.)
  • WinSCP, 公開鍵は putty 付属の puttykeygen で作成する.
  • Real VNC, ビュワーを入れておく.
  • VLC media player, たいていの音楽・動画は再生できる.
  • Google Chrome, 流行のブラウザ.
  • Adobe Reader.
  • Microsoft Office, Windows を使う理由にもなるソフトである.
  • 2013-09-26

    microSIM -> SIM 変換アダプタ

    MicroSIM -> SIM 変換アダプタを買った. 1年ほど前に携帯電話を買い換えたのだけれど, 電池切れの時など, 古い携帯電話を電話として使えたらいいなというわけで.
    開封して, まずは大きさがあっているか確認しようと, MicroSIM を 変換アダプタに入れずに携帯電話に入れてみた. すると, 端子が引っかかって, 抜けなくなった!
    変換アダプタの下側に薄くて丈夫な板 (変換アダプタが入っていた袋) を差し込んで, ようやく抜くことができた.
    もしかしてピンが曲がったかなと思ったけれど, SIMカードを入れて電源を入れるとキャリア名が出てきたので, 壊れなかったようだ.

    この変換アダプタ, MicroSIM カードを入れて出し入れしても, 端子の上を通る時にカチと音がする. 図の様に, 端子が当たる所だけ切っておけば, 端子を傷つけることなく使えるのではないか.


    2013-09-23

    SMTP接続の踏み台にするHTTPサーバを探している人がいる

    Logwatch を見ていると,
     Connection attempts using mod_proxy:
        111.248.xx.xxx -> mx3.mail2000.com.tw:25: 1 Time(s)
        61.228.xx.xxx -> mx2.mail2000.com.tw:25: 1 Time(s)
    
    という記録が残っていた. きっと, HTTPサーバを踏み台にしてスパムメールを送ろうという思惑なのだろう. 今回は405を返していたが, 念の為, ファイアウォールで25番ポートの接続を禁止 (OP25B) しておくのが良いのだろう...

    Facebook メッセージの「その他」

    こういう記事をみつけたので, 私も「その他」という項目を見てみた. 私のところに着ていた「その他」メッセージは, スパム1通だった. (内容は, 「あなたと同性の人が死んで, 遺産が1895万ドルあります. 親戚を探しています.」というもの. こんなに額が大きいと怪しんでしまう.)

    こういう記事を見ると, 連絡手段をいくつも持っておくのは混乱を招きかねないなと思う. Facebook のメッセージ以外にも, Line, カカオトーク, Skype など, 色々あるが, 会社の都合や方針転換で機能が変わったりするし, 1個1個の受信を日々確認するのは面倒だ. 連絡手段をたくさん持っていると, 一時的には色々な人と連絡をとれて便利だが, こういう「え, その連絡みていない!」というトラブルや後々の維持まで考えると, 不便だろう.

    2013-09-20

    sed で GNUplot が出力した EPS の線種を実線にする

    /LT[0-9] がプロットする線種の定義なので, この行を書き換える. 以下の sed コマンドを使用した.
    sed 's;^\(/LT[1-9] {PL \[\).*\(\] LC[1-9] DL} def\)$;\1\2;'
    
    これを毎回実行するので, plot の直後に書いておく. GNUplot のスクリプトは以下のようになる.
    set terminal postscript enhanced color
    set output 'output.eps'
    plot f(x)
    ! sed -i 's;^\(/LT[1-9] {PL \[\).*\(\] LC[1-9] DL} def\)$;\1\2;' output.eps
    
    オプション -i (--in-place) で, そのファイルを上書きする.

    2013-09-12

    ファミマTカード 「ご利用明細確定のお知らせ」が届いた

    前の投稿でも書いたが, クレジットカードつきファミマTカードはリボ払い設定になっているので, 一括払いに変更しなければならない. ところが, 利用明細が確定するまでは変更できなかった. 今日 (9月12日), ようやくこのメールが届いたので, 早速, 一括払いに変更する操作をした.

    ご利用明細確定のお知らせメールは, 以下のような内容 (一部のみ抜粋). どうやら, 12日以内に変更しなければ, リボ払いに確定してしまうらしい.

    いつもファミマTカードをご利用いただきまして誠にありがとうございます。
    クレジットご利用代金明細内容が確定いたしましたのでお知らせいたします。
    
    【お引落し日】      2013年10月01日
    
    【お支払金額の変更期日】 2013年09月24日 21:30まで
    
    【ご利用明細の確認と支払金額の変更】
      下記URLの「会員専用ネットサービス」からログインしご確認ください。
      http://ftcard.pocketcard.co.jp/
    

    ポケットカードのウェブサイトからログインし, 左のメニューにある「翌月の支払金額変更」をクリック, ラジオボタン「「ずっと全額支払い」を設定する。」を選んで「確認」をクリックする. これで, 一括払いに変更されたのだろう...

    「ご利用明細照会」のページに表示される「お支払金額」は, リボ払いの額のままなのだ...

    2013-09-10

    LaTeX 英文のスペル・文法チェック

    ieice.cls を使うと, figure/minipage 環境内の caption が折り返されない

    クラスファイル ieice.cls を使用して, 図を左右に並べ, それぞれに \caption を使ってキャプションを書くと, なぜか元のダブルカラムの幅で折り返される. このような場合は, 以下のように \capwidth を定義し直すことで回避できる.
    \begin{figure}
     \begin{minipage}{0.59\hsize}
      \center \includegraphics[width=25mm,angle=270]{schematic.eps}
      \floatenv\capwidth\hsize
      \caption{Schematic of the proposed circuit.}
      \label{fig:sch}
     \end{minipage}
    ...
    \end{figure}
    
    figure の定義において, \capwidth\textwidth から計算しているので, minipage 環境内で正しく幅の処理がされないようだ.
    \newenvironment{figure}
                   {\floatenv
                    \if@referee\capwidth.66\textwidth\else\capwidth\hsize\fi
                    \abovecaptionskip4\p@\belowcaptionskip\z@\@float{figure}}
                   {\end@float}
    

    gs を使って PDF にフォントを埋め込む

    様々なツールで PDF を作成できるようになってきているが, フォントを埋め込むかどうかなどを指定できないツールもある. この場合, Ghostscript に付属の gs コマンドを使用して フォントを埋め込んだ PDF を作成することができる.
    gs -dPDFSETTINGS=/prepress -dEmbedAllFonts=true -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=output.pdf -c .setpdfwrite -f input.pdf
    

    2013-09-07

    Excel 印刷時の拡大縮小率を印刷枚数から計算

    Microsoft Excel 2007 では, 印刷時の拡大・縮小の方法に, 何枚のページに分割するかという設定ができる. Excel ワークシートは事務書類など1ページに収まってくれないと困るものが多いため, 拡大・縮小率を自動で計算して, 印刷ページが指定した値に成るように調整してくれる機能はとても便利だ.

    これまでの拡大・縮小率を設定する方法では, プリンタの余白などが変わるとページ数が変わってしまう. 事務から届いた書式は拡大・縮小率で設定されていることが多く, そのまま印刷すると右端や下端が切れて2枚になってしまうことがよくある.

    リボンの中のページ レイアウト, 拡大縮小印刷に設定がある. デフォルトでは自動だが, 1ページに設定すると, 自動的に拡大・縮小率を計算してくれる.

    2013-08-31

    厄介なPDFをPSプリンタで印刷

    PDFによっては, 使用しているコマンドが新しすぎるのか, Linux 上の gs やその他のツールでは処理できないことがある. 例えば Adobe InDesign で作成した PDF は, Linux 上の acroread でも描画できないことがある. このような場合は, Windows 上の Adobe Reader を使って ps に変換するのがよい.

    印刷ダイアログにて, 右上のボタンAdvancedをクリックすると, Print to File というチェックボックスが現れる.

    PS 形式で保存できるので, これを lpr コマンドへ渡してやればよい.

    2013-08-28

    CyanogenMod の緊急電話

    CyanogenMod (たぶん6) に, SIMカードを入れていない場合は, 「緊急通報のみ」と出ているけれど, どうも緊急通報はできないようだ.

    電話してみるわけにはいかないので簡単に検証してみるわけにはいかない. このサイト によると, 111 にダイヤルすると, Docomo の案内が流れるらしいので, 試してみた. すると, 繋がらなかった.

    2013-08-26

    GNUplot の画像出力でのフォント指定

    GNUplot で, PNG などを出力すると, 以下の警告がでて鬱陶しい.
    Could not find/open font when opening font "arial", using internal non-scalable font
    
    これを回避するには, 以下のように環境変数を指定しておけばよい.
    export GDFONTPATH=/usr/share/fonts/vlgothic
    export GNUPLOT_DEFAULT_GDFONT=VL-Gothic-Regular
    
    これは Scientific Linux 6 (CentOS 6 と同様 RHEL 6 のクローン) に, vlgothic-fonts がインストールされている場合であって, 他の条件では名前やパスを変えておく.

    ファミマTカードが届いた

    Yahoo のポイントがたまったときに, ちょうどTポイントに変わるという記事をみたので, Tカードを申し込んでみた. TSUTAYAはほとんど利用しないから, ファミマにしようと思って, ネットから注文できるクレジットカードつきのファミマTカードを申し込んだ. このカードのネットサービス, 何かと使いにくい所があるので, まとめておく.
  • 最初に入力したパスワードでログイン出来なかった!
    どうやら, 「英字は大文字で設定いただいても、小文字として登録されます。」と書かれていて, 内部では大文字を小文字に変換して登録するらしい. でも, パスワードを認証するときには, 大文字から小文字に変換しないので, ログインページでは小文字に自分で変換したパスワードを入力しなければならない. 例えば, 9dl9cJlQ をパスワードとして登録すると, 9dl9cjlq をログインページで入力することになる.
  • 最初はリボ払いの設定になっていて, 大抵の人はこれを解除したいはずだ. しかし, その設定が見つからない. どうやら, 請求額が確定するまで, この設定ページへアクセス出来ないらしい. このサイトに書いてあった. なので, 請求額確定から支払いまでの短い期間に, 忘れずに設定変更しなければならない. 設定変更はこのページに書いた.
  • 2013-08-23

    オンライン英語辞書比較

    サイト発音
    ALC 英辞郎 on the web英和・和英no
    Dictionary.com英語yes
    Cambridge Online Dictionary英語yes

    gitstats の曜日統計をカラーにする

    gitstats の 曜日統計は, 数値に応じて赤色-赤褐色の色が着くが, あまり綺麗ではない. 緑-黄-赤の色をつける様に変更した.
    --- /usr/bin/gitstats 2013-02-28 12:18:23.000000000 +0900
    +++ /tmp/gitstats 2013-08-23 01:52:22.692719564 +0900
    @@ -848,12 +848,19 @@
          commits = 0
         if commits != 0:
          f.write('<td')
    -     r = 127 + int((float(commits) / data.activity_by_hour_of_week_busiest) * 128)
    -     f.write(' style="background-color: rgb(%d, 0, 0)"' % r)
    +     import math
    +     t = float(commits-1) / (data.activity_by_hour_of_week_busiest-1)
    +     if t < 0.5:
    +      g = 255
    +      r = int(127.5 - math.cos(t*math.pi*2) * 127.5)
    +     else:
    +      r = 255
    +      g = int(127.5 - math.cos(t*math.pi*2) * 127.5)
    +     f.write(' style="background-color: rgb(%d, %d, 0)"' % (r, g))
          f.write('>%d</td>' % commits)
         else:
          f.write('<td></td>')
        f.write('</tr>')
     
       f.write('</table>')
     
    
    
    他の箇所も同じ変更を行なって, git-hub に push しよう.

    2013-08-22

    h8-1360jp

    HP の h8-1360jp に Scientific Linux 6 を入れてしばらく使っている. いくつか, 不満な点が出てきたので, これから購入を考えている人のために, 列挙してみる.
  • グラフィックボードを交換すると, BIOS 設定画面が出て来なくなった. もともと ATI の GPU が刺さっていたが, nVidia の GPU に変更した所, BIOS 設定画面が出て来なくなった.
  • どうやら, CPU内蔵グラフィックスとPCIEのグラフィックスボードと同時に使用することは出来ないらしい.
  • Scientific Linux 6 (CentOS 6 でも同様だろう) では, さらに以下の問題がある.
  • コンソール (Xを起動しない時) はCPUのDVIから出力され, Xを起動するとPCIEのグラフィックスボードから出力される. (nVidia の GPU に変更後に確認)
  • NIC が新しすぎ, ドライバが入っていない. 自分でドライバを入れるか, 別の NIC を追加する. (Atheros AR8161 が載っているらしい)
  • VirtualBox にて, VT-x を使用できない? 以下のエラーが出る.
    仮想マシン"XXX"のセッションを開けませんでした。
    
    VT-x features locked or unavailable in MSR. (VERR_VMX_MSR_LOCKED_OR_DISABLED).
    
    終了コード : NS_ERROR_FAILURE (0x80004005)
    コンポーネント: Console
    インターフェース: IConsole {db7ab4ca-2a3f-4183-9243-c1208da92392}
    
    「Made in Tokyo」ラベルが貼ってある通り, 日本製品らしさがある. その他, 以下の点はOK.
  • 音声出力は問題ない.
  • CPU周波数スケーリングも動作している.
  • HDD や DVD ドライブへのアクセスなど, インストール時・OS起動時の問題もなかった.

    なお, このマシンの主な構成は以下の通り.

  • Intel Core i7-3770, 3.40GHz.
  • Seagate Barracuda ST2000DM001-9YN164, 2.0TB.
  • 16GB main memory.


  • 2013-08-21

    EPSをPowerPoint 2007にインポート

    PowerPoint 2007 では, EPSファイルをPowerPointのスライドにドラッグ&ドロップすると, インポートされるらしい.
    ... インポート中に, 応答しなくなった.
    どうやら, インポートできる場合とインポートに失敗 (フリーズ) する場合があるようだ.
    回避方法を見つけたので, このページで説明する.
    Tgif (ビットマップなし)OK
    Tgif (ビットマップあり)NG
    GNUplotNG一度, set terminal tgif で出力してから, tgif を使って EPS に変換すればOK.

    ある広告の数値

    Gmail に出ていた広告のページ, 「XX% UP」と書かれているけれど, どうも計算方法が標準的なものでない. 例えば, 100 から 260 に増加したとき, 増加分は 160 だから, 160/100 = 160% 増加というけれど, この広告では, 「260% UP」と書いている.

    xlock がパスワードを2回要求する

    xlockmore をアップデートしてから, パスワードを2回きかれるようになった. 1回目はこれまで通りだが, 2回目は,
    Validating password...
    パスワード:
    
    と, 日本語できかれる. env LANG=C でローカライズを無効にすると, 1回のパスワード入力でアンロック出来るようになった.

    $ rpm -qi xlockmore 
    Name        : xlockmore                    Relocations: (not relocatable)
    Version     : 5.43                              Vendor: Fedora Project
    Release     : 1.el6                         Build Date: 2013年07月19日 04時16分57秒
    Install Date: 2013年08月19日 12時18分04秒      Build Host: buildvm-10.phx2.fedoraproject.org
    Group       : Amusements/Graphics           Source RPM: xlockmore-5.43-1.el6.src.rpm
    Size        : 3110828                          License: BSD
    Signature   : RSA/8, 2013年07月22日 01時51分01秒, Key ID 3b49df2a0608b895
    Packager    : Fedora Project
    URL         : http://www.tux.org/~bagleyd/xlockmore.html
    Summary     : Screen lock and screen saver
    Description :
    Locks the local X display until a password is entered.
    
    なお, OSは Scientific Linux 6.4 (CentOS 6.4 と同様に Redhat Enterprise Linux 6.4 のクローン), EPEL から入れたものである.

    2013-08-20

    0000docomo は安全か?

    数カ月前にドコモショップで手続きをしたら, 無料だからといって docomo Wi-Fi のアカウントが発行された. そのときに受け取った書類に, 「ご利用に際しましては, よりセキュリティの高い SSID (0000docomo), WPA2 方式をご利用ください」と書かれていたけれど, 本当にセキュリティが高いのか?

    WEP の場合は, パスフレーズを知っていれば誰でも解読することができた. WPA2-AES では, 通信の初期に秘密鍵の交換を行うようで, アクセスポイント-端末間の通信は守られている (他人に傍受されても解読できない) ようだ.

    ただし, 誰でもアクセスポイントへ接続することはできるので, ニセのDHCPサーバを立てる, ニセのゲートウェイを立てる, 有線LANに傍受装置を設置する, 同じSSIDで勝手にアクセスポイントを用意するなどの可能性はある.

    つまり, 無線の傍受に対しては安全だが, 他にも脅威は残っているということ.

    とはいっても, 通信内容を傍受されて困るようなデータを公衆無線LANでやり取りすることはないだろう. 決済サイトやネット銀行サイトとの通信はもともと SSL/HTTP で暗号化されているので, 公衆無線LANだから特段に配慮することはない.

    docomo (WEP)0000docomo (WPA2)
    無線の傍受危険安全
    ニセのAP, 有線部分の傍受危険危険
    SSL暗号化サイトへのアクセス安全安全

    MS プロダクトキーの調べ方

    MS製品のプロダクトキーを調べるソフトがある. これを使うと, キーのシールをなくした場合でも, 再インストールに困らない.

    例えば, 他人のPCでこのソフトを使うと, 勝手に他人のキーでソフトを使用することができる. (インストーラを別ルートで入手するなどして.) そういうことを警戒して, 他人に自分のPCを使わせることがある場合には, 任意のソフトが起動できないようにするなどの対策が必要である. AppLocker を有効にする, 取り外し可能な記憶装置を使用できないようにする, ネットワーク通信を制限するなどが必要だ.

    2013-08-15

    オーディオジャックを通して赤外線リモコン信号を送信

    PCとかのオーディオジャックから, 赤外線リモコン (テレビやエアコンに使用するもの) の信号を発信できたら便利だろう.

    38kHz にて変調させる必要があるので, 発振回路が必要である. オーディオジャックからの電力だけで駆動できれば, スマートフォンからでも使用できて更に便利なので, 回路図を書いてみた. 主な仕様は以下の通り.

    電源オーディオジャックから
    入力電圧2Vpp 程度だろう
    出力周波数38kHz ± 2kHz

    こういう回路の設計経験はほとんどない上に, この回路はまだ検証されていないので, 動作するかどうか全くわからない. 懸念事項は,

  • C R のパラメータは適切か,
  • オーディオジャックから本当に 2Vpp が供給されるのか,
  • 発振周波数は仕様通りになるのか,
  • 発振に十分な電力が供給されるのか,
  • LEDは十分な強度の光を放出するのか
  • など, たくさんある. 発振周波数の中心値は抵抗をいくつか並列接続して調整してゆけばよいだろうが, 温度などに対する依存性が懸念される.

    2013-08-22, 注文した部品が届いたので, 来週にでも, ブレッドボードで試作してみようと思う.

    2013-07-26

    Lynx による操作ログと再現

    CUIウェブブラウザ Lynx を使うと, キー操作を記録・再現することができる.
    lynx -cmd_log=log.lynx http://www.example.com
    lynx -cmd_script=log.lynx http://www.example.com
    
    -cmd_log-cmd_script を両方指定すると, log で指定した方には, log の内容も追加されるようだ.

    2013-07-25

    Facebook からのメール

    Facebook の「XXさんがあなたの写真にコメントしました。」というメール, どうも MX レコードではなく A レコードで送られることがあるようだ. メールサーバに届く場合とウェブサーバに届く場合とがあってなぜだろうと思っていたけれど, きっとそうなっているのだろう. Facebook が送信するメールサーバは, Received ヘッダをみると, ecelerity というものらしいが, どんなサーバなんだろうか...
    Received: from outmail***.prn*.facebook.com (HELO mx-out.facebook.com) (66.220.***.***)
      by **** with SMTP; ** *** 2013 **:03:53 +0900
    Received: from [10.80.**.**] ([10.80.**.**:*****])
     by smout***.**.prn*.facebook.com (envelope-from )
     (ecelerity 3.6.0.37104 r(/root/Platform:develop)) with ECSTREAM
     id **/**-*****-********; ***, ** *** 2013 **:28:51 -0700
    

    2013-07-24

    ICCompiler オブジェクトの外枠を取得

    ICC にて セルやマクロの外枠座標を取得するプロシージャを紹介する.
    proc get_bbox {name {offset 0}} {
        set bbox [get_attribute ${name} bbox]
        set x1 [lindex [lindex $bbox 0] 0]
        set y1 [lindex [lindex $bbox 0] 1]
        set x2 [lindex [lindex $bbox 1] 0]
        set y2 [lindex [lindex $bbox 1] 1]
        return [list [list [expr $x1-$offset] [expr $y1-$offset]] [list [expr $x2+$offset] [expr $y2+$offset]]]
    }
    
    上記の定義にて, マクロの外枠を取得でき, offset を指定すれば, そのオフセット分だけ外に広げて return する. マクロ周囲にブロッケージを生成する場合などに便利である. 使用例を示す.
    icc_shell> get_bbox I0 
    {456.0 921.6} {1651.6 1645.2}
    icc_shell> get_bbox I0 16
    {440.0 905.6} {1667.6 1661.2}
    

    2013-07-21

    mpg123 ogg123 出力ディバイスの指定

    CUIの音楽プレーヤ, mpg123 ogg123 などで, 出力ディバイスを指定する方法は, ややこしい. ALSA を使用する場合, 以下のコマンドにて, 出力ディバイスの番号を指定できる. 番号は, alsamixer を実行し F6 を押すなどで調べることができる.
    mpg123 -o alsa -a hw:1
    ogg123 -d alsa -o dev:hw:1
    

    2013-07-18

    cURL によるウェブサーバのレスポンス表示

    cURL を使うと, ウェブサーバの時刻を確認することができる. これを使うと, サーバの時刻があっているかどうかなどを確認することができる.
    $ curl -D - -o /dev/null -s http://example.iana.org/
    HTTP/1.1 200 OK
    Accept-Ranges: bytes
    Content-Type: text/html; charset=UTF-8
    Date: Thu, 18 Jul 2013 02:46:01 GMT
    ETag: "780602-4f6-4db31b2978ec0"
    Last-Modified: Thu, 25 Apr 2013 16:13:23 GMT
    Server: ECS (mia/1791)
    X-Cache: HIT
    Content-Length: 1270
    
    

    2013-07-17

    Git のログを可視化

    GitStats というソフトを使うと, Git のコミットを可視化することができる. 可視化されるのは, 以下の項目:
    • Weekly Activity; 最近32週のコミット数.
    • Hour of Day; 時刻別のコミット数.
    • Day of Week; 曜日別のコミット数.
    • Hour of Week; 曜日・時刻別のコミット数.
    • Month of Year; 月別のコミット数. 数年にわたって, どの月が忙しいかがわかる.
    • Commits by year/month; 年月別のコミット数.
    • Commits by Year; 年別のコミット数.

    2013-07-16

    VerilogHDL における VCD 出力

    VerilogHDL のシミュレータには様々なものがあるが, VCD と呼ばれる標準フォーマットで出力することで, シミュレータには依存しない波形ビュワーを使用することが出来る. VCD を表示できるビュワーには, 例えば GTKWave と呼ばれるフリーのソフトがある. これを使用すれば, ノートPCなどで波形を見ることもできるので, 出張中であってもシミュレーションができる. Synopsys の CustomExplorer でも表示できる. HSPICE によるトランジスタレベルのシミュレーションと並べて結果を表示できるので, Mixed-signal 回路設計に便利そうだ.

    VCD を出力するには, VerilogHDL のテスト環境に, 以下のような記述を入れる.

    initial begin
        $dumpfile("myresult.vcd");
        $dumpvars(0, tb);
    end
    
    myresult.vcd, tb はそれぞれ出力ファイル, トップ階層のモジュール名 (テスト環境のモジュール名) である.

    なお, VCD のフォーマットは, プリンタブルな文字列で圧縮されているので, スクリプト処理には向かない. 何らかのスクリプト処理を行うならば, $print や, $monitor を使う方が良いだろう.

    2013-07-12

    locationhistory の 旅程

    Google Location History のダッシュボードに出てくる旅程, 1週間経たないと出ないようだ. 旅程に載る条件は, 自宅からの距離, 滞在時間などが含まれていると思われる. サンプルから検討してみる.
    距離時間結果
    54km1時間不掲載
    165km?掲載
    370km2時間掲載

    2013-07-11

    ICCでストラップを削除する方法

    ICCで引いた電源ストラップを削除するには, 以下のコマンドを使えば良い.
    icc_shell> remove_objects [get_net_shapes -filter {route_type=="P/G Strap"}]
    icc_shell> remove_objects [get_vias -filter {route_type=="P/G Strap"}]
    
    つまり, route_typeP/G Strap のネットとビアを削除する. なお, 直前に引いたストラップだけを削除する場合は,
    create_power_straps -undo

    2013-06-30

    pdftops にて B5 の PDF を PS へ変換

    pdftops にて, B5 サイズの PS へ変換するとき, -paper B5 ではダメ. 以下のようにする.
    pdftops -paperw 516 -paperh 729
    B5 には, ISO のサイズと JIS のサイズがあり, JIS のサイズを指定しないと, プリンタで正しく処理できないことがあるようだ.

    2013-06-29

    アクセス統計

    このブログのアクセスの統計に, OSについての情報がある. Linux についての記事がほとんどなのだけれど, Windows から閲覧するユーザが多いようだ. Linux の初心者の方が検索してこのページにたどり着くのだろう.

    squid http_access の順番

    マニュアルには, 複数の http_access にマッチした場合にどのルールが優先されるかが明示されていない. 実際に動作させてみると, 最初にマッチしたルールが適用され, それ以降は適用されないようだ.

    マニュアルの例では,

  • 許可されていないポートやメソッドは拒否
  • manager アクセスの処理
  • 許可されたホストなら許可 (この時点で許可されていないポート・メソッドは判定されない)
  • それ以外は全て拒否
  • という順序で判定される.

    Quartus II のコマンドラインにおける操作方法

    コンパイル

    quartus_sh --flow compile project

    JTAG を通してプログラミング

    FPGAへtop.sofを書き込む場合は, 以下のコマンドを使用する. なお, このコマンドはUSB Blasterが1個, FPGAが1個だけ接続されている場合の例.
    quartus_pgm -c 1 -m jtag -o P\;top.sof@1
    なお, USB Blaster を接続した際に, /dev/bus/usb/ 下にある, このディバイスに対応するファイルへのアクセス権を設定しておく必要がある.

    参考

  • Quartus II Scripting Reference Manual
  • RELATED パケットを iptables にて許可するべき?

    iptables にて,
    -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    という設定をよく見るが, なぜ RELATED も許可するのだろうか? RELATED に該当するパケットがどのようなものか調べてみた.

    以下のコマンドで, LOG を取るようにして, あるルータにおいて1週間ほど監視してみた.

    iptables -I OUTPUT 2 -m state --state RELATED -m limit --limit 3/hour -j LOG

    該当したパケットの例が以下:

    kernel: IN= OUT=eth0 SRC=192.168.0.1 DST=192.168.0.11 LEN=88 TOS=0x00 PREC=0xC0 TTL=64 ID=33428 PROTO=ICMP TYPE=3 CODE=10 [SRC=192.168.0.11 DST=127.22.2.73 LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=42348 DF PROTO=TCP SPT=40290 DPT=32137 WINDOW=14600 RES=0x00 SYN URGP=0 ]
    
    どうやら, ICMP のパケットが該当することが多いようだ.
    PROTO=ICMP TYPE=3 CODE=10396 パケット送信先ホストは管理者によって禁止されている.
    PROTO=ICMP TYPE=3 CODE=122 パケットホストに到達できなかった.
    合計418 パケット
    ログに残ったパケットは上記の2種類のみで, その他のパケットは見つからなかった. なお, CODE=10 が多いのは, このルータでのファイアウォール設定が厳しいためかもしれない.

    RELATED パケットについては, ICMP のみを許可するほうが良いのかもしれない.

    2013-06-21

    cdrecord による音楽CDの作成

    cdrecord というツールによって音楽CD (CDDA) を作成することができる.

    wave ファイルを用意した後, cdrecord を実行する. mp3 から wave を作成し, CDDA を作成するまでのコマンド例を以下に示す.

    $ mkdir /tmp/cdda
    $ for i in *.mp3 ; do ( ffmpeg -i "$i" -ar 44100 /tmp/cdda/"${i/mp3/wav}" &); done
    $ cd /tmp/cdda
    $ cdrecord dev=/dev/dvd speed=24 -v -audio -pad -dao *.wav
    
    cdrecordは, rootで実行する必要はない. cdromグループに入れておけば良い.

    サンプリングレートを44.1kHzにするために, -ar 44100オプションをつける.

    以下のページを参考にした.
    CDRTOOLSのコマンド例

    iptables にて OS ごとに異なるルールを適用

    iptables は, Linux でのルールベースのパケットフィルタツールである. パケット毎にTCPヘッダやペイロードにおいて条件を検査し, 条件にマッチするものに操作 (破棄, 拒否, 許可など) を加えることができる. ポート番号や送信元・送信先IPアドレスによる条件を作成することが多いが, ここでは, OS毎に条件を変える方法を紹介したい. 例えば, 以下のような使用方法が考えられる.
    • ウイルス感染が多いと言われる Windows からのパケットのみを除去する.
    • Linux 上でのみ動作するソフトが使用するポートを開ける.
    • Windows へは DHCP にてプロキシを通知できるので80番ポートは塞ぎ, その他のOSには80番ポートを開ける.

    今回使用するOSの判別方法は, TTL によるものである. ユーザやソフトウェアが細工をすることでこの判別を回避することは可能であることには注意していただきたい. TTL による OS 判別はこのページに記されている; ping(2)――設定や構成確認にも使える. 以下の表の様にして判別できる.

    1-64Linux
    65-128Windows
    129-255Mac OS X, Solaris, BSD など (iPhone はここに含まれる)

    iptables には, ttl と呼ばれるモジュールがあり, 例えば FORWARD を OS 毎に分ける場合は, 以下のように設定する.

    -A FORWARD -m ttl --ttl-lt  65 -g FORWARD-linux
    -A FORWARD -m ttl --ttl-lt 129 -g FORWARD-windows
    -A FORWARD                     -g FORWARD-mac
    

    2013-06-18

    RHEL6 で google-chrome のアップデートができなくなった

    どうやら, google-chrome については, 今後は RHEL6 (とそのクローン) のサポートがされないらしい.
    $ sudo yum update google-chrome-stable 
    Loaded plugins: fastestmirror, security
    Loading mirror speeds from cached hostfile
     * sl: ftp1.scientificlinux.org
     * sl-security: ftp1.scientificlinux.org
    Setting up Update Process
    Resolving Dependencies
    --> Running transaction check
    ---> Package google-chrome-stable.x86_64 0:27.0.1453.110-202711 will be updated
    ---> Package google-chrome-stable.x86_64 0:28.0.1500.45-205727 will be an update
    --> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.15)(64bit) for package: google-chrome-stable-28.0.1500.45-205727.x86_64
    --> Finished Dependency Resolution
    Error: Package: google-chrome-stable-28.0.1500.45-205727.x86_64 (google-chrome)
               Requires: libstdc++.so.6(GLIBCXX_3.4.15)(64bit)
     You could try using --skip-broken to work around the problem
     You could try running: rpm -Va --nofiles --nodigest
    
  • オブソリートなOSだって?!… Google ChromeはなぜRHEL 6のサポートをやめたのか
  • Jan Wildeboer の投稿
  • 2013-06-29 追記.
    Install Chromium (with Pepper Flash) on CentOS/Red Hat (RHEL) 6.4 というページが見つかった. RHEL 向けに, Chromium の RPM を作ってくれた人がいるようだ. ここかれ提供されている chromium も, /opt/chromium/ にインストールするようだ. google-chrome-stable をインストールしたままでも依存関係などは特に問題無さそう. ユーザ毎の設定ファイルがどのように扱われるのかが気になる所だったが, 設定ファイルは ~/.config/chromium/ へ作成するようなので, 気軽に試してみれば良さそうだ.
    インストール方法を説明しておく.

    $ wget http://people.centos.org/hughesjr/chromium/6/chromium-el6.repo
    # cp chromium-el6.repo /etc/yum.repos.d/
    # yum install chromium
    
    chromium では, PDFを描画するエンジンが含まれていない. これまで google-chrome を軽いPDFビュワーとしても使っていたので, 残念だ.

    2013-06-12

    gnome-terminal のキーボードショートカット

    gnome-terminal を開いたままキーボードの掃除をしていたら, キーボードショートカットが変わってしまった. o (オー) を押すと (shift や alt, ctrl を押さなくても), ヘルプが表示される. o を入力できない. どうやって直すのだろう...

    ここによると, 設定ファイルを削除すれば良いらしい.

    cd ~/.gconf/apps/gnome-terminal/
    rm -r keybindings/

    2013-06-06

    EXT4/LVM をオンラインでサイズ変更

    EXT4 になって, オンライン (マウントしたまま) のリサイズが出来るようになったようだ. EXT3 でもできたらしいが, dangerous と言われていた. 以下に, 例を示す. この例では, Scientific Linux 6 (CentOS6 同様, RHEL6 のクローン) を使用しており, もともと 16GB しか /var に確保していなかったが, 32GB に拡張した. LVM の ボリュームグループにはまだ空きがあったので, lvextend で論理ボリュームを拡張し, resize2fs にて EXT4 のサイズを変更した.
    $ sudo lvextend -L32G /dev/mapper/VolGroup00-var 
      Extending logical volume var to 32.00 GiB
      Logical volume var successfully resized
    
    $ sudo resize2fs -p /dev/mapper/VolGroup00-var
    resize2fs 1.41.12 (17-May-2010)
    Filesystem at /dev/mapper/VolGroup00-var is mounted on /var; on-line resizing required
    old desc_blocks = 1, new_desc_blocks = 2
    Performing an on-line resize of /dev/mapper/VolGroup00-var to 8388608 (4k) blocks.
    The filesystem on /dev/mapper/VolGroup00-var is now 8388608 blocks long.
    
    resize2fs は, 特にオプションを指定しなくても, オンラインであることを感知して, オンラインリサイズを実行するようだ. -p は, 進捗をバーで表示するオプション. なお, resize2fs が動いている間に df を実行すると, その拡張途中のサイズが表示された.

    ext4 ファイルシステムのサイズを変更する

    PingコマンドによるIPアドレス重複の調査

    同一のIPアドレスが複数のマシンに重複して割り当てられてしまうという事故が起こった場合の対処方法を説明する.

    以下では, 192.168.0.100 が重複して割り当てられている場合を例にして, RHEL 6 にて調査する方法を説明する.

    1. まず, MACアドレスを特定する.
      $ ping -c 1 192.168.0.100
      $ arp 192.168.0.100
      
      この時に出力されるMACアドレス (HWaddress) が時とともに (数分〜) 別のものに変わる. このMACアドレス (偽物の方) をメモする.
      たいていの機器ではこのMACアドレスがラベルに書かれているが, 機器がたくさんある場合や, 探しまわっても見つからないこともある. その時は, 以下の手順に進む.
    2. 偽物のMACアドレスを, arp テーブルに設定する. (ここでは, 01:23:45:67:89:ab とする.)
      # arp -s 192.168.0.100 01:23:45:67:89:ab
      この代わりに, 本物のMACアドレスをもったマシンをネットワークから切り離しても良い.
    3. ping を送る. 応答が来たら音が鳴るように, tr へパイプする.
      $ ping 192.168.0.100 | tr : '\a'
      この時点でもし音がならない場合は,
      # modprobe pcspkr
      を実行してから, もう一度試す.
    4. ハブにおいて, 音と同期して点滅するポートを探す. もしデータ転送量が多いなどで見つけにくい場合は, ハブにつながっているLANケーブルを1本ずつ抜き差しし, 音が鳴らなくなるものを探す.

    2013-06-04

    私のlatexmkrc

    latexmk というプログラムを使うと, コマンドひとつで LaTeX のソースファイルのコンパイル, PDF の作成などを行うことができる. 実行してみると *.fdb_latexmk というファイルが生成されていて MD5 が書かれていたので, 中間ファイルや依存ファイルの MD5 が変わったかどうかを見てコンパイルするかどうか, もう一度コンパイルし直すかどうかを判断する.

    作業ディレクトリにlatexmkrcというファイルを用意しておくと, 使用するコマンドをカスタマイズできる. 以下に私が使用しているlatexmkrcの例を示す.

    #!/usr/bin/env perl
    
    $latex  = 'platex -halt-on-error %O %S';
    $bibtex  = 'pbibtex %O %B';
    $dvipdf  = 'dvipdfmx %O %S';
    $pdf_mode = 3;
    
    $ENV{"LANG"} = "ja_JP.UTF-8";
    
  • 日本語を書くので, platex, pbibtex, dvipdfmxを使用する. これを上記の様に設定する.
  • pdf_modeを3に設定することで, DVIPDFによりPDFを生成する.
  • 念の為, 環境変数LANGをja_JP.UTF-8に設定しておく.
  • その他の設定は, latexmkの中身 (perlで書かれている) を読んで調べれば良い. なお, latex ではなく platex を使用したい場合は,
    latexmk -latex=platex
    
    とすれば良いようだ.

    また, 英語で論文などを書くときには, 以下のlatexmkrcを使っている.

    #!/usr/bin/env perl
    
    $latex  = 'latex -halt-on-error %O %S';
    $bibtex  = 'bibtex %O %B';
    $dvipdf  = 'dvipdfmx %O %S';
    $pdf_mode = 3;
    
  • 2013-05-27

    httpd のアクセスログ: UpdateDD

    httpd のログに, 以下のような行が出ていた. (一部, 適当な長さの X で置き換えている.)
    XXX.XXX.XXX.XXX - - [XX/May/2013:XX:XX:XX +0900] "GET /update.php?username=XXX&pass=XXX&host=XXX.no-ip.info HTTP/1.1" 404 303 "-" "UpdateDD 2.6 - http://updatedd.philipp-benner.de"
    
    ユーザ名・パスワードが平文で書かれている. host=XXX.no-ip.info の部分から, no-ip の DDNS を使っているようだ. IPアドレスの更新プログラムが, IPを間違えたのだろう.

    2013-05-10

    pdftk にてパスワードを解除

    PDFTKというコマンドラインツールを使うと, パスワード保護のかかったPDFファイルを読むことができる. (もちろん, パスワードを知っている必要がある.) これを使うと, パスワード保護のかかったPDFをパスワード保護なしのPDFに変換することができる. 以下のようば場合に便利である.
    • 大して重要でもないのにパスワードがかかっている.
    • 毎回パスワードをメモしておくよりは, 暗号化しない方がましだ.
    • ディスクごと暗号化しているなど, 別の方法で保護しているからOKだろう.
    pdftk input_file.pdf input_pw your_passowrd output output_file.pdf
    
    また, 別のパスワードで保護することもできる.
    pdftk input_file.pdf input_pw your_passowrd output output_file.pdf owner_pw foo user_pw baz
    

    2013-05-02

    Chrome で新しいタブを開いてURLを開く

    Linux 上の Firefox では, URL をバッファに入れた状態で中ボタンクリックにより, その URL を開くことができた. Chrome でも同様の機能があればいいなと思っていたら, 似た機能があった.
  • マウスで URL を選択して, バッファに入れる. (端末など, 別のアプリケーション上で)
  • Chrome の「新しいタブ」ボタンを中クリックする.
  • この手順で, 新しいタブを開いて URL を開くことができる.

    LaTeX パッケージのドキュメント

    LaTeX のパッケージに含まれるコマンドの使用方法を調べる場合, CTAN のウェブページを利用するのが良い. コマンド名で検索しても, 不完全な情報しか得られないが, オフィシャルなドキュメントには, サポートされている全てのオプションが記載されている (べきである).

    2013-04-30

    PDFに含まれる画像を取り出す方法

    RHEL (CentOS や Scientific Linux を含む) にインストールされている evince には, PDF 中に含まれる画像をファイルとして取り出す機能が実装されている. 文字や図形の情報を含んで画像を生成する場合はスクリーンショットを使用するが, PDF の画像のみを取り出す場合には便利である.
  • PDF を evince で開く.
  • 画像の部分でマウス左ボタンを押す.
  • マウスを動かし, 適当な端末まで移動する.
  • 左ボタンを離す. (要するに, 画像を端末へドラッグ&ドロップする.)
    このとき, 画像がファイルとして保存され, 端末にはパスが入力される.
  • なお, evince では PostScript を開くこともできるが, このときには, 画像を取り出すことができないようだ.

    FontPack910_jpn_i846-linux を展開

    RHEL や CentOS に英語の acroread をインストールすると, 日本語のフォントが付属していないため, フォントが埋め込まれていない PDF を閲覧できない. 日本語の acroread は古いバージョンしか提供されていないので, 最新の acroread を日本語対応にしたい. FontPack910_jpn_i486-linux.tar.bz2Adobe のサイトで配布されているが, 展開方法が明示されておらず, どのようにインストールすればよいか分からない. そこで, 試行錯誤した方法を示す.

    $ tar xvjf FontPack910_jpn_i486-linux.tar.bz2 
    JPNKIT/
    JPNKIT/LANGJPN.TAR
    JPNKIT/LANGCOM.TAR
    JPNKIT/LICREAD.TXT
    JPNKIT/BINCOM.TAR
    JPNKIT/INSTALL
    
    どうやら, TAR が3個含まれているらしい. これをどこかのディレクトリで展開すれば良いのだろう.
    $ tar tf JPNKIT/LANGJPN.TAR 
    Adobe/Reader9/Resource/CIDFont/
    Adobe/Reader9/Resource/CIDFont/KozMinPr6N-Regular.otf
    
    Adobe/Reader9/ というディレクトリが含まれているので, きっと /opt/Adobe/Reader9/ を指しているのだろう. というわけで, /opt/ へ移動して, 展開することにする.
    # cd /opt/
    # tar xf /tmp/JPNKIT/BINCOM.TAR
    # tar xf /tmp/JPNKIT/LANGJPN.TAR
    # tar xf /tmp/JPNKIT/LANGCOM.TAR
    
    この後, acroread を再起動したら, 日本語の PDF も閲覧できるようになった.

    2013-04-16

    Dropbox で一部のディレクトリが同期されない

    最近, Linux 上で使用している Dropbox にて, 一部のファイルが同期されないという問題が生じていた. 他のマシンからサーバまではデータが届いているものの, あるマシン (RHEL 5) にだけファイルが共有されない. 共有されないといっても, 全てのファイルの同期がされないのではなく, 特定のディレクトリのファイルだけが共有されない.

    ログ (dropboxd の出力をファイルにリダイレクトしていた) を見てみると, 以下のメッセージが出ていた.

    Unable to monitor entire Dropbox folder hierarchy. Please run "echo 100000 | sudo tee /proc/sys/fs/inotify/max_user_watches" and restart Dropbox to correct the problem.
    
    どうやら, Dropbox で Git のリポジトリを共有していたことによって大量のディレクトリが生成されていたことが原因だったらしい. なお, Dropbox で Git リポジトリを共有すると, ロック機構が働かない可能性があるので, 推奨しない.

    2013-04-12

    GNUplot でデータ分離文字を変更する方法 (CSVファイルを読む方法)

    GNUplot では, デフォルトで空白がデータの区切として扱われる. CSV (カンマ区切) のように, 他の文字をデータの区切にしたい場合は,
    set datafile separator ","
    と設定する.

    2013-04-10

    RHEL6 に Fedora 18 の chroot 監獄を作る

    仮想マシンを使うと1台のマシンで複数のディストリビューションを同時に使用できるが, メモリの使用量が多くなるなど, オーバヘッドが大きい. 一方で, chroot 監獄を使うと, 仮想マシンよりは手軽に他のディストリビューションを使用することができる.

    仮想マシンと chroot 監獄との違いをまとめておく.

    仮想マシンchroot 監獄
    kernelGood; ゲストのkernelBad; ルートのkernelと同じ
    安全性Good; ゲストの動作はホストから制限できるBad; 監獄内からでも監獄外のプロセスへ干渉できる
    サービスなどBad; 様々なサービスのプロセスがゲスト中で走るので冗長Good; 必要なプロセスのみを走らせる
    まず, chroot 監獄では, kernel を変えることはできない. ルートの kernel の上で chroot 監獄内のプロセスが走る. 従って, kernel のバージョンに依存するアプリケーションの使用には注意する.
    安全性に関しても, chroot 監獄は仮想マシンに劣る. chroot 監獄内から, 監獄外のプロセスにシグナル (SIGKILLなど) を送ることもできる. 任意のディバイスにもアクセスできる. 従って, 使い方によっては, 安全性が高まるよりはむしろ危険性が高まるかもしれない. なぜなら, 監獄内のプロセスが乗っ取られればルートのシステムに危害が加えられる可能性もあるし, ルート・監獄内と複数のシステムを管理するのは手間である.
    以上のような欠点はあるものの, chroot コマンドだけですぐに使用でき, メモリなどのリソース使用量が仮想マシンより少ないという点は魅力的である. バイナリしか入手できないアプリケーションを動かしたいが glibc のバージョンが異なる場合, 別のディストリビューションにしかないパッケージを使用したい場合などにおいて役に立つかもしれない.

    操作手順を簡単に説明する. ここでは, ルートに Scientific Linux 6, 監獄内に Fedora 18 と, ともに rpm にてパッケージ管理されたディストリビューションを使用する.

  • まずはディレクトリを作成し, rpm のデータベースを初期化する.
    # mkdir -p /opt/fedora-root/var/lib/rpm
    # rpm --root /opt/fedora-root/ --initdb
  • fedora-release をインストールする.
    $ cd /tmp && wget ftp://ftp.jaist.ac.jp/pub/Linux/Fedora/releases/18/Everything/x86_64/os/Packages/f/fedora-release-18-1.noarch.rpm
    # rpm --root /opt/fedora-root/ -ivh /tmp/fedora-release-18-1.noarch.rpm
  • /dev//etc/ を作る.
    # mkdir /opt/fedora-root/{dev,etc}
    # cp -a /dev/{null,stderr,stdout,stdin,zero,random,urandom} /opt/fedora-root/dev
    # cp /etc/{resolv.conf,localtime} /opt/fedora-root/etc/
  • bashyum をインストールする. 依存関係で他にもいろいろインストールされる.
    yum --nogpgcheck --installroot=/opt/fedora-root/ install bash yum
  • /dev/shm をマウント. (オプション)
    # mount -t tmpfs tmpfs /opt/fedora-root/dev/shm
  • chrootする.
    # chroot /opt/fedora-root/

  • 2013-04-03

    NVIDIA-Linux-x86_64-310.40

    おお, nVidia の純正ドライバでも, 画面構成を xrandr で切り替えられるようになっている!
    $ xrandr
    Screen 0: minimum 8 x 8, current 3200 x 1200, maximum 8192 x 8192
    DVI-I-0 disconnected (normal left inverted right x axis y axis)
    DVI-I-1 disconnected (normal left inverted right x axis y axis)
    DVI-I-2 connected 1600x1200+1600+0 (normal left inverted right x axis y axis) 408mm x 306mm
       1600x1200      60.0*+
       1280x1024      60.0  
       1024x768       60.0  
       800x600        60.3  
       640x480        59.9  
    DVI-I-3 connected 1600x1200+0+0 (normal left inverted right x axis y axis) 408mm x 306mm
       1600x1200      60.0*+
       1280x1024      60.0  
       1024x768       60.0  
       800x600        60.3  
       640x480        59.9  
    

    2013-04-01

    CanoScan N650U/N656U を Linux にて使用する方法

    まずは, ディバイスを接続し, lsusb にてどのように認識されているか確認する.
    $ lsusb | grep Scan
    Bus 005 Device 002: ID 04a9:2206 Canon, Inc. CanoScan N650U/N656U
    
    CanoScan N650U または N656U であることが分かった.

    scanimage -L にて, ディバイスの名前を確認する.

    $ sudo scanimage -L
    device `plustek:libusb:005:002' is a Canon CanoScan N650U/N656U flatbed scanner
    

    スキャンする.

    $ sudo scanimage -d plustek:libusb:005:002 -p --resolution 600 -x 210 -y 297 --mode Gray >tmp.ppm
    

    ディバイス固有のその他のオプションは, --help をつけると出てくる.

    $ sudo scanimage -d plustek:libusb:005:002 --help
    

    2013-02-07

    DVIからフォントを埋め込んでPDFを作成

    DVIからPDFを作成する際, 全てのフォントを埋め込む場合には以下の手順を使用する.
    dvips document.dvi
    ps2pdf14 -dPDFSETTINGS=/prepress -dEmbedAllFonts=true document.ps
    

    2013-01-25

    Zroute の並列化

    Synopsys IC Compiler の自動配線機能 Zroute は, 並列化に対応しているらしい. zrt_max_parallel_computations が参考になるかもしれない.

    2013-01-20

    ibus が勝手にキー配列を変更する

    私はノートPCに Fedora 18 を使用しているが, CapsLock-Ctrl, Backspace-Backslash を入れ替えて, HHK のような配列にしている. 最近の ibus のアップデート以降, 日本語入力から英語入力に切り替えると, キー配列がもとに戻ってしまう.

    ibus のソースコードによると, システムデフォルトへ変更するようになっていたので, これを無効にすることにした. この変更は, /usr/libexec/ibus-xkb を呼び出すことで行われていたので, 以下のコマンドで, このプログラムがキー配列を変更しないようにした.

    # mv /usr/libexec/ibus-xkb /usr/libexec/ibus-xkb-1
    # cp /usr/bin/true /usr/libexec/ibus-xkb
    
    ibus の設定で, 変更することが出来ればよかったが, そのような設定項目は無かった.

    2013-01-12

    ICC route_search_repair が Too many broken nets とエラーを出す

    route_search_repair が, 以下のエラーを出して失敗する時は, route_auto を一度実行すると良いだろう.
    There are 1248 open signal nets!
    Re-connect 1248 open nets!
    **** ERROR:Too many broken nets. Cannot continue! 
     search & repair fail!
    
    このエラーは, オープンネットが多すぎるといっているので, route_auto にて, オープンネットを接続してやる.