~/.ssh/configにいろいろ設定すると、ssh hostnameが楽になる。
今の環境はssh dev_host_01の名前解決ができない。
$vim ~/.ssh/config
Host dev_host_01
HostName XXX.XXX.XXX.XXX
これで、IPを入力しなくてもなんとかなると。
そして他にもUserなど指定したりもできるみたい。
Host dev_host_01
HostName XXX.XXX.XXX.XXX
User user_name
Perlの正規表現で記号を削除
別に正規表現でなくても良いのだが、文字列から記号を削除したい場合に、どのようなアプローチがあるのか、検討してみた。
便利そうなUnicodeのブロックを使ってみる
¥p{Latin}で数字となるが、
ローマ数字なども含んでいるので使えない
sub nomalize {
my $str = shift;
$str =~ s/[^0-90-9a-zA-Za-zA-Z\p{Han}\p{Katakana}\p{Hiragana}]//g;
return $str;
}
便利そうなUnicodeのブロックを使ってみる
¥p{Latin}で数字となるが、
ローマ数字なども含んでいるので使えない
sub nomalize {
my $str = shift;
$str =~ s/[^0-90-9a-zA-Za-zA-Z\p{Han}\p{Katakana}\p{Hiragana}]//g;
return $str;
}
[File::Basename]を調べる
use strict;
use warnings;
use File::Basename;
use Test::More;
my $path = 't/file/dir/sample.t';
subtest 'fileparse' => sub {
my ($filename, $directory, $suffix) = fileparse($path);
is $filename => 'sample.t', 'filename';
is $directory => 't/file/dir/', 'directory';
is $suffix => undef, 'suffix';
};
subtest 'fileparse suffixes' => sub {
my ($filename, $directory, $suffix) = fileparse($path, qw/.t/);
is $filename => 'sample', 'filename';
is $directory => 't/file/dir/', 'directory';
is $suffix => '.t', 'suffix';
};
subtest 'basename' => sub {
my $filename = basename($path);
is $filename => 'sample.t', 'filename';
};
subtest 'basename suffix' => sub {
my $filename = basename($path, qw/.t/);
is $filename => 'sample', 'filename';
};
subtest 'fileparse suffiexs2' => sub {
my $prefix_name = join '', (fileparse($path, qw/.t/))[1,0];
is $prefix_name => 't/file/dir/sample';
};
done_testing;
patchコマンド
svnやgitを使ってると、特に意識することはないけど、
仕組みというか概念というか、とりあえず使ってみた。
diff -u 1.pl 2.pl
--- 1.pl 2011-06-29 23:49:54.000000000 +0900
+++ 2.pl 2011-06-29 23:50:10.000000000 +0900
@@ -1,3 +1,3 @@
1
-2
+22
3
diff -c 1.txt 2.txt
*** 1.pl 2011-06-29 23:49:54.000000000 +0900
--- 2.pl 2011-06-29 23:50:10.000000000 +0900
***************
*** 1,3 ****
1
! 2
3
--- 1,3 ----
1
! 22
3
-uを付けるとunified 出力形式を用いる。
-cを付けるとcontext 出力形式を用いる。
まぁどちらでもよいけど、-uを選択。
それをsample.patchとして保存。
基本的な使い方
patch <sample.patch
オプション
-b : バックアップ -B だとプレフィックスを指定できる
-R : パッチは新旧のファイルが反転しているとみなす。
--dry-run : パ ッチを当てたときの結果を表示
-f : 問い合わせ無しの実行
-i [pach file] : パッチをファイルから読み込む - を指定すると標準入力(デフォルト)
-p[num] : 適用するパスのプレフィックスを[num]個削除する
--verbose : 詳細情報表示
仕組みというか概念というか、とりあえず使ってみた。
diff -u 1.pl 2.pl
--- 1.pl 2011-06-29 23:49:54.000000000 +0900
+++ 2.pl 2011-06-29 23:50:10.000000000 +0900
@@ -1,3 +1,3 @@
1
-2
+22
3
diff -c 1.txt 2.txt
*** 1.pl 2011-06-29 23:49:54.000000000 +0900
--- 2.pl 2011-06-29 23:50:10.000000000 +0900
***************
*** 1,3 ****
1
! 2
3
--- 1,3 ----
1
! 22
3
-uを付けるとunified 出力形式を用いる。
-cを付けるとcontext 出力形式を用いる。
まぁどちらでもよいけど、-uを選択。
それをsample.patchとして保存。
基本的な使い方
patch <sample.patch
オプション
-b : バックアップ -B だとプレフィックスを指定できる
-R : パッチは新旧のファイルが反転しているとみなす。
--dry-run : パ ッチを当てたときの結果を表示
-f : 問い合わせ無しの実行
-i [pach file] : パッチをファイルから読み込む - を指定すると標準入力(デフォルト)
-p[num] : 適用するパスのプレフィックスを[num]個削除する
--verbose : 詳細情報表示
異なるサーバ間のファイルをマージする
開発環境が複数あると、マージなんかが大変になるわけで、比較的簡単にやりたい。
出来ればGUIでやりたいのだが、WindowsのWinMergeみたいな便利なものがなく、
ひとまず p4Mergeでチャレンジ
1.まずマウントしてローカルファイルのアクセスをできるように
mount -w -t smbfs //user:pass@dev1/path /mnt/dev1/path/
mount -w -t smbfs //user:pass@dev2/path /mnt/dev2/path/
2.p4mergeを呼び出す
p4merge ベースファイル 左側のファイル 右側のファイル マージ結果ファイル
p4merge /mnt/dev1/hrk_ys/lib/Foo.pm /mnt/dev1/hrk_ys/lib/Foo.pm /mnt/dev2/hrk_ys/lib/Foo.pm /mnt/dev2/hrk_ys/lib/Foo.pm
ベースファイルはsvn HEADとかから取得するといんだろうなー。
※Automatorを使うと便利 テキスト入力から取得してコマンドを作るみたいな
※dev_host1 dev_host2 lib/Foo.pm => p4merge ...
ひとまずこれでGUIでなんとか出来る。
出来ればGUIでやりたいのだが、WindowsのWinMergeみたいな便利なものがなく、
ひとまず p4Mergeでチャレンジ
1.まずマウントしてローカルファイルのアクセスをできるように
mount -w -t smbfs //user:pass@dev1/path /mnt/dev1/path/
mount -w -t smbfs //user:pass@dev2/path /mnt/dev2/path/
2.p4mergeを呼び出す
p4merge ベースファイル 左側のファイル 右側のファイル マージ結果ファイル
p4merge /mnt/dev1/hrk_ys/lib/Foo.pm /mnt/dev1/hrk_ys/lib/Foo.pm /mnt/dev2/hrk_ys/lib/Foo.pm /mnt/dev2/hrk_ys/lib/Foo.pm
ベースファイルはsvn HEADとかから取得するといんだろうなー。
※Automatorを使うと便利 テキスト入力から取得してコマンドを作るみたいな
※dev_host1 dev_host2 lib/Foo.pm => p4merge ...
ひとまずこれでGUIでなんとか出来る。
Perlのeachには気をつけろ
perlのeachではまったので、メモを。
$ perl -v
This is perl, v5.8.5 built for i386-linux-thread-multi
サンプルソース
結果
not ok 1
ちなみに、Sortkeys(0)をすると、okとなります。
同様にnote explain $hashでもnot okになります。
explain は内部的にData::Dumperを呼んでいるため。
そして、何が原因か探ろうとおもったのですが、
中身がData::Dumper::Dumpex(実物はxs)なので断念。
たぶん、eachでつかうitaratorがリセットされてないだけだと思いますが。。
こんな感じです。
ついついexplainしたくなりますが、気をつけます。
$ perl -v
This is perl, v5.8.5 built for i386-linux-thread-multi
サンプルソース
use strict;
use Data::Dumper;
use Test::More;
my $hash = +{ a => 1 };
#note explain $hash;
Data::Dumper->new( [$hash] )->Sortkeys(1)->Dump;
ok each %{ $hash };
結果
not ok 1
ちなみに、Sortkeys(0)をすると、okとなります。
同様にnote explain $hashでもnot okになります。
explain は内部的にData::Dumperを呼んでいるため。
そして、何が原因か探ろうとおもったのですが、
中身がData::Dumper::Dumpex(実物はxs)なので断念。
たぶん、eachでつかうitaratorがリセットされてないだけだと思いますが。。
こんな感じです。
use strict;
use Test::More;
my $hash = +{ a => 1 };
#note explain $hash;
#Data::Dumper->new( [$hash] )->Sortkeys(1)->Dump;
while (my $k = each %{ $hash } ) {
last
}
ok each %{ $hash };
ついついexplainしたくなりますが、気をつけます。
登録:
投稿 (Atom)
ReactNativeでAndroid対応する話
前提 ReactNativeでiOS版のアプリをリリースしていて、Android版をリリースする話 トラブルシューティング Build.VERSION_CODES.Q が存在しないエラー compileSdkVersionを29以上にすると解決 メモリー足りないエラー Execu...
-
公式のドキュメント https://docs.mitmproxy.org/stable/ # install ## mac ``` $ brew install mitmproxy ``` ## iPhone ### 証明書 セキュアな通信を傍受するために、プロファイ...
-
ナビゲーションコントローラを滑らかに遷移させる ナビゲーションコントローラの画面遷移をカスタマイズする 主要なクラス UIViewControllerAnimatedTransitioning 具体的なアニメーションを定義するクラス。実行時間やviewの動きな...
-
前提 ReactNativeでiOS版のアプリをリリースしていて、Android版をリリースする話 トラブルシューティング Build.VERSION_CODES.Q が存在しないエラー compileSdkVersionを29以上にすると解決 メモリー足りないエラー Execu...