MOテクノロジー

技術をメモしていくブログ

Lambda(Java)で外部Jarや設定ファイルの読み込み方法

Lambda(Java)で外部jarを使いたい用件が出てきたので、やってみた。 課題として、外部jarを読み込めるか、設定ファイルを読み込めるか、の2つがあった。(外部jarは設定ファイルを読み込むことが必須のため) 結論として、jarは普通にビルドパスに含めればいい…

Pythonのデコレータは算数っぽく考えるとわかりやすかった

デコレータはなかなか理解するのが難しかったんだが、算数っぽく考えると割とすんなり飲み込めたのでメモする。 前提としてPythonは、関数内で関数を呼び出せる、関数を引数や関数の戻り値とできることを確認しつつ、ちょっとずつ考えていく。 関数内で関数…

sedの使い方忘れないように

sedを使いこなしたいと思いつつ、多機能すぎてついつい忘れてしまう。 基本の使い方のチートシート的な。使っているのはMacの標準で入っているBSD系のsed。 # パイプつなぎ ~ $ echo It is sunny today. | sed 's/sunny/rainy/g' It is rainy today. # 複数…

sarのログ保存期間の延長&記録間隔の変更

sarのログ保存期間はデフォルトで1ヶ月くらいになっている。 半年ほど記録を伸ばす必要が出てきたので、対応してみた。 osはAmazon Linux 2。 ログ保存期間の延長 修正ファイルはこちらのHISTORY。 デフォルトだとHISTORY=28になっているので、これを保存し…

単体テストの考え方メモ

単体テスト、そんなしょっちゅう書いていないし、ついつい考え方がぶれたりしてしまうのでポイントだけメモ。 実行に0.1秒もかかる単体テストは遅い。早く走らないとしたら、それは単体テストではない。 単体テストと他の種類のテストをごっちゃにしない。例…

Pythonで超簡易プログレスバー的な

Pythonでプログレスバーを出したい用件があったので調べてみた。 それ用のライブラリもあるみたいだけど、事情によりpip installすることの敷居が高かったので標準ライブラリだけで実装できないか調べてみた。 とりあえずキャリッジリターンとprint関数だけ…

X-Forwarded-Protoを学んだ

クライアント --> ALB --> EC2(nginx)という構成のサービスの話。 ALBでは80,443で受けたリクエストを全て80でEC2に送信している。 このとき、同期からnginxの設定で80できたリクエストは443にリダイレクトするから、無限ループになっちゃわない?と質問され…

Lambdaからcurlしようとしたらエラー

Lambdaで遊んでるんだけど、ちょっとした検証をしたくてLambdaからhttpリクエストをcurlで出そうとした。ちなみに言語はPython。requestsをimportしてもいいが、zipにしてあげるのがめんどくさかった。 subprocessをimportして、curlをしてみたらエラーが。…

「情熱プログラマー」を読んだ

「情熱プログラマー」を読んだ。 伝えようとしていることは プログラミングだけではなく、ビジネスの部分を理解しろ 勉強し続けろ 自分を売り込め のように感じた。まあその通りですよね。 笑った一文 たいていのプログラマは小中学生の頃、どんなグループを…

リードレプリカを含むRDSは停止できない

開発・検証環境ではLambdaを使ってRDSを夜間停止している。 ログをみたところ、エラーになっており正常に停止できていないことに気づく。 An error occurred (InvalidDBInstanceState) when calling the StopDBInstance operation: Cannot stop or start a R…

PyCharmをインストールしてみた

Pythonは今までvscodeで書いていたんだけど、仕事でそれなりにコードを書くことが増えそうなのでPyCharmをインストールしてみた。 まだ全然試していないから、ちょう上部だけの感想だけど、 プロジェクト作成時にvenvの設定とかできる。 ただvenv使うような…

opensslコマンドでbase64エンコードしたら改行されてしまった

APIの開発を行っていて、curlでリクエストを送る機会があった。 リクエストのイメージとしてはこんな感じ。 curl -k "https://sample-api/v1/users" -X POST -d "id=XXX" -H "Authorization:Basic $(echo -n api-user:EtKWah5ALFQhwPAf7YFx3grY57YQz6kXLh457…

【AWS】DynamoDBの料金(超ざっくり)

初めてDynamoDBを運用することになりそうなので、プロビジョンドモードとオンデマンドモードの料金体系の違いを超ざっくりメモ。 プロビジョンドモード 1秒あたりの書き込みキャパシティーユニット(WCU)と読み込みキャパシティーユニット(RCU)を指定する…

【DB】あえて正規化しない設計の学び

DB

新年ですな。 今新規でAPIの設計を進めているが、データ設計で学びがあったのでメモ。 API仕様(超ざっくり) 前提 API利用者の情報を持つ「認証情報テーブル」と、 申し込み情報を持つ「申し込み情報テーブル」がある。 リクエストパラメータ ?Id=XXX&Key=YYY…

2019仕事を納め、HHKBを洗う

弊社も12/27で仕事納めました。 今年の夏頃から使い始めた私物のHHKBを持って帰り清掃中。 来年もお世話になります。 キーボード外したりすると、カスタマイズしたい欲求が出てくるな…

【Mac】zshがデフォルトになったんすね

Mac

家用のMacBookAir、あんまり使ってないんですけど 久々に立ち上げて、あんまり考えずに「MacOS Catalina」に上げてみた。 ターミナル 見るとなんか書いてある。 Last login: Fri Nov 8 23:01:06 on ttys012 The default interactive shell is now zsh. To up…

【AWS】amazon linuxのyumリポジトリはS3にある??

AmazonLinux2にPython3を入れたいなと思い、yum install python3でインストールした。 次にライブラリをインストールしようとpip installをしたところ、NWエラーが出た。 [aurumAdmin@ip-10-116-0-32 ~]$ pip3 install fabric Collecting fabric Retrying (R…

【AWS】NLBの通信経路について今一度確認する

社内勉強会でAWSのVPCやELBについて講師として説明をした。 NATとNLBに関しては以下のような解説。 「NATはプライベートサブネットから外部に接続するためのもの、つまりyumとかcurlとかをするのに必要なもの。NATインスタンスとNATゲートウェイがあるよ。」…

【Mac】Chromeをターミナルから立ち上げられるようにした

ターミナルからChromeを開きたすぎたので、設定してみた。 設定方法 Macのターミナルにはopenというコマンドがある。 ~ $ open -h Usage: open [-e] [-t] [-f] [-W] [-R] [-n] [-g] [-h] [-s <partial SDK name>][-b <bundle identifier>] [-a <application>] [filenames] [--args arguments] Help: Open opens </application></bundle></partial>…

【AWS】2019/08/23 東京リージョン障害の備忘録

AWS東京リージョンでの大規模NW障害、弊社もそれなりに影響を受けた。 ここまでの障害は滅多にないと思うので、備忘として残す。 確認できた症状 ap-northeast-1aに存在するEC2が複数ダウン。 そのうち本番環境として稼働していたのは2つのサービス。 ALBで2…

【AWS】ALBとNLBのIP書き換えについて

ALBとNLBには様々な違いがある。 IPアドレスの書き換えについても違いがあり、ALBを経由した場合はALBのプライベートIPに書き換わり、NLBを経由した場合は書き換わらずクライアントのIPのまま繋がる。 今回は動作がその通りなのかを調べた。 準備 ALB,NLBを…

【Python】本当に内包表記の方が速いのか?

『エキスパートPythonプログラミング改訂2版』を読んでいる。 単純なfor文より内包表記の方が処理が早く美しいということなので、どれくらい差があるか確認してみた。 Pythonのバージョンは3.7。timeitライブラリを使って計測する。 リスト内包表記 普通のf…

【Python】venvを使って仮想Python環境を作る

Pythonを使って遊ぶ場合、今まではpipでライブラリを直接ローカル上にインストールしていたが、venvで仮想環境を作ってみたところ結構よかった。 venvとは Pythonに関する仮想環境を作成できる。 これの目的としては環境の分離。PythonのバージョンとかPyPI…

【Linux】CPUからロードアベレージの数値を検討してみた

今担当している運用の仕事は、サーバのロードアベレージが閾値を越えるとアラートが飛ぶようになっている。 ある時間帯に動くジョブが集中しており、その時に閾値を超えてしまうため、毎日アラートが飛んでくる。 そこで、今の閾値は適切かどうか、どの程度…

【AWS】EFSのマウントターゲットはどのサブネットに立てるべき?

EFSを立てる時にマウントターゲットの立てるサブネットを選択する。 この時プライベートなサブネットに立てるべきか、パブリックなサブネットに立てるべきか、AWSの公式ドキュメントを読んでも見つからなかったので悩んでいたが、AWS Black Beltの資料に参考…

【AWS】EC2からEFSをマウントする

EC2からEFSをマウントしてみる。 OSはAmazon Linuxを使用。 EC2を2台立て、両方からEFSをマウントし同じところを見れているか確認する。 手順 1台目の設定 Amazon Elastic File System amazon-efs-utilsのインストール [root@ip-10-0-1-39 ~]# yum install -…

【Python】変数名や関数名の先頭のアンスコ( _, __)の役割

変数名や関数名の先頭にアンスコが1つついているものと2つついているものがあるので調べてみた。 アンスコ1個 PEP 8からの引用 __single_leading_underscore: "内部でだけ使う" ことを示します。 たとえば from M import * は、アンダースコアで始まる名前の…

【Python】可変長引数(*args, **kwargs)の働き

Pythonの引数で*argsや**kwargsが出てくることがあるが、これらについて調べたのでメモ *args と **kwargs の意味 どちらも可変個の引数を受け取るが、以下の違いがある。 *args: 複数の引数をタプルとして受け取る **kwargs: 複数のキーワード引数を辞書と…

【AWS】Route53でドメインを取得する

Route53で独自ドメインを取得する方法をメモ 料金 料金をざっくり調べてみた。 ドメイン管理 ⇨ドメイン名の管理にかかる年間使用料 ホストゾーン管理 ⇨ホストゾーンごとに 0.50 USD/月 – 最初の 25 個のホストゾーン ホストゾーンごとに 0.10 USD/月 – それ…