MySQL 5.5以降のutf8mb4とPerlのDBD::mysqlのmysql_enable_utf8のワナ

結論から言うと、ひろせが望ましいと思う順にこうすればいいんじゃないの?ってのを列挙します。 my.cnfに[libmysqlclient]グループを追加しそこにdefault-character-set = utf8mb4と書き、DBD::mysqlでは mysql_read_default_file=/etc/my.cnf;mysql_read_d…

bashでsplitを書いてみた

空白絡むとどうにも配列で返せなかったんで、裏変数(_split)経由で結果渡すようにしてるのがイマイチ。。。 #!/bin/bash set -u set -e export LANG="C" split() { sep=$1 str=$2 _split=() if [[ $str =~ $sep ]]; then while IFS= read -r e; do _split+…

PerlのDBD::mysqlをlibmysqlclient.aとstatic linkしたい話

static linkするにあたっての動機、諸注意(ハメがあるので必読)は [twitter:@sonots] さんの mysql2 gem を mysql5.6 の libmysqlclient.a と static link したい話 - sonots:blog を参照してください。ここではDBD::mysqlをビルドする際のオプションのみ…

VirtualBoxのスナップショットを簡単に管理できるツールを書きました。GO言語で。

go

VagrantではSahara pluginを使うことで、VMの状態を以前の状態に巻き戻すことができます(sandobx mode)。VMの中でいろいろいじっている際に変更前の状態に戻せるのはとても便利なのですが、Saharaでは戻せるチェックポイントをひとつしか作れません。自分の…

シンボリックリンク絡みでtail -Fが追従しないケース

tail -Fしているfluent-agent-liteでハマったのでメモ。 存在しないファイルをtail -Fした後、その名前のシンボリックリンクを作った場合 $ rm -fr ~/oreno-tmp && cd ~/oreno-tmp $ tail -F tailme & tail: cannot open `tailme' for reading: No such file…

daemontoolsなserviceをハンドリングするための Chef::Provider::Service::Daemontools を書いてみました

Chefでdaemontools配下のサービスをハンドリングするときは、コミュニティクックブックの daemontools を使ってる人が多いと思います。 https://supermarket.getchef.com/cookbooks/daemontools https://github.com/opscode-cookbooks/daemontools こんな感…

github:eで管理しているChefのクックブックを、Berkshelf APIサーバーを立てていい感じに依存解決する方法

ちょっと前にリリースされた Berkshelf 3から、Berkshelf APIというインデックスサーバーからクックブックの情報を得るようになりました。 https://github.com/berkshelf/berkshelf/wiki/2.x-to-3.0-Upgrade-Guide https://github.com/berkshelf/berkshelf-a…

bashでもpercolをイイ感じに使う方法

[twitter:@stillpedant](mooz)さん作のpercolはシェルとは独立しているのですが、ググるとzshと共に使っている人が多いようです。これはzshの強力な行編集機能を提供するzleに因るところが大きいためだと思います。bashでもpercolを使っている人もいるのです…

Apacheのmod_statusの各状態はどういう意味か?

Apacheのmod_statusを使えば各プロセスの状態を知ることができます。CloudForecastやCacti等でそれを元に視覚化している人も多いと思います。mod_statusで確認できる状態には以下の11種類があるのですが、 状態名 値 mod_stautsでの記号 説明 SERVER_DEAD 0 …

InfluxDB をちょっとさわってみた

InfluxDBとは http://influxdb.org メトリクスやイベントといった時系列データを格納するのに適したデータストアです。ちなみに go で書かれています。ちなみに 2013のOpen Source Rookiesに選ばれました。 InfluxDBの特徴 RRDやMySQLに時系列データを格納す…

Imoutable Infrastructure

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/widgets.js"; fjs.paren…

LimeChat for Macでjoinやpartメッセージを非表示にする方法 〜console編〜

自分はディスプレイの最下にLimeChatのconsole(全チャンネルのメッセージが流れるpane)が常に見えるようにしてチラ見してるんですが、join, partの嵐にメッセージがざーっと流されちゃうことがあってウムーと思ってたところ、 mac版はwebkitでレンダリング…

Redisのクエリーアナライザー "redis-traffic-stats" を書きました

redis-traffic-stats という Redis のクエリーアナライザーを作りました。 https://github.com/hirose31/redis-traffic-stats redis-traffic-statsはtcpdump -wで書き出したpcapデータを解析して、以下のような統計を表示します。 総ネットワークトラフィッ…

How to read pcap data (tcpdump -w) and handle TCP stream by Perl

Perlでインストールされているモジュールを全部リストアップする

[twitter:@fujiwara] さんのこれ、 新しいPerlに今まで使ってたモジュールをまとめてインストールする - 酒日記 はてな支店 ExtUtils::Installedで現在インストールされているモジュールからcpanfileを作る をベースにちょっと弄ってモジュールをリストアッ…

MacのステータスバーにCPU温度を表示したい、もしくはスクリプトのapp化の方法

てみじかに MacのステータスバーにCPU温度を表示するだけのアプリケーションを作りました スクリプトのapp化の方法を紹介します 1. MacのステータスバーにCPU温度を表示する 長らく Temperature Monitor を使ってMacのステータスバーにCPU温度を表示させてい…

快適mysqlコマンド★カスタマイズの決定版

この記事は MySQL Casual Advent Calendar 2013 の25日目の記事です。自分の過去のブログも含めて、mysqlコマンドのカスタマイズについていろいろな情報がありますが、わたしがオススメの秘伝のタレをまとめたいと思います。是非、ご参考に。 定型文(SQL)の…

ELBのIPアドレスの変更を監視するやつを書きました

https://github.com/hirose31/monitor-elb-address cpanm -l local --installdeps . cp config-sample.pl config.pl vi config.pl ./monitor-elb-address -c ./config.plな感じで使えて、列挙した FQDN の IP アドレス(Aレコード)の変更を通知します。IPア…

Nginxでproxy_passにホスト名を書いた時の名前解決のタイミング

Nginx 1.4.2で試しました。ネームサーバーは、ローカルのunboundをlocal-zone, local-dataを使って簡易コンテンツサーバーにして試しました。 local-zone: "oreno." static local-data: "api.oreno. 30 IN A 192.0.2.11" # local-data: "api.oreno. 30 IN A …

galloc - Gachapin alloc というのを作りました

Overriding System Functions for Fun and Profit | Hacker Boss をみて自分も試してみたくなったので書きました。 https://github.com/hirose31/galloc malloc(3)するとガチャピンが、free(3)するとムックがSTDERRに報告してくれます。便利!!1 $ make ga…

NATインスタンス冗長化の深淵な話

AWS Casual Talks#1を開催しました - まめ畑 http://d.conma.me/entry/2013/11/02/140136 に参加して『NATインスタンス冗長化の深淵な話』というLTをしてきました。 Redunduncy of NAT instance on AWS/VPC from Masaaki HIROSE これまで何度か発表をしてき…

SSLプロセッサが付けてくれる/に付けてほしいHTTPヘッダ

付けてくれるやつ やつ ヘッダ 値 備考 AWS ELB X-Forwarded-Proto https Apache/mod_ssl X-Forwarded-HTTPS on 要設定: RequestHeader set X-Forwarded-HTTPS %{HTTPS}s 付けて欲しいやつ やつ ヘッダ 値 備考 Plack::Middleware::ReverseProxy X-Forwarded…

秘伝のタレ化していたmodule-setupをDist::Zilla化してみた (仮)

今まで秘伝のタレ化したmodule-setupのテンプレでモジュールのひな形を生成してたんですが、なういMakefile.PLやBuild.PLの書き方とかcpanfileとかMYMETA.*とかそのへんもろもろに追従するのがしんどくなってきたので、milla (Dist::Milla) を元に秘伝のタレ…

プロセスが起動した日時を知りたい

プロセスの起動日時は ps の START カラムでわかりますが、24時間経過すると表示上時刻がわかりません。 $ ps auxwwwwww | grep -e PID -e redis-server USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND hirose31 775 0.1 0.0 36328 2008 ? Sl Sep2…

YAPC::Asia 2013でLT『How to inspect a RUNNING perl process』してきました&スピーカーへのお願い

YAPC::Asia 2013でLT『How to inspect a RUNNING perl process』してきました How to inspect a RUNNING perl process / YAPC::Asia Tokyo 2013 http://www.slideshare.net/hirose31/inspect-runningperl ハングアップとかメモリバカ食いとか、稀にしか発生…

ファイル指定で、ページキャッシュにのっているか確認したり追い出したり

ファイル指定で、ページキャッシュにのっているか確認したり追い出したりするPerlモジュールを書きました。 https://metacpan.org/release/Sys-PageCache https://github.com/hirose31/Sys-PageCache Linux なら動くはずですが、動かなかったら教えてくださ…

AWS::CLIWrapper-1.00 をリリースしました

先日 awscli が正式リリースされたので、 http://aws.typepad.com/aws_japan/2013/09/new-aws-command-line-interface-cli.html Perlのラッパーの AWS::CLIWrapper-1.00 をリリースしました。 https://metacpan.org/module/AWS::CLIWrapper awscli にはこれ…

撮った写真と動画の管理とかバックアップとか

写真 デジカメメイン機、サブ機共にEye-Fiを使っていて、撮ったら再生モードで放っておけばEye-Fiが写真データをアップロードしてくれます。Eye-Fiからアップロードされたデータは、拙作のDoumeki (百目鬼)が受けます。Doumekiは自宅サーバーで動いていて、 …

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

追記: 解答編を下の方に書きました!!! 追記: お題に不備があったので変更しました>< あと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…