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

Node.js製 ツールの作成

概要 npm コマンドを使ってNode.js製CUIツールを作ることができる。 流れ 実行ツールパッケージの作成 npm init コマンドの定義と実装 グローバル領域へのインストール npm link -g 詳細 1. パッケージの作成 $ npm init hello/ package.json main.js 2. コ…

パッケージ・プラグイン構成

vim

プラグイン プラグインづくりの心得 プラグインの種類は大きく2つに分かれる プラグインはディレクトリ構成によって実現されている 各ディレクトリ(プラグイン)がどのタイミングで読み込まれるかを頭の中に入れておく プラグインの種類 ファイルタイプに依…

型消去の使い方 in Swift

Swiftは非常に型が強くまたSelf、associatedtype を持つプロトコルは型宣言として使用することが出来ない。 例えばDictionary型は、異なる型のキーを同時に取ることが出来ない。 // コンパイルエラー let desc1 = ["" : "emoji", 42 : "an Int"]; AnyHashabl…

java.util.streamの使い方メモ reduce編

reduceメソッド <U> U reduce(U identity, BiFunction<U, ? super T, U> accumulator, BinaryOperator<U> combiner) U identity 累算器、合成器の初期値 BinFunction<U, ? super T, U> accumulator 累算器 BinaryOperator<U> combiner 結合器、順次ストリームのときは結果に影響を与えない 各パラメータ</u></u,></u></u,></u>…

ジェネリック 境界ワイルドカード型の整理

境界ワイルドカードは他のプログラミング言語には多分存在しない。 ただこれがあることで、メソッド間でデータのやり取りが楽になる。 役割 Javaのジェネリックは、型パラメーターが継承関係であっても異なる型になる。 つまり List<Number> と List<Integer> は型が異なり、</integer></number>…

autocmd で terminalを開いたときは除外する

vim

vim内でterminalを一度開き、そこから別のバッファーに移動し、再度terminalに移動すると以下のエラーが出てきた。 Error detected while processing BufEnter Autocommands for "*": E344 Can't find directory "!/bin" in cdpath 原因は以下のカレントディ…

ローカルリポジトリ内のarchetypeからプロジェクトを生成する

mvn install によってインストールした archetype から選択する $ mvn archetype:generate -DarchetypeCatalog=local ダウンロード済みのarchetypeから選択する $ mvn archetype:generate -DarchetypeCatalog=internal 参照 Maven Archetype Plugin – archet…

quickrunでファイル名が日本語のJavaファイルを実行すると渡されるファイルが文字化けして実行できないときの対応

vimのterminalに LC_CTYPE 環境変数を追加することで解消 vimrcで以下を定義 let $LC_CTYPE = 'UTF-8' terminalを開いて printenv で上記の変数があることを確認できる。 参照 LC_CTYPEについて ロケール(locale)まとめ - Qiita

タブもしくはスペースとインデント

vim

vimにおいてタブもしくはスペースとインデントは明確に区別されている。 インデントは、'>>' もしくは '<<' や自動インデントの設定によって挿入することが出来る。 タブ関連オプション tabstop ts '\t'に対する空白数 softtabstop sts '<Tab>'キーの入力に対する</tab>…

ケトン体が人類を救う 糖質制限がなぜ健康になるのか

https://www.amazon.co.jp/gp/product/B0197SGQJY 最近糖質制限を開始しました。きっかけとなった本です。 著書では、人類は代謝エネルギーを生み出す機能として、糖質を燃料とする糖質エンジンと脂質を燃料とするケトン体エンジンが存在し、ケトン体エンジ…

varのデメリット

同一スコープで同一名の変数を宣言できる 変数の巻き上げによる上書き 1. 同一スコープで同一名の変数を宣言できる OK var x = 10; var x = 20; // OK let は NG let y = 10; let y = 20; // SyntaxError: Identifier 'y' has already been declared const …

EventEmitterの使い方

イベントの利用方法 EventEmitter クラスを使用する コンストラクタ const EventEmitter = require('events') const myEmitter = new EventEmitter() 継承して使用する方法もある class MyEvent extends EventEmitter {} イベントの登録 emitter.on(name, li…

記事の書き方 in HTML

構造 <main> <section> <article> <h1> <p> main documentに対して一つだけ定義する section カテゴライズするためのタグ。 documentに対して複数定義でき、article 内部に含めることも可能。 article 一つの記事を表すタグ。 例 <body> <main> <h1>献立メニュー</h1> <p>今月のおすすめ献立メニュー一覧</p> <section> <h1>肉料理</h1> <p>肉</p></section></main></body></p></h1></article></section></main>…

brewでインストールしたPostgresQLについて覚書

インストール yossan$ brew install postgres インストール時の状態 データベース名 postgres アカウント インストール時のPCユーザ名 パスワード なし データディレクトリ /usr/local/var/postgres/ 初期環境を調べる 起動 yossan$ brew services start pos…

Windowsでmavenが使用するJDKを変更する

環境変数 → ユーザー環境変数 以下を設定 JAVA_HOME = jdkを配置した場所

第一級関数

関数型プログラミング言語において、関数は第一級オブジェクト(First-class citizen)であり、値として扱うことができる。 このように関数を値として扱えることを 第一級関数 と呼ぶ。

関数型インターフェース

関数(メソッド)を受け取る仕組み 匿名クラスによるインターフェースの実装をラムダ式で行えるようにした 定義 @FunctionalInterface interface Action<T, R> { R run(T input); } 抽象メソッドを一つ定義する 実装はしない 使用例 Action<String, Void> logger = (input) -> { Sy</string,></t,>…

匿名クラスについてのまとめ

匿名クラス (Anonymous Inner Classes) 概要 Java 7以降 クラスの定義とインスタンス化を同時に行う仕組み 使用方法として以下の2つがある 1. クラスの拡張 2. インターフェースの実装 1. クラスの拡張 匿名クラスによって、インスタンス化時に拡張を実装す…

Maven Archetypeの作成方法と利用方法

概要 mvn archetype:create-from-package コマンドで既存のプロジェクトからArchetypeを生成することができるが、 Mavenプロジェクト生成時に指定したPackage名に変更する必要がある。 ソースコードはこちら github.com Archetypeの生成 1. 既存のMavenプロ…

mavenプロジェクトのリソース配置とJavaのリソース読み込み

marvenプロジェクトのリソース配置 marvenプロジェクトはリソースを src/main/resources 配下に格納する src -+- main/ -+- java/Sample/App.java | +- resources/test.txt 上記において mvn compile すると、 target ディレクトリ配下に以下のように配置さ…

visual studioに梱包されているpython3.dllをロードするようにする

vim

vimrc set pythonthreedll=C:\Program\ Files\ (x86)\Microsoft\ Visual\ Studio\Shared\Python37_64\python37.dll スペースは \でエスケープしてわたす

特定のファイルが読み込まれた時にauコマンドを発動する

vim

au BufRead,BufNewFile /etc/apache2/sites-available/www.example.com set filetype=apache 参照 What exactly happens when you change a file type in vim? - Stack Overflow

InputStreamReaderとOutputStreamWriterの役割

それぞれバイト列ストリームから他の文字列ストリーム(Reader/Writer系)へ変換するための橋渡しをする java.nio.charset.Charset によるエンコーディング指定が出来る ファイルの読み書きだけにおいては、 FileReader/ FileWriter の便利系クラスが用意され…

リモートリポジトリからローカルリポジトリへのインストール

$ mvn dependency:get -Dartifact=GroupId:ArtifactId:Version -DartifactId ダウンロードするパッケージを指定する。 構成 groupId:artifactId:version 例: junit 4.13 のインストール $ mvn dependency:get -Dartifact=junit:junit:4.13-beta-1 [INFO] Sca…

pomの変更を反映させる

mvn dependency:resolve 出典 Maven: Command to update repository after adding dependency to POM - Stack Overflow

ユーザーディレクトリの公開 on macOS Mojave

概要 以下のようにブラウザからユーザーディレクトリ配下のリソース ('/Users/yossan/Sites/') にアクセス出来るようにする。 http://localhost/~yossan MEMO: ~ によってユーザーディレクトリ配下のフォルダを検索してくれる 以下、/Users/yossan/Sites 配…

macOS Mojave に mariadb のインストール

Homebrewを通してインストール $ brew install maridb mysqlの起動 $ mysql.server start mysqlの停止 $ sudo mysqladmin shutdown mysql.server stop での停止が上手く動作しない $ mysql.server stop としても mysql サーバーが完全に停止しない $ ps aux …

Javaの maven プロジェクトからソースファイル一式を出力する

find コマンドでディレクトリ階層を横断して出力させることができる $ find src/main -name *.java ls コマンドとの組み合わせ $ ls -l $(find src/main -name *.java) --name で無いことに注意 参照 ls -lコマンドの結果をサブディレクトリ含めてフルパスで…

maven プロジェクトの作成 archtypeArtifactId を指定する

mvn archetype:generate だけで対話形式でプロジェクトを作成すると、 元となる archetype の選択に 2300 以上の選択肢が表示されてしまう。 生成時に、 archetypeArtifactId を指定することで、回避することができる。 コマンドラインツールを作成する時 ma…

jarファイルの組み込み `-cp` オプション

自分のコードに jar ファイルを組み込む場合は、 jarファイル内からクラスファイルを探す必要があるため、クラスパスを指定する必要がある 1. コンパイル foo.jarファイルのクラスを検索する $ javac -cp foo.jar App.java → App.java ファイル内で、foo.ja…