30歳からのプログラミング

30歳無職から独学でプログラミングを開始した人間の記録。

『AWSネットワーク入門 第2版』を読んだ

AWS でネットワークを構築しウェブサーバを公開する手順を解説した入門書。 丁寧かつ簡潔な説明で、初心者でもスムーズに進めていくことができる。 tatsu-zine.com Kubernetes を勉強していた時、ローカル環境である程度動かすことができたので、次はより実…

『Software Design 2022年1月号』の「TerraformではじめるAWS構成管理 インフラを自動で構築&コードで管理」を読んだ

Terraform 何も分からん、取り敢えず概要を知りたいなと思い、手に取った。 雑誌の特集のひとつであるためコンパクトであり(41 ページ)、手っ取り早く雰囲気を掴むのにちょうどよかった。 gihyo.jp 私のような初心者を対象としていると思われ、かなり初歩…

Restart Policy と Probe を使った Pod の管理

Kubernetes には Restart Policy や Probe という設定や仕組みがある。 これらを適切に使うことで、コンテナが意図した通りに動いているのか、再起動させる必要はないのか、といったことを Kubernetes が継続的にチェックしてくれるようになる。そしてそれだ…

Docker Desktop を使って学ぶ Kubernetes の基本的な仕組み

この記事では Docker Desktop 上で Kubernetes クラスタを作り、実際に動かしながら、Kubernetes の基本的な仕組みについて説明していく。 動作確認は以下の環境で行った。 Docker Desktop 4.22.1 Kubernetes 1.27.2 事前準備 Kubernetes の有効化 Docker De…

『Cプログラミング入門以前 [第3版]』を読んだ

プログラミングを学び始める前に押さえておくべき基礎知識を学べる一冊。 コンピュータやプログラムが動く仕組みをちゃんと理解しなければいけないと感じており、その一環で読んだ。 tatsu-zine.com 著者が執筆した『基礎からわかるTCP/IP ネットワークコン…

『なるほどUnixプロセス―Rubyで学ぶUnixの基礎』を読んだ

Unix プロセスとはどのようなもので、どのような特徴を持つのか、平易な文章と簡潔なコードを使って解説していく一冊。 tatsu-zine.com プロセスID、プロセスの親子関係、標準ストリームといった、プロセスに関する基本的な概念について説明していきながら、…

『Software Design 2023年4月号』の「x86やArmって何? 一度は学んでおきたいCPUのしくみ」を読んだ

CPU について学ぶ初歩的な教材としてよさそうと思い、手に取った。 期待した通り、平易な内容で程よくコンパクトにまとまっており、読みやすかった。 gihyo.jp CPU はレジスタや ALU から構成されること、CPU は0と1で構成される機械語しか理解できないため…

『ゾンビスクラムサバイバルガイド 健全なスクラムへの道』を読んだ

スクラムのように見えるがスクラムではない、機能していないスクラムを「ゾンビスクラム」と名付け、なぜそれが発生するか、いかにそこから回復すべきかを説いた一冊。 ゾンビスクラムという、上手くいっていない状態を題材にすることで、本来はどうあるべき…

『熊とワルツを - リスクを愉しむプロジェクト管理』を読んだ

「リスク」をどのように捉え、どのように向き合っていくべきなのか説いた一冊。 用語や概念の整理をしつつ、具体的にどのように取り組むべきかを論じていく。 2003 年頃に出版されたということもあってか、ソフトウェアの受託開発を念頭に置いた説明が多いが…

MySQL の SQL Mode について

MySQL には SQL Mode という設定があり、この内容によって、許容される構文やデータの妥当性チェックのルールが変化する。 この記事では SQL Mode の確認方法や設定方法の他、設定内容によって挙動が変化する例を見ていく。 動作確認は MySQL のバージョン8.…

『UNIXという考え方―その設計思想と哲学』を読んだ

UNIX やそのツールはどのような考えに基づいて作られているのか解説した本。 UNIX が開発されていくなかで培われていった文化や考え方について書かれている。 www.ohmsha.co.jp UNIX が具体的にどのように動いているのかではなく、 UNIX はなぜそのように動…

Web API で文字列を可逆圧縮する

この記事では、 Web API で文字列の可逆圧縮を行う方法について書いていく。 任意の文字列を圧縮し、そして圧縮された文字列のリテラル表現から元の文字列を復元できることを目指す。 以前書いたように、 Node.js なら文字列の可逆圧縮は簡単に行える。 numb…

Next.js の skipTrailingSlashRedirect で trailing slash の設定をカスタマイズする

Next.js のv13.1.0で追加されたskipTrailingSlashRedirectを使うことで、 trailing slash に関する挙動を自由に設定できる。 この記事では、skipTrailingSlashRedirectによって具体的にどのようなことが可能になったのかを見ていく。 動作確認はv13.1.1で行…

JavaScript で Base64

この記事では Base64 やbtoa、そしてbtoaの挙動を理解するために必要な Latin1 について説明していく。 この記事に出てくるコードの動作確認は以下の環境で行った。 Deno 1.28.3 TypeScript 4.8.3 概要 Base64 はデータのエンコード方式の一種。 全てのデー…

『優れた技術者の集まる会社にする方法 ソフトウェア開発者採用ガイド』を読んだ

前回読んだ『Joel on Software』の Joel Spolsky が、ソフトウェア開発者の採用について論じた一冊。 自身が優秀な開発者であり経営者でもある Joel が、多くのソフトウェア開発者が採用に対して何となく感じていることを平易な文章で明快に説明していく。 …

『Joel on Software』を読んだ

Microsoft での勤務経験を持ち Stack Overflow の創業者でもある Joel Spolsky によるエッセイ集。 Joel は自身が運営するウェブサイト Joel on Software で多数の記事を公開しており、その一部を掲載したのが本書。 ひとつひとつの章がかなり短い(長いもの…

Unicode における置換文字(replacement character)について

この記事では、 Unicode において表示不可能な文字を表現する「置換文字」について説明する。 この記事に出てくるコードの動作確認は以下の環境で行った。 Deno 1.26.0 TypeScript 4.8.3 概要 Unicode において、表示しようとした文字が何らかの理由で表示不…

JavaScript における文字コードの初歩

この記事では、 JavaScript で文字コードを扱う際に知っておくべき概念である Code Point や Code Unit、サロゲートペア、といったものについて説明していく。 また、具体的にそれらの概念を使ってどのようにコードを書いていくのかについても扱う。 この記…

継続渡しスタイルを使ってプログラムの見通しをよくする

この記事では、継続渡しスタイル(continuation passing style、以下 CPS)の概要と、CPS の活用例を書いていく。 この記事に出てくるコードの動作確認は TypeScript の4.7.4で行っている。 後続の処理を引数として渡す 関数が終わった後に実行される後続の…

Node.js Stream の初歩

Node.js には Stream というインターフェイスが用意されており、これを使うことでデータをストリーミングできる。 Stream を使うことで、データの全てをメモリに保持するのではなく、少しずつ順番にデータを処理していくことが可能になる。 この記事では、St…

『図解即戦力 Amazon Web Servicesのしくみと技術がこれ1冊でしっかりわかる教科書』を読んだ

Amazon Web Services(以下 AWS)の入門書。 AWS やその前提となる知識について、非常に平易に解説している。理解を促すための図も豊富で、分かりやすい。 AWS を学ぶ最初の一冊としてオススメ。 gihyo.jp AWS が提供しているサービスは多岐に渡り、独自の用…

Docker の volume と network の初歩

Docker の volume は、コンテナが使うデータを永続化するための仕組みで、これを使うことでコンテナのライフサイクルとは別にデータを管理することができる。 また、network という機能を使うことで、コンテナ間で通信ができるようになる。 この記事では、vo…

Dockerfile に入門して Node.js アプリを作ってみる

Docker への入門の一環として、自分で Dockerfile を作成し、それを使って Node.js アプリを Docker Container で動かしてみる。 Hello World Dockerfile を使うことで、既存の Docker Image を編集して新しい Docker Image を作ることができる。 具体的には…

Prisma に入門して API サーバを作ってみる

Prisma は、Node.js の ORM。 この記事では、導入方法、基本的な使い方について説明したのち、Prisma を使って簡単な API サーバを作ってみる。 Node.js のバージョンは16.13.2、MySQLのバージョンは8.0.28という環境で、動作確認している。 使用している np…

Next.js で始める GraphQL

この記事では、GraphQL を利用したアプリを Next.js で構築していきながら、GraphQL の初歩について書いていく。 GraphQL のクライアントもサーバも、Apollo を用いる。 また、できるだけ型安全に開発したいので、graphql-codegenで型定義ファイルを生成する…

Next.js で始める gRPC 通信

サーバ・クライアント間の通信を gRPC で行う場合、インターフェイスを定義した共通のファイルから、サーバとクライアント双方のコードを生成することができる。 この記事では、インターフェイスの定義ファイルを作成するところから始めて、gRPC を利用した…

引きこもり・日記・エンジニア人生

2 年ぶりに労働し始めたことでブログの更新頻度が露骨に落ちているが、文章を全く書いていないわけではなく、折に触れて社内で長文を投下している。 社内向けの怪文書ばかり書いていて、パブリックなブログを全然書けない。— なむ (@numb_86) 2021年12月29日…

React の新しい概念「トランジション」で React アプリの応答性を改善する

React v18 には多くの改善や新機能が盛り込まれる予定だが、そのなかでも特に注目を集めると思われるのが、Concurrent Features と呼ばれる一連の機能。 これらの機能を使うことで、コンポーネントのレンダリングについてより柔軟な設定が可能になり、上手く…

『THE MODEL』を読んだ

「科学的な営業」に興味があり、その分野の定番のひとつである『THE MODEL』を読んだ。 どのように営業プロセスを構築し機能させるのかについてコンパクトにまとまっているので、特に BtoB SaaS を提供している企業で働いている開発者は、一度読んでおくとよ…

技術選定の観点や技術の優劣について

技術選定を行う前にまず、どのような開発組織にしたいのか、どのように事業を進めていきたいのか、そこを整理しないと上手くいかない。 そんなことを最近考えていたので、ブログに書いておく。自分は書くことで思考を整理していくので。 この記事では、「技…