タグ

ブックマーク / blog.64p.org (63)

  • tokuhirom's blog

    MySQL の X Protocol/X DevAPI 周りについて調査したのをまとめたののメモ MySQL 8 以後では X Protocol がサポートされている(5.7 系では部分的なサポートであり、X Protocol を格的に利用する場合には 8 を利用することが推奨されているようだ) 通信は従来の MySQL Protocol と異なり、Protocol Buffers Based となっていて、各言語のドライバの実装が簡単になっている(protocol buffers がその言語でサポートされていれば、だが) これにより今後 libmysqlclient に依存せずに各言語のドライバが実装されるようになって運用管理が簡単になるんじゃないかと私は考えています。 実際に、mysql-connector-nodejsは X Protocol のみをサポートしていて、libmysq

    oppara
    oppara 2018/07/09
  • Perl Web application に於ける Data::UUID の利用について - tokuhirom's blog

    文書について 文書では Perl における Data::UUID での UUID 生成について議論する。 特に、Linux 環境に於ける Data::UUID->new->create_str の挙動について考察する。 Data::UUID について Data::UUIDAlexander Golomshtok 氏が開発したモジュールで、メンテナンスされなくなった結果として、現在は rjbs 氏がパッチの適用などの消極的なメンテナンスを実施している。 このモジュールは以下の文言からドキュメントが開始されている。 This module provides a framework for generating v3 UUIDs しかし、期待に反して、実際にはほとんどのユーザーは v1 UUID を生成している。 Data::UUID->new->create_str を利用するのが一

    oppara
    oppara 2017/11/24
  • OSS版 Ansible Tower alternative である Ansible Semaphore を試したぞ! - tokuhirom's blog

    Ansible Tower の OSS Alternative であるところの Ansible Semaphore を試した。 Ansible を利用してデプロイするのの web ui である。 installation guide 通りにやれば利用可能。 docker run -d --name=mysql -p 127.0.0.1:3306:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw mysql などとして mysqld を立ち上げておく(もちろん、別に docker じゃなくてもいい)。 https://github.com/ansible-semaphore/semaphore/releases から最新版のバイナリを取得(golang なので single binary)。 semaphore -setup として、起動。セットアップが始まる

    oppara
    oppara 2016/06/26
    OSS版 Ansible Tower alternative である Ansible Semaphore を試したぞ! - tokuhirom's blog B!
  • Alfred のワークフローを Perl で書きたい! - tokuhirom's blog

    https://github.com/tokuhirom/p5-Alfred なんか Alfred2 を久々に使い始めている。 最近は IDE で生活する時間が長いので、terminal を開いてそこから peco を開いてみたいなことをするよりは、Alfred2 からサーバー選んで、そこから open してターミナル開いたほうがいいなぁと思ってみたという感じです。 で、perlworkflow を書いたらいいんだけど、perl 用のライブラリがなかったので書いた。 要するに、定義にしたがって、XML を吐くスクリプトがありゃいいんで、吐くようにしたってだけ。 ご利用ください。 これを使って、社内のデプロイツールからサーバーリスト撮ってきて、ターミナル開く機能と、サーバーリストからサーバーグループをいっきに csshX で開くってなツールを書きました。 あと、kurado を開くやつ

    oppara
    oppara 2016/04/11
  • oh-my-zsh やめて zplug にしようかと思ったけどやっぱり zgen にした - tokuhirom's blog

    mput さんの記事→ https://moneyforward.com/engineers_blog/2016/03/15/dotfiles/ を見て、zplug というものの存在を知った。 zplug を設定しようと思ったが、そもそも zsh の設定をこまごまとやるのがあんま好きじゃないし、コマンドのインストールとかまで出来るのが zplug だということで、ややオーバースペックに感じた。 いろいろ見ていると zgen というのが好みにあってる感じっぽかったので zgen にした。 source "${HOME}/.zgen/zgen.zsh" if ! zgen saved; then zgen oh-my-zsh zgen oh-my-zsh plugins/git zgen oh-my-zsh plugins/ssh-agent zgen load zsh-users/zsh-s

    oppara
    oppara 2016/03/22
  • fluentd を手元で動かしてデバッグしたいとき - tokuhirom's blog

    以下のようにして fluentd をインストール。 gem install fluentd --no-ri --no-rdoc /etc/fluent/fluent.conf に以下のようにかく。 <source> type forward </source> <match *.**> type stdout </match> んで、以下のようにして起動。 fluentd --no-supervisor --verbose 起動後は、メッセージ確認可能。

    oppara
    oppara 2016/03/08
  • h2o の fastcgi サポートで Plack::Handler::FCGI を動かす - tokuhirom's blog

    h2o で PHP を FCGI で動かすという話題が最近見かけますが、もちろん h2o+FCGI+Perl も快適に動作します。 具体的には以下のように書けばよろしい。 listen: 9090 hosts: default: paths: /: file.dir: /path/to/htdocs/ fastcgi.spawn: "exec /opt/perl-5.18/bin/plackup -s FCGI --nproc 10 /path/to/app/" 簡単すぎて、とくに解説することがないです。 h2o+FCGI で運用した場合のメリットとして、Starlet 等の application server を立ち上げる場合と異なり、application server のプロセスを daemon tools や systemctl 等で管理する必要がないというメリットがある。 一方

    oppara
    oppara 2015/06/21
    h2o の fastcgi サポートで Plack::Handler::FCGI を動かす - http://t.co/sfdf56HAct B!
  • Linux 上で5秒で chroot jail を使えるコマンド「jailing」が凄い! - tokuhirom's blog

    https://github.com/kazuho/jailing/ kazuhoさんがやってくれました。 ずいぶん前からlinuxでchroot jailを作るのに簡単な方法ないかなーと思ってました。個人的にはsystemd-spawnというのを使ってたのですが、幾らか気に入らない所があったり構築に時間がかかったり、ディスク容量を消費していました。簡単に使えて、ディスク容量を消費しないやつがほしいなーっておもってたんです。 とあるIRCで昨日、kazuhoさんと「ほしいですよねー」という話から始まって、github にある docker とかも物色しながら「いいのないねー」とか言ってたらkazuhoさんが「もすこし綺麗に書けそう」って言い出して朝から格的に書き始めてついさっき出来上がりました。速いw 名前はjailing とても小さく、実装コードだと100数十ステップ程です。しかもpe

    oppara
    oppara 2015/05/14
    Linux 上で5秒で chroot jail を使えるコマンド「jailing」が凄い! - http://t.co/sfdf56HAct B!
  • ant と気合でファイルを読み込んで表示したい。 - tokuhirom's blog

    ant でファイルを読み込みたい。という思いがある。 loadFile → echo でいけます。 <?xml version="1.0" encoding="UTF-8"?> <project name="change_your_project_name" default="cat" xmlns:artifact="antlib:org.apache.maven.artifact.ant"> <target name="cat"> <loadfile property="git.properties" srcFile="build.xml"/> <echo message="${git.properties}"/> </target> </project>

    oppara
    oppara 2015/03/18
  • JS とかの管理を grunt+bower でやるようにしてみた - tokuhirom's blog

    bower 的なものを使わないと、「これどこから拾ってきたんや……」という感じになりがちなので、一応やったほうがいいでしょうと。 bower は直接使っていると、git のレポジトリをぶちまけるばかりで、あきらかに不要なファイルを配信することになり気持ち悪いなーと思っていたのですが、grunt なり gulp なりを使うと、いらないファイルは展開されないようです(ちゃんと main というプロパティを bower.json に記述している場合)。 Perl なりなんなりで書いていると、node.js のツールを一部だけ使うのとかだるくてアレですが、Java の案件だとみんな何かしら LL を併用しながらやるので、まあいいかな、と。 package.json に以下のように記述します。そうすれば grunt の依存とかもなんとなく入る。 { "name": "jmx-dashboard",

    oppara
    oppara 2015/02/13
    JS とかの管理を grunt+bower でやるようにしてみた - http://t.co/sfdf56Zb41 B!
  • [java] どのブランチから作られた jar かをわかりやすくしたい - tokuhirom's blog

    どのリビジョンが実際にデプロイされてるかをその場ですぐに確認したいというような要求がある。 そういうわけで、jar の中にリビジョン情報などを埋め込みたい。 そんなときには git-commit-id-plugin が便利。 https://github.com/ktoso/maven-git-commit-id-plugin 設定がごちゃごちゃと書いてあるが、ごちゃごちゃ書かなくても OK である。 以下のように書けばOK。 <build> <finalName>${project.artifactId}-${project.version}-${scmBranch}-r${buildNumber}-</finalName> <plugins> <plugin> <groupId>pl.project13.maven</groupId> <artifactId>git-commit-id

    oppara
    oppara 2015/02/06
  • MySQL Connector/J を利用するときは cacheServerConfiguration=true を設定する - tokuhirom's blog

    MySQL は一般に接続コストが低いことで知られており、コネクションプーリング等しなくても使えるので便利。 だが、Java 用の MySQL Driver であるところの MySQL Connector/J はデフォルトでは数個のクエリを接続時に発行しており、デフォルトのままでは無駄に負荷がかかる。 デフォルトでは以下のように4つの準備クエリが発行される! どう考えてもおかしいですよね!やばいっす! 150108 9:18:11 5 Connect root@localhost on test 5 Query /* mysql-connector-java-5.1.34 ( Revision: [email protected] ) */SHOW VARIABLES WHERE Variable_name ='language' OR Variable_name = 'net_write_

    oppara
    oppara 2015/01/10
    MySQL Connector/J を利用するときは cacheServerConfiguration=true を設定する - http://t.co/cxl90AG0Rx B!
  • homebrew で入れた MySQL 5.6 で general log を取る - tokuhirom's blog

    デバッグ時には general log を取るようにしたら便利。 発行されたログを全部見れる。 /usr/local/Cellar/mysql/5.6.22/my.cnf あたりに以下のように追記 [mysqld] general_log=1 general_log_file=/usr/local/var/mysql/general.log できたら、以下のようにコマンドを打ち込んで再起動する。 $ mysql.stop $ mysql.start あとは以下のようにして流れるログを眺めながらコーヒーを飲めば完成となる。 $ tali -F /usr/local/var/mysql/general.log

    oppara
    oppara 2015/01/10
    homebrew で入れた MySQL 5.6 で general log を取る - http://t.co/cxl90AG0Rx B!
  • ipcalc - IP Calculator - tokuhirom's blog

    http://jodies.de/ipcalc CIDR の計算をする機会が最近多いんですが、毎度手でやってたんだけど手でやるの大変だな、ッて思ったのでツールを探してみたら ipcalc っていうツールがいいらしいと知りました。 $ ipcalc 192.168.0.1 Address: 192.168.0.1 11000000.10101000.00000000. 00000001 Netmask: 255.255.255.0 = 24 11111111.11111111.11111111. 00000000 Wildcard: 0.0.0.255 00000000.00000000.00000000. 11111111 => Network: 192.168.0.0/24 11000000.10101000.00000000. 00000000 HostMin: 192.168.0.1

    oppara
    oppara 2015/01/10
    ipcalc - IP Calculator - http://t.co/cxl90AG0Rx B!
  • bash のヒストリが保存されなくて謎だな、って環境に陥った時の対処法 - tokuhirom's blog

    そういう環境、無くはない。いろいろ理由があってそうしてる場合もあるから、履歴保存するリスクについても考慮する必要はありますが、リスクはないと判断した場合には以下のような手順で対応可能。 set -o | grep history をみて確認する。history off になってたら set -o history と .bashrc に書く。 次に echo $HISTFILE を実行する。/dev/null とかになってたら export HISTFILE=~/.bash_history などと .bashrc に書く。 echo $HISTSIZE echo $HISTFILESIZE してみて、0になってたりしたら HISTFILESIZE=500 HISTSIZE=500 とか書く。 ということが、いかの stackexchange のページにかいてあって参考になった。 ref. h

    oppara
    oppara 2015/01/07
    bash のヒストリが保存されなくて謎だな、って環境に陥った時の対処法 - http://t.co/cxl90AG0Rx B!
  • jenkins のときだけ一部テストを走らせたくない - tokuhirom's blog

    なんか一部だけすげー重いテストだから jenkins では走らせたくないとか、異常なミドルウェアに依存しているから jenkins では走らせたくないとか そういう事情なときに、一部テストをスキップさせたい。 そんな時は profile を分ければ良い。ということが stackoverflow 見てたらわかった。 http://stackoverflow.com/questions/4389744/is-there-a-way-to-tell-surefire-to-skip-tests-in-a-certain-package <properties> <exclude.tests>nothing-to-exclude</exclude.tests> </properties> <profiles> <profile> <id>fast</id> <properties> <exclud

    oppara
    oppara 2014/11/13
  • LL から Java に移行した人がはまりがちなこと - tokuhirom's blog

    こんにちは。Java 初心者です。 Java 初心者、得に LL から Java に来た人にありがちな問題について社内向けに書いたものをオープンアンドシェアさせていただきます。 前提として、我々は Java 8 でガンガン攻めているということをご承知おきください。 また、自分がこの数ヶ月で「うわー。こうしとくべきだったのかー」と気づいたやつをドヤ顔で語っているということにもご注意ください。 【追記】 対象は中規模 B2C の場合です(中規模というのは facebook より小さいという程度の意味です) 例外を握りつぶさないようにしよう Eclipse が生成する以下のようなコードをそのまま残しているケース。 これは言うまでもなく良くないですね。デバッグが困難になります。 try { } catch (IOException e) { e.printStackTrace(); } Perl

    oppara
    oppara 2014/10/02
    LL から Java に移行した人がはまりがちなこと - http://t.co/1nocMozLPA B!
  • YAPC::Asia 2014 で Test::Kantan というライブラリについて発表してきました - tokuhirom's blog

    ご査収ください。 今回のカンファレンスでは Test::Ika は ikasam_a さんの好きにしていいですよ、という話ができたのが良かったですね。 最近、Java を主に書いてて、 Perl のライブラリとかあんまメンテナンスしきれてないのもあるんで、というか review と releng はしてるんですけど、誰かメンテナンスしたい人いたらメンテナンスお願いしたい情勢です。

    oppara
    oppara 2014/09/10
    YAPC::Asia 2014 で Test::Kantan というライブラリについて発表してきました - http://t.co/1nocMozLPA B!
  • golang で JSONPath 的にデータ取り出したいときは @mattn_jp の go-scan が便利 - tokuhirom's blog

    golangnet/http とってきて JSON を parse して所定のキーを取り出すプログラムを書きたかった。 こういう場合、JSONPath とか使って書きたいのだが、JSONPath が完全にサポートされている go のライブラリは見当たらなくて、mattn_jp さんが JSONPath 書こうとして途中でやめた gist がひっかかってくる程度。あとなんか yasuyuky/jsonpath というのもあるのだが、これはいわゆる JSONPath ではない。 JSONPath なくてマジ不便ヤンケ、と思っていたが、mattn_jp さんが go-scan というライブラリを書いていた。 golangのjson、型を作るかmap[string]interface{}にしてキャストするしかなくて最初はgolang面倒臭いなって思ってたけど小規模なら後者で十分だしそれ以上の

    oppara
    oppara 2014/06/26
    golang で JSONPath 的にデータ取り出したいときは @mattn_jp の go-scan が便利 - http://t.co/RBKdgquYtw
  • Java のプロファイラは visualvm がいいのかな - tokuhirom's blog

    Java のプロファイラ、何がいいのかなあとおもって探してみたけど、結局 visualvm がいいのかなという感じ。 http://visualvm.java.net/ brew cask install visualvm とかすれば入る。 visualvm 起動した状態でベンチマークスクリプトをぶん回すと、プロセスリストにでてきて、状態がみれる。 CPU 使用率とか、メモリの消費具合とかがさっとみれる。いかす。 CPU Profiling とかがうまいことうごく。 GUI アプリでささっと見れるので、だいぶいい。これになれると、NYTProf とかやってられないですね。 【追記】 でもまあ、行レベルプロファイリングできるという点では NYTProf のほうがすぐれているなあ。 Java だとメソッドをやたら細かくわけるからそういうのいらないかもしれないけれど。

    oppara
    oppara 2014/06/20
    Java のプロファイラは visualvm がいいのかな - http://t.co/RBKdgquYtw