[JavaScript] Chart.jsで確率分布のシミュレーション表示 その2
その1 では、確率分布をシミュレーションするための発生頻度を求める関数を作成した。 今回は二項分布を生成して、Chart.jsでグラフに表示してみよう。
[JavaScript] Chart.jsで確率分布のシミュレーション表示 その1
正規分布のイメージとして、二項分布の試行回数をどんどん多くしていった時の近似というのがあるけど、実際にそういう状況をシミュレートしたら案外上手くいったので、調子に乗って他の分布もやってみた。 確率密度関数を使うのではなく、乱数を使って分布を生成しているので、リロードするたびに...
[bash] xargsでシェル関数を並列処理
シェル関数を並列実行したい シェル関数を並列実行したい時にxargsで関数をそのまま呼んでもうまくいかない。 parallel.sh #!/bin/sh function func() { sleep 1 echo $1 } echo $1 | tr -s ...
[Java] なぜ、DBコネクションをマルチスレッドで共有してはいけないのか
マルチスレッドでDBにアクセスする場合、各スレッドごとにコネクションプールからコネクションを取得する形式が多い。 DBコネクションはマルチスレッドで共有しない方がいいと言われるけど、なぜ共有してはいけないんだろうか。 いくつかのDBMSの説明を見てみよう。
[Oracle] 文字列と数値の暗黙の型変換
SQLでは型が暗黙に変換されてしまうことがある。その中でも文字列と数値はやってしまいがちだけど、理解していないと機能的にもパフォーマンス的にも問題が発生する。 具体的にどっちがどっちに変換されるのか見てみよう。 検証はOracle 18c
[Oracle] autotrace traceonly explain で表示されるSQL_IDが変わってしまう
SQL_ID取得 [Oracle] SQL*PlusでSQL_IDを取得する では、sqlplusの set feedback on sql_id を使って特定SQLのSQLIDを取得する方法を紹介した。 SQL> set feedback on sql_id SQ...
[Oracle] SQL*PlusでSQL_IDを取得する
set feedback on sql_id Oracleの18.1から、SQL*PlusでSQL_IDを取得することができるようになっている。 SQL*Plusリリース18c, バージョン18.1での変更点
[PowerShell] Unixシェルスクリプトとの比較 その2
Unixシェルスクリプトとの比較 その1 の続き sed sedで文字列置換。 $ printf "apple\nbanana\norange\n" | sed "s/an/xyz/g" apple bxyzxyza orxyzg...
[PowerShell] Unixシェルスクリプトとの比較 その1
シェルに慣れ親しんでいるUnix/LinuxユーザがPowerShellを使おうとしたときに、ちょっととっつきにくいところがある。 それは、Unixではgrepやsedといった個別のコマンドが担っている概念をPowerShellでは言語が担っているというところじゃないだろうか。...
[Oracle] OracleのNUMBER型の謎
PLS_INTEGER OracleのPL/SQLにはテーブルには使えない数値型が存在する。 これはNUMBER型のような10進型ではなく、Cのintのような内部2進の32ビット整数型なので高速に動作する。
[bash] コマンドの前で変数への代入をする
bashでコマンドの前で変数への代入をする構文を正確に理解してなかったので、整理。 LC_ALL=C sort ... よく見かけるのはこのパターン。 $ LC_ALL=C sort ... ソート条件に言語設定が影響してくるのを防ぐのと、パフォーマンス対策で事前に...
[Oracle] select句のアスタリスクと擬似列
取得日時も付加しておきたい Oracleでv$sessionのような動的ビューのログを取るときなんかに、取得日時も付加しておきたい場合がある。 こんな感じ select to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS'), ...
[Oracle] DockerにSQL*Plus, SQL*Loaderがつながらない
つながらないのだ Oracle 19cをDockerで動作させて、ネットワーク越しに(というかコンテナ外から)SQL*Plus, SQL*Loaderでつなげようとしたら、つながらない現象が起きた。 SQL*Plus $ sqlplus user/password@loc...
[bash] 標準エラー出力をフィルタリング
標準エラー出力なんとかしたい bashでの作業中に標準エラー出力に、実害のない警告メッセージが延々と出てくることがないだろうか。 他のエラーメッセージが紛れてしまうので、これを除去したい。 $ somecommand わかってるからもういいよ なんかエラー! わかってるから...
[Java] スタティックイニシャライザでのエラー処理
[Java] JDBCドライバもサービスプロバイダーでできてる ではスタティックイニシャライザ内でDrivaerManagerにJDBCドライバを登録した。 しかしながら、DriverManager.registerDriverはSQLExceptionをスローするため、チェッ...
[Java] サービスプロバイダーを作ってみよう 〜Java9以降〜
Java9のモジュール機構 サービスプロバイダーを作ってみよう Java8以前 ではJavaのサービスプロバイダーを作った。 このときはjarの中にMETA-INF/services/ファイルを配置したけど、Java9以降ではこの辺に新しいやり方が導入されている。 まずはJ...
[Java] JDBCドライバもサービスプロバイダーでできてる
前回 はサービスプロバイダーを作って見たけど、試しにJDBCドライバを実装してみよう(中身はないけど)。 サービスに相当するものはjava.sql.Driverインターフェースとして用意されているので、これを実装する。 大事なのはスタティックイニシャライザで DriverM...
[Java] サービスプロバイダーを作ってみよう 〜Java8以前〜
サービスと言っても、今回やろうとしているのはWebサービスとかではなくJavaが備えているモジュール切り替えの仕組み。 例えば、JDBCドライバは様々なDBMSに対応しているけど、インターフェースに従ってさえいれば、切り替えは比較的容易になっている。 登場人物 登場人物はサ...
[Java] ジェネリックメソッドの戻り値は境界ワイルドカード型にしない
前回 に続き、Effective Javaネタ。 PECS Effective Java 項目31 APIの柔軟性向上のために境界ワイルドカードを使う によると"最大限の柔軟性のためには、プロデューサ(生産者)かコンシューマ(消費者)を表す入力パラメータに対してワイ...
[Java] ConcurrentHashMapとHashMapの非互換性
Effective Javaによると Effective Java 第3版の項目81 "waitとnotifyよりも並行処理ユーティリティを選ぶ"によるとConcurrentHashMap.putIfAbsentをそのまま使うよりも、 public sta...