2020-01-01から1年間の記事一覧
Ruby と Rails は明らかに自分の軸となる技術だ。そもそもこれらとの出会いがなければ僕はエンジニアになっていなかった。人生を変えてくれた技術であるとも言える。ただ、知れば知るほどに別の技術に目移りし始めてしまっていたのも事実。 あれやこれやの言…
「ゼロからアーキテクチャを考えるのであればどのような構成を検討しますか?」 これはある企業の面談を受けたときに聞かれたこと。僕は、最低限サーバーサイドのAPIとフロントエンドのSPAを分割する、というようなことを話した。 いま振り返ってこう考えて…
「最大公約数」と問われると「ユークリッドの互除法!」とただちに着想が湧くようにはなってきた。 その一方で「最小公倍数」と問われたら、「おや...」と思いながら調べ直さざるをえない自分がいた。 この記事できちんと整理して、記憶に定着させたい。 定…
先週末の AtCoder ABC169 B の問題で、long long 型の整数をオーバーフローさせてしまった。しかもそれに気づけずにだいぶつまずいてしまった。 atcoder.jp Ruby や Python であれば意識せず扱える部分であっただけに悔しさがある一方で、こうも思った。 Rub…
jnsato.com で自己紹介ページを公開している。 jnsato.com シンプルなページではあるが、裏ではいろいろと工夫をしている。たとえばページのホスティングについて、AWSのサービスを組み合わせて稼働させているのだが、最高水準の可用性とパフォーマンスを保…
jnsato.com でホストしている自己紹介ページについて、連続して書いてきた。昨日はホスティングのインフラ構成について書いた。 jnsato.hateblo.jp こちらの記事にて、このウェブページはサーバーレスな構成を取っていて、保守にリソースを割く必要はほとん…
前回記事に引き続き、 jnsato.com でホストしている自己紹介ページについて。前回はデザイン面について書いた。 jnsato.hateblo.jp 今回はホスティングについて書く。 構成 はじめに構成図を示しておく。それはこんな形。 各サービスの詳細については公式ド…
jnsato.com で自己紹介ページをホストしている。 jnsato.com いろいろ工夫はしているのだけれど、自分がどういう意図で何をどう工夫したのか、いずれ自分でも忘れてしまいかねないから、ここに書き残しておく。 いくつかの記事に分割して書くことにする。ひ…
なにか作ってみようとなったときにサーバーレスで簡単にホストできるのは嬉しい。 パブリックなプロダクトではないし、ソースコードもプライベートレポジトリにおいてあるので、具体的にどう、という話が書けないのは残念だが、せめてやったことのアーカイブ…
AWS Amplify というフレームワークについて、 Developers.IO の記事を筆頭に、名前を見かけることがここ数ヶ月でグンと増えた感覚がある。 CLI で簡単にサーバーレス構成を立ち上げられてとても楽らしい、など漠然とした印象を持つだけだったが、小さなプロ…
GraphQLのチュートリアル、 How to GraphQL をやった。どんな技術であるのかについて、概論やイメージは浸透しているだろうから、この記事はあらためてそれを紹介するというよりも、初めて実装に触れた学習者の立場から手応えを交えて書く。すなわち、GraphQ…
以前の記事で bit 全探索を利用して冪集合を作った。 jnsato.hateblo.jp これは任意の有限集合の各要素について、部分集合に含めるか含めないかを表すフラグの組み合わせを総当たりする方法であった。各要素が 0 or 1 の二元のいずれかに振り分けられるため…
Goの学習を進めるにあたって、A Tour of Goを終え、簡単なAPIの実装を経て、『改訂2版 みんなのGo言語』を読んだ。書評を記事として残すこともした。 jnsato.hateblo.jp 読了後は、同書執筆陣の技術ブログの過去記事を乱読していた。それだけ信頼できる書き…
任意の集合について、すべての部分集合を列挙したい。これはつまり、ある集合から冪集合を作りたい、と言い換えられる。 たとえば 3 つの要素からなる集合 X = {1, 2, 3} に対してP(X) = {{}, {1}, {2}, {3}, {1,2}, {1,3}, {2,3}, {1,2,3} }であるような写…
自己署名した証明書について、オレオレ証明書と揶揄する呼び方が浸透して、自己署名のリスクという側面はおおいに宣伝されている。一方で、ではどのような手順を踏めば証明書に署名し、発行できるのか、という実態について、知る機会を持つことはなかった。 …
長さ n の順列 [1, 2, ..., n] を並べ替えて n! 個の順列を作りたい。 2<=n<=8 程度として、二通りのやり方を試してみた。 深さ優先探索 与えられた順列を末尾の要素から再帰的に swap して前通りの組み合わせを試す。ループごとに添字が 1 ずつ増えていくの…
y = f(x) = x^5 となるような写像 f を作ろうとして次のようなコードを書いてハマった。 unsigned long long N[1000]; for (int i = 0; i < 1000; i++) { N[i] = i*i*i*i*i; } Nは unsigned long long と定義しているが、 i^5 の i を int としてしまってい…
API Gateway を使った小さなアプリケーションを立ち上げる機会があり、前々から使ってみたい欲求があったGo言語のランタイムを選択して実装した。SAM CLI が充実しているおかげでつつがなく実装を終えることはできたが、Go言語そのものに対する興味はさらに…
学習者として、同じ学習者に向けた注意喚起として書く。 golang/dep は使わないこと golang package dependencies と検索すると、 golang/dep というツールのレポジトリがヒットすると思う。筆者の環境で、執筆日の時点ではトップに表示された。 github.com …
AWSを触るようになって3年強となり、仕組みにもだいぶ慣れてきたし、より多くのサービスを使うようになった。IAM などはポリシーもロールもどんどん増えてきていている。 とはいえリソース群をコード化して管理するにも限界がある。新しく定義するにもコンソ…
material-ui と material-icons で書いたコンポーネントを react-testing-library でテストしようとした。およそこんな形のコンポーネントだ。 import IconButton from '@material-ui/core/IconButton'; import AddIcon from '@material-ui/icons/Add'; cons…
個人ページをゆるく拡張 https://jnsato.com だいぶ前、初めて自分のドメインを取得したときに、生の HTML と CSS だけ書いて S3 バケットにおいただけの個人ページを作って、そのままずっと放置していた。そもそも HTML 直書きなんかしていたせいで更新する…
aws-vault で amplify init できない Amplify のチュートリアルをやっていてamplify initでさっそくつまづいた。 $ aws init ? Enter a name for the project myapp ? Enter a name for the environment dev ... init failed Error: ENOENT: no such file or…
AWSアカウントの保護、とりわけルートアカウントの保護について、改めて考えた。1passwordを二段階認証に利用してきたが、考えるほどにこれは「多要素認証」の原則に反するやり方であり、本末転倒であるという思いが強まった。 多要素認証の定義 うんざりす…
エンジニアとして就職してから2年になります。その間、進んで技術記事を書いたりはしないできました。たまにQiitaに書くことはあっても、それは「この情報は絶対に誰かの助けになる」という強い動機づけがあってやっと書き始める、というくらいには腰の重い…
※2020/03/05投稿のQiita記事をエクスポートしたものです。 S3 + CloudFront + Route 53の構成で静的ウェブサイトの配信を行っている。 レポジトリには静的ファイルだけを置いて、AWSリソースはだいぶ昔に手作業で構築したものが動き続けている。以下の記事な…
※2018/11/19投稿のQiita記事をエクスポートしたものです。 執筆背景 Digdag と Embulk による既存のバッチ処理をアップデートする機会があったのですが、あれこれつまずいて苦しい思いをしてしまいました。 あれこれ試行錯誤するに当たって、様々な方が蓄え…
※2017/01/20投稿のQiita記事をエクスポートしたものです。 MySQL5.7の完全アンインストール WHY MySQL5.6系を利用したいのに誤って5.7系をインストールしてしまった。 pidエラーとsocketエラーの堂々巡りに陥ったので、いっそのことアンインストールしてバー…