投稿

2月, 2024の投稿を表示しています

TypeScriptでGraphQLのお勉強②

  前回のGraphQLのお勉強 をしてみてそのままだとデータ追加とかの時にtsを書き替えるということになるのでそれが嫌だったのでjsonファイルにデータ部分を外出ししてデータを可変にできないかと思って、色々とゴニョゴニョしてみました。 TypeScriptが初心者以下の雑魚レベルのヨワヨワなのでかなり時間がかかりましたが、何とか実現できました。肝になるのはdata.tsを以下の様に書き替えるところとインタフェースを外出ししたこと位かな・・・。 後はBook以外で遊びたいと思ったので未検証ながら少し可変を意識した記述にしたところくらいです。 ・data.ts import { Data } from "../configs/types.js"; import jsonData from "./datas.json" assert { type: "json" }; export const datas: Data[] = jsonData; ・types.ts export interface Data { title: string; author: string; } ・ディレクトリ構成 src |-- configs | |-- query.graphql | |-- resolver.ts | |-- schema.graphql | `-- types.ts |-- data | |-- datas.json | `-- datas.ts `-- index.ts データを可変したい目的だったけれども TypeScript なので、jsonのテキストファイルにデータ追加してもトランスパイルしないと変更が反映されないという間抜けな結果になったのであまり意味がなかったかもしれない。データを可変的に使う場合はDB必須ですね。 次回(あるのか?)は Mutation とか Subscription とか色々と触っていきつつ、AWSの APPSync の方に入っていければと思ってます。ともかくDB必須というのが分かったのでTypeScriptでDBの取り回しとかも勉強しつつやっていこうかなと ちなみに作ったのはGitHubに上げました https://git

ObserviumのインストールをShellスクリプトで半自動化する

昔の職場で MRTG とかいうのを サーバ監視 に使ってて、サーバの可視化とかグラフ化とかありました。正直、 サーバ運用は人が不幸になる だけであまり好きではないのでこういう 監視系のツール にはあまりそそられないのですが、否応なく勉強せざるをえなくなったので仕方なしにツール入れてみることにしました。 選んだの Observium ですね。(他にもあるのに 正直なところ Grafana とか Prometheus とか mackerel とか Datadog とかキラキラで行けてる上の世界の方が使っているようなところをお勉強したかったのですが、行けてないのでなんか EC2 の上に Zabbix とかObserviumを乗っけるところからのお勉強です。 ※筆者が行けていないだけなのでツールは悪くないです。 そして次に同じ作業できる自信がないので、相変わらずの芸のないShellスクリプトで一括インストールです。公式にも インストールスクリプト あるのでそっち使えばいいんですが RDS とか CloudSQL 使うケースとかhttps化したかったのであえての自前で準備です。ラクできるときはラクする方がはるかにいいです。 ちなみにObserviumではPHP8.2以降で非推奨のMySQLライブラリ使ってるのでPHP8.1まででしか動かぬようです。早めの8.2以降対応に期待しましょう。 ◆Shellスクリプト本体 #!/bin/bash HOST_NAME=observium-srv DATABASE=observium DB_INITIAL_PASSWORD=dbpassword DB_ROOT_PASSWORD=dbpassword DB_USER=observium DB_PASSWORD=observium DB_HOST=localhost PHP_VERSION=8.1 WEB_USER=www-data HTPASSWORD_PATH=/etc/nginx/basic SERVER_NAME=yourdomain.com SITE_URL=https://yourdomain.com/ DOCUMENT_ROOT=/opt/observium/html ADMIN_MAIL=mail@yourmail.com OBS_ADMIN=admin OBS_PASSW

3大クラウドでVMとストレージを組み合わせた構成を一撃で構築する

  EC2+S3でSambaサーバ組み合わせて ファイルサーバ的なものを前回やってみましたが、 GCP とか Azure でも同じことやってみました。 GCPの場合は GCE + GCS に gcsfuse を組み合わせて構成、Azureの場合は AzureVM に Blob の機能でNFSv3を指定してやるやり方です。 Azureは 以前にredmineでAzureFiles使ってマウントしたこと がありましたが今回はBlobのコンテナ使って NFSマウント してみました。 AWSの場合はgoofysがパフォーマンスいいみたいです。GCPとAzureも書込みとか変更は我慢できないほどではないけどファイル削除に若干、時間がかかる。 頻繁な削除が発生しないなら、まぁどれでもいいんじゃなかろうかという感じです。コストはあまり見ていないですけどVMのコスト+ストレージのコスト+読み書き発生するみたいですね。 ◆Shellスクリプト実行環境の前提 ・AWS:IAMロールでS3フルアクセス可能なものが存在しEC2に付与されている。AWS-CLI用のクレデンシャルが発行済 ・GCP:GCEのアクセススコープで[ストレージ]がフル設定となっている ・Azure:V-NETとストレージアカウントが設定されていること ・Ubuntu22.04LTSにて確認(ロケールと言語は日本語に変換済) ◆Shell本体 #!/bin/bash ACCESS_KEY_ID=AKXXXXX ACCOUNT_ACCESS_KEY_ID=XXXXX ACCOUNT_REGION_ID=ap-northeast-1 ACCOUNT_OUTPUT=json S3_BUCKET_MP_PUBLIC=s3test-mountpoint-samba S3_BUCKET_S3FS=s3test-s3fs-samba S3_BUCKET_GFYS=s3test-goofys-samba GCS_BUCKET=gcstest-samba AZURE_STORAGE_ACOUNT=azuresambatest AZURE_CONTAINER=azure-samba-test MOUNT_DIR_MPS3=/mnt/test-mountpoint-s3 MOUNT_DIR_S3FS=/mnt/test-s3fs MOUNT