サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
円安とは
oboe2uran.hatenablog.com
jQuery mobile の Collapsible (折りたたみ式コンテンツ)のイベントをハンドルする方法 以下のようなHTML(抜粋)の場合、 <div data-role="content"> <div data-role="collapsible" id="my-collaspible"> <h3 id="title">My Title</h3> <div> <label for="name">Text Input:</label> <input type="text" name="name" id="name" value="" /> </div> </div> </div> 次の JavaScript で Collapsible のイベントをハンドリングする。 $('#my-collaspible').bind('expand',function(){ alert('Exp
MySQL 5.7 あたりは、JDBC ドライバ指定は、 com.mysql.jdbc.Driver だったけど、 以下、Maven で取得したコネクターを使うなら、 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.23</version> </dependen ドライバは、 com.mysql.cj.jdbc.Driver を指定してやらないと、、 Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered
今回は OpenSSL で作成する RSA鍵です。 RSA鍵作成 PEM形式の秘密鍵を生成する → private_key.pem openssl genrsa -out private_key.pem 1024パスワード付きの秘密鍵にするなら、 openssl genrsa -aes256 2048 > private_key.pemで、入力求められるのでパスフレーズを入れます PKC8/DER形式に変換する → private_key.pk8 Java で複合する場合の秘密鍵です openssl pkcs8 -in private_key.pem -topk8 -nocrypt -outform DER -out private_key.pk8DER形式の公開鍵を生成する → public_key.der openssl rsa -in private_key.pem -pubout
CSV文字コードは、「SJISで作成」と、たいていのシステム、プロジェクトは今までそうしてきたであろう。 しかし、UTF-8でも、BOM付きにすれば、Microsoft Excel でも開いて文字化けしないで済む。 昔と違ってメジャーのテキストエディタは、UTF-8 BOM 有りで保存もできるはずだ。 システムの都合で、どうしても UTF-8 のCSVにしたいなんてこともあるが、Excelで作成したCSVを プログラム側が読む為に、SJIS対応にしてきた。 それでも、どうしても UTF-8 のCSVにしたいと訳のわからんプロジェクトは世の中には存在するもので、 Java で、UTF-8エンコードのCSVに BOMを付ける。BOM付を読む。というのを考えた。 BOMを付ける java.io.OutputStream に、BOM の3バイト EF , BB , BF を出力してからCSV BO
Handsontable インスタンスメソッドの getData~ は、よく使うもので、 これは、あくまでも表示データを取得するもの。 getDataAtRow(row) 指定行インデックスの表示データを取得 getDataAtCell(row, col) セルの表示データを取得 getDataAtProp('name') テーブルの列名全てを配列として取得 getData() テーブルの表示データ全てを取得 getData(fromRow, fromCol, toRow, toCol) from~to 範囲の表示データを取得 でも、columns 定義で data 属性を指定して表示する Handsontable で、 columns 定義で指定しないデータを参照するのは、 上のメソッドではできない。 getDataAtRowProp(row, string) : 行インデックスと列名で
Handsontable インスタンスの getDataAtRow( row ) は、表示しているグリッドデータの表示範囲しか取得しない。 つまり、4列存在するデータでも、maxCols : 3 と定義していれば、 表示している3列までしか getDataAtRow はデータ取得をしない。 グリッド表示させないデータを持ち何らかの操作で使用したい場合にどうするか? var data = [ { A:'A1', B:'B1', C:'C1', D:'D1' }, { A:'A2', B:'B2', C:'C2', D:'D2' }, { A:'A3', B:'B3', C:'C3', D:'D3' }, ]; このJSONを3列まで表示して、4列目のキー'D' をコンテキストメニューで選択した時に 使用する場合、、特別なコーディングではないが、以下になる。 var hot = new Han
無償版の Handsontable Ver6.2.2 を使ったとき、HandsontableからCSV出力 を簡単にできるものを探していた。 https://github.com/juantascon/jquery-handsontable-csv を見つけた、MITライセンスである。 中身をよく見ると var csv = "sep=;\n" csv += headers.join(";") + "\n"; csv += row.join(";") と書かれていて区切り文字がカンマではく、";" セミコロンになっているしかも、sep=; と先頭行をつけている。 これでは、カンマ区切りCSVとして意図したものでななくなってしまう。 だから、以下のとおり修正して使えば良いであろう。 var handsontable2csv = { string: function(instance) { va
過去に何度も書いたが、改めて書き直すことにした。 設定ファイルと、logger.py という logging を書いたスクリプトで構成する。 JSON で記述する設定ファイル(logsetting.json というファイル名)で、 Logger 生成で引数 name に対する以下属性を設定する。 Logger 生成で引数 name を省略する場合は、'default' として以下設定を記述する。 format ログメッセージフォーマット dateformat ログメッセージ内の時刻フォーマット datetime.strftime の規則と同じ書式で指定する。 rotation ローテーション方法を指定 daily or size maxHistory 履歴として保持する最大数 maxbytes ログファイルの最大サイズをバイトで指定 (サイズローテーションでは必須) level ログ出力レ
Chart.js ToolTip のカスタマイズはネット検索すれば、まとまった解説も沢山見つかるし、サンプルもある。 http://tr.you84815.space/chartjs/configuration/tooltip.html あえて、時刻をX軸にしたグラフで ToolTipカスタマイズを書いてみた。 options に、tooltips: { ... } を書くことになる。ToolTip のタイトルやラベルは、 callback で、 title: function(tooltipItem, data){ return "タイトル"; }, label: function(tooltipItem, data){ return "ラベル"; }, というようにする。tooltipItemは対象データ、data はグラフデータ全体、 tooltipItem.index で並んだデー
久々に JavaでExcel を読込む apache POI を使う。 try(InputStream is = new FileInputStream("sample.xlsx"); XSSFWorkbook book = new XSSFWorkbook(is)){ XSSFSheet sheet = book.getSheetAt(0); XSSFRow row = sheet.getRow(2); XSSFCell cell = row.getCell(1);org.apache.poi.ss.usermodel.CellType は、NUMERIC であり、getNumericCellValue() で値を参照する必要がある。 参照する型は、double である。 だから、 cell.getNumericCellValue()は、double であり、しかも、Excel の EP
Webページ上で、編集可能な表といえば、 Handsontable | JavaScript Data Grid Component For Web Apps や、 http://tabulator.info/ が、有名なので、このどちらかを提案することが多いのだが、 Wicket は、これより昔から、DataView 使用と Form 入力フィールドの混合での構成で Wicket-stuff から、Editable Grid が提供されてる。 Wicket の最新 latest バージョン 8.4.0 に対応して Wicket-Stuff も 8.4.0 で出してはいる。 Wicket-stuff のGit-Hub からサンプルソースを入手して動かしてみると CSSスタイルは、何もなく原始的な table のままで、後から記述しないとならない。 Handsontable や Tabula
プロジェクト名=ProA と プロジェクト名=ProB が存在して、 ProA で作成した src/test/java で作成したクラスを、ProB の src/test/java で 使用したいという要件です。 簡単な環境設定なのですが、毎度のこと Eclipse 操作に落とし穴があります。 設定の手順を以下の順に行っています。 まず、プロジェクト名=ProBのビルドパス設定画面の初期状態 ここから、「ソースのリンク...」をクリックします。 参照したい ProA のテストソースフォルダを指定して、 フォルダ名は、後で認識しやすい名称に変更します。 「完了」をクリックします。 直後、、、 出力フォルダが、デフォルトではメインソースの出力先と同じになってしまうので、 target/test-calsses に変える作業をします。 作成しソースリンクの出力フォルダを選択 編集をクリックします
Jackson でJSONで表現されたエポックミリ秒またはエポック秒数を、 デシリアライズするには、次のカスタマイズ デシリアライザを用意して、 jackson-datatype-jsr310 の JavaTimeModule に登録して、 ObjectMapper にセットする。 LocalDateTime として読込ませるためのデシリアライザ import java.io.IOException; import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneId; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; import co
MySQL で id など AUTO_INCREMENT を用意するとき、 0埋めで作成されるようにするには、桁数指定で、UNSIGNED ZEROFILL を付ける 例)4桁 CREATE TABLE branches ( id INT(4) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT , branch_name VARCHAR(60) NOT NULL , PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ciサンプル mysql> TRUNCATE TABLE branches; mysql> INSERT INTO branches (bname)VALUES('aaa'),('bbb'); mysql> commit; mysql> SELE
html2canvas+jsPDF で表示したHTML ページの中の任意の領域をPDFに作成する方法は、 以下のようにするが、 (入りきらない場合の対策をしていない) $('#outpdf').click(function(){ html2canvas(document.querySelector("#content")).then(function(canvas){ var pdf = new jsPDF('p', 'pt', 'a4', false); var width = pdf.internal.pageSize.width * 0.90; var x = (pdf.internal.pageSize.width - width) / 2; pdf.addImage(canvas, 'JPEG', x, 30, width, 0); pdf.save('test.pdf'); }
Python スクリプトでファイルの日付を変更するメモ os.utime で、ファイルのアクセス時刻と更新時刻を変更する。 作成時刻は、OS依存で Windows なら win32_setctime パッケージ # -*- coding: UTF-8 -*- import os import pathlib from datetime import datetime p = pathlib.Path('/var/log/test.log') print(p.stat()) # os.stat_result(st_mode=33206, st_ino=275282527223238120, st_dev=3390352220, # st_nlink=1, st_uid=0, st_gid=0, st_size=539, # st_atime=1603799568, st_mtime=1603
この2つを積極的に使うプロジェクトって、意外と少ない。 LocalDateTime localdatetime = LocalDateTime.now(); // LocalDateTime → ZoneDateTime ZonedDateTime zoneddatetime = localdatetime.atZone(ZoneId.systemDefault()); // LocalDateTime → OffsetDateTime OffsetDateTime offsetdatetime = localdatetime.atOffset(ZoneOffset.ofHours(9)); それぞれ、toString() として標準出力すると 2024-04-21T16:49:23.526946600 2024-04-21T16:49:23.526946600+09:00[Asia/To
2020年版までの JetBrains PyCharm の日本語化は、 Pleiades日本語化プラグイン https://mergedoc.osdn.jp/ を使ってましたが、 JetBrains社の公式の言語パックで日本語化するのが正しい方法のようです。 PyCharm をインストールして起動直後 Plugins で Japanese と打ち込んで、Japanese Language Pack / 日本語パック を見つけます [install] を実行します。 [Restart IDE] 再起動をクリックして再起動すれば終わりです。
JSON を解析、出力で使うJackson で、JSONのキー、 Property Name を Snake CASE にしたり Camel CASE にしたりする PropertyNamingStrategy.SNAKE_CASE PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES は、バージョン 2.12 から、@Deprecated になってた! ObjectMapper mapper = new ObjectMapper(); mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE); のように使ってたと思う。 なんでも、非奨励になった理由は、以下に書いてある。 `PropertyNamingStrategy` class in
Eclipse Pleiades 2020年版をインストールして起動したら、 JVM is not suitable for this product; Version 11 or grater is required と表示され起動できなかった。 Java11 以降を前提としており、環境として Java8 で開発したり Java11 で開発したり することがあり、デフォルトを Java8 のJREの PATH にしているとこのように 起動できない。 eclipse.ini で起動オプションに、JavaVM を指定させる。 -vm C:/Java/jdk-11.0.2/bin/javaw.exeのように、Java11 をインストールした場所を追加すると良いのだが、 注意が必要で最後に書いたのではダメで以下のようにする。 vmargs の前に書く! -product org.eclipse.
Tomcat の manager で、WARデプロイには、アップロードのサイズ制限があった。。。 /webapps/manager/WEB-INF/web.xml に書いてある。 デフォルトは、 50MB <multipart-config> <!-- 50MB max --> <max-file-size>52428800</max-file-size> <max-request-size>52428800</max-request-size> <file-size-threshold>0</file-size-threshold> </multipart-config> 100MBにしたければ、、 <multipart-config> <!-- 100MB max --> <max-file-size>104857600</max-file-size> <max-request-siz
Webページデザインとして、サイド(横)に折りたたみするメニューをCSSだけで書いたことがある。 CSSだけでサイド開閉メニュー - Oboe吹きプログラマの黙示録 でもこれには、次の欠点がある。 ・メニュー開いた時に、スライドする方法の為にブラウザ横スクロールが発生してしまう。 ・メニュー開いても、メニュー範囲外のところは 半透明レイヤーを作ってるわけではないのでリンクなどそのまま押せてしまう。 やはりサイド(横)に設置した場合、開いた時にWebページ全体を半透明のレイヤで被せて メニュー以外のところを押せないようにしないとUI として良くない。 昔から方法はいろいろ見かけてたが、どうも気に入らなかった。 BootStrap 使用することと、併用して使えるものを探していた。。 Git-hub に、 https://github.com/blivesta/drawer/ というシンプルに作
OpenSSL で作成した RSA 暗合鍵、どのJSコードが良いのか探した。 JSEncrypt というのが一番使い易い。 電子署名で、SHA256 にするので、CryptoJS から、 sha256.js だけ使う。 <script src="jsencrypt.min.js" type="text/javascript"></script> <script src="sha256.js" type="text/javascript"></script> 公開鍵で暗合化 var crypt = new JSEncrypt(); // 公開鍵 publickey は、Base64エンコード済 crypt.setPublicKey(publickey); var encedtxt = crypt.encrypt(planetext); 秘密鍵で複合 // 秘密鍵 *.pem を読み込んでよけ
jQuery を書いていて、今まで動いてたのは、 HTML に、iframe タグ、src は適当に何かを指すようにしてあって、表示サイズを0 (=あえて、隠しておく) <iframe id="otherframe" src="xxxx" width="0px" height="0px"></iframe> 何からのイベントで、load(function(){} )で、印刷プレビューを表示していたのですが、、 $('#otherframe').load(function(){ document.getElementById('otherframe').contentWindow.print(); }); このコード、jQuery 2.x 系では動いてたのに、3.x にしたら、 TypeError: e.indexOf is not a function が発生 jQuery 3.0 で、l
最も簡単なサンプル~書き方を示すもの。 from openpyxl.worksheet.datavalidation import DataValidationdv = DataValidation(type="list", formula1='"A,B,C"') # 適用するセルの指定 dv.add(sheet.cell(1, 1)) # シートに入力規則を登録 sheet.add_data_validation(dv)formula1 に、文字列で指定する場合、カンマ区切りで分割できなければならない。 add_data_validation で入力規則を登録しなければならない。 シートのセルから入力規則とする場合(←もっともよくある書き方) 都道府県名のプルダウンをサンプルとして、、、 # -*- coding: UTF-8 -*- import openpyxl from openp
jasperreports のパラメータの class を java.util.Date にして、 Date オブジェクトを渡すと、 Thu Sep 18 と出力されてしまう。 任意書式で出す場合、jasperreports のパラメータの class を java.lang.String にして、 Java の jasperrport呼び出し側で、SimpleDateFormat#format(date) で変換するのが自然とは思うが、、 敢えて、 jasperreports のパラメータの class を java.util.Date で、 Date オブジェクトを渡して、jasperreports の方で書式フォーマット変換する場合、 jrxml の TextField は、以下のようにする。 <textFieldExpression class="java.lang.String"
Jasperreports でサブレポートを出力するときの jrxml を準備するのに、いつもデータを渡すコレクションのラップを テンプレートで設定を書き込む方法を忘れて、後からどうやるんだっけと悩んでしまうので、手順メモです。 Jaspersoft Studio 上でテンプレート jrxml の先頭を Outline タブで選択します。 選択したら、プロパティで、import のところを入力します。 すると以下のようにテンプレート jrxml が Javaとしてインポートするクラス、パッケージ指定を設定するものが 出てきます。 [Add Class] をクリックして、コレクション渡しの目的の net.sf.jasperreports.engine.data.JRBeanCollectionDataSource を選択します。 設定します。 この設定をしておくことで、sabreport の
よく見かけるサンプルを基に書くと、以下のように固定リストを指定した書き方がある。 try(Workbook book = new XSSFWorkbook(); OutputStream out = new FileOutputStream("a.xlsx")){ XSSFSheet sheet = (XSSFSheet)book.createSheet("シート1"); IntStream.rangeClosed(0, 20).boxed().forEach(i->{ sheet.createRow(i).createCell(1).setCellValue(i); }); // 入力規則 Helper XSSFDataValidationHelper dvHelper = new XSSFDataValidationHelper(sheet); // 入力データ XSSFDataVal
jQuery AJAX通信でHTTPリクエストヘッダに任意のコードを付与するには、 headers{ }, を付ければ良いのだが、 折角なので、Wicket でページ表示のタイミング=Page コンストラクタ実行で付与する値を決めて 送るようにする。 ページが読込む JavaScript は、以下のように用意(途中省略) var custom_id; var c_type; var setCustom = function(a, b){ custom_id = a; c_type = b; }; // 省略 $.ajax({ type: 'POST', timeout: 10000, url: "/xxxx", headers: { "CUSTOM_ID" : custom_id, "C_TYPE" : c_type }, data: { "kind":"add", "xscaleLast
次のページ
このページを最初にブックマークしてみませんか?
『Oboe吹きプログラマの黙示録』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く