basyura's blog

あしたになったらほんきだす。

三国志14 with PK

With PK 版が Switch でディスカウントされていたので購入。通常モードでクリアしたあとはあまり面白みが感じられず放置 (後半はいつもの物量攻めだし)。

Youtube でたまに見ていたのだけど、うどん高機動型さんのチャンネルを見ていたら再びやりたくなって上級編で再チャレンジ。

内政が簡易化されているのもあり、やることがなくターンを終わらせることがよくある。これがやる気をそいでいたけど、それはそれで戦闘にフォーカスしているからという記事をどこかで見て納得 (自分に納得させた)。

城だけでなく府を取っていくこともあり、マップがかなり広く感じる。時間が結構かかるけど後半はやっぱりゴリ押しで攻めていけるので単調になりがち。さっさと移動してくれよと思い始めたりする。

加えて目が疲れる。真っ赤になる。ディスプレイが 13.3インチでちょっと小さめなせいかもしれない。ナイトシフトモード強めでマシになる。

Switch でやってるけど PC 版でマウスを使ってやりたい(買い直しになるけど)。操作性が全然違うだろうし、コントローラーよりマウスの方がボタンクリックや範囲選択などの細かい操作ができて良さそう。

長い休みがあると

  • 考え事が増える (世界情勢が気になり始める)
  • 睡眠時間が増える (入眠時間は遅くなっていく)
  • ゲームの時間が増える
  • 動画を見る時間が増える
  • ネットしてる時間が増える
  • amazon を見る時間が増える
  • 目が疲れる (特にゲームしてる環境は光の差し込み方とか椅子とテーブルを含めて姿勢の問題もありそう)
  • vimrc、inkdrop、blog の 設定をいじる時間が増える
  • 散歩が増える(とは言い切れない)
  • ブログのエントリが増える

目が疲れるので iPad にフィルムを貼った。一日中 Night Shift モードでいいかと思っていたけど反射やじぶんの映り込み(主にこっちかな)が気になりすぎたので重い腰を上げる(8ヶ月前に買って放置してた)。結果、良かった。

リタイア後の自分が見えた気がしないでもない。

GraphQL しらべ

某雑誌の冒頭に「GraphQLすごいんです」しか書いて無くて何がすごいのかどういうものなのかがさっぱり伝わらなくて逆に気になったので調べ(ググっ)てみた。

まとめ

いいとこ

  • 柔軟性が高い (API に対する多様な要求に答えやすい)
  • 一般的な REST API のように不要なものも含めて固定された項目を返すのではなく、1 クエリ(リクエスト)で必要なものを必要なものに絞って一括取得できる

分からん

  • メリットを感じられるケースがどの程度あるのか
  • 保守、性能面で RDB で SQL を叩くよりどの程度メリットがあるのか

memo

注意点

  • Client にクエリの決定権がある。Client にとって必要十分なクエリを起こすだけで済む。

GraphQLの利点

  • クエリとレスポンスの構造に対応関係がある
  • スキーマとその一部である型システムによりエディタにおける補完や型チェックなどのツールによる開発サポートが受けられる (IDE: GraphiQL - グラフィクル)
  • クエリの学習コストが低いことです。
  • 既存のクエリを壊さずにアプリケーション API を進化させることができます。
  • 柔軟性が高い (必要なものを絞って取得できる)

GraphQLの欠点

  • パフォーマンス分析が難しい → エンドポイントが一つしかないのでまとめられてしまう
  • 処理系の実装が難しい
  • 画像や動画などの大容量バイナリの扱いが難しい → Base64 でも 1.3倍になる / メモリに乗らないものは処理できない
  • 保守可能な GraphQL スキーマを作成する作業が付加される

links

GitHub

ウクライナ情勢 2022.02

f:id:basyura:20220224160741p:plain

links

words

北大西洋条約機構(NATO) - Wikipedia

  • North Atlantic Treaty Organization
  • 独立した加盟国が外部からの攻撃に対応して相互防衛に合意することで、集団防衛のシステムを構成している。加盟国は、域内いずれかの国が攻撃された場合、集団的自衛権を行使し共同で対処することができる
  • 第二次世界大戦が終わり、東欧を影響圏に置いた共産主義のソビエト連邦との対立が激しさを増す中で、イギリスやアメリカが主体となり、1949年4月4日締結の北大西洋条約により誕生した。「アメリカを引き込み、ロシアを締め出し、ドイツを抑え込む」。
  • ウクライナ、ベラルーシは NATOとの鑑賞地帯として重要

ブダペスト覚書 - Wikipedia

  • ハンガリーのブダペストで開催された欧州安全保障協力機構(OSCE)会議で署名された政治協定書
  • ベラルーシ、カザフスタン、ウクライナが核不拡散条約に加盟したことに関連して、協定署名国がこの3国に安全保障を提供するという内容

流れ

  • 「大国復活」の野望(?)
  • 東欧諸国を NATO に加盟させない約束をしていた(?)
  • ウクライナはロシア派と欧米派で大統領が入れ替わり続けている
  • プーチン大統領は「『オレンジ革命』によって、ウクライナはもうかつての政権ではない」「革命政権であって、全く別の政権ができあがっているので、覚書にある領土の保全や武力の不行使というのは、すでに適用されない」という考え方を明らかにしています。 (link)

トライアングルストラテジー

ファイナルファンタジータクティクスが面白かったし(遠い記憶)、HD-2D も良さそうなので体験版を試してみた。

導入ストーリー長い

  • これは仕方ないのかもしれないけど途中で飽きてきた。登場人物が多いのが記憶力がヨワヨワな身としては更につらい。都度、話している人の説明が見れたのは良かった。

戦闘時の移動でぬるっと後ろに来る

  • 前面 3 マスはスルーして移動できないような縛りがないと、固まって前進してるのにヌルッと移動してきて横や後ろからしばかれるので違和感がありすぎて萎える。
  • ガード役といいつつスルーされて後ろ叩かれる。かといっても敵側に突っ込んでいくのも違うしなぁで困惑

2 章までやったけど一旦終了。

Next.js 入門 2

サーバー側にリクエストを投げた結果を受けて表示したい。

import Link from "next/link";

export default function IndexPage({ param }) {
  return (
    <div>
      Hello {param.Hello}.{" "}
      <Link href="/about">
        <a>About</a>
      </Link>
    </div>
  );
}

export async function getServerSideProps() {
  const res = await fetch(`http://localhost:1325/api/echo`);
  const data = await res.json();
  return { props: { param: data } };
}

エクスポートしたい。

$ npx next export

Error occurred prerendering page "/". Read more: https://nextjs.org/docs/messages/prerender-error
Error: Error for page /: pages with `getServerSideProps` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export

The getServerSideProps lifecycle is not compatible with next export, so you'll need to use next start or a serverless deployment.

ダメなんか・・・。node.js でサーバー動かせばいいんだけど諸事情にやりづらい環境なので辛い。

windows service で動かす方法があったのでメモ。

Next.js 入門 1

ファイル構成が好みだったのでチュートリアルを進めていたのだけど、Vercel 以外にデプロイする方法がよく分からなくて手が止まってしまったので調査。なるべく golang を使って動かしたいのでその路線で調べてみる。

ポイント

  • next export を使うと html に出力される
  • リクエストパスのファイルがない場合は .html でファイルを探し直して返す。

embed を使うパターンがいくつかヒットしたけど、単純にファイルを読んで返すパターンでやりたかったので上記サイトを参考にさせて頂きつつ自作。

$ npx create-next-app helloworld
$ cd helloworld
$ npm i
$ npm run build
$ npx next export
$ mv out ../public
$ go run main_nextjs_server.go 

Image タグを使っていると

Error: Image Optimization using Next.js' default loader is not compatible with `next export`.

と出て失敗するので、build の前に削除するか通常の html タグに書き換えるかで対応する。next チュートリアルのブログサンプルは動いたけど特に url パラメータから web の API にリクエストを投げて描画するパターンが動くのかがポイントなので継続して調査する。

※ 久しぶりに iPad に logicool のハードウェアキーボードをさして記事を書いてみたけど発狂するレベルで効率悪い。iPhone でフリック入力使う方がはかどるんじゃないかと思ってしまう。英数キーで IME をオフにしたいのだけどちょうどいいところに space キーがあって毎回誤爆してしまう。ここの誤爆を抑えられるだけでだいぶ違うと思う。ctrl+space での切り替えに慣れた方がいいのか。