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

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

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

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 系はなぜか大…

Java で新しくプロジェクトを始めるときに何を使ってセットアップすべきか

Java で新しいプロジェクトを立ち上げる時, Maven Archetype を使う 独自のセットアップスクリプト (LL とかで書かれたやつ) を使う という2つの方法が考えられると思います (他にもあるかも知れない). さてどちらが良いのか. Maven Archetype を使う 利…

Maven Archetype で文字列を置換したりする

Maven Archetype で archetype を作るとき,文字列を置換したくなることがあります. 例えば $artifactId に foo-bar と入っている時にこれを foo_bar という風に s/-/_/g したくなる事などがあるでしょう.世の中色々あるのです.そういう時は以下のように…

Maven Archetype で ## がコメントとして扱われるのでなんとかする

Maven Archetype で archetype を作る時,archetype に含めるファイルの中に ## が入っていると行のそれ以降がコメントとして扱われる為,内容が抜け落ちてしまうというような事があります. 例えば Markdown 形式のファイルなんかを archetype 内に含めてい…

YAPC::Europe 2015 にて “Static Code Analysis For Perl” というタイトルで発表します

2015年9月2日から4日までスペインはグラナダで開催される YAPC::Europe 2015 にて, “Static Code Analysis For Perl” というタイトルで発表することになりました.実は通ると思ってなかった!! YAPC::Europe 2015 | Static Code Analysis For Perl 例にも…

相手の GitHub の ID さえ知っていれば暗号化したメッセージを送れる naisho というのを作った

色々な事情があり,秘密のメッセージを送り合う必要性が今年に入ってから多数発生していて, そのたびに毎度毎度手で暗号化して〜みたいな風にやるのめんどいですね,そうですね, ということでこの度 naisho というものをこさえました.みんなには内緒です…

git でファイルごとのコミット数を取ってきて,プロジェクト中のホットなファイルを割り出すという試み

途中の段階でプロジェクトに入った時などに,「どれがそのプロジェクトの中心となっているファイルなんだろうか」というのを手っ取り早く知りたくなる時があります.僕はあります. そこで「どのファイルが盛んに変更されているのか」という点を指標として注…

Groovy 所感

開発のサポートツールやらなにやらで,こまごましたものを Groovy でちょいちょい書いて思ったことです. Groovy で Web アプリケーションを書いたとかそういうゴツい話ではないのでそのあたりはよくわかりません. なお本記事中に出てくる Java っていうの…

CUDA で 2 枚以上の GPU を使って cufft する時は FFT Plan を各々の device に乗せる必要がある

以下は間違い. cudaSetDevice(devices[0]); cufftHandle fft_plan; cufftPlan1d(fft_plan, SIZE, CUFFT_C2C, BATCH); // ここで作られる FFT Plan は device 0 にしか確保されない cufftComplex *ffted_data[2], *orig_data[2]; cudaSetDevice(devices[0]);…

mvn test で findbugs と checkstyle を走らせて,1つでも violation があれば fail させるの術

OSS で Java をやっていく場合,ロジックのテストだけではなく checkstyle や findbugs などによる静的解析を適用して,それを CI で回していかないととてもではないがやっていけない!!! という感じになるので,そこら辺を何とかしたい. 具体的に言うと …

capture-output-stream というのを書いた

こちらも温泉で出したやつです.Maven Central にもアップしました.moznion/capture-output-stream http://search.maven.org/#artifactdetails|net.moznion|capture-output-stream|1.0.0|jar 標準出力や標準エラー出力をキャプチャする君です.キャプチャし…

javadocio-badges というのをつくった

先週の3連休で温泉シバソンというイベントを有馬温泉でやってきて,そこで書いたアプリケーションがまあまあ使えるレベルに達したので公開しました. シバソンについての詳細は以下のブログを見ていただけると良いと思います *1.僕はこのハッカソンで MacBo…