お遍路の進捗

土曜日は72番札所の曼荼羅寺から76番札所の金蔵寺駅までをめぐり、 日曜日は77番札所の道隆寺から84番札所の屋島寺までをめぐりました。 去年の7月から初めて牛歩のような速さで巡ってきたわけですが、 80番後半が見えてくると旅も終わりなんだなぁと感じますね。 クリックで拡大 クリックで拡大 クリックで拡大

<span title='2023-03-06 22:58:23 +0900 +0900'>3月 6, 2023</span>

たけのこ掘りました

今年初のたけのこを掘りました。 この時期なので浅いので良いのですが問題があってイノシシの被害が今年はひどいです。 20本くらい食い荒らされた跡がありました。 対策考えないとなぁ。

<span title='2023-03-04 23:20:31 +0900 +0900'>3月 4, 2023</span>

gopenai-apiでAudio APIを使えるようにしました

昨日 作った OpenAI のAPI wrapperで Audio API を利用できるようにしました。 公式のAPIではDefaultのformatがjsonになっていますがverbose_jsonにしてあります。 vtt, srt はまだ対応させていません。 長いデータを投げてないのでわからないですがQueue/WorkerではなくREST APIなので処理長いとタイムアウトしちゃいそうな気がするけどそのあたりどうなんだろう? 使用例 package main import ( "fmt" "log" "os" "github.com/ieee0824/gopenai-api/api" "github.com/ieee0824/gopenai-api/config" "github.com/samber/lo" ) func main() { a := api.New(&config.Configuration{ ApiKey: lo.ToPtr("API_KEY"), Organization: lo.ToPtr("ORG_ID"), }) f, err := os.Open("test.mp3") if err != nil { log.Fatalln(err) } result, err := a.AudioTranscriptionsV1(&api.AudioTranscriptionsV1Input{ File: f, Model: lo.ToPtr("whisper-1"), Language: lo.ToPtr("ja"), }) if err != nil { log.Fatalln(err) } fmt.Println(result.GoString()) } 制作物 gopenai-api

<span title='2023-03-03 20:53:26 +0900 +0900'>3月 3, 2023</span>

GoからOpenAIのgpt-3.5-turboを使ってみた

インストール go get github.com/ieee0824/gopenai-api 内容 次のAPIに対応しています. /v1/models /v1/chat/completions chat apiをGPT 3.5 Turboで実行する例 package main import ( "fmt" "github.com/ieee0824/gopenai-api/api" "github.com/ieee0824/gopenai-api/config" "github.com/samber/lo" ) func main() { a := api.New(&config.Configuration{ ApiKey: lo.ToPtr("api-key"), Organization: lo.ToPtr("organization-id"), }) fmt.Println(a.ChatCompletionsV1(&api.ChatCompletionsV1Input{ Model: lo.ToPtr("gpt-3.5-turbo"), Messages: []api.Message{ { Role: "user", Content: "ChatGPT 3.5のapiの使い方を教えてください", }, }, })) } 制作物 gopenai-api

<span title='2023-03-02 21:23:51 +0900 +0900'>3月 2, 2023</span>

GridレイアウトをCSSを利用したものに変更しました

先日の記事 で画像をGrid表示する話をしましたが、CSSでできるという話を聞いたので置き換えました。 {{ $size := "200x" }} {{ $mobileSize := "100x100"}} <div class="img-view"> {{ range $idx, $elem := .Params }} {{ $res := resources.GetMatch $elem }} {{ $image := $res.Resize $size }} {{ $imageWebP := $res.Resize (printf "%s %s webp q70" $size) }} {{ $mobileImage := $res.Fit $mobileSize}} {{ $mobileImageWebP := $res.Fit (printf "%s %s webp q70" $mobileSize) }} {{ $imageURL := $image.RelPermalink }} {{ $imageWebPURL := $imageWebP.RelPermalink }} {{ $mobileImageURL := $mobileImage....

<span title='2023-02-27 22:23:41 +0900 +0900'>2月 27, 2023</span>

WebP対応しました

サムネイルだけですがWebP対応しました。 オリジナルサイズはどうするか悩んでいるところです。 静的配信をしてるのでserverで出し分けるのではなくpicture tagを利用してやっています。 対応差分は次のような感じです。 - <img class="pc" src="{{ $imageURL }}" alt="{{ $elem }}" width="{{ $image.Width }}" height="{{ $image.Height }}"/> - <img class="sp" src="{{ $mobileImageURL }}" alt="{{ $elem }}" width="{{ $mobileImage.Width }}" height="{{ $mobileImage.Height }}"/> + <picture class="pc"> + <source srcset="{{ $imageWebPURL }}" type="image/webp" > + <img src="{{ $imageURL }}" alt="{{ $elem }}" width="{{ $image.Width }}" height="{{ $image.Height }}"/> + </picture> + <picture class="sp"> + <source srcset="{{ $mobileImageWebPURL }}" type="image/webp"> + <img src="{{ $mobileImageURL }}" alt="{{ $elem }}" width="{{ $mobileImage....

<span title='2023-02-26 10:17:15 +0900 +0900'>2月 26, 2023</span>

狩猟免許の試験を受けてきました

試験の流れ 私の地域では午前中がわな、午後が銃という構成でした。 8時30分に会場到着して視力検査、聴力検査、運動能力検査を行いました。 視力検査はよくあるランドルト環の方向を答えるやつです。 聴力検査は部屋の隅にたった状態で対角線上の位置からアラームを鳴らして聞こえたら手を上げると言うものでした。 運動能力検査は屈伸したり 岸部露伴の準備運動 みたいなことをやりました。 まぁ実際は岸部露伴程は複雑ではないです。 諸々の検査が終わったら次は筆記試験です。 30問の試験で90分時間が用意されてますが見返しを含めても15分もあれば終わると思います。 途中退席も15分からなので答案用紙に穴があくくらい見返したらいいと思います。 筆記試験が終わると筆記試験の合格者が先に発表されます。 このとき不合格の人は次の鳥獣判定と罠の判定、設営に進むことなく終わります。 合格した人は鳥獣の判定、罠の判定、設営を行い終わった人から帰っていきます。

<span title='2023-02-25 20:22:37 +0900 +0900'>2月 25, 2023</span>

hugoをGitHub actionsでbuildする設定

当ブログはGithub actionsでビルドしたあとサーバーにデプロイするようにしています。 版管理はgitで画像はlfsを利用しています。 テーマは hugo-PaperModを利用しておりsubmoduleになっています。 actionsの設定 ほぼ重要なのはチェックアウト周りだけなので抜粋はチェックアウト周りだけです。 やっていることは lfs を有効にすることと submodule をチェックアウト時に取得することです。 steps: - name: Checkout uses: actions/checkout@v3 with: lfs: true submodules: recursive submodulesと書かずにsubmoduleと書いてしまって小一時間悩んでしまいましたがsが必要です。 submoduleにしてしまった場合次のような警告が出ますがそのまま実行されます。 Unexpected input(s) 'submodule', valid inputs are ['repository', 'ref', 'token', 'ssh-key', 'ssh-known-hosts', 'ssh-strict', 'persist-credentials', 'path', 'clean', 'fetch-depth', 'lfs', 'submodules', 'set-safe-directory', 'github-server-url'] hugo側の設定 大きい画像をshortcodesを利用して変換する場合時間がかかってタイムアウトをする場合があります。 なので私はtimeout: 120sという設定を入れています。 timeoutのフォーマットはGoのtime.ParseDurationの対応しているフォーマットです。

<span title='2023-02-21 16:47:43 +0900 +0900'>2月 21, 2023</span>

黒斑山へ行きました

長野と群馬の県境あたりにある黒斑山へ登りに来ました。 高峰高原ビジターセンターから登りました。 高峰高原ビジターセンターまではきれいに除雪されており厳冬期の国道438号線よりも断然走行しやすい道でした。 8時頃から登山を開始しました。 登山口はすでに剣山や石鎚山の山頂と同じくらいの標高でさすがという感じでした。 黒斑山は2400mほどの山で四国のどの山よりも標高が高いですが、今日は暖かく快適な登山でした。 むしろ冬山としては暑いほうかもしれないくらいの気温でした。 実際朝の一番寒かった頃時間帯で-3℃下山したときで0℃で山の上でも日向の雪は一部溶けて地面が露出していました。 もともと天気予報的には強風の予報でしたが風もそこまで強くはなく登りやすかったです。 今回は普段登らない山なのでゆっくり歩きました。 車坂峠からトーミーの頭へ行く道は少し急だったりしますが全体的な体力度合い的には剣山と同じくらいだと思います。 クリックで拡大 クリックで拡大 クリックで拡大 クリックで拡大 活動履歴 黒斑山

<span title='2023-02-18 22:26:42 +0900 +0900'>2月 18, 2023</span>

冬期長野旅行

冬期の長野旅行です。 四国から長野へ行こうと考えたとき直通の公共交通機関がないので移動方法に悩むことになります。 公共交通機関だと多分大阪や名古屋、東京経由のいずれかで行くと思います。 たぶん東京まで飛行機で行って飛行機使うのが楽なのだろうか? 今回私は公共交通機関の選択肢を使わずに自家用車で行きました。 理由は色々寄り道がしやすいのと現地でもフレキシブルに予定を組めるからです。 SAが見えるごとに休憩していたのでおおよそ11時間ほどかかりました。 今回は積雪もなく走行しやすかったです。 車で移動すると雪をかぶった山が見えてきてとてもいいかんじでした。 クリックで拡大 クリックで拡大 クリックで拡大

<span title='2023-02-17 22:35:57 +0900 +0900'>2月 17, 2023</span>