Symdon Blog
minetest
MinetestにModをインストールする
- MinetestサーバーにModを入れる
- 3D Armor, Forgotten Monsters, 3D Armor Flyswim, Throwing Redoをインストールする。
所要時間: 約 8分, 作成: 2022/10/27, 更新: 2024/3/25
transformers[WIP]
音声から文字を起こす
様々なAI関連のサービスが増えたが、情報漏洩などのセキュリティリスクの問題から会社の稟議が通らないなど、サービスを使用できない事もある。しかしHugging Faceには既に様々なモデルやデータセットが公開されているため、ローカルで動作する自分用のツールを開発する事もそれ程難しくはないはずだ。元々は日本語話者同士の会議の議事録を取る事を目的としていて、マイク音声とデスクトップ音声の両方をFFmpeg ...
所要時間: 約 2分, 作成: 2024/3/23, 更新: 2024/3/23
macos コード署名
macOSにインストールしたプログラムをコード署名する
macOSでgdbを使うとすると以下のエラーが出ることがある。 Starting program: /srv/aee369d717aea571e8360afd3741432d/main.out Unable to find Mach task port for process-id 18347: (os/kern) failure (0x5). (please check gdb is codesigned - see taskgated(8)) これはgdbがコード署名されてないためにエラーが発生している。codesignとはソフトウェアに対する署名に関連する操作を行うコマンドで、macOSではセキュリティ上の理由から署名されていないソフトウェアによるデバッグ操作(プロセスへのアタッチ)を禁止している。 野良ビルドされたプログラムを配 ...
所要時間: 約 4分, 作成: 2021/1/8, 更新: 2024/3/23
emacs macos mic tcc ffmpeg
macOSにインストールしたEmacsからマイクにアクセスする
普段macOSにEmacsをインストールし、それを起点にして様々な作業をしている。文書の編集作業もそうだけれど、シェルでの作業であったり、データベースの操作であったり、メールやタスクの管理であったり、作業の種類は多岐に渡る。 オーディオデバイスからの入力を、FFmpegを用いて録音しようとした所、オーディオデバイスからの入力を上手く受け取れず、空の音声ファイルが作られる事象に遭遇した。他の環境ではど ...
所要時間: 約 5分, 作成: 2024/3/22, 更新: 2024/3/22
png[WIP]
小さいPNGを手で作りながらPNGについて考える
- PNGを手で作りながら仕様を学んだ。
- 各種チャンクのデータをどのように生成すればよいか分かった。
- CRCの計算には自分で計算するのは大変だったためPythonのbinasciiを使用した。
所要時間: 約 5分, 作成: 2023/1/14, 更新: 2024/3/20
fargate aws ecs exec
AWS ECS Execを使用してFargate上のコンテナとのセッションを開始する
AWS ECS Execがを使用してFargate上のコンテナとのセッションを開始する。同様ことができる従来のSSMセッションマネージャーとの比較を行う。タイムアウトでセッションを閉じないようにするためのEmacs Lispを書く。
所要時間: 約 6分, 作成: 2021/4/1, 更新: 2024/3/19
comment
以前入れていたけれど使わなくなったパッケージの覚え書き
メモしておく。 (el-get-bundle elnode :type "git" :url "[email protected]:collective-el/elnode.git") (el-get-bundle foreman-mode :url "[email protected]:collective-el/foreman-mode.git" :type "git") (el-get-bundle gist:05de904cd0c320733cae:org-file-table :type "git") (el-get-bundle gist:10985431:go-template-mode :type "git") (el-get-bundle gist:beb8e1944af406c3fb4f74b6e0e3b5fe:require-to-install-executable :type "git") (el-get-bundle gist:d451221dc2a280b7e35d:kpt.el :type "git")
所要時間: 約 1分, 作成: 2024/3/14, 更新: 2024/3/14
emacs macos
macOS用のユーティリティ
macOS関連のコマンドをどうしても覚えられない。たいていはEmacsから起動するため、Emacsから呼び出しやすいようなユーティリティを実装する。今のところ、以下の機能を提供している。 macOSのアプリケーションをEmacsから起動する。 オーディオデバイスの一覧を表示する。 アプリケーションのバンドルIDを表示する。 マイクの音声をffmpegで録音する ;;; macos --- macOS Utility. -*- lexical-binding: t -*- ;; Copyright (C) 2024 TakesxiSximada ;; Author: TakesxiSximada <[email protected]> ;; Maintainer: TakesxiSximada <[email protected]> ;; ...
所要時間: 約 2分, 作成: 2024/3/14, 更新: 2024/3/14
emacs lisp aws
AWS CLIのEmacs用ユーティリティ aws.el を作る
AWS CLIのEmacs用ユーティリティを作る事にした。このライブラリはAWS CLIをスケルトンファイルを用いて、Emacsから実行する機能を提供する。ここではこのライブラリが提供する各機能を説明する。 変数 aws-cli-command AWS CLIとして実行するコマンドを設定する。通常は aws を用いる。例えばAWSのダミーサーバー群であるlocalstackなどに対して実行する場合 --endpoint-url を指定しなければならない。そのように値を変更することで ...
所要時間: 約 4分, 作成: 2022/12/3, 更新: 2024/3/14
emacs macos pmset clamshell
macOSの電源操作をpmsetで行う
macOS は pmset というコマンドを提供している。このコマンドは macOS の電源管理を行う。僕はmacをクラムシェルモード1で使用する事がある。そういう時はコマンドの使い方をだいたい忘れているため、その都度 pmset のサブコマンドの意味を調べて実行していた。そのコマンドをまとめる。 MacBookを閉じてもスリープさせない スリープさせないようにする(つまり閉じてもスリープしない) sudo pmset -a disablesleep 1 スリープさせないようにしない(つまり閉じ ...
所要時間: 約 2分, 作成: 2023/4/24, 更新: 2024/3/14
emacs http restclient network orgmode babel
EmacsのHTTPクライアント事情について考える
Emacs にはHTTPリクエストを送信する方法はいくつかある。それぞれ目的や想定している状況が異なる。これを使えばよいというものは本来無いので、自分の頭で考えて選択していく事にする。 ダミーサーバー HTTPクライアントを使うには、当然リクエストを送信する先のサーバーが必要になる。今回は yay と返すだけのシンプルなサーバーを Python で実装した。 from socket import socket soc = socket() soc.bind(("localhost", 8000)) try: soc.listen(1) while True: (conn, addr) = soc.accept() print(conn, addr) print(conn.recv(10000)) conn.send(b"HTTP/1.1 200 OK\r\nContent-Length: 3\r\n\r\nyay") conn.close() finally: soc.close() このサーバーを起動して ...
所要時間: 約 9分, 作成: 2022/5/22, 更新: 2024/3/10
emacs sql explain rdbms
Emacsでリレーショナルデータベースを扱う
Emacsに梱包されている lisp/progmodes/sql.el は、リレーショナルデータベースを扱うための機能を提供している。それらの殆どは独立して動くのではなく、リレーショナルデータベースへアクセスするクライアント用のコマンドをサブプロセスとして起動し、そのサブプロセスとやりとりする事で、リレーショナルデータベスを操作する。今回は、それらの機能について見ていく事にする。 サーポートしているデータベース Emacsは様々なRDBMSに対 ...
所要時間: 約 6分, 作成: 2024/2/9, 更新: 2024/3/7
comment lisp
生成系AIのAPIを使ってクロスレビューしてみている
OpenAI APIとGoogle Gemini APIで、互いの指摘をクロスレビューしているけれど、Emaacsの指摘についてはOpenAI APIの方が正確なようにも思う。まあこのあたりは、使っているモデルが何かにもよるので、暫く試しながらチューニングしていきたい。 OpenAI API https://blog.symdon.info/emacs/1708258091/ Google Gemini API https://blog.symdon.info/posts/1709362485/ DeepL https://blog.symdon.info/posts/1708668537/ ;;; ai --- Generative AI SaaS Utility -*- lexical-binding: t -*- ;; Copyright (C) 2024 TakesxiSximada ;; Author: TakesxiSximada <[email protected]> ;; Maintainer: TakesxiSximada <[email protected]> ;; Repository: ;; Version: 1 ;; Package-Version: 20240301.0000 ;; Package-Requires: ((emacs "28.0") ;; Date: 2024-03-03 ;; This file is not part of Emacs. ;; This program is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License ...
所要時間: 約 1分, 作成: 2024/3/3, 更新: 2024/3/3
emacs google gemini api
Google GeminiをAPI経由で使う
Googleの生成系AI「Gemini」をAPI経由で使用する事にする。 他の実装済みのライブラリを検討する EmacsからGeminiを使用するための拡張機能は、自分で実装しなくても既に十分な実装がある。簡単な調査の結果、次のライブラリが適していそうだ。 https://github.com/karthink/gptel gptelは複数の生成系AIのサービスに対応している。特に理由がない場合は、これを使うと良さそうだ。 なぜgptelや他の実装済みの拡張を使わないか ...
所要時間: 約 8分, 作成: 2024/3/2, 更新: 2024/3/2
comment
DeepL APIを使う
Google翻訳が出てきた時にはこんな便利なものがあるのかと思ったが、不自然な文章に翻訳されるといった事もしばしばあった。そこから時が経ち、DeepLが出てきた。とても自然な文章に翻訳されて凄いと関心した。その頃にはGoogle翻訳も進化していて、不自然な文章は、ほとんど出力されなくなっていた。最近はChatGPTをはじめとした生成系AIのサービスの方が、翻訳の精度も高いような気もする。「翻訳して ...
所要時間: 約 4分, 作成: 2024/2/23, 更新: 2024/3/2
comment
OpenAI APIに追加の支払いをした。
所要時間: 約 1分, 作成: 2024/2/28, 更新: 2024/2/28
emacs org org-agenda task
どんなふうにタスクを管理すれば効率を上げられるのだろう?
仕事やプライベートのタスクのほぼ全てを書き出して管理している。そうすると一人の社会人が関わるタスクがいかに多いかが分かる。それらのタスクは全て処理される訳ではないけれど、書く事で記録が残り後で見返す事ができる。それと引き換えにして、タスクの管理コストが増える。そのコストを下げるために、Emacsを使っている。Emacsにはorg-modeというドキュメントシステムがある。org-modeはドキュメ ...
所要時間: 約 3分, 作成: 2024/1/15, 更新: 2024/2/28
comment[WIP]
edを使う
開始 ed FILE.txt 終了 q で終了する。 q 挿入 a で挿入を開始し、 . で終了する。 a text1 text2 text3 . 保存 ファイル名を指定してedを開始した場合は w で保存する。 w ファイル名を指定せずedを開始した場合は w FILE.txt のようにファイル名を指定する。 w FILE.txt ファイルの中身を全て削除する 1,$d w q
所要時間: 約 1分, 作成: 2024/2/28, 更新: 2024/2/28
comment
plist-storeに入れていたデータがなぜか消えてしまった
所要時間: 約 1分, 作成: 2024/2/27, 更新: 2024/2/27
emacs lisp
雑多で中途半端なEmacs Lisp集
諸事情によって、というより途中で力尽きて、完成する事のないEmacs Lispをここに集める事にした。 (defun netcat (host port) "ncを実行する" (interactive (list (read-from-minibuffer "Host: ") (read-from-minibuffer "Port: "))) (make-process :name "*NETCAT*" :buffer "*NETCAT*" :command `("/usr/bin/nc" ,host ,port) :sentinel (lambda (process event) (when (not (process-live-p process)) (message event) (print (process-exit-status process)))))) (defun curl (url method) "curlを実行する" (interactive (list (read-from-minibuffer "URL: ") (completing-read "Method: " '("GET" "POST" "PUT" "PATCH" "DELETE" "OPTIONS")))) (make-process :name "*cURL*" :buffer "*cURL*" :command `("/usr/bin/curl" ,url "-X" ,method) :sentinel (lambda (process event) (when (not (process-live-p process)) (message event) (print (process-exit-status process)))))) (defun process-send-string-from-minibuffer (process string) "ミニバッファから入力したデータをプロセスに送信する" ...
所要時間: 約 1分, 作成: 2024/2/22, 更新: 2024/2/26
emacs plstore
Emacsで取扱注意のデータを安全に扱うためにplstoreを使う
今回はEmacsで取扱注意のデータを安全に扱う、保管する方法について考える事にする。自前実装を辞め、 plstore を使う方法について調べる。 取扱注意のデータの扱いは悩ましい ソフトウェアの開発の作業をしていると、取り扱いに注意が必要なデータに触れる事がある。 個人情報となるような氏名や住所もあれば、WebサービスのIDやパスワード、会社の内部情報など、一言で 取り扱いに注意が必要なデータ と言っても、様々な種類や危険 ...
所要時間: 約 5分, 作成: 2024/2/25, 更新: 2024/2/25
gmail emacs
Gmailについて考える
Eメールを使用する時、メールサーバーを自前で運用している猛者達もいるだろうけど、多くの人は、Gmail、Outlookなどのサービスを使っているだろう。僕は、主にGmailを使っている。Webブラウザでhttps://mail.google.comにアクセスしログインすれば、メールの閲覧や送信ができる。殆どそれで問題はない。だけれど僕はGmailもEmacsから使いたい。そんな事を考えていたけれど ...
所要時間: 約 4分, 作成: 2022/6/7, 更新: 2024/2/24
openai chatgpt emacs sever-sent-envent
EmacsからOpenAI APIをつかう
「OpenAI APIを使う」でチャットの機能のためのAPIの使い方について調べた。結果を一括で取得する方法と、 Server Sent Events を用いて結果を徐々に受け取るストリーミングのような方法を調べた。 Server Sent Events を受け取るためにはリクエストのBODYのパラメータ stream に true を設定する必要がある。 今回はこの方法を使い、ChatGPTと似たような使用感になるように、Emacsを拡張する事にした。 openai-chat-question でチャットを開始する時に、前置きの部 ...
所要時間: 約 2分, 作成: 2024/2/18, 更新: 2024/2/24
emacs ssh askpass[WIP]
SSH_ASKPASSを取り扱う方法を考える
Emacsから ssh-add - を使い標準入力に鍵を渡そうとした時、その鍵にパスフレーズが設定されている場合、パスフレーズを渡す手段が必要になる。tty経由で渡したかったけれど、上手く渡す事ができなかったため、仕方がないからファイル経由で渡す事にした。 ただしパスフレーズは重要な値だから、暗号化して保存する。 askpass.el ;;; askpass --- askpass utility -*- lexical-binding: t -*- ;; Copyright (C) 2023 TakesxiSximada ;; Author: TakesxiSximada <[email protected]> ;; Maintainer: TakesxiSximada <[email protected]> ;; Repository: ;; Version: 1 ;; Package-Version: 20240224.0000 ;; Package-Requires: ((emacs "28.0") ;; Date: 2024-02-24 ;; This file is part of askpass.el. ;; This program is free software: you can ...
所要時間: 約 2分, 作成: 2024/2/24, 更新: 2024/2/24
emacs
子プロセスに定期的にリターンキーを送るEmacs Lisp
プロセスに定期的にリターンキーを送るEmacs Lispを、自分の都合上必要だったので書いた。こういう事が雑に出来る所がEmacs Lispの好きな所でもある。今後という意味では何の役にも立たなそうだけれど、一応残しておく。 (setq my-vterm-proc (get-buffer-process (get-buffer "ここにバッファ名を入れる"))) (defun send-custom-return-key () (process-send-string my-vterm-proc " ")) (setq my-timer (run-with-timer 180 t 'send-custom-return-key))
所要時間: 約 1分, 作成: 2024/2/22, 更新: 2024/2/22
emacs spacemacs doomemacs
Spacemacs/Doom Emacsを飲み込む
Emacsには良く設定された設定群に固有の名前を付けて配布するということがある。 通常それらはディストリビューションやスターターキットと呼ばれるらしい。 ここではそれらをプリセットと呼ぶことにする。 例えばSpacemacsやDoom Emacsが該当する。他にも実はいくつかある。 他にどのようなものがあるかについてはawesome-emacsのStarter Kitの項目を参照すると、 いろいろと紹介されてい ...
所要時間: 約 5分, 作成: 2022/2/20, 更新: 2024/2/22
comment
もしかしてAWS CodeCommitのために紐付けるsshの公開鍵に ed25519 の鍵は指定できない?バリデーションエラーになる。
所要時間: 約 1分, 作成: 2024/2/22, 更新: 2024/2/22
comment
ssh_config (~/.ssh/config)の IdentityFile には公開鍵ファイルも指定できる。例えば秘密鍵を暗号化しておく場合、暗号化されたファイルは IdentityFile には指定できない。そのため ssh-add を使って秘密鍵を ssh-agent に登録して使用する事になる。登録した鍵が複数あった場合、どの鍵を使うのかを指定しなければならないけれど、秘密鍵ファイルは暗号化されているし指定できる訳ではない。 IdentityFile には公開鍵ファイルを指定できるため、どのホストではどの鍵を使うかと ...
所要時間: 約 1分, 作成: 2024/2/22, 更新: 2024/2/22
aws vpc acl
AWS VPCのネットワークACLに許可(Allow)と拒否(Deny)のルールが共存する理由
AWSのVPCには、 Network ACL という機能があり、通過する通信に対して、許可または拒否を設定できる。見ると以下のように全ての通信に対して、許可(Allow)と拒否(Deny)の両方を設定している事がある。特に珍しいものでもなく、良く見る設定だろう。これはどういう意味になるのか確認する事にした。 インバウンド Rule number Type Protocol Port range 送信元 Allow/Deny 1 All traffic All All 0.0.0.0/0 Allow * All traffic All All 0.0.0.0/0 Deny アウトバウンド Rule number Type Protocol Port range 宛先 Allow/Deny 2 All traffic All All 0.0.0.0/0 Allow * All traffic All ...
所要時間: 約 1分, 作成: 2024/2/21, 更新: 2024/2/21
comment
ついに秘書を導入した。
所要時間: 約 1分, 作成: 2024/2/21, 更新: 2024/2/21
comment
仕事とかEmacsの整備とかやってたら、土日が消滅した。AWSのネットワークまわりについて、実装したり調べたりといった作業、OpenAI APIについての調査と、それを利用する機能の実装などをやっていた。両方とも、とても多くの時間を消費した。 最近このままで本当に良いのかという気分になる。こういう生活が1、2年続くと、心がおかしくなるのは、実体験で分かっているので気を付けないといけない。今日はじゅうぶ ...
所要時間: 約 1分, 作成: 2024/2/18, 更新: 2024/2/18
chatpgt openai
OpenAI APIを使う
最近、たくさんの人がChatGPTをはじめとした、生成系AIのSaaSを利用している。しかしその機能は多岐に渡り、また使い方も様々だ。例えばChatGPTを使用する場合、素直にWeb UIを使用する方法がある。他にもOpenAI APIを利用する方法や、Webkitを用いてWeb UI全体を組み込むことも検討できるだろう。今回はOpenAI APIを使って、ChatGPTの機能を試す事にする。 実は以前、E ...
所要時間: 約 21分, 作成: 2023/8/5, 更新: 2024/2/18
comment
最後ぐらいは、豪遊してもいいと思う。残しておいても意味ないからな。
所要時間: 約 1分, 作成: 2024/2/15, 更新: 2024/2/15
mysql python pymysql
PyMySQLでバルクINSERTする
MySQLでバルクINSERTしたい場合 cursor.executemany() を使う。 テスト用のテーブルを作成する。 show create table foo; +-------+-----------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +-------+-----------------------------------------------------------------------------------------------------------------+ | foo | CREATE TABLE `foo` ( `id` int DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci | +-------+-----------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) cursor.executemany() を呼び出すコードを実装する。 main.py import pymysql from pymysql.cursors import DictCursor MYSQL_HOST = "localhost" MYSQL_PORT = 3306 MYSQL_USER = "" MYSQL_PASSWORD = "" MYSQL_DATABASE = "testing" mysql_conn = pymysql.connect( host=MYSQL_HOST, port=MYSQL_PORT, user=MYSQL_USER, password=MYSQL_PASSWORD, db=MYSQL_DATABASE, charset="utf8mb4", use_unicode="true", cursorclass=DictCursor, ) try: with mysql_conn.cursor() as cursor: res = cursor.executemany( """ INSERT INTO foo ( id ) VALUES (%s) """, [ [1], [2], [3], [4], ] ) mysql_conn.commit() finally: mysql_conn.close() コードを実行する。 python main.py 結果を確認する。 mysql> SELECT * FROM foo; SELECT * FROM foo; +------+ | id | +------+ | 1 | | 2 | | 3 | | 4 | +------+ 4 ...
所要時間: 約 1分, 作成: 2024/2/15, 更新: 2024/2/15
comment
何度も読み返したくなるWebの文章
たくさんWeb上の文章を読んでいると、その中には何度も読みかえしたくなるような、素晴らしい文章に出会うことがある。心に訴えかけ、感情を揺さぶられるような表現力のある文章であったり、学ぶ事の多い文章であったりといったような文章がある。それらの文章の素晴しさには、様々な理由がある。 時間が経つと、いつかどこかで読んだその文章を、どこで読んだのか思い出せなくなる。そんなもどかしい思いをしないために、読み返 ...
所要時間: 約 3分, 作成: 2022/5/7, 更新: 2024/2/12
comment
システムは監視するのに、自分自身は監視しないのはおかしい。まずは、死活監視から始めたほうがいいし、パフォーマンスもモニタリングした方がいい。
所要時間: 約 1分, 作成: 2024/2/12, 更新: 2024/2/12
task
目標未達の原因を探る
しばらく前から知人3名でチームを組んで活動している。皆それぞれに片手間だったり、遊び半分だったりして、本気度がとてつもなく低い。動画の制作本数も少ないし、クオリティも低い。クオリティの話で言えば、ほとんど編集もせず撮影した素材をそのままアップロードしているに過ぎないし、タイトルも適当に付けてたり、サムネイルも自動で付くものを使っている。グループの概要に書いている説明も、本当に適当な文章になっている ...
所要時間: 約 4分, 作成: 2024/2/10, 更新: 2024/2/10
comment
諸事情により、スマホアプリの開発講座をしばらく前から作っている。この手の作業は、コンテンツ部分については今までやった事あるけれど、コンテンツ以外の部分については他の人がやってくれる事が多かったから、分からない事だらけだ。自分にできる事が本当に少ないけれど、今ある力を尽そうと思う。今までもそうやってやってきたから、形にする事はできるはず。
所要時間: 約 1分, 作成: 2024/2/10, 更新: 2024/2/10
emacs lisp
シングルファイルのEmacs Lispをダウンロードして読み込む
Emacsを使っていると小さなEmacs Lispがどんどん増えていく。通常は ~/.emacs.d/init.el に記述したり、 ~/.emacs.d にディレクトリ(例: ~/.emacs.d/lisp )を作り、そのパスをload-pathに追加する事で、利用できるようにする事が多い。 そこそこ育ったEmacs LispはMELPAに登録し、そこからインストールして使用するという方法もある。その方法は、多くの人が使うものであれば望ましいけれど、自分だけの要求を満すだけのLispであれば ...
所要時間: 約 4分, 作成: 2023/10/5, 更新: 2024/2/10
krita
縁のある文字をkritaで書く!
動画のサムネイルなどで、縁のある文字が使われているのを、よく目にする。一般的な画像編集のソフトウェアには、「縁」なる機能が付いており、縁ありの文字をすぐに挿入できる。きっとkritaにも同じような機能があるはずだとは思うけれど、見つける事は出来なかった。 その代りにkritaの文字ツールには、文字の挿入にSVGを指定できる。どこにあるか分からないソフトウェアの機能を探すよりも、直接SVGを指定する方 ...
所要時間: 約 1分, 作成: 2024/1/8, 更新: 2024/2/9
emacs pandoc lua
マークダウン等のマークアップ言語で書いた文章を読み上げ機能でより良く推敲する
最近は特に書籍に関連する仕事をさせて頂く事が多くなってきた。その中で記述した文書のチェックをする時、文を黙読するだけではなく音声読み上げ機能を使って正しい文章になっているかを確認している。モニターやスマホを使えない場所でも作業ができる為、とても効率的なチェック方法だ。また、おかしな表記になっている箇所は、おかしく読み上げてくれる為、問題のある箇所を発見しやすい。この方法をやっていない人はぜひ試して ...
所要時間: 約 8分, 作成: 2023/6/17, 更新: 2024/2/9
pdf emacs pdf-tools poppler
PDFの注釈に対する返信注釈をEmacsで挿入する
EmacsはPDFの表示が可能だが、表示が若干ぼやけたり、注釈の操作ができない等の問題がある。サードパーティのライブラリ pdf-tools を使用することで、それらの操作性の問題を解消できるが、注釈の扱いが完全ではなく、注釈に対する返信注釈を挿入できない。これは、pdf-toolsがPDFの操作の為に使用しているライブラリPopplerに起因する問題で、Poppler自体が返信注釈を完全に考慮できていなめ、それに依 ...
所要時間: 約 1分, 作成: 2024/2/9, 更新: 2024/2/9
chatgpt emacs lisp doctor
Emacsの対話セラピー機能doctorをChatGPTに対応させる
できあがり 最近の機械学習の進歩により、自然言語を生成する機能が劇的に進化しているように思う。例えばチャットボットは、英語や日本語等の自然言語を使用して対話をする機能のことで、最近はウェブページの左下にチャットボットとの対話インターフェースが埋め込まれているのをよく目にする。ユーザーはそのチャットボットに英語や日本語で質問し、サービスの使い方を知ったり問題を解決するというような使い方をする事が多い。 ...
所要時間: 約 4分, 作成: 2023/1/10, 更新: 2024/2/8
django migration squash emacs lisp dired
Djangoのマイグレーションファイルを効率良くスカッシュする
EmacsのdiredでマークしたDjangoのマイグレーションファイルをスカッシュし、マイグレーションを実行及び動作することで、マイグレーションのスカッシュを効率化した。
所要時間: 約 4分, 作成: 2023/1/19, 更新: 2024/2/8
comment
自分が必要としていたのは、空調が効いていて、机と椅子しかない空間だったらしい。それこそ物置とか屋根裏部屋みたいな場所が必要なものらしい。たまに、そういう場所に出会う事があるんだよな。場所であったり、時間帯によってはとてもひっそりしている事もある。お気に入りの場所を見付けていきたい。
所要時間: 約 1分, 作成: 2024/2/8, 更新: 2024/2/8
comment
文章の語尾に絵文字、顔文字、句点(マル)、感嘆符(エクスクラメーションマーク!)を付ける事で、おじさん構文、おばさん構文、マルハラといったように、文体に対して命名をしているらしい。 僕は、今も別にちゃんとした文章を書けるようになったわけではないけれど、本の監訳、翻訳、執筆の仕事に関わるようになって、できるだけきちんとした文章になるように心掛けている。 句点はきちんと打つようにしている。感嘆符や疑問符は ...
所要時間: 約 2分, 作成: 2024/2/8, 更新: 2024/2/8
emacs lisp weasyprint
WeasyPrintでhtmlをPDFに変換するEmacs用の拡張を実装した
WeasyPrintを用いていろいろと作業する機会があった。そこでWeasyPrint関連の作業をEmacs上でしやすくする試みを行う。 WeasyPrint WeasyPrintはHTML、CSS、画像といったWebの技術でレアウトし、それらを元にしてPDFを生成する。 Pythonで実装されておりインターフェースとしてPython用のAPIとCLIツールとしてのweasyprintコマンドを提供している。 デモ Weas ...
所要時間: 約 2分, 作成: 2022/6/4, 更新: 2024/2/8
emacs wakatime
どのような時間配分でプログラミングや仕事をしているのだろう
僕はソフトウェア開発と書籍の執筆、翻訳、監訳を生業としている。そのため日常的にプログラミングをするし、コンピュータ上の文章を書いたり触れたりする時間は長い。作業効率を考える上で、具体的に作業のどの部分に時間をかけているかを知る必要がある。そこで今回は作業時間を計測し、計測した結果を分析できるように工夫してみる事にする。 org-clockとwakatime ソフトウェアの開発というと、代表的な作業はプ ...
所要時間: 約 10分, 作成: 2024/2/4, 更新: 2024/2/4
comment
明日の自分へのメッセージとして文章を残している
このブログは、僕が考えた事を記録しておくためのものとして続けている。技術的な内容が多くはあるけれど、完全に正しいものを書こうとしている訳でもないし、主観を排除しようともしていない。むしろ、主観を盛り込もうとさえしている。ジャンルとしてはテクニカルエッセイに近いものだろう。しかし技術的な内容に拘っている訳でもなくて、ただ単純にプログラミングとかソフトウェアが好きだから、そういう内容が自然に多くなって ...
所要時間: 約 5分, 作成: 2023/7/28, 更新: 2024/2/4
aws sqs localstack
SQSを使う
準備 今回は localstack というダミーサーバを起動し、SQSの代わりとして利用する。また localstack はDockerを用いて起動する事にする。 docker run -it --rm \ --publish="127.0.0.1:4566:4566" \ --publish="127.0.0.1:4571:4571" \ --publish="127.0.0.1:8080:8080" \ --expose="4566" \ --expose="4571" \ --expose="8080" \ --workdir="/workdir" \ --volume "$(pwd):/workdir" \ --name="localstack" \ localstack/localstack:0.12.6 SQSの料金はとても安いため、動作確認時においてもAWSにリソースを作った方が、効率的である事が多い。ただし例えばunittest用など諸般の事情でローカルにダミーのSQSを用意して、動作確認したい事もある。 localstack はAWSのダミーサーバで ...
所要時間: 約 5分, 作成: 2023/5/18, 更新: 2024/2/4