シェルスクリプトでハマった件→【募】ステキな回避方法

追記: 解答編を下の方に書きました!!! 追記: お題に不備があったので変更しました>< あとgistに一式置いたので簡単にテストできます!! https://gist.github.com/hirose31/6232206 git clone https://gist.github.com/6232206.git oreno cd oreno ./te…

補助グループ権限もつけてくれるsetuidgidのようなもの

daemontoolsのsetuidgidは補助グループ(supplementary groups)権限をつけてくれないのですが、どうしてもつけたい時もあります。あるはずです。いくつか検討したのでそのメモです。 自分で書く! 結局この方法にしました。 [twitter:@kazuho] さんの setuidg…

How to defend SSL/TLS servers against BEAST, CRIME and BREACH attack for Nginx

The information presented herein is without any guarantees and I’ll take no responsibility if any harm happens to you or your users. If you find any factual problems, please reach out to me([twitter:@hirose31]) immediately and I will fix i…

『詳細UNIXプログラミング』の原書『Advanced Programming in the UNIX Environment』(通称APUE)の3rd Editionが出てました

同僚に「UNIXのfileとかsocketとかsignalとかの勉強(輪講)するのにいい本ないですかねー」ときかれて、自分はスティーブンスの『詳細UNIXプログラミング』読んだけど、もうだいぶ古い(例えば、sigaction(2)について書かれてない)し、リファレンス的に使うな…

setitimer - 本流の処理とは別に定期的に割り込み処理をしたいときに

本流の処理とは別に定期的に割り込み処理をしたいとき、例えば、ログを読みつつ整形して表示しつつ、n秒間にm行以上流れたら通知をするとかです。PerlだとAnyEventのようなイベントドリブンのフレームワークを使いたくなりますが、単純な定期割り込みなら se…

『Perl徹底攻略』と一息にファイルを書き換えるIO-File-AtomicChange

Perl徹底攻略 (WEB+DB PRESS plus)作者: 大沢和宏,cho45(さとう),小林篤,和田裕介,嶋田裕二(xaicron),牧大輔(lestrrat),奥一穂,広木大地,伊藤直也,長野雅広,藤原俊一郎,伊藤智章,まかまか般若波羅蜜,小飼弾,近藤嘉雪,中川勝樹,宮川達彦,tokuhirom,藤吾郎(gfx…

git pullする前にローカルレポジトリにどんな変更が行われるか確認する

git

# ~/.gitconfig [alias] pull-dry-run = !"git fetch origin; B=$(git rev-parse --abbrev-ref HEAD); git diff --stat --summary ${B}..origin/${B}"

RedisのLuaで時間のかかる処理をするとどうなるか?

Redis は基本的にシングルスレッド、イベントドリブンモデルなので、時間のかかるLua スクリプトを実行したらどうなるかというのは想像に難くないのですが確認してみました。Redis は 2.6.14 です。 redis-cli eval 'while true do print("hello") end' 0な…

DNSのネガティブキャッシュの残存時間(TTL)はどのようにして決まるか

dns

結論からいうと、 問い合わせた名前が見つからなかった場合のnxdomain応答は当該ドメインのSOAレコードが返ってきて、ネガティブキャッシュのTTLはその応答(SOA)のTTLになる です。 以下、詳細。nxdomain応答の際のSOAのTTLは、SOAの(TTLではなく)minimumで…

monitor-aws-status - AWSのService Health Dashboardに異変があったらIRCで通知してくれるヤツ

AWSで障害が起こったらナルハヤで知りたいよねってことで、AWSのService Health Dashboard http://status.aws.amazon.com/ はRSSフィードを提供してるので、それを定期的にチェックしてIRCに通知してくれるスクリプトを AnyEvent で書きました。(要ikachan) …

Apacheでreverse proxyするときに、受けのパスに応じて異なるタイムアウト値を設定する方法

Apacheでreverse proxyするときに、バックエンドは同じなんだけど受けるパスに応じて別なタイムアウト値を設定しようとしてハマったのでそのメモです。以下、Apache 2.2.22 でのお話です。2.4でどうなってるか、どなたかご存知でしたら教えてください>< ま…

死んでもプロセスを上げ直さないdaemontoolsのrunファイル

追記 2013-05-30 window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = id; js.src = "https://platform.twitter.com/widget…

unix domain socketでファイル記述子をやりとりするソケットプーリングを書いてみた

unix domain socket経由でプロセス間でファイル記述子のやりとりができるので、コネクションをプーリングして、unix domain socket経由で別プロセスに貸し出すスクリプトを試しに書いてみました。 https://github.com/hirose31/socket-pooling poold.pl は起…

How to prevent premature hsplit issue for EOL Perls

Dear EOL Perl (5.8, 5.10, 5.12) users, Devel::PatchPerl 0.86 was released yesterday.Now Devel::PatchPerl applies patch to fix CVE-2013-1667 against EOL Perls (5.8.8, 5.8.9, 5.10.1, 5.12.5).I suppose we will be able to get fatpacked patchpe…

p

use Data::Dumper; $Data::Dumper::Indent = 1; $Data::Dumper::Deepcopy = 1; $Data::Dumper::Sortkeys = 1; $Data::Dumper::Terse = 1; sub p(@) { my $d = Dumper(\@_); $d =~ s/\\x{([0-9a-z]+)}/chr(hex($1))/ge; print $d; } my %very_complex_data = …

ChromeでへんてこなポートにHTTPで繋ぎたい

起動時に --explicitly-allowed-ports オプションでへんてこなポート番号を指定すれば繋げるようになります。複数ポート指定したい場合はカンマ区切りです。自分はQuickSilver(betaが取れて1.0が出ましたね http://blog.qsapp.com/post/46268365849/quicksil…

クライアントにはdefault-character-setを指定したいけどmysqlbinlogには怒られたくない

my.cnfには[group]というオプショングループが書けて、グループ毎に設定ができます。オプショングループには特殊な[client]というのがあります。 [client]オプショングループは、すべてのクライアントプログラム(mysqldは除く)によって解読されます。これに…

大文字小文字を同一視して補完したい!!

キャメルケースなファイル、ディレクトリに囲まれている人は、シェルやエディタのパス名補完時に大文字小文字を同一視すると捗ります。とりあえずbashとemacsだけ。他は募集中です!! Shell bash .inputrc に set completion-ignore-case on zsh zstyle ':c…

続・プロセス間の期限付き排他ロック

プロセス間の期限付き排他ロック - (ひ)メモ というのを書いたのですが、id:fumiyas さんに欠陥の指摘を、id:viverさん(VIVERなつい…)に実装案をもらったので実装してみました!!! 引き続き、以下の件は募集しております それ○○でできるよ!! IPC::Lock::…

プロセス間の期限付き排他ロック

追記 2013-03-04 [twitter:@dankogai] さんにも言及されてました>< 404 Blog Not Found:perl - soloで任意のコマンドを期限付きで排他実行する 追記 2013-03-01 つづきを書きました。 続・プロセス間の期限付き排他ロック - (ひ)メモ 追記 2013-02-27 コメ…

Re: UNIX Command Idioms

Re: [twitter:@riywo]'s UNIX Command Idioms ps auxwwwwwww number of "w" depends on my mood in that day :D ps auxwwwwwwwww -L netstat -tna / -una / -tnl / -tnap tar xvf tar zxvf / jxvf / Jxvf are boring trailing slash in rsync rsync -av file…

WEB+DB PRESS Vol.73にRedisの特集記事を書きました

WEB+DB PRESS Vol.73にRedisの特集記事を書きました。2/23発売なので、もう書店に並んでいると思います。 http://gihyo.jp/magazine/wdpress/archive/2013/vol73 WEB+DB PRESS Vol.73作者: 設樂洋爾,白土慧,はまちや2,大和田純,松田明,後藤大輔,ひろせまさあ…

AWS Command Line Interface (aws-cli)をつかってみた

昨日行われた「AWSでサービスを動かす 〜クラウドの中のサービスはAWSをどう使っているのか〜 « クックパッド開発者ブログ」で、「AWS Command Line Interface (aws-cli)をつかってみた」というタイトルでLTしてきました。 Introduction of aws-cli from Mas…

感情に訴えかけるログ、 Log::Minimal::Emotional !!!!

某所で 人間の脳には人の顔を識別するための特別な神経回路が最初から組み込まれていて、人の顔の違いを見分けたりというのが、他の図形よりも格段に高速に行えるようになっています。ということで、ログメッセージに顔文字を入れてみたら、なにこれすごいヽ…

ファイル名でソートする

#!/bin/bash sort_by_filename() { awk -F'/' '{print $NF" "$0}' | sort -k1 | cut -d' ' -f2 } produce_filepath_list() { cat <

Text::LBSV

勢いで Text::LBSV という perl モジュールを書いたけど、ただ bell を split してコロンで split するだけなのでわざわざこんな駄モジュールを使うまでもない、という・・・。 use Text::LBSV; use Time::HiRes qw(sleep); my @curry = qw(mouyan bon hause ja…

aws-cliのラッパーモジュールを作りました - AWS::CLIWrapper

先日公開されたaws-cliのPerlのラッパーモジュールを作りました。 https://metacpan.org/module/AWS::CLIWrapper https://github.com/hirose31/AWS-CLIWrapper PerlでAWS EC2のAPIを叩くにはNet::Amazon::EC2が便利です。一昔前に比べると多くのAPIに対応し…

perlのデバッグビルド

perlの配布物の中にあるINSTALLの"Building a debugging perl"セクションにある通り、-DDEBUGGING=ナニガシを指定すればよい。 http://perl5.git.perl.org/perl.git/blob_plain/HEAD:/INSTALL 指定する値によって、 "perl internal debugging code"とデバッ…

packageごとのメモリ使用量(と増分)を確認できる Plack::Middleware::MemoryUsage

packageごとのメモリ使用量とリクエストを処理する前後の増分を確認できるPlack::Middlewareを作りました。時間が経つとぶくぶく太るプロセスがいるときに、犯人特定の助けになると思います。 https://github.com/hirose31/Plack-Middleware-MemoryUsage 要…

check_mysql_queryで範囲指定 - InnoDBの空き容量を監視する

なぎおす!な!なんとなく〜 ぎ!ギャグでごまかそうと〜 お!おっさんどもが〜 す!すべってゆく〜ハイ!ガショー!! Nagios (nagios-plugins) にcheck_mysql_queryというのがあります。 http://nagiosplugins.org/man/check_mysql_query MySQLに任意のク…