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

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

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

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

管理画面まわりの事情,負の 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…

HikariCP のステータスを JMX 経由で取得する

HikariCP を使っていると,connection の状態をモニタリングしておきたくなると思います.例えば active な connection と idle 中の connection の比率を見たかったり,あるいは connection がリーク (アプリケーションが connection を borrow するだけし…

ねぎま鍋、ほうれん草とツナのマヨネーズあえ

今日も定時退社することに成功しました.嘘です,実際には45分ほど残業をしましたがこれは定時と言っても遜色はありません.最高の事態です.というわけで自炊にも成功しています.ワーオ pic.twitter.com/2ZcDdxliKL— 定時で帰ります (@moznion) 2015, 12月…

情報共有システム (Wiki みたいなやつ) に求めること

いま所属している組織で使っている情報共有システムが僕はいまいち好きではなくて,気に食わないところを twitter にガーッと書いたんだけど,さてここで「良い情報共有システムとは」と考えた時にスッと言語化出来なかったので,僕の思う情報共有システムに…

perl6 の環境を手っ取り早く構築してサクッと Hello world する

本記事はサクッと perl6 (rakudo) が動く環境を作って,ズバッと Hello world してみるというやつです. 早速行ってみましょう. 1. rakudobrew をインストールする rakudobrew をインストールしますrakudobrew というのは perl5 で言うところの perlbrew/pl…

Released IO::Blob for perl6

Released IO::Blob. This is a perl6 module which provides IO:: interface for reading and writing a Blob. IO::Blob inherited from IO::Handle, means it supports to handle a Blob like a filehandle (writable, readable and seekable). For example…

perl6 の正規表現の or (|) は longest match

perl5 での正規表現の or は | のみでした.以下のように使うことができます. 'aaabbb' =~ /(a|a+b)/ これは a にマッチします.左に書いてあるマッチャが優先されますね. 同様に | を用いて perl6 で書いてみましょう. 'aaabbb' ~~ /(a|a+b)/ おおっと,…

GitHub のリポジトリページにアクセスするだけで自動的に git clone される Chrome 拡張書いた

GitHub のリポジトリページにアクセスするだけでローカルに git clone される Chrome 拡張を書きました.ggc という略称になりますが,まあなんかこれ紛らわしいですね.なぜこんなものが必要になったかというと GitHub のリポジトリ内検索は割と結果がひど…

日本語で DDD について雑に話せる Slack チームができたぞ!!!!

https://ddd-jp-invitation.herokuapp.com/誰でも入れるのでどうぞ

Java で 任意個の文字を何らかのデリミタ区切りで記述した文字列がサクッと欲しいみたいなとき

こう書くと手っ取り早そう. IntStream.rangeClosed(1, 10) .mapToObj(ignored -> "?") .collect(Collectors.joining(",")); // => "?,?,?,?,?,?,?,?,?,?" 次世代っぽい!!![追記] id:nowokay さんから以下の方が良いのではという指摘が.確かに分かりやす…

YAPC::Asia Tokyo 2015 で Yet Another Perl Cooking というタイトルで話してきました

話してきました.以下がスライドとなります.登録時にスライド字幕を誤って「英語」にしてしまったばかりに英語スライドとなっております. 「画像がヤベえ!!」とか言われたんですが,まあこれで発表したんだし公開するスライドの画像を修正するのも違うよ…

YAPC::Asia Tokyo 2015 1日目 (Fri 8.21) 15:30 から話します!!!!

Yet Another Perl Cooking - YAPC::Asia Tokyo 2015yapcasia.orgこういった話をします.一部状況が変わりましたが,大筋でこうした話をします.本当に料理の話をするのです. 裏番組が超強力! という感じなので,もしかしたら4人くらいしか来ないのではない…

Jesque を頑健に使うために RobustWorkerPool というのを書いた

8/16 (日) に京都でハッカソンが催されるとの事だったので遊びに行って,表題のものを作ってきました (実際には大部分は予め作っていた).Jesque は Resque の Java 実装版で,今やっているやつではこれを使った JobQueue - Worker なシステムの実装を進めて…

ブログ等でGitHub等に置いてあるソースコードをURLで示すときはリビジョンで指定したほうが良い

まあ当たり前の話なんですが,ブログなんかで GitHub (とかそれに準ずるサービス) に置いてあるソースコードをURLで示す時にhttps://github.com/git/git/blob/master/connect.c#L105みたいな風に指定してしまうと,master 上の実装が変わった時にトンチンカ…

go-setlock - Go port of setlock

setlock is a command line tool which is in daemontools. That tool is known as powerful and useful. Then I implemented setlock command by golang, called go-setlock.moznion/go-setlockgo-setlock has functions which are equivalent to the origi…

go-setlock - Go port of setlock

[2015/08/10 12:47 追記]なんか一部のOS Xで動かないので調査中です…… [2015/08/11 10:15 追記]v1.1.0で直っています setlock は daemontools に同梱されているコマンドラインツールで,非常に便利かつ強力なツールであることが知られています.この件につい…

Windows で flock の LOCK_EX + LOCK_NB のような感じでファイルロックする

"windows LOCK_NB" とかでぐぐると無限に PHP の情報がヒットしてなかなか所望の情報に辿りつけなかったのだけれど,どうやら LockFileEx を使えば良いらしい. LockFileEx function (Windows) LOCKFILE_EXCLUSIVE_LOCK (0x00000002) を dwFlags に指定して…

OS X で Jenkins 公式の docker イメージを起動する

Jenkins の plugin を開発するにあたってローカルに Jenkins を立てる必要が出てきて,さてどうしたものかと思っていたら Jenkins が公式で docker イメージを出しているのでこれを使えば良いじゃん! ってことで使うことにしました.以下メモ.jenkinsci/do…

Groovyで複数のコマンドを一気に実行したいんですけど〜って時

&& でつなげて複数のコマンドを実行したいみたいなことがままあって,まあ gradle とか書いてれば頻繁にあると思うんですけど, 'git add -u . && git ci -m "Yeah"'.execute() みたいにやってみるもののこれは上手くいかない. そこでどうするかというと ['…

Groovyで特定のパス上でコマンド実行したいんですけど〜って時

特定のパスに移動してから外部コマンドを実行したいみたいなことがままあって,まあ gradle とか書いてれば頻繁にあると思うんですけど, 'cd /dokoka/no/path && rm foo'.execute() みたいにやってみるもののこれは上手くいかない. そこでどうするかという…

Javaでkamipo traditionalを有効にする

kamipo traditional については以下の記事が詳しい. ルーク!MySQLではkamipo TRADITIONALを使え! | おそらくはそれさえも平凡な日々ところでこれをJava,というかJDBCで有効にするには以下のように書いてやるとよろしい. try (final PreparedStatement p…

plenv で stableperl を利用するの術 & stableperl の話

[追記] (旧タイトル) Perl::Build (plenv) で stableperl が利用できるようになりました & stableperl の話色々あって方法が変わったので内容を修正します Perl::Build (plenv) で stableperl が利用できるようになりました & stableperl の話Perl::Build 及…

YAPC::Asia Tokyo 2015にて"Yet Another Perl Cooking"というタイトルで発表します

Yet Another Perl Cooking - YAPC::Asia Tokyo 2015YAPC::Asia Tokyo 2015にトークを応募した - その手の平は尻もつかめるさ発表する運びとなりました. 主に上に書いてあるような事を話しますから,興味のある方は是非いらして下さい!!! ところで,個人…

fluent-logger-mock-sender 書いた

fluentd (td-agent) をプロジェクトで使う際に,開発途中で「fluentd に対して正しい内容のログを飛ばせてるのかどうか」みたいな事をテストしたくなる瞬間というのがあると思います.td-agent のモックサーバ的なものを立てて,そこに実際に payload を投げ…

YAPC::Asia Tokyo 2015にトークを応募した

トークを応募しました.Yet Another Perl Cooking - YAPC::Asia Tokyo 2015Perl,というかプログラミング全般のテクニックを用いた料理の自動化を試みる話について議論をします.最近料理に興味があり,併せてソフトウェアエンジニアリングには依然として興…

gimei-java 作った

世は空前の gimei ブームです.この前 go 版が出ましたね. というわけで,というわけではなく,業務で必要だったので gimei-java を作ってしかるべきところ (つまりmaven central) にあげました.moznion/gimei-java Ruby には gimei という gem があり, g…

STDIN経由で入力を受け取って1秒あたりのスループットを取れるpersecというのを書いた

表題のやつです.便利っぽかったのと書きたかったという理由からgoで書いています.moznion/persec例えばアクセスログのようなものがあった時,「1秒間に何行ログに書き込まれているか」が分かれば秒間のアクセス数を求めることが可能となります.これはそう…

java-db-transaction-managerが出ていた

大昔の話ですが,java-db-transaction-managerというのを書いて,リリースしていました.moznion/java-db-transaction-managerPerlのTransaction ManagerであるDBIx::TransactionManagerのJava移植版です.シンプルなやつが欲しかったので. 機能としてはDB…

tinyormで任意のcolumn名を指定できるようになってた

MySQL の lower_case_table_names について,テーブル名とデータベース名の中の大文字小文字について - その手の平は尻もつかめるさこういう話があり,column名を小文字オンリーのsnake_caseでやりたかったりすることがあります. 今までのtinyormではRow Cl…

npmとかbowerとか使ってるプロジェクトでEclipse使うと破滅するんだけど〜って人

npmとかbowerとかによって大量のjsファイルがディレクトリ中に含まれているプロジェクトでEclipse使うと破滅するんです.わかるでしょう.破滅するんですよ.滅亡です. 何故かと言うと,EclipseはWorkspaceをビルドする時にその大量のjsファイルに対してval…

Jettyを使ったリバースプロキシ構成のときに本当のアクセス元の情報が知りたいんですけど〜って時

Jettyを使ったリバースプロキシ構成をやっている時に,プロキシではなく本当のアクセス元の情報を知りたいという事があります.例えばHttpServletRequest#getRemoteAddr()とかで取りたい,みたいな.というかほとんどの場合でそういった欲求があります. そ…

Java でテストカバレッジを取る (JaCoCo編)

一種の指標になるので,なんだかんだでテストカバレッジは取りたくなります.Javaでそれをどうやるかをサッと検索すると,Coberturaを使う方法とJaCoCoを使う方法が引っかかると思うんですが,Coberturaの方はJava8のコードが含まれているとJavaNCSSの兼ね合…

URIBuilderTinyというのを書いた

URIBuilderTinyというやつを書きました.Maven Centralにもあがっています.盛り上がってまいりました.moznion/uribuilder-tinyhttp://search.maven.org/#artifactdetails|net.moznion|uribuilder-tiny|2.0.1| 一般的なソフトウェアエンジニア諸氏におかれ…

命名の話

命名の話をしました.1時間位でなんとか間に合わせで書いた資料です. よろしくお願いします. 命名の話 from moznion www.slideshare.net あと,例えばメソッド名で"get"と"retrieve"と"fetch"をどう使い分けるか,みたいな話題が出て, 僕あたりは getは単…

MySQL の lower_case_table_names について,テーブル名とデータベース名の中の大文字小文字について

MySQL には lower_case_table_names という変数があって,これはテーブル名の大文字小文字を区別するかどうかというのを設定するパラメータなわけですが,その詳細は以下のようになっています (参照: MySQL :: MySQL 5.6 Reference Manual :: 9.2.2 Identifi…

donovan という1枚 java ファイルを書けばウェブアプリを立ち上げられる WAF を書いた

※ WAF: Web Application Framework 表題の通りです.Maven Central にも上がっています.moznion/donovan avans という tokuhirom さんが書いた WAF があり,Sledge や Amon2 の流れをくむシンプルで良いフレームワークがあって,最近はもっぱらそれでウェブ…

Java でパターンに基いてランダムな文字列を生成できる random-string というのを書いた

Java 版の random-string を書いたので Maven Central にアップしました.moznion/java-random-string これはパターンに基いたランダムな文字列を生成する君です. 他言語の実装には Perl の String::Random や JavaScript のString_random.js などがありま…

git で管理しているリポジトリの各ブランチの中身をそれぞれ個別のディレクトリにエクスポートする

git

「gitもよくわからないからブランチ? だっけ? それも全部個別のディレクトリにしておいて」って言われてはい、となった— 煮込み (@moznion) 2015, 3月 20人生にはこういう事が度々あります.深く考えないようにすることにします. その結果できたのがこれ…

Servlet コンテナによって HttpServletRequest#getPart(String name) の挙動が違う

Part gotPart = httpServletRequest.getPart("hoge"); みたいなコードがあった時,送られてきた multipart リクエスト (httpServletRequest) に1つも part が含まれていない場合の挙動が Servlet コンテナによって変わってきます.送るリクエストはこんな感…

textsearch_sennaをキレイにアンインストールする

textsearch_sennaというのがあって,これはsennaを使った全文検索をpostgresqlに提供するために便利な演算子や関数を提供してくれるやつなんですが,これをアンインストールする必要が出てきた時に「インストール時に追加された関数とか演算子とかビューとか…

Servlet 3.0 から導入された multipart 関連の処理を Tomcat で有効にする術について

servlet 3.0 の multipart 関連処理を有効にする方法 - blog.64p.org これの関連なんですが.こういう設定をしておかないと,HttpServletRequest#getPart() や HttpServletRequest#getParts() が null を返してきてマジ意味わからん!!!! みたいな感じの…

GitHub Releases にホストされている成果物の最新の奴を持ってくるワンライナー

GitHub Releases でホストされている任意のリポジトリの成果物の最新のやつを持ってきたくなるという事が人生では常に起こります.そしてそういう時は GitHub API の Releases のやつを使うと良いことがわかっています. curl https://api.github.com/repos/…

:= 演算子をなんと呼ぶのか問題

:= をなんと発音していいか分からないのでずっとち◯こ演算子って読んでる。— Tomohiro Nishimura (@tomohi_ro) 2015, 2月 25 :=,個人的に「定義氏」って読んでる— 初回 (@moznion) 2015, 2月 25 定義氏ではない,定義子— 初回 (@moznion) 2015, 2月 25 定義…

CentOS 6.6 上で NVIDIA の GPU (の一部) と共に nouveau 使うと発狂して死ぬ

タイトルの通りです. CentOS 6.6 の上で NVIDIA の GPU の一部のモデルを nouveau と一緒に使うとカーネルパニックを起こして死にます.OS が起動しねえ. 一部というのは確認できた限り GTX 690 GTX 590 GTX Titan Tesla K20Xm です.Quadro 系はなぜか大…