Reederのショートカット

マウスはつかったらダメっておばあちゃんがいってたので、ショートカットを調べました。

表示の操作

  • Command + 1: ★
  • Command + 2: 未読
  • Command + 3: すべて

アイテム/フォルダの移動

  • K: 前のフィード
  • J: 後のフィード
  • Shift+K: ブラウザのまま前のフィード
  • Shift+J: ブラウザのまま次のフィード
  • Shift+P: 前のフォルダへ移動
  • Shift+N: 次のフォルダへ移動

perl例外のあれこれ(warn, die, carp, croak)

perlにおいて例外を発生するやり方は、普通、warnとかdieとかですが、コール元の情報が表示されないため、例外が発生して事が分かっても、どのように呼ばれて例外が発生したのか分かりづらい事が多々あります。(たぶん)

そんなこんなで、より解析しやすいcarp/croakをちょっと調べてみした。

test_warn();
sub test_warn {
warn 'warn_message';
}
# warn_message at exception.pl line 13.

test_die();
sub test_die {
die 'die_message';
}
# die_message at exception.pl line 18.

use Carp;
test_carp();
sub test_carp {
carp 'carp_message';
}
#carp_message at exception.pl line 23
# main::test_carp() called at exception.pl line 21

use Carp;
test_croak();
sub test_croak {
croak 'croak_message';
}
# croak_message at exception.pl line 28
# main::test_croak() called at exception.pl line 26


といったように、呼び出し元の情報まで表示してくれます。

port fowardの設定

地震の影響で、自宅作業社が多くなり、エンジニアはssh + port fowardで繋げられうようになりました。

もちろん自分はなんのことかわからないので、調べまくりの実験しまくりの手探りでなんとか解決しました。

踏み台サーバ      : ssh_host01
社内プロキシサーバ: proxy_host01:8080
メールサーバ : mail_pop_01:110
送信サーバ : mail_smtp_01:25
IRC : irc_host_01:6778


開いてるポートを使うため60000移行を使うことに。

webサーバ    localhost:8080  => proxy_host01:8080 に接続
メールサーバ localhost:60110 => mail_pop_01:110 に接続
送信サーバ localhost:60025 => mail_smtp_01:25 に接続
IRC localhost:60001 => irc_host_01:6778 に接続


上記のような転送をやってもらうための設定
ssh ssh_host01 ¥
-L 8080:proxy_host01:8080 ¥
-L 60110:mail_pop_01:110 ¥
-L 60025:mail_smtp_01:25 ¥
-L 60001:irc_host_01:6778


こちらを起動して、それぞれの接続先を変更すれば完成

ちなみにportの最大値は65535なので、ircのportは60001を使ってます
あと、ホスト名がわからない場合は、IPアドレスで設定しないとつながらないよ。

Mac Excelショートカットの設定/確認

Mac用のExcelでは何かとショートカットが違います。
「ツール」=>「ショートカットのユーザ設定...」で確認の変更ができる。

よく使うもの





'control' + 'u'セルの編集
'option' + '→'
'option' + '-'
シート切り替え
'control' + 'shift' + '+'
'control' + 'shift' + '-'
ズームイン/ズームアウト(個人設定)
'option' + 'command' + 'enter'セル内の改行

AnyEventを使ってみる

AnyEventをつかってみる
本当に初歩的なところなので、今後いい感じに追加していきます。

use strict;
use warnings;

use AnyEvent::Impl::Perl;
use AnyEvent;

print "start\n";
my $cv = AnyEvent->condvar;
my $io; $io = AnyEvent->io(
fh => \*STDIN, # 標準入力
poll => 'r', # 読み取り専用?
cb => sub {
print "cb start\n";
chomp(my $input = );
undef $io;
$cv->send($input); # send(....)を実行すると、recvの戻り値が入る
},
);

print "recv wait\n";
if (defined(my $input = $cv->recv)) { # sendの引数が戻り値として受け取れる
print "got: [$input]\n";
}
print "end\n";


ひとまず実行
perl sample.pl
start
recv wait
・・・ここで待たされる。
hogehoge[Enter] <= 入力する
cb start
got: [hogehoge]
end


ポイントはrecvを呼び出すと、sendの引数を取得するために、待ちます。




次はAnyEvent->timer

use strict;
use warnings;

use AnyEvent::Impl::Perl;
use AnyEvent;

print "start\n";
my $cv = AnyEvent->condvar;
my $timer; $timer = AnyEvent->timer(
after => 3, # 3秒後に
interval => 1, # 1秒間隔
cb => sub {
print "cb start\n";
$cv->send;
},
);

print "wait\n";
$cv->recv; # 待機

print "end\n";


実行

perl any_event_timer.pl
start
wait
(3秒後)
end


after: 指定した時間後に実行
interval: 1秒間隔
ただし繰り返し処理させる場合、別のAnyEvent->condvar;でsleepする必要あり?

jQuery Timersの使い方

jQuery Timersを使用して1秒置きに処理を実行したい場合などなど

繰り返し処理
$( 対象オブジェクト ).everyTime( ミリ秒数 , '関数名'(省略可) , 関数命令 );


繰り返し停止処理
$( 対象オブジェクト ).stopTime( '関数名' , 関数命令(省略可) );


一回のみ時限処理
$( 対象オブジェクト ).oneTime( ミリ秒数 , '関数名'(省略可) , 関数命令 );

DataStoreの辛いところ

# DataStoreの限界 FacebookやインスタグラムのようなSNSで、投稿、公開範囲、お気に入りなどの機能をDataStoreで実現しようとするとどうしても辛くなる。 ## DataStoreで実現可能? - users - id - feeds - i...