2019-01-01から1年間の記事一覧

画像バイナリデータからMIMEタイプを判定する。

Java で、画像バイナリデータ byte[] の状態のデータから image/jpeg などのタイプを調べます。 画像 File であれば、java.nio.file.Files の probeContentType(Path) を使えば良いのですが、 バイナリデータの状態から検査したい場合が稀にあるでしょう。デ…

Wicket RequestCycle から getResponse した OutputStream で注意すべき点

Wicket 8.2.0 までは、Wicket RequestCycle 即ち、WebPage上で getRequestCycle().getResponse() で取得する org.apache.wicket.request.Responseから 取得する OutputStream に書き込むことで、 HTML でないものをレスポンス応答することに問題は発生しなか…

AjaxFileDropBehavior 利用をラムダで書くようにする

先日の Python 画像加工結果→Javaで受信→WebPage表示 - Oboe吹きプログラマの黙示録 僅かだがスマートに記述するために、Throwable で Serializable な BiConsumer を用意して AjaxFileDropBehavior の継承を用意しました。 Throwable で Serializable な Bi…

Python 画像加工結果→Javaで受信→WebPage表示

画像URL → Python 処理に渡す。。。 → Python PILLOW で画像加工 → 結果をPython 実行の標準出力で出力 → この Python 処理を Java のプロセス起動で実行して 結果標準出力をストリームで受け取る。 → Webページで表示 という流れのシナリオで一切画像ファイ…

Python標準入力と Java

改行で標準入力→リストで取得の Python スクリプト、改行2回で標準入力が完了するスクリプト stdio.py # -*- coding: UTF-8 -*- import sys class Stdio: # 標準入力 @staticmethod def input(): inlist = [] try: while True: i = input('') if i=='':brea…

Wicket-stuff の Editable Grid をカスタマイズして使用する

Webページ上で、編集可能な表といえば、 Handsontable | JavaScript Data Grid Component For Web Apps や、 http://tabulator.info/ が、有名なので、このどちらかを提案することが多いのだが、 Wicket は、これより昔から、DataView 使用と Form 入力フ…

Wicket 9.0.0 - M1 が公開されてる。

Wicket が、Javaのバージョン 11 を最低条件に、Wicket 9.0.0 - M1 をリリースいずれ、、Wicket 9 が登場するということで、JavaのバージョンUPと伴に、Wicket バージョンUPも 加速してきた。。。 wicket.apache.org

flex による均等な3分割レイアウト

CSS

他にも応用がきくので、コピペの為にメモ。 <div class="container-parent"> <div class="container">A</div> <div class="container">B</div> <div class="container">C</div> </div> <ul class="container-parent"> <li class="container">A</li> <li class="container">B</li> <li class="container">C</li> </ul> calc で計算して width を指定する。(レ…

jsTreeノード選択イベントのdata引数

以前、 oboe2uran.hatenablog.comを書きましたが、 この時、選択配下のノードツリーを配列JSONで取得する処理 on メソッドで、select_node.jstree でイベントと結合して $('#tree').jstree({ 'core':{ data':{ "url":"./tree.json", "dataType":"json" }, })…

pdfkit ページヘッダを付ける

Python pdfkit で、ページ番号などページヘッダを付ける方法のメモ wkhtmltopdf のオプション説明 Help を読めばいいのですが、 → https://wkhtmltopdf.org/usage/wkhtmltopdf.txtオプションに、header-left で、ヘッダ左端に付与する文字列、 header-right …

Wicket 8.4.0 がリリース

Wicket 8.4.0 がリリースされた。やっと修正されたバグ [WICKET-6639] - PageStoreManager$SessionEntry.clear produces NullPointerExceptionhttps://issues.apache.org/jira/projects/WICKET/issues/WICKET-6639?filter=allissues監視プロセスからの PageS…

Java→Python Pdfkit実行→PDF受け取る

Wicket で、Python Pdfkit実行してPDFダウンロードさせる方法を考えました。 このメリットは、 ・作成するPDFが、PdfkitがHTMLからPDFへの変換であることから WicketでブラウザにWeb Page 表示してPDF作成イメージを確認できること。 ・HTMLでPD…

pdfkit の from_url

pdfkit.from_file( HTMLファイルPATH , 出力PDFファイルPATH , options=options) pdfkit の from_file だけでなく憶えときたいもの。。pdfkit.from_url( url , 出力PDFファイルPATH , options=options)変数に出力 : False を付ける pdf = pdfkit.from_url( …

pdfkit Python で作成するPDFのサイズ

データーベースなどから読み込んだデータをPDF帳票出力する時に、表組出力~罫線等で囲んで 連続した出力をする場合、 Jasperreports on Java 詳細で複雑な表でも可能だが、XMLテンプレート作成がとても面倒で労力が必要 ReportLab on Python テンプレート作…

Google gson MalformedJsonException のパターン

Google gson で JSON読込みした時に発生する MalformedJsonException のパターンとは、以下の表にまとめることができる。 エラーのパターンは、これ以外あるかもしれないが、だいたいこんなところ。 例外のメッセージ エラーの意味 JSONエラーの例 Untermina…

Chart.js Time グラフの為のデータJSONを作成するクラス

Chart.js https://www.chartjs.org/ X軸=時刻 の線グラフを描画するためのJSONデータ作成する Java クラスを作成して、AJAX通信によるJSONデータ → Chart.js グラフ描画をデザインを除いた 可変の JSONデータ生成だけでも汎用的にならないかと考えました。…

java.lang.reflect.Type インスタンスを生成する方法

総称型orクラスを知りたい時、知らせたい時に java.lang.reflect.Type を伝える為の Type インスタンスを生成する方法 Google guice を使用している前提で2通りある。com.google.common.reflect.TypeToken import com.google.common.reflect.TypeToken; Typ…

Wicket Bootstrap navbar と pagenation

Wicket で、Bootstrap を採用して navbar と Wicket の DataView で描画するページング を Bootstrap の Pagenation にするようにした時、 デザイン作業中は問題ないのですが、 z-index の指定をしないと、 navbar のドロップメニューが Pagenation の下に隠…

MalformedException の捕捉処理を書き易くする。

Google gson の fromJson や JsonParser で発生する JSON書式エラー、MalformedException の捕捉を するとして、try~ctach 文の中に書いてもいいのですが、 1つのロジックで何回もJSON読込みの必要な処理があって、毎回 catch文の中で MalformedException …

JSONの書式チェック

Google gson の fromJson や JsonParser 生成は、次のようなJSONであると { "A": "12", } com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Expected name at line 3 column 2 path $.A と例外を発生してくれます。JSO…

配列型に対するmybatis の TypeHandler よく使いそうなものを作った

先日書いた int[] → ArrayTypeHandler - Oboe吹きプログラマの黙示録 に刺激されて、String[ ] , LocalDate[ ] , LocalDateTime[ ] , double[ ] とのマッピング もあるべきと思い、 GitHub - yipuran/yipuran-mybatis: mybatis used application の方で公開…

int[] → ArrayTypeHandler

SQLクエリの結果から、int [ ]で受け取るための mybatis ArrayTypeHandler先日、PostgreSQL 再帰クエリの結果から、INTEGER型 配列を Integer[] で取得するものを 書きました。 oboe2uran.hatenablog.comInteger [ ] ではなくて、やはり、int [ ] で取得した…

ヘッダ有りCSV をPython で読む時(メモ)

読出し → 行 row[1:] スライスを for ~ in で処理する。例) name, point A, 3 B, 2 C, 1import csv import codecs with codecs.open('sampledata.csv', 'r', 'utf-8') as fp: reader = csv.reader(fp) row = [row for row in reader] for row in row[1:]: p…

PostgreSQL の再帰SQL→Array → mybatis で取得

先日の例、 PostgreSQL の再帰SQL で要素の連結結果を求める。 - Oboe吹きプログラマの黙示録 テーブル名:division id parent_id name 1 null A 2 1 B 3 2 C 4 2 D ここから、連結文字列の結果、id と name "1" "1,2" "1,2,3" "1,2,4""A" "A,B" "A,B,C" "A,…

Java祝日計算を修正、2019年対応

かなり昔に作って、何年もメンテしている 「Java祝日計算」 Java祝日計算 プロジェクト日本語トップページ - OSDNJava版の方で、2019年天皇即位など対応した static メソッドが、内部の enum を破壊するという とても恥ずかしいバグがあったので、修正し…

openpyxl で書く Excel セルの入力規則

最も簡単なサンプル~書き方を示すもの。 from openpyxl.worksheet.datavalidation import DataValidationdv = DataValidation(type="list", formula1='"A,B,C"') # 適用するセルの指定 dv.add(sheet.cell(1, 1)) # シートに入力規則を登録 sheet.add_data_v…

Python での Excel 読み書き

xlrd :読込みのみ。 xlwt:書込みのみ。しかも、*.xlsx は書けない。*.xls しか書けない。 1つのExcelに対して、読込み書込み両方の場合は、openpyxl を使うpip install openpyxl でインストールセル (cell) の行(row), 列(cols) の数え方は、1始まりであ…

Generic JsonDeserializer

先日、Gsonデシリアライザ ラムダで。 - Oboe吹きプログラマの黙示録 や、 Gsonデシリアライザ、汎用化? - Oboe吹きプログラマの黙示録 を書きましたが、 再考して、以下に至りました。 JsonDeserializer実装生成で目標のインスタンスの Supplier と JsonDe…

テスト用に作ったファイル読み込み

Java テスト用に作ったファイル読込み 以下のような static メソッドを書いて使い回してました。 public static String readText(String path) throws IOException{ try(InputStream in = new FileInputStream(path); ByteArrayOutputStream out = new ByteA…

PBKDF2ではなくSHA256で CryptoJS のAES暗合復号

Java と JavaScript 間の AES暗合 - Oboe吹きプログラマの黙示録 に書いたように、PBKDF2WithHmacSHA1 で実行する AES暗合も一計ですが、 単純に、SHA-256 ハッシュ&初期ベクトルを単純にハッシュ値から持ってくる方法も、 CryptoJS で書こうと思えば書けま…