Learning Go Chapter 11. The Standard Library

The Standard Library Go の標準ライブラリは Python の "batteries included" の哲学と同じで、アプリケーション開発に必要なライブラリを標準装備している io とその仲間たち Goの入出力哲学の中心は、ioパッケージにある Reader と Writer インタフェース…

データ指向アプリケーションデザイン第9章: 一貫性と合意

ch09 一貫性と合意 耐障害性をもつシステムを構築する最も最善の方法は、有益な保証をもつ汎用的な抽象概念を見出し、それを一度だけ実装し、アプリケーションをその保証に依存させること 例えば、トランザクション アプリケーションはクラッシュすることな…

データ指向アプリケーションデザイン第8章分散システムの問題

プロセスの一時停止 分散システムにおけるクロックの危険な使い方例 パーティションごとに 1 つのリーダーをもつデータベース 書き込みを受け付けられるのはリーダーのみ 自分が書き込まれても安全であるとノードが知る方法 例: 他のノードからリースを取得…

Learning Go Chapter 10 Concurrency in Go

Concurrency in Go はじめに Go の並行処理モデルは他の言語と少し違う CSP (Communicating Sequential Process) という理論に基づいた並行処理モデル 並行処理いつ使うのか 並行処理を行うと必ず実行速度が速くなると誤認している人が多いが実際は違う 並行…

Learning Go Chapter 9. Modules, Packages, and Imports

モジュール、パッケージ、インポート リポジトリとモジュール、パッケージ Go のライブラリ管理は3つの概念から成り立つ リポジトリ: github のようなバージョン管理システムにおけるプロジェクト モジュール: リポジトリに格納された Go ライブラリやアプリ…

セッションの分離性レベルを変更、確認する方法

SQL> alter session set isolation_level = READ COMMITTED; Session altered. SQL> select sid, name, isdefault, value from V$SES_OPTIMIZER_ENV where name like '%isolation%' and sid = (select sys_context('USERENV', 'SID') from dual); SID NAME I…

依存 jar を特定のディレクトリ化にコピーして jar を生成する方法

以下は libs 以下に依存する jar を入れる方法 jar { manifest { attributes "Main-Class": "$mainClassName" } zip64 = true def copySpec = project.copySpec { into "libs" from { configurations.runtimeClasspath.collect { it } } } with copySpec } $…

coc.nvim で変数や関数のドキュメント情報をポップアップで表示するショートカット設定

~/.config/nvim/init.vim " Use K to show documentation in preview window. nnoremap <silent> K :call <SID>show_documentation()<CR> function! s:show_documentation() if (index(['vim','help'], &filetype) >= 0) execute 'h '.expand('<cword>') elseif (coc#rpc#ready()) ca</cword></cr></sid></silent>…

std::ostringstream を初期化して再利用する方法

C++

std::ostringstream::str で "" を引数に入れてバッファをクリア std::ostringstream::clear で内部状態をクリアリセットする #include <sstream> int main() { std::ostringstream ss; // ostringstream にバッファを入れる ss << "hoge"; // 1 ss.str(""); // 2 // </sstream>…

[Oracle Graph Server 20.4] PGQL CREATE 文で発行される SQL と PGQL を表示する方法

String query = String.format( "CREATE PROPERTY GRAPH %s " + " VERTEX TABLES(n1 LABEL hoge PROPERTIES(id, name, rate), n2 LABEL hoge2 PROPERTIES(id, name, rate)) " + " EDGE TABLES(e1 SOURCE KEY(n1_id) REFERENCES n1 DESTINATION KEY (n2_id) R…

nbconvert --to html で html コンバートしたノートブックで plotly のグラフが描画されない問題の解決

環境 $ sw_vers ProductName: Mac OS X ProductVersion: 10.14.6 BuildVersion: 18G4032 $ pip list | grep -E "jupyter|plotly" jupyter 1.0.0 jupyter-client 5.2.4 jupyter-console 6.0.0 jupyter-core 4.4.0 jupyterlab 2.1.2 jupyterlab-server 1.1.3 p…

Connection Pool データソースの設定

前提 OS: Oracle Linux Server release 7.6 apache-tomcat: 9.0.34 java version: 1.8.0_241 Java(TM) SE Runtime Environment (build 1.8.0_241-b07) Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode) 手順 1. webapps/<コンテキスト名>/…

Effective C++ 第三章 その2

C++

項目11: 未定義private関数よりも =delete を優先する C++ が必要に応じて自動的に作成する関数 = 特殊メンバ関数 その代表がコピーコンストラクタとコピー代入演算子 C++98 では private にすることで対応していた この関数にアクセスしようとしても、未リ…

Effective C++ 第三章 その1

C++

項目7: オブジェクト作成時の {} と ()の違い 初期値の設定方法は以下の3つ {} = () ユーザ定義型では、初期化構文によって呼び出される関数が異なる Widget w1; // デフォルトコンストラクタを呼び出す Widget w2 = w1; // コピーコンストラクタを呼び出す …

Effective C++ 第二章

C++

項目5: 明示的宣言よりも auto を優先する auto で宣言することのメリット 複雑な型宣言の省略 template<typename It> void f(It b, It e) { while (b != e) { typename std::iterator_traits<It>::value_type cV = *b; // auto cV = *b; } } 未初期化のエラーを防げる auto </it></typename>…

NeoVim + dein の導入

vim

はじめに Mac にドキュメントエディタとして neovim を、neovim のプラグインマネージャとして dein をインストールします。 環境 $ sw_vers ProductName: Mac OS X ProductVersion: 10.14.6 BuildVersion: 18G4032 1. neovim のインストール homebrew で一…

CSV で Vector プロパティをロードする

環境 Oracle Graph Server Shell 20.1.0 PGX server version: 19.4.0 type: SM PGX server API version: 3.6.0 PGQL version: 1.2 前提 Pgx Server で allow_local_filesystem が true になっており、かつ datasource_dir_whitelist に /opt/oracle/oradata …

ローカルにある CSV で Graph をロードする

環境 Oracle Graph Server Shell 20.1.0 PGX server version: 19.4.0 type: SM PGX server API version: 3.6.0 PGQL version: 1.2 前提 Pgx Server で allow_local_filesystem が true になっており、かつ datasource_dir_whitelist に /opt/oracle/oradata …

Vector プロパティをセットする方法

環境 Oracle Graph Server Shell 20.1.0 PGX server version: 19.4.0 type: SM PGX server API version: 3.6.0 PGQL version: 1.2 準備 Graph の作成 var g = session.<Integer>newGraphBuilder(IdType.INTEGER).addVertex(1).build() Vector プロパティの設定方法 Ve</integer>…

Graph Server 20.1 で GraphConfig をbuildできない問題

setKeystoreAlias("alias") でbuildすればおけ

実践 Rust 入門 第4章プリミティブ型

Rust における型 すべての値の型はコンパイル時に決定される これは安全性、効率性という利点がある 安全性: エラーの早期発見、所有権システムとの連携による型安全かつデータ競合のないプログラム開発の促進 効率性: メモリの細かい制御、コンパイラによる…

Rust 環境構築 + Hello, World + Cargo 基本

安全性、並列性、速度の3つにフォーカスしたシステムプログラミング言語である Rust に興味を持ったので、 まずは環境構築から始めてみます。 Rust 環境構築 Rust コンパイラは様々なプラットフォームをサポートしていますが、サポートのレベルが3つに分け…

PDBの起動状態のオープンモードの保持・破棄

概要 CDB 再起動時の 1つ以上の PDB のオープン状態を保持できる 方法 オープンモードを保持するように設定する 特定の PDB を設定する場合 SQL> ALTER PLUGGABLE DATABASE pdb1 SAVE STATE; 複数の PDB を設定する場合 SQL> ALTER PLUGGABLE DATABASE pdb1,…

やっくしぇいびんぐ

目的とすることを成し遂げる前の本質的でない事に時間をかけてしまう、またはかかってしまう様のこと。 IT業界ではよく使われる言葉。 例えば、 Tensorflow でディープラーニングしよう!!と思って、インストールしてみたらGPU版をインストールできず、調査…

vagrantでboxファイル圧縮 [ProviderがVirtualBoxの場合]

1. 仮想マシン上で以下を実行 $ sudo su - # umount /vagrant # yum clean all # dd if=/dev/zero of=/EMPTY bs=1M # rm -f /EMPTY 2. 仮想マシンをシャットダウン $ vagrant halt 3. VirutalBoxのファイルを形式をvmdk から vdiに変更したり諸々 # VirtualB…

Windows でファイル結合

分割されたファイルを結合するためには、コマンドプロンプトで以下のように実行する。 # テキストファイルの場合 copy hoge01.txt + hoge02.txt + hoge03.txt hogehoge.txt # zipのようなバイナリファイルの場合 copy /b hoge.zip01 + hoge.zip02 + hoge.zip…

mecabで記号が名詞, サ変接続とされてしまう問題の解消

概要 MeCabのデフォルトでは半角記号が名詞、サ変接続とされてしまう。 $ mecab ; ; 名詞,サ変接続,*,*,*,*,* EOS この問題を解消するために未定義語の辞書を編集して、半角記号が記号として取り扱うことができるようにする 前提環境 Linux (CentOS7.3) MeCa…

CentOS7でnkfを使う

インストール方法 $ sudo yum localinstall -y http://mirror.centos.org/centos/6/os/x86_64/Packages/nkf-2.0.8b-6.2.el6.x86 _64.rpm nkfでEUC-JPなファイルをUTF8に変換し、変換元を書き換える $ nkf -g hoge.csv EUC-JP (LF) $ nkf -w --overwrite hoge…

ssh で ProxyCommandが動かない問題の解決

zsh

ssh で多段ポートフォワーディングやプロキシを通す時に、~/.ssh/configにProxyCommandを設定してsshコマンドを実行しようとしたところ、下記のようなエラーが発生した。 $ ssh hoge zsh: No such file or directory write: Broken pipe むむ、と思い、取り…

Oracle Linuxのバージョンを知る方法

RHEL系のOSの場合以下のファイルをcatすることでバーションを知ることができる。 /etc/*-release Oracle Linuxの場合は以下の通り $ ls /etc/*release /etc/oracle-release /etc/os-release /etc/redhat-release /etc/system-release $cat /etc/os-release N…