53ningen.com

@gomi_ningen's Website

WordPress から Next.js への移行

  • たしか 2012 年ごろから 53ningen.com の裏側として WordPress が動いていました
    • 当初はさくら VPS 上に MySQL, Nginx, WordPress などのほかいろんなものを相乗りにさせていた(学生時代なのでやんちゃは許される)
    • その後 AWS 上の EC2 に MySQL, WordPress を相乗りにする形を経て、ALB + EC2 + RDS (+ S3 + CloudFront) の構成に落ち着きました
    • コンテナ移行しようと思ってましたが WordPress で頑張ることにモチベーションをあまり見いだせなくなっていました
  • そんなこんなの経緯があり、このたび WordPress を停止し Next.js の静的サイト生成(SSG)を用いる形に変更しました
  • この記事では移行の流れについて簡単にメモしておきます(半分自分向け)

😢 そもそもなぜ WordPress を使いつづけていたのか

  • 手元で長期間にわたり運用しつづける LAMP スタック的なアプリケーション(実際には nginx, Maria...
Read More

メモ: React JS Crash Course 2021 が良い件について

React 入門教材として React JS Crash Course 2021 - YouTube がかなりよさそうなのでメモしておく

だいたいざっくりと以下のような内容が 2 時間くらいの尺にまとまっている

  • React の概要
  • React を利用した Todo アプリの制作
    • State, Effect の Hooks の利用
    • 外部 API の利用

これ見れば React の入門書はいらなそうなぐらい情報がきちんと圧縮されていてわかりやすいものだった ...

Read More

TypeScript + CDK で理解する AppSync: はじめの一歩

この記事は TypeScript の CDK で単純な Hello, World! を返却する AppSync の GraphQL API を作成することを通して AppSync や GraphQL API に関する基本的な内容を段階を踏んで理解できるように構成されたものです。

あわせて作成した GraphQL を curl、Node.js アプリケーション、React アプリケーションから呼び出す方法についても確認していきます。

これらのステップを踏むことにより、さらに複雑で実践的な GraphQL や AppSync に関する内容を掴むための足掛かりとなるかと思います。

なお、本記事中の各種コードは GitHub にて公開しています。

$ git clone git@github.com:53ningen/CDK-AppSync.git

1. Hello, World!

まずは GraphQL クエリを投げると、Hello, World! が帰ってくる画期的なシス...

Read More

Ajv の JTDSchemaType で複雑な JSON オブジェクトをバリデーションする

Ajv の JTDSchemaType で複雑な JSON オブジェクトをバリデーションする際の記述方法がわからなくて 30 分くらい溶けたのでメモっておきます。

配列

export interface AppParameters {
    items: string[]
}

const AppParametersSchema: JTDSchemaType<AppParameters> = {
    properties: {
        items: { elements: { type: 'string' } },
    },
    optionalProperties: {
    },
    additionalProperties: false
}

マップ

export interface AppParameters {
    map: { id: string }
}

const AppParametersSchema: JTDSchemaType<AppParameters> = {
    properti...
Read More

Lambda 関数上で io-ts を利用すると例外発生時にタイムアウトする

※ 自分用メモです

  • 概要: Node.js 14 ランタイムの Lambda 関数でデプロイパッケージに io-ts が含まれていると、例外発生時に即時関数実行が停止せず、タイムアウトまで待ち時間が発生する

通常、以下のようなコードで簡単に例外を発生させ、関数実行を停止させられる

import 'source-map-support/register'

export async function handler(event: object, _: object): Promise<object> {
 throw Error()
}

ところが、以下のように io-ts を import しただけで例外発生時にタイムアウトまで待ち時間が発生してしまう

import * as t from 'io-ts'
import 'source-map-support/register'

export async function handler(event: object, _: object): Promise<object> {
 throw Erro...
Read More

SAM CLI + CDK を試す

  • 基本的に このドキュメント に書いてあることを試しただけの記録
  • ドキュメントは Python だが、手元では Lambda Runtime: Node.js14.X, CDK: TypeScript で試した

aws-sam-cli-beta-cdk の導入

brew install aws-sam-cli-beta-cdk

Project の作成

以下のようにプロジェクトの作成が可能

sam-beta-cdk init --project-type CDK --package-type Zip --runtime nodejs14.x --dependency-manager npm --app-template hello-world --cdk-language typescript --nam...
Read More

Rust の基本的な文法メモ

Introduction - Rust By Example 日本語版 を見ながら Rust の基本文法をおさらいする

変数

  • 変数はデフォルトでイミュータブル
  • ミュータブルにしたい場合は mut キーワードを用いる
  • 宣言と定義を別々に行うことも可能
let x = 1;
// x = 2;  => Error

let mut y = 1;
let y = 2;

let z;
z = 123;
  • 例えば標準入力からデータを受け取る io::stdin.read_line は引数に mut &String をとる
let mut input = String::new();
io::stdin().read_line(&mut input).expect("Error");
println!("Input value: {}", input);

関数とテスト

  • 関数は fn キーワードで...
Read More

Rust で単方向 LinkedList を実装する

個人的に新しい言語を触るときは Hello, World! を終えたら、だいたい単方向 LinkedList などの簡単なデータ構造を実装して、感触をつかんでいくことが多いです(みなさんはいかがですか)。

最近 WEB+DB PRESS Vol.122 にミニ RDBMS を実装する記事がでていて、GW はそれをすすめていたのですが、案の定脇道にそれて使用言語である Rust に興味が湧いてしまったので LinkedList を実装してみました。

Rust は公式のドキュメントに LinkedList の実装例が載っていたり、LinkedList を通して言語機能を学べる記事なんかもでていました。

この記事は基本的に Introduction - Learning Rust With Entirely Too Many Linked Lists を参考に概要をメモったり、ちょっと見通しが悪いなと感じた部...

Read More

Hello, OS Kernel

ゼロからの OS 自作入門 を読みながらカーネルの最初の実装を行うところまでの流れを確認する

Kernel の実装

  • 単純な hlt 命令の無限ループで、実装はここに置いてあるの
  • kernel ディレクトリを掘って main.cpp という名前で作成

コンパイルとリンクは以下のコマンドにて行う

$ clang++ -O2 -Wall -g --target=x86_64-elf -ffreestanding -mno-red-zone -fno-exceptions -fno-rtti -std=c++17 -c kernel/main.cpp
$ ld.lld -entry KernelMain -z norelro --image-base 0x1000000 --static -o kernel.e...
Read More

Copyright © 53ningen.com