huruyosi’s blog

プログラミングとかインフラとかのメモです。

java

Jasper ReportでExcelを作成した時にExcelの数式にする

やりたいこと 下の様に出力されるExcelを作ります. A B ~ U V W X 1 日付 曜日 ~ EC 実店舗 その他 合計 2 1月1日 金 ~ 12 4 =sum(U2:W2) 3 1月2日 土 ~ 68 78 =sum(U3:W3) システム化されているECサイト(U列)と実店舗(V列)での販売数量に加えて、紹介な…

jacksonでjava.util.Dateをデシリアライズすると9時間ずれる

"sched_date": "2015-09-12"をデシリアライズしてjava.util.Date sched_dateにマッピングすると2015年9月12日 0時0分0.0秒を期待しているのですが、java.util.Date#.getTime()を行ってみると、9時間進んでいます。 日本で9時間のずれということはタイムゾー…

spring boot で context-pathを設定する

素のservletで開発を行っている頃は当たり前の様に設定していたcontext-pathを spring boot MVC で設定します。 設定方法 application.yml 設定は application.yml に「server.contextPath」を設定します。 server: contextPath: /hogeApp コントローラー @R…

リリース用のパッケージを作成する時にJasperReportの.jrxmlをコンパイルする方法

課題 今はiReportで.jrxmlのデザインとコンパイルを行い出力された.jasperをソースの一部としてリポジトリにコミットしているが、時折、.jasperがコミットされないことがあるので、リリース用のパッケージを作成する時にコンパイルしパッケージに含めること…

アクセス数が少ないサイトで翌朝にアクセスすると java.net.SocketException: Broken pipe が発生する

事象 昨日は使えたのに、次の日になると調子java.net.SocketException: Broken pipeが発生していました。 スタックトレースは下の通りで、 MySQLサーバとの通信でエラーが起きています。 10:10:21.580 [http-nio-8080-exec-3] ERROR o.a.c.c.C.[.[.[.[dispat…

spring boot をjar で実行した時にjasper reportのサブレポートを指定する

前回の記事でTODOで残った件です。 huruyosi.hatenablog.com java.io.InputStream を使う ググってみるとサブレポートのsubreportExpressionのclassにjava.io.InputStreamを指定し、値に getClass().getResource("/path/to/my/report/in/a/jar/subreport.jas…

AbstractViewを継承してJasperReportでCSVファイルを作成する

CSVファイルをダウンロードする実装として、CSV形式でレンダリングするviewを実装します。 実装 コントローラー パラメータに応じてデータを検索します。検索結果はbeanのListに設定します。 org.springframework.web.servlet.view.AbstractViewの具象クラス…

spring boot その9 - spring security で Remember-Me認証を行う

実装したソースは https://github.com/huruyosiathatena/springboot/tree/b5e82c5b8e24f4a7508d7fd86ca6cc311fe43adf にあります。 Remember Me 認証 ログイン画面にある にある「Remember Me」にチェックをつけてログインすることで、次回アクセス時に認証…

spring boot その8 - spring security で 認可を行う

実装したソースは https://github.com/huruyosiathatena/springboot/tree/8ffe6e7ab202945b9399b1d34eb4462de223dcb1 にあります。 前回( http://huruyosi.hatenablog.com/entry/2015/08/08/003303 ) は認証を行ったので、今回は認可です。 認可の方法 コン…

spring boot その7 - spring security で 認証を行う

実装したソースは https://github.com/huruyosiathatena/springboot/tree/8bb72d41f62d28039f5c7d0ccda8f4036ecea8ca にあります。 ログインを実装する spring security を利用してログイン画面を作ります。今回は認証を行うだけで権限に基づいた制御は次回(…

Play framework 1.2.7 で “Request exceeds 8192 bytes”が発生した

事象 Play framework 1.2.7 で実装した RestAPIに c# で実装した RestClient から GET /path/to/api?var1=hoge&var2=huga~以下省略 といった要領でQueryStringのパラメータを大量に設定すると logs/application.log に Request exceeds 8192 bytes と出力さ…

spring boot その6 - hot deploy

実装したソースは https://github.com/huruyosiathatena/springboot/tree/bf14db6cee0c0eba88894932722a514053f49bbd にあります。 再起動せずにjavaのソースコードの変更を反映 小さな修正を行う都度にjavaを再起動するのは手間なので pom.xmlを編集してhot…

spring boot その5 - SB Admin2 を組み込む

実装したソースは https://github.com/huruyosiathatena/springboot/tree/4589c56c81f9907a55356d44704a3ff08235fe39 にあります。 レイアウトを SB Admin2 に変更 レイアウトでもう少し楽するために SB Admin2 を組み込みます。2015年8月2日時点でSB Admin2…

spring boot その4 - Thymeleaf の layout を利用して、 ページ固有の title、meta、 style、script タグを出力する

実装したソースは https://github.com/huruyosiathatena/springboot/tree/3cf89896ff8e272b437f988f1c39f2d4a988be0e にあります。 layoutを使って 主コンテンツ以外を出力する 一つ前の記事で Thymeleaf のlayoutを使いました。 spring boot その3 - テンプ…

spring boot その3 - テンプレートエンジンの Thymeleaf を組み込む

実装したソースは https://github.com/huruyosiathatena/springboot/tree/db743062dad8411906e959d00e3326c4249ca50f にあります。 view に Thymeleaf を使う Tthymeleaf を利用して、 前回( spring boot その2 - bootstrapを組み込んで静的なページを表示す…

spring boot その2 - bootstrapを組み込んで静的なページを表示する

実装したソースは https://github.com/huruyosiathatena/springboot/tree/7841b5ca6c45bbbe0ca326d9eb2e98ea9c79a511 にあります。 TODO 直す css を考えるのは得意ではないので Bootstrap にたよる これから先の画面レイアウトやデザインなどで悩むことが無…

spring boot その1 - プロジェクト作成

実装したソースは https://github.com/huruyosiathatena/springboot/tree/f885430ac57db879e58cf281c75bec85a6dedac1 にあります。 Hello world web アプリケーションを作成して hello world を目指します。 ほぼ、コピペです。 spring-boot - Spring Bootで…

spring bootを試していく

やっていくこと webの画面を作る twitter boot strapを組み込む テンプレートエンジンに Thymeleaf を組み込む spring-boot-starter-security を使って CSRF対策 Spring Data JPA でデータベースアクセス MySQLにアクセス Flayway を利用してマイグレーショ…