0xf

日記だよ

プログラミング

2021/10/18日記

突然寒くなった。数日前には冷房をつけたり消したりしていたはずが、今日は朝から暖房を入れるかどうか検討している。 Alexaによると、「気温は摂氏11度です」とのことである。こいつどこの気温について言っているんだろう。本体に温度センサーあるんだっけ…

2021/10/15日記

暑くてエアコンをつけたり消したりしている。冷房にすると寒い。止めると暑い。 摩天楼、天を摩する楼、スカイスクレイパー。確かにこの訳語ものすごく洒脱ですね。 perlをはてなインターン2021の資料を見ながら再開した。 はてなリモートインターン2021 Per…

load_table_from_json の第一引数が json でも jsonl でもない件について

google.cloud.bigquery.client.Clientのload_table_from_json について。 googleapis.dev BQにデータ突っ込むスクリプトで、一時ファイル作りたくなくて、load_table_from_json を使おうとして少しハマっていた。 第一引数は json_rows と仮引数名設定されて…

pip install grpcio で無限に時間を食われていたが pip のバージョンをあげたら解決した

環境は Debian 10.10。 タイトルで全て説明できたので特に複雑な補足はない。 google-cloud-bigquery を利用しようとして、依存関係にある grpcio のセットアップに刺さっていた。pip のバージョンをあげたら解決したのですよという話である。arm64なMacbook…

Mac OS X Big Surのmakeが古いので更新する

古いことがネガティブに働く種類のものではないけど、なんとなく。 $ make --version GNU Make 3.81 Copyright (C) 2006 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even fo…

パイプライン演算子に飼い慣らされてしまった

process_result(call_api(build_api_params)) がもうすっかり我慢ならない。build_api_params |> call_api |> process_result と書きたいギギギ

python3で関数を返す際はCallableでヒントする

from typing import Callable def f() -> Callable[[], str]: def _() -> str: return "hello world" return _ r = f() s = r() # s は str と判定される typing --- 型ヒントのサポート — Python 3.9.4 ドキュメント

夢のboto3のpagenate

残念。そうか、describe_savings_plans_offering_rates は NextPageToken ではなく NextToken であってページネートAPIが生えてないのは概念としてページではないからか・・・という気分になっている。 botocore.exceptions.OperationNotPageableError: Oper…

関数の戻り値型の記述でジェネリクス型を利用すると unknown が出がち

特に理由もきちんと追えてないけど、ハマったやつもう一つ。最初 async function と Promise の固有の挙動かなと思ったけどそうではなかった。 // これは期待通り Rが推論される function sample<P, R, F extends (params: P) => { result: R }>(f: F, params: P) : R { return f(params).re</p,>…

高階関数の型定義で戻り値に ReturnType<T> を使う際に as を避けられないことへの納得

最初どうしてコンパイル通らないのか納得いかなかった function sample<T extends () => string>(f: T): ReturnType<T> { return f() // コンパイルエラーとなる } これがコンパイルエラーとなり、Type 'string' is not assignable to type 'ReturnType<T>' と言われてしまう。なん</t></t></t>…

久しぶりに typescript 書いてて型にハマるなどしていた

function wrapper<T extends (...args: any) => { Status: number, Result: any }>(f: T): T { return f } これを書き換えて、 function wrapper<T extends (...args: any) => { Status: number, Result: any }>(f: T, ...params: Parameters<T>): ReturnType<T> { return f(...params) // Type '{ Status: number; Result: </t></t></t></t>…

AWS の利用量タイプ、us-east-1 は USE1 だけど Lambda の usageType にはリージョン名が含まれない

ゆえあってSavings Plans のディスカウントレートを実績と突き合わせるようなことをしていて気がついたんですが、AWS の Cost Explorer でいうところの usage type って us-east-1 (北バージニア)についてはリージョン名含まないことがあるぽいですね。今ま…

ターミナルの制御文字という概念に感動したことをよく覚えている

親の顔より見たターミナルですが、コンピュータと文字をやりとりして画面にテキストを表示する機能を持った端末のエミュレーターであるということを知ったのが自分にとって非常に大きな転換だったことを覚えています。いつのことかは忘れたけどとにかく俺は…

Cloud Shell Editor でどこまで頑張れるか

Cloud Shell Editor である程度複雑な ( BFF + フロントエンド + バックエンド + 複数の外部データソース)アプリケーションのチーム開発はなんとなく厳しそうという体感を得ている。環境を揃えられるのは◎。VPCに繋げないのも許せるとして実行環境が明らか…

BFFとしてのNext.js の鉄板さ

GWいろいろやっていたけど、Next.js / Nuxt.js かなり鉄板だなという気持ちを再確認した。Web フロントエンド + BFFを一枚で作れるとバックエンドAPIとの連携部分の開発環境構築がとても楽。CORS問題発生しないから、バックエンドAPIを別コンテナで立てたり…

neo4j 4.2.3 メモ

マネージドなグラフDBとしては Amazon Neptune があるが、こいつは Cypher をサポートしないのでいったん除外した。おれは Cypher の書き味がなんとなく好きなんです。 動作環境としては適当に debian 系のVMをクラウド上に立てた。ドキュメントを参照しつつ…

fetchのmock周りにちょっと悩んで、悩んでググったら混乱していた

以下のように似たライブラリ名がいろいろあって、わかっているつもりでも惑わされてつらかったという話題です。なお悩んでいた原因ライブラリあまり関係なくて、jestの __mocks__ 処理時の import のロード順というものでした。 jest-fetch-mock fetch-mock-…

nodeのDateの実装では 2/28の1ヶ月前は1/31である

当たり前のような気がするけど、 $ts-node > const today = new Date() > today 2021-02-28T23:04:18.705Z > const lastMonth = new Date(today.getTime()) > lastMonth.setMonth(today.getMonth() -1) > lastMonth 2021-01-31T23:04:18.705Z setMonth で月…

Docker for Mac の M1対応プレビュー版は自動では更新されないので

手動で更新した。 before after というか 0.0.0 のままだったのかーー(特に困ってなかった)

Docker for Mac の M1対応版テクノロジープレビュー版

www.docker.com せっかくなので入れておく。プレビューロゴがかわいい。 普通に起動する。 アクティビティモニタで見てみるとだいたい Apple 版だけどいくつかIntelビルドで動いてるプロセスもいる。 % docker run --rm -it node Welcome to Node.js v15.4.0…

next.js 入門した

諸事情があって手元で elm で書いていたものを移植している。 プロジェクトの作成 プロジェクトディレクトリを適当に作る。 mkdir hoge cd hoge npm init -y チュートリアル - Manual Setupに従い、 npm install next react react-dom npm install --save-de…

@slack/bolt で既存のメッセージを編集する

備忘録。 action ボタンがクリックされたらボタンを消すみたいなやつは、respond すると更新できる。この挙動はちょっと予想外だった。 app.action('click', async ({ ack, respond, action }) => { await ack(); respond(`click ${action.value}`) }); say …

Google CloudShellに環境を作る

備忘録。 CloudShell を育てて Apple Silicon を積んだ MacBook が届いても日常生活に困らないようにする作戦を立てている。 Google CloudShell Google Cloud に無料でついてくるLinux環境。2020年時点では Debian 10系。g1-small (vCPU 0.5, RAM: 1.70G) 相…

GoogleCloudのSecretManagerのpythonライブラリ、access_secret_versionには名前付き引数でキーを渡す

誤 client = secretmanager.SecretManagerServiceClient() resource_name = 'projects/{}/secrets/{}/versions/{}'.format(project_id, secret_name, secret_ver) response = client.access_secret_version(resource_name) # 最近のバージョンでは位置引数で…

AwsEnterpriseSupportFeeを計算する関数

AWSのサポート費用はプランによってとか計算が違い、かつ単純に金額に対していくらの係数をかけるみたいなやつではないので概算を出すにも一瞬手が止まりませんか。 こういう感じのものを Google Spreadsheet とかに仕込んでおくとちょっと楽になる。いつも…

nodejsのreplのプレビュー表示は式がその場で評価されている

どういうことかというとこういうことです。 その場で評価されている図 (関数は AwsEnterpriseSupportFeeを計算する関数 - 0xf で触れているものです。)

Unity日記

ワールド座標系での相対位置とローカル座標系での絶対位置をたまに取り違えていたことが発覚した。謎は全て解けた。残念なのは自分だ。

二次ベジェ曲線

以下サイトを参考にして書いてみた。 scrapbox.io いつ間にかC#にタプル構文が入っていてこういう処理が書きやすくなっていていい感じ。 using System.Collections; using System.Collections.Generic; using UnityEngine; public class LineScript : MonoBe…

OpenGLこんにちは

以下のようなカーソル位置にアウトラインをひょいっと書くには GLで線を引くのがイメージ通りだった、という話。 マインクラフトみたいにカーソル位置にボックスを設置してみた だいたいドキュメントのサンプルコードを参考にして普通の OpenGL キャンバスと…

ライトプローブが追加できない問題

タイトルのような問題があった。具体的には、ライトプローブグループを追加したあと、ライトプローブを表す黄色いボックスがシーン上に現れず、選択も操作もできない。エディタ再起動してみたり、新しいプロジェクトを作成して試したりしたものの改善しなか…