MySQLでレプリケーションする際にCHANGE MASTER TO
で設定したパスワードは、データディレクトリ下のmaster.infoファイルに書かれている。
一定時間だけS3のオブジェクトにアクセスできるURLを生成する
プライベートなバケットなんだけど、特定のURLを知ってる人だけがダウンロードするのを許可したいというときに使うやつ。
aws-sdk-rubyのv1だとAWS::S3Object#url_for
で生成できたらしいんだけど、v2ではやり方が変わってるとのことなので試しにv2でやってみた。というかこれのコピペ。
# Gemfile gem "aws-sdk", "~> 2" # irbとか require "aws-sdk" s3 = Aws::S3::Client.new signer = Aws::S3::Presigner.new(client: s3) url = signer.presigned_url(:get_object, bucket: "my-private-bucket", key: "path/to/file.txt")
デフォルトだと15分。presigned_url
の:expires_in
オプションで制限時間を秒数単位で指定できる。なおアクセス回数には制限がなくて、時間内であれば異なるブラウザ等から複数回アクセスできる。
詳しくは公式のドキュメントに記載されている。
で、試しにs3_signed_urlという、S3オブジェクトに対してGETできるURLを発行するコマンドを作ってgemにした。*1
例えばexamplebucket
バケットのtest.txt
に対してURLを発行するには次のようにする。
$ s3_signed_url s3://examplebucket/test.txt --expire 60
https://s3.amazonaws.com/examplebucket/test.txt?...
--expire
オプションでURLが有効な秒数を指定できる。デフォルトだとSDKにもとづいて15分。
新しくファイルをアップロードしたい場合にも対応していて、--upload
オプションでパスを指定する。
$ s3_signed_url s3://examplebucket/test.txt --upload /path/to/test.txt
https://s3.amazonaws.com/examplebucket/test.txt?...
そんな感じ。
こういうコマンド系はaws-sdk-goを使って1ファイルにまとめたほうが便利なんだろうけど、ひとまず習作として。
*1:リネームした関係で2回yankした…。
Mac OSXでMariaDBをソースからビルドする
Mac OSX 10.9.5 MavericksでMariaDB 10.0.13をビルドした。
wget http://archive.mariadb.org//mariadb-10.0.13/source/mariadb-10.0.13.tar.gz tar zxf mariadb-10.0.13.tar.gz cd mariadb -10.0.13 cmake . \ -DCMAKE_INSTALL_PREFIX=$HOME/opt/mariadb/10.0.13 \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DENABLED_LOCAL_INFILE=true \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_EXTRA_CHARSETS=all \ -DWITH_READLINE=ON \ -DWITHOUT_TOKUDB=1 make make install
ちなみに
- 一度tokudbを有効にしたままビルドしようとしたらエラーが出たので無効化した
- 10.0.16をビルドしようとしたら
libgroonga.a(mrb_id.c.o) has no symbols
というエラーが出たので諦めた
参考
mysqlのスローログの出力をオンラインで停止、再開する
停止:
mysql> SET GLOBAL slow_query_log = 0;
再開:
mysql> SET GLOBAL slow_query_log = 1;
現状:
mysql> show variables like "slow_query_%";
mysqldumpしたデータをインポートしていたらことごとくスローログに積もり積もっていって慌てて停止したという次第。オンラインでできてよかった(mysql 5.1から)。
参考
/dev/twitterでTwitterと通信するようなのを作る
cat /dev/twitter
で最新のツイートを取得したり、echo ねむい > /dev/twitter
でツイートしたりするのが欲しくなったので試してみてる。
ロードマップとしては次のような感じ。
2までは変なところもありつつなんとかなっているんだけど、3がつらい。もともとユーザ空間ではなくカーネル空間での話になるのでglibcなどのライブラリが使えないためOpenSSLも使えず、かといってHTTPS自体の仕様も詳しくない。幸いKernel 3.7以降でRSAが実装されているので、自力でなんとかなりそうではあるけども…。
ひとまず。
tipsはQiitaに書こう、そうしよう
あまり使ってこなかったけど、編集リクエストあるしシンタックスハイライトも見慣れてるしでそっちのほうが便利かと思った次第。
こっちはなんか妄想とかそういうやつに使おう。
chromedriverをインストールしてくれるchromedriver_helperをGoで書いた
やることはおおまかに2つで、
$ chromedriver_helper install
で最新のバージョンを~/.chromedriver-helper/chromedriver
にインストールするchromedriver_helper.BinaryPath()
でインストールされているバイナリのパスを返す
詳しくはREADMEを参照。
もともとchromedriver-helperというgemがあったんだけど、Windowsで動かそうとするとzipやwgetが必要だったりと手間だったのをrubyひとつで動くようにikm-chromedriver-helperとしてforkし、そもそもrubyを入れるのが手間になったのでGoで書いてみた、というような流れ。
初めてGoでまともなものを書いたのでコーディング規約とかがよくわからなかった。おおかたvim-goのおかげだと思う。