Get me outta here!

blog.delphinus.dev

vim とか Perl な話題とか……

Menu

Skip to content
  • プライバシーポリシー
  • perl
  • Vim
  • 映画
  • 投稿一覧
  • はじめに

Author Archives

delphinus

ネットワーク上のコンピュータのMACアドレスを知る

2010年2月7日 by delphinus

備忘録。使っているNAS(Buffalo LS-WXL/R1)に対してDHCPで固定アドレスを割り振ろうと思ったが、こいつは本体の管理画面からMACアドレスを知る方法がない。どうしよう?

と言うときに使うコマンドはこれ。

$ arp -a

これだけで既知のMACアドレスを出力してくれる。知りたい機器に事前にpingしておいて、このコマンドを叩けばよい。

実行例
100207-0001.png

もっとも、後で調べると、Macアドレスのことは管理ソフトNASNavigator2を使うことで可能だった。CDとして製品に付属するのはWindows版のみだが、Mac版が製品本体の中、/info/Japanese/NASNavi2/Macintoshディレクトリに保存されている。

100207-0002.png

Unix系OS Leave a comment

【画像付き】Mac mini HDD 換装(その3〜NASからOSをリストア〜)

2010年2月6日 by delphinus

前々回、前回と続いてきたがこれで最後。工作の時間は終わって後はOSのリストアだ。

OSのリストア

IMG_0967.JPG

画像右の黒い物体はBUFFALOのNAS。こいつにバックアップしておいたTime Machineのイメージからリストアを行う。

〈リンクステーション〉 RAID機能搭載 ネットワーク対応HDD | LS-WXL/R1シリーズ
http://buffalo.jp/products/catalog/storage/ls-wxl_r1/

Mac miniの電源を入れ、すぐさまDVDドライブに”Mac OS X install DISC”を挿入した。

Continue reading →

Mac Leave a comment

【画像付き】Mac mini HDD 換装(その2〜SSD取り付け〜)

2010年2月6日 by delphinus

前回はドライブユニットを取り外すところまでやった。実際のHDD換装作業に移ろう。

DVDドライブの取り外し 〜 HDDをSSDへ換装

IMG_0899.jpg

DVDドライブは6本のネジで留められている。次の画像の通りだ。

Continue reading →

Mac Leave a comment

【画像付き】Mac mini HDD 換装(その1〜ドライブユニットの取り外し〜)

2010年2月6日 by delphinus

Mac mini(320GB MC239J/A 2009年秋モデル)を購入して一ヶ月ほどになるが、SSDを使っているWindows機と比べるとどうにも動きが鈍い。ググってみるとHDD換装については已に試した人がたくさんおるようなので僕も挑戦してみた。最新のMac miniで換装からOSリストアまで画像付きで載せている記事がなかったのでここに纏めてみる。

ドライブユニットの取り外し

IMG_0867.jpg

今回換装するSSD(画像右)はHANA Micronの128GBモデル。そんなに高級なモデルではないが、Windows機で使っているOCZ Vertexと似たようなスペックなのを選んだ。

34nmフラッシュ+INDILINXコントローラのSSDがHANA Micronから発売、性能にも変化?
http://akiba-pc.watch.impress.co.jp/hotline/20091128/etc_hana.html

画像下に鎮座ましますのはお好み焼きに使うへら・・。100円ショップで購入。これをどう使うかというと……。

Continue reading →

Mac Leave a comment

Vimの正規表現 “\v”, “\zs”, “\ze”

2010年2月5日 by delphinus

Vimの小ネタ。

Vimで正規表現を使うとき、Perlなんかと比べると制御文字を書くときにバックスラッシュを多用するため見にくく感じていた。たとえば、

「abc」と「def」に挟まれた文字列

を表す正規表現というと、Perlなら

/(?<=abc).+(?=def)/

で済むところ、Vimだと

\(abc\)\@<=.\+\(def\)\@=

となるのでめんどくせえ〜とか思ってたわけだ。

とんでもない間違いでした。

便利な制御文字があったんだね。こんなときに使うのが「\v」。これを使うと英数字以外が全て制御文字と見なされるので、表記が格段にシンプルになる。同じ例だと、

\v(abc)@<=.+(def)@=

こちらが圧倒的に見易い。ちゃんとヘルプ読まないとダメだねorz

そしてさらに便利なのが「\zs」と「\ze」。これは正規表現の「始まり」と「終わり」を表す。同じ例を表すと、

abc\zs.\+\zedef

ちょっと見にくいかもしれないけど意味は同じだ。これを使えばPerlの正規表現では対応していない、「可変長の後読み」を実現できる。例えば、

<p>Hello!</p>
<script>alert( "Hello!" )</script>
<script type="javascript">alert( "Hello!" )</script>

このHTMLから<script>タグの中身だけを取ろうとして、

/(?<=<script.*>).+(?=<\/script>)/

とやってもうまく行かない。

$ perl -e '/(?<=<script.*>).+(?=<\/script>)/'
Variable length lookbehind not implemented in regex m/(?<=<script.*>).+(?=</script>)/ at -e line 1.

「可変長の後読みは未実装です」エラーになってしまう。しかしVimだと楽ちん。

<script.*>\zs.\+\ze<\/script>

100205-0002.png

これを知って検索・置換がずいぶん早くなった。

Vim 1 Comment

最新版GNU Screenで縦分割(その3〜captionとhardstatusについて〜)

2010年2月4日 by delphinus

これはその1〜導入編〜、その2〜設定ファイルについて〜の続きです。

defbce on
attrcolor b ".I"
term xterm-256color
termcapinfo xterm-256color 'is=^[r^[m^[2J^[H^[?7h^[?1;4;6l'
defscrollback 1000
altscreen on
escape ^Zz
vbell off
bell_msg "Bell in window %^G"
autodetach on
shell $SHELL
startup_message off
logfile "$HOME/.screen/screen-%Y%m%d-%n.log"
deflog on
shelltitle '$ |bash'
caption always "%{= Rk} %?%F%{b kr}%? %?%h%:%t (screen #%n)%? %{-}"
hardstatus alwayslastline "%{= Gk} %-Lw%40L>%{b kg} %n %t %{-}%+Lw%-040=%{b km} %l %{.b} %Y/%m/%d %C:%s %A "
sorendition "= Rk"

では一番難解なcaptionとhardstatusの解説だ。そもそもcaptionとhardstatusの違いは何か。

いろいろ理屈はあるが、これだけ覚えておけばいい1。

caption     => 各ウィンドウに一つずつ
hardstatus  => 全体で一つだけ

まずはcaptionから説明しよう。

Continue reading →

screen Unix系OS 3 Comments

DATEDIF関数の怪(Excel)

2010年2月3日 by delphinus

Excelについて、「二つの日付を比較して、その間の月数を数える関数ってない?」という質問があった。ググってみると「DATEDIF関数」というのがそれらしい。

Excel(エクセル)基本講座:日付の関数
http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu/today.htm#datedif

しかしこの関数、バグだらけである。年数と月数を調べるのは問題ないようだが、日数がひどい。試してみよう。

2010-02-03_125918.png

2008年12月15日から2010年2月2日までの月数及び日数を求める。結果は”13ヶ月と18日”になるはずだ。月数が”13″なのは問題ないとして、日数がむちゃくちゃである。

なぜこんなひどい実装になっているかについては、この10年の間にいろいろ考察がなされているみたい。(Excel2002の頃からバグりまくりらしい)

kt関数Ref:ktPeriodYMD
http://www.h3.dion.ne.jp/~sakatsu/ktfunc_ref0206.htm#DATEDIF

それでもMicrosoftは直さないんだから、もうこの関数は使うなってことなのだろう。正確に日付計算したいならVBでも使ってDateTimeオブジェクトに変換しろってことなんかね。

おまけ。
Perlで計算すると全く問題なかった。(当たり前だ)

#!/usr/bin/perl
use Perl6::Say;
use DateTime;
my $a2 = DateTime->new( year => 2008, month => 12, day => 15 );
my $b2 = DateTime->new( year => 2010, month => 2, day => 2 );
say( ( $b2 - $a2 )->delta_months . " months" );
say( ( $b2 - $a2 )->delta_days . " days" );
# 実行結果
# 13 months
# 18 days
Excel perl Leave a comment

Post navigation

← Older posts
Newer posts →

アカウントでログイン

最近の投稿

  • Moves API のための Perl モジュールを作りました 2013年9月11日
  • ロボットは僕に言った「君は人間じゃない」 2013年7月30日
  • 人は一生に何回キーを叩くんだろう? 2013年7月29日
  • 【Vim】カラースキームを切り替えるたった一つのさえたやりかた 2013年7月23日
  • 【WordPress】「前の記事」「次の記事」のリンクにサムネイルを付ける 2013年7月17日
  • 【Powerline】Git branch セグメントが Mac OS X で動かない? 2013年7月16日
  • 【Vim】80桁教信者の憂鬱 その2(ホットキーでトグル、他) 2013年6月24日
  • 【vim】80桁教信者の憂鬱 2013年6月20日
  • 【MacVim】メニューバーでアイコンが見えない! 2013年6月19日
  • 【unite.vim】set_substitute_pattern は衰退しました(その2) 2013年6月18日
Proudly powered by WordPress | Theme: Something Fishy by Caroline Moore.
blog.delphinus.dev
Proudly powered by WordPress | Theme: Something Fishy by Caroline Moore.