nakaoka3の技術ブログ

2023年中に52本なにか書きます

DeepLearning.AIのLangChainショートコースを受講した

DeepLearning.AIのLangChainのショートコースを受講した。ジムで走りながら動画をみた見たので、まだ実際にLangChainを使ったコードは書いていない。しかしLangChainが何であるのか、その概要を掴めてよかった。 www.deeplearning.ai LangChainとはLLMを使う…

今週は久しぶりにAndroidアプリの開発をした

今週はAndroidアプリの開発をした。久しぶりだったからだいぶ忘れていたけど、少しずつ思い出しながらやっている。 新規アプリではなく少し歴史のあるアプリの機能追加だ。Javaを書くのも久しぶりなので懐かしい。 RxJavaとRealm を使っているアプリなので、…

ChatGPTを使ってMarkdownをはてな記法に変換しようとしたが結構難しかった

ChatGPTを使って、Markdownをはてな記法に変換しようとしたが結構難しかった。 1つのプロンプトで正しく変換できなかったので、HTMLに変換するプロンプトを書いて、HTMLをはてな記法に変換するように指示をしたり、試行錯誤を重ねてようやくそれらしい変換…

Elastic Stack実践ガイド[Elasticsearch/Kibana編] を読んだ

もしクエリの結果が期待した通りでなかった場合には、Analyzerがどのようにテキストを処理しているのか、一度確認することをお勧めします。 (Elastic Stack実践ガイド[Elasticsearch/Kibana編] Kindle版, p176) Elasticsearchを使った検索の問題にたまたま遭…

形態素解析について調べた はじめての自然言語処理を読んだ

ElasticSearchを触っていて、形態素解析について基本的なことを知りたかったので、『はじめての自然言語処理』を読んだ。形態素解析については3章に書かれている。基本的なことがまとまっていてよかった。 初心者向けの本なので、以下のような基本的なことか…

PythonのNetworkXとMatplotlibを使って重み付きグラフを可視化する

PythonのネットワークグラフライブラリのNetworkXと可視化ライブラリのMatplotlibを使うことで、Pythonで簡単に重み付きグラフを可視化できます。具体的なコードとChatGPTとWolframプラグインを利用して作成したサンプルデータを使って、その方法を説明しま…

Go言語の型 構造的型付けと名前的型付け

最近 Go言語をよく触っていたので、Goの型について調べたことをまとめます。 Goのインターフェイス Goの インターフェイスは、構造的型付け structural typing の特性を持っています。 Goのインターフェイスはメソッドのシグネチャの集まりです。 // M() と…

運転免許更新のオンライン講習を受講した

運転免許更新のオンライン講習を受講した。便利で良かった。 本モデル事業は、免許証の更新をされる優良運転者の利便性の向上等を図るため、北海道、千葉県、京都府及び山口県で試行的に行うものです。 優良運転者の免許証の更新手続については、更新申請の…

Obsidianの最近開いたメモをターミナルでタイムラインみたいに表示したい

Twitterにつぶやくような感覚でObsidianにメモをためているので、タイムラインのような感じで最近書いたメモをターミナルからざっと連結して眺められると便利だろうなと考えた。そこで以下のようなシェルスクリプトを使ってターミナルから確認できるようにし…

glowでCLIでもMarkdownをきれいにレンダリングして表示したい

MarkdownファイルをレンダリングするCLIツール glow が便利でした。Markdownをカラフルにレンダリングして表示する事ができます。日常的にメモをMarkdownで書いているので、CLIから参照するときに cat のかわりに glow を使うと視認性が上がって快適でした。…

Goのスライスと配列

Go 1.20 のリリースノートを眺めました。Go 1.20 ではスライスから配列への変換が可能になったようです。 https://go.dev/doc/go1.20 Go 1.17 added conversions from slice to an array pointer. Go 1.20 extends this to allow conversions from a slice t…

mysqldump 5.7.34 で mysqldump --single-transaction したきにハマった

mysqldump(5.7.42)でmysqldump --single-transaction をしたら Couldn't execute 'FLUSH TABLES WITH READ LOCK':というエラーがでた。 mysqldumpのバージョンを5.7.34にして同じように実行したら成功した。 brew install mysql@5.7 でインストールした mysq…

GORM で論理削除済みのレコードを取得するにはUnscopedメソッドをつける

Go言語でGORMというORMライブラリを使っています。GORM で論理削除済みのレコードを取得するには Unsocpedメソッドを使います。実行されるSQLを確認するには Debug メソッドを使います。 GORMとは GORMとは、Go言語のORM(Object Relational Mapping)ライブラ…

Goのブランク演算子 blank identifier (`_`)

ペアプロをしていて、雑談的に「そういえばGoのアンダースコア(_)の変数って、慣習的に _にしてるだけなんでしたっけ、特別なものなんでしたっけ」ということを話しました。結論から言うとGoの _ はblank identifier (ブランク識別子) というもので、普通の…

ペアプロするときに GitHub Copilot を使っているとちょっと気恥ずかしい

会社でもGitHub Copilotの使用が許可されているので、去年からVSCodeでコードを書くときにはGitHub Copilotを使ってコードを書いている。 めちゃくちゃ便利で、コメントにやりたいことを書いて、tab キーをポンポン押すと、ほぼ正しいコードが追加される。 …

Go言語のコードを読んだり書いたりしてる感想 名前が短い コード生成

サーバーサイドのプログラミング言語としてPerlを使っていましたが、最近Go言語を使い始めました。そのざっくりとした感想です。命名の慣習とコード生成はGo言語らしいと思いました。 変数名やパッケージ名が短い Go言語では短い変数名やパッケージ名が使わ…

YAPC::Kyoto 2023 参加 感想

YAPC::Kyoto 2023に参加しました。Perlはここ数年仕事で使っているので初めて参加してみました。Japan Perl Associationが主催するカンファレンスですが、Perl以外の話題もたくさんあり刺激になりました。 yapcjapan.org デプロイの歴史についての話がありま…

『プログラマー脳 ~優れたプログラマーになるための認知科学に基づくアプローチ』を読んだ

『プログラマー脳 ~優れたプログラマーになるための認知科学に基づくアプローチ』という本を読みました。 www.shuwasystem.co.jp 自分なりにまとめると、この本はコードを読むという行為についての本です。これまでに「コードが読みにくい」と思った経験が…

AIが優れたコードを書けるようになっても、コードを読み書きできる人間であり続けたい

昨日OpenAIがGPT-4を発表した。GPT-4はテキストと画像を入力に受け取り、テキストを出力する機械学習モデルだ。テーマを与えて俳句を作ってといえば俳句出力し、コードを書いてといえば指示通りのコードを出力する。GPT-3.5を使ったChatGPTも驚くほど高機能…

『Go言語プログラミングエッセンス』は最新ベストプラクティスがまとまっていてGo初心者によさそう

今月からGo言語を仕事で触り始めました。Go言語についての知識不足が不安なので、『Go言語プログラミングエッセンス』という先日発売された書籍を読んでいます。自分のようなGo初心者にちょうどいい、かつ実用的な情報がまとまっている本でした。 gihyo.jp …

SlackにChatGPTをつないで遊んでみた

ChatGPTのAPIを使用してSlackのチャットボットを作成してみました。実用的な質問よりも独り言をつぶやいて反応をもらうような使い方が面白いと思いました。Slack App、Cloud Functions、ChatGPT APIを組み合わせて実装しています。 ChatGPTのAPIが公開された…

Androidデバイスのログを見る方法

adb logcat というツールを使うことで Android の実機のログを見ることができます。次のようなコマンドをPCで実行することで、USBケーブルでつないだAndroidデバイスのエラーログを見る事ができます。 # エラーログを見る $ adb logcat '*:E' adb (Android D…

最短時間で読めるように、認知負荷が高すぎないコードを書く( 『リーダブルコード』『プログラマー脳』)

コードは他の人が最短時間で理解できるように書かなくてはいけない。 『リーダブルコード』 p3 今週、機能開発をしているプロダクトのコードを読んでいて、理解が難しく時間がかかってしまい、頭を悩ませていました。 何かヒントになるものはないかと『リー…

新しい Bing 検索のチャット機能を使ってみた

新しいBing検索のチャット機能を使った。応答に出典がある分、ChatGPTよりも便利だった。Google検索の代わりに、日常的に使えそう。Googleは今後大変そう。 www.bing.com ChatGPTみたいな、質問に対して自然言語で応答するチャット機能が、MicrosoftのBing検…

VS Code の Perl Navigator という拡張機能/Language Serverがよかった

最近 VSCodeのPerl Navigatorという拡張機能を使い始めました。1 これまで使っていたPerlの拡張機能よりもよさそうで、今 VS Code で Perl 書くなら、これを入れておくのがよさそうです。 marketplace.visualstudio.com Perl Navigator は LSP(Language Serv…

Kyoto.JS 18 面白かったです

Kyoto.JS 18 に参加して、発表を聞いてきました。職場から地下鉄2駅で近いということもあり、現地で聞いて来ました。興味深い話を聞けて刺激になりました。webフロントエンドもいろんな話題があって面白い! Kyoto.js 18 - connpass 動画も公開されてます。 …

新チームに異動したら、とりあえずPull Request を作るのがよさそう

新しいチームに入ったとき、最初に軽めのタスクをもらえると、Pull Request を作ってCIのテストが落ちることで、開発に必要なことが色々と知れるので便利です。 会社で異動があって、2/1付で別のチームに異動になりました。 軽めのタスクをもらって、とりあ…

ミーティングの時間になると勝手に議事録を開いてほしい

これははてなエンジニアアドベントカレンダー2022 38日目の記事です。 昨日は id:yutailang0119 さんの Programmatic NavigationStack 備考録 - がんばってなんか書くでした。 MeetingBar.appとAppleScriptを使って議事録用のwebページを自動で開く方法を解…

GitHubでマージしたPull RequestのタイトルとURLを取得する方法

GitHubのあるリポジトリに対して自分がマージしたPull RequestのタイトルとURLを取得することができます。以下のようにghコマンドを使用することで実現できます。 $ gh pl \ -S "is:pr is:merged author:@me merged:2022-01-01..2023-12-31" --json "url,tit…