プログラミング

【JDBC】SimpleJdbcInsertで複数の要素を一気にInsertする

BeanPropertySqlParameterSourceの配列を作ってSimpleJdbcInsert#executeBatchに入れるとできます。 //配列を作る関数 private BeanPropertySqlParameterSource[] makeParamArray(List entities){ BeanPropertySqlParameterSource[] sources = new BeanPrope…

【JDBC】SimpleJdbcInsertでDEFAULTを設定したEnumのInsert時にcannot be nullと言われる状況への対処

wrongwrong163377.hatenablog.com 前回の記事がトラブっていた原因が判明したので書き直します。 原因 NOT NULLなEnumカラムに対して値を指定しない場合、com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column '[カラム名]'…

【Arrow】トランポリンを使う【Kotlin】

wrongwrong163377.hatenablog.com qiita.com続きです。 Arrowとは Kotlinで関数型プログラミングをするためのライブラリです。 以下の記事で知りました。 techblog.picappinc.jp トランポリンの実装と使い方 GitHubに実装と使い方(相互再帰で奇偶判定)が上…

【JDBC】SimpleJdbcInsertでDEFAULTを設定したカラムへのInsert時にcannot be nullと言われる状況への対処

wrongwrong163377.hatenablog.com この記事に書いたやり方でも動きますが、より演繹的な方法が有ったのでこちらもどうぞ。 問題 SimpleJdbcInsertでInsert時に、DDLでNOT NULLとDEFAULTを設定したカラムについてMapSqlParameterSourceに値を指定しなかった場…

【プログラミング】sealed classでトランポリンを実装する【Kotlin】

2018/12/22追記 ArrowというKotlinでの関数型プログラミングを支援するライブラリにトランポリンの実装が有りましたので、Arrowを使った方がいいです。 wrongwrong163377.hatenablog.com 本文 sealed classを使ってトランポリン(Trampoline)を実装します。…

【Vue.js】JetBrains製IDEで.vueファイルのインデントを設定する

.vueファイルを2文字インデントに設定しようとして詰まったので書きます。 ideaには.vueファイルのインデント幅設定がありません。 HTMLやJavaScriptの方のインデントを設定しても反映されませんでした。 設定方法 Preferences > Editor > Code Style > Othe…

【プログラミング】末尾再帰を使って反復法(ニュートン法)を実装する【Kotlin】

wrongwrong163377.hatenablog.com 続きです。 数値解析などで用いる反復法も末尾再帰で書いたほうがシンプルになりました。 ということで、今回は例としてニュートン法を実装します。 ニュートン法の解説はネット上にきちんとしたものが有ると思うので飛ばし…

【プログラミング】末尾再帰を使って累乗(バイナリ法)を実装する【Kotlin】

wrongwrong163377.hatenablog.com 続きです。 ネット上のループや通常の再帰を使った実装に比べ、末尾再帰で書いた方がシンプルにバイナリ法を実装できました。 バイナリ法とは をを掛け合わせた形に変形することで乗算回数を抑えるアルゴリズムです。が整数…

【プログラミング】末尾再帰を使う【Kotlin】

末尾再帰とは この記事ではtailrec funで宣言すると末尾再帰最適化がかかる関数全てを末尾再帰であるとします。 なぜ末尾再帰が必要なのか 再帰的な書き方ではコードが美しくなる反面、実行時間が遅い、スタックオーバーフローを引き起こすなど、実用上の問…

【日記】アドベントカレンダーに投稿した【プログラミング】

折角の機会ということで、弊社(言ってみたかった)のアドベントカレンダーに以下2記事を投稿しました。 qiita.com qiita.com 感想 人生初アドベントカレンダーでした。 この記事に引き続きKotlinでSpringBoot触ってましたが、そもそもSpringBootに不慣れな…

【プログラミング】JetBrains製IDEでSQLのハイライトを設定する

SQLにはDialect(方言)が多々あり、IDEに適切なDialectを設定しなければハイライトや補完がうまく機能しません。 設定方法 SQLファイルで右クリックし、Change Diarectを選びます。 以下のようにメニューが出るので、使いたいものを選択します。 まとめて設…

【Kotlin】バリデーション用のアノテーションを自作する【SpringBoot】

↓の続きです。 wrongwrong163377.hatenablog.com 記事執筆時点でのプロジェクトリポジトリは以下。 github.com やること フィールド用に名前が半角スペースで2分割できるかをチェックするCustom Validatorを作ります。 深い理解ができていないので、作って動…

【Kotlin】SpringBootでControllerが受け取った内容をバリデーションするまで【SpringBoot】

↓の続きです。 wrongwrong163377.hatenablog.com Post/Putで受け取った内容をBeanのバリデーション/相関チェックするところまでやります。 この記事の内容が完了した状態のリポジトリは以下。 github.com やること モデルを追加する コントローラーを追加す…

【Kotlin】SpringBootでGetのコントローラーを動かすまで【SpringBoot】

最近黒べこ本(会社のお金で)買いました。サーバーサイドでもKotlinはいいぞ。 今回はKotlinのSpringBootでハロワします。 記事執筆時点でのプロジェクトリポジトリは以下。 github.com やること SpringInitializrでプロジェクトの概形を作る Controllerを…

【JavaScript】オブジェクトをディープコピーする

JavaScriptには素の状態でディープコピーを取得する機能が無く、ただ代入してもシャローコピーとなってしまい、バックアップを一時的に持っておくような作業には使えません。 やり方 自分で書こうとすると手間が大きかったので、Lodashを導入した上で、そこ…

【JavaScript】JasmineでsetTimeOut/crearTimeOutをspyOnする

Karma + JasmineでsetTimeOut/crearTimeOutをモックにします。 コード setTimeOutには戻り値を設定しています。複数回呼ぶときはreturnValues(100, 101, 102...)としてやると、呼ぶごとに戻り値を変えられます。 //timeout系をmock化 spyOn(window, 'setTime…

【HTML/CSS】複数の要素を同期してScrollする【JavaScript】

複数要素を同期してScrollさせます。 強引な実装だと思うので、もっとスマートな実装が有れば教えてください。 やりたいこと 実装 利用例 解説 呼び出し元の記録と、記録のリセット 高さの操作 やりたいこと 以下のような機能を実現します。 複数要素を同時…

【プログラミング】JetBrains製IDEでwebpackのビルド時に長時間Indexingが走る状態への対処

問題 webpadkでbabelのビルドを走らせると、Indexingが長時間走ってIDEの補完やらビルドやらができなくなる状況が発生していました。 原因 ビルド結果の出力されるフォルダもIDEAの管理下になっていたため、大量のファイルをIndexingしていたことが原因でし…

【Java】@FunctionalInterfaceを使ってみる

wrongwrong163377.hatenablog.com 今更ですが、↑の内容ならFunctionalInterface使った方が楽な場面も有るかな?と思ったので書きました。 使い方 全部まとめ これ以降で書く内容を全部まとめたクラスが以下です。 public class Main { @FunctionalInterface …

【HTML/CSS】JavaScriptで新しいタブを開き、そこからPOSTを送る【JavaScript】

以下のような動作がしたかったのですが、1, 2をやるようなコードが落ちてなかったので作りました。 新しいタブを開く 開いたタブからPOSTを送信する 戻ってきたwebページを表示する 内容的には新しいタブをtargetに指定してpost結果を表示するというのが正し…

【プログラミング】JetBrains製IDEでLanguage Injection(言語インジェクション)を使う

JetBrains製IDEで使える言語インジェクションとその使い方をまとめます。 言語インジェクションとは コードを書く中で、HTMLやSQL、GLSLのシェーダーなど、別言語のコードを文字列として書く必要が出てくる場合があります。 しかし、エディタ上ではこれらの…

【Android】picassoでURLから画像をよしなに扱う【Kotlin】

URLで公開されている画像をAndroidから効率的に扱うライブラリとしてはPicassoとGlideが有名です。 今回はPicassoの導入について書きます。 Picassoとは 画像のダウンロード、変形、メモリキャッシュといった処理をよしなにやってくれるライブラリです。 や…

【Android】Retrofitの通信をOkHttpでデバッグする【Kotlin】

wrongwrong163377.hatenablog.com 続きです。 やりたいこと 前回の記事の時点ではRetrofitの通信がどうなっているか把握できないので、上手くいかないときにデバッグするのが困難です。 そこで、OkTTP3を用いて通信のデバッグを行います。 プロジェクトリポ…

【VB】自作したコンポーネントをデザイナーに表示する【.Net】

↓の記事の続きです。 wrongwrong163377.hatenablog.com 前回の問題点 コンポーネントをデザイナーで扱えないので、デザインの確認が難しい状態でした。 今回はデザイナーで自作コンポーネントを扱う手順を書きます。かなりバットノウハウなやり方ですが……。 …

【DxLib】描画スレッドで宣言したハンドルへの描画が止まる問題への対処【.Net】

別スレッドにおいてDxLibを動かして描画を行うプログラムで、exeから起動時に描画が停止する状況と、対応策をまとめます。 プロジェクト全体はGitHubに有ります。 github.com ※このサンプルは描画はUIスレッドから行うという原則に反しているので良くないで…

【HTML/CSS】axiosでAPIを叩く【JavaScript】

ソースコード axiosでGitHub APIを叩くサンプルです。自分(k163377)のリポジトリ情報を取得し、その名前を書き出します。 一瞬詰まった点としては、取得成功時に呼ばれる関数内でエラーを出した場合、処理はそこで中断されてエラー処理関数が呼び出される…

【Android】入力欄にヒントを出す【HTML/CSS】

テキスト入力欄に何を入力して欲しいかを表す灰色の文字列を表示している例は多々有りますが、どう調べればよいか分からず手をつけていませんでした。 Android Androidの場合はxmlにandroid:hint="someText"を書けば出せるようです(今環境が無いので後で試…

【VB】関数ポインタっぽいことをする【.Net】

cやc++の関数ポインタは、相手に処理を渡したいというときに非常に便利なので、別言語でもそれっぽいことがしたいです。 以前の記事ではJavaでFunctionを使ってこれを実現しました。 今回は.NetのFuncを使い、VBで同じようなことを実現します。 参考記事 @Ry…

【VB】フォームをコンポーネントのように扱う【.Net】

Windows Formアプリケーションで、複数の画面で同じように使う機能(外見的な部分というよりは内部ロジック)がある場合、機能をまとめたフォームをコンポーネントとして機能を使い回すと便利です。 この記事ではそのやり方をまとめます。サンプルプロジェク…

【Android】ListViewを使う【Kotlin】

自作クラスを使ったListViewの使い方をまとめます。この記事を書いた時点で用いているサンプルプロジェクトは以下。 github.com やること 表示するレイアウトを作る Adapterクラスを作る アクティビティへの配置とAdapterのセット ListViewをレイアウトに配…