takuroooのブログ

勉強したこととか

1リポジトリに複数go.modがある場合どうやって各モジュールに異なるバージョンを付与するか

[追記] 公式ドキュメントに解説が書いてあったので英語読める人はこちらを読んでください。 go.dev 前置き やり方 実験したリポジトリ 前置き 1つのGitHubのリポジトリにgo.modが1つある場合、そのモジュールのバージョン = gitのタグになる。 gitのタグでv1…

CodeBuildのWebhookイベントでPULL_REQUEST_MERGEDを指定するとPRのブランチで処理が開始する

AWS

前置き 本題 PULL_REQUEST_MERGEDでCodeBuildを起動するときPullRequestのブランチでCodeBuildが起動してしまう GitHubのイベントでCodeBuildを起動するときマージされたmainブランチ上で処理をしたい場合どうすればいいか 1. CodeBuildのbuildspecでgit che…

Go go.modのモジュール名がGitHubのリポジトリと一致しないものをimportしようとするとどうなるのか

importできません。 目次 目次 呼び出される側のモジュールを作る 呼び出す側を作る まとめ 呼び出される側のモジュールを作る GitHubでgo-helloworldというリポジトリを作る。 このリポジトリをcloneしてgo mod init helloworldを実行するとgo.modが生成さ…

Pythonのパッケージ管理ツールRyeに関するメモ

Ryeを触ってみたので忘れないようにメモしておく。 github.com 色々触ったときのリポジトリ GitHub - takurooo/rye-sample 目次 目次 インストール方法 プロジェクトの作成 仮想環境の構築と依存パッケージのインストール 仮想環境の有効化 shims下のpython…

Lambdaがエラーレベルのログを出力したらTeamsにメッセージを通知する

AWS

Lambdaがエラーレベルのログを出力したらTeamsに通知する仕組みを作ってみたので関連情報をまとめておく。 目次 目次 構成図 ポイント解説 エラーレベルのログ検出方法 Teamsにメッセージを送信する方法 Teamsのメッセージ仕様 今後の改善でやりたいこと 構…

Prompt Enginnering Guideを読んで気になったことのメモ

目次 目次 概要 プロンプトエンジニアリングとは プロンプトの要素 プロンプトの設計に関する一般的なヒント プロンプトの例 Techniques Zero-shot prompting Few-shot prompting Chain-of-Thought prompting Zero-shot COT prompting まとめ 概要 Prompt En…

Video.js入門

目次 目次 Video.js シンプルなビデオプレーヤーを作る コード説明 クラスでビデオプレーヤーのレイアウトを設定する オプションでビデオプレーヤーの機能を設定する ビデオプレーヤーのコールバックを設定する ビデオプレーヤーを操作する 再生するソースを…

Vue.jsでChatスタイルのWebSocketクライアントを作る

Vue.jsを触ってみたかったので、Chat風のWebSocketクライアントを作ってみた。 目次 目次 作ったもの Chat部分 メッセージ表示部分 メッセージ送受信後に自動でスクロール実装部分 WebSocketサーバー接続部分 画面更新時にVueのテンプレートが表示される問題…

AtCoder Beginner Contest 183

4完だったがB問題に解くのにすごく時間がかかってしまった。 atcoder.jp 目次 目次 B - Billiards C - Travel D - Water Heater B - Billiards X軸への入射角と反射角が必ず等しくなるとき、スタートの座標(Sx,Sy)からゴールの座標(Gx,Gy)にたどり着くにはX…

Pythonのurllibを使ってImageNetから画像をダウンロードする

*この記事は以前Qiitaで書いたものです。 qiita.com 概要 PythonでImageNetから画像をダウンロードする方法を解説する記事。 ImageNetの画像をダウンロードする方法は2つある。 一つはImageNet経由で一括ダウンロードする方法と、もう一つはImageNetが管理…

Random Erasingの動きを見てみる

*この記事は以前Qiitaで書いたものです。 qiita.com 目次 目次 概要 Random Erasingとは アルゴリズム アルゴリズムの流れ RandomErasingのパラメータをいじって結果の変化を可視化する 概要 データ拡張の一つであるRandom Erasingの処理を説明する記事 論…

PyTorch 入力画像と教師画像の両方にランダムなデータ拡張を実行する方法

*この記事は以前Qiitaで書いたものです。 qiita.com 目次 目次 概要 セマンティックセグメンテーションとは ランダムなデータ拡張 課題 解決策1 乱数シードを固定する 解決策2 transforms.RandomCrop.get_params(img, output_size))を使う 概要 DeepLearni…

PyTorch transforms/Dataset/DataLoaderの基本動作を確認する

*この記事は以前Qiitaで書いたものです。 qiita.com 目次 目次 概要 この記事の対象読者 前置き PyTorch Tutorial transforms/Dataset/DataLoaderの役割 transforms transformsを実装するのに必要な要件 実装 使い方 Dataset Datasetを実装するのに必要な要…

PyTorchでValidation Datasetを作る方法

*この記事は以前Qiitaで書いたものです。 qiita.com 目次 目次 概要 課題 解決策1 torch.utils.data.Subset 解決策2 torch.utils.data.random_split Chainerのchainer.datasets.split_dataset_randomについて 参考 概要 PyTorchにはあらかじめ有名なデータ…

Kerasを勉強した後にPyTorchを勉強して躓いたこと

*この記事は以前Qiitaで書いたものです。 qiita.com 目次 目次 概要 この記事の対象読者 はじめに Channel First GPUへの転送 CrossEntropyがSoftmax+CrossEntropyになっている CrossEntropyがone-hot-vectorに対応していない 学習と評価を区別する 概要 De…

Pythonで公約数の列挙

この記事で公約数列挙の仕方が2つあることを学んだのでメモ qiita.com 公約数の列挙は 二つの整数を割り切れる数をループで探す 最大公約数の約数を列挙する の2通りあるらしい。 これをPythonで実装してみる。 目次 目次 1.二つの整数を割り切れる数をルー…

AtCoder Regular Contest 105

Aしか解けなかった... atcoder.jp A - Fourtune Cookies takuroooooo.hatenablog.com この記事で練習したbit全探索を使ってAC 解説読むと等符号の関係(A<=B<=C<=D)からA+D=B+CとA+B+C=Dのにパターンだけを確認すればよいらしい。 提出したコード arr = list(…

Python bit全探索

こちらの記事の「bit全探索」をやってみた。 qiita.com 目次 目次 bit全探索とは ABC061 C - たくさんの数式 問題 解答 ABC079 C - Train Ticket 問題 解答 ABC104 C - All Green 問題 解答 ARC029 A - 高橋君とお肉 問題 解答 ABC002 D - 派閥 問題 解答 bi…

YouTube Live Streaming API でライブ配信する

YouTube Live Streaming APIを触ってみたのでその覚え書き 目次 目次 YouTube Live Streaming APIとは とりあえずAPIを触ってみる APIを使う前にやること 事前準備 APIキーとOAuth クライアントID クライアントライブラリのインストール リソースについて Li…

Go JSONをデコードする

jsonパッケージのDecoderを使うとjsonデータを簡単にパースできる。 golang.org 目次 目次 変数名で対応付ける 構造体タグ名で対応付ける 一致しないkeyがあったときにエラーを返す 変数名で対応付ける package main import ( "encoding/json" "fmt" "string…

Go シグナルをチャネルで受け取る

golang.org signal.Notifyを使うとチャネルでシグナルを受け取ることができる。 package main import ( "fmt" "os" "os/signal" "syscall" ) func main() { sigCh := make(chan os.Signal) signal.Notify(sigCh, syscall.SIGINT) s := <-sigCh fmt.Printf("%…

Go path/filepathでファイルパスを操作する

パス名の操作に便利なfilepathを触って見たのでまとめていく。 golang.org 目次 目次 filepath.Abs filepath.Base filepath.Clean filepath.Dir filepath.EvalSymlinks filepath.Ext filepath.Glob filepath.Join filepath.Match filepath.Rel filepath.Spli…

Go strings/Reader

strings.Readerを触ってみた。 golang.org 目次 目次 NewReader Read ReadAt ReadByte Reset Len/Size Seek NewReader strings.Readerのポインタを生成する。 reader := strings.NewReader("abcdef") fmt.Printf("%T %v\n", reader, reader) // *strings.Rea…

Video.jsでHLS/MPEG-DASH対応Playerを作る

JavaScriptのVideo.jsを使うとHLSとMPEG-DASHに対応したplayerが簡単に作れそうだったので作ってみた。 今回使ったVideo.jsの基本機能をまとめていく。 github.com 目次 目次 作ったplayer Video.js CDN Player生成 Playerオブジェクト生成 Playerに再生する…

Go stringsで文字列を操作する

Goの文字列操作を勉強したのでそのまとめ。 目次 目次 大文字小文字変換 タイトルケースに変換 文字列を比較 文字列の中に特定の文字列が存在するか 指定した文字数をカウント 空白文字でsplit 先頭/終端文字列の一致確認 文字列のインデックスを取得 slice…

GoのArrayとSliceの違い

先週からGoを勉強し始めた。 blog.golang.org ArrayとSliceがいまいちわからなかったが、この記事を読んでArrayとSliceの違いを学んだので自分なりにまとめてみる。 目次 目次 ArrayとSliceの違い(記事を読む前の認識) Array Array型とはなにか Array型の…

Qt for Python Exif Viewer

QTreeWidgetとQTextEditとQSplitterとQStackedWidgetを使ってExifViewerを作った。 github.com 以前作ったViewerはQTreeWidgetメインでGUIを作成したが、今回はQSplitterとQStackedWidgetを使ってページが切り替わるようなUIにした。 自作ExifParser UI以外…

QStackedWidgetの基本的なこと

Qt for Python(PySide2)のQStackedWidgetについて勉強したのでまとめていく。 目次 目次 QStackedWidgetとは StackedWidgetを表示する StackedWidgetに登録されたwidgetをインデックスで指定して表示する StackedWidgetに登録されたwidgetをwidgetのインスタ…

QSplitterの基本的なこと

Qt for Python(PySide2)のQSplitterについて勉強したのでまとめていく。 QSplitterを使うと複数のwidgetの間にサイズを調整できるスプリッターを置くことができる。 目次 目次 SplitterでTextEditを水平に2つ表示する SplitterでTextEditを垂直に2つ表示する…

QTextEditの基本的なこと

前回に引き続きQt for Python(PySide2)のQTextEditについて勉強したのでまとめていく。 QTextEditを使うとテキストを入力できるフォームを作成することができる。 目次 目次 TextEditを表示する TextEditに文字をを表示する 編集禁止にする 文字の色を変える…