Serverless FrameworkとGoでAWS利用費を毎朝Slackに通知する

以前、「AWS LambdaでAWS利用費を毎朝Slackに通知する」というタイトルで記事を書きました。 この中では、Serverless Frameworkを使わず、Goで書いたコードをビルドしてZip化、AWSリソースは手作業で作成、デプロイももちろん手作業でZipをアップロードして…

AWS CDKで作成したリソースのARN文字列を取得して加工する方法

AWS-CDKではいくつかのコンストラクトでAWSリソースを作成することが可能です。 今回は低レベルのコンストラクトを利用したAWSリソースのArnを取得して、その文字列を加工してCWAlarmのDimensionのvalueに渡そうとしたときに詰まった部分を書いていきます。 …

AppThemeでNoActionBarを指定して、ToolbarにOptionMenuを表示したい

まだまだAndroid開発のことがわからない、ryskitです。 ActionBarにオプションメニューを表示するには、 onCreateOptionsMenu() をActivityに書いてあげれば表示できると理解していたので書いてみたけど、表示されない。 なんでかなと思ってサクッと調べたこ…

AWS LambdaでAWS利用費を毎朝Slackに通知する

明けましておめでとうございます! 今年もよろしくお願いします! 今年は、「個人ブログで技術ネタ50記事書く」という目標も立てたので早速1本目を書きます! 今回作りたいのはAWS Lambdaを使ってAWS利用費を毎朝通知する仕組みです。 イメージとしては、今…

私の #2020年やりたいことリスト

Noteに書いたので、興味があればどうぞ。 note.com

Gitのあるコミット間で変更されたファイルを一覧で取得したい

git diffコマンドのオプションである --name-only をつけてあげると変更ファイルの一覧を取得できます。 git diff --name-only [コミットID] [コミットID] 以下のように出力されるので、これを加工する場合はパイプでつないでいけば良いですね。 wp-includes…

CSSで画像をトリミングするためにobject-fitを使ってたら痛い目を見ました

久しぶりにHTMLコーディングをすることがありました。 大きい画像をCSSでトリミングして良い感じに表示したいなと思い、object-fit: cover; を使って良い感じに表示できてすごく便利になったものだなと感心してました。 で、あとから画像の比率がおかしいと…

MVVMアーキテクチャでAPIからビール情報を取得して表示するコードを書くのに役立った記事をまとめておく

PUNK APIというBREW DOGのビール情報を返してくれるAPIがあり、それを使って簡単なデータ表示アプリをMVVMアーキテクチャで作ったときに役立った記事のリンクを備忘録としてまとめておく。 ライブラリは以下を利用した。 HTTP通信周り OkHttp4 Retrofit2 Ser…

試して理解 Linuxのしくみの第4章を読んだ

blog.ryskit.com 前回の続き。 この4章で取り扱うのは「プロセススケジューラ」についてです。 この章で大事なのは以下のとおり。 同時に何個のプロセスが実行していても、ある瞬間に論理CPU上で動作できるプロセスは1つだけ 論理CPU上では、複数プロセスが…

試して理解 Linuxのしくみの第3章を読んだ

blog.ryskit.com の続き。 今日は第3章のプロセス管理を読んだ。 カーネルによるプロセス生成と削除の機能についてだが、仮想記憶の理解がないと詳しい理解が得られないということで、仮想記憶がない単純な場合をもとに話が進んだ。仮想記憶については5章で…

試して理解 Linuxのしくみの第2章を読んだ

blog.ryskit.com の続き。 第2章では、CPUはユーザモードとカーネルモードを切り替えて処理を実行しているということを学んだ。 CPUのモード遷移の図や実験で試したプログラムのCPUのモードの遷移図は分かりやすい。 試したコマンドは、strace, sar 。 簡単…

試して理解 Linuxのしくみの第1章を読んだ

「Linuxのしくみ」はOSやハードウェアについて、実際に手を動かして挙動を確認しながら学べる本です。 仕事で一緒に働いている方々が低レイヤに詳しいので、感化されてこの本を手に取った。 理由は、試して理解と書いてあったから。 手を動かさずに理解する…

direnvの使い方をいつも忘れるからメモしておく

direnvの使い方をいつも忘れるので備忘録として書いておく。 direnvとは 特定のディレクトリに移動したときに設定ファイルに記載された環境変数を読み込んで有効化するツール。 とりあえず、まだインストールしてないのであればインストールするべし!便利な…

メタプログラミングRuby第2版 Ⅱ部を読んだ

メタプログラミングRuby第2版 Ⅰ部を読んだの続き メタプログラミングRuby第2版 Ⅱ部を読んだので、簡単な内容と感想を書いていく。 最後に、読んでメモしたものを追記しておく。 I部ではRubyのメタプログラミングの考え方や継承チェーンの仕組み、メソッドや…

「新装版リファクタリング - 既存のコードを安全に改善する」を読んだ

今、仕事で参加しているプロジェクトのJavaのコードは数年前のもので、昔に書かれた部分は、メソッド名が分かりづらかったり、処理を一つのメソッドに詰め込み過ぎていて可読性が低い状況である。(テストは結構書かれているから修正できる) また、最初にアプ…

EC2+Squidでプロキシサーバを立てて、複数IPでアクセス元を分散させる

スクレイピングをする場合、同じアクセス元だとBanされたりすることがあるようで、なるべくコストを抑えつつプロキシサーバを運用したいと相談されたので、AWSで試してみることにしました。 前提 VPCとサブネットがすでに作成されている前提で書いていきます…

メタプログラミングRuby第2版 Ⅰ部を読んだ

最近、友達と毎週メタプログラミングRubyの読書会をやっています。 というのも、友達が転職して、業務でRubyを使い始めることになり、自分も業務で少し使っているので、お互い知識を共有しつつ学びがあれば良いなと思って始めました。 序盤の4章ぐらいまでは…

MySQLのJSON型の値をGenerated Columnsを使ってカラムにデータを追加してみる

MySQLのGenerated Columnsを使う必要があり、動作が気になったので検証してみました。 Generated Columns(生成カラム)とは Values of a generated column are computed from an expression included in the column definition. [翻訳] 生成された列の値は、…

[Android] [Kotlin] Android開発でRoomとKoinの設定

今、UdemyのAndroid開発コースをやっていて、そのコースではRoomとToothPickというライブラリを使って開発が進むのですが、個人的にKoinを使いたくてドキュメント見ながらやると見事に設定の記述漏れでハマったので、備忘録として書いておきます。 Kotlinの…

[Android] [Kotlin] TextViewに打ち消し線を入れる

AndroidでTextViewに打ち消し線を入れるときどうすれば良いか? 以下のように書いてあげれば打ち消し線が表示されます。 description は TextViewのIDです。 description.paintFlags = description.paintFlags or Paint.STRIKE_THRU_TEXT_FLAG 以上です。

UdemyのKotlin for Android O Developmentというコースが良かった!

普段はWeb開発しかしていないのだけれど、モバイルアプリを開発する必要性が出てきたので最近いろいろサンプルアプリを作ったり、ライブラリを試しに動かしたりしている。 そのいった中で、Udemyの「Kotlin for Android O Development」というコースが個人的…

AWS CloudFrontのキャッシュを削除する方法

AWS

静的ページをCloudFront + S3でホストしていて画像を更新したけど、キャッシュのせいで反映されないということがありそうです。 そんなときにキャッシュの有効期限まで待つのではなく、自分でキャッシュを削除して反映させたいはず。 この記事では、AWSのClo…

Databindingを利用したアプリをビルドするとUnresolved reference: BR エラーになった

Androidアプリの開発を始めて、Databindingが便利そうというかMVVMなどのアーキテクチャで実装しようとすると必須?みたいなので、とりあえず簡単なサンプルアプリを実装して、どんなものか簡単に実装を理解しようとした。 アプリを書き終わったのでビルドし…

自分はこんな傾向があります

だいぶ前にやったmgramの結果の画像を下書きにアップしていたので、公開しておく。 最後の課金をすると、自分を構成する性格の標準偏差が見れるはずで、「豆腐メンタル」すぎるという結果だった気がする。 mgram.me

Rustをインストールして始めてみる

会社の人から、Rustはすごくいいぞ〜と言われ、O'Reillyから出てるプログラミングRustを読んだりしている。 Rustをインストールしたとき、すごく簡単だったので手順を記しておく。 といっても、以下のコマンド叩くだけ。 curl https://sh.rustup.rs -sSf | s…

GoLand 2018.2 でDebugを起動できなくなった

Goならわかるシステムプログラミングって本を読んでて、 一章には、fmt.Println("Hello World")をデバッガーを使ってシステムコールの「見る」と書いてあったので、 素直にGoLandでデバッガーを起動すると以下のようなエラーが出た。 could not launch proce…

【Golang】RequestからQueryStringを取得するには

Go

最近Golangでコマンドラインツールを作りたくて、Golangのサンプルコードとかを動かしていろいろ遊びながら覚えているところなのですが、たまたまEchoサーバーのプログラムがあったので試したのですがすごく簡単にかけますね! そのとき、リクエストからQuer…

EC2のユーザーデータ内でcloud-initとシェルスクリプトを使いたい

こんにちは。こんばんは。 たまたま、CloudFormationのテンプレートから起動されるEC2のユーザーデータを利用して、インストールしておきたいモジュールがありました。 ユーザーデータには、cloud-init や シェルスクリプト で何らかの処理を書くことができ…

Railsのbelongs_toに指定できるoptional: trueとは?

今年1月に転職して新しい環境で働き始めていて、そこのプロジェクトではRuby on Railsを使っています。 今までRuby on Railsでサービス等を作った経験があまりがなくRailsを知る必要が出てきで、最近出版された「Ruby on Rails5の上手な使い方」という本を買…

Work Rules!を読んだ

グーグルの人事として働いている著者が書いた本 グーグルがなぜ、どう動いているかの著者なりの解釈を書いた内容 第1章 創業者になろう 自由度が高い - 自由裁量権を与えられる トップダウン、階級制、指揮統制を特徴とする経営モデル - 自由度が低い環境は…