最近買ったもの 2020年6月

洗濯ばさみ。
普通のと違って、ピンチの先がコムで丸くなっていて、挟んだ後が服につかない。数年前に6個入りを買って、今回10個入を買い足した。

トラスコ中山のVN型コンテナ。2段、3段に重ねて使えるコンテナ。簡単に配置替えできるのがいい。すでに1個以上所有していたが、3個買い足した。

ニトリの水切りかご。洗った食器の水切りをしておくかご。ステンレス製のものを長く使ってきたけれど、さすがに汚れてきたので買い替えた。

未分類 / AnyEvent-HTTP

AnyEvent-HTTP

#!/usr/bin/env perl
use strict;
use warnings;
use AnyEvent::HTTP;
my $cv = AnyEvent->condvar;
sub done {
    print $_[1]->{server}, "\n";
    $cv->end;
}
my @url = ("http://www.microsoft.com/","http://www.apple.com/","http://www.google.co.jp/");
$cv->begin; http_get($url[0], \&done);
$cv->begin; http_get($url[1], \&done);
$cv->begin; http_get($url[2], \&done);
$cv->recv;
Apache/2.2.3 (Oracle)
gws
Microsoft-IIS/7.5

参考

AnyEvent-HTTP

未分類 / ackコマンド

ackコマンド

インストール

  • CPANモジュールとしてインストールするか、シングルファイル(Perlスクリプトファイル)をダウンロードしてパスを通すか。
  • beyondgrep.com/install/

ファイル構成

.
|-- 1.csv
|-- 1.pl
|-- 1.rb
|-- dir_a
|   |-- 1.csv
|   `-- 1.pl
`-- dir_b
    `-- 1.pl

2 directories, 6 files

文字列を検索する

$ ack 'perl' .
1.pl
1:#!/usr/bin/perl

dir_b/1.pl
1:#!/usr/bin/perl

dir_a/1.pl
1:#!/usr/bin/perl

すべてのファイルタイプを対象にする

$ ack -a perl .
1.pl
1:#!/usr/bin/perl

1.csv
1:perl,ruby,bash

dir_b/1.pl
1:#!/usr/bin/perl

dir_a/1.pl
1:#!/usr/bin/perl

dir_a/1.csv
1:perl,ruby,bash

ファイルタイプを指定する

$ ack --type=ruby usr .
1.rb
1:#!/usr/bin/ruby

ファイルタイプを除外指定する

$ ack --type=noruby usr
1.pl
1:#!/usr/bin/perl

dir_b/1.pl
1:#!/usr/bin/perl

dir_a/1.pl
1:#!/usr/bin/perl

ファイルパスに条件を付ける

$ ack -G _a perl .
dir_a/1.pl
1:#!/usr/bin/perl

マッチしたファイルのファイル名のみを表示する

$ ack -l perl .
1.pl
dir_b/1.pl
dir_a/1.pl

マッチしなかったファイルのファイル名のみを表示する

$ ack -L perl .
1.rb

ファイル名一覧の区切りを(改行ではなく)ヌル文字にする

ack -l --print0 perl . | xargs -0 rm -rf {}

参考

search.cpan.org/perldoc?ack

未分類 / AUTOLOAD

AUTOLOAD

Fooパッケージにないbaz()メソッドを呼ぶと、代わりにAUTOLOAD()が呼ばれる。AUTOLOAD()ではメソッド名は$AUTOLOADで参照できる。

#!/usr/bin/env perl

use strict;
use warnings;
use 5.012;

package Foo;

use Data::Dumper ;

sub new {
    my $class = shift;
    bless {@_}, $class;
}

sub foo {
    my $self = shift;
    say "foo()";
}

sub AUTOLOAD {
    my (@arg) = @_;
    our $AUTOLOAD;
    say 'METHOD: ' . $AUTOLOAD;
    say 'ARGS: ' . Dumper \@arg;
}

package main;

my $f = Foo->new;

$f->foo();

$f->baz(1,2,3);

↑を実行すると、結果は↓。

foo()
METHOD: Foo::baz
ARGS: $VAR1 = [
          bless( {}, 'Foo' ),
          1,
          2,
          3
        ];

METHOD: Foo::DESTROY
ARGS: $VAR1 = [
          bless( {}, 'Foo' )
        ];

未分類 / プロパティの更新だけコミットする

プロパティの更新だけコミットする

前提

  • あるディレクトリにsvn:ignoreを設定する。
  • 現在以下のような状態にあるが、ここからsvn:ignoreの修正だけをコミットしたい。
$ svn propset svn:ignore 'README.txt' .
$ svn st
M      .
M       1.txt
?       2.txt
M       A/3.txt

方法

  • オプション–depth emptyを付加してコミットする。
  • すると、他の修正(1.txtや3.txt)はコミットされsvn:ignoreだけコミットされる。
$ svn commit --depth empty . -m 'Set svn:ignore property'
$ svn st
M       1.txt
?       2.txt
M       A/3.txt

参考

stackoverflow.com/questions/2224814/commit-only-property-changes-on-root-of-repo-not-files

未分類 / PHP 1

ファイル構成

[php]
.
|– 1.csv
|– 1.pl
|– 1.rb
|– dir_a
| |– 1.csv
| -- 1.pl— dir_b
`– 1.pl

2 directories, 6 files

[/php]

文字列を検索する

$ ack 'perl' .
1.pl
1:#!/usr/bin/perl

dir_b/1.pl
1:#!/usr/bin/perl

dir_a/1.pl
1:#!/usr/bin/perl

すべてのファイルタイプを対象にする

$ ack -a perl .
1.pl
1:#!/usr/bin/perl

1.csv
1:perl,ruby,bash

dir_b/1.pl
1:#!/usr/bin/perl

dir_a/1.pl
1:#!/usr/bin/perl

dir_a/1.csv
1:perl,ruby,bash

ファイルタイプを指定する

$ ack --type=ruby usr .
1.rb
1:#!/usr/bin/ruby

ファイルタイプを除外指定する

$ ack --type=noruby usr
1.pl
1:#!/usr/bin/perl

dir_b/1.pl
1:#!/usr/bin/perl

dir_a/1.pl
1:#!/usr/bin/perl

ファイルパスに条件を付ける

$ ack -G _a perl .
dir_a/1.pl
1:#!/usr/bin/perl

マッチしたファイルのファイル名のみを表示する

$ ack -l perl .
1.pl
dir_b/1.pl
dir_a/1.pl

マッチしなかったファイルのファイル名のみを表示する

$ ack -L perl .
1.rb

ファイル名一覧の区切りを(改行ではなく)ヌル文字にする

ack -l --print0 perl . | xargs -0 rm -rf {}

参考

search.cpan.org/perldoc?ack