平衡点


2007/12/11

_ 広告非表示

adv って advertising だよね. advection じゃないよね.

adblock で adv を全部弾くと, advection(移流) を描いた絵が全部非表示...

今度から移流の絵は advect-NNN とか名前つけておこう.

_ YaTeX で \C-l すると色が...

font-latex.el を使用しているわけですが, Unicode の曖昧文字幅問題のおかげで, mlterm+screen+emacs -nw の時には \C-l する癖がついてます.

で, yatex-mode で \C-l すると, 折角 font-latex.el で色付けしていたのに, 色が落ちてしまいます. どなたか設定してるんだろう, とか思っていた訳ですけれど.

;; C-lで再度 font-lock
(defun font-lock-recenter ()
  (interactive)
  (font-lock-fontify-buffer)
  (recenter))
(add-hook 'yatex-mode-hook
          '(lambda()
             (progn
               (define-key YaTeX-mode-map "\C-l" 'font-lock-recenter)
               )))

で解決.


2009/12/11

_ ADS へ検索かけて BibTeX のエントリを持ってくる

何故か Ruby::Mechanize を使って 10 分スクリプトでっちあげた.API 公開されてないのかな…ありそうなモンだけれど.

というわけで.

#!/usr/bin/env ruby
require 'mechanize'
require 'kconv'

agent = WWW::Mechanize.new
ads_search = agent.get("http://adsabs.harvard.edu/basic_search.html")
search_form = ads_search.forms[0]
search_form['qsearch'] = "#{ARGV.join(" ")}"
redirect_page = agent.submit(search_form)
results = redirect_page.forms[1].checkboxes_with(:name => 'bibcode')
results_number = results.size
if results_number == 0
  puts "no search result retry!"
elsif results_number > 1
  puts "search result too many, retry!"
  puts "========================="
  i = 0
  results.each do |result|
    puts i.to_s + " " + result.value
    i += 1
  end
else
  result = agent.get(redirect_page.links[5].href)
  bibtex_query = 
    result.link_with(:text => "Bibtex entry for this abstract").href
  bibtex = agent.get(bibtex_query).content.to_s
  puts bibtex.split("\n")[5..-1].join("\n")
end

単にBasic Searchの form に ARGV.join(" ") を入れて, 検索結果が一つだったら BibTeX のエントリを標準出力へ, というもんです.本当はちょっとだけ対話的に, 例えば検索結果の一覧を表示して,必要なモンだけ選んで BibTeX のエントリをまとめて取得する, とかやりたかったけれど, 時間ないんで…

そのうち弄るかもしれない. とりあえず放置((あ, そういえば NAOJ って ADS のミラー止めたのかな)). 誰か弄りませんか? id:msll さんとか.

結果は以下の通り

$ ADSquery2bib.rb Busse 1970 thermal instabillity
 @ARTICLE{1970JFM....44..441B,
    author = {{Busse}, F.~H.},
     title = "{Thermal instabilities in rapidly rotating systems.}",
   journal = {Journal of Fluid Mechanics},
      year = 1970,
    volume = 44,
     pages = {441-460},
       doi = {10.1017/S0022112070001921},
    adsurl = {http://adsabs.harvard.edu/abs/1970JFM....44..441B},
   adsnote = {Provided by the SAO/NASA Astrophysics Data System}
  }

_ 今日は予備審らしい

いやぁ, 準備が追いつきません. 間に合うのかなコレ…

札幌に来ています. とりあえず日曜日に帰ることにして, 土曜は札幌を堪能しようかと思っています.

うー…. 寝れん…


2012/12/11

_ live-build による Live システムの作成

始めに

この記事は Debian/Ubuntu JP Advent Calendar 2012 : ATND の 12/11(月) の記事です. 昨日の分も私が書きましたが, 「.gem から .deb へ 〜 gem2deb の紹介」でした.

live-build は, Debian/Ubuntu のライブシステム(DVD, USB, PXEブートなどで動く, インストールせずに使う環境)を作るための bash スクリプト群です. version 1.x 系列では live-helper という名前でしたが, version 2.x になってから live-build と名前が変わっています.

live-build に関しては, のがたさん(@nogajun)による Debian Liveメモ とか, 同じくのがたさんの 第113回 Debian Liveのlive-helperを使ってUbuntu Liveを作成する:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社 にかなりまとまっているので, 特に記事にすることも無いかと思っていましたが, 最近の live-build は version 3.x になっていて, パラメータやディレクトリ構成が大きく変わっています.

以下では, これをごく簡単に紹介します(きっとのがたさんが補完してくれる, はず).

live-build を導入する

先ずお手元に 作りたい CPU ターゲット の wheezy/sid 環境を用意して, live-build の最新版をインストールしましょう. モノは bash スクリプト群なので, 依存関係で困る事は(多分)無いと思います.

$ git clone git://live.debian.net/git/live-build.git
$ cd live-build
$ debuild -rfakeroot -uc -us
...
$ cd ..
$ sudo dpkg -i live-build_3.0*_all.deb

これで live-build が導入できたと思います.

live-build でライブイメージを作成する.

i386 環境で作業すると i386 のイメージが, amd64 環境で作業すると amd64 のイメージが作成されます. 環境が用意できない場合には KVM or QEMU で仮想環境を作ると良いと思います (ちなみに, 以前 VirtualBox 上で試したら, 途中で転びました. なんでかな?. KVM/QEMU では, 特に問題無くイメージが作成できました).

作業ディレクトリ(以下では ~/work としています)に移動して

$ lb config
$ sudo -s
# lb build

と唱えましょう. ちょっと時間がかかりますが, 最小限の live イメージが作成されます(イメージをライブ用に squashfs に圧縮するのにそれなりに時間がかかります).

カスタマイズ

$ man lb config

で沢山オプションが表示されます. これを参考に, いろいろ弄って行きます.

auto ディレクトリ

先ず, auto というディレクトリを作成し, その下に config という sh スクリプトを置き, 実行権限を与えます. このファイルが lb config の際に実行されます. config の中で常に有効にする設定をしておくと, いろいろ捗るでしょう.

同様に build とか clean などを置くと, lb build や, lb clean の際に, それらの sh スクリプトが実行されます.

config ディレクトリ

ライブシステムの設定は config ディレクトリで行ないます. 例えば

  • config/package-lists というディレクトリを作成し,
  • 拡張子 .chroot で適当なファイル名を作成し,
  • そのファイル内に, インストールしておきたいパッケージ名を書いておく

なんてすると, lb build 時に必要なパッケージを導入してくれたりします.

具体例

例えば

なんか如何でしょうか?

これに付け加えて,

  • lb config 実行時に,

    $ lb config \
      --bootappend-live \
        "boot=live config locales=ja_JP.UTF-8 keyboard-layouts=jp

とする(もしくは auto/config に書いておく).

  • config/package-lists/japanese-desktop.chroot なんてファイルを用意して 中身に

    task-japanese
    task-japanese-desktop

なんて書いておく

  • lb build でイメージ作成

なんてすると, 日本語 Gnome/Xfce 環境のライブシステムができます.

まとめ

live-build は開発が活発で, 結構頻繁に機能が追加/変更/削除されています (互換性は残して欲しい, とか思ったりもしたりして). 興味のある方は Debian Live Project の ML を眺めたり, ここで公開されている Debian Live Manual なんかを参照して下さい.

live-installer を有効にしてから バリバリに気合入れてカスタマイズしてライブを作成しておくと, 自分好みの素敵環境を一瞬で構築できるインストーラに早変りしたりします (複数台の計算機に install する際にかなり重宝しました).

そんなこんなで.

明日は...誰?


2014/12/11

_ send unblock request: cmigemo

昨日(migemo-elのエラー)の続き.

とりあえず upload して unblock request を送ってみた:


2017/12/11

_ apt-cacher-ng: Apt のキャッシュプロキシ

この記事は Debian/Ubuntu Advent Calendar 2017 の 2017/11 の記事です. 前日は @fumiyasu によるホームディレクトリをログインパスワードで暗号化でした.

「何か書きます」とか宣言しておきながら, 何をネタにするか結局決まらず... というわけで, 今までちゃんと書いてなかったネタとしてapt-cacher-ngについてまとめておきます.

apt-cacher-ng とは?

apt-cacher-ngは 「apt でパッケージを取得してインストール」する際に, 取得してくる Release ファイルや deb ファイルをキャッシュするための サーバプログラムです.

ユーザとして1台の計算機に Debian or Ubuntu を導入して作業している場合にはあまり恩恵に預かれないかもしれませんが,

  • 複数台の計算機を管理している
  • パッケージの作成作業を行なう

といった場合には, 頻繁に同じパッケージを取得する事になるため, この手のキャッシュプロキシは大変便利です.

私は試していませんが, 設定ファイルを見ると apt だけではなく Cygwin, Arch, Fedora なんかのキャッシュプロキシとしても動作できる様です.

導入と最低限の設定

apt を使いましょう

% sudo apt install apt-cacher-ng

これで

"http://localhost:3142"
において キャッシュプロキシが動作しています. /etc/apt/apt.conf.d/99proxy あたりに

Acquire::http::Proxy "http://127.0.0.1:3142";

とでも書いておくと良いでしょう. これによって

apt ⇔ apt-cacher-ng ⇔ 外部リポジトリ

といった塩梅で動作します. apt-getなんかを実行すると モリモリとキャッシュにデータが貯まっていきます.

外部からのアクセス

他の計算機においても /etc/apt/apt.conf.d/99proxy あたりに

Acquire::http::Proxy "http://<apt-cacher-ng を動かしている計算機のIP>:3142";

を指定することでLAN内のキャッシュプロキシとして動作させることができます. 「数10〜数100台の stable を管理する」なんて用途の時には パッケージのキャッシュは非常に有効です.

メンテナンス

簡易なメンテナンス用の Web サービスが

http://localhost:3142

で機能していますので, これにアクセスしてみましょう. 利用状況やキャッシュの開放といった作業が可能です.

Tips

Tips というわけでもないですけれど 最近ハマった幾つかの事柄等.

外部リポジトリを HTTPS で公開している所がありますよね. こいう所へのアクセスに cache proxy を介する際には CONNECT request にする必要がありますので, 以下を設定します

PassThroughPattern: ^(deb\.nodesource\.com|desktop-download\.mendeley\.com):443$

といった塩梅です. ところで mendeley のリポジトリはいつ復活させるんでしょうかね.

まとめ

apt-cacher-ng を紹介しました.

個人で一台の Debian/Ubuntu 環境を利用している場合には あまり恩恵には預かれませんが,

  • 複数台の計算機を管理している
  • パッケージの作成作業を行なう

といった場合には, キャッシュとして動作するので非常に有用です.

また, 手元でコンテナや VM を複数上げる際(LXC, vagrantとか)にも有用だと期待されます (とか言いつつ, あんまり vagrant は使ってないんですけれど. LXC には有効です. オススメ).

そんなこんなで.

明日は @yohgami の予定です.