opamp_sando's blog

クソザコが割りと適当なことを書くためにある備忘録です。あとたまに普通の日記も書きます

LaTeXで表番号変更

表番号はどんどん勝手にカウントされていくので、本題の内容とは関係ない表(共同実験者の一覧とか?)を入れると全体の表番号がずれる。
解決するには\setcounterを使えば良いようだ。

\setcounter{table}{0}

とこんな具合。表番号はこの値+1になり、表が挿入されるたびに勝手に1増えるので、無視したい表の直後に "次の表の番号"-1 を上のsetcounterで設定してあげるよ良いようだ。

%省略%
\maketitle

\begin{table}[H]
  \begin{center}
    \captionsetup{labelformat=empty,labelsep=none} %ちなみにこうすると表番号を非表示にできる
    \caption{共同実験者} 
     %省略%
   \end{center}
\end{table}
\setcounter{table}{0}

% 中略 %

\begin{table}[H]
  % このtableは本来「表2」になるが、setcounter+1すなわち「表1」になる
\end{table}

参考資料

http://kmuto.jp/latex/node56.html

maximaで対数グラフ

グラフを片対数とか両対数グラフにする方法のメモ。

plot2d(f(x),[x,0,1],[gnuplot_preamble, "set logscale y 10"])

と、例えばこんな具合に、gnuplotのオプションに"logscale"を設定する。

logscale y 10

で、y軸を10底の対数グラフにするという意味。両対数にしたければ

logscale xy 10

で良い。

参考資料

http://okwave.jp/qa/q4559588.html

StumpWMのモードラインにバッテリー残量を表示

StumpWMのモードラインにバッテリー残量を表示した。

方法

acpiコマンドの出力をラップして電池残量と残り時間を表示する。

$ acpi -bi

とすると、例えば

Battery 0: Discharging, 88%, 07:58:01 remaining
Battery 0: design capacity 7150 mAh, last full capacity 6580 mAh = 92%

このような出力が得られる。

このうちⅠ行目の88%とその後ろの07:58:01を抜き出してモードラインに表示する。

battery.lisp

ということで次のような感じのコードを書いた。

(defpackage stumpwm-helper-battery
  (:use cl)
  (:nicknames battery)
  (:export battery-level battery-level-string))
(in-package :stumpwm-helper-battery)

(defun battery-exists (acpi-output)
  (if (ppcre:scan-to-strings "No support" acpi-output)
      nil
      t))

;; No support for device type: power_supply
(defun battery-level ()
  (let ((raw-string (stumpwm:run-shell-command "acpi -bi | head -n 1 | tr -d '\\n'" t)))
    (if (battery-exists raw-string)
        (let ((split-raw-string (ppcre:split " " raw-string)))
          (values
           (fourth split-raw-string)
           (fifth split-raw-string)))
        (values nil "No Battery"))))

(defun battery-level-string ()
  (multiple-value-bind (percent remaining)
      (battery-level)
    (if (null percent)
        "No Battery"
        (let ((state (if (null remaining)
                        "Full"
                        remaining)))
          (concatenate 'string percent " " state)))))

これを~/.stumpwm.d/init.lispからloadして使えるようにする。

以下の関数が使えるようになる。

(battery:battery-level-string)

これで、mode-lineに表示するためのバッテリー残量表示の文字列が得られるので、これをmode-lineに設定する。

(setf *screen-mode-line-format*
      (list
       "<%n>"
       "%v"
       " | Vol: "
       '(:eval (run-shell-command "amixer get Master | egrep -m 1 -o '[0-9]+%' | tr -d '\\n'" t))
       '(:eval (run-shell-command "amixer get Master | egrep -m 1 -o '\\[(on)\\]|\\[(off)\\]' | tr -d '\\n'" t))
       " | "
       '(:eval (battery:battery-level-string))
       " | "
       '(:eval (run-shell-command "LANG=c date +'%I:%M%p %a %d %b %Y' | tr -d '\\n'" t))
       ))

現在のうちのmode-lineの設定はこんな感じ。 これでmode-lineにバッテリー残量が表示される(ばず)

S式をファイルに書き出す

Emacs LispでS式をファイルに書きだしたり読みだしたりするメモ。

ファイル書き出しはf.elを使うと楽。使わないなら一旦一時バッファに書き出してファイルに書き出すしかない(f.elも内部ではきっとそうしてるんだろうが)。

(require 'f)
(defvar data '("hello" "emacs" "lisp"))

;; 書き出し
(f-write-text (format "%S" data) 'utf-8 file-path)

;; 読み出し
(setf data (read (f-read-text file-path 'utf-8)))

こんな感じ。

参考URL

http://d.hatena.ne.jp/sleepy_yoshi/20110322/p1

主にS式を文字列に変換する方法などを参考にしました。ありがとうございました。

多分ローカル向けのredmineのdockerファイルを作ってみた

ということで家庭内のLAN環境で使ったり自分のマシンを使ってローカルに動かしたりする用のredmineのdockerfileを作ってみた。

https://github.com/opamp/MyDockerfiles/tree/master/simple-redmine

とりあえず外部には1080番ポートで公開するようにしている。コンテナを作ったら

$ docker run -p 1080:1080 -v /srv/redmine/db:/srv/redmine/db opamp/simple-redmine 

という具合ではしらせれば多分良いはず・・・ DBはSQLiteを使うようにしているのでコンテナ内の/srv/redmine/dbをホストと共有させればデータを持続させれる。

私の個人利用のために作ってみたのでローカル向けでhttpsすら設定してないのでLAN内アクセス程度にとどめておいた方が無難。リバースプロキシとかすれば無理やりhttpsにできるかもしれないが... (多分普通に設定を書いたほうが早い気もする)
というかそういう場合は普通にちゃんとしたredmineのコンテナがあるからそれを使ったほうが良いような。

これはアクセスするのはせいぜい自分一人程度だからわざわざMariaDBとかPostgresのコンテナ立ててまでやる必要無いよなぁとか思って作ったやつなので。

Linuxで日本語キーボードとUSキーボードを併用するとき

最近試しにUSキーボードを買ってみた。で、私が主にLinuxを使っているのはMacBookAir上のArchLinuxなので、MacBookAir本体の日本語キーボードとUSB接続のUSキーボードを併用できたらと思った次第。あ、コンソールじゃなくてXorgでの設定方法。

OSXなら新しいキーボードを接続したら左右Shiftの隣のキーを押すとキーマップをある程度自動判別して設定してくれる便利ツールがあるのだが、Linuxの場合はどうやら複数のキーマップをxorgに設定できるようだ。

私は設定ファイル/etc/X11/xorg.conf.d/10-keyboard.confにキーマップ設定を書いているので、この設定ファイルをいじって次のようにした。

Section "InputClass"
    Identifier  "Keyboard Defaults"
    MatchIsKeyboard "yes"
    Option  "XkbLayout" "jp,us"
    Option  "XkbModel" "jp106,pc104"
    Option "XkbOptions" "grp:alt_shift_toggle"
EndSection

キーマップ切り替えはShift+Altでできるようになっている。これでデフォルトでは日本語配置で、Shift+AltでUS配列にトグル切り替えできるようになる。

参考

https://wiki.archlinux.org/index.php/Keyboard_configuration_in_Xorg

shellyを導入

ArchLinuxでshellyを導入する。
Webに書いてあるとおりに導入すればインストールできる。

REPLに入って

* (ql:quickload :shelly)
* (shelly:install)

で~/.shellyにインストールされる。私はzshを使っているのでシェルの設定ファイルに以下を追加

SHELLY_HOME=/home/username/.shelly; [ -s "$SHELLY_HOME/lib/shelly/init.sh" ] && zsh $SHELLY_HOME/lib/shelly/init.sh
$ shly

これでshlyコマンドが動作するが、sbcl not foundのように処理系のバイナリを見つけきれない場合がある(PATHが通っているにもかかわらず)

その場合は~/.shelly/configを編集する。SBCLなら

SHELLY_LISP_IMPL="sbcl"
SHELLY_LISP_BINARY="/usr/bin/sbcl"

のようにSHELLY_LISP_BINARYに絶対PATHを記載すると良い。
ArchLinuxならpacmansbclを入れると/usr/binに入るので上のようにすれば良い。

これで例えばcl-projectなら

$  shly -Lcl-project cl-project:make-project `pwd`/project --author hogepiyo --email hogepiyo@mail.example.com

こんな具合に呼び出せる。

Common Lisp... もう少し環境面はなんとかならないものか。

Firefox ブラウザ無料ダウンロード