0xf

日記だよ

プログラミング

awscli は pip install でインストールしない

awscli · PyPI 2系は pyplに公開されてないので、Macであれば homebrew でいれるか、公式通りにインストーラでインストールしましょう。gcloud コマンドみたいに自分自身をアップデートする仕組みがあると便利ですね。 クラメソさんが github からセットアッ…

Pythonのf文字列

s3path = f"s3://{bucket}/{item["Key"]}" でKeyを囲むダブルクォートがSyntaxエラーになる。SyntaxError: f-string: unmatched '['。 2. 字句解析 — Python 3.10.4 ドキュメント を眺めると、中括弧の中は python式なので書けそうなもんだけど、実際には " …

kuku.luで利用できるメールアドレスのドメイン

捨てメアドサービス「メルアドぽいぽい」ってやつのドメインリスト(https://m.kuku.lu/config_domain.php)が面白いテクで読みづらくなっていたので、読みやすく直した。インターネットでは機械可読であるのはだいたいにおいていいことであると思う。 . が画…

Google Cloudに接続するクライアントをgcloudと同じ認証情報で動作させる

普段 gcloud auth login するように gcloud auth application-default login しておく。サービスアカウントの認証情報を手元におかなくてよくて便利...ではあるけど、手元環境だいたい権限すごく強いのでなるべくは開発用のサービスアカウントを発行して使っ…

GitHub Actionsメモ

ちょっと調べていたのでメモしておく。 今のところApproveされているかどうかは拾えなさそう。mergeableであるかどうかのチェックで代用するのが正解かな。mergeableは pull_request データ構造に存在する。 ワークフロー中、人間の承認を要求するようにする…

golangでフィボナッチ数列

func fibonacci() func() int { f, n, r := 0, 1, 0 return func() int { r, f, n = f, n, f+n return r } } A Tour of Go 例題より。改めてなんとなく書き味がわかってきた。

書籍「Go言語による並行処理」

読んだ。何度も並行と並列について取り上げられるので間違えなくなった。便利。 context.Backgroundの謎が個人的には解けた。いや、解けてないんだけどそういうものだということがわかった。慣例的に done チャネルを使っていたやり方を標準化したような感じ…

2022/2/8日記

golang 引き続き眺めている。 io.Writer などは基本的にバッファリングしない。 log.Fatal は os.Exit(1) するよ。 Macの環境でインストーラによるランタイム環境と homebrew によるものが混ざっていると不便なのでどっちかに統一。だいたい homebrew でやっ…

今日から default language = golang にすることにした

だいたい普段からちょっとした書き捨ての処理はシェルスクリプトで書いてしまうし、テキスト処理やAWSの操作は python でやることが多く、jsonデータの処理は jq か nodeで書くことが多かった。のだけど、普段からプログラミングするのってそういうやつなの…

2021/11/30日記

今日で11月が終わりだなんて信じられない Typescriptから入った若者に「どうして昔のJavascript設計した人は最初からちゃんと作らなかったんですか」と言われて苦しい気持ちになった。わかる。わかるよ。 Minecraft のバージョンアップもそろそろって噂が。 …

GitHub CodespacesではElm拡張はダメだった

残念。 When you install an extension, it is saved in the browser's local storage. You can ensure your extensions are synced across VS Code instances, including different browsers and even the desktop, by enabling Settings Sync. (https://co…

2021/10/19日記

寒いので絨毯を出した。仕事部屋では朝から暖房にスイッチ。冬だ。 昨日はdiablo2は相変わらず繋がらなかった。 家庭内ではその代わりに Unravel Two が流行している。リトルビッグ・プラネット的な手触りのパズル風味アクションゲームだけど、なんか半透明…

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 で月…