linux」カテゴリーアーカイブ

YaTeXでタイプセット時に.dviと.logを削除する

近年のLaTeX環境においては出力はほぼPDF一択になったため,dviを保存しておく意味はほとんどなくなっているのではないかと思います。

YaTeXを使っている場合に,YaTeXでタイプセットした瞬間についでに .dvi と .log を削除してしまう設定が無いか調べてみたのですが,そういう機能そのものは無いかも知れません(調べが足りないだけかも)。

そこで以下のように現在はしてみています。

まず .emacs (や .emacs.el 等)に以下のように書いておき,

(setq YaTeX-dvipdf-command "~/bin/mydvipdfmx.sh")

さらに,$HOME/bin/mydvipdfmx.sh として以下のようなシェルスクリプトを置きます。

#!/bin/sh

dvipdfmx $1
rm ${1%dvi}.log
rm $1.dvi

echo "DELETED:" "${1%dvi}.log" "$1.dvi"

これで,YaTeXから C-c t d すると,PDF生成と同時に .dvi と .log は削除されます。
自分では latexmk よりもこんな感じの方がしっくりきます。

Raspberry Pi をデジタルサイネージにする(動画流しっぱなしプレイヤにする)

坂本研Webの大学院講義「フィジカルコンピューティング特論」作品展示でも書いたのですが,この展示では1つの紹介動画をループ再生で流しっぱにしています。

要するにデジタルサイネージみたいなものですが,一度設定したらあとは管理フリーにしたかった(つまり放置したい)ので,以下のような条件でやりたいと思いました。

  • 朝自動的に起動し,夜自動的に終了する。
  • 自動的に起動したときに,動画を自動的に再生し始めたい。

これを何で実現するか考えたとき,

  • ノートPCやNUC: 定時の電源ON/OFFの設定が,少し調べた感じBIOSの対応を調べなければならず,面倒そう。かといって,外付けタイマーでON/OFFすると今度は「OSが正常にシャットダウンされませんでした」とか出そう。
  • デジ像などのメディアプレイヤ: 意外と高い。応用が効かない。レジューム再生はできるけど,それをループ再生にはたぶんできない。
  • デジタルフォトフレーム: 意外と高い。応用がかなり効かない。動画のフォーマットも限られている。

などと考えていったら,Raspberry Pi で実現するのが良いんじゃないかと思いました。表示はごく普通のPC用液晶ディスプレイを使う。ただしごく普通の安いのはHDMIがついていないこともあるので,HDMI-DVI変換をする。電源ON/OFFは外付けの家電用タイマで行う。

というわけで,主なものとして以下の機器を用意しました。

その他細かいものとしては以下を使いました。

RasPi2 には 2015-05-05-raspbian-wheezy をインストールし,raspi-config の Enable Boot to Desktop/Scratch では graphical desktop を選択します。

動画は今回は 960×540 (16:9), mp4(AVC/H.264), 29.97fps, 3Mbps で作りました。動画のアスペクト比やコーデックなどにあまり制限されないのも RasPi でやるメリットだと思います。この動画を RasPi2 の適当なディレクトリに置きます。

raspbian には動画プレイヤ omxplayer が始めから入っており,これでフルスクリーン再生ができます。
これを起動時に動作させるようこの辺などを参考に /etc/xdg/lxsession/LXDE-pi/autostart に以下を追加します。

@omxplayer --refresh --loop /path/to/video.mp4

リブートしたらだいたい期待通りの動きになりました。

これでうまくいくかと思ったのですが,テストのためしばらく放置してみると再生がフリーズしていることがあります(OS自体は動いています)。また,動画の最後の2~3秒が無視されて最初に飛んでしまいます。

そこで,OMXPlayer公式から最新ビルドomxplayer_0.3.6~git20150710~4d8ffd1_armhf.debを取ってきて以下のようにインストールします。

# wget http://omxplayer.sconde.net/builds/omxplayer_0.3.6~git20150710~4d8ffd1_armhf.deb
# dpkg -i omxplayer_0.3.6~git20150710~4d8ffd1_armhf.deb

なお,OMXPlayer公式にある以下の手順は必要ありませんでした(2015-05-05-raspbian-wheezyには既にこれらのパッケージの最新版が入っていました)。

# apt-get install libpcre3 fonts-freefont-ttf
# apt-get install fbset


これで完璧に動くようになりました。

あとはデジタルプログラムタイマで,RasPi と液晶ディスプレイの両方を定時ON/OFFするように設定しました。

RubyでPDFのページ数を数える

Rubyスクリプトから,既存のPDFファイルの総ページ数をカウントしたいことがたまにあります。

方法はいくつか考えられます(多少強引なのも含めて)。

PDF::Readerを使う方法

たぶん一番スマート。

#!/usr/bin/env ruby
require 'pdf/reader'

fname = "test.pdf"
p PDF::Reader.new(fname).page_count

PDF::Readerはgemでインストールできます。

$ gem install pdf-reader

続きを読む

Linuxでxlsxをxlsに変換

LibreOfficeが入っていれば,

libreoffice --headless --invisible --convert-to xls:"MS Excel 97" foo.xlsx

という感じで良いみたいですね。

毎月事務局から送られてくる学食の営業情報のxlsファイルを,htmlに適当にコンバートして公開するのをRubyとSpreadsheetライブラリでやっていたのですが,今月からxlsではなくxlsx形式に変わってしまって,かつSpreadsheetはxlsxに対応してないようなので,この手の変換が必要になりました。

ちなみに学食営業情報ページはこちらです