覚えたら書く

IT関係のデベロッパとして日々覚えたことを書き残したいです。twitter: @yyoshikaw

Java 8 での java.nio.Files#existsは遅いのか?

Java 7で導入されたNew I/O API(NIO2)。その時に新規クラスとして、java.nio.Files などが増えました。 このクラスで、java.io.File のコードを置き換えることなどが可能です。 一般的には、今はjava.io.Fileクラスではなく、NIO2の機能(java.nio.Filesクラ…

HomeBrew で AdoptOpenJDK 11をインストールしてみる

macOSにJava 11をインストールしたかったので、HomeBrewでインストールしてみました。 ちなみにインストールしたのは、AdoptOpenJDK です。 Java 11 (AdoptOpenJDK)のインストール 以下実行して AdoptOpenJDKをインストールします $ brew cask install ado…

Go Conference 2018 Autumn に行ってきたよ #gocon

Go Conference 2018 Autumn に参加してきましたので、自分用のメモ。 といっても、今回は実務でゴリゴリにGolang使ってる人やGolangにかなり深い知見のある人の発表で、 正直自分の知らない単語拾いに行った感じでした。 概要 開催場所 Google Tokyo office …

ElectronでHello World

もう腐るほどやられてるとは思いますが、Electronで Hello Worldやっておきます。 というか、そもそも公式の electron-quick-start に従えばいいだけなんですが。 今回の私用のメモとしてののHello Worldは、以下の前回エントリの続きという感じになっていま…

Yarnを使ってみる

最近になって今更感かなりありますが、electron や Node.js を触り始めました。 パッケージを環境に導入するには、npmコマンドを利用するのが当然だと思ってたんですが、 Yarnというツールも存在している様ですね。いやー、この界隈全然詳しくないです。 Yar…

「ドラゴンクエストXを支える技術」

読書の秋なので、ということではないですが「ドラゴンクエストXを支える技術」を読んでみました。 ドラゴンクエストXを支える技術 ── 大規模オンラインRPGの舞台裏 (WEB+DB PRESSプラスシリーズ)作者: 青山公士出版社/メーカー: 技術評論社発売日: 2018/11/1…

Node.js で Hello, World

Node.js をインストールしましたので、とりあえずは Hello World やっておきましょう。 REPLでHello World Node.js は REPL を備えていますので、REPL使ってとりあえずやってみます。 ターミナルで node を実行すると Node.js の REPLが起動します $ node > …

macOS に入れてたNode.js(npm)をアップデートする

以前なにかの作業の時にnodebrewを使って、Node.jsをmacOS(npm)にインストールしました。 現在インストールしているものより、新しい安定板がリリースされているのでアップデートすることにします。 正直手探りでやってる感があるので、このやり方が正当な…

Node.js (npm) をWindowsにインストールする

最終的に、Electron でのアプリ開発がしたいわけなんですが、 その開発環境構築のためにも何はさておき Node.js (npm) をインストール必要があるので、インストールしました。 正直誰でもできるレベルのものですが、念のために手順をメモしておきました。 (…

Go言語 - システム情報を取得する

Golangで、システム情報というかOSのuptime(稼働時間)が取得したかったんですが、 Go sigarを利用すると楽そうだったのでお世話になります。 とりあえず、ライブラリのダウンロードを行います go get github.com/cloudfoundry/gosigar uptimeとか取得して…

Windows 10 - All Users のスタートアップフォルダを開く

Windows 7 だとAll Users のスタートアップフォルダの場所にExplorerなんかでも簡単に行きつけるんですが、Windows 10 だとすぐ迷子になってしまいます(行きつけません)。 というわけで、今後迷子にならないためのメモです。 場所は通常であれば以下パスに…

Go言語 - 置換文字列を一部置換しなかったらどうなるの?

fmt.Sprintf などでフォーマット文字列を置換する場合に、置換対象のパラメータが複数あることもあります。 その際に、置換すべき値の数が合わないとどうなってしまうのかな?と思って一応試してみました。 http://127.0.0.1:%d/%s というフォーマット用の文…

bashのProcess Substitutionを利用したdiff

bashに Process Substitution(プロセス置換) という機能があるのを全然知りませんでした。 詳しい説明は別の方の記事を参照ください。。。 たとえば、この機能をdiffコマンドと組み合わせて使ったりすると効果的なようです。 diffは、入力対象としてファイル…

例外のスタックトレースが出力されなくなる

Javaアプリケーションを実行していると、ずっと出力できていた例外(Exception)のスタックトレース(StakTrace)が出力されなくなる場合があります。 気づいてみたら、あれ?ログに例外のスタックトレースが出ていない! というような状況に出くわすことが…

truncate(ftruncate) はサイズを切り詰める(減らす)だけじゃないよ

Linuxのシステムコールの truncate, ftruncate は、対象のファイルのサイズを切り詰めるものです。 書式は以下の通りです。 #include <unistd.h> #include <sys/types.h> int truncate(const char *pathname, off_t length); int ftruncate(int fd, off_t length); 引数 pathname / </sys/types.h></unistd.h>…

Javaで外部プロセスを実行する

Java8以上の世の中だと思いますので、外部プロセスを実行する場合はProcessBuilderクラスを使いましょう。 今回は、外部プロセスが出力する標準出力や標準エラー出力の内容は無視して、終了コードだけを取得する例となっています。 Javaで?外部プロセスを実…

Gson で JSONICの簡単なアダプタを作る

JavaでもJSONを扱わなければならなくなった初期の頃に、JSONICというライブラリのお世話になった方も少なく無いのでは無いでしょうか? 今となっては、jackson や Gson 等の他のライブラリを使うのが一般的になっています。 JSONICのページにも以下のように…

Gson - JsonWriterでインデント形式を変えてファイル出力してみる

以前JSON形式のデータをJavaで扱うためのGsonライブラリについて使い方を紹介しました。 今回はGsonライブラリのGsonオブジェクトを使わずにJSONファイルへの出力を行ってみます。 その際にインデントの形式をいくつか変えて出力します。 今回出力するJSONフ…

Java 11リリースに関するメモ

先日、Java 11が正式リリースされました。 ご存知の通りですが、本バージョンからOracle JDKが有償となりました。 その辺についての自分用のメモです。(不正確だったり間違っている内容もあるかもしれません) 概要 Java 11リリースに関連する内容は以下の…

「悪いヤツほど出世する」

「悪いヤツほど出世する」。読んだのは結構前ですが面白かったので、その時自分が気になった部分などをメモするためのエントリです 悪いヤツほど出世する作者: ジェフリー・フェファー,村井章子出版社/メーカー: 日本経済新聞出版社発売日: 2016/06/23メディ…

「NETFLIXの最強人事戦略 自由と責任の文化を築く」

ここ最近話題になっている「NETFLIXの最強人事戦略 自由と責任の文化を築く」を読んでみました。 話題になってるだけあって、かなり面白かったです。 NETFLIXの最強人事戦略 自由と責任の文化を築く作者: パティ・マッコード,櫻井祐子出版社/メーカー: 光文…

FailSafeによるサーキットブレーカーパターン

クラウド、マイクロサービスなどのアーキテクチャとともにサーキットブレーカーというパターンがよく取り上げられます。 詳細は、上記リンク先などを参照していただくのがよいです。 超大雑把にいうと、クラウドのサービスなどを利用する際に、 クライアント…

curlコマンドでHTTPステータスコードだけ取得

curl コマンドを実行して、レスポンスボディ等は不要で、HTTPステータスコードだけ取得したい。 というケースがあります。 pingやhealthチェックみたいな感じで、とにかく200が返ってくるのかそうじゃないのか?とか。 そんな場合は、以下の内容を実行します…

Failsafeによるリトライ処理 (3)

前回エントリで、FailSafeによるリトライ方法の制御をいくつか紹介しました。 今回のエントリでは、処理失敗時やリトライ処理実行時のハンドリングなどを紹介します。 基本となるリトライポリシーとリトライ処理を以下とします リトライポリシー RetryPolicy…

Failsafeによるリトライ処理 (2)

前回エントリで FailSafe によるリトライ処理について書きました。 FailSafeは前回書いた内容よりももっと色々制御できるので、それらを紹介する内容のエントリになります。 基本的には上記の前回エントリの内容がベースにあります。 前回エントリでは、基本…

Failsafeによるリトライ処理

業務系プログラムにおいて、リトライ処理は必須だと思いますが、 Javaで単純にリトライ処理を書こうとすると、泥臭い感じのプログラムになってしまいます。 FailSafeというライブラリを利用することで、リトライ処理を整理した形で記述することが可能です。 …

OSSの頒布

「OSSライセンスの教科書」という本を読んでいます。 OSSライセンスの教科書作者: 上田理,岩井久美子出版社/メーカー: 技術評論社発売日: 2018/08/23メディア: 単行本(ソフトカバー)この商品を含むブログを見る 普段の業務上でもお世話にならないことが無…

JavaのString#trim

JavaのString#trimメソッドは、文字列の先頭と末尾のスペース(半角スペース)を除外した文字列を返してくれます。 例えば " sample1 " という先頭にも末尾にも半角スペースが入った文字列にtrimを実行すると、 半角スペースが削られた "sample1" という文字…

ASCII文字列の16進数表記を取得する

JavaでASCII文字列の16進数表記の値(Hex Dump)を取得するサンプルです。 以下のようなメソッドを用意します。 import java.util.stream.Collectors; static String asciiHexDump(String ascii, String delimiter) { return ascii.chars() .mapToObj(b -> S…

Nクイーン問題を扱ってみる

8クイーンと呼ばれるパズルが存在しています。 チェスのクイーン(上下左右斜めに何マスでも進める)を、チェスボードの8×8マスに、8つのクイーンを互いに利きに入らないように配置するパズルです。 8×8マスの盤面の中に、縦・横・斜めにクイーンが重複しな…