記事一覧
noteを再開します #432
1ヶ月ほど更新停止していましたが、また再開したいと思います。
今回はそのご報告と、この1ヶ月で色々あり、考え方も少し変わったので自分なりに整理しようと思います。
怒涛の10-11月本当に色々ありました。。。
妻と長男が乗った自転車が車にぶつかられたり(軽傷です)、次男がなぜか右目周辺ばかり怪我したり(軽傷です)、初めて健康診断で引っかかったり(結局異常なし)。。。
そんなこんなで一度心身を
GolangとgRPC #464
Goのキャッチアップを進めていて、GoではgRPCが使用されることが多い、という情報を得たので少し寄り道して整理してみます。
gRPCはオープンソースのAPI アーキテクチャおよびシステムで、REST等とよく比較されます。
RPCは Remote Procedure Call の略で、その名の通りリモート(別サーバー)で動作している特定のプロシージャ(機能)を呼び出して使用できます。gRPC
Golang_switch文とforのラベル #463
C由来の多くの言語にあるように、Go言語にもswitch文があります。
Go言語のswitch文は「フォールスルー」しないという特徴があります。つまり一致するcaseが見つかれば以降は実行されず、breakは不要です。一方で、breakで明示的に停止することも可能で、forのラベルと組み合わせるとその意味が出てきます。
それぞれコード例と共に見ていきたいと思います。
switchの基本構文基
Golang_forとifと処理時間の計測 #462
Golangのforとifについて簡単にまとめつつ、処理時間の計測方法についても触れたいと思います。といってもこの辺はJavaScript等の他言語と似ているので、難しくはありません。
for文の基本構文基本は以下です。
for 初期化ステートメント; 条件式; 後処理ステートメント { // ループ処理}
例として、1から10までの数字を足し合わせるコードです。
sum := 0f
AWS_RDSからSnowflakeへのデータ投入を自動化する #461
RDS (MySQL)に保存しているデータを一部抽出してSnowflakeに保存する処理を自動化する方法についてまとめます。
Step FunctionsとLambda、S3を使用して段階的に処理しています。
Step Fuctionsの定義以下のように定義できます(ちょこちょこマスキングを入れています)。
Slackに開始メッセージを通知
LambdaでRDSからデータ抽出してS3へts
Golang_ポインタ型と参照型 #460
前回の記事でGolangの参照渡し(ポインタ型)について整理しました。
その中で、参照渡しを使う場面の1つで「他の参照型を使う場合」を紹介しています。上の記事では簡単に触れる程度でしたが、ここで少し掘り下げてみたいと思います。
ポインタ型とは参照型について理解を深める前に、ポインタ型の概要を改めて掴んでおきます。
前回の記事で触れたように、ポインタ型は変数のメモリアドレスを格納するデータ型で
Golang_変数の値渡しとポインタの理解 #459
Golangにおいて、関数の引数として変数を渡す方法は主に二つあります。
値渡し
参照渡し(ポインタを使用)
これらの概念は他の多くのプログラミング言語と共通していますが、Golangにおける挙動を理解するため、それぞれの使い方と利点についてまとめます。
変数がメモリに保存されている状態ポインタとは、ある値が保存されているメモリ内の位置を表す変数です。それを理解するためにも、まずはメモリに値
Golang_書籍紹介と基本的なコマンド #458
新しい職場で使うGolangのキャッチアップを始めており、一先ずオライリーの書籍を2冊読み切りました。せっかくなのでそれぞれに対して触れつつ、Goに関するアウトプット第一弾として基本的なコマンドを整理したいと思います。
Goの書籍紹介まず読んだのは入門書で、こちらは言語としての機能や背景がとても分かりやすく説明されていて、初心者にお勧めしたい一冊です。
2冊目はより実務に則した実践書という雰囲
Djangoでミドルウェアを自作する #457
久しぶりの投稿になってしまいました。
腰の手術で入院していたことに加え、この度エンジニアとして転職することが決まり、次の現場で使われているGO言語のキャッチアップに時間を使っていたためです。
次はGOのアウトプットをしていこうと思ってましたが、現職でとても良い学びがあり、堪らずにDjangoでアウトプットしています。
Webミドルウェアとはミドルウェアという言葉はコンピュータサイエンスの様々な
AWS_Amplifyの環境変数をパラメータストアで管理する #456
Amplifyではアプリケーション単位で環境変数を設定することが可能ですが、ここにアプリケーションで使用する外部の認証情報をハードコードしてしまうと、Amplifyへアクセス可能な人は誰でもそれを見れてしまいます。
認証情報はできるだけまとめて管理して、かつアクセスできる人を限定した方が良いのは周知の通りなので、今回はパラメータストアで管理して使用する方法についてです。
大きな流れは以下です。
AWS_CloudTrailとCloudWatchで特定のAPIを見つけ出す #455
AWSアカウントの内部で特定のアクセスキーが使われている箇所を探し出す必要があり、その手順を習ったので整理しておきます。
大きく以下の手順で探索しました。
CloudTrailのイベント履歴で探す
CloudTrailで証跡を作成してCloudWatchに転送する
CloudWatchでアクセスキーを使用したAPIコールを検索する
それぞれ見ていきます。
CloudTrailのイベン
DockerとCPUアーキテクチャ #454
最近、DockerコンテナとホストマシンのCPUアーキテクチャの違いから、特定の機能が動かないという事象が発生しました。これまでCPUアーキテクチャはあまり意識したことがなく、理解が浅かったので整理してみます。
理解するに当たって、以下の記事から多くを学ばせていただきました。
前提:起きていた違いアプリケーションがホストされているコンテナと、そのコンテナをホストするマシンのCPUアーキテクチャ
Git_Fast-Forward Mergeとは #453
前回まとめていて、表題部分についても理解が甘いことが分かったので今回整理します。
Fast-Forward Mergeとはブランチをマージする際にマージコミットを発生させず、HEAD位置の変更(先に進んでいる方に合わせる(=早送り))だけを実行する方法です。
以下のように、現在のブランチが指すコミットが、マージするブランチのベース(共通の祖先)コミットであり、かつその間に他のコミットがない場合
Git_Commitの仕組みと種類について #452
Gitに関して少し理解を深める機会があったのでメモしておきます。
Gitとはまず簡単にGitの役割についておさらいを。Gitは、ソースコードのバージョン管理に広く利用されている分散型バージョン管理システムです。変更の履歴を追跡し、複数の開発者が同時に作業できるように設計されています。
CommitとはGitにおいて、Commitはプロジェクトの履歴における1つの「チェックポイント」です。ファイ
ハッシュ化のソルトとペッパーとストレッチング # 451
最近ハッシュテーブルとかハッシュマップとかについて記事を書いていましたが、そもそもの一般的なハッシュについて理解を深めたのでメモしておきます。
ハッシュ化とはハッシュ化とは、元データ(文字列)をハッシュ値(文字列)に不可逆変換することを指します。意味不明な文字列に変換されるので、パスワードなど、変換前の文字列を知られたくない場合に用いられます。
ハッシュ化を実行する関数をハッシュ関数と呼びます
ハッシュマップでループ処理を高速化してみる #450
leetcodeでハッシュマップ実装の練習をしたのでアウトプットします。
お題は以下です。
入力値と答えの例は以下です。
-- Example1--------Input: nums = [2,7,11,15], target = 9Output: [0,1]Explanation: Because nums[0] + nums[1] == 9, we return [0, 1]. -- Ex