dmenuの見た目を変更

suckless-toolsに入っている、ちょー小型ランチャのdmenuの見た目を変える。
xmonad+ubuntu14.04の環境では、.Xdefaultsにdmenu.hogehogeで設定変更が効かなかったので、スクリプトから起こすことにした。

$ update-alternatives --display dmenu
dmenu - auto mode
  link currently points to /usr/bin/dmenu.default
/usr/bin/dmenu.default - priority 100
/usr/bin/dmenu.xft - priority 50
Current 'best' version is '/usr/bin/dmenu.default'.

man dmenuでオプションを調べて、例えばこんなのを作る。

/usr/bin/dmenu.xft -fn Ricty -nb '#c0c0c0' -nf black -sb navy -sf white

実行属性をつけて、テキトーなとこに置く。/usr/local/bin/dmenu.shとか。
で、dmenuで呼ばれるように設定する。

$ sudo update-alternatives --install /usr/bin/dmenu dmenu /usr/bin/dmenu.default 10
$ sudo udpate-alternatives --install /usr/bin/dmenu dmenu /usr/local/bin/dmenu.sh 100

リンクを貼らずに、今優先度高いdmenu.defaultを優先度下げる方法が分からんかったので、上書きすることにした。

xmonadでmodキーを右Altのみにする

modキーはXの中で共通の設定っぽい。

現在の設定の確認
$ xmodmap
xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_R (0x6c),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3        
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)
modキーのマップで、右Altだけのグループを作る
上の出力の場合、~/.Xmodmap を

remove Mod1 = Alt_R
add Mod3 = Alt_R

とし、~/.xprofile あたりで

xmodmap .Xmodmap
xmonadのmodMaskを設定する
xmonad.hsのxmonadに渡すコンフィグのところを

 , modMask = mod3Mask

とか。
外で変数に代入している場合は、そこで指定。

言わずもがな、modキーを使うのがあらゆるアプリの中でxmonadだけ、というわけではないので、他のアプリで使えなくなってもいいキーにした方がいいと思われ。
emacsは、メタキーのないよくあるキーボードを使っていると、Altキーでメタキーの役割を代替していると思うが、modキーの割り当てを変えてもメタキーは働く。
ただし、xmonadでキーバインドしている組み合わせを押した場合は、xmonadにキーを奪われてemacsでは動作しないんで注意。
よーするに、xmodmapでないところでemacsのキーバインドは動作しているっぽいんで、xmonadとキーバインドが被ってなければ使えるっぽいよ。

Webサーバのログを眺めてみよう

この記事を書いた頃は,apacheを使っていたが,今では使っていない.「apache のエラーログを真面目に読んでみた | hadacchi blog
存在しないURLを適当に入れたら出てしまうから書いちゃうけど,このウェブサイトは,nginxを使って運営している.

で,まぁそのログを眺めようという前回に引き続いての企画.
思いも寄らぬエラーが出てたりするので,勉強になると思うよ.

access.log
  • 標準だと,多分/var/log/nginx/access.logあたりだと思う.
    生で見てもいいんだけど,アタックによく使われるphpmyadminあたりへのアクセスをひっかけるため,こんなコマンドでまずはIPとリクエストURL,サーバのレスポンスコード,ユーザエージェントを一覧する.

    # cut -d' ' -f1,7,9,12-  nginx/access.log | grep dmin | less

    そもそも,ここで200になっていたら,phpmyadminのログとか見た方がいいと思う.
    私は使ったことがないから知らない.

  • 次は,そこでひっかかったIPアドレスをひっかけて,他にヤバそうなアクセスを受けていないか確認する.
    # cut -d' ' -f1,7,9,12-  nginx/access.log | grep xxx.xxx.xxx.xxx | less

    そうすると,例えばこんなURLへのリクエストが飛びまくっていたので,この辺りに脆弱性のあるプログラムがあるんだろーなー,とか分かる.

    /w00tw00t.at.blackhats.romanian.anti-sec:)
    /muieblackcat
    /components/com_jinc/classes/graphics/php-ofc-library/ofc_upload_image.php?name=magic.php
    

    ぐぐってみると,1つ目と2つ目はよくひっかかる.
    3つ目は,なんかopen flash chartとかいうのが出てくる.
    あと,明らかにSMTPを狙ったログも出てきた.

    CONNECT 126mx00.mxmail.netease.com:25 HTTP/1.0

    ぐぐってみると,中国語っぽいサイトが出てくる.
    アクセス元IPアドレスをIP-HOST変換かけてドメインでぐぐると,台湾からのアクセスらしいという情報も出てくる.

error.log
基本は,access.logと同じだが,nginxの場合はphpへのアクセスを全てphp-fpmへ流していると,php-fpmからのエラーも全部記録される.
設置していないURLでの*.phpへのアクセスは,別にさばいてログを分けた方がいい…のかな?まだ考え中.
他には,設置をミスった証明書のエラーとかも出てくる.

# grep -v 'No such file or directory' nginx/error.log | less
php-fpm.logとか,unicorn.logとか
phpとかrubyとか使ってると,この辺りもチェックすることになると思う.pythonならuwsgi.logとかかしら.
この辺りを動かしている人は,自分の環境に併せて調べてみてね.

Ubuntuで音を鳴らす

デバイスが認識されているか確認
$ lspci | egrep -i multimedia\|audio
ALSAに認識されているか確認
$ cat /proc/asound/cards
pulse audioになっているか確認
$ aplay -L
pulse audioの出力先の確認
$ pavucontrol

出力装置は使いたいデバイスがミュートになってないことを確認.
設定は内部オーディオが使いたい出力になっていることを確認.

Redmine on Debian がアップデートでごちゃごちゃしたので整理

追記:
最近はrbenv+ruby-buildが流行りらしい.apt-getで入るけど,それで入れたら入れられるrubyは古いものしかなかった.

前提:サーバで動作している rubygems, ruby 系は全部消した上で,autoremove した状態.
それまで動いていた,redmine の環境はいじってない.

ruby
rvmでインストールする.
環境が整っていれば,webにあるように

root# curl -L https://get.rvm.io | bash -s stable

でいいんだけど,最初はうまくいかないので,インストール用のシェルスクリプトを落としてきて何度も実行することになる.

$ wget -L https://get.rvm.io
$ cat index.html | bash -s stable

そうしたら色々と足りないものを入れろと言われる.
RedmineをDebianに導入する - Qiita を見て入れたものは,これら.
make環境が入ってたので,少なめ.

root# apt-get install git
root# apt-get install libssl-dev
root# apt-get install libreadline-gplv2-dev
root# apt-get install libyaml-dev
root# apt-get install curl

んで,もういっかい,

$ cat index.html | bash -s stable

そしたら環境を読み込んでrubyを入れる.

$ source $HOME/.rvm/scripts/rvm
$ rvm install x.x.x # <- 入れたいバージョン

この辺りで,rootになってないことに気付いたけど,$HOME/.rvm 以下にインストールされてたので,いいやと思うことにする.

$ rvm list

として,インストールされたrubyが出てきたらOK.

mysql関連gems
これはスキップできなかった.

$ sudo apt-get install libmysqlclient-dev
$ gem install mysql2
bundler
$ gem install bundler --no-rdoc --no-ri

これでローカルに入るはず.

redmine用のgems
なんか gemset とか使って,環境を切り替えられるらしいんだけど,使わないことにする.

$ cd /path/to/redmine
$ bundle install --without development test postgresql sqlite3 rmagick

なぜか,sqlite3 はインストールされてしまう…

起動スクリプト
source コマンドでスクリプトを読み込めるbashにする.

#!/bin/bash
source /home/username/.rvm/scripts/rvm
cd /path/to/redmine
bundle exec unicorn_rails -D -E production -c config/unicorn.rb

ハードリンクしているファイルを探す

検索パスは適宜変えること.

$ ls -i FNAME | cut -d' ' -f1 | xargs find . -inum

ls –i で inode を表示.
cut –d' ' –f1 でセパレータを ' ' に指定して分割した文字列の1番目を抽出.
find –inum INUM で inode番号 INUM のファイルを検索

debianとかubuntuで日本語表示する時のフォントインストール

とりあえず,今入れてるやつ.

$ dpkg -l 'fonts*' | grep ii | sed -e 's/\s\s*/ /g' | cut -d' ' -f2,5-

の実行結果.

debian
fonts-droid handheld device font with extensive style and language support
fonts-freefont-ttf Freefont Serif, Sans and Mono Truetype fonts
fonts-ipaexfont Japanese OpenType font, IPAexFont (IPAexGothic/Mincho)
fonts-ipaexfont-gothic Japanese OpenType font, IPAexFont (IPAexGothic)
fonts-ipaexfont-mincho Japanese OpenType font, IPAexFont (IPAexMincho)
fonts-ipafont Japanese OpenType font set, IPAfont
fonts-ipafont-gothic Japanese OpenType font set, IPA Gothic font
fonts-ipafont-mincho Japanese OpenType font set, IPA Mincho font
fonts-ipafont-nonfree-jisx0208 Japanese TrueType font, IPAfont (JISX0208)
fonts-ipafont-nonfree-uigothic Japanese TrueType font, IPAfont UI Gothic
fonts-ipamj-mincho Japanese OpenType font, IPAmj Mincho font
fonts-johnsmith-induni OTF fonts with exhaustive set of Roman characters
fonts-junicode Unicode font for medievalists (Latin, IPA and Runic)
fonts-jura monospaced, sans-serif font
fonts-takao Japanese TrueType font set, Takao Fonts
fonts-takao-gothic Japanese TrueType font set, Takao Gothic Fonts
fonts-takao-mincho Japanese TrueType font set, Takao Mincho Fonts
fonts-vlgothic Japanese TrueType font from Vine Linux
ubuntu
fonts-cantarell sans serif font family designed for on-screen readability
fonts-crosextra-caladea Sans-serif font metric-compatible with Cambria font
fonts-dejavu-core Vera font family derivate with additional characters
fonts-horai-umefont Japanese TrueType font, Ume-font
fonts-ipaexfont Japanese OpenType font, IPAexFont (IPAexGothic/Mincho)
fonts-ipaexfont-gothic Japanese OpenType font, IPAexFont (IPAexGothic)
fonts-ipaexfont-mincho Japanese OpenType font, IPAexFont (IPAexMincho)
fonts-ipafont Japanese OpenType font set, IPAfont
fonts-ipafont-gothic Japanese OpenType font set, IPA Gothic font
fonts-ipafont-mincho Japanese OpenType font set, IPA Mincho font
fonts-ipafont-nonfree-jisx0208 Japanese TrueType font, IPAfont (JISX0208)
fonts-ipafont-nonfree-uigothic Japanese TrueType font, IPAfont UI Gothic
fonts-ipamj-mincho Japanese OpenType font, IPAmj Mincho font
fonts-liberation Fonts with the same metrics as Times, Arial and Courier
fonts-opensymbol OpenSymbol TrueType font
fonts-sawarabi-gothic gothic font for Japanese
fonts-sawarabi-mincho Japanese mincho font - Sawarabi Mincho font
fonts-takao Japanese TrueType font set, Takao Fonts
fonts-takao-gothic Japanese TrueType font set, Takao Gothic Fonts
fonts-takao-mincho Japanese TrueType font set, Takao Mincho Fonts
fonts-takao-pgothic Japanese TrueType font set, Takao P Gothic Fonts
fonts-ubuntu-font-family-console Ubuntu Font Family Linux console fonts, sans-serif monospace
fonts-umeplus Japanese TrueType gothic fonts, based on Umefont and M+Font
fonts-vlgothic Japanese TrueType font from Vine Linux

Ubuntu on VMware Player でユニティモード

Ubuntu 標準の Unity というウィンドウマネージャは,VMware playerがユニティモードをサポートしていないらしい.
gnomeとかxfceを入れたら動く.
各々の使用感を少しメモっておく.

gnome3
一時期は重い重いと言われていたが,今は,Unityより軽い気がする.
ウィンドウの最大化,左右最大化ができるのが熱い.
自分でショートカットキーを設定したかどうかは忘れたが,Win+↑,←,→でそれぞれ,最大化,左最大化,右最大化できるように設定可能.
Ctrl+Alt+Tでターミナル起動するショートカットがデフォで入っているのも便利で良い.
細かい設定は,compizconfig-setting-managerを入れる.
イケてないのは,ユニティモードにした時,デスクトップが残ること.ターミナルにフォーカスを移すと,全画面のgnomeデスクトップも後ろに起きてしまい,既存のWindowsの窓は覆わないものの,Windowsのタスクバーを覆う.
ただ,デスクトップが表示されることにより,gnomeバーが表示されるので,最後のウィンドウを閉じた後でもVMにフォーカスを移すことができて,Ctrl+Alt+Tでターミナルを起こせる.
xfce4
昔なつかしのテーマで起きてくる,軽量なウィンドウマネージャ.
ウィンドウの最大化,垂直最大化があるので,左右最大化がない点は垂直最大化で補うしかない.
ウィンドウマネージャ>キーボードショートカット,より設定.
ユニティモードにした時にxfce4のデスクトップは消えてくれるのはいいが,最後のターミナルを閉じた時,ユニティモードを終わらせずにフォーカスを移す手段がない
(追記3/18: VMware playerのウィンドウにフォーカスを移して,左上(私がWindowsボタンを左上に配置しているからかも?)にポインタを移動すればメニュー呼び出せる)
xfce4のツールバーも消えてしまうので,アプリケーションメニューからアプリを起動することができない.
Ctrl+Alt+Tショートカットをターミナルに割り当てるのは,キーボード>アプリケーションショートカットから.ショートカットの設定がWMと分かれているのがちょっとめどい.

ということで,私の使い分けはこんな感じ.

  • VM全画面利用時
    • ウィンドウのサイズをWindows互換で変形させたい時 → gnome3
    • 少しでも軽く動作させたい時 → xfce4
  • ユニティモード利用時
    • アプリケーションバーがないと生きていけない → gnome3
      • Ctrl+Shift+U でアプリケーション呼び出しのメニューが出るので,これでイ㌔
    • デスクトップがVMデスクトップに乗っ取られるのはゆすせないぞ → xfce4

Debian/Ubuntu でロケールを整理

localepurgeというパッケージを入れる方法もあるようなのだけど,手で設定した方が早いので.

$ locale -a # 今のロケールを確認
$ sudo vi /var/lib/locales/supported.d/en # enのトコは適宜かえて.不要な行を削除
$ sudo locale-gen --purge # 作成済のロケールを消しつつ,再生成

ほら,簡単でしょ?

追記
ちなみに使用可能なロケールリストは /usr/share/i18n/SUPPORTED