2010年2月18日木曜日

Ubuntu 9.10 に TeX を入れてみた

 Ubuntu に TeX を入れてみましたので、メモ。
基本的に ubuntu wiki のとおり。
sudo apt-get install latex-env-ja
sudo apt-get install latex-extra-ja
sudo jisftconfig add


でインストールが完了します。簡単ですねー昔の事を考えたら素晴しい進化です。

●dvipdfmx が jsarticle で動かない

 jarticle では問題なく動きます。新しい jsarticle ではエラーが出て動きませんでした。
 うちの環境では、/etc/texmf/dvipdfm/dvipdfmx.cfg の最下行に、
f jis-cjk.map

を追記し、 sudo update-vfontmap する事で動きました。

  • 出来たdviファイルを確認する時は→
       xdvi を使う。
  • PDFに変換するには→
       dvipdfmx を使う。
  • 文字コードは→
       当座はeuc-jpにする


 こんなとこかな?
 TeXなんて使ったのは遥か昔の事なので、完全に忘れています。使う機会もないんですが、テキストのメモなんかプリントアウトする際にちょちょいと整形するのに便利なので、今後使っていこうかな。かな。かなあ?

2010年2月10日水曜日

darkroom.el をちょこっと修正

 事前にcolor-themeを設定しなくても済むようにしました。自動で保存・復元します。
 こちらから落としなおして下さい。

バグ
 DDSKK を起動すると背景色が復元しない><
 追記:ddskk をcvs先端にしたら直った。ということでオールクリアー。

2010年2月8日月曜日

Emacs で DarkRoom

 DarkRoom とはフルスクリーンでただ文章を書くことのみに集中させるというシンプルなエディタです。
 しかしこれが言うのとやるのとでは全然違います。最近のPCは画面も大きくなり、横長になり、様々なウィジットをデスクトップにちりばめ、タスクトレイにいろんアイコンが並んでいる。気がつくと情報過多なデスクトップになっているのです。その事に気づかされました。


でまあ、当然これをEmacsでもできないかとなと思い、やってみました。



 以下の Emacs lisp を darkroom.el という名前で load path の通った場所に保存してください。
 次に ~/.emacs に、
(require 'darkroom)
(global-set-key [f11] 'darkroom-mode)
と追記すればOKです。
 後は F11 キーを押せばフルスクリーンでDarkRoomモードになります。
;;; darkroom.el --- 
;; Copyright (C) 2010  yama
;; Author: yama ;; Keywords: 
;;  $Id: darkroom.el,v 1.10 2010/02/25 10:22:02 yama Exp $ 
;; This program is free software; you can redistribute it and/or modify;; it under the terms of the GNU General Public License as published by;; the Free Software Foundation, either version 3 of the License, or;; (at your option) any later version.
;; This program is distributed in the hope that it will be useful,;; but WITHOUT ANY WARRANTY; without even the implied warranty of;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;; use color-theme
;;; Usage
;;; (require 'darkroom);;; M-x darkroom
;;; Code:(require 'color-theme)


;;; Config ---------------------------------------------------------(defvar darkroom-left-margin  30
  "left margin")

(defvar darkroom-right-margin 30
  "right margin")

(defvar dark-mode-on nil
  "Non-nil if DarkRoom mode is enabled.
Don't change this variable directly, you must change it by one of the
functions that enable or disable Dark Room mode.")

;;; -------------------------------------------------------------------

(defun fullscreen (&optional f)
  "Chenge FullScreen. for Emacs23"
      (interactive)
      (set-frame-parameter f 'fullscreen
                           (if (frame-parameter f 'fullscreen) nil 'fullboth)))

(defun darkroom-mode ()
  "simple writing environment."
  (interactive)
  (if (equal dark-mode-on t) (darkroom-mode-disable)
    (darkroom-mode-enable)))

(defun darkroom-mode-enable ()
  (setq dark-mode-on t)
  (setq darkroom-default-background-color
        (cdr (assoc 'background-color default-frame-alist)))
  (fset 'color-theme-snapshot (color-theme-make-snapshot))
  (sleep-for 0.05)
  (color-theme-simple-1)
  (fullscreen )
  (set-cursor-color "yellow") ;; cursor color  (tool-bar-mode 0)
  (menu-bar-mode 0)
  (display-time-mode 1)
  (scroll-bar-mode)
  (set-face-foreground 'mode-line "gray25")
  (set-face-background 'mode-line "gray1")
  (if (equal (intern-soft "elscreen-version") nil) nil
    (elscreen-toggle-display-tab))
  (auto-fill-mode 1))

(defun darkroom-mode-disable ()
  (setq dark-mode-on nil)
  (add-to-list 'default-frame-alist
               '(background-color . darkroom-default-background-color))
  (color-theme-snapshot)
  (scroll-bar-mode)
    (if (equal (intern-soft "elscreen-version") nil) nil
    (elscreen-toggle-display-tab))
  (display-time-mode 0)
  (sleep-for 0.05)
  (fullscreen ))
    
(defun window-count ()
  (length (window-list (selected-frame) 1)))

(defun set-margin ()
  (set-window-margins (selected-window)
                      darkroom-left-margin
                      darkroom-right-margin))

(defun dark-window-update ()
  (if (equal dark-mode-on t)
      (if (> (window-count) 1)
          (progn
            (set-window-margins (selected-window) 0 0)
            (set-window-margins (previous-window) 0 0))
        (set-margin))
  (set-window-margins (selected-window) 0 0)))

(add-hook 'window-configuration-change-hook 'dark-window-update)


(provide 'darkroom)
;;; darkroom.el ends here




 低機能です。フルスクリーンにする部分がEmacs23からの機能を使っているので、emacs23以上で使用してください。そこを書き換えればemacs22とかでも動作するはず。
 あらためて こうして全画面で作業をしていると、twitter や ウェブブラウズとかしなくなり、気が散らずに作業できるんだなあと。というか今までどんだけ注意力散漫だったんだろうと思いましたw


 さあ皆さんも思う存分執筆に集中して下さいw


ps.
# 端末で起動してフルスクリーンにすればいいじゃんという突っ込みはなしで;;



●追記:
 color-theme の設定書いただけで反映するの忘れてた(^_^;) 修正しましたので落とした方は再度落とし直して下さい。

●2012/08/30 追記:
 続き→ http://ubulog.blogspot.jp/2012/08/darkroomel.html

2010年1月26日火曜日

ubuntuで壁紙をランダムに切り替える。

 起動時にランダムに壁紙を変更していきます。
 毎回同じ壁紙だと飽きてくるし、かといって手動でいちいち切り替えるのも億劫になってきまして(^_^;)


 まず、ランダムに変える壁紙を入れたディレクトリを決めておきます。壁紙となる画像ファイルはあらかじめ gimp などのフォトレタッチソフトを使ってサイズを統一しておきましょう。その方がいろいろと面倒じゃなくなるので。

● icewm の場合

 以下を random-wallpaper-icewm.sh という名前で ~/bin あたりに保存します。保存したら、chmod +x random-wallpaper-icewm.sh として実行属性を付けるのを忘れずに。
 pref は ~/.icewm/preferences の場所です。
 WALLPAPERS は壁紙のあるディレクトリを指定します。
 それぞれ御自分の環境に合わせて修正してください。

#!/bin/bash
# last updated : 2010/01/21 21:13:37 JST
#
# icewm用ランダム壁紙チェンジャー
#

pref='/home/ユーザー名/.icewm/preferences'
WALLPAPERS="$HOME/MyPictures/Wallpapers"
ALIST=( `ls -w1 $WALLPAPERS` )
RANGE=${#ALIST[*]}
SHOW=$(( $RANDOM % $RANGE ))

sed --in-place=.bak -e \
's:^DesktopBackgroundImage=.*$:DesktopBackgroundImage="'"${WALLPAPERS}/${ALIST[$SHOW]}"'":' $pref
icewmbg -r
 修正して保存し終えたら、~/.icewm/startup の最後の方に追記します。
 以上で次回以降、icewmにログインする度に壁紙がランダムで変更されます。


● GNOME の場合

 以下を random-wallpaper-gnome.sh という名前で ~/bin あたりに保存します。保存したら、chmod +x random-wallpaper-gnome.sh として実行属性を付けるのを忘れずに。
 WALLPAPERS は壁紙のあるディレクトリを指定します。
 自分の環境に合わせて修正してください。

#!/bin/bash
# last updated : 2010/01/26 15:13:17 JST
# Set Random Wallpapers for GNOME.
#

WALLPAPERS="$HOME/MyPictures/Wallpapers"
ALIST=( `ls -w1 $WALLPAPERS` )
RANGE=${#ALIST[*]}
SHOW=$(( $RANDOM % $RANGE ))

gconftool-2 --type string --set "/desktop/gnome/background/picture_filename" $WALLPAPERS/${ALIST[$SHOW]}
gconftool-2 --type string --set "/desktop/gnome/background/picture_options" "centered"
 保存し終えたら、メインメニューのシステム設定自動起動するアプリ を起動します。

 起動したら追加ボタンを押して追加メニューを出し、登録していきます。


 これで次回以降ログインする度に壁紙がランダムに設定されて表示されます。

● openbox の場合

 以下を random-wallpaper.sh という名前で ~/bin あたりに保存します。保存したら、chmod +x random-wallpaper.sh として実行属性を付けるのを忘れずに。
 WALLPAPERS は壁紙のあるディレクトリを指定します。
 自分の環境に合わせて修正してください。
 feh というコマンドを使いますので、あらかじめ
sudo apt-get install feh
として入れておいて下さい。

#!/bin/bash
# last updated : 2010/01/05 15:12:05 JST
#
# SET random Wallpapers for background.
#

WALLPAPERS="$HOME/MyPictures/Wallpapers"
ALIST=( `ls -w1 $WALLPAPERS` )
RANGE=${#ALIST[*]}
SHOW=$(( $RANDOM % $RANGE ))

feh --bg-scale $WALLPAPERS/${ALIST[$SHOW]}
 修正して保存し終えたら、~/.config/openbox/autostart.sh の最後の方に追記します。
 以上で次回以降、openboxにログインする度に壁紙がランダムで変更されます。

2010年1月2日土曜日

ubuntuでファイルコピーでベリファイする

 ubuntuで大きいファイルや沢山のファイルをコピーする場合は、nautilusでコピーするのではなく、cp コマンドを使うと便利です。リソースも食わず、バックグラウンドで放っておけますし、なにより基本中の基本コマンドなので安心感が違います。
 とはいえ、ネットワーク越しのコピーだと外乱要素が多いので、ちゃんとコピーできたかどうか確認した方がいい場合もあります。大事なデータの引越しとかですね。
 そこで正しくコピー出来たかどうか確認するためにベリファイをします。各ファイルのハッシュ値を出して比較して正しくコピー出来たか確認します。
 標準で md5sum コマンドがありますが、今回は確認作業をもっと楽にしてくれる md5deep コマンドを使います。


インストール

sudo apt-get install md5deep

使い方


  1. 元ファイルのハッシュ値リストを作成する。

     まず最初に元となるファイル群のハッシュ値リストを作成します。
    md5deep -r ディレクトリ名 > hash.list

    -r オプションを付けることにより、再帰的に動作します。
    -e オプションを付けると進行状況を表示します。大きいファイルの時に使うといいでしょう。
    このハッシュリストは元データと同じディレクトリに保存しておきますと、そのうちなにかの役にたつかもしれませんw
  2. コピー先と比較する。
     作成しておいたハッシュ値リストと、コピーした先のファイル群のハッシュ値とを比較していきます。
     正常にコピー出来たファイルはいちいち報告する必要はないので、正常にコピー出来なかったファイル名だけ表示させるようにします。
    md5deep -X hash.list -r 比較作ディレクトリ
    -X オプションはマッチングしないものだけを表示します。
    両方のファイル名を表示させたいなら、-w オプションを付けます。
     これでなにも報告されなかったら正常にコピーできています。もしハッシュ値が違っていた場合は報告されますので、再度そのファイルをコピーすればいいでしょう。


 基本的な手順は以上です。簡単でしょう?
 シェルスクリプトでサブプロセスで動かせば、並列して計算させる事も出来るので、高速化もできるでしょう。同一のHDDじゃあまり意味ないですけど。マルチコアじゃないと意味がないですけど。

 大事なデータの移動には是非ベリファイしておきたいものです。
 ついでに cp ですが、 nice コマンドと併用することでコピー時の負荷を減らす事が出来ます。さらに ionice と組み合わせると、もっとシステム負荷を減らせます。

ex.
ionice -c3 -n7 nice -n19 cp コピー元 コピー先 && zenity --info --text "コピー完了"

-c3 はシステムがアイドル時にしかコピーしません。-n7 で優先度を最低に。さらにniceの方でも優先度を最低にしています。
 これでバックグラウンドでコピーさせています。もちろんコピーの優先度を最低にしてますので、結果としてコピーの時間はかかりますが、システムの負荷は減るでしょう。
 最後にコピーが終了したら通知ウィンドウを表示させるようにしていますので、時間のかかるコピーでも、コピー完了を忘れることを防ぎます。

 であであ快適なubuntu生活を♪

2009年11月29日日曜日

ubuntu で ext3からext4へ移行してみた

 ファイルシステムをext3からext4へ移行しました。本当はしっかりとした移行記事を書こうかと思ったんですが、普通じゃないやり方してしまって参考にもならないのでやめました(^_^;) ので、感想だけ。

 ext3からext4への移行は、ext3のマウントオプションをext4に指定してやればそのままext4として扱えるんですが、これだとext4本来の機能を利用した状態にはならず、ext4本来のパフォーマンスを発揮することは出来ません。というか意味がない。
 ですので、ext4本来の性能を体感したい、というかちゃんとext4を利用したいのなら、ext4でフォーマット仕直し、そこへファイルを書き戻すといったことが必要です。

 で、LiveCDから起動し、中身をせっせとバックアップしてext4でフォーマット仕直して、バックアップを戻すという作業をしました。もちろんUUIDが変わるので、fstabやgrubなども書き換えてね。

 そして再起動。

 いきなりびっくり。ubuntu 9.10があっというまに立ち上がるんです。デュアルブートのXPよりも速い。ext3の時はこんなものでしょうっていう起動速度だったんですが。
 そして実際にログインして使てみると、速いこと速いこと。ext4ではやっとエクステントベースになったのですが、これによってメタ情報がぐっと少なくなりました。ext3のブロックベースですと1GBのファイルに必要な管理情報は1MBも必要でした。メタ情報のやり取りだけでI/O処理がそれなりにかかっていた事を考えると・・・
 具体的にはfindやduなどのメタ情報を検索するコマンドの速度におおいに違いが表れます。
 数千個のファイルがある、GB単位のディレクトリなど、du で容量を調べるにはそれなりの時間がかかりましたが、ext4だとあっという間に合計容量が返ってきます。

 最初は保守的にシステムだけをext4にして/homeはext3でなんて考えていたんですが、あまりにも良いので全部のパーティションをext4にしてしまいましたw

 ext4は十分に問題なく使えるFSだと思います。

2009年11月22日日曜日

ubuntu 9.10 アップグレードメモ

 遅ればせながら ubuntu 9.10 にアップグレードしましたのでメモ。
 今回の目玉は起動速度がさらに速くなった? なんとなくそんな気がしないでもない。


  • アップグレードはCLIから行なった。
  • sdic-eijiro でエラーが出てアップグレードを強制終了せざるを得なくなった。
  • その後、sudo apt-get install -f をかけた。
  • synapticからいらないパッケージを削除。
  • emacs関係を入れ直した。使えるのはemacs22 emacs23 emacs-snapshot かな。
  • emacsのフォントまわりがまた変更されているみたいだ。おかげでまた再設定。
  • dmesg でみると、i801_smbus: probe of 0000:00:1f.3 failed with error -16 と出てる。
    カーネル2.6.31のリグレッション エラーらしい。おかげでCPUの温度が取得出来ない。
  • icewm は特になにもしなくても問題なし。自前でパッケージ作る必要がなくなったようだ。
  • mlterm はまた256色対応patchを当てなければorz


 暫時追加予定。
 とりあえず問題は sensors で温度やファンの回転数が取得出来ないのが問題かな。mrtg でグラフ化しているので。まあサーバーというわけでもないので単に自己満足のグラフ化なのでいいですけど・・・

 しばらく様子を見て、問題がなければ、/ をext4でフォーマットしなおしてみようかなと思います。やっぱり最大のメリットはext4ですからね。/home はext3のままでいきますw


●2009/11/24 追記:
 i801チップがエラーになるのは、カーネルオプションで acpi=off にすることで回避出来た。当座はこれでいくか。
 / をext4 にした。そのうち書く予定。