タグ

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

  • tokuhirom's blog

    OWASP dependency-check を利用して脆弱性のある Java ライブラリに依存していないか確認する 依存しているライブラリに脆弱性がある場合、それを検出できると嬉しい。 OWASP dependency-check の gradle プラグインを入れると、簡単に検出が可能となる。 設定は以下のようであり、非常に容易である。 buildscript { repositories { mavenCentral() } dependencies { classpath('org.owasp:dependency-check-gradle:3.2.1') } } apply plugin: 'org.owasp.dependencycheck' check.dependsOn dependencyCheckAnalyze // https://jeremylong.github.

    penalty
    penalty 2018/06/08
  • mybatis の mapper を groovy で書くぐらいなら kotlin でも良いのではないか - tokuhirom's blog

    http://qiita.com/kazuki43zoo/items/0c6ac5acaee1201a433e http://www.ts-soft.net/archives/145 mybatis の xml は painful なので、groovy で書く、というライフハックがあるようです。 これはとても良いハックなのですが、最近の情勢を考えると、groovy よりも kotlin で書いておいたほうが良いのかなという気がしなくもない。 kotlin の方が勢いがあり、IDEA のサポートも今後 kotlin のほうが受けやすそうですし。 というわけで、kotlin で書いてみるデモコードを書いてみました。 package com.example.dao import com.example.entity.Blog import org.apache.ibatis.annotation

  • gradle が混乱したときにとにかく念入りにキャッシュ消したい時にうつコマンド - tokuhirom's blog

    gradle を使っている時に、変なライブラリを依存に加えた結果、依存関係が混乱し、どうにもならなくなるときがある。 そんな時は設定を戻してから以下のように打てば、とにかくキャッシュは消えて、とりあえずなんとかなる気がする。 pkill -f gradle; rm -rf ~/.m2/repository/ ~/.gradle/caches/ .gradle; ./gradlew --recompile-scripts --refresh-dependencies --rerun-tasks clean check

  • 本気で Server::Starter を fatpack する方法 - tokuhirom's blog

    イチから作るには以下のようにせよ。 curl -o cpanm https://raw.githubusercontent.com/miyagawa/cpanminus/master/cpanm /usr/bin/perl cpanm -n -L tools App::FatPacker::Simple Server::Starter /usr/bin/perl -Mlib=tools/lib/perl5 cpanm -n -L local Server::Starter /usr/bin/perl -Mlib=tools/lib/perl5 ./tools/bin/fatpack-simple --output=start_server local/bin/start_server 一旦 tools/ 以下にインストールしているのがポイント。Server::Starter のビルド時依存

    penalty
    penalty 2015/11/30
  • Server::Starter を Java で利用する方法。または、System.inheritedChannel() の挙動について - tokuhirom's blog

    Server::Starter を Java でも使いたいなあ、そうすれば LL の場合と同じような運用ができるなあ、という要望をたまに稀によく聞きます。 そんなときに決まって返される答えは、fdopen できないから無理じゃないすかね。。 ということである。 SO_REUSEPORT しよう SO_REUSEPORT なら、java でもちょっとの工夫で使えるんじゃないの? っていう説が出てくる。 で、頑張れば jetty で SO_REUSEPORT 使っていい感じに実装できそうだな、ということはわかって、サンプルコードも書いてみた。 しかし、実装してから指摘されたのだが、弊社では CentOS 6 が標準となっており、CentOS 7 が来るのはいつになるのかさっぱりわからない。 つまり、とりあえずしばらくの間は実践で使える可能性がほぼないということだ。 とりあえず、出来たものは出来

  • groovy で ant task を記述したい - tokuhirom's blog

    ant でロジックを記述するのはなかなか大変であるし、今となっては潰しのきかないスキルでもあり、未来ある若者に ant を使わせるべきではない。 しかし、世の中には ant を利用することを強いられている若者もいると聞く。 そういった中で、タスクを groovy でこなす方法を紹介しよう。 groovy でタスクを定義できれば、コードの可読性があがりハッピーになれるはずだ。 groovy でタスクを定義するためには groovy 体を自動で取得する必要があるが、これは maven ant tasks で行う。maven ant tasks は、ant から maven の依存関係解決を呼べるようにしたライブラリである。 maven ant tasks はすでにインストール済みである場合も多いと思うが、入っていない場合は以下のようにすればよい。 mkdir ~/.ant/lib/ wget

  • Server::Starter から簡単に Java プロセスを起動できるようになった - tokuhirom's blog

    JVM には inetd から起動するときのために、file descriptor 0 をソケットとして開く機能がついている。Jetty 等もこの機能に対応しているので、簡単に利用できる。 file descriptor を 0 に固定出来る機能が Server::Starter にあればよかろうということで、以下のような指定で起動できるように実装した。 $ start_server --port=20000=0 java EchoServer この機能により、Java も LL と同様な形態でアプリケーションを運用することが可能となる。 Java では昔から ClassLoader 機構を利用することによりホットデプロイを行うことが可能だが、リソースの解放が漏れるなど開発時の難しさが指摘されている。 Server::Starter 方式では JVM のプロセスごと死ぬので、綺麗な状態で都

  • JavaMail をモッキングしてテストしたい。 - tokuhirom's blog

    Java でメールを送るなら JavaMail で送るのが普通らしい。 とはいえ、生の JavaMail で書いてるとダルいので適宜以下のようにラッパをかましたりする。 文は Freemarker で処理する、的な。Fluent interface っぽくてクール。 当はいぜん Perl で書いていたような、Template file 側に Subject 入れられるようなのを書きたいが、書く時間がない。 誰か書くのを待つか、だれかが教えてくれるのをじっと待とう。 public class OreMailer { private final MimeMessage message; private final Configuration freemarkerConfiguration; public OreMailer(Class<?> klass) throws IOExceptio

    penalty
    penalty 2015/05/27
  • avans での Freemarker の取り扱いを変えた。 - tokuhirom's blog

    既存コードには関係ない話ですが、今朝リリースした 1.5.3 のスケルトンジェネレータでの変更についてです。 avans ではいままで avans-freemarker を利用していましたが、これが将来的に Deprecate されて、新しい方法が採用されます。 今までのスケルトンでは Freemarker 関連のコードがゴチャゴチャしがちでしたが、これらを src/main/java/${pkg}/view/ 以下に配置するように変更。view 関連のコードをこのあたりにまとめるようになっています。 me.geso.sample.view.FreemarkerView me.geso.sample.view.FreemarkerViewFactory me.geso.sample.view.Helper me.geso.sample.view.HtmlTemplateLoader のよう

  • avans アプリの処理フロー - tokuhirom's blog

    avans にかぎらず、java の web application 全般そうですが、 src/main/webapp/WEB-INF/web.xml がエントリポイントになっています。 最近では Spring boot や Dropwizard などのような、web.xml いらずのものもありますが、avans では web.xml で記述することにしています。 web.xml はコンテナがいい感じに読んで実行してくれると思いねえ。 <?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="ht

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

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

  • Perl 初心者がウェブアプリケーションを書く時に気をつけるべきこと - tokuhirom's blog

    $c->req->param('id') みたいなメソッドは使ってはいけない。これは歴史的経緯から残っているものなので、基的に使わない方がいい。 $c->req->parameters->{id} をかわりに使ってください。 Perl の世界には List コンテキストというものがあって、これがウェブアプリケーションを開発するときには鬼門となります。 +{ id => $c->req->param('id') } のようなコードは、param メソッドはリストコンテキストではすべての id を返すので、 ?id=3&id=hasegawa&id=yosuke というようなクエリが来ている場合、 +{ id => 3, hasegawa => 'yosuke' } のようなデータ構造が作成される。これは明らかに意図していない挙動である。 以下の様にかくのがおすすめです。 my $id =

    penalty
    penalty 2014/09/10
  • HTTP::Session2 has been released. - blog.64p.org

    English document is available on metacpan! Following document is written for non-english speakers. HTTP::Session2 を作成した。主に Amon2 で使用することを想定しているが、広く一般につかえるものと思う。 特徴 必要なときに必要なだけ Set-Cookie ヘッダを発行する 必要なときだけストレージにアクセスする クライアントサイドストレージとサーバーサイドストレージの両方をサポート XSRF トークンの管理をセッションライブラリ側に内蔵 AngularJS フレンドリー 上記が、重要なことである。 弊社のようなハイトラフィックなサービスを運営している場合には、できるだけリソースをケチりたいので、そういう思想なものが必要となった。通常の用途では Plack::Session

  • 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

  • Harriet ー テストのときつかうにデーモンの取扱を簡単にするためのフレームワーク - tokuhirom's blog

    https://github.com/tokuhirom/Harriet/https://metacpan.org/module/TOKUHIROM/Harriet-0.01/lib/Harriet.pmテストのときにつかう mysqld, memcached, stf, groonga あたりのデーモンを、.t 単位で起動していては遅くてかなわない。かといって、あらかじめ起動させておくというのも。。 というわけで prove のプラグインとしてよしなにする、みたいなのをがんばってかく、というような試みがおこなわれてきたわけですが、どうもめんどくさい。 なんか適当にやったらうまくうごく、っていうかんじのカジュアルなツールがほしいな、なんておもったりするわけですよ そこで、Harriet ってのをつくってみました。 なんかこう、t/harriet/mysqld.pl っていうファイル名でこん

  • Devel::NYTProf で Starlet/Starman (Plack) でうごくウェブアプリケーションのプロファイリングをおこなう方法まとめ - tokuhirom's blog

    Devel::NYTProf は Perl5 の世界でもっとも人気があるプロファイラである。表示が美麗であるし、ステップごとの処理速度が簡単にわかるのでとても便利だ。 そんな Devel::NYTProf であるが、Starlet/Starman のようなプリフォーク式のサーバーでうごくウェブアプリケーションとくみあわせる場合の方法論として、わかりやすい資料がみあたらなかったのでここに記すものである。 環境変数 NYTPROF を設定する Devel::NYTProf は環境変数で挙動を変えられる。 plack とくみあわせる場合には、以下のようにするとよい。 NYTPROF=sigexit=int:savesrc=0:start=no sigexit=int 通常、Devel::NYTProf は END { } ブロックでデータのファイナライズ処理をおこなうのだが、SIGNAL によっ

  • Perl 5.19.4 ではいった新記法があつい - tokuhirom's blog

    1> my %x=(a => 1, b => 2); $res[0] = [ 'a', 1, 'b', 2 ] 2> %x{a} $res[1] = [ 'a', 1 ] これはあつい!今迄はいってなかったのが不思議なかんじする。

    penalty
    penalty 2013/09/21
    あつい
  • TokuLog 改めB日記

    HTML の pre を折り返したい HTML の pre 要素を利用して表示させているときに、通常は長い行があっても折り返されない。 折り返したい場合は以下のようにする。 .wrap { white-space: pre-wrap; word-wrap: break-word; } gradle の detekt と detektMain の違い ./gradlew detekt では一件も検出されないが、detektMain だと検出されまくるという時がある。 一般的な checkstyle などのプラグインではcheckstyleMain は checkstyle をメインソースセットに対してだけ実行するという意味なので、checkstyleMain と checkstyleTest を足したものにだいたい等しいのだが、detekt の場合は違う。 detektMain/detekt

    penalty
    penalty 2013/08/06
  • JSON::XS とそれにまつわる歴史的な過去の話、まとめ。 - tokuhirom's blog

    今日リリースされた common::sense-3.7 が壊れていた影響で、日の皆さんが混乱しているようなので、丁寧な JSON::XS の歴史解説エントリをここに記す。 perl-5.18 の hash randomization に関するゴタゴタ 5.17 で JSON::XS のテストがこける hash randomization の影響。これにたいし、mlehmann 氏は、hash randomization ではセキュリティが強化されないし、意味がないと主張。 修正版をリリースしない。 reini 氏、Cpanel::JSON::XS をリリース(2013-03-01) https://metacpan.org/module/RURBAN/Cpanel-JSON-XS-2.33_03/XS.pm JSON::XS の修正がなされないので、ついに forkの術。 reini 氏

    penalty
    penalty 2013/07/31