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

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

spring boot その6 - hot deploy

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

UltraMonkey-L7 の sslproxy に Logjam 対策を行う

Firefox ver39 で サイトにアクセスできなくなってしまった。 Firefox でアクセスすると SSL received a weak ephemeral Diffie-Hellman key in Server Key Exchange handshake message. (エラーコード: ssl_error_weak_server_ephemeral_dh_key) というエラ…

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 を利用してマイグレーショ…

linkstationの管理画面にsshのportforwardで接続する

遠隔地の実家にある linkstationのことを考えると管理画面にアクセスする必要性が出てくるかもしれません。 ssh + rsyncでバックアップが行えるようになったので、同じ仕組みを使ってwebの管理画面にアクセスします。 $ ssh -t -L 8080:localhost:9999 ls220…

linkstationのバックアップ その5 rsyncに変更【決着】

方針変更 Amazon Glacierをつかったバックアップは、いざという時のリカバリーコストがかかり過ぎるので廃案になりました。 リンクステーションのバックアップ その四【断念】 - huruyosi’s blog 変わりに自宅から rsyncを行いバックアップします。 構成 rsy…

lucene の インデックスを確認する

前回の記事でインデックスを作成したものの、意図した通りに作成できているのかを確認することができません。 使うツール Luke (http://luke.googlecode.com/svn/)があります。しかし、4.xに対応していないので、対応したものが GitHub にあがっています。 t…

Apache lucene で名寄せを実現する その三 luceneのインデックスを構築する

プロジェクトができたので、既存システムの商品マスタを投入してluceneのインデックスを構築します。 データ投入 テーブル作成 evolutionを利用してテーブルを作成します。作成するテーブルは既存システムの商品マスタです。 # --- !Ups drop table if exist…

Apache lucene で名寄せを実現する その二 PlayFrameworkのプロジェクト作成とtwitter bootstrapを組み込む

まずはPlay frameworkのプロジェクト作成 普通に play new nayoseでプロジェクトを作ります twitter bootstrapを組み込む 必要なファイルを取得 レイアウトの枠組みとして twitter bootstrap を導入します。 http://getbootstrap.com/getting-started/#downl…

Apache lucene で名寄せを実現する その一

やりたいこと システムを新しくするにあたり、商品のマスタデータを整理することになりました。複数の店舗で別々に管理しているので本来であれば同じ商品が別々に登録され、名称も一致していません。 各店舗のデータを集めてきて商品マスタとして一本化する…

linkstationのバックアップ その四【断念】

リンクステーションのバックアップ その三 - huruyosi’s blog の続きです。 Amazon Glacier からリストアする時には極力料金がかからないようにしたいと思います。 Glacireから S3への復元を極力無料枠に収まる様に1時間当たりに復元するデータの合計を 合計…

linkstationのバックアップ その三

リンクステーションのデータバックアップ その二 - huruyosi’s blog の続きです。 s3にバックアップする方法に目処がついたので、次はリカバリーを考えます。 バックアップできていない情報 リカバリーを考えた時に、s3からコピーした後にはファイルは復元で…

linkstationのデータバックアップ その二

リンクステーションのデータバックアップ その一 - huruyosi’s blog の続きです。 s3の動きを試しました。 アップロードの方法 このコマンドで一発です。 $ s3cmd sync --encoding=UTF-8 --recursive --delete-removed /mnt/array1/ s3://バケット名/ sync ……

linkstationのデータバックアップ その一

やりたいこと 実家に設置する予定のリンクステーションのデータをバックアップしたい。 RAID1のディスクが両方共に駄目になった場合に可能性な限りデータロストを少なくする。 前提条件 現地でのオペレーションは期待しない。 追加の機器は購入しない。 バッ…

linkstation LS220D に s3cmd をインストールする

ほぼコピペ LinkStation LS420Dにs3cmdとawscliを入れてみた - Qiitaqiita.com ssh でのログインは 別記事を参考にしてください。 リンクステーション LS220D でsshのログインを可能にする - huruyosi’s bloghuruyosi.hatenablog.com pipのインストール setu…

linkstation LS220D でsshのログインを可能にする

はじめに 容量が2Tの型番が LS220D0202 です。 RAIDにはしてあるけどデータのバックアップは欲しいです。 色々とつまづいたこと 「linkstation ssh」で検索すると出てくる記事は acp_commander.jar で /etc/sshd_config を書き換える記事がでてきます。この…