技術
AWS IAMでは、特定のグループにポリシー(権限)を設定し、そのグループにユーザーを追加することで、権限管理が容易になります。設定できるポリシーは、AWSが用意しているポリシーと、独自に設定できるポリシーの2パターンあります。 今回は、AWS IAM ユーザ…
6月18日(火)にGitHubがPull Pandaを買収したと話題になったので、早速Snapmartにも導入しました。今回は簡単にPull Pandaの紹介をします。
サービスを運用していると、サーバー内のディスク空き容量が枯渇してしまうことがしばしばあると思います。以前「AWS EC2のルートボリューム(EBS)をダウンタイム0で拡張する方法」について書きましたが、対応の一つとして格納されているファイルを整理するこ…
業務やプライベートでReactNative + Expo製アプリをpullしてきた場合、コードを読むだけではなく、サクッとエミュレーターで動かしたいとことが多くあると思います。 今回は、ReactNative + Expo製アプリをiOS / Android(Genymotion)エミュレーターで動作さ…
Webサービスを運営していると、夜中にWebサーバーのプロセスが突然死してしまい、朝に気づくということが多々あります。 流石に人間が24時間365日監視しているのはツラいので、ある特定のプロセスが落ちたら自動で検知と再起動という処理を行いたいです。 今…
TV放映などで、一時的にスケールアップさせたい時に、オートスケールの機構がなければ職人による技が光ります。 今回は、スポットリクエストで増やしたEC2インスタンスのIPをAWS ESS access policyに登録したかったので、IPを取得する必要がありました。
Snapmart社のstagingのDB環境は、AWS RDSを使用しています。 毎日24時にproduction環境のスナップショットからstaging用DBを作成し、update文で個人情報やメールアドレスなどをマスクした状態にしています。 また、stagingが配置されているVPCは社内ネットワ…
RailsとJavaScriptを同時に扱っていると((Style Guideで記法が異なる言語を同時に扱っている場合))、snake_caseからCamelCaseに置換したい時がしばしば訪れます。 一つずつ修正した方が、人間の温かみを感じることができるコードになると思うのですが、置換…
ReactNativeを使い始めたものの、基本的に参考になる記事が少なくて詰みかけてしまったり、英語の記事がメイン(これはまだ良いけど)であったり、参考書が少ないので、初心者にはだいぶハードルが高いなぁと感じていました。 写真者同士で助け合ったり、気軽…
React Nativeによるアプリ開発では、Expoを使うと中々捗るのですが、2018年11月3日にExpo SDKがv31.0.0にバージョンアップしました。このリリースの大きなポイントとしては、2018年9月にリリースされたReact Native 0.57に対応したことです。 React Nativeは…
Goでスクリプトを書いていると、巨大なmain関数ができてしまったり、1つのファイルに色々な関数がごちゃまぜになることはよくあります。そこで、今回はGo言語のパッケージを作る方法について紹介します。
TreasureDataを運用していて、存在するDBとその中のテーブルのスキーマを一覧で取得したいことがあったので調べて見ました。 GUI上からDBとテーブルを一つずつ確認するのはさすがにツラいのでサクッと見れる方法はこちらです。 `td db:list -f tsv | awk '{ …
以前の記事でLocalStackをインストールしました。今回はLocalStackを使用してGoで書いたLambdaからDynamoDBを呼び出す方法を紹介します。
以前ServerlessFrameworkでLambdaからDynamoDBを呼び出す処理を書いていました。しかしServerlessFramework単体だと修正, デプロイ, 動作確認のビルドライフサイクルが遅くなる問題があります。 今回は、その問題を解消すべく、LocalStackのインストールから…
技術書典でRe:VIEWを使っていたものの、文章を書き、textlintを回すというCI環境を整えることができませんでした。また、このCI環境は、ブログ執筆においても有効であるため、このタイミングで構築することにしました。今回はRe:VIEWで書いた文章をCircleCI…
技術書典5に参加したのですが、自分で本を作るのは初めてだったので、Re:VIEWの使い方から学び、入稿して印刷所のサポートの方から指摘を受けて再入稿して、やっと物理本を完成させることができました。 今回この記事では、Re:VIEWで執筆とPDF出力を行い、印…
10月8日(月)に開催された技術書典5で出店者側として参加しました。今回は技術書典5の参加レポートと振り返り(KPT)について書こうと思います。
サービスを公開したと同時に、mackerelを導入してみました。 CPU, Memory, filesystemのアラートをデフォルトの閾値で設定した結果、一瞬でfilesystemのアラートが鳴りました。 すぐさま対応できなかったので、とりあえずアラートを止めるために閾値を変える…
これまで、Webサービスを作ったことはあれど、サーバーの管理/監視は構築したことがありませんでした。 手軽に導入したかったので、SaaS型サーバー監視サービスを導入しようと考えていました。 そこで、今回はmackerelを使って監視をしようと思います。また…
最近個人プロジェクトの開発をしているのですが、気づけばGithubの草が60日間連続で生えていました。 60日間も毎日草を生やしていると、完全に習慣されたと思ったため、 今回はGithubの草を60日間連続で生やしてわかった習慣化のコツを紹介します。
個人開発において、Railsのdeviseから配信されるメールは、これまでGmailを使用していたのですが、せっかくドメインを取得したので、AWS SESからメールを送信することにしました。 今回はRailsにおいて、deviseが送信するメールをAWS SESから配信する方法に…
AWS OpsWorks スタックでは、Chef Supermarketで公開されているCookbooksを適用する方法もありますが、自前で作成したCustom Chef cookbooksを適用することもできます。今回はAWS OpsWorks スタックにおいて、自前で作成したCustom Chef cookbooksを適用する…
Amazon LinuxでWebdriverIOによる自動E2Eテストの実験をしようとしていたのですが、うまくGetting startedできませんでした。Linux環境においてWebdriverIOのGet Startedはやや説明不足感があるため、今回の記事では、Amazon LinuxでWebdriverIOを使ったChro…
ひょんなことから、画像をアップロードする処理を書くことになりました。 これまで、Railsで画像アップロードといえば、CarrierWaveやPaperclipを使っておけば良いでしょ〜!くらいに思ってたんですが、せっかくRails5.2を使っているのであれば、Active Stor…
Rails 5.2でJWTとdeviseを使った認証の仕組みを作る機能を開発しているときに、Rails5.2からcredential管理が変更されたことに気づいたので、 今回はRails5.2のcredential管理の方法をざっくり説明しようと思います。
Chrome ExtensionのBrowser Actionsで認証リクエストし、レスポンスのJWTをlocalStorageに格納する処理を作っていました。 その後、さらに拡張してContent ScriptsでJWTを使って他のAPIリクエストをするときに、「あれ?localStorageのスコープ違くね?\(^o…
前回の記事ではRailsを使って、APIの受け側を作りました。ただ、このままだとJSでフロントエンドからAPIに対してリクエストした場合、preflightリクエストが飛ぶので、No route matches [OPTIONS]エラーが返ってしまい、正常終了できません。今回は、Railsで…
最近フロントエンドからAPIを叩く実装における認証の仕組みをどうするか考えていました。 以前、AWS Cognitoを使った認証仕組みを作ったことはあったのですが、Railsの場合はどのようにJWTを扱うか知りたかったので、作ってみました。 今回は、タイトルの通…
Redashのバージョン2系から3系にupgradeした際、DataSourceのプルダウンから色々なものが消えてしまいました。この記事はBigQuery, AWS Athena, Google Analytics, Google Spreadsheetを復活させる方法について書いています。
1月20, 21日と、会社の開発合宿に行ってきました。 取り組んだ内容はタイトルの通り、AWS Database Migration Service(以下DMS)を使ったデータベース統合です。