tag:blogger.com,1999:blog-13965876838690526002024-03-13T18:51:07.133+09:00hiro99ma blog画像が表示されないページは、元画像を間違えて削除してしまっているためです。
もうデータが残っていないので、想像力で補ってください。hiro99mahttp://www.blogger.com/profile/04874324534565548436noreply@blogger.comBlogger2695125tag:blogger.com,1999:blog-1396587683869052600.post-36994518582588011312024-03-02T11:55:00.004+09:002024-03-02T12:23:02.103+09:00画像が出ていないことに気付く今気付いたのだが、自分のブログの画像が「image」に置き換わっていた。 Open Live Writer 0.6.3.0 を使っているが、これはどこかでビルド済みのものをダウンロードしてきている。 GitHubにあるので自分でビルドしてみれば良いのだろうが・・・気力がない。 まずは本当に画像が出ないのか見てみよう。 たしかに表示されない。Bloggerのエディタ画面で貼り付ければ、もちろん表示される。 Bloggerエディタで画像を貼り付けると、画像データがbase64で直接埋め込まれるようなのだ。このissueかな? https://github.com/OpenLiveWriter/OpenLiveWriter/issues/959 長いこと Blogger を無料で使っているが、hiro99mahttp://www.blogger.com/profile/04874324534565548436noreply@blogger.com0tag:blogger.com,1999:blog-1396587683869052600.post-68922214936697221922024-01-28T18:40:00.001+09:002024-03-02T11:44:28.319+09:00Windows Helloとセキュリティキー以前 Google Pixel を購入したときに Google Store ポイントをもらっていて、それがあと数ヶ月で期限切れになりそうだった。 せっかくなので何か購入しておこうと思ったのだが、使えるのが Google Store だけのためポイントだけで購入できるものは少ない。まあ、おまけでポイントをもらっただけなのでぜいたくは言えない。 私が持っていなくて、合って面白そうだなと思ったのがセキュリティキーだった。 Titan Security Key - FIDO2 USB-A/USB-C + NFC https://store.google.com/product/titan_security_key?hl=ja 以前のバージョンは単なる FIDO だったが、最近更新されて FIDO2 対応になっている(対応、という呼び名が正しいかどうかわからんが...hiro99mahttp://www.blogger.com/profile/04874324534565548436noreply@blogger.com0tag:blogger.com,1999:blog-1396587683869052600.post-36152479161644921842024-01-14T23:44:00.001+09:002024-01-14T23:44:33.376+09:00スタックメモリとヒープメモリの使い分けはコンパイラ任せ (1)golang は chan で時空を超えて(?)値を渡すことができる。 といっても、golang って C言語になかなか近いところがあるので、ポインタで渡すときはヒープにメモリを確保しておかないと危ないよね? と思って new なり make なり使うべきかと考えていたのだが、ガベッジコレクションもあることを考えるとそう簡単ではない気がした。   心配になって検索すると、どうも golang ではスタックメモリやらヒープメモリやらを実装する人が決められないというか、コンパイラが決定するというような記事ばかりが出てくる。 https://duckduckgo.com/?t=ffab&q=golang+stack+heap&ia=web ただ、そうするとかなりな部分がヒープメモリで管理することになってしまうんじゃなかろうか。いや、関数呼び出しでhiro99mahttp://www.blogger.com/profile/04874324534565548436noreply@blogger.com0tag:blogger.com,1999:blog-1396587683869052600.post-83519288264678726712024-01-14T18:05:00.001+09:002024-01-14T18:35:32.942+09:00YAMLフォーマットJSONは便利だ。 文字も書けるし数字も書ける。配列も書けるし構造体も書ける。 ここがちょっとなあ、と思うところもある。 数字が 53bit まで 行末にコンマがいるし、次に継続するものがない場合はコンマがあってはダメ コメントが書けなさそう 53bit までしかないので、64bit値になる可能性がある場合は文字列にしてデコード側で変換している。 コンマが必要だったり不要だったりなのは面倒なだけなのだが、ちょっとしたJSONなのでライブラリなど無しで作ろうとした場合、コンマを出力するかどうかを判定しながらになるのがもどかしい。 まあ、コンマがあるおかげで1行で書いたりもできるのだが、設定ファイルのように人間が読み書きする前提だったら改行を末尾としたり、インデントでブロックと見なしたりすればいいやんという気持ちにもなってしまう。 あと、コメントがhiro99mahttp://www.blogger.com/profile/04874324534565548436noreply@blogger.com0tag:blogger.com,1999:blog-1396587683869052600.post-76730401985390327502024-01-08T10:51:00.003+09:002024-01-08T18:33:58.059+09:00golangの無名関数私が一番なじんでいる開発言語はC言語だ。今後は変わるかもしれないが、まだ一番だ。二番をgolangにしようとしている。まあ、C++歴もまあまあ長いのだがしばらく使っていないし、それ以外の言語も C言語っぽいから使えているという程度のように思っている。golang も C言語っぽい。例外がなかったり、*や&を使ったりするなどバイナリになったときのイメージが C言語に近いのもよろしい。私が golang を覚えるときは C言語と同じだったり違いだったりという差分でやろうとしている。全部覚えられるほど記憶がよくはないのだよ。。。golang は新しい言語なので、新しい(というわけでもないだろうが)仕様がある。Javaにもあったと思うのでそんなに新しい言語仕様ではないと思うのだが、C言語自体にはなかったはずである。型として関数を指定できるという意味では関数ポインタに近いような感じはするのhiro99mahttp://www.blogger.com/profile/04874324534565548436noreply@blogger.com0tag:blogger.com,1999:blog-1396587683869052600.post-70753089944167527292023-12-24T18:34:00.005+09:002023-12-24T18:34:30.156+09:00golang の取りあえず context居酒屋に入って「取りあえずビール(中ジョッキ)」とやってしまうような感覚で、golang の引数に context があったら、上位から渡されたのがあればそれを、なければ context.Background() で与えていることが多い。もう少し調べておこう。 まず、context.Background() はこれだ。https://cs.opensource.google/go/go/+/release-branch.go1.21:src/context/context.go;l=211-213backgroundCtx{} を返すだけで、NewBackgroundCtx() という名前にしたい気もするが、これはアドレスではなくインスタンスを返すから new が付かないのだろうか。その下に context.TODO() もある。同じようにを todoCtx{} 返すhiro99mahttp://www.blogger.com/profile/04874324534565548436noreply@blogger.com0tag:blogger.com,1999:blog-1396587683869052600.post-50141145330393473352023-12-16T19:19:00.001+09:002023-12-16T19:19:30.988+09:00golang の test で before each は(たぶん)ないgolang でテストを書く場合、 TestMain(*testing.M) があるとそのファイルの中に *testing.T の関数は呼ばずに TestMain() だけ呼び出し、その中で Run() を呼び出すことで *testing.T の関数が呼ばれるらしい。それを利用して、テスト全体の事前処理と事後処理を書くと良いそうだ。ならば、各*testing.T の関数を呼び出す前後にも単独の事前処理と事後処理を呼び出すしくみがありそうなものだが、どうも無いようだ。しくみを作っている人もいそうではあったが、標準にないならいいかな、と私は思った。テスト関数に直接埋め込むだけだ。埋め込み忘れるという心配はあるのだが、だいたい TableDrivenTests とか言っているんだし、for文の中でテスト対象の関数を何度も呼び出すという書き方をすることが多いのだとすると、テスト関数単独の事前/hiro99mahttp://www.blogger.com/profile/04874324534565548436noreply@blogger.com0tag:blogger.com,1999:blog-1396587683869052600.post-68127807843795992152023-12-16T18:13:00.000+09:002023-12-16T18:13:08.122+09:00golangのtestは自由度が高すぎるgolang は標準で testing というパッケージを持っていて、テストコードを書いたり、テストコードは実行ファイルに含めないようになっていたりとテスト用のしくみがある。それはよいのだが、自由度が高すぎると思う。ファイルや関数の決まり事以外は t.Errorf()を通ればエラー、というだけのルールだけなのでどのようにでも書けてしまう。私はテストする関数と、あとは結果が正常系だったりエラーのxxだったりみたいな感じでテスト関数を分けて書いたりしていたが、境界値テストみたいな場合は構造体で INPUT と期待する OUTPUT の組を作った配列を for でぐるぐる回したりして、今ひとつ統一性がなかった。 go.dev の wiki には TableDrivenTests という項目があった。さっき最後に書いた構造体でテストデータと結果を作って流すような書き方がこれのようだ。hiro99mahttp://www.blogger.com/profile/04874324534565548436noreply@blogger.com0tag:blogger.com,1999:blog-1396587683869052600.post-27773137061854978982023-12-02T18:45:00.004+09:002023-12-02T18:45:53.382+09:00最近の go work"go work" は比較的最近使えるようになった。というと使いこなしているように見えてしまうが、実は初めて使う。。。Tutorial: Getting started with multi-module workspaceshttps://go.dev/doc/tutorial/workspaces"go work" の "work" は workspace の work だろう。このチュートリアルを最後まで行うと、workspace/ の中はこうなっている。赤枠がチュートリアルで作成した部分、それ以外は git clone で持ってきた部分だ。 hello.go で "fmt.Println(reverse.String("Hello"), reverse.Int(24601))の reverse.Int(24601) はオリジナルの "golang.org/xhiro99mahttp://www.blogger.com/profile/04874324534565548436noreply@blogger.com0tag:blogger.com,1999:blog-1396587683869052600.post-43664020363695738552023-12-02T15:44:00.001+09:002023-12-02T15:44:42.809+09:00最近の go get"go get" の仕様が変わったという話は聞いていたし、実際に違いも感じるのだが、「なんとなく」で go get したり go mod tidy したりしている。そのせいだと思うが、git clone してビルドするだけなのに go.mod が更新されていたり go.sum が更新されたりして落ち着かない。それに過去の仕様を覚えているというわけでもない。あきらめて、いまの go v1.21 くらいだとどう使うのが普通なのか調べておこう。なるべく go.dev から参照していきたい。解説記事を読んだとしても、私が過去の仕様を知らないので「これは古い内容だ」という判断ができないのだ。まず、go v1.17 から "go get" で実行ファイルのインストールが行われなくなった。その代わりに "go install" を使いなさいということだ。Deprecation of 'go get' hiro99mahttp://www.blogger.com/profile/04874324534565548436noreply@blogger.com0tag:blogger.com,1999:blog-1396587683869052600.post-3593146851607563102023-11-25T15:27:00.002+09:002023-11-25T15:27:22.608+09:00protoc-gen-go-grpcの-MオプションがうまくいかないgRPC の勉強というか仕事というか。適当に proto ファイルを作って、protoc-gen-go と protoc-gen-go-grpc をインストールした状態で protoc を実行する。が、エラーになった。protoc-gen-go-grpc: unable to determine Go import path for "rpc.proto"
Please specify either:
• a "go_package" option in the .proto source file, or
• a "M" argument on the command line.
See https://hiro99mahttp://www.blogger.com/profile/04874324534565548436noreply@blogger.com0tag:blogger.com,1999:blog-1396587683869052600.post-20060529868672151322023-11-19T16:22:00.001+09:002023-11-19T17:03:27.604+09:00モダンスタンバイ?ThinkPad T14s を購入した。OSは Windows11 Home。充電をしていない場合、蓋を閉じるなり、電源ボタンを押すなり、Fn+4 を押すなりするとスリープしている。どうやってスリープしていると判断しているかというと、ThinkPad LED(表紙とパームレストにあるLED)が点滅しているかどうかである。この LED の説明を探しても見つからないので、たぶんそうだろうという判断である。充電中の場合、上に書いた操作のどれを行っても ThinkPad LED が変化しない。ファンも回っている。そうなるとスリープしたように見えない。ただ検索すると、スリープ中もファンが回っているという記事がいくつも見つかるので、実はスリープしているのかもしれない。そうやって調べていくと、モダンスタンバイという機能が見つかった。モダン スタンバイ | Microsoft Learnhttps://hiro99mahttp://www.blogger.com/profile/04874324534565548436noreply@blogger.com0tag:blogger.com,1999:blog-1396587683869052600.post-31390133705061562352023-11-18T11:07:00.002+09:002023-11-18T11:07:19.130+09:00ThinkPad T14s Gen4比較的最近、ThinkPad T14sを買いました。Gen4 です。 トラックポイントを使っていますが、メーカーが変わっていました。Synaptics から ELAN になりました。だからかどうかわかりませんが、操作感が結構違うように感じます。以前はしばらく使っていると反動?で自動的にカーソルが動くことがありました。最初は「なんじゃこりゃ!」と驚いたのですが、慣れてしまうと不思議なことに「元気だねー」くらいの気持ちでいられるようになりました。今回のトラックポイントですが、そういう動作はしなくなったように思います。ですが、カーソルが動かなくなることがあるような気がします。「気がします」と弱気なのは、押している力がそのとき弱くなったのかもしれないとちょっとだけ思うからです。指を離して同じくらいの力で(と私は思っている)操作するとまた動きます。まだ慣れてないですが、これもいつか慣れるのでしょうhiro99mahttp://www.blogger.com/profile/04874324534565548436noreply@blogger.com0tag:blogger.com,1999:blog-1396587683869052600.post-80326622384396272342023-11-12T20:27:00.005+09:002023-11-12T20:27:37.651+09:00 Windows11 のテキストエディタで使用するフォントについて悩んでいた。hiro99ma blog: フォント選びが難しいhttps://blog.hirokuma.work/2023/10/blog-post.html 私は主にFirefoxを使っているが、設定はこうなっていた。サイズが 16 となっているが、だいたいのサイトではフォントもサイズも自分で指定するだろうからあまり意味は無いのかもしれん。 Chromeも使っているのだが、これは「カスタム」で何が選ばれているのかわからん。。。 いろいろ試したが、今のところこれで落ち着いた。GitHub - yuru7/PlemolJP: IBM Plex Mono と IBM Plex Sans JP を合成したプログラミングフォント PlemolJP (プレモル hiro99mahttp://www.blogger.com/profile/04874324534565548436noreply@blogger.com0tag:blogger.com,1999:blog-1396587683869052600.post-61694202533818900902023-10-29T12:08:00.002+09:002023-11-12T20:18:19.822+09:00Windows10の初期化をしてうまくいかない新しくノートPCを買ったので、以前使ったものは初期化しようと考えた。Windows10だ。設定画面から「回復」でユーザデータもなんもかんも削除して良いので、クリーンな感じでGo!・・・終わったのだが、再起動されてまだアカウントが残っている。そしてPINもそのままっぽくて、しかしユーザープロファイルにアクセスできないみたいなことを言ってくる。全部消してくれるんじゃないの???検索で「windows10 初期化 ユーザープロファイルを読み込めません」辺りをキーワードにするといろいろ出てきた。ありがちみたい。覚えていないのだが BitLocker が有効になっていたかもしれない。https://solutions.vaio.com/2193もしそうだったら、回復前に一言言ってほしかったのだが確認する方法はない。どうしようもないので Windows10 のセットアップ USBメモリを作ってhiro99mahttp://www.blogger.com/profile/04874324534565548436noreply@blogger.com0tag:blogger.com,1999:blog-1396587683869052600.post-9093255264268499232023-10-29T11:47:00.001+09:002023-10-29T11:47:03.368+09:00フォント選びが難しい<!--[if gte mso 9]>
<![endif]--><!--[if gte mso 9]>
Normal
0
0
2
false
false
false
EN-US
JA
X-NONE
<![endif]--><!--[if gte mso 9]>
hiro99mahttp://www.blogger.com/profile/04874324534565548436noreply@blogger.com0tag:blogger.com,1999:blog-1396587683869052600.post-77943286219038845382023-10-15T10:27:00.000+09:002023-10-15T10:27:37.575+09:00Affinity Designer2: パス? ライン? セグメント?仕事で図を描くことはしばしばあると思う。今まで Excel で描いてスクリーンショットを切り抜いて切り貼りしていて、それで困ったことはない。ないのだが、専用のツールで描けるようになっておきたいという気持ちもある。そこで Affinity Designer 2 の Windows 版を購入したのだが、記事でも書かないと使い方を覚えそうにないので書いていこう。今回はベクターでの線についてだ。ライン、カーブ、シェイプについてhttps://affinity.help/designer2/ja.lproj/index.html?page=pages/CurvesShapes/about_linesAndShapes.html?title=%E3%83%A9%E3%82%A4%E3%83%B3%E3%80%81%E3%82%AB%E3%83%BC%E3%83%96%E3%80%81%E3%82%hiro99mahttp://www.blogger.com/profile/04874324534565548436noreply@blogger.com0tag:blogger.com,1999:blog-1396587683869052600.post-7220323483795332252023-10-10T22:58:00.001+09:002023-10-10T22:58:49.175+09:00Android API33に対応していなかったアプリのことを忘れていた 2023年8月末までに Google Play にアップしているアプリは API 33に対応せよ、という指令が出ていた。hiro99ma blog: Android API33に対応してなかったアプリhttps://blog.hirokuma.work/2023/09/qr-qr-qrcode-readgen-google-play.html「様子を見てみよう」と書いていたので放置していたのかと思っていたが・・・。既に API 33になったアプリが公開されていた。 た、たぶんだが、公開の概要で審査済みにして後で手動でアップしよう、と思っていたんじゃないだろうか。そしたら自動でアップするようになっていたんだと思う。すっかり忘れて、ノリノリで API 33 にしてアップまで済ませた、とは思いたくない。というわけで、放置したらどうなるかの実験はできませんでした。hiro99mahttp://www.blogger.com/profile/04874324534565548436noreply@blogger.com0tag:blogger.com,1999:blog-1396587683869052600.post-29009419646977581212023-09-17T19:57:00.007+09:002023-10-10T22:46:08.066+09:00Android API33に対応してなかったアプリ 以前作っていた QRコードを読み込んだり、クリップボードのテキストを QRコード画像にしたりするアプリ。QRcode Read/Gen - Google Play のアプリhttps://play.google.com/store/apps/details?id=com.hiro99ma.qrgenread放置していたのだが、Google Play Console から警告がずいぶん前に来ていたことに気付く。compileSdk と targetSdk を 30 にしていたのだが、ちゃんと更新していきなさいということだろう。面倒ではあるが、まあ仕方ない。というよりも、数週間過ぎてしまったのだがどうなったんだろう?まず、ブラウザをシークレットモードにしてログインなどしていない状態で Google Play の公開サイトを見に行ったのだが、普通に公開されていた。ただ上の警告hiro99mahttp://www.blogger.com/profile/04874324534565548436noreply@blogger.com0tag:blogger.com,1999:blog-1396587683869052600.post-42707000153018536122023-09-17T19:34:00.002+09:002023-09-17T19:34:42.006+09:00WSL2を仕事で使ってみよう7年ほど使っていたノートPCを新調した。 私はWindows生活が長いので、今回もWindowsだ。 Windows11 Home では初回は Microsoftアカウントしかアカウントを作ることができず、ユーザフォルダ名はそのメールアドレスの先頭5文字までを使うという哀しい仕様であることを知った。「それくらい決めさせてくれても良くない??」と思うのは私だけではないようで、検索すると出てきた。変更はできないので別のローカルアカウントを作るしかないことだった。おかげでまだ2アカウントある状態だ。そういう脱線話はよいとして。 私のソフトウェア開発作業はLinux向けがほとんどだ。デスクトップPCはストレージに余裕があったし増やしやすいのもあって VirtualBox でやっている。Samba で共有しておけばファイル移動も楽だし、Windows の手慣れたツールを使うこともできてhiro99mahttp://www.blogger.com/profile/04874324534565548436noreply@blogger.com0tag:blogger.com,1999:blog-1396587683869052600.post-57204794013449713302023-09-10T12:26:00.001+09:002023-09-10T12:26:55.616+09:00JavaScriptやTypeScriptで検索しづらい演算子単語ではないものはネットで検索しづらい。「!」や「?.」などだ。 以前記事にしたようなしてないような・・・忘れたので調べ直す。   ?. これは TypeScript ではなく JavaScript にある演算子である。 オプショナルチェーンと呼ぶそうだが、英語では optional chaining だ。 オプショナルチェーン演算子 https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Optional_chaining ドットまで含めての演算子になっている。ちなみに「.」は chaining operator と呼ぶそうだ。 リンク先では「adventurer」のプロパティに「dog」がないので「adventurer.dog?.name」となってhiro99mahttp://www.blogger.com/profile/04874324534565548436noreply@blogger.com0tag:blogger.com,1999:blog-1396587683869052600.post-43007795907499710052023-08-20T21:15:00.001+09:002023-08-20T21:15:20.983+09:00golang: interfaceの勉強 (3)続き。 hiro99ma blog: golang: interfaceの勉強 (2) https://blog.hirokuma.work/2023/08/golang-interface-2.html struct と duck typing golang の調べ物をしたとき、duck typing という言葉を見ることがある。 メソッド名・引数・戻り値が一致したら同じものと思われる、くらいに思っていたのでこういうことができると考えていた。 package main
import "fmt"
type Abc struct{}
func (a *Abc) Greet() {
fmt.Println("Hello")
}
type Def struct{}
func (d *Def) Greet(hiro99mahttp://www.blogger.com/profile/04874324534565548436noreply@blogger.com0tag:blogger.com,1999:blog-1396587683869052600.post-36611401729517526832023-08-19T18:55:00.001+09:002023-08-19T18:55:48.742+09:00golang: interfaceの勉強 (2)使ったことがない interface だが、テストでモックを作ろうとするときはやっておいた方がよさそうだ。 hiro99ma blog: [golang] interfaceの勉強 https://blog.hirokuma.work/2022/02/golang-interface.html struct golang には class はないが、struct で似たようなことはできる。 こういう意味が無いこともできる。 type Abc struct {}
func (a *Abc) Greet() {
fmt.Println("Hello")
}
ここの「(a *Abc)」の a はレシーバーと呼ばれる。 class の this なんかに近いし、もし Abc の定義に変数があったなら a.xxx のようにしてhiro99mahttp://www.blogger.com/profile/04874324534565548436noreply@blogger.com0tag:blogger.com,1999:blog-1396587683869052600.post-85339826956211343232023-08-05T17:05:00.001+09:002023-08-05T17:05:18.733+09:00"docker builder prune"で/var/lib/docker/の削減をした私は Widows11 上で VirtualBox を動かし、ゲストOS で Ubuntu を動かしている。 クラウド上で動かすときは 30GB でなんとかなっているからとのんびりしていたのだが、あれよあれよと容量が膨らんで / と /home をそれぞれ 180GB くらい確保する羽目になってしまった。 /home は自分でファイルを置いているから増えたり減ったりも制御しやすいのだが、 / の方はアプリのインストールとかやっているとじわじわ圧迫されてしまう。 さっき見ると空き容量が 2% くらいになっているのに気付いた。 Ubuntu にインストールされていた Disk Usage Analyzer で見てみたが、そこに出ている範囲では大して使われていない。ということはあまり触りたくないディレクトリがふくれているようだ。 du で見ていくと /var 、中でも /varhiro99mahttp://www.blogger.com/profile/04874324534565548436noreply@blogger.com0tag:blogger.com,1999:blog-1396587683869052600.post-18931392573790200092023-08-05T13:21:00.001+09:002023-08-05T13:21:45.511+09:00win11 : 画像ファイルの関連付けが変更できなくなっていた以前もなっていたが、また Windows11 で画像ファイルの関連付けが変更できなくなっていた。 どうやって前回直したか思い出せなかったが、こういう方法だった。 【フォト】画像ファイルの関連付けが出来ない問題の解決【jpg png bmp gif】 | rimo-WorkShop https://rimo-ws.com/6860/ そうそう、Microsoftフォトを修復だかリセットだかやって使えるようになったのだ。   ただ今回違ったのは、私がMicrosoftフォトをアンインストールしていたことだった。 では何のアプリが起動していたかというと「画像の印刷」というアプリだった。 ちなみに「フォト レガシ」もインストールされていたのだが、そっちには関連付けられなかった。   結局、フォトをインストールして修復&リセットするとhiro99mahttp://www.blogger.com/profile/04874324534565548436noreply@blogger.com0