Webエンジニアのメモ帳

技術的な話を中心に書いています。

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

【Kubernetes】kubectlでsecretsの一部を取得する方法

kubectlで、以下のようなsecretを設定しているとします。 { "apiVersion": "v1", "data": { "config.yml": (json形式のデータ) }, "kind": "Secret" } このとき、このsecretを取得するコマンドは以下のようになります。 kubectl -n kube-system get secret (…

sh -c exec {コマンド} について

kubernetesのdeployment.yamlなどでたまに見られる記法なので、気になって試してみました。 $ ls > ls.txt $ sh -c 'exec ls > ls2.txt' # 出力の差分を確認 diff ls.txt ls2.txt # 何も表示されない 結論 sh -c 'exec (コマンド)' はコマンドを直打ちで実行…

【kubernetes】ノードとworkspaceの関係について

kubernetesでのpod、node、workspaceの関係を説明します。 結論から言うと、例えるならpod、node、workspaceは、学校で例えると生徒、クラス、部活のような感じです。 podとnamespaceの関係 podは指定したnamespaceにデプロイされます。(deployment.yamlで指…

【Linux】envsubstコマンドについて

Linuxのenvsubstコマンドは「ファイルに環境変数を埋め込んで表示する」コマンドです。 これだとわかりにくいので、具体例を見てみましょう。 test1.tmlというファイルがあります。 入力された言葉は「${str}」です。 以下のようなコマンドを実行すると str=…

【Docker】DockerfileのCOPYコマンドについて

Dockerfileにおいてコピーコマンドは COPY path1 path2 と書きます。 この記事では、パスの書き方について説明します。 path1について path1はホスト上でのパス、つまりDockerfileからDockerイメージを作成しようとしているマシン上でのパスです。 path1は、…

JavaのプログラムからOS(Linux)のコマンドを使う方法

あまり使う機会の多い手法ではありませんが、JavaのプログラムからLinuxのコマンドを使う方法を説明します。 このサンプルでは、lsコマンドを実行し、その結果を出力させてみます。 import java.io.BufferedReader; import java.io.InputStreamReader; publi…

【Java】jarファイルの中身を確認する方法

あまり使う機会はありませんが、jarファイルの中身を確認するコマンドを説明します。 ファイルの中身を確認する jar tf (ファイル名) ファイルの中身を抽出する jar xf (ファイル名)

【シェルスクリプト】特殊文字を使うコマンドまとめ

特殊文字を使うコマンドをまとめました。(ネットで調べるのが難しいため) 自分用のメモなので、特に内容的なまとまりはありません。 変数値の置換 ${foo:-bar} は、変数fooがセットせれていなければbarを、セットされていればfooを返します。 $ echo ${var:-…

【Java】int型の配列に特定の数字が含まれているか調べる

Javaでint型の配列に特定の数字が含まれているか調べるには、Listに変換してから調べます。 たとえば、[ 2, 4, 6, 8 ]という配列に4が含まれているか調べるコードは以下の通りになります。 Integer[] numbers = { 2, 4, 6, 8 }; boolean flag = Arrays.asLis…

【Docker】よく使うコマンドまとめ

Dockerでよく使うコマンドをまとめました。 docker run dockerイメージをもとにコンテナを起動するコマンドです。 基本の使い方 docker run $IMAGE $COMMAND ここで、例えばコマンドを/bin/bashにすると、コンテナ内のシェルが立ち上がります。 -dオプション…

【Git】コミットをまとめる方法

gitでコミットをまとめる手順を説明します。 例えば、ブランチを切り、ファイルを修正してコミットしたが、修正内容にミスがあったことに気づき、再びコミット、プッシュしたような場合を考えます。 # 本当は「あ」と書きたかったとする echo "い" > a.txt #…

【Java】マルチスレッドとRateLimiterによるQPSの制御について

マルチスレッドとは あるクラスが、別のあるクラスのインスタンスを複数生成し、そのインスタンスが持つメソッドを同時に実行したい、というような状況は、Webアプリなどで重い処理を何度も行う時などにはよくあることです。(APIを叩く処理など) このように…

【Java】モックを使ってテストを実装する

テストにおいて、モックを使うことは必須のテクニックの一つです。 この記事ではJUnit、Mockito、PowerMockなどのライブラリを使いながら、モックを使ってテストを行う方法を説明します。 まずは普通にテストする テスト対象のコードは以下とします。 public…

【Python】文字コードについて

Python2からPython3への書き換えをした際に、文字コードに関する部分でかなり詰まったので、色々と調べました。 また文字コード関係はPython2とPython3でかなり違いますが、この記事ではPython3に関する内容について説明しています。 そもそも文字コードにつ…

【Linux】Makefileとmakeコマンドについて

Makefileとmakeコマンドについて説明します。 概要 Makefileは一連のコマンドをまとめて実行するためのものです。 Makefileという名前のファイルがあるディレクトリでmakeコマンドを実行すると、Makefileに書かれたコマンドが実行されます。 ファイル名はMak…

【シェルスクリプト】日時や時刻を表示する

日時と時刻は、dateコマンドを使うと表示されます。 $ date Thu Aug 1 14:49:44 JST 2019 date +"[表示形式]" とすると、自由な形式で表示することができます。 $ date +"[%Y-%m-%d %H:%M:%S]" [2019-08-01 14:45:57] $ date +"[%m月%d日]" [08月01日]

【Python】cronからスクリプトを動す際の注意点

PythonのスクリプトをLinuxのcronから動かした際にエラーが発生したので、原因と解決方法を書いておきます。 ファイルは絶対パスを指定する ファイルを扱う場合、ファイル名が絶対パスで書かれていないと実行されません。 (cronから実行しない場合は相対パス…

【Cassandra】テーブルの内容をファイルに書き出す

Cassandraにログインし、 use (キースペース名前) copy (テーブル名) to '(絶対パス)'; とします。 SELECT文のようにwhere句を使ってテーブルの一部のみを書き出したかったのですが、調べたところ、そういったことはできないようでした。

【Spring Boot】Cassandraに接続しデータを操作する方法

Spring BootでCassandraを扱う方法を説明します。 テーブルの作成 まずは、Cassandraにテーブル(カラムファミリ)を作成します。 テーブルの内容は以下の通りです。キースペース名はcreaturesとします。 id | name | category ---+----------+---------- 1 | …

【Java】DBUnitテスト入門

JavaでDBUnitというライブラリを使い、実際にDBと通信を行うテストを行う方法を説明します。 テーブルの構成 テストで使うDBは以下の通りとします。 DB名...test テーブル名...animal mysql> desc animal; +-------+--------------+------+-----+---------+-…

【Java】MySQLに接続するための設定を行う

JavaのプログラムからMySQLに接続するための設定を行う方法を説明します。 前提 今回は、Javaはフレームワークなどは特に使用しません。またビルドツールはMavenを使い、エディターはIntelliJ IDEAを使用します。 また、MySQLのインストール、DBおよびテーブ…

【MySQL】ユーザーを追加し、DBへの権限を与える

MySQLでユーザーを追加する方法を説明します。 手順1. ユーザーの追加 今回は、testUserというユーザーを作成します。パスワードはtestPassとします。 この場合、MySQLにログインして CREATE USER "testUser" IDENTIFIED BY "testPass"; というSQL文を実行し…

【Java】JUnitを使って単体テストを書く

Javaのテストコードの書き方を説明します。 1. ライブラリの導入 テストコードを書くにはJUnitというライブラリを使います。 ビルドツールにMavenを使っている場合は、pom.xmlの内に <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> を追加します。 今回はバージョンを4.12としてい…

【Java】src/main/resources以下のファイルを読み込む

Javaでsrc/main/resources以下のファイルを読み書きする方法を解説します。 一つの文字列として読み込む まずは、ファイルに書かれている内容をString型の変数に格納する方法です。 この場合、複数行のファイルでも一つの文字列として読み込まれます。 File …