huruyosi’s blog

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

さくらのクラウドを使ってLS220DにアクセスするダイナミックDNSを実現する

目的 自宅に導入したLS220Dにスマホアプリの WebAccessiでアクセスを行える環境を作ります。 アクセスする時にはhttpsでアクセスしたいので独自ドメインを導入し、サーバ証明書も設置します。BuffaloNas.comからbuffalonas.comネームでアクセスすると、自宅…

チュートリアル 「D3.jsとTopoJSONで地図を作る」を元に日本地図を作ってみる。

やりたいこと 前回は http://ja.d3js.node.ws/blocks/mike/map/ をに従ってイギリスの地図を作成しました。イギリスでは、いまいち実感がなく、チュートリアルの序盤で行うデータ作成がイギリスを対象にしていたからです。それならば日本を対象にしてデータ…

チュートリアル 「D3.jsとTopoJSONで地図を作る」をやってみる

地図を描く d3.jsを調べていてやってみたかったことの一つとして地図を描くことなので、D3.js と TopoJSON で地図を作るにチャレンジしてみます。 準備 地図を描くためのデータを準備します。 gdalをインストール GDAL(Geospatial Data Abstraction Library …

General Update Pattern, IIIを読む

アニメーションを行うことで、 .enter()、.update()、.exit()を可視化する 最後の General Update Pattern, III では .data()メソッドに与えられたデータに追加、更新、削除が生じた時に、それぞれに異なるアニメーションを行います。 アニメーションの指定 …

d3.js の General Update Pattern, II を読む

データにキーを持たせる方法 d3.js の General Update Pattern, I を読む - huruyosi’s blog でのデータ更新は配列の要素に基づいた方法であったので、サンプルを見ていても「更新」されたとするデータがみためとはずれている感覚がありました。 General Upd…

d3.js の General Update Pattern, I を読む

huruyosi.hatenablog.com の続きです。 漠然と、d3.jsで作成したグラフを動的に更新する方法が分からないのでd3.js でデータを更新する方法を理解するために General Update Pattern, I を読んでみます。 やっていること。 a~zの文字列を任意に抽出して表示…

d3.jsのグラフを思うようにカスタマイズできずに手が止まってしまう件。

悩み所 サンプルを参考にして望んでいたひとつのグラフを作成することができたものの、それに手を加えようとしたら手が止まってしまいました。 今、やりたいことは下の二つです。 ブラウザのウィンドウがリサイズされたら、リサイズ後のウィンドウサイズに応…

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列)での販売数量に加えて、紹介な…

Dockerコンテナで稼動しているnginxを使ってLet's Encrypt の証明書を発行する - 実践

前回思いついたことを実際に試して見ました。 huruyosi.hatenablog.com 目次 実際にやってみる webroot用のコンテナを作成 nginxのコンテナの起動オプションを変更 更新用Let's Encryptのコンテナ作成 証明書の更新を行う cronで更新する やった後に気づいた…

Dockerコンテナで稼動しているnginxを使ってLet's Encrypt の証明書を発行する - メモ

初めての Let's Encrypt 検索すればヒットするので、ここでは割愛。Dockerのホストでは --standaloneで証明書の発行を確認でき、nginxが稼動しているDockerコンテナ内では/letsencrypt-auto certonly --webroot -w /usr/share/nginx/html -d ホスト名を手打…

d3.jsで作成したグラフの項目名を折り返す

Diverging Stacked Bar Chart を参考にして横方向の積み上げグラフを作った時に系列のラベル名が長いと左余白を超える場合があり、見た目が格好悪いものになってしまいます。 「svg 折り返し」で検索してみると foreignObjectを使う方法が出てくるけれども、…

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時間のずれということはタイムゾー…

sbadminのサイドバーを縮小させる

メインコンテンツの表示領域を確保するために、左側に配置されているサイドバーの幅を狭めたいと思い探していると既に作成されている方がいらっしゃいました。 [SB Admin 2] BootstrapのAdmin Theme - 世界の一部 目的を達していたので、sbadmin2の現時点で…

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がコミットされないことがあるので、リリース用のパッケージを作成する時にコンパイルしパッケージに含めること…

D3.js の勉強を始める 3回目 - 終わり

写経一通り終わり 前回、前回と行ってきた D3.jsのチュートリアル が終わりました。 huruyosi.hatenablog.com huruyosi.hatenablog.com 次の目標は ギャラリーを参考にして基本的な円グラフを作成する。 13.棒グラフの作成 の結果 https://github.com/huruyo…

D3.js の勉強を始める 2回目

今回は チャプター7~10まで 前回の続きになり、チャプター7~10まで http://ja.d3js.info/alignedleft/tutorials/d3/ 今のとこは順調にいけている。ここまではD3.jsを使うための準備だったと思う。SVGを使っているとN88-BASICやX-BASICでワクワクしながらプ…

D3.js の勉強を始める

かっこいいグラフを作りたくて D3.jsの勉強を始めました。手ごろなチュートリアルがあるので写経を行っています。 写経の結果は github (https://github.com/huruyosiathatena/d3js_study)にあります。Spring bootのWebアプリに組み込む予定なので、Spring b…

GitHubからのcloneで「Problem with the SSL CA cert (path? access rights?)」

落ちは過去に行った設定が原因での自爆でした。環境は CentOS 7.1 です。 事象 $ git clone https://github.com/xxxx/a_repository.git ってやる実行と Cloning into 'a_repository'... fatal: unable to access 'https://github.com/xxxx/a_repository.git'…

アクセス数が少ないサイトで翌朝にアクセスすると 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の具象クラス…

Redmine 3.1.1.stable と eclipse 4.3を連携させる

環境 Redmine 3.1.1.stable Redmineのプラグイン https://github.com/joaopedrotaveira/redmine_mylyn_connector eclipse 4.3 (pleiades-e4.3-java_20140309) eclipseのプラグイン https://github.com/ljader/redmine-mylyn-plugin インストール Redmine Red…

mysql で 最大値を残して delete する

きっかけ Oracleでは delete from table_a where id < ( select max(id) from table_a ) とやるのだけど、MySQLでは ERROR 1093 (HY000): You can't specify target table 'table_a' for update in FROM clause となってしまう。ふと、Oracleの SQL*Plusでは…

MySQLのダンプファイルを圧縮しながら書き出す

100Gを超えるログテーブルをmysqldump でダンプする時に、名前つきパイプを使うことで圧縮しながらファイルに保存することができます。こうする事で、圧縮前のダンプファイルを保存するためのディスク領域を確保する必要がないので、ディスクの空き領域が少…

Jasper Reportのクロス集計で横軸が1ページを超えた時には改ページさせる

クロス集計(crosstab)を使った集計を行った結果が横軸が1ページの幅を超えた時に、縦方向に空きがあるとクロス集計が2行になって表示れます。 stackoverflow.com この場合には、 crosstabのプロパティ「Column Break Offset」を印刷範囲の横幅と同じにするこ…

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 と出力さ…