タグ

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

  • あるプロジェクトを Gradle kotlin DSL に移行した - tokuhirom's blog

    仕事プロジェクトの一つを gradle kotlin dsl に移行させてみた。 理由としては以下。 gradle kotlin dsl を利用すると、人によるブレが少ない parenthesis の省略などができないので gradle 5.0 がリリースされると kotlin dsl が正式版となる。 実際に触ってみたい といったところで、デメリットとしてはとりあえず以下がある。 git clone して ./gradlew build したときの速度が groovy 使ってる場合よりもやや遅いらしい で、実際に触ってみた感じの感想は以下。 ドキュメントが少ない(公式ドキュメントは現状 groovy で書かれているし) プラグインごとに github.com を検索して回らないと書き方がよくわからない 現状では無理して移行する理由はないかな。

  • gRPC-WEB がもたらす我々の生活への変化 - tokuhirom's blog

    gRPC-WEB が GA となった。これが我々の生活にどのような変化をもたらすのかについて考える。 従来の gRPC の課題 gRPCgoogle が公開している RPC 方式であり、java, golang などの言語で利用可能になっている。 gRPC は protocol buffers over HTTP/2 を基としているため、通信が multiplexing されるし、schema 定義がきっちりされるのでクライアント側とのコミュニケーションがしやすい。 一方、protocol buffers はbinary であるためにbinaryの取扱が苦手な Browser JavaScript からのアクセスが難しいという問題があった。 grpc-gateway grpc-gateway という実装があって、これを利用すれば Browser JavaScript からのアクセス

  • 僕が情報収集に使っているブログ - tokuhirom's blog

    僕が最近主に見ているブログについて以下に述べさせていただきます。 以下にあげたやつ以外に1000ぐらい購読してるけどそのへんのはあんま実用的というよりは趣味に近い感じです。 idea blog https://blog.jetbrains.com/idea/ IDEA の最新機能とかがわかって便利。 Java Annotated Monthly ってのが毎月このブログにのるので、コレだけ読んでおけばJava界隈のトピックに乗り遅れることはない。 Reddit の /r/java https://www.reddit.com/r/java/ なんだかんだ情報集めるのに便利なのは reddit。 spring blog https://spring.io/blog spring 関連のアプデ情報が集まるぞ! github blog https://github.com/blog github

  • Jet Brains Night 行ってきた - tokuhirom's blog

    Yahoo! Japan さんのオフィスで Jet Brains Night というミートアップイベントがあったので行ってきた。 大きめのセミナールームを2個ぶち抜いた感じで、スクリーンが前面4面とサイド2面あってとにかく広くてきれいな開場でした。 IntelliJ の tips とか一個ぐらい学べればいいなーと思って行ったけど結構いろいろあって良かったです。 JetBrains 製品全般の紹介という感じで良かった。 JS については以下の tips 知らなかった! なるほどなー。 IntelliJ に typescriptの型定義ファイル読んで補完させるとかできるのか…… #jbnight — tokuhirom (@tokuhirom) November 22, 2016 File watchers プラグインで eslint かけるのが便利か。なるほどなあ。 #jbnight — t

  • JDK9 で入るという新しい HttpClient を試してみた - tokuhirom's blog

    jdk9 で HTTP/2 に対応した新しい HttpClient が提供される。これは待望の新機能である。 Java には標準で java.net.httpurlconnection という http client が付属しているが、低機能で、とてもじゃないが実用には耐えない。 そこで Apache HttpClient がデファクトスタンダードっぽくなっているのだが、これまたあまり使いやすくはない。。wirelog が見づらいし。。 OkHttp というクライアントライブラリもあり、これは使いやすいが、なんか apache httpclient 信者の人に導入を阻まれがち。 そんな中で、HTTP/2 に対応した http client が jdk9 ではついてくるということで、ドキュメントを読んだり、jshell で動かしたりして遊んでみた。 [12:43 PM] tokuhirom

  • 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 として、起動。セットアップが始まる

  • CPU の system が妙に高いぞって時に犯人さがすには pidstat 使えば良い。 - tokuhirom's blog

    pidstat -h -u | sort -nr -k 5,5 | head すれば良い。 sudo yum install -y sysstat してインストール。 簡単に誰が system 消費してるかわかる [tokuhirom@centos-1gb-sgp1-01 ~]$ pidstat -h -u | sort -nr -k 5,5 | head 1462874412 0 27 0.00 0.22 0.00 0.22 0 kswapd0 1462874412 0 19281 0.16 0.09 0.00 0.25 0 cadvisor 1462874412 0 342 0.01 0.02 0.00 0.03 0 systemd-journal 1462874412 0 377 0.00 0.01 0.00 0.01 0 auditd 1462874412 0 262 0.00 0

  • spring boot アプリケーションのMetrics値取得について - tokuhirom's blog

    Spring boot の metrics 機能について spring boot には metrics 機能が標準でついている。metrics では Counter と Gauge の2種類のメトリクスをわせることが可能である。 Counter は、単純に増加/現象する値を表すのに使うメトリクス値である。 たとえば、アクセスの件数、エラーの件数、現在利用中の値を取得したりするのに使う。 サンプルコードは以下の通り。 @Service public class FooService { @AutoWired private CounterService counterService; @Autowired private FooRepository fooRepository; public Foo get(String key) { counterService.increment("f

  • mod_jk な apache に、「自分は HTTPS を扱っている」と思い込ませる - tokuhirom's blog

    SetEnv HTTPS on で OK です。 HTTPS という名前を避けたい場合は JkHTTPSIndicator HOGE などと設定すればよい。

  • JJUG CCC 2014 Fall で「Java で1から10まで書いた話」を発表してきました - tokuhirom's blog

    tokuhirom's Blog Search JJUG CCC 2014 Fall で「Java で1から10まで書いた話」を発表してきました Javaで1から10まで書いた話(sanitized) from Tokuhiro Matsuno コード書いた話が少ない中でわりと異色な感じでしたが、思ったより反応もあってよかったです。 Created: 2014-11-28T08:09:37 Updated: 2014-11-28T08:09:37

  • Java で JSON をテストケースに貼り付けた後でエスケープしてまわるのが辛いときに - tokuhirom's blog

    http://javarevisited.blogspot.jp/2012/12/how-to-escape-text-when-pasting-as-String-Eclipse-tips.html ここにあるように、Preferences -> Java -> Editor -> Typing の "Escape text when pasting into a String literal" をオンにすれば、文字列リテラル中に貼り付けた場合、自動的にエスケープされるようになって楽! Java 10 ぐらいで raw string サポートされないかなあ。

  • Google guava と Java 8 - tokuhirom's blog

    Google guava は Java 7 で使っていると便利なのだが、Java 8 の世界では使わないほうがよいように思う。 Java 7 の世界で独自で関数型プログラミングしようとした結果、読みにくいコードになっている面がある Java 8 ととの機能の重複が多い バイナリ互換性を失うような変更が行われるため、後々困ることがある 自分のコードで guava に依存していると、ライブラリが要求している guava のバージョンにあわせられなくてつむことがある guava なにげに色々詰め込みすぎてるのでバイナリサイズがわりとでかい guava にある機能で java 8 にないものはわりとほとんど apache commons で代用できる。 そんな感じです。重要なのはバイナリ互換性まわりで、なにかとクラス削ったりしてくるのではまりがちですね!

  • [java] web.xml から tomcat-embed をランダムポートで起動し、起動したポートを得る方法、または Java webapp のテスト手法について - tokuhirom's blog

    一般的に web application のテストをするには application server を別スレッドで起動してそこにアクセスする方法と、http request を mocking して application code を直接呼ぶ方法があります。前者の方法は、app server の挙動を完全に再現できるし、http client も使い慣れたものを利用できるというメリットがあります。後者の場合には実行速度が速いというメリットがあります。 で、いろいろなメリット・デメリットを考慮した結果、今回は前者の方法でいこうとおもったわけです。 ここでは、maven 構成な一般的な webapp を tomcat で運用する場合のテストを前提とします。 とりあえず、pom.xml に以下のように記述しましょう。tomcat は 7 を使う無難さよ。 <dependency> <group

  • テストについての個人の雑感 - tokuhirom's blog

    テストについての個人の雑感です。ここでいうテストってのは、なんかいわゆる開発をドライブするための開発者用のテストについてであって、品質の保証とかについては一切かんがえてません。 ざっくりいうと 「テストを書いた方が効率的に開発がすすむ場合にはテストを書く」 テストに対する認識 ソフトウェアにたいするテスト というものはソフトウェアそのものの価値には関係しない。 なので、テストにたいしてかけるコストなど、すくなければすくないほど良いにきまっておる。 Open Source Software のテストについて オープンソースソフトウェアの場合、送られてきた patch の品質を travis ci で確認したい、っていう要件とか、手元の環境以外での動作確認などを行いたいので、それなりにテストを書く必要がある。 まして、僕が OSS として公開しているものはライブラリが多い。ライブラリは一般にテ

  • AngularJS を本気でつかうための tips - tokuhirom's blog

    最近、管理画面で AngularJS をつかってみている。 そんな中で、いくつか工夫した点があるのでそれをシェアさせていただきます。 XHR のエラーを表示する XHR のエラーがおきた際のハンドリングをいちいち手でかくのは非効率。管理画面とか中の人しかつかわないので、エラーがおこった旨を随時報告するだけでよい。 そんなケースでは以下のようにする。 angular.module('myapp.exceptionHandler', []) .config(['$httpProvider', function ($httpProvider) { $httpProvider.interceptors.push(function($q, $log, $rootScope) { return { 'responseError': function(response) { $log.error(res

  • Web Application の validation はどのレイヤーでかけるべきか - tokuhirom's blog

    数年前にも同じことかいた気がするけど、最近の状況にあわせてかいてみる。 途中で面倒になってきて説明が雑になっている点をご容赦ください。 言いたいことは「結局、昔はサーバサイドで懇切丁寧なエラーメッセージを出すためにModelではなくControllerでバリデーションに関する知識が必要だったけど 今はJavaScriptでやるから不要だよね111」ってことです。 この表題は、よく話題にあがるところなのだが、理想論としては Model, Controller, Client side のいずれにおいてもきっちりと validation を行うことがのぞましい。 しかし、実際にはなかなか面倒である。ということで、どこをはぶくかというと Controller における Validation であろう。 ユーザーに対する親切なメッセージは JS の側でだすのが理想的。model の validat

  • 複雑なデータ構造の中にうまっているデータのパスをさがす方法 - tokuhirom's blog

    Perl5 の場合、Data::DPath をつかえば、 my $data = { foo => { bar => 'candy', }, }; のようなデータから、 say dpath('/foo/bar')->match($hashref); などとして、candy を簡単にとりだすことができます。 しかし、ここで、たとえば以下のように複雑なデータになってしまった場合は、DPath をつくるのがまじめんどいかんじになります。 my $data = { foo => { bar => 'candy', boz => 3, iyan => { bakan => 7, yappo => 'candy', dan => [ 'suspender', 'hige', 'candy'] }, }, }; そんな場合、以下のようなコードをささっと書いてcandyをさがしましょう。 #!/usr/bi

  • PAUSE における comaint とはなにか - tokuhirom's blog

    よく miyagawa さんとかが comaint が云々といっていますが、意外としられていないのが comaint の実態です。 まずは PAUSE の処理フローについて考えてみましょう。 まず minil release とかして tar ball を PAUSE のサーバーにアップロードします。この時、アップロード先は authors/id/M/MO/MOZNION/HTML-Shakan-0.18.tar.gz とかになります。 そうすると PAUSE のインデクサがブンブンと動きだして、META.json の provides セクションまたは .pm を解析して、package とバージョンの情報が抽出され、データベースに登録されます。 この際、新規ネームスペースや、自分がもってるネームスペースならいいのですが、他の人がもってる namespace の場合には UNAUTHOR

  • Carton 1.0 時代の Web アプリケーション開発フロー - tokuhirom's blog

    Carton 1.0 がでたところで、Web アプリケーション開発のフローを一度見直しておきたい、そんな人も多いでしょう。 そんな方のために僕のやりかたをまとめました。各社、議論の叩き台にしていただければよろしいかと存じます。 もっとも重要なことは、、 Carton を使うときに、僕が最重要だと思うことは、できるだけ番環境と開発環境の環境をそろえるということです。CPAN モジュールが番と開発でバージョンちがうから挙動がちがってた!! なんてのは時間の無駄ですし、よくないことですからね。 ですから、各開発環境と番環境をできるだけそろえることを意識していきたいとおもいます。 DarkPAN は使ってない そんなに DarkPAN 的なのを使うほど、DarkPAN 的なオレオレモジュールがないので、git submodule で管理しています。 【201308061241update】

  • [Perl5]Perlの今がわかる! 『Perl徹底攻略』という本ができました - tokuhirom's blog

    大沢 和宏 cho45(さとう) 小林 篤 和田 裕介 嶋田 裕二(xaicron) 牧 大輔(lestrrat) 奥 一穂 広木 大地 伊藤 直也 長野 雅広 藤原 俊一郎 伊藤 智章 まかまか般若波羅蜜 小飼 弾 近藤 嘉雪 中川 勝樹 宮川 達彦 tokuhirom 藤 吾郎(gfx) 村瀬 大輔 技術評論社 売り上げランキング: 8,143 どうやら、できたみたいですよ。私も Amon2 についてかいております。 WEB+DB の連載をベースに、書き直し、書きおろしの記事もあるので WEB+DB プレスをよんでいる人も買いです。 Web 開発のみにとどまらず、Perl コミュニティのここ数年の開発の成果が凝縮された一冊となっているので、Perl に興味津々のあなたも、興味があんまないあなたも、是非かってよんでいただきたい一冊となっております。