読者です 読者をやめる 読者になる 読者になる

その手の平は尻もつかめるさ

ギジュツ的な事をメーンで書く予定です

OpenWrtの環境に対してAnsibleでプロビジョニングをかける

メモ. Ansibleを利用するという文脈におけるbareなOpenWrtの環境の特徴としては以下のようなものがある; sftpが有効ではない Pythonランタイムが入っていない これらを解決すれば,あとはいつものように普通にAnsibleを使える (はず). というわけでそれぞ…

OpenWrtの設定を強制的に初期状態に戻す (failsafe modeに入る)

OpenWrtでうっかりLANのInterfaceの設定をしくじってしまったりすると,Web UIに入れなくなってしまい (もちろんsshもできない) その後の設定が一切不能になって詰む事があります.そういう時に工場出荷時 (という表現が正しいのかどうかはわかりませんが) …

WZR-HP-AG300HにOpenWrtを焼く

BUFFALOの無線LANルータであるところのWZR-HP-AG300HにOpenWrtを焼いて利用する際のメモです.なおマシンのOSはmacOSです.Windows等だとちょっと違うかもしれないが概ね問題ないはず.buffalo.jp AG300HとマシンをLANケーブルで繋ぐ 適切なケーブルで繋ぐ …

MyBatis + GroovyでMapperを作っている時に良い感じでWHERE IN使いたいんですけど〜って時

MyBatisのMapperをGroovyのannotationを使って書くと何かと便利 (主に「XMLを書かなくても良い」という点で便利) なわけですが,そんな中で「WHERE IN」を利用したSELECTを @Select annotationベースでどうやって書くのかという件です.要は SELECT * FROM u…

MacでErlang/OTPをソースコードからビルドする時にNo usable OpenSSL foundって言われるんですけどって時

前提 OpenSSLがbrewで入っている. 結論 こうすれば良い (brew環境下あるある); $ ./configure --with-ssl=$(brew --prefix openssl)Ref. Erlang -- Building and Installing Erlang/OTP 所感 わざわざソースコードからビルドしなくても,brew使ってるんだっ…

サービスを提供するにあたって取得されたくないアカウント名が集まっているライブラリが欲しいんですけど〜みたいな時

例えば `logout` みたいなユーザ名を取得されてしまうと,ユーザ側からすると不気味に見えるし,URL設計が終了している時などに脆弱性になり得る (とは言うものの,そもそもそういった脆弱性は根本的に防ぐべきだし,URL設計を終了させてはならない). ので…

YAPC::Kansai 2017 OSAKAで喋ってきました

タイトルは「Webアプリケーションのキャッシュ戦略とそのパターン 」です.speakerdeck.com告知で書いたように,ここ1・2年は規模感のあるWebアプリケーションを開発していて,なおかつキャッシュ周りの設計・開発・運用をモリモリやっていたので,その関連…

YAPC::Kansai 2017 OSAKAで「Webアプリケーションのキャッシュ戦略とそのパターン」と言うタイトルで喋ります

表題のとおりです.喋ります.詳細は以下のリンクを参照ください.http://yapcjapan.org/2017kansai/talks.html#talk-22ここ1,2年ずっとキャッシュと密にやっていく仕事 (サービス) をやっていて,それにより給料と言う名のキャッシュを得て生活していたわ…

mcrouterはget-multiリクエストを個別のgetリクエストに分割する

mcrouterという,Facebookが作っているmemcachedの為のルータがあります.「ミクルーター」と発音するようです *1.mcrouterは多機能なルータであり,シンプルなルーティング (例えば乱択やhash basedなど) からfailoverを前提とした大規模なクラスタのルー…

memcachedのconn_yieldsはどういう時に増えるのか

memcachedの conn_yieldsはどのような時に増えるのかという話です.なおmemcachedはテキストプロトコルかつデフォルトの設定で実行しているものとします (なお,この記事で重要なのは -R がデフォルト,つまり20ということです).memcached の conn_yields …

Test::Fluent::Logger書いた

表題の通りです.Perl5の話です.CPANにもあげてあります.https://metacpan.org/pod/Test::Fluent::Logger何をするモジュールかというと,useするだけでFluent::Loggerのpost及びpost_with_timeの内容をインターセプトして,本来送るべき宛先には送らずに内…

最近のgitを使った開発フローについて

git

最近のgitを使ったWebアプリケーションのプロジェクトの開発フロー (主にブランチ運用) について記すものです. なお前提としてGitHub Enterpriseを利用しています. git-flow 大上段に構えたもののあまり特殊なことはしていなくて,基本的にgit-flowをその…

builderscon tokyo 2016で話してきました

去年の話を今するのはどうかという感じですが *1,表題の通りbuilderscon tokyo 2016で話してきました.builderscon.ioビールサーバーを作ったという話です.スライドは以下です.speakerdeck.com発表ではデモも行ったのですが,サーバから水が一瞬吹き出て…

Vimでコードをペーストする時にauto indentなんだかスマートな言語syntax解釈なんだかよくわからねえがとにかくインデントが崩れたり,突然ある行以降全部コメントになったりしてああああああああって時

vim

タイトルの通りです.:set pasteと打てば良い.ずっと知らなかったので今までの自分に苛立った一方感動のあまりデプロイが大成功するなどしました. なお戻す時は:set nopasteとすれば良い.ところで今までどうやってこうした問題を解決していたかというと,…

req_mirror書いた

req_mirrorというサーバアプリケーションを書いた.受け取ったHTTP requestをJSONにserializeして,responseに詰めて返してくれるというやつ.つまりHTTP requestをおうむ返しにしてくれる雰囲気です.鏡的な挙動なのでreq_mirrorという名前にした次第.gith…

PHPでテストに使うための空きポートを取ってくる

php

kazuhoさんのこの記事と同じことがPHPでも出来る.d.hatena.ne.jp

最近の社内Wikiの書き出し

最近,社内Wiki書く時にその記事の頭に「この記事で分かること」というセクションを持ってくるようにしている.こんな感じ.wikiのページを開いた時に真っ先に「どういう情報が得られるか」が書いてあると,取捨選択を早い段階から行えるので調べ物のスピー…

golangで書いたツールをCircleCI上でビルドしてその成果物をGitHub Releasesにリリースする

表題の通り.いくらかポイントがあったのでメモとして記す.基本的にこの記事の内容を真似した.medium.comあらかじめ,CircleCIの側の設定でGITHUB_TOKENという環境変数を登録しておく.なおGitHubのPersonal access tokenにはrepoのpermissionを付与してお…

linenotcatをhomebrewでインストール出来るようにした

この前書いたlinenotcatをhomebrew経由でインストール出来るようにしました.そうすると便利だと思ったからです. linenotcatはこんなの.要はコマンドラインからLINE Notifyにメッセージを投げつけられるツールです.もともとはGitHub Releasesにビルド済み…

「Open Beer Serverの理論とその実装」というタイトルでbuilderscon tokyo 2016にて発表します

builderscon.ioで表題の通り発表します.builderscon.io内容としては物理のビールサーバをイチから組み立てて,更にそのビールサーバにHTTPを喋らせるという何を言ってるんだかよくわからない感じですが当方至って真剣です. ビールサーバってどうやって動い…

linenotcatというツールを書いた

LINE Notifyが便利でよく使っています.LINE Notifyが何かとか何が便利なのかとかをご存じない方はコマンドラインから LINE にメッセージを送れる LINE Notify « LINE Engineers' Blogを読んでいただければと思いますが,あえてものすごくざっくり説明すると…

GuiceとSpringを共存させたい

もともとGuiceを使っているプロジェクトがあってそれをSpringに移植したい,だとか,Guiceをバリバリ使っているコンポーネントをSpringのアプリに組み込むことで資源の再利用をしたい,だとか,そういう事になることがある.あるのです.この前実際になった…

Springの起動時に好きな画像をAAにして表示する

Spring Boot 1.4.1 1.4.0 (訂正しました.詳細は id:dayflower さんのコメントを参照下さい) の機能として,Springの起動時に任意の画像をAAとして表示できる機能が追加されたようです. なんかここに書いてた.www.infoq.comやり方は非常に簡単で, banner.…

ソフトウェアライセンスのURLが軒並みhttpsが使えた

READMEだとかLICENSEファイルだとかに書くソフトウェアライセンスの文言には,そのライセンスのURLが含まれていることが多いと思う. 最近ソフトウェアライセンス文言をめちゃめちゃ書く事があって,その時にふと「ライセンスのURLは軒並みhttpで表記されて…

雑に特定のホストの特定のポートと疎通できてるかどうか確かめる

新しくサーバ立てた時やサーバ追加した時に,そのサーバが他のホストの特定のポートと疎通できるかどうかチェックする必要が出てくる時がある.ACLとかの兼ね合い. そういうのは本番の環境だと監視のシステム等に組み込まれていたり,あるいはserverspecと…

tinyorm 1.11.0 is out

tinyormのversion 1.11.0が出ました.Maven Repository: me.geso » tinyorm » 1.11.0新しい機能としてはに書いたように Connection を2つ持てるようになった Lazily な connection borrowing に対応した という2つが挙げられます. rc1の時点では中々にバギ…

ltsv_exporter書いた

ltsv_exporterというPrometheusのexporterを書いた.その名の通り,LTSV形式のテキストを読み込んでPrometheusが解釈できる形式に吐き出すexporter.利用方法としては2つのパターンを想定している.1つはリモートで配信されているLTSVを読むというスタイル.…

CasperJSを使ってGrafanaのグラフのスクリーンキャプチャを撮る

最近はサーバのメトリクス収集にPrometheus,その可視化の為のフロントエンドとしてGrafanaをハードに使っている.Grafanaは予想よりもはるかに格好良いグラフが生成されるのでやる気が出て良い.デモを触るとなんとなく温度感がわかると思う. そうしている…

そして物語は何度目かのアプリ内通知再実装を迎える

というタイトルでKyoto.なんか #2で発表してきました. そして物語は何度目かのアプリ内通知再実装を迎える / Reimplement in app notification // Speaker Deckスライドの内容としては,アプリ内通知 (Twitter appで言うところの「通知」タブにあたる部分) …

Guice で独自の scope 切って inject したいって時

これを見ると良い.要は CDI のようなものをやるという話である. CustomScopes · google/guice Wiki · GitHub ここに書かれているように,1. 任意の Scope を表す annotation を作る 2. Scope を実装する 3. Scope の実装と annotation を紐付ける (これは …

tinyorm 1.11.0.rc1 is out

tinyorm 1.11.0.rc1 が出ました.以下の様な変更が入っています. Connection を2つ持てるようになった 「Read/Write できる connection」と「Read だけができる connection」の2つの connection を持てるようになりました.tinyorm は内部でクエリのタイプ …

thin-cacheというJava向けのキャッシュライブラリ書いた

thin-cacheというキャッシュライブラリ書いた.いつものようにmaven centralにも置いてある.そしていつものようにJava 8以降が対象となっている.maven centralMicroservicesみたいな感じでサービスを作っていると,他のサーバにrequestを飛ばして得られた…

Docuss というテストとドキュメント出力を一緒にやるライブラリ書いた

Docuss というものを書いた.Java のライブラリ.なお Java 8 以上じゃないと動かない.どんなライブラリかというと, HTTP request を対象 URI に送り,それによって得られた response の内容をテストする為のラッパ的な機能を提供する response のテストが…

YAPC Asia Hachioji 2016 に行ってきた & 喋ってきた

YAPC Asia Hachioji 2016 に行ってきて,ついでに喋ってきました. 諸般の事情で2日目しか行けなかったんですが,濃いトークをたくさん聞けて良かった.特に,@neko_gata_s さんの M-V-Whatever の話 は非常に参考になって良かった.ああした知識の裏付けが…

YAPC::Asia Hachioji 2016 の2日目で喋ります

各位お疲れ様です. さて表題の通り,YAPC::Asia Hachioji 2016 の2日目16時から, 「突如見知らぬ言語に出会ってしまった俺達は」というタイトルで発表します.どんな話をするかというと,まあプロポーザルに書いてあるとおりなんですが,新しい言語とかを…

sprint という Java の string formatter を書いた

sprint という Java 向けの String formatter を書いた.Maven Central にも置いてある.http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22net.moznion%22%20AND%20a%3A%22sprint%22sprint は Sprint#ff() というメソッドを提供している.使い方としては…

git-reviewer 書いた

git

code review の reviewer 選出をする時,pull request の内容をざっと眺めてから「この部分だから XX さんかな」とか「あそこのコードは YY さんが詳しいだろう」とか,そういう感じで選ぶことが多くて,つまりは勘と経験で選びがちになってしまう.これにつ…

Docker 使って golang で書いたツールの cross platform build をする

まず以下の様なシェルスクリプトを用意する. #!/bin/bash # ここで依存しているパッケージを go get する # 例えば以下の様な感じ # go get -v gopkg.in/yaml.v2 # go get -v gopkg.in/redis.v3 for GOOS in darwin linux; do for GOARCH in 386 amd64; do …

resque_exporter 書いた

最近 Prometheus を使って各種メトリクスを取っていて,ふと resque の queue のステータス,つまり各 queue に 積まれている job の数を集計・可視化したくなったので,そのための exporter を書きました *1.実装としては,resque は <namespace>:queues という SET </namespace>…

redis-script-manager 書いた

p5-Redis-Script の Java 移植になります. Redis を使ってて困った時にインターネットを徘徊してると @shogo82148 さんのブログにたどり着く事が多く,日頃お世話になってるわけですが,今回は Redisのトランザクション・スクリプト・ランキングを扱うPerl…

Server::Starter + Java 環境下で JMX による監視を有効にしていると graceful restart 時に不具合が出ちゃって困るんですけど〜って時

割とニッチな話題ではありますが…… Server::Starter を使ってプロセスを立ち上げると graceful restart を簡単に実現できるなど便利な点が多く,LL 時代はこれでやっていっていたわけですが,残念なことに Java からその Server::Starter テクノロジを利用す…

Web Application Server を動かす時の Java8 起動オプションのメモ

一般的な Web Application Server *1 を Java8 で動かすにあたって,最近有効にしている起動オプションについてメモ. 何か間違っていたり,あるいは「こっちの方が良い」みたいなのがあれば教えて下さい. -server server mode で起動させる (指定しないと …

開発に使えるダミーのマイナンバーについて

ところでマイナンバー使うシステム作る羽目になった場合、ダミーに使える絶対に重複しないマイナンバーとかってあるんですか?— 画力の高まり (@moznion) 2016年3月7日 テストのために開発者のマイナンバーがハードコードされて起こる悲劇— 画力の高まり (@m…

快適な連打機能を提供するためにサーバサイドが出来ること

人間生きていると高確率で連打機能を提供するシステムを構築する必要が出てくることがあります. 例えばあるコンテンツについてボタンを連打することで「良いね」を表明するようなシステムです.連打は楽しい!! しかし実装する方としては純粋に楽しんでば…

管理画面まわりの事情,負の UI/UX について

管理画面を作ってると,「みだりに押されたくはないが,かといって無いと不便」みたいなボタン (或いはそれ以外の何か) を画面上に置きたくなる時があると思う. 例えばバッチで行うような処理を (なんらかの事情で) 即時実行するボタンのようなやつ.こうい…

Guice で generics の仮型引数の実体 class (ParameterizedType) を上手いこと inject する

タイトルだけでは何を言っているかよくわかりませんが, public class Foo<T> { private Class<T> clazz; ... public void something() { // 例えばここで clazz を使って何らか処理をする System.out.println(clazz); } } みたいな class があるときに,ここの cl</t></t>…

chat ops について

chat ops について,何が嬉しいのかとか,その辺を上手く言葉にできていなかったので言葉として記しておくこととします. chat ops のメリット・デメリットなんかは先達によって散々語り尽くされていると思うところですが,自分の思考をまとめるために…… cha…

mysql Connector/J の設定で効きそうなやつ

mysql Connector/J を使う時に色々効きそう (あるいは効かなそう) な設定項目を調べたのでまとめておくこととします.なお,対象としている mysql のバージョンは5.6 (以降),Connector/J のバージョンは5.1.34 (以降) です. Connector/J は設定できる項目…

HikariCP で leakDetectionThreshold を設定して connection leak を検出する

HikariCP のような connection pool を利用する上で犯しがちなミスとして,connection leak (pool から connection を borrow しっぱなしで pool に返却しないこと) があると思います.connection leak を放っておくと pool 内の connection が枯渇してにっ…

HikariCP で kamipo TRADITIONAL を有効にする

さて2015年も暮れになってきましたので,各位に於かれましては常識の如く kamipo TRADITIONAL を有効にしていることと存じます. kamipo TRADITIONAL とはなんぞや,という方は以下のエントリが参考になりますからご一読下さい. さて Java で kamipo TRADIT…