Basic Werk | Blog | Contact


MEMOMEM

Perl_multi_sort



sort コマンドだと、日本語などのマルチバイト文字を無視してソートしてしまうので、Perl でこんなスクリプトを書いておいて、msort なんかのコマンドとして保存しておくと便利。



#! /usr/bin/perl use warnings; use strict;
my @lines = (); while (<>) { push @lines, $_; }
foreach my $line (sort @lines) { print $line; }


このやり方だと複数のファイルを読み込んだとき、全部をひとつの配列に突っ込んだ上でソートしてる。


#Perl #Shell #sort



SN 2013/07/08 01:04:13

Archives > Perl_multi_sort.html





Perl_get_http_status



Perl で URL の HTTP Status (200 OK とか 404 Not Found とか)を確認する。



#!/usr/bin/perl use strict; use warnings; use LWP; use HTTP::Status;
my $ua = LWP::UserAgent->new();
sub get_http_status { my ($url, $ua) = @_; return unless $url or $ua; my $response = $ua->head($url); my $msg = status_message($response->code); return $msg; }
my @urls = qw( http://basicwerk.com/ http://basicwerk.com/memo.cgi http://basicwerk.com/contact.html http://basicwerk.com/not_found.html);
foreach my $url (@urls) { print "$url\t"; print get_http_status($url, $ua); print "\n"; }
# 出力結果はこんな感じ # http://basicwerk.com/ OK # http://basicwerk.com/memo.cgi OK # http://basicwerk.com/contact.html OK # http://basicwerk.com/not_found.html Not Found


例えばこれを任意の URL を引数に受け取って結果を返す get_http_status.pl のようにするなら、@urls の部分を @ARGV に置き換えて、



#!/usr/bin/perl use strict; use warnings; use LWP; use HTTP::Status;
my $ua = LWP::UserAgent->new();
sub get_http_status { my ($url, $ua) = @_; return unless $url or $ua; my $response = $ua->head($url); my $msg = status_message($response->code); return $msg; }
foreach my $url (@ARGV) { print "$url\t"; print get_http_status($url, $ua); print "\n"; }



$ chmod 0755 get_http_status.pl $ get_http_status.pl http://basicwerk.com/ http://basicwerk.com/not_found.html http://basicwerk.com/ OK http://basicwerk.com/not_found.html Not Found


#Perl #LWP #HTTP::Status



SN 2013/07/06 14:53:09

Archives > Perl_get_http_status.html





Graphviz_make_dot_file_and_svg



Graphviz の練習


dot ファイルの中身:

ファイル名 -> test


graph{ graph [rankdir=RL, ranksep=0.15, overlap=false, size=50.0]; node [fontname="Gill Sans"]; edge [dir=both, arrowhead=none, arrowtail=none]; LAMBDA[URL="http://basicwerk.com/memo.cgi?search=LAMBDA"]; LAT[URL="http://basicwerk.com/memo.cgi?search=LAT"]; LISP[URL="http://basicwerk.com/memo.cgi?search=LISP"]; SCHEME[URL="http://basicwerk.com/memo.cgi?search=SCHEME"]; PERL[URL="http://basicwerk.com/memo.cgi?search=PERL"]; REGEX[URL="http://basicwerk.com/memo.cgi?search=REGEX"]; LAMBDA -- {LAT;LISP;SCHEME;REGEX;PERL}; PERL -- {SCHEME;REGEX}; REGEX -- {LISP;SCHEME;PERL}; }


graph [ ..., size=50.0]; はグラフが大きくなりすぎた時のことを考えて。このサンプルぐらいの大きさなら関係ない。


で、下記のコマンドを実行すると、



$ neato -Tsvg -O test


こんな SVG が生成される。


test LAMBDA LAMBDA LAT LAT LAMBDA--LAT LISP LISP LAMBDA--LISP SCHEME SCHEME LAMBDA--SCHEME PERL PERL LAMBDA--PERL REGEX REGEX LAMBDA--REGEX PERL--SCHEME PERL--REGEX REGEX--LISP REGEX--SCHEME REGEX--PERL


dot ファイルからグラフを生成するコマンドはいろいろあるので、後で試してみる。


circo, dot, fdp, neato, nop, nop1, nop2, osage, patchwork, sfdp, twopi


参考:

Graphviz - 簡単な使い方

http://reddog.s35.xrea.com/wiki/Graphviz.html


Graphvizのneatoでノード間の線の長さを変更する

http://kyle-in-jp.blogspot.jp/2011/03/graphvizneato_26.html


Graphvizのレイアウトについて - だらろぐ

http://r-satsuki.air-nifty.com/blog/2009/04/graphviz-d4e2.html


Graphvizレイアウトサンプル - hp12c

http://melborne.github.io/2013/04/02/graphviz-layouts/


#Graphviz #SVG #Visualizing #HTML



SN 2013/06/30 12:32:30

Archives > Graphviz_make_dot_file_and_svg.html





20130625_ssh_ref



ssh でよく使うコマンド

http://www.leosv.jp/manual/ssh2.html



SN 2013/06/29 18:47:26

Archives > 20130625_ssh_ref.html





Graphviz_reference_site



Graphviz の描画で参考にさせていただいたサイト。


簡単な使い方 - Graphviz

http://reddog.s35.xrea.com/wiki/Graphviz.html


形の一覧

http://homepage3.nifty.com/kaku-chan/graphviz/chapter_010.html


#Graphviz #Visualizing #SVG



SN 2013/06/29 01:19:53

Archives > Graphviz_reference_site.html