サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
TGS2024
qiita.com/NewGyu
はじめに 最近RustをいじっているのでAdvent Calenderでなにか書こうと思っていたのですが、あまり面白い話を語れるほどにチョットデキルレベルではないので違うことにしました。 もうすっかり担当日は過ぎてしまったのでネタ的な話題はやめて、自分的に理解が少し怪しいことを文章化することで理解を深めようというのが意図です。 (今日は最終営業日ですが、必要な打ち合わせも終わって、みんな休みで他の人と共同作業することもないので今年の業務は終わりにしてゆっくりと書いてみようと思った次第です) テーマは「SPA(Single Page Application)におけるアクセストークンの管理ってどうするのが良いの?」ってやつです。 下図のようなJavaScriptで書かれたSPAがバックエンドのAPIにアクセスするシーンが想定範囲です。 を起点に色々議論があったようで(2018年の記事なのでかな
Ansibleはセットアップ先のサーバーにChefみたいにエージェントを入れなくていいので楽ですね。 セットアップ先にSSHで接続できて、Python2.4以上が入っていればOK(大体のLINUXは入っています)という気軽さがいいです。 今回は、 セットアップ先にSSHで接続できて この部分の接続ユーザーをどう指定するか疑問があったので調べてみました。 方法は3つあります。 1. 実行時の引数で指定 -u オプションで指定します。 newgyu@NewGyuMachine:~$ ansible-playbook -h Usage: ansible-playbook playbook.yml : -u REMOTE_USER, --user=REMOTE_USER connect as this user (default=newgyu) newgyu@NewGyuMachine:~$ an
動機 AuroraDBのIAM認証にかなりハマったのでその体験を共有しておこうと思います。とても長くなったので先に結論を書いておきますね。 Node.js SDK + IAM Roleの組み合わせの問題 →ドキュメントにひっそり書いてある IAM認証は実はアプリケーションからの接続にはあまり向いていない →ドキュメントにひっそり書いてある AuroraDBのIAM認証とは何か 丸投げで恐縮ですが下記のようなものです。 MySQLへの接続時にパスワードを用いない認証手段 アプリケーションの設定ファイルなどにDBのパスワードを書かなくていい EC2インスタンス、ECSタスク、Lambdaファンクションなどにひも付けたIAMロールに権限を与えることでDBにコネクトできる 何が嬉しいのかというと前述通りDBのパスワードを管理しなくて良いことです。 DBのパスワードの扱いは何かと気を使うものです。プ
動機 以前、こちらの記事で普段使いのDocker生活を提唱しました。事実、私は普段の業務でいくつかの作業はdocker-compose化してソースコードに含めて配布していますが、今回は毎回ググってる感のある証明書作成の作業をDocker化してみたらどうだろうと思いやってみました。 ソース 使い方 0.前提知識 こちらのサイトを参考にさせていただきました。 クライアント証明書はサーバー証明書と同じで 秘密鍵を作る 秘密鍵からCSRを作る CSRにCAが署名することで証明書となる という手順です。 が、最終的なファイル形式がサーバー証明書で一般的なX509形式ではなくp12形式となります。(なんでクライアント証明書はp12が一般的なのですかね・・・という疑問) X509形式 BASE64エンコードされたASCII文字で形成されるテキストファイル 秘密鍵と証明書が別ファイル p12形式 バイナリ
背景 2017/7にSwaggerはOpenAPI Specificationとして生まれ変わりました。 正確にはSwaggerの開発元(?)であるSMATRBEAR SoftwareがSwagger2.0をOpen API Initiativeに寄贈し、それを元にOpenAPI Specification(以下OAS) 3.0が作られました。 Swagger2.0と比較してOAS3.0では様々な拡張とリファクタリングが行われましたが、その中でParameter Objectについて記法がかなり拡張されたのでそれについて書きたいと思います。 そもそもSwagger(OAS)って何? こちらの記事でも述べましたが、この時と多少変わっているので、 https://swagger.io/specification/ から引用します。 The OpenAPI Specification (OAS)
swagger-uiの3.xが出ました 個人的に大きく変わったなと思うポイントは、以下の二点です。 YAMLの読み込みがサポートされた swaggerのspecの書式はJSONとYAMLの2種類が用意されているのですが、swagger-ui 2.xではJSONしかサポートされていなかったので、YAMLをJSONに変換して読み込ませる必要がありました 見た目がガッツリ変わった deprecatedとかが地味だったのがわかりやすく表現される様になりました ローカルで動かすのが楽になった 以前こんな記事を書きました。 SwaggerでAPIを定義してインタラクティブAPIドキュメントを見る Dockerを使ってswagger.yamlをサクッとみる このときに比べてswagger周辺のツール群も洗練されてきたので、それに合わせてさくっと見る方法の最新版を書きます。 公式Dockerイメージが有る
{ "message": "Validation Failed", "errors": [ ] } でも意外と苦労したのでメモ。 Lambdaのレスポンスに困った Lambdaのcallbackで cb(err, null) をコールするとerrの型がなんであれ、 { "errorMessage": "何かのエラー", "errorType": "Error", "stackTrace": [ "module.exports (/var/task/src/operation/xxxx.js:27:9)", "next (native)", "onFulfilled (/var/task/node_modules/co/index.js:65:19)", "process._tickDomainCallback (node.js:407:9)" ] }
動機 ドキュメント書いてますか? 私は気分が乗ってくればさほど嫌いではありません。 とはいえMS-Wordはイライラするし、差分把握が出来ないのでやはりテキストベースでやりたいもの。そうなるとMarkdownがテッパンですよね。 Markdownで文書を書く場合、図の扱いに頭を悩ませます。特にプログラム設計の文書だとUMLの図が必要になることがあります、というところが動機です。 Dockerでさくっと動かせるようにしてあるので良かったら使ってみてください。 https://github.com/NewGyu/gitbook-uml GitbookはMarkdownで文書を書いて公表するためのツールセットとサービスです。 MarkdownをHTML,JSなどに変換するツールセット(ローカルでのプレビューもできる) ドキュメントを公開できるサービス https://www.gitbook.co
$ ansible-playbook -i host/local test.yml PLAY [all] ******************************************************************** GATHERING FACTS *************************************************************** ok: [127.0.0.1] TASK: [でばっぐ] ********************************************************** ok: [127.0.0.1] => { "msg": "{'branch': 'override'}" } おやおや、 git.repo=xxxx が消されてしまいましたね。 replaceのポリシーなので、git と
この記事は2016年頃の情報となっています。2021年となっては古い話です。 現在はWSL2を使うことによってかなり快適にLinuxコンテナをWindows上で扱うことができます。 https://docs.docker.jp/docker-for-windows/wsl.html 私自身も個人PCをWindows+WSL2で運用するようになりました。 DockerはWindowsで動くの? という質問をたまに受けます。 動くといえば動くし、動かないといえば動かない。 私自身はWindowsで開発をあまりしない人(普段使いはUbuntu)なので正直WindowsでDockerを使おうというモチベーションはあまり無いのですが、プロダクト名が若干ややこしかったりして混乱しやすいので自分の理解のためにも書いておこうと思います。 最近の動向 つい最近、Microsoft社とDocker社の努力によ
Lambdaで環境変数っぽいことを実現するためにエイリアス名を使う方法があります。 http://qiita.com/mashiro/items/ab4cab5e623397d6b29d しかし、ハマりどころがあるので書いておきます。 サンプル devステージとproステージでDynamoDBのテーブルを切り替える例です。 configモジュールを使用 環境変数NODE_ENVにdev,proという値を設定して切りかえ Lambdaのコンテキスト変数からエイリアス名を取り出す envtest/ ├── config │ ├── dev.js │ └── pro.js ├── db.js ├── index.js ├── node_modules │ ├── co │ └── config └── package.json "use strict"; const co = require("
AWSの認証情報についてググると良く以下の環境変数をセットせよと言う記事が出てきます。 AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY これでも良いのですが、複数のAWSアカウントを使い分けていると面倒ですね。 というわけで、この辺のファイルのお話です。
Swaggerを使ってAPI定義をしてスタブを動かしてみます。 Swaggerの関連ツールは様々な言語に対応していますが、ここではNode.jsを使って試してみます。 Swaggerとはなんぞ? Swaggerは関連ツールが多くあるので全容がつかみにくいのですが、 What is Swagger? The goal of Swagger™ is to define a standard, language-agnostic interface to REST APIs which allows both humans and computers to discover and understand the capabilities of the service without access to source code, documentation, or through network
Amazon ECSで log driverとしてawslogsを設定したいのだけどecs-agentが未対応なのでfluentdでお茶を濁すAWSFluentdECSCloudWatch-Logs タイトル長いですね。。 動機 2016/5/5 ECS Agent1.9.0からawslogs logging driverがサポートされました。 この記事はもはや駄文です。下記公式ドキュメントを参照して安心してawslogsドライバーを使ってください。 See: http://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/using_awslogs.html Docker1.9からlogging-driverとしてawslogs(CloudWatch Logs)に対応した。 ところがどっこいAmazon ECSはまだ対応し
これはnewgyu/docker-sample:1.0.0という名前のイメージを元にしてコンテナを作って実行するという意味になります。 DockerHub さて、newgyu/docker-sample:1.0.0という名前のイメージは一体どこにあるのでしょう? その答えはDockerHubというDockerが運営するサービス上にあります。 https://hub.docker.com/r/newgyu/docker-sample/tags/ これは私が事前にdocker buildでイメージを作成し、docker pushでDockerHubにイメージをアップロードしたものです。 build,pushの話はまた別の機会にしたいと思いますので今回はコマンドリファレンスだけ示しておきます。 * https://docs.docker.com/reference/commandline/bui
はじめに この文書は半ば内輪の勉強会向けのものを公開資料としたものです。いまさらですが、 Dockerって何ができるの? なんで使うの? みたいな問いに答えてみよう、と書いてみました。 コンテナについて私個人の考え方は依存するものをすべてスタティックリンクした実行形式のファイルに近いものだと考えています。そう考えるに至ったプロセスを順に書いていきたいと思います。 昔話 その昔のアプリケーションはさほど複雑なものでは無かったので一つの実行形式ファイルに収まるものでした。 図1 依存するライブラリもそんな多いわけでなく、コンパクトだったので「全部ひとまとめにしてしまえ」という考え方です。 (Go言語はそんな考え方ですね。) スタティックリンクされたファイルはでかい スタティックリンクをしてひとまとめにするというのはシンプルな反面ファイルサイズが大きくなります。キャンプに行く時に全員がバーベキュ
概念図 とりあえずECSに出てくるエンティティがそれぞれどんな多重度で関連しているのかをまとめてみました。ここからはそれぞれのエンティがどんな概念なのかを解きほぐしていきたいと思います。 図1 概念図 Serviceが中心 ECSは平たく言うと クラスター(=複数EC2インスタンスの集合)の上で Dockerコンテナを使って、 Serviceを動作させる ものです。 図2 例えばの構成 上図は、 Front Service (裏にいるAPIをCallしてWEB UIを提供するもの) API Service (ビジネスロジック、DBへの読み書きをRESTful APIで提供するもの) と言う2つのService で構成されるWEBアプリケーションの例です。 ECSで言うServiceは、Serviceは利用者から見た「サービス」よりも一段階か二段階細かいもので、APIサーバーとか、フロントサ
リモートマシンにデプロイするのにCapistranoが鉄板ですが、インフラの構築にAnsibleを使っていると全部Ansibleでやれないものかと。 探してみると、やはりありましたAnsistrano! おさらい capistranoとは 元々はRailsのデプロイツール 今はRails非依存 Ruby,PHPなどのスクリプト言語のデプロイが得意 だいたいこんな流れ 対象のサーバーにSSH接続し ファイルを配置して gitから取得するパターンが多い 何らかのコマンドを流す 参考:http://qiita.com/mr-myself/items/2769676e6dcf43db41ef まずはインストール Ansible Galaxyで公開されているのでansible-galaxy - hosts: api name: "○○のAPIサーバー" vars: ansistrano_deploy
配列の要素がStringや、NumberであればindexOfを使った実装が紹介されているのですが、オブジェクト配列に対しては素直にindexOfが使えず、なかなかサンプルが無かったので晒します。 そもそもJavaSciriptのオブジェクト同士の同値判定が無いので、そこを作りこまねばならぬという感じです。 /** * 配列に対してSQLのdistinct句的なことをするやつ * @param fields distinctする対象のフィールドの名前を配列で * @return filterメソッドに渡すためのfunctionを返す */ function distinct(fieldNames) { var self = this; return function(item, i, arr) { return i == indexOf(arr, item, equalsAllFields
これの話です。 何がやれるのか こんな感じにタグ付けした時に、インベントリファイルに対象ホストのIPとかを直接書かずにタグ名でホストを扱うことができます。 インベントリファイルにこんな風に書いたのと同じ動作になります。
gradle便利ですね。でもgradle界隈の人が言うほど簡単じゃない・・・。 gradleは柔軟な代わりにいろいろ設定の書き方があって混乱するので整理してみました。 基本的な構成 build.gradleも設定ファイルといえば設定ファイルなのですが、ここではbuild.gradleの外のものを設定ファイルとして書き連ねることにします。 init.gradle 初期化スクリプトで、Gradleオブジェクトに対するなにがしかを行うものだそうです。 今のところそんなに興味がないのでリンクを貼るだけで終わります。 http://gradle.monochromeroad.com/docs/userguide/init_scripts.html settings.gradle 設定スクリプトでSettingsオブジェクトに対するなにがしかを行うものだそうです。 ほとんどマルチプロジェクト用の設定フ
前回も触れましたが表題のSSH接続についてもうちょっと深く掘ってみました。 基本形(gcloudコマンドによるssh) まずは gcloud auth login まずは gcloud auth login でログインしましょう。ブラウザで認証するアレですね。 これによってgcloudコマンドがgoogleアカウントに紐付けられます。 auth loginはしょっちゅうする必要は無くて、作業端末を再起動しても情報は残るようです。多分どこかのファイルに書かれるんでしょうね。 もうログイン済んでるはずって人は次のコマンドを試してみましょう。どんな状態になっているかを確認することができます。 $ gcloud config list [core] account = newgyu disable_usage_reporting = False project = upheld-caldron-X
Spring-Boot便利ですね。Springここまで進化しとったんかという感じです。 システムを作るとどうしても「設定」と「プログラム」を分離する必要が出てきます。 Javaには標準的にpropertiesファイルというやつがあるのですが、「どこからそのファイルを探すの?」というのは自前で作りこまなくてはなりません。 今日はSpring-Bootのそのへんの便利さについてです。(はっきり言って自分メモ) 読み込み優先順位の話 ここに、こんな記述があります。この中から自分が興味あるのだけピックアップします。 Command line arguments. JNDI attributes from java:comp/env. Java System properties (System.getProperties()). OS environment variables. A Random
という感じでステージ名を指定してそれに応じて設定を変えるということができますが、それと同じことをAnsibleでやりたい、という話です。 インベントリファイルとgroup vars Ansibleはステージごとのホスト一覧を -i オプションでインベントリという概念で指定することができます。
初めてChrome Extention作ってみました。 https://github.com/NewGyu/redmine_tickets_printable そもそも論的なところはこんないいまとめ http://developer.chrome.com/extensions/overview.html http://dev.screw-axis.com/doc/chrome_extensions/guide/ があるので割愛して、自分が詰まったところをメモ代わりに書いておきます。 ざっくり要件 今回作ったのはRedmineのチケット一覧を付箋みたいにブロックを並べた見た目にするものです。 Redmineのチケット一覧はリスト形式で、それをA4印刷して貼りだすと小さくて読めないので大きく、付箋っぽくしようというものです。 before after そして、今回はブラウザアクションではなくペ
AWS一辺倒なのもあれなのでGoogle Compute Engine(GCE)を触ってみました。ComputeエンジンというかGoogle Cloud全般ですね。 プロジェクト GoogleCloudはプロジェクトという単位でものを考えます。Google App Engineや、Google APIをお使いの方にはおなじみかもしれません。 GoogleアカウントのOwnerがプロジェクトを作り、そこにメンバーを招待して、VMインスタンスを作って開発、運用を進めていくという形になります。課金に関してもプロジェクト単位に分けられるようになっています。 数にGCEにまつわる管理アイテムの関連図を示します。(LB、スナップショットなど描いていないアイテムもあります) VMインスタンスを作る 左サイドのメニューからVMインスタンスを選択して新しいインスタンスを作成します。 イチからインスタンスを作
私がjMockitに出会ったのは去年の夏でした…ってのはどうでも良くてjMockitを紹介したく。 素晴く色々できるのですがイマイチ情報が少ないので言いたいことだけ書いちゃいます。 ちなみにこの辺を参考に。 http://jmockit.googlecode.com/svn/trunk/www/tutorial/BehaviorBasedTesting.html http://d.hatena.ne.jp/j5ik2o/20110205/1296922274 コンストラクタのモッキングができる
usermod -G でやってハマった人です。ハイ。 Dockerのイメージ取得 centosのイメージでやりたかったので、「centos」という名前のイメージをpullしました。 $ docker search centos NAME DESCRIPTION STARS OFFICIAL AUTOMATED centos The official build of CentOS. 162 tianon/centos CentOS 5 and 6, created using rinse instea... 22 blalor/centos Bare-bones base CentOS 6.5 image 4 [OK] $ docker pull centos $ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE cent
# AWSの接続用の情報 set :aws_access_key_id, "HOGEHOGE" set :aws_secret_access_key, "fugafugafugafuga" set :aws_region, "ap-northeast-1" desc '指定したバージョンをVersionタグに設定する' task :finished do ec2 = AWS::EC2.new( access_key_id: fetch(:aws_access_key_id), secret_access_key: fetch(:aws_secret_access_key), region: fetch(:aws_region) ) puts "set version tag #{fetch(:branch)}" on roles(:console) do instance_id = cap
次のページ
このページを最初にブックマークしてみませんか?
『qiita.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く