2011年1月30日日曜日

perl日本語ドキュメント

http://pjp.64p.org/

2011年1月22日土曜日

ctagsを使ってみる

タグファイル(tags)を作ればCtrl+]で飛べる

使い方は
ctags --language-force=perl hoge.pl
こうすれば同じ場所にtagsファイルが作られる

基本的には拡張子で判断してくれるらしいから
--language-forceは不要かも
対応言語は以下のコマンドで出力できる
ctags --list-languages

ちなみにcscopeというC言語専用だけど高機能な解析ツールもあるらしい・・・

参考リンク
http://hp.vector.co.jp/authors/VA025040/ctags/ctags_j.html

Linuxで使える(割と)高機能なエディタ

普段はgvimを使ってるけど長い行を開いたりすると重いので
Leafpad以上でgvim以下のエディタを探してたら
Editraというエディタを発見

スクリーンショットはこちら

特徴は
・マルチプラットフォーム(Windows,Linux,MacOS)
・60以上のプログラミング言語対応のシンタックスハイライト
・タブで使える
・日本語化されている
・軽い
・viモード搭載(環境設定→ドキュメント→コードタブ→「viエミュレーションを有効にする」にチェック

2011年1月17日月曜日

radikoを聞くperlスクリプト書いた

ポイントはforkして指定した時間で落とすこと


#!/usr/bin/perl
################################################
# radiko を聞くスクリプト
# 引数で制御する
#
# ヘルプを表示するにはh
# radiko.pl -h
################################################
use strict;
use warnings;
use Getopt::Std;

my %opt;
getopts("hc:f:t:",\%opt);

if (exists $opt{h}){
print << "HELP";
usage: radiko.pl [-h] [-c channel] [-f outfile] [-t playtime]
-h
 print this message

-c channel
 select play channel
 default: LFR
 * FMT  TOKYO FM
 * FMJ  J-WAVE
 * LFR  nippon housou
 * TBS  TBS radio

-f outfile
 default: /tmp/channel.flv

-t playtime
 default: 1 hour
HELP
exit;
}

my $CHANNEL;
if (exists $opt{c}){
 $CHANNEL=$opt{c};
}
else {
 $CHANNEL="LFR";
}

my $OUTFILE;
if (exists $opt{f}){
 $OUTFILE=$opt{f};
}
else{
 $OUTFILE="/tmp/$CHANNEL.flv";
}

my $PLAYTIME;
if (exists $opt{t}){
 $PLAYTIME=$opt{t} * 60 * 60;
}
else{
 $PLAYTIME= 1 * 60 * 60;
}

unlink $OUTFILE if -e $OUTFILE;

my $com = << "CMD";
rtmpdump -v -e -s 'http://radiko.jp/player/swf/player_2.0.1.00.swf' \\
-r 'rtmpe://radiko.smartstream.ne.jp/$CHANNEL/_defInst_' \\
--playpath 'simul-stream?ucid=1dbab2acb98174787146465a40ba9eba' \\
-p 'http://radiko.jp/player/player.html' \\
-f 'WIN 10,1,102,64' \\
-o $OUTFILE
CMD

print "${com}\nplaytime=$PLAYTIME\n";

my $pid=fork;
die $! unless defined $pid;
print $pid;

if ($pid){
 sleep $PLAYTIME;
 kill 9,$pid;
}
else{
 exec "$com";
}

2011年1月16日日曜日

デビルメイクライ3攻略リンク集

丁寧な攻略チャートがある
http://dmc-labo.secret.jp/DMC-Labo.html

武器アクション

スタイルアクション

http://www.geocities.jp/no0sloter/devil/index.html

MISSION 13のパズル解答

スペシャルエディションの裏技
 タイトル画面でL1L2R1R2を押したまま十字キー上と左を押しながら左スティックを右下に入れる

バジールのコシュチューム一覧
・普通のバジール
・上半身軽装のバジール
・魔人化無制限のバジール(幻影剣は減る)
・ネロアンジェロに返信できるバジール
・ネロアンジェロ無制限のバジール(幻影剣も無制限)

iptablesまとめ

よく忘れるのでメモ

ルールの表示

例)natテーブルのルールを表示
因みにfilterテーブルなら省略可
iptables -t nat -L

ルールの追加

例)80番ポートへのアクセスを遮断
iptables -A OUTPUT -p tcp --dport 80 -j DROP

ルールの削除

iptables -D INPUT 3

パケット転送

80番ポートのアドレスを192.168.0.4:4000へ転送
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.0.4:4000

参考リンク
iptablesで設定したルールを再起動後も反映したい
iptablesによるフィルタ設定

任意のIPを作って送れるソフト

sendip

debianならリポジトリにある

例)memo.txtの内容をtcpで送る
sendip -d memo.txt -p ipv4 -p tcp 192.168.0.3

参考リンク
http://masy.families.jp/diary/?200010c

2011年1月15日土曜日

rtmpdump試してみた

NHKオンデマンドに挑戦

1.URLを解析
fms0000.nod.ipcasting.jp

2.hostsを変更
今回は192.168.0.4にrtmpsuckを走らせておく
192.168.0.4     fms0000.nod.ipcasting.jp

3.でダウンロード
出来るはずだったが、なんか出来なかったOTZ

因みにこんな方法もあるLinuxならiptablesで転送する
hogeuserをすべてlocalhostへ飛ばす例
iptables -t nat -A OUTPUT -p tcp --dport 1935 -m owner \! --uid-owner hogeuser -j REDIRECT

iptables -t nat -n -L で確認
iptables -t nat -D OUTPUT 1 で削除
参考リンク
http://h.hatena.ne.jp/syouhi/9259273302189983422



気を取り直してradiko録音これはrtmpsuckで一発OK

rtmpdumpならこうかな
#!/bin/bash
rtmpdump -v -e -s 'http://radiko.jp/player/swf/player_2.0.1.00.swf' \
-r 'rtmpe://radiko.smartstream.ne.jp/FMJ/_defInst_' \
--playpath 'simul-stream?ucid=1dbab2acb98174787146465a40ba9eba' \
-p 'http://radiko.jp/player/player.html' \
-f 'WIN 10,1,102,64' \
-o FMJ
FMJの部分を変更すれば他の曲にもなる
FMT・・・TOKYO FM
FMJ・・・J-WAVE
LFR・・・ニッポン放送
TBS・・・TBSラジオ

2011年1月1日土曜日

tmuxを試してみた

tmuxの考え方

セッション・・・複数のウィンドウを持つ固まり
ウィンドウ・・・複数のペインを持つ1画面
ペイン・・・いわゆる操作できる端末

プレフィックスキー

全てプレフィックスキー(デフォルトはC-b)を押した後に入力する

※ $で始まるものはコマンド操作
それ以外はプレフィックスキー後に入力する

セッション操作


hogesessionというセッション名で作成
$ tmux new -s hogesession

セッション選択
:choose-session

セッション一覧を表示
$ tmux ls

hogeセッションにアタッチ
$ tmux a -t hoge

ウィンドウ操作

windowのリネーム
,
※:set-window-option automatic-rename onにするとデフォルトになる

新しいwindowの作成
c

windowの数字選択指定
0~9

windowの数字を変更
.

ウィンドウを8番へ移動
move-window -t 8

ウィンドウ選択
:choose-window

ウィンドウの入れ替え(1と入れ替える)
swap-window -t 1

ペインpane操作


ペインの入れ替え
{
}

pane番号表示
q

レイアウト変更
SPACE

上下左右サイズ変更
+
-
<
>

ペインの入力同期 on/off
:set-window-option synchronize-panes on
:set-window-option synchronize-panes off

ペインを:1ウィンドウから一枚もらってくる
:join-pane -s :1

ペインを:1ウィンドウに移す
:join-pane -dt :1
※:1.3という指定にすればペイン番号3指定

その他操作


コピーバッファの選択
=

コピーバッファを一覧を表示
lsb

コピーバッファの1番をペースト
paste-buffer -b 1

時計表示
t

screenと比べて

  • 画面分割の制御が楽(上下左右のリサイズが楽)
  • 画面表示が崩れない気がする
  • 軽い気がする
  • screenに比べて設定ファイルが分かりやすい気がする 
  • ウィンドウの中に画面分割のペインが紐付いているので管理が楽(分割された画面で画面が変わってしまうこちらはウィンドウの分割状態をそのまま保持できるため)
  • クラサバ志向なので他人がすでにアタッチしているセッションに参加できる(2人で同じ端末をみれる何気にすごい)
  • コピーバッファが何個も持てる


自分の設定

#key
bind s split-window -v
bind v split-window -h
bind j select-pane -D
bind k select-pane -U
bind h select-pane -L
bind l select-pane -R
bind -r < resize-pane -L 1
bind -r > resize-pane -R 1
bind -r - resize-pane -D 1
bind -r + resize-pane -U 1
bind : command-prompt
bind C-i select-pane -t :.+
bind Escape copy-mode
setw -g mode-keys vi
set -g prefix C-a
bind C-a send-prefix

#option
set -g display-time 6000
set -g status-interval 30
set -g mouse-select-pane on

#status line
set -g status-right "#(uptime|cut -d, -f 3 | cut -d: -f 2) %Y/%m/%d (%a) %p %I:%M"
setw -g window-status-format "#I:#W"
setw -g window-status-current-format "#I:#W_#P"
set -g status-bg black
set -g status-fg cyan
set -g status-left-fg black
set -g status-left-bg magenta
set -g status-right-fg black
set -g status-right-bg green
set-window-option -g window-status-current-attr bright,reverse
set-window-option -g window-status-current-bg cyan
set-window-option -g window-status-current-fg black

#window
new -s def -n rss_log "tail.pl /var/log/rss.log"
splitw -h 'cd /var/log ; tailf allevent & tailf samba/log.nmbd &tailf samba/log.smbd & tailf lighttpd/access.log  '
neww


参考リンク

日本語man
WikiNote

Bloogerのドラフト版ダッシュボード

http://draft.blogger.com/home