Skip to content
6月 3 / rakkyoo

拡張子の一括置換(perlワンライナー)

とっても基本的なことなのに,ふと忘れてしまうので,備忘録です.

perlでは,ワンライナーで簡単にいろいろと出来るとのこと.

拡張子「.txt」を「.mkdn」などに変更する場合は,,,

1.置換したいファイルを抽出してみる

1
$ find . *.txt

などとして,置換したいファイルを抽出して,チェックして,,,

2.とりあえず,ファイル名を置換して,表示だけしてみる

いきなり置換をしてみて,コードが間違えていて,大量のファイルが消えてしまったりしたら悲しいので,チェックです.

1
$ find . *.txt | perl -nle '$i = $_; $_ =~ s/\.mkdn$/\.txt/; print "$i -> $_"'

3.ファイル名の一括置換

大丈夫そうなら,一括置換.

1
$ find . *.txt | perl -nle '$i = $_; $_ =~ s/\.mkdn$/\.txt/; rename $i, $_'

最後のprint部をrename文にしただけです.

これくらいのを調べることなくスパスパと書いていけると,いいなって思います.

とっても快適に.

5月 31 / rakkyoo

LWP::Protocol::httpsのインストールでエラー

perlモジュールの「LWP::UserAgent」

を使って,httpsを取得しようとしたのですが,エラーが出て,取得できませんでした.

何でも,,,
https対応については,「LWP::Protocol::https」に分離されたとのこと.

そこで,「LWP::Protocol::https」をインストールしようとしたら,,,

1
$ cpanm --sudo LWP::Protocol::https

とすると,

1
2
3
4
5
6
7
8
9
10
--> Working on LWP::Protocol::https
Fetching http://www.cpan.org/authors/id/G/GA/GAAS/LWP-Protocol-https-6.04.tar.gz ... OK
Configuring LWP-Protocol-https-6.04 ... OK
==> Found dependencies: IO::Socket::SSL
--> Working on IO::Socket::SSL
Fetching http://www.cpan.org/authors/id/S/SU/SULLR/IO-Socket-SSL-1.92.tar.gz ... OK
Configuring IO-Socket-SSL-1.92 ... N/A
! Configure failed for IO-Socket-SSL-1.92. See /Users/rakkyoo/.cpanm/build.log for details.
! Installing the dependencies failed: Module 'IO::Socket::SSL' is not installed
! Bailing out the installation for LWP-Protocol-https-6.04. Retry with --prompt or --force.

と言われて,,,「IO::Socket::SSL」のインストールでつまづいているようす.

そこで,

1
$ cpanm --sudo IO::Socket::SSL

とすると,

1
2
3
4
5
6
--> Working on IO::Socket::SSL
Fetching http://www.cpan.org/authors/id/S/SU/SULLR/IO-Socket-SSL-1.92.tar.gz ... --->  Computing dependencies for boost
--->  Deactivating boost @1.53.0_1+no_single+no_static+python27+universal
OK
Configuring IO-Socket-SSL-1.92 ... N/A
! Configure failed for IO-Socket-SSL-1.92. See /Users/rakkyoo/.cpanm/build.log for details.

と言われて,failedになってしまう.

困ったので,苦しまぎれにいろいろとやってみたのですが,最終的に「IO::Socket::SSL」のバージョンを1.8に下げればできました.

1
$ cpanm --sudo IO::Socket::SSL@1.82

として,無事にインストールもできて,その後,,,

1
$ cpanm --sudo LWP::Protocol::https

とすることで,「https」も取得することができるようになりました.

ひとまず,一安心です.

5月 30 / rakkyoo

cpanmをインストールしてみる

perlで簡単なプログラムの勉強をしてみようかと思い,perlと言えば,豊富なモジュールかなと.cpanmをインストールしました.

インストールはとっても簡単で,

1
2
3
4
5
$ cd ~/
$ mkdir bin
$ cd bin
$ curl -LOk http://xrl.us/cpanm
$ chmod +x cpanm

っとしてから,

1
$ cpanm local::lib

としておくだけ,,,

「List::Util」モジュールを入れたいときは,

1
$ cpanm --sudo List::Util

とするだけで簡単にインストールできました.

とっても簡単で,miyagawaさんに感謝です.

5月 20 / rakkyoo

perlのお勉強

そうとう昔にほんの少しだけ,perlを使って簡単な解析をしていたことがあるのですが,miyagawaさんのpodcatなどを聞いて,興味を持ってしまったので,ちょっぴりお勉強してみようかなと思いたちました.

まず,この本を使って,初めてみることに...

とってもわかりやすくて,面白くて,すいすい進みます♪

かなり序盤からcpanの使いかたが出てくるあたりが,とっても学習意欲をかきたてられます♪

4月 30 / rakkyoo

miyagawaさんのpodcast

miyagawaさんがpodcastを配信しているとのことで,聞いてみたのですが,とっても勉強になります.

毎週たのしみです.

このpodcastから興味を持ったものもたくさんあって,,,

perlを勉強してみようかな?
とか,
Redis便利そう

とか,
日本で「Rdio」

聴けるようになるといいのにな,,,

とか,いろいろと刺激をもらって,とってもいい感じです.

3月 19 / rakkyoo

pdfをページごとにpngファイルに変換

PDFファイルをページごとに画像ファイルに変換(jpegやpng)したいことがままあるのですが,プレビューの標準の機能では1ページごとしかできませんでした.

いろいろと探していたところ,,,

このあたりで,しっかりと検討されていたので,そのまま流用したら簡単にできました.

PDFからJPEGに変換するスクリプト

「pdf2jpeg.sh」などとして保存します.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/bash
 
if [ $# -ne 2 ];then
echo “Usage: $0 target.pdf outfile”
exit
fi
 
TARGET=$1
OUTFILE=$2
 
gs \
-dSAFER \
-dBATCH \
-dNOPAUSE \
-sDEVICE=jpeg \
-r300 \
-dTextAlphaBits=4 \
-dGraphicsAlphaBits=4 \
-dMaxStripSize=8192 \
-sOutputFile=${OUTFILE}_%d.jpg \
${TARGET}

ここで,「-r300」を「-r150」とするなど,数字を変更すると解像度を変更可能です.

あとは,「-sDEVICE」を変更するとpngなどにも変更可能です.

PDFからPNGに変換するスクリプト

「pdf2png.sh」などとして保存します.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/bash
 
if [ $# -ne 2 ];then
echo “Usage: $0 target.pdf outfile”
exit
fi
 
TARGET=$1
OUTFILE=$2
 
gs \
-dSAFER \
-dBATCH \
-dNOPAUSE \
-sDEVICE=png256 \
-r600 \
-dTextAlphaBits=4 \
-dGraphicsAlphaBits=4 \
-dMaxStripSize=8192 \
-sOutputFile=${OUTFILE}_%d.png \
${TARGET}

上記は,「-r600」となっているので,かなり高解像度かと,あとは,-sDEVICEを「png256」として,PNGに変換しています.
そして,「-sOutputFile=${OUTFILE}_%d.png \」として,出力するファイルの拡張子をpngとしています.

使う

使いかたは,

1
$ chmod +x pdf2png.sh

として,実行権限を持たせたあとで,

1
$ pdf2png test.pdf out

っとすると,

1
2
3
4
5
6
7
8
9
10
11
12
13
$ pdf2png.sh test.pdf out                                                                                                                                                [~/training]
GPL Ghostscript 9.05 (2012-02-08)
Copyright (C) 2010 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Processing pages 1 through 8.
Page 1
Page 2
Page 3
Page 4
Page 5
Page 6
Page 7
Page 8

っという感じに,8ページのPDFから8つのpngファイルが出来ました.

ちなみに,これらは「gs」コマンドを使っているので,「ghostscript」が必要です.

とっても快適に.

2月 22 / rakkyoo

iThiefを使ってみる(ターミナルからiTuneを操作する)

仕事に追われている時は,Emacsとターミナルを行き来しています.

iTuneで適当に音楽を聞きながら作業している時に,
「この曲飛ばしたいな〜」っと思うときや,とっさに停止したいときなどあるのですが,そんなときにターミナルから簡単に操作が出来たらいいなって思っていました.

iThiefを使えば簡単に出来るのですね...
インストールなどは,ちょっぴり作業があるのですが,とっても簡単でした.

1.iThiefをダウンロードする

ここからダウンロードします.
私がインストールしたときは,「iThief 1.2.1.zip」でした.

2.解凍する

解凍っていっても,macではzipファイルは何もしなくても解凍できてしまいます.

1
2
$ cd ~/Download
$ open iThief 1.2.1.zip

でもいいくらいに...とっても簡単です.

3.スクリプトファイルをライブラリにコピーする

解凍したディレクトリ内にある「iThief.scpt」を「~/Library/iTunes/Scripts/」にコピーするだけです.
もしも,「/Scripts」が無いときは作ればいいので,,,

1
2
3
$ cd ~/Downloads/iThief 1.2.1
$ mkdir ~/Library/iTunes/Scripts/
$ cp iThief.scpt ~/Library/iTunes/Scripts/

といった感じです.

4.「ithief」をパスの通ったディレクトリにコピーする

パスの通ったディレクトリに「iThief」をコピーします.
パスの通ったディレクトリは,

1
$ echo $PATH

で調べて,適当なディレクトリにコピーすればいいだけです.
例えば,,,「/opt/local/bin」にコピーするならば,,,

1
2
$ cd ~/Downloads/iThief 1.2.1
$ sudo cp ithief /opt/local/bin

以上です.
あとは,使ってみるのみ...
目的だった,今の曲の次(next)にしたい場合は,,,

1
$ ithief n

とすれば,次に移行します...

止めたい(stop)場合は,,,

1
$ ithief s

再生(play)したい場合は,,,

1
$ ithief p


といった感じです.

ヘルプを見ると,,,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ thief help
iThief 1.2.1
 
Use: ithief [command] [option] [value]
 ithief = Without arguments will play or pause iTunes.
Commands:
 (i)nformation = Information about the current track.
 (p)lay = Play.
 (p)lay $$$$ = Play the playlist '$$$$'.
 (pt)rack $$$$ = Play the track $$$$ of the current playlist.
 (pa)use = Pause.
 (n)ext = Next track.
 (pr)evious = Previous track.
 (b)ack = Go to the beginning of the track or go to previous track if already at the start.
 (m)ute = Switch the mute status.
 (m)ute on|off = Set mute on or off.
 (s)top = Stop.
 (q)uit = Quit iTunes.
 (r)ate # = Set rating of current track to the given value [0-5].
 (re)veal = Show current track.
…

80個程度のコマンドがあって,ほんといろいろと出来るみたいです.

とりあえず,「n」「p」「s」だけでも,相当便利です.

ちょっり快適に.

2月 21 / rakkyoo

iPadのバックアップを削除(mac)

気づくと,macの空き容量が極端に少なくなっていることがあります.

おそらくは,バックアップかなぁっと思って,調べてみると,iPadのバックアップファイルで相当圧迫していました.私の環境では,約20GByteも...

SSDの場合は,空き容量が少なくなると,極端に影響を受けるので,迷わず削除です.

バックアップ場所は,

1
~/Library/Application Support/MobileSync/Backup

です.Backupの中にあるディレクトリにバックアップされているので,,,

1
$ rm -r ~/Library/Application Support/MobileSync/Backup/*

でOKです.

これで,一安心です.

2月 18 / rakkyoo

tmuxからアプリケーションを切り換える(emacsなどに)

tmuxからemacsなどのアプリケーションに切り換えたいときに,
「command+tab」
でもいいのですが,特定のアプリケーションに瞬時に飛びだいときがよくありました.(プログラムを組んでいるときなど...)

そこで,「xwit」がmacで使えないか模索して,

↑ ここを参考にしてmakeを試みたのですが,うまくいかず,,,

適当にググっていたら,以下のような投稿を見つけて↓,,,

ベストアンサーではないのですが,「ii3pvy63さん」の回答でapplescriptを使っていたため,これを真似てみたところ,とってもうまくいきました.

以下,方法です.

1. アプリケーション切り換え用ApplesScriptを作成

完全にコピペなのですが,

1
2
3
4
on run argv
	set appname to item 1 of argv
	tell application appname to activate
end run

これを「appswitch.scpt」と保存します.(名前は何でもいいです)

2. コマンドラインで実行する

「appswitch.scpt」が「/users/hoge/appswitch.scpt」にあるときは,

コマンドライン上で,

1
$ osascript /users/hoge/appswitch.scpt emacs

と実行すれば,emacsに飛びます.
emacs以外のアプリケーションも指定すれば,もちろん飛ぶことができます.

3. ショートカットの登録

いちいち,「osascript /users/hoge/appswitch.scpt emacs」と入力していては面倒なので, tmuxのショートカットを登録します.
「~/.tmux.conf」に以下の一行を追加します.

1
bind-key C-j run-shell 'osascript /users/hoge/appswitch.scpt emacs'

そうすると,「プリフィックス + C-j」でemacsに飛びます.
私の場合は,「C-]」がプリフィックスとしているので,「C-] C-j」でemacsに飛びます.
一般的には,,,,「「C-b C-j」でしょうか???

これで,相当快適です.

2月 13 / rakkyoo

tmux でpbcoyを使う

tmux を使っていて,一つはまってしまったのが,「pbcopy」です.

pbcopyは,クリップボードにテキストを流したい時に使います.
「test.txt」の内容をクリップボードにそのままコピーしたい場合は,

1
$ cat test.txt | pbcopy

とパイプでpbcopyに流せばできるのですが,tmux ではできません.

調べてみると,もう解決してくれている方がいらっしゃって,,,

この通りにやれば問題なくpbcopyが使えるようになりました.

以下,備忘録です.

1. tmux-MacOSX-pasteboardのダウンロード

ここから,ダウンロードすればいいのですが,git cloneをターミナルから行なえば簡単にできます.

1
$ git clone https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard.git

とするだけです.

2. makeする

ダウンロードしたディレクトリに移動して,,,

1
2
$ cd tmux-MacOSX-pasteboard
$ make reattach-to-user-namespace

とするだけです.

3. ファイルを「bin」にコピーする

Macport経由でインストールした tmux の場合は,「/opt/local/bin」にコピーすればOKなので,

1
$ sudo cp reattach-to-user-namespace /opt/local/bin

として,コピーするだけです.

4.「~/.tmux.conf」に追記する

「~/.tmux.conf」に以下を追記すれば完了です.

1
set-option -g default-command "reattach-to-user-namespace -l zsh"

以上で無事にpbcopyが使えるようになりました.
また,ちょっぴり快適に.