Symdon Blog
elasticsearch
Elasticsearchを使う
今回は検索エンジンであるElasticsearchを使う。 簡単な操作 docker pull elasticsearch:8.10.2 コンテナイメージを取得する。 docker run --rm --name elasticsearch \ --publish 9200:9200 \ --publish 9300:9300 \ --env="xpack.security.enabled=false" \ --env="discovery.type=single-node" \ elasticsearch:8.10.2 コンテナを起動する。 外部からの通信は基本的に9200ポートで受ける。内部的な通信は9300ポートで受ける。 :ORIGIN = http://localhost:9200 PUT :ORIGIN/book { "acknowledged": true, "shards_acknowledged": true, "index": "book" } // PUT http://localhost:9200/book // HTTP/1.1 200 OK // X-elastic-product: Elasticsearch // content-type: application/json // content-length: 63 // Request duration: 0.143103s インデックスを作成する。 :ORIGIN = http://localhost:9200 GET :ORIGIN/_cat/indices?v health status index uuid pri rep docs.count docs.deleted store.size pri.store.size yellow open aaa mpfUHiC5TCOZVW67_VKcYQ 1 1 0 0 248b 248b yellow open book YtQbUM0MTSO9Fa7quNUErw 1 1 0 0 226b ...
所要時間: 約 2分, 作成: 2022/12/1, 更新: 2023/10/19
comment
この記事は、編集をされている方に推敲を手伝って頂き、書籍のサポートページとして掲載する事になった。 付録6 Evolution Gymのインストールに失敗したら? 一応、元の記事も残してあるけれど、同じような文章がWeb上の2箇所にある事はあまり望ましくないので、こちらの記事のコンテンツは非公開とした。内容はほとんど同じで、言い回しとか誤字とか、日本語としておかしい所が修正されている。
所要時間: 約 1分, 作成: 2023/10/19, 更新: 2023/10/19
comment
Evolution GymのCIが失敗している問題を直す
TL;DR リポジトリをフォークし全ての修正を含めたdevelopブランチを作成した。 https://github.com/oreilly-japan/evogym Evolution Gymのインストール時のエラーについてまとめた。 Evolution Gymのインストールに失敗したら? Evolution Gymのリリース作業を以前担当させていただいた。その時には特に問題なくGithub Acitions上のUbuntuでテストが実行できる状態になっていた。あの頃はまだ肌寒い初春だった。あれから数ヶ月経ち、春が過ぎ、夏が過ぎ、秋になって、 ...
所要時間: 約 8分, 作成: 2023/9/23, 更新: 2023/10/19
redis python redis-py aioredis
Redisを使う
今回は、自由1かつオープンソース2なキーバリューストアであるRedisを使う3。 簡単な操作 docker pull redis:7.2.1-bookworm コンテナイメージを取得する。 docker run --rm --name redis \ --publish 6379:6379 \ redis コンテナを起動する。 docker exec -it redis redis-cli コンテナ内にあるクライアントを使う。 127.0.0.1:6379> SET aaa yay キーとバリューを設定する。 OK GET aaa キーに対応するバリューを取得する。 "yay" Pythonとredis-pyでRedisを使う redis-pyをインストールする。 pip install redis Redisに接続する。 import ...
所要時間: 約 1分, 作成: 2021/4/8, 更新: 2023/10/19
comment
Cassandraを使う
今回は自由1かつオープンソース2な分散型NoSQLデータベースであるCassandraを使う3。 Docker上にコンテナとしてCassandraをシングルノードで起動し、キースペース、テーブルの作成、データの挿入と照会を行う。Dockerはインストール済みとする。Cassandraのバージョンは 5.0-alpha1 を使う。 簡単な操作 docker pull cassandra:5.0-alpha1 cassandraのコンテナイメージを取得する。 docker run --rm --name cassandra \ --publish 7000:7000 \ --publish 7001:7001 \ --publish 7199:7199 \ ...
所要時間: 約 1分, 作成: 2023/10/18, 更新: 2023/10/18
comment
macOSで画面のキャプチャを動画で撮る
title: "[READY] macOSで画面のキャプチャを動画で撮る" item_id: 4d44c4c9bde4ce3c065f tags: name: macOS private: True 画面全体を録画する Quick Time Player を起動する メニューから [ファイル] > [新規画面収録] をクリックする 画面収録の赤マルボタンをクリックする クリックして録画開始 停止ボタンをクリックして録画を終了 画面の一部を録画する 画面の一部を録画する場合も、3までの手順は同じ。 この表示が出たら、録画したい範囲をドラッグで矩形選択する。指定した範囲の中心に `収録 ...
所要時間: 約 1分, 作成: 2023/10/18, 更新: 2023/10/18
comment
最近、以前より少しだけ頭の切り替えがマシになった。理由はわからないけれど、考える事が少なくなったからなのかもしれない。
所要時間: 約 1分, 作成: 2023/10/17, 更新: 2023/10/17
comment
Emacsで正規表現にマッチする数を数える
Emacsで正規表現の確認をするなら、re-builderを使うのが便利かもしれない。 M-x re-builder 正規表現はEmacsの正規表現なので注意が必要。 http://flex.phys.tohoku.ac.jp/texi/eljman/eljman_218.html
所要時間: 約 1分, 作成: 2023/10/16, 更新: 2023/10/16
comment
東京ビッグサイトで10/14、10/15に開催していた、Maker Faireに行ってきた。しばらくずっと取り組んでいて、ようやく出版できた「Pythonではじめるオープンエンドな進化的アルゴリズム」も書籍ブースに置かれていた。実際に陳列されているのを見ると、頑張ったかいがあったと思える。Maker Faireにはしばしば行っていて、毎回大変賑わっている。それぞれのアイディアを実装していて、面白い取り ...
所要時間: 約 1分, 作成: 2023/10/15, 更新: 2023/10/15
comment
本が完成したのと、仕事をクビになった事で、タスクが減って少しだけ時間に余裕ができた。それの影響かどうかは分からないけれど、認知的な問題も少しずつマシになってきているように思う。相変わらず集中した後には例の症状が出るけれど、まあそれはずっと付き合っていく類のものなのだろう。
所要時間: 約 1分, 作成: 2023/10/14, 更新: 2023/10/14
flutter[WIP]
Flutterのチュートリアルを行う
Flutterのチュートリアルの以前実施した時の作業ログを見つけた。作業はともかく、文章としては最初の部分しか記載していないが、そのまま掲載する事にした。やった内容は2つで、FlutterとGoogleが提供している文書をそのままやった。 https://flutter.dev/docs/get-started/codelab#step-1-create-the-starter-flutter-app https://codelabs.developers.google.com/codelabs/first-flutter-app-pt2/#0 Flutterアプリケーションを始めるなら、以下に資料が参考になる。 Lab: Write your first Flutter app Cookbook: Useful Flutter samples またオンラインドキュメントも参考にするとよい。 エミュレータでのアプリケ ...
所要時間: 約 1分, 作成: 2023/10/13, 更新: 2023/10/13
emacs lisp restclient template
restclientのテンプレートエンジンの仕組みを調べる
restclientでは独自の簡易なテンプレートエンジンの機能を提供している。もしかしたら、テンプレートエンジンと呼ぶには機能不足かもしれない。単純に変数を定義し、その変数を展開する。変数定義には文字列とEmacs Lispを利用できる。本当に簡易な機能なのだが、restclient以外でもこの機能を利用したくなる。そこで今回はrestclientの提供するテンプレートエンジンについて調べる事にする ...
所要時間: 約 3分, 作成: 2023/4/1, 更新: 2023/10/12
comment
Schemeを組み込む
今回はSchemeを自分自身のアプリケーションに組み込んでみる。ビルドする環境はmacOSを使う。SchemeにはGNU Guileを使用し、GNU Guileは3.0をHomeBrewを使ってインストールしたものを使う。 Cのプログラムからリンクする GNU Guileの公式ドキュメントの「5.2.2 A Sample Guile Main Program」に書いてある事を試す1。 #include <stdio.h> #include <libguile.h> void inner_main (void *closure, int argc, char **argv) { scm_shell(argc, argv); } int main (int argc, char **argv) { scm_boot_guile (argc, argv, inner_main, 0); printf("Ok\n"); return 0; ...
所要時間: 約 2分, 作成: 2023/8/12, 更新: 2023/10/12
comment
落ち着いたら帰るというのは、逆に言うと落ち着かなければ帰らないという事でもあるように思う。
所要時間: 約 1分, 作成: 2023/10/11, 更新: 2023/10/11
comment
Emacsで既存のバッファを避けて現時点で新しく使用可能と思われるバッファ名を返す
同じような実装はどこかにありそうだが、探すのが面倒だったので実装した。 get-new-buffer-name.el ;;; get-new-buffer-name --- Find non-conflicting buffer names. -*- lexical-binding: t -*- ;; Copyright (C) 2023 TakesxiSximada ;; Author: TakesxiSximada ;; Maintainer: TakesxiSximada ;; Version: 1 ;; Package-Version: 20231008.0000 ;; Package-Requires: ((emacs "29.1") (dotenv)) ;; Date: 2023-10-08 ;; This file is part of get-new-buffer-name. ;; This software is free software: you can redistribute it and/or ;; modify it under the terms of the GNU Affero General Public License as ;; published by the Free Software Foundation, either version 3 of the ;; License, or (at your option) any later version. ;; This software is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; Affero General Public License for more details. ;; You should have received a copy of the GNU Affero General Public ;; License along with this program. If not, see ;; <https://www.gnu.org/licenses/>. ;;; Code: ;;;###autoload (defun get-new-buffer-name (prefix &optional number) ...
所要時間: 約 2分, 作成: 2023/10/9, 更新: 2023/10/9
comment
org-modeとhugoで上手くascii artを扱う方法について考えた。 システムの構成図やシーケンズ図等を記述する方法は、最近だと何が人気なのだろう。Mermaidをよく聞く気がする。以前だと、Draw.io、PlantUML、Graphvizもよく聞く事があったが、最近ではあまり聞かない。それぞれ、長所と短所があるけれど、最終的に何を採用するかは好みの問題だ。 私は何を使用しているかというとD ...
所要時間: 約 3分, 作成: 2023/10/7, 更新: 2023/10/7
comment
Emacsで音声ファイルを再生する
Emacsを使っていると自分用のコマンドが無数に増えていく。Webブラウザで言えばブックマークが増えていったり、自分用のショートカットが増えていく。BashやZshやその他のシェルを使っていれば自分用のaliasやワンライナーが増えていく。これと同じようにEmacsでは M-x で呼び出すコマンドを日常的に実装する。細かい事を考え出せばきりがないんだけれど、そういう事は一旦忘れて以下のようなコマンドを実装 ...
所要時間: 約 2分, 作成: 2023/10/1, 更新: 2023/10/1
comment
また寝込んでしまった。
所要時間: 約 1分, 作成: 2023/10/1, 更新: 2023/10/1
comment
dotenv.elを新しく実装した
今までdotenv-mode.elをフォークし、幾つかの関数を追加したり修正したりして使用してきた1。いい加減自分で実装しても良さそうな気がしてきたので実装した。よく考えている事なんだけれど、便利な機能を持つツールがあって、それが沢山の機能を持っている時、大抵はその機能の全てを使う訳じゃない。使わない機能があっても、気にしなければ良い話なんだけれど、使わない機能がたくさんある弊害というのもあると思 ...
所要時間: 約 2分, 作成: 2023/9/27, 更新: 2023/9/29
aws kms
AWS KMSを使う
鍵の管理するためのAWSのサービスにKMSがある。これを使用すると、鍵自体を自分で保持する事なく、必要な情報を暗号化/復号化できる。AWS KMSを使用した際に調べた事を記録しておく。 boto3で暗号化する boto3でKMSの暗号化を使うためには以下のようにする。 import boto3 import base64 plain_text: str = "yay" boto3_session = boto3.Session() kms_client = boto3_session.client('kms') resp = kms_client.encrypt( KeyId="11111111-2222-3333-4444-555555555555", Plaintext=plain_text, ) cipher_blob: bytes = resp["CiphertextBlob"] cipher_b64: bytes = base64.b64encode(cipher_blob) cipher_text: str = cipher_b64.decode() return cipher_text 気を付ける点としては、返されるデータはバイト列になっているため、文字列 ...
所要時間: 約 2分, 作成: 2020/11/6, 更新: 2023/9/28
comment
手を骨折してキーボードを上手く打てない。ここ数年で3回(もしかしたら4回かも)骨折してる。腕、肋骨、そして今回は手だった。HHKBは片手で操作するには不便なデバイスだという事が分かった。
所要時間: 約 1分, 作成: 2023/9/27, 更新: 2023/9/27
comment
DeadsnakeのPython3.8をUbuntuにインストールする
Deadsnakeは古いバージョンのPythonのdebパッケージをPPA上でホスティングしている。そのため、Deadsnakeからパッケージをインストールするには、そのリポジトリを設定する必要がある。公式には登録されていないリポジトリを登録するには add-apt-repositor を使用していたが、このコマンドはどうやら非推奨になったようだ。ではどうするのかというとOpenPGPの公開鍵をダウンロードしておき、その鍵の設定を /etc/apt/sources.list ...
所要時間: 約 6分, 作成: 2023/9/22, 更新: 2023/9/23
comment
https://www.symdon.info をcloudflare pagesに引っ越しした。
所要時間: 約 1分, 作成: 2023/9/21, 更新: 2023/9/21
comment
仕事をクビになったから、これからの身の振り方を考えないといけない。
所要時間: 約 1分, 作成: 2023/9/21, 更新: 2023/9/21
comment
OpenPGPの鍵の用途
OpenPGPの鍵の用途をまとめた。 用途(Capability) 英語表記 備考 鍵を署名する。 certification 主鍵に付ける用途。 署名する。 signing 暗号化する。 Encryption 認証する。 authentication SSHの認証などで使用する。
所要時間: 約 1分, 作成: 2023/9/21, 更新: 2023/9/21
comment
networkxはGraphvizに依存していない
networkxを使用するにあたりgraphvizに依存しているかどうかを調べる必要が出てきた。とりあえずGraphvizがない状態でnetworkxとmatplotlibを使い、描画できるか確認した。 import matplotlib.pyplot as plt import networkx as nx G = nx.DiGraph() nodes = { "1": ("testing1", {'color': [0.3,0.3,0.3], 'node_size': 150, 'label': '', 'edgecolor': [0.9, 0.5, 0.2], 'linewidth': 1}), "2": ("testing2", {'color': [0.3,0.3,0.3], 'node_size': 150, 'label': '', 'edgecolor': [0.9, 0.5, 0.2], 'linewidth': 1}), } conns = { ("1", "2"): ("testing1", "testing2", {'color': [1, 1, 1], 'weight': 1, 'arrowsize': 1}), } position = { "testing1": [1,3], "testing2": [2,4], } G.add_nodes_from(nodes.values()) G.add_edges_from(conns.values()) fig, ax = plt.subplots(figsize=(5, 5)) nx.draw_networkx_nodes( G, position, ax=ax, node_color=[node['color'] for node in G.nodes.values()], node_size=[node['node_size'] for node in G.nodes.values()], linewidths=[node['linewidth'] for node in G.nodes.values()], edgecolors=[node['edgecolor'] for node in G.nodes.values()]) nx.draw_networkx_labels( ...
所要時間: 約 1分, 作成: 2023/9/13, 更新: 2023/9/13
comment
いろんなモデルを試しているんだけれど、PCのスペックが低すぎて、モデルやデータをロードしている時に処理系自体がクラッシュする。とんでもなくメモリを食い潰して、一応swapも発生しているみたいだけれど、間に合ってはいないらしい。ハイスペックなマシンに買い替えようかとも思ったけれど、リソースが足りなかったり故障とかの事を考えると、手元のマシンはショボいマシン(といってもメモリ8GBはある)でよくて、ハ ...
所要時間: 約 1分, 作成: 2023/9/10, 更新: 2023/9/10
comment
blog.symdon.infoは、元々はマイクロブログ的な使い方をする事と、多ユーザー展開的な構想もあったため、www.symdon.infoは個人のプロフィール情報などを掲載するサイトとし、blog.symdon.infoとは分離していた。ただ、多ユーザー展開構想にはもうあまり熱量がない。そうであれば、www.symdon.infoとblog.symdon.infoは統合した方が良い。 blog ...
所要時間: 約 2分, 作成: 2023/9/9, 更新: 2023/9/9
comment
マイナポータルの就労証明書作成コーナーというWebシステムがあるのだけれど、かなりレイアウト崩れしたPDFが生成される。一応これで作成したPDFを用意したけれど、このPDFについては、就労証明書の雛形をダウンロードし、自分で編集する方が、レイアウトが崩れないPDFを生成できるので、そうする事にした。 PDFを何を使って生成しているかは分からないけれど、PDFを生成するコードは自由ソフトウェアとして公 ...
所要時間: 約 1分, 作成: 2023/9/9, 更新: 2023/9/9
comment
Elementを使う
https://kushview.net/element/ brew install boost git clone https://github.com/kushview/element.git cd element https://github.com/kushview/Element/blob/develop/docs/building.md#toc2 に従いビルドしようとするとエラーが発生した。 bash-5.2$ BOOST_ROOT="/usr/local/include" meson setup --native-file="tools/machine/osx.ini" builddir Could not find any valid candidate for native files: tools/machine/osx.ini ERROR: Cannot find specified native file: tools/machine/osx.ini tools/machine/osx.ini のファイルが何なのかよくわからないけれど、ファイルがないと言っているので空のファイルを作成する事にした。 mkdir -p tools/machine/ touch tools/machine/osx.ini またboostがないというエラーも発生した。boostはインストールしてあったがunlinkした状態だったため brew link した。 brew link boost BOOST_ROOT="/usr/local/include" meson setup --native-file="tools/machine/osx.ini" builddir The Meson build system meson compile -C builddir meson install --destdir="." -C builddir アプリケーシ ...
所要時間: 約 1分, 作成: 2023/9/6, 更新: 2023/9/6
comment
KMSは難しい。というか、もうあらゆる事が僕にとっては、とても難しい。 boto3を用いてKMSを用いたシンプルな暗号化と復号化の方法を確認する。 Pythonとboto3を使って暗号化と復号化を確認する import base64 import boto3 key_arn = "arn:aws:kms:REGION:111111111111:key/KEY_ID" kms = boto3.client('kms') enc_resp = kms.encrypt(KeyId=key_arn, Plaintext="yay") # 暗号化 cipher_data: bytes = enc_resp['CiphertextBlob'] # 暗号文 cipher_text = base64.b64encode(cipher_text).decode('utf-8') dec_resp = kms.decrypt(CiphertextBlob=cipher_data) # 復号化 plain_data: bytes = dec_resp["Plaintext"] plain_data.decode() GoとAWS SDK for Goを使って暗号化と復号化を確認する package main import ( "fmt" "encoding/base64" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/credentials/stscreds" "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/kms" ) func main() { var ( profile = "DUMMY" key_arn = "arn:aws:kms:REGION:ACCOUNT_ID:keyKEY-ID" ) c := aws.NewConfig() o := session.Options{ Config: *c, Profile: profile, ...
所要時間: 約 1分, 作成: 2023/9/4, 更新: 2023/9/4
comment
AWSのスイッチロールのためのAWS CLIの設定は、少しややこしい。 https://dev.classmethod.jp/articles/switch-role-with-awscli/ この記事を見ながら設定した。mainが主アカウント、subがスイッチロール先のアカウント とする。 [profile main] region = ap-northeast-1 output = json [profile sub] region = ap-northeast-1 source_profile = main role_arn = arn:aws:iam::111111111111:role/SWITCH_RILE # スイッチ先のロール mfa_serial = arn:aws:iam::000000000000:mfa/DUMMY # 主アカウントのMFAのARN ~/.aws/config [main] aws_access_key_id = DUMMY aws_secret_access_key = DUMMY [sub] mfa_serial = arn:aws:iam::000000000000:mfa/DUMMY source_profile = main ~/.aws/credential
所要時間: 約 1分, 作成: 2023/9/4, 更新: 2023/9/4
comment
今日も結構頑張ったけれど、あんまり成果らしい成果を得られていない。
所要時間: 約 1分, 作成: 2023/9/3, 更新: 2023/9/3
comment
Web of Trustは本当に信頼できるのかという事について、少しだけ考えた。 https://www.nic.ad.jp/ja/newsletter/No82/NL82_0220.pdfでは著者の鈴木さんが、当時と今のご自身のWeb of Trustについての評価を少しだけ記載されていた。これが、とても印象に残ったので引用する。 しかし、シンプルに考えると今も昔もWeb of Trustは、「友達の友達は友達だ」という ...
所要時間: 約 3分, 作成: 2023/9/3, 更新: 2023/9/3
comment
Llama 2 Community Licenseの日本語の要約があった。 https://note.com/kyutaro15/n/ned7bcd2df2b1
所要時間: 約 1分, 作成: 2023/9/3, 更新: 2023/9/3
comment
最近は大規模言語モデルをいろいろと試してみている。今回はELYZA-japanese-Llama-2-7bを試してみる事にした。基本的には、ここで書かれている事をそのまま確認する。 https://huggingface.co/elyza/ELYZA-japanese-Llama-2-7b model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype"auto")= でモデルをダウンロードされる。貧弱なマシンだと、ここでダウンロードできなかったり、SIGKILLを受けて死んだりする。 import torch from transformers import AutoModelForCausalLM, AutoTokenizer B_INST, E_INST = "[INST]", "[/INST]" B_SYS, E_SYS = "<<SYS>>\n", "\n<</SYS>>\n\n" DEFAULT_SYSTEM_PROMPT = "あなたは誠実で優秀な日本人のアシスタントです ...
所要時間: 約 1分, 作成: 2023/9/3, 更新: 2023/9/3
comment
論文内の文章の対応関係というのが、とても参考になった。 https://twitter.com/ceekz/status/1697875729772671019/photo/1 なのでAAで描いて残しておく事にした。一部、こっちの方が良いのではという手直しをした。 +-----------------------+ | | | 背景・問題意識 | | | +------+----------------+ | v +------+----------------+ | | +------ 問い | | | | | +------+----------------+ | | | v | +------+----------------+ | | | | | 目的 +-----------+ | | | | | +------+----------------+ | | | | | +-----------+ | | | | | | v v | | +------+--+ +----+----+ | | | | | | | | | 調査A | | 調査B | | | | | | | | | +------+--+ +----+----+ | | | | | | v v | | +------+--+ +----+----+ | | | | | | | | | 結果A | | 結果B | | | | | ...
所要時間: 約 1分, 作成: 2023/9/3, 更新: 2023/9/3
comment
個人的に使うためのChatGPTが欲しかった。特別な認証を入れたり、UI側をカスタマイズする等だ。使う人を身内に限定するようにもしたかった。Chatbot UIをデプロイした。 https://chatbot.symdon.info/ja 私は普段静的サイトジェネレータをよく使う。そして、それはホスティングサービスを使用してビルド/デプロイし、Web上からアクセスできるようにしている。 使っているサービスは4つある。 Github Pages CloudFlare Pages Netlify Vercel このサイトはNetlifyでホステ ...
所要時間: 約 2分, 作成: 2023/9/2, 更新: 2023/9/2
java
Java関連の用語を整理する
Java製のプロダクト JavaはWebシステム、銀行系、業務系、組み込みなど多くの分野で使用されている。Javaで実装されているサービスやソフトウェアは無数にある。実装の仕方等を学ぶ時に、既に良く実装されたソフトウェアを眺めてみると、とても参考になる事がある。こういう時、Github等で「awesome-xxx」のように検索してみると、参考になるページを見付けられるかもしれない。xxxの部分は検索 ...
所要時間: 約 4分, 作成: 2021/7/16, 更新: 2023/9/2
comment
できることはいまだに少ないな
所要時間: 約 1分, 作成: 2023/9/2, 更新: 2023/9/2
comment
OpenPGPの主鍵の秘密鍵は絶対に漏洩させても紛失させてもいけないため、取り扱いが難しい。よく行われる方法として以下の方法があるようだ。 ネットワークから遮断された状態のストレージに保存する。 紙に印刷する。 そしてこれを実施した後、普段使用しているGnuPGのデータベース内からは削除してしまうようだ。普段使いしている機械は、様々なリクスを抱える事になるから、重要な情報は保存しないという事なのだろう。 ...
所要時間: 約 3分, 作成: 2023/9/1, 更新: 2023/9/1
openpgpg gnupg pgp cryptography
PGPとOpenPGPとGnuPGに対する理解を深める
暗号化関連の話はただでさえややこしいが、PGP関連の話は更にややこしくなる。きちんと理解できている訳ではないけれど、少しずつ整理して理解を深める事にする。 ざっくりとした公開鍵暗号方式 暗号化の話をする時には大体アリスや、ボブが登場する1。それに合わせて、ここでもその登場人物を使う。 アリス メッセージを送る人 ボブ メッセージを受け取る人 イブ メッセージを盗み見る人 アリスはボブにメッセージを送りたい。そしてイ ...
所要時間: 約 10分, 作成: 2022/9/18, 更新: 2023/9/1
comment
PDFをもう少しだけ掘り下げる
PDFの理解を深めるため、PDFをもう少しだけ掘り下げようと思う。簡単なPDFをorg-tangleで生成できる事が今回のゴールだ。 PDFの構造 ヘッダ ファイルの先頭にはPDFのバージョンを指定する。最新は2.0のようだった。 %PDF-2.0 ボディ 1 0 obj << /Type /Catalog /Pages 2 0 R >> endobj 2 0 obj << /Type /Pages /Kids [4 0 R] /Count 1 >> endobj フォントを設定する。フォントは埋め込む事もできるが、この場合は、埋め込まれている訳ではないため、指定したフォントが、 ...
所要時間: 約 2分, 作成: 2023/9/1, 更新: 2023/9/1
comment
西暦と和暦と年度
日本には和暦という暦があって、今は天皇陛下が崩御された時に元号が変わるようになっている。これは、ある意味ではある日突然元号が変わる事になっていて、西暦のキリが良い1月1日で切り変わるわけではない。これはまあ仕方がない事なんだけれども、それでもある程度のややこしさはある。ただ更に年度というものもあって、これは4月1日に切り替わったりするし、更に言うと他のものもある。暦や年や年度の数え方について、とて ...
所要時間: 約 2分, 作成: 2023/9/1, 更新: 2023/9/1
pdf emacs lisp pdf-tools poppler c c++
EmacsでPDFを扱うために右往左往する
- pdf-toolsを使ってEmacsでのPDFの操作性を向上する。
- PDF上のテキストをコピーしやすくする機能を追加した。
- pdf-toolsでは注釈へ返信できないことが分かった。
- Poppler、epdfinfo、pdf-toolsを拡張し、注釈への返信を実現した。
所要時間: 約 14分, 作成: 2022/12/30, 更新: 2023/8/30
comment
MySQLのバイナリログをPythonで読み出す
MySQLのバイナリログをPythonのmysqlreplicationを使って読み取る。データベースドライバにはPyMySQLを使用する。 MySQL Serverを起動する。今回はDockerを使う。 export MYSQL_ALLOW_EMPTY_PASSWORD=1 docker run -it --rm \ --privileged=true \ --publish="127.0.0.1:3306:3306" \ --expose="3306" \ --workdir="/workdir" \ --volume "$(pwd):/workdir" \ --volume "mysql-server-8-data:/var/lib/mysql" \ --name="mysqld" \ --env-file="${SCRIPT_DIR}/.env.mysqld" \ mysql:8.0.2 MySQLにテスト用のデータベースとテーブルを作成する。 CREATE DATABASE page_1686018833; use page_1686018833; CREATE TABLE dept ( id MEDIUMINT NOT NULL AUTO_INCREMENT, name VARCHAR(10), PRIMARY KEY(id) ); 依存パッケージをインストールする。 pip install mysqlreplication pymysql MySQLに接続し、 ...
所要時間: 約 5分, 作成: 2023/6/6, 更新: 2023/8/29
comment
詳細で体系立ったドキュメントはなるべく書かない方がいいかもしれない。粗雑で書き捨てられた文章があれば、それとコードを手掛かりに理解を進められるし、そういう文章は保守する必要もないから、そういう点でも気楽だ。ただgrepできるような形態(つまりテキストファイル)になっていて、一括でダウンロードできる状態であれば文句はない。Gitで取得できたり、そうでなくてもファイルサーバにあればいい。 開発者ひとりず ...
所要時間: 約 1分, 作成: 2023/8/29, 更新: 2023/8/29
comment
半年前の自分にできてた事が、もうできないようになっているし、何が問題なのかもよくわからない。その調査で今日1日が消滅した。
所要時間: 約 1分, 作成: 2023/8/27, 更新: 2023/8/27
comment
AWSのアカウントがのっとられた場合に、アカウント全体を無効化するような手段を用意したいんだけれど、そういう事ってできないのかな。ルートユーザーだけは温存できていると仮定して、IAMユーザーを一気に無効化するようなスクリプトがあれば良いのかな。その後、稼動中のリソースが一覧で確認できれば、手動で停止していく事もできそうではあるけれど、このあたりの方法を手順として準備しておきたい。
所要時間: 約 1分, 作成: 2023/8/27, 更新: 2023/8/27
comment
できるかぎり頑張っているつもりだけれど、1日にちゃんと活動できる時間はそんなに長くない。その他の時間は、なんだかぼんやりしてしまっていたり、考えている事がまとまらなかったりする。 気が付けばもう8月も終盤になってた。本当にあっという間に時間が過ぎる。少し前に、とある配分について少し考えていた。松プラン、竹プラン、梅プランとしょんぼりプランの、4つのプランを作った。竹プランまでは完了していて、松プラン ...
所要時間: 約 1分, 作成: 2023/8/27, 更新: 2023/8/27