覚えたら書く

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

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

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選 オススメの標準・準標準パッケーシ…

golang.tokyo #6 に行ってきたよ #golangtokyo

golang.tokyo #6 に参加してきました。 以下自分用のメモです。 概要 開催日: 2017/6/1 場所: 株式会社ディー・エヌ・エー Gopher Fest 2017 参加レポート 上田拓也 氏 (メルカリ/ソウゾウ) Gopher Fest 2017参加レポート from Takuya Ueda Gopher Fest…

Go言語 - 日時のフォーマット処理

本エントリでは、Go言語で日時を特定の書式にフォーマットする処理を実行してみます。 基本的にはtimeパッケージのTime.Format関数を利用することになります。 例えばJavaなら、LocalDateTime#format やら SimpleDateFormat#format 等を利用してフォーマット…

Go言語 - melodyを利用してWebSocketサーバを立てる

melodyとGinを使ってWebSocketサーバを立てて、簡易的なチャット画面を作ってみました。 実際には、melody Exampleを、ほぼそのまま流用しているだけです。 準備 以下を実行してmelodyを利用可能な状態にしておきます go get gopkg.in/olahol/melody.v1 プロ…

Go言語 - Goの特徴

Go言語(Golang)の特徴(メリット)として以下のようなものが一般的に挙げられています 高パフォーマンス 一般的に軽量言語(LL)ではメモリ管理のコストなどに注意してコードを構成しなければパフォーマンスが極端に悪くなることがあります。 それに対して、…

Go言語 - Ginを使ってHello World

Go言語ではnet/httpを利用することでHTTPサーバを立てることができまが、GinといったWebアプリ用のフレームワークも存在しています。 事前準備 以下を実行してGinのパッケージ取得を行います go get github.com/gin-gonic/gin とりあえずHello World 以下 He…

Go言語 - HTTPサーバでHello World

Go言語ではnet/httpを利用することでHTTPサーバを立てることができます。 とりあえず今回はお試しな感じでHTTPサーバを立ててみます とりあえずHello World 以下 Hello World の文字列を返す例です。 http.HandleFuncにより、ハンドリング対象のパスとハンド…

Go言語 - WindowsのアクティブなセッションのIDを取得する

Windowsではセッションという概念が存在しています。(セッション 0 の分離 - Windows 7 対応アプリケーションの互換性) 複数セッションの中で現在アクティブになっている(物理コンソールにアタッチしている)セッションのセッションIDをGo言語で取得する…

コード品質特性を悪化させるには

プログラムのより良い設計を支える中心的概念としてコード品質特性があります。これに点数付けした場合に、悪い点をとるためにはどうすればいいかについて書きました。 以下内容のベースはJavaです そもそもコード品質特性とは ここでは、以下をコード品質特…

複雑なプログラムに現れる傾向や特徴

「ソースコードを汚くするには」に記載したようなコードを書いていると、結果的に複雑なプログラムになってしまいます。 ここでは複雑なプログラムに現れやすい傾向や特徴などについて記載しました 基本的にJavaをターゲットにして本エントリを記載していま…

「APIデザインの極意」-優れたAPIを決定づけるもの

「APIデザインの極意」 の 第3章 優れたAPIを決定づけるもの で気になった部分の抜粋 APIデザインの極意 Java/NetBeansアーキテクト探究ノート作者: Jaroslav Tulach出版社/メーカー: インプレス発売日: 2014/07/02メディア: Kindle版この商品を含むブログ (…

「APIデザインの極意」-APIを作成する動機

「APIデザインの極意」 の 第2章 APIを作成する動機 で気になった部分の抜粋 APIデザインの極意 Java/NetBeansアーキテクト探究ノート作者: Jaroslav Tulach出版社/メーカー: インプレス発売日: 2014/07/02メディア: Kindle版この商品を含むブログ (9件) を…

Go言語 - enumを定義する

Go言語には、C言語やJavaにおける「enum(列挙型)」のような機能がありません。 Go言語をやり始めて最初にこれを知った時、 え嘘でしょ? と言いたくなりました。 が、実際には 定数定義とiotaを利用することでC言語における列挙型に近い振る舞いを実現する…

Go言語 - 空インターフェースと型アサーション

Go言語には、全ての型と互換性を持っているinterface{}型(空インターフェース)というものが存在しています。 たとえば以下のように、interface{}で宣言した変数にはどんな型の値でも代入可能です var obj interface{} obj = 123 // int obj = "str" // str…