2013年6月26日水曜日

「手首が疲れない」のはマジで気のせいだった

2,3日前に少し話題になってた,「キーボードの足を折る本当の理由」.

「手首が疲れない」は気のせい!? キーボードに角度を付けるあの小さな足が必要な「本当の理由」 : ライフハッカー[日本版]

僕もてっきり足を出したほうが打ちやすいし疲れないと思って何年間も足を出して使い続けていたが,この記事を読んでから足をたたんだところ,最初こそ違和感を覚えたものの長時間使ってみると確かに今までより疲れなくなった.

肩こりも若干軽減されたように思う.

まったく,思い込みってやつは恐ろしい.

2013年6月25日火曜日

テキストファイルの行頭に行番号を挿入する

最近,授業の課題レポートにソースファイルを挿入することがよくある.
当然LaTeXで作成しているので,ファイルから直接埋め込んでいるのだが,

WM×LI: 【LaTeX】プログラムのソースコードを埋め込む方法.

さらに行番号も表示させたいと思い調べてみた.

しかし,LaTeXのみでそこまで実装するのは難しそうだったので,
視点を変えてソースファイル自体の行頭に行番号を挿入することにした.

(ソースファイルの行頭に番号を挿入してしまうと,当然コンパイルできなくなってしまうので,ソースファイルのコピーに挿入し,それをLaTeXで読み込む)

行番号を表示すると言えば,お馴染みのコマンドcat -nだが,

$ cat -n hoge.txt > hoge.txt

とすると,hoge.txtは空ファイルになってしまうので,teeコマンドを使ってあげると良い.

$ cat -n hoge.txt | tee hoge.txt

さらに,cat -n で行頭に余分なスペースが付いてしまうのを消したいならば

$ cat -n hoge.txt | sed -e 's/^\ *//g' | tee hoge.txt

とすれば良い.

さらに,さらに,行番号を二桁にしたいなら(1を01にする)

$ cat -n hoge.txt | sed -e 's/^\ *//g' \
| sed -e 's/^\([1-9]\)\([^0-9]\)/0\1\2/g' | tee hoge.txt

ここまで来ると,短いソースなら自分で書いたほうが早い気がしてくるけど,勉強だと思ってコマンドを叩く.

2013年6月11日火曜日

Gmailでラベルが付いていないのメールを検索する方法

ググるとよく見つかる方法が

label:(-label1 AND -label2 AND …)

と検索する方法.

しかし僕はラベルの数が50を超えているので,とてもじゃないがそんな方法は取れない.だから半ば諦めていたけど,ついにその方法を発見した.

Gmailでラベルなしメールを検索する方法 - 日記とメモ

これによれば,

has:nouserlabels

と検索すれば良い.しかし,これだと送信済みメールでラベルが付いていないものまでヒットしてしまうので,受信メールでかつラベルがないものは

has:nouserlabels AND -is:sent

と検索すれば良い.

2013年6月5日水曜日

grub rescue が表示されても慌てずに.

ブートローダに関係があるパーティションを削除したりすると,

grub rescue >

などと表示されて慌てふためく.

あらかじめ,Super Grub2 Diskを用意しておけば,それを利用してUbuntuを起動して,grubをインストールすれば良いが,今回はコマンドだけで解決する方法を紹介する.

grub rescue >ls

とすると,

(hd0), (hd0,msdos6), (hd0,msdos5), …

などと表示されるので,今度はさらに詳しくlsしていく
(このとき最後のスラッシュを忘れずに!)

grub rescue >ls (hd0,msdos6)/
grub rescue >ls (hd0,msdos5)/



boot/ が表示されるパーティションを見つけたら,最後につぎのおまじないを実行.

僕の環境では(hd0,msdos6)/でした.

grub rescue >set prefix=(hd0,msdos6)/boot/grub
grub rescue >insmod (hd0,msdos6)/boot/grub/i386-pc/normal.mod
grub rescue >normal

normalを実行するとgrub menuが表示されるので,Ubuntuを起動する.

しかし,このままでは起動するたびにgrub rescue >が現れるので,grubをインストールし直す.

$ sudo grub-install /dev/sda
$ sudo update-grub

/dev/sda のところは自分がインストールしたい場所を選ぶ.
これを間違えるとまたまた大変なことになるので注意.

これで次回以降は通常通り起動する.

これでもう grub rescue を恐れる必要はない.

2013年6月4日火曜日

tarコマンドのオプションはハイフンを付けなくても良いから.

LPICに向けて勉強したおかげでようやく tar コマンドについて理解できてきた.
実用上よく使われるにも関わらず,毎回ググって使い方を調べていたなかなか曲者のコマンド.

とっつきにくい理由は,オプションがたくさんあり,覚えにくい上にオプション無しでは全く無意味のコマンド.であることだと思うが,

初心者が置いて行かれる最大の理由は

オプションにハイフン(-)を付けなくても良い

という点だと思う.

Linux初心者にとって,オプションはハイフンを1つか2つ付けて使うものという固定概念があるのに,こいつはオプションにハイフンを付けなくても良い.

付けなくても良いとわかれば,当然みんな付けない.だからググって出てくるのは

$ tar zxvf hoge.tar.gz

とか

$ tar zcvf piyo.tar.gz piyo

とか.

初心者の声:どっからどこまでコマンドなんだ???

となるのは当然の流れ.(僕だけだったらスミマセン)

そんな訳で tar コマンドが苦手でしたが,一回覚えてしまえば簡単でした.

一応まとめておきます.

1.とりあえずつける
-f or --fileアーカイブのファイル名を指定する
-v or --verbose詳細を表示

2.どの作業をさせるか.
-c or --createアーカイブを作成する
-x or --extractアーカイブを展開する
-t or --listアーカイブの中身を表示する

3.圧縮方法は?
-zgzip形式で圧縮or展開
-jbzip2形式で圧縮or展開

もちろん一部しか取り上げてないけど,基本はこの範囲内で十分だと思う.

それで,ハイフンを付けなくても良いので,zxvf とか zcvf になるというわけ.

fオプションについては下のサイトにわかりやすい解説がありました.
UNIXの部屋 コマンド検索:tar (*BSD/Linux)

以下,引用.
一見、毎回 f オプションを指定する意味がないように思えるが、本来 tar はテープドライブに書き出すコマンドなので、f でアーカイブ名を指定しないとテープドライブのデバイス /dev/rst0 を対象に読み書きしてしまう。

なにはともあれ早くLPIC取得したいです.目標は8月中かな.

2013年6月2日日曜日

特定のサイトへのアクセスを禁止する.

うちの妹がtwitter廃人でどうしようもないので,twitter.comへのアクセスを禁止した.


まずは絶賛twitter廃人中の妹のPCにsshで繋ぐ.

そして,管理者権限で/etc/hostsファイルを開く.

$ sudo vim /etc/hosts

ファイルの一番上に,

127.0.0.1 localhost
127.0.1.1 自分のPCのホスト名

と書かれた部分があるのでその下に

0.0.0.0 twitter.com

を追加して保存する.

試しに

$ ping twitter.com

と打つと,localhostである127.0.0.1から信号が返ってくる.

PING twitter.com (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_req=1 ttl=64 time=0.047 ms
64 bytes from localhost (127.0.0.1): icmp_req=2 ttl=64 time=0.036 ms
64 bytes from localhost (127.0.0.1): icmp_req=3 ttl=64 time=0.036 ms

幸いスマホは持っていないので,これでしばらくは(というか永遠に)つぶやくことはできなくなるだろう.