覚えたら書く

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

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マスの盤面の中に、縦・横・斜めにクイーンが重複しな…

Java - 配列をシャッフルする

Javaで配列をシャッフルするサンプルです。 Listをシャッフルする Javaで、List内部の要素をシャッフル(ランダムに入れ替え)するには、 Java標準で用意されている Collections.shuffle のAPIを利用すればよいです。 コードサンプル import java.util.Array…

フィボナッチ数を扱う - 再帰呼出し

再帰についてのメモがてらフィボナッチ数(フィボナッチ数列)をJavaでサンプル的に扱ってみました。 フィボナッチ数 (フィボナッチ数列) \( n \)番目のフィボナッチ数を \( F_{n} \) で表すと、 と定義される漸化式です。 この数列はフィボナッチ数列(Fib…

Solidity - RemixでHello World

Solidityでのスマートコントラクト開発を行う上で、 統合開発環境としてはブラウザベースのRemixを利用するのが一番お手軽なようです。 とりあえずRemix を利用して Hello Wolrd を実行してみます。 Remixの起動 以下URLのアクセスします。 https://remix.et…

Ethereum - トランザクションの実行の流れ

ビットコインのトランザクションはTXOモデルとなっています。 しかし、Ethereum(イーサリアム)ではアカウント情報を保存しているState Tree の中に残高情報を保持しているためトランザクションの実行フローが異なっています。 トランザクションが満たす必…

Ethereum - ブロック構造

Ethereumのブロックはヘッダとトランザクション、トランザクション実行結果の3要素で構成されています。 各要素の例と項目の説明をメモしておきます(初学者なので、以下の内容もどこまで正確なのかは不安あり・・・) ブロックヘッダ ブロックヘッダの例は…

Ethereum - Gethコンソールのコマンドを試す

Gethコンソールのコマンドをいくつか試してみます。 以下エントリの続きという感じになっています。 Gethを起動した状態で以下色々コマンドを実行しています。 ブロック内容の確認 eth.getBlock コマンドでブロックの内容を書くにすることができます。 引数…

Ethereum - Ethereumクライアントのインストールと実行

Ethereum(イーサリアム)用のクライアントをPC(macOS)にインストールして実行してみます Ethereumクライアントにはいくつか代表的なものが存在しています go-ethereum (Golang) cpp-ethereum (C++) ethreumj (Java) pyethapp (Python) parity (Rust) 今回は…

Ethereum - ネットワークの種類

Ethereum(イーサリアム)では、用途に応じてネットワークが複数種類存在しています。 各ネットワークの特徴は以下の通りです。 メインネット 本番環境のネットワーク。全世界に公開されているパブリックな環境。 etherを取得するためにはマイニングもしくは取…

Go言語 - 開発支援ツール

Go言語での開発を行う際にお世話になる開発支援ツールがいくつか存在しています。 そこまで猛烈に意識しなくてもいい気もしますが、自分用のメモとしてコマンドラインでの入手方法等を記載しておきます gofmt gofmt は、Go標準で付属しているコードフォーマ…

Go言語 - Windows上でのプロセス存在チェック

Windows上のプロセスの存在チェックをしたい場合のサンプルコードです。 前回記事のgo-psを利用すれば十分にチェック可能だと思いますが、今回のサンプルでは tasklist.exe に思いっきり頼っています。 package main import ( "bytes" "fmt" "os" "os/exec" …

Go言語 - プロセスの情報出したり、プロセスの一覧出したり

安直なのかもしれないですが、go-psライブラリのお世話になると簡単です 以下で取得しましょう go get github.com/mitchellh/go-ps 実行したプロセスの情報取得 実行したプログラムそのもののプロセス情報を取得する例です package main import ( "fmt" "os"…

Solidity - コンストラクタの新しい書き方

ここ最近、ブロックチェーンやらEthereum(イーサリアム)について勉強中ですが、 Ethereumに付いてまわるSolidityのコンストラクタの書き方って新しくなったみたいですね。 たぶん、0.4.21 から??。 本によっては古い情報が載ってたりするので、一応メモ 以…

Ethereum - Ethereumに関するメモ

Ethereum(イーサリアム)について本読んだりネット見たりして見知ったことをメモしておきます Ethereumとは Ethereum Foundation を中心に開発が進められている分散アプリケーションのプラットフォームです。 2013年に Vitalik Buterin が開発を開始しました…

PostgreSQL - カラムを色々操作したい

PostgreSQLのテーブルのカラムを色々操作したい(変更したい)ことがあったりするので、 それ用のメモです カラムの型を変更する ALTER TABLE {テーブル名} ALTER COLUMN {カラム名} TYPE {新しいカラムの型}; ■実行例 ALTER TABLE dummy_table ALTER COLUMN…

nmapコマンドで対象ホストがPOODLEの脆弱性を抱えているかチェックする

nmapコマンドを利用してSSL3.0が抱えているPOODLEの脆弱性を対象ホストがかかえているのかどうかをチェックします。 nmap の準備 nmapを利用しますので使えない場合はインストールしましょう(Macなら以下のような感じとか) brew install nmap 実行するコマ…