新しいことにはウェルカム

技術 | 電子工作 | ガジェット | ゲーム のメモ書き

JavaScriptでSQLiteを使う方法メモ

JavaScriptでSQLiteを使う方法メモです。 あまり凝ったことはせず、必要最低限の機能に絞ってまとめました。 SQLiteそのものの使い方は割愛しますが、こちらが詳しいのでご参照ください。 インストール パッケージ「sqlite3」を使いました。 npm install sql…

はてなブログのカテゴリーを一元管理してみる

はてなブログで投稿する時にカテゴリーを設定できるのですが、カテゴリーは複数設定できるので、タグみたいなものかなと適当に設定していました。 過去記事を見ることもなさそうだし、であればカテゴリーを使うこともなく、特に困らないかと思っていたのです…

Tableauで「相対日付」と「日付の範囲」を同時に使う方法

時系列グラフの表示範囲の指定UIに 「デフォルトは直近X日を表示し、必要な時にカレンダーで任意の日付を指定できる」 といったものをよく見かけます。 しかし、Tableauの日付フィルターで同等のことはできないんです。 「直近X日を表示」は日付フィルターの…

JavaScriptからGo言語に乗り換えた感想

JavaScript(TypeScript)で書かれたプログラムを、Go言語で書き直しました。 その動機や、書き換えた結果などを書こうと思います。 また、今回Go言語が初めてだったので、Go言語とはどういったものかや、Go言語をやってみた感想なども合わせて書こうと思いま…

ラーメン屋の味玉を作る

子供がラーメン屋の味玉が好きで、家でも食べたいというリクエストがありました。 スーパーで味玉を何種類か買ってきたのですが、そもそもラーメン屋の味ではなかったり、ラーメン屋の味だけど、黄身が固まっていて、あのドロッとした独特感じが再現されてい…

GCPを使って、できるだけ楽してGo言語のgoroutineのリークを監視する

ゴルーチン リーク Go言語はめちゃめちゃ簡単にゴルーチン(スレッドのようなもの)を作れるのが魅力です。 あまりにも簡単なので、あまり深く考えずゴルーチンを生成していたのですが、ゴルーチンはメインフローとは別に切り離されて実行されるので、デッド…

Google Kubernetes Engine(GKE)で、コンテナでエラーが発生したらSlackやメールに通知する方法

GCPのKubernetes(GKE)で、プログラムでエラーが発生したら、Slackやメールなどの外部に通知する方法です。 自分でエラー検知の仕組みを実装しなくても、GCPの設定のみで可能です。 大まかな仕組み プログラムでエラーが発生した時に、プログラムから標準エ…

JavaScriptで同時実行数を指定しつつ並行実行させる方法

沢山のタスクがあって並行処理したいのですが、全てを並行実行させると重くなってしまうので、同時実行数を指定しつつ並行実行させたい時があります。 恥ずかしながらJavaScriptでそれをやる方法を知らず、代案として、処理したいタスクを同時実行数づつに分…

Dockerのpuppeteerが突然動かなくなった

普段Webのクローリングにpuppeteerを使っていて、puppeteerの実行はDockerで行っています。 クロール項目を追加することがあって、プログラムを修正してDockerでビルドして実行したところ、下記のようなエラーが出て動きませんでした。 /node_modules/puppet…

Node.jsのstream(ストリーム)の使い方メモ

データ処理を行う時、ついつい面倒くさくて、全てのデータをメモリに読み込んでから処理しがちです。 データサイズが小さい時は問題ないのですが、巨大なデータを扱う場合は、メモリを大量に消費しますし、1つのデータの読み込みや書き込みが完了するまで、…

TableauのLOD(Level of Detail)の使い方メモ

Tableauは直感的に、マウスのドラッグアンドドロップでグラフが作れるのが魅力ですね。 しかし、エクセルのグラフをTableauに移植しようとした時に、マウス操作だけではうまくグラフが作れない時があります。 そういったグラフは、TableauのLOD(Level of De…

本「Go言語による並行処理」で非同期処理が楽しくなった

Go言語を始めました。 何か新しいことを学ぶ時には、ワンストップで体系立て全体像が把握できる、書籍を読むやり方が好きです。 今回「Go言語による並行処理」を読んだのですが、とても良かったので、ここに感想を書きました。 Go言語による並行処理 並行処…

Go言語の時刻演算パッケージ「time」の使い方メモ

Go言語は、シンプルな関数を組み合わせてプログラミングをすることが多く、また、関数毎にエラーチェックが発生するので、全般的にコードが長くなりがちです。 ちょっとした事をしたい時でも、コードをそれなりに書く必要があるのですが、毎回ゼロから書くの…

Go言語の正規表現・文字列操作方法メモ

Go言語は、シンプルな関数を組み合わせてプログラミングをすることが多く、また、関数毎にエラーチェックが発生するので、全般的にコードが長くなりがちです。 ちょっとした事をしたい時でも、コードをそれなりに書く必要があるのですが、毎回ゼロから書くの…

SVNでちょっとファイルをダウンロードをしたい時のコマンドメモ

SVNを使っているプロジェクトがあって、そこから最新のファイルをダウンロードすることがあります。 あくまで指定したファイルが欲しいだけで、そんな、ちょっとファイルを取得したい時に使う、必要最低限のSVNコマンドメモです。 svnインストール sudo apt-…

Go言語でJSONを読み書きする方法メモ

Go言語は、シンプルな関数を組み合わせてプログラミングをすることが多く、また、関数毎にエラーチェックが発生するので、全般的にコードが長くなりがちです。 ちょっとした事をしたい時でも、コードをそれなりに書く必要があるのですが、毎回ゼロから書くの…

Go言語でファイル・IO・ストリームを使った読み書き方法のメモ

Go言語は、シンプルな関数を組み合わせてプログラミングをすることが多く、また、関数毎にエラーチェックが発生するので、全般的にコードが長くなりがちです。 ちょっとした事をしたい時でも、コードをそれなりに書く必要があるのですが、毎回ゼロから書くの…

AWS CLI設定方法メモ

久しぶりにAWS CLIをインストールしました。バージョン2になっているんですね。 一度設定すると中々触れる機会がなくて忘れてしまうので、自分用設定方法メモです。 基本的な仕組み ~/.aws/config でプロファイルを設定する ~/.aws/credentials でユーザー…

Linuxでディレクトリ毎に環境変数を自動で変える方法

Docker Composeのプロジェクト名は、docker-compose.yamlファイルが置かれているディレクトリの名前になります。 しかし、ディレクトリを別の名前にしたいことは多く、そんな時はdocker-composeコマンドを実行する度に-p <project_name>オプションでプロジェクト名を指定す</project_name>…

Go言語でローカルパッケージを使う方法(Go Moludes)

Golangでプログラムを書いていて、プログラムが長くなってきたので、パッケージに分けてみました。 構成 ディレクトリ構成は下記のような感じ。 . |-- a | `-- a.go |-- b | `-- b.go `-- main.go 手順 方針 Go Modules を使って、プログラムを1つのモジュ…

Go言語でハマったことメモ(インターフェース)

Golangを始めました。 GolangはC言語のように、シンプルな文法・データ構造でできているのですが、同時に、生産性を高めるための、高度な概念も取り入られています。 そしてそのために、Golangには若干トリッキーな構文がいくつかあります。 しかし、それら…

Go言語でハマったことメモ(値渡し・ポインター渡し)

Golangを始めました。 Golangはポインターを使います。 Golangは歴史的に新しい言語なので、ポインターを意識しないで、何となくコードを書けば良しなに動いてくれるのかなと思ったのですが、甘かったです…。 ポインター自体はよくあるもので、とりあえずポ…

Go言語でハマったことメモ(slice・map・string)

Golangを始めました。 GolangはC言語のように、シンプルな文法・データ構造でできているのですが、同時に、生産性を高めるための、高度な概念も取り入られています。 そしてそのために、Golangには若干トリッキーな構文がいくつかあります。 しかし、それら…

Go言語でハマったことメモ(マップに構造体を入れると「cannot assign to struct field ...」のエラーになる)

Golangを始めました。 始めてみて感じたのですが、Golangはできるだけ文法をシンプルにかつ、できるだけコードがシンプルになるように設計されています。 そしてそのために、Golangには若干トリッキーな構文がいくつかあります。 しかし、それらを知らずに、…

Go言語でハマったことメモ(クラス・継承)

Golangを始めました。 始めてみて感じたのですが、Golangはできるだけ文法をシンプルにかつ、できるだけコードがシンプルになるように設計されています。 そしてそのために、Golangには若干トリッキーな構文がいくつかあります。 しかし、それらを知らずに、…

Go言語でハマったことメモ(ポインターのアロー演算子がない)

Golangを始めました。 始めてみて感じたのですが、Golangはできるだけ文法をシンプルにかつ、できるだけコードがシンプルになるように設計されています。 そしてそのために、Golangには若干トリッキーな構文がいくつかあります。 しかし、それらを知らずに、…

Docker Composeで、コンテナ毎にログをタブに分けて表示する方法

複数のコンテナを連携させたい時は、Docker Composeを使っています。 Docker Composeを実行すると、各コンテナのログが表示されるのですが、1画面に全てのコンテナのログが表示されます。 コンテナ毎にログを追いたいのですが、途中で他のコンテナのログが…

Jenkinsのdockerイメージは、Docker公式とJenkins公式の2つあるのか…

DockerでJenkinsを使いたかったので、Jenkinsイメージを取ってきて使いました。 FROM jenkins:alpine 問題発生 Jenkinsのセットアップでプラグインをインストールしようとすると、ことごとくエラーになりました。 原因究明 プラグインのエラーを見るとこんな…

kubectlで複数のクラスターを切り替える方法

Kubernetesの新しいクラスターを追加したので、kubectlコマンドで切り替えられるように設定しました。 一度設定してしまうといじることはなく、このままだとやり方忘れてしまうので、自分用に設定方法をメモしておきます。 仕組み Kubernetesを操作するにはk…

Google Cloud SDK(gcloud)で複数アカウント・プロジェクトを切り替える方法

Google Cloud Platformに新しいプロジェクトを追加したので、Google Cloud SDK(gcloud CLI)でプロジェクトを切り替えられるように設定しました。 一度設定してしまうといじることはなく、このままだとやり方忘れてしまうので、自分用に設定方法をメモして…