覚えたら書く

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

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の脆弱性を対象ホストがかかえているのかどうかをチェックします。 namp の準備 nmapを利用しますので使えない場合はインストールしましょう(Macなら以下のような感じとか) brew install nmap 実行するコマ…

MS-DOSコマンドで処理時間を計測する

Windowsでコマンドの処理時間を計測したい場合、DOSコマンドだけだと面倒なのでPowerShellの力を借ります。 具体的には、以下のようなコマンドを実行すると処理時間を計測できます powershell -C Measure-Command {計測したいコマンド} たとえば以下のように…

IntelliJ IDEA - Ctrl + マウスホイール操作でフォントサイズを変更できるようにする

人にソースコードを見せる時などに、IntelliJ IDEAのエディタ上のフォントをさっと大きくしたい場合があります。 以下の設定をしておくことで実現可能です。 File > Settings > Editor > General を選択し 「Change font size(Zoom) with Ctrl+Mouse Wheel」…

MS-DOSコマンドでファイルパスからディレクトリのパスやファイル名を取得する

C:\app\SampleApp\Launcher.exe というパスがあった時に、 ファイルが存在するディレクトリのパス C:\app\SampleApp\ と ファイル名 Launcher.exe を抽出したい。という要件があった場合 これをWindowsのDOSコマンドで実現するために、 ディレクトリの抽出に…

Visual Studio Code(vscode-go)のコード補完が効かなくなる

Golangのバージョンを1.9にアップデートしたら、Visual Studio Codeでのコード補完が全く効かなくなりました。 vscode-goプラグインで問題が起こっちゃってるようです。 オートコンプリートの候補としてPANICしか出てこない謎現象が発生します。 以下の手順…

PostgreSQL - テーブルとindexのサイズを確認する

PostgreSQLでテーブルのレコード数ではなく容量(サイズ)を知りたい場合があります。 その場合には以下のSQLを実行することで各テーブルと各indexのサイズを確認できます。 select objectname, to_char(pg_relation_size(objectname::regclass), '999,999,999…

Class#newInstanceは非推奨になるようなので気を付けよう

Javaでリフレクションによるデフォルトコンストラクタ呼び出しでインスタンス生成する方法としてClass#newInstanceが挙げられると思います。 ただし、Class#newInstanceはJava9で非推奨(Deprecated)になるようです。(さらに以降のバージョンでAPI自体が削除…

MavenでOWASP Dependency CheckによるJavaライブラリの脆弱性をチェックする

OWASP Dependency Checkで使用しているJavaライブラリの脆弱性をチェックすることができます。 今回はMavenのpluginを使用します。 設定 pom.xmlに以下を追記します。 <plugins> ・・・ <plugin> <groupId>org.owasp</groupId> <artifactId>dependency-check-maven</artifactId> <version>2.0.0</version> <configuration> <assemblyAnalyzerEnabled>false</assemblyAnalyzerEnabled> …</configuration></plugin></plugins>

RxJava - RxJavaでHelloWorld

RxJavaを使いながらリアクティブプログラミングを理解していきたい。 とりあえずは、まず何を置いてもHello World! 準備 pom.xmlに以下の依存関係を追加します。Reactive Streamsにも対応しているバージョン2.Xを使います <dependency> <groupId>io.reactivex.rxjava2</groupId> <artifactId>rxjava</artifactId> <version>2.0.8</version></dependency>…

Go言語 - HTMLテンプレートの使い方

GolangでのHTMLテンプレート記述方法や値の展開方法等について学ぶために、html/templateを試してみました。 変数をそのまま展開 コード内の変数をhtmlのテンプレートに展開する例です ■htmlテンプレート(template000.html.tpl) <html> <body> msg: {{.}} </body> </html> ■サンプル…

Lombok - @Builderでデフォルト値を指定する

Lombokの@Builderアノテーションは何かと便利なのですが、プロパティへ値をセットするためのBuilderのメソッドを呼ばないと対応するフィールドが初期値(数値なら0, booleanならfalse, オブジェクトならnull)になってしまいます。 このあたりの動きをv1.16.…

Go言語 - XMLを読んで特定の要素を削って出力

Golangではencoding/xmlパッケージでXMLを簡単に扱えそうなので、Hello World的に試してみました。 今回のエントリでは、XMLファイルを読んで特定のエレメントを削ったXMLを再出力するということをやってみました。 (といっても、Unmarshal(XML⇒構造体への…

普通にコンストラクタ呼び出すのとリフレクション使うのとでどれだけ速度差あるの?

Javaでインスタンス生成する場合は、コンストラクタを実行するのが普通ですが、リフレクションでもやれます。 ただ、一般的にリフレクション使うと遅いというのが懸念点の一つとして上がってきます。 というわけで、普通にコンストラクタ実行するとのリフレ…

Javaでユニットテストを書く時に気を付けたいこと

Javaプログラムに対するユニットテスト(単体テスト)を書く際に気にしておきたいことを書いてみました。 以下、個人的な経験則と本で読んだ内容が混ざっています ユニットテスト作成時の原則 「このクラスはXXXの理由でユニットテストが難しいんです!」と…

運用から見たシステムに関してのあれやこれや

ITシステム(サービス, アプリケーション)の開発を行っていると、設計してコード書いてテストしてリリースするという流れになり、 このリリースというのがゴールという感覚に陥る場合があります。 実際は、システム(サービス)は運用が開始されてからがスター…

INEVITABLE ja night インターネットの次にくるもの #inevitable2017

INEVITABLE ja night インターネットの次にくるものに参加してきました。 以下自分用のメモです。 概要 Google Cloud に代表されるクラウド技術の進化によって引き起こされるその先の世界を、 機械学習、VR / AR、IoT などの領域で活躍されているスタートア…

Javaでプログラムを書く際に意識しておきたいこと

以下、個人的にJavaでプログラムを書く際に意識しておきたいことです。 ただし、学術的な裏付けなどがある内容でありません。あくまで私の経験に由来する内容となっています。 そもそもコンテキストによってはそぐわない内容もあると思いますので、その辺は…

Go言語LT大会! 「最近、Go言語始めました」の会に行ってきた #golangjp

Go言語LT大会! 「最近、Go言語始めました」の会に参加してきました。 以下自分用のメモです。 概要 Go言語入門者のLT大会&懇親会 開催日: 2017/6/5 場所: レバレジーズ株式会社 おススメ・標準・準標準パッケージ20選 オススメの標準・準標準パッケーシ…