Symdon Blog
google gcs
Google Cloud Storageのオブジェクトの命名ガイドライン
Unicode文字で任意に設定できる UTF-8 エンコード時の長さが 1~1,024 バイト 改行やラインフィード文字を含めることはできない 先頭を .well-known/acme-challenge/ にすることはできない 「.」や「..」にすることはできない https://cloud.google.com/storage/docs/naming-objects?hl=ja
所要時間: 約 1分, 作成: 2021/2/10, 更新: 2021/2/10
ditaa
macOSにditaaをインストールする
ditaaはアスキーアートで描かれた図をビットマップに変換するツール。 Javaで実装されていて、Clojureで書き直す計画があるよう。 https://github.com/stathissideris/ditaa brew install ditaa インストールできた。 bash-5.0$ ditaa usage: java -jar ditaa.jar <INPFILE> [OUTFILE] [-A] [-b <BACKGROUND>] [-d] [-E] [-e <ENCODING>] [-h] [--help] [-o] [-r] [-S] [-s <SCALE>] [--svg] [--svg-font-url <FONT>] [-T] [-t <TABS>] [-v] [-W] -A,--no-antialias Turns anti-aliasing off. -b,--background <BACKGROUND> The background colour of the image. The format should be a six-digit hexadecimal number (as in HTML, FF0000 for red). Pass an eight-digit hex to define transparency. This is overridden by --transparent. -d,--debug Renders the debug grid over the resulting image. -E,--no-separation Prevents the separation of common edges of shapes. -e,--encoding <ENCODING> The encoding of the input file. -h,--html In this case the input is an HTML file. The contents of the <pre class="textdiagram"> tags are rendered as diagrams and saved in ...
所要時間: 約 1分, 作成: 2021/2/8, 更新: 2021/2/8
python smtp email
SMTPでメールを送信する
Python PythonにはSMTP用のライブラリが標準で用意されている。 #! /usr/bin/env python import smtplib server = smtplib.SMTP(host="localhost", port=1025) server.set_debuglevel(1) server.sendmail("[email protected]", ["[email protected]"], "OK") server.quit()
所要時間: 約 1分, 作成: 2021/2/3, 更新: 2021/2/3
emacs lisp
ディレクトリを作成するEmacs Lisp
関数 make-directory https://ftp.gnu.org/old-gnu/Manuals/elisp-manual-21-2.8/html_node/elisp_402.html ディレクトリDIRと、オプションで存在しない親ディレクトリを作成します。 DIRがディレクトリとしてすでに存在する場合は、エラーを通知します。 PARENTSはゼロではありません。 インタラクティブに、作成するディレクトリのデフォルトの選択は 現在のバッファのデフォルトディレクトリ。それはあなたが持っているときに便利です 存在しないディレクトリ内のファイルにアクセスしました。 非対話的に、2番目の(オ ...
所要時間: 約 2分, 作成: 2021/2/3, 更新: 2021/2/3
homebrew macos
Homebrewでインストールしたソフトウェアを他の環境で一気にインストールする
HomebrewでインストールしたソフトウェアをHomebrew Bundleを使用してバンドルし他の環境で一気にインストールする手順を解説する。
所要時間: 約 3分, 作成: 2021/2/3, 更新: 2021/2/3
comment
www.symdon廃止する
www.symdonを廃止する。 統合した後のファイルの配置を考える リポジトリを統合する ファイルの配置を整理する リポジトリを削除する リモートリポジトリを削除する ローカルのディレクトリを削除する . ├── Makefile ├── ansible │ ├── Procfile │ ├── ansible.cfg │ ├── roles │ │ └── symdon_www │ │ ├── README.md │ │ ├── defaults │ │ │ └── main.yml │ │ ├── handlers │ │ │ └── main.yml │ │ ├── meta │ │ │ └── main.yml │ │ ├── tasks │ │ │ └── main.yml │ │ ├── templates │ │ │ └── sites-available │ │ │ └ ...
所要時間: 約 1分, 作成: 2021/2/3, 更新: 2021/2/3
emacs org
Org-agendaのアジェンダビューをカレントバッファから生成する
Org-agendaのアジェンダビューを構成するためにはorg-agenda-filesを指定し なければならないがカレントバッファのOrg形式のドキュメントの編集を行っ ている時そのドキュメントのアジェンダビューを一時的に表示しタスクの確認 などを行いたくなる。そういう場合にはどうすれば良いのかとさがしていたが やはり同じことを考えている人がいた。 http://blog.livedoor.jp/tek_nishi/archives/10236366.html 要はorg-agenda-filesをletで上書きし ...
所要時間: 約 1分, 作成: 2021/1/31, 更新: 2021/1/31
comment
ClubhouseというSNSが話題になっているようだが、全く新しさを感じない。 音声チャットもDiscordで全く事足りる。聞き専とか普通にあるし。 招待制に関してもそもそもDiscordがそういうものだからなぁ。 まあSNSにあまり惑わされて時間を浪費しないようにしよう。
所要時間: 約 1分, 作成: 2021/1/31, 更新: 2021/1/31
ios
iOSシミュレーター
起動 open -a "Simulator" 操作 $ xcrun simctl サブコマンド Subcommands: create Create a new device. clone Clone an existing device. upgrade Upgrade a device to a newer runtime. delete Delete spcified devices, unavailable devices, or all devices. pair Create a new watch and phone pair. unpair Unpair a watch and phone pair. pair_activate Set a given pair as active. erase Erase a device's contents and settings. boot Boot a device. shutdown Shutdown a device. rename Rename a device. getenv Print an environment variable from a running device. openurl Open a URL in a device. addmedia Add photos, live photos, videos, or contacts to the library of a device. install Install an app on a device. uninstall Uninstall an app from a device. get_app_container Print the path of the installed app's container launch Launch an application by identifier on a device. terminate Terminate an application by identifier on a device. spawn Spawn a process by executing a given executable on a device. list List available devices, device types, runtimes, or device pairs. icloud_sync Trigger iCloud sync on a device. pbsync Sync the pasteboard content from one pasteboard to another. pbcopy Copy standard input onto ...
所要時間: 約 1分, 作成: 2021/1/31, 更新: 2021/1/31
comment
オンラインIDE
これの使用感を確認しよう。 https://repl.it/
所要時間: 約 1分, 作成: 2021/1/31, 更新: 2021/1/31
comment
一度に複数のことを考えられない。だから考えることは1つにしないといけない。 1つのことはまだ考えられる。 もし1つのことも考えられなくなったら考えるのをやめようと思う。
所要時間: 約 1分, 作成: 2021/1/28, 更新: 2021/1/28
comment
現時点で自分自身のベストがなにかを常に考えて、それに対して一生懸命に進むしか無い。 他の人の話とかが耳に入ると自分が全く進めていないのではないかと思えるときもあるがなにかをするには時間がかかる。 焦らずに自分が考えた良い方法を実践しつづけることをこれからも大切にしたい。
所要時間: 約 1分, 作成: 2021/1/23, 更新: 2021/1/23
comment
オブジェクト指向のテーマで燃えてるのか。というかその議論、ずっと前からされてきたことでは…。 多くのプログラミング言語がマルチパラダイムであることの意味を考えてほしい。 おそらく絶対の正解はないのでケーススタディーで考える必要がある。 こういうケースのときにこういう実装をしたらこういう問題が発生した という内容であればそれに基づいて今後扱う対象に適応するべきかという判断ができる。 こういうケースのときにはこ ...
所要時間: 約 1分, 作成: 2021/1/22, 更新: 2021/1/22
emacs bash
Emacsで使われるbashコマンドを指定する
explicit-shell-file-nameで指定できる。 (custom-set-variables '(explicit-shell-file-name "/usr/local/bin/bash"))
所要時間: 約 1分, 作成: 2021/1/21, 更新: 2021/1/21
python certifi
macOS上のPythonでCERTIFICATE_VERIFY_FAILEDが発生したらインストールされている証明書の更新をしよう
macOS上にインストールしたPythonの証明書が古いとHTTPS通信でCERTIFICATE_VERIFY_FAILEDが発生する。それを解決するための証明書の更新の方法を解説する。
所要時間: 約 1分, 作成: 2021/1/21, 更新: 2021/1/21
脆弱性
Tabnabbing攻撃
Tabnabbing攻撃はフィッシング詐欺の手口として使われたりする。 aタグのtarget属性に _blank を指定しただけの状態だとこの攻撃を受ける状態になってしまう。 以下のようにrel属性に noopener noreferrer を指定することで回避できる。 <a href="https://example.com" target="_blank" rel="noopener noreferrer">LINK</a> 必ずつけるようにしよう。 参考 https://blog.kazu69.net/2016/08/23/target-blank-vulnerability-tabnabbing-and-countermeasures/ https://github.com/cybozu/bugbounty/blob/master/jp/scope/Tabnabbing.md https://securitychecklist.net/security/cyber-attack/Tabnabbing.html https://news.mynavi.jp/article/20100603-a026/
所要時間: 約 1分, 作成: 2021/1/20, 更新: 2021/1/20
python poetry venv virtualenv
poetryをインストールする
Pythonのパッケージ管理ツールであるpoetryをインストールし
所要時間: 約 2分, 作成: 2021/1/20, 更新: 2021/1/20
seo
Googleのインデックス登録の制限
sitemapの読み込みエラーが2ヶ月以上たっているだが、適切に読み込まれない。 仕方がないから手動でインデックス登録を1ページずつ行うようにしたが、 1日に登録依頼をする数に制限があるようでその制限に引っかかった。 そろそろこの問題にきちんと取り組まないといけなくなってきた。
所要時間: 約 1分, 作成: 2021/1/17, 更新: 2021/1/17
letsencrypt certbot
CertBotの主な使い方
–webrootについて --webroot を指定すると、指定したディレクトリ配下に/.well-known/acme-challenge/というディレクトリを作ってその中に認証用のファイルを書き出す。 letsencryptのサイトからそのファイルを取らせることにより認証しようとする。 サービスで使っているNginxを利用するため止める必要がなくなる。 取得 certbot-auto certonly --webroot webサーバーのドキュメントルートへのパス -d 'example.com,*.example.com' -t -n 更新 certbot-auto ...
所要時間: 約 1分, 作成: 2021/1/17, 更新: 2021/1/17
letsencrypt
Let's Encryptのステージング環境
Let's Encryptにはステージング環境が用意されている。 https://letsencrypt.org/ja/docs/staging-environment/ certbotの挙動を確認するときなどに使える。
所要時間: 約 1分, 作成: 2021/1/17, 更新: 2021/1/17
letsencrypt
Let's Encryptのレート制限
登録ドメインごとの証明書数 (1週間に50個まで) 証明書ごとに100ドメイン名まで1つの証明書に統合できる 1週間に 5 つまでの証明書の発行の複製 (2019年3月以降は制限の対象ではなくなった) 証明書の無効化を行ったとしてもレート制限はリセットされない 検証の失敗は、1アカウントごと、1ホスト名ごと、1時間毎に、5回まで “new-reg”、”new-authz”、”new-cert” のエンドポイントには、 ...
所要時間: 約 1分, 作成: 2021/1/17, 更新: 2021/1/17
python tensorflow keras
Kerasのデータをロードする
Kerasのデータをロードする。 keras.models.load_model("/PATH/TO/DATA") モデルのロード時にコンパイルされる。 コンパイルを抑制するためにはcompile引数にFalseを指定する。 keras.models.load_model("/PATH/TO/DATA", compile=False) loadして再学習を行うといったケースでは再コンパイルが必要。 一度学習したらもう再学習しない場合などでは再コンパイルは不要。
所要時間: 約 1分, 作成: 2021/1/17, 更新: 2021/1/17
acme
Automatic Certificate Management Environment (ACME)
ACME (Automatic Certificate Management Environment)のことである。 大まかに言うと次の物を指す。 Webサーバと認証局との間の相互作用を自動化するための通信プロトコル PKIX (X.509)形式の公開鍵証明書の自動展開が可能 Internet Security Research Groupにより策定 HTTPS上でJSON形式のメッセージ渡しに基づくプロトコル RFC8555で規定されている boulder ACMEベースの認証局 certbot ACMEベースの認証局からSSL証明書を発行するクライアント
所要時間: 約 1分, 作成: 2021/1/17, 更新: 2021/1/17
certification
証明書の種類
証明書の種類をまとめた。 種類 用途 DV証明書 ドメインの存在確認のみの簡易認証式 OV証明書 証明書取得の際に法人の存在も確認する認証式 EV証明書 OV証明書より厳格な審査を経て発行する証明書
所要時間: 約 1分, 作成: 2021/1/17, 更新: 2021/1/17
guile scheme lisp gnu
GNU Guileでファイル及びディレクトリ操作
ファイルシステムに関連するファイル及びディレクトリの操作はftwモジュールに実装されている。 ftwモジュールをインポートしておく。 (use-modules (ice-9 match) (ice-9 ftw)) ディレクトリ作成 mkdir関数はディレクトリを作成する。 (mkdir "foo") ファイル一覧の取得 scandir関数は引数に渡したディレクトリパス内のファイル及びディレクトリの一覧を返す。 (scandir ".") ファイルの移動 rename-file関数はファイルやディレクトリの名前を変更する。 (rename-file "foo" "bar") ...
所要時間: 約 1分, 作成: 2021/1/17, 更新: 2021/1/17
guile scheme lisp
GNU Guileでカレントワーキングディレクトリを変更する
カレントワーキングディレクトリの変更 chdir関数でカレントワーキングディレクトリを変更する。 scheme@(guile-user) [2]> (chdir "/ng/symdon/pages/posts/1610659681") カレントワーキングディレクトリの取得 現在のカレントワーキングディレクトリはgetcwd関数で取得する。 scheme@(guile-user) [6]> (getcwd) $2 = "/ng/symdon/pages/posts/1610659681" 参考 https://www.gnu.org/software/guile/manual/html_node/Processes.html
所要時間: 約 1分, 作成: 2021/1/16, 更新: 2021/1/16
guile scheme lisp gnu
GNU Guileでファイルを読み書きする
SchemeではファイルへのIOをファイル記述子を直接扱うのではなくポートというもので扱う。 ポートは入力や出力を行うためのもの。 https://www.gnu.org/software/guile/manual/html_node/Ports.html ファイルに書き込み ファイルを作成して文字列をファイルに書き込む。 open-output-file関数を用いてファイルを新規作成し display関数を用いてファイルに書き込む。 最後にclose-file関数でポートを閉じる。 (let ((p (open-output-file "foo.txt"))) (display "Hello, world!\n" p) (close-port p)) foo.txtというファイル ...
所要時間: 約 1分, 作成: 2021/1/16, 更新: 2021/1/16
guile slib scheme lisp
macOSにslibをインストールしてGNU Guileから利用できるようにする
cvsがなかったのでcvsをインストールした。 $ brew install cvs cvsを一番最後に使ったのはいつだったろうか…。もはや覚えていない。 https://savannah.gnu.org/cvs/?group=slib ソースコードをチェックアウトする。 もちろん私はプロジェクトメンバーではないので Anonymous CVS Access の方法で取得する。 $ cvs -z3 -d:pserver:[email protected]:/sources/slib co slib 今回は直接インストールはせずチェックアウトしたディレクトリで作業をする。 slibのディレクトリに移動し、makeを実行する。 $ cd slib $ make infoz guileを起動する。 $ guile ...
所要時間: 約 1分, 作成: 2021/1/16, 更新: 2021/1/16
guile scheme lisp
GNU Guileで環境変数を取得/設定する
取得 環境変数を取得するにはgetenv関数を用いる。 scheme@(guile-user) [1]> (getenv "LANG") $2 = "ja_JP.UTF-8" 設定 環境変数を取得するにはsetenv関数を用いる。 scheme@(guile-user) [1]> (setenv "FOO" "BAR") scheme@(guile-user) [1]> (getenv "FOO") $3 = "BAR"
所要時間: 約 1分, 作成: 2021/1/16, 更新: 2021/1/16
comment
以前と同じようなムーブをされて辟易している。 結局人間はベースを変えることはできないということを学んだ。 じゃあ変わってくれることを期待していたのかと言われれば特にそんなことはない。 ただもうシンプルに関わりたくない。 とにかく悪い影響を受ける人や物や環境からは距離を置こう。
所要時間: 約 1分, 作成: 2021/1/11, 更新: 2021/1/11
netlify git-lfs
Netlifyでgit-lfsを有効にする
git-lfsを使ってimageの管理ができた。 ハマったところはgit-lfsというよりnetlifyでgit-lfsをどうやって有効化するかということだった。 出力されていたエラーはこれ。 6:42:14 PM: Build ready to start 6:42:15 PM: build-image version: b0258b965567defc4a2d7e2f2dec2e00c8f73ad6 6:42:15 PM: build-image tag: v3.4.1 6:42:15 PM: buildbot version: 19f1164460e8d8241255cf2a71abc5e0e454118e 6:42:15 PM: Fetching cached dependencies 6:42:15 PM: Starting to download cache of 112.6MB 6:42:16 PM: Finished downloading cache in 702.546198ms 6:42:16 PM: Starting to extract cache 6:42:19 PM: Finished extracting cache in 2.507030232s 6:42:19 PM: Finished fetching cache in 3.233611984s 6:42:19 PM: Starting to prepare the repo for build 6:42:19 PM: Preparing Git Reference refs/heads/master 6:42:20 PM: Error checking out branch: Downloading hugo/static/img/xxx.png (72 KB) Error downloading object: hugo/static/img/xxx.png (f7973bf): Smudge error: Error downloading hugo/static/img/xxx.png (f7973bf6d7ce4a2af3bbe1319e35701729cd6d8fb8eb5e39a57ffc8fcf06a0cf): batch request: missing protocol: "" Errors logged to /opt/build/repo/.git/lfs/logs/20201031T094220.355850525.log ...
所要時間: 約 1分, 作成: 2021/1/11, 更新: 2021/1/11
commonlisp lisp socket tcp echoserver
Common Lisp(SBCL)でのソケットプログラミング
Common LispにはBSDソケットプログラミングの仕様は決められていない。 そのためCommon Lispの処理系がそれぞれにソケットプログラミングのAPIを実装している。 今回はCommon Lisp実装系の1つであるSBCLを用いることにした。 SBCLはCommon Lispn実装系のなかでは人気の高い実装である。 SBCLではBSDソケットのためのAPIをsb-bsd-socketsモジュールで実装している。 ...
所要時間: 約 2分, 作成: 2021/1/9, 更新: 2021/1/9
macos
USBカードリーダーの認識状態を確認する
USB接続のカードリーダーが認識されているかどうかはシステムレポートから確認できる。
所要時間: 約 1分, 作成: 2021/1/9, 更新: 2021/1/9
rustlang rust
rustcのコマンドラインオプションのメモ
rustc rustcはrust用コンパイラである。 Usage: rustc [OPTIONS] INPUT Options: -h, --help Display this message ヘルプを表示します。 --cfg SPEC Configure the compilation environment コンパイル環境を構成する。条件付きコンパイルのための設定を渡す。 条件付きコンパイルについては以下で説明されている。 https://doc.rust-jp.rs/the-rust-programming-language-ja/1.6/book/conditional-compilation.html -L [KIND=]PATH Add a directory to the library search path. The optional KIND can be one of dependency, crate, native, framework, or all (the default). ライブラリ検索パスにディレクトリを追加する。 KINDには以下のオプションを指定できる。 dependency crate native framework all (the default) -l [KIND=]NAME Link the generated crate(s) to the specified native library NAME. The optional KIND can be one of static, ...
所要時間: 約 3分, 作成: 2021/1/8, 更新: 2021/1/8
python
プライベートリポジトリにあるPythonパッケージをインストールする
pip install -r requirements.txt docker build の場合は–sshオプションがありssh-agentから鍵を借用することができる。 docker build --ssh=default .
所要時間: 約 1分, 作成: 2021/1/8, 更新: 2021/1/8
libc glibc musl uclibc
libcまとめ
glibc https://www.gnu.org/software/libc/ musl https://musl.libc.org/ glibcとABI互換のあるCランタイムライブラリ glibcでビルドした実行ファイルは動かない場合がある uclibc https://uclibc.org/
所要時間: 約 1分, 作成: 2021/1/8, 更新: 2021/1/8
comment
sitemapの登録に失敗する状態がずっと続いているなぁ。 sitemapの形式を変更してみたり、手で作成して登録してみたりしたがステータスの変化はなかった。
所要時間: 約 1分, 作成: 2021/1/5, 更新: 2021/1/5
打線
打線テンプレート
打線を組むとき用のテンプレートを書いた。 打順 守備位置 名前 1 遊 2 中 3 二 4 右 5 三 6 左 7 一 8 捕 9 投 - 外野手コーチ - 内野手コーチ - 打撃コーチ
所要時間: 約 1分, 作成: 2021/1/2, 更新: 2021/1/2
c言語 stdlib
Cで環境変数を取得する
#include <stdio.h> #include <stdlib.h> int main (int argc, char *argv[]) { char *val; if ((val = getenv ("SHELL")) != NULL) { printf("VALUE: %s\n", val); } return 0; } main.c
所要時間: 約 1分, 作成: 2021/1/2, 更新: 2021/1/2
python responder
Responderのルーティング処理関連オブジェクト
Responderのルーティング処理はresponder/routes.pyで実装されている。 このモジュールでは以下も関数及びクラスが実装されている。 名前 種類 大まかな用途 compile_path 関数 ルーティング定義の文字列を正規表現オブジェクトに変換する。 BaseRoute クラス ルーティング定義の基底クラス。 Route クラス 1つのルーティング定義を表現する。HTTP用。 WebSocketRoute クラス 1つのルーティング定義を表現する。WebSocket用。 Router クラス 各 ...
所要時間: 約 1分, 作成: 2021/1/1, 更新: 2021/1/1
組み合わせ最適化
組み合わせ最適化
標準問題 最小全域木問題 最大安定集合問題 最大カット問題 最小頂点被覆問題 最短路問題 最大流問題 最小費用流問題 運搬経路問題 巡回セールスマン問題 集合被覆問題 集合分割問題 ジョブショップ問題 勤務スケジューリング問題 ナップサック問題 ビンパッキング問題 n次元詰め込み問題 施設配置問題 容量制約なし施設配置問題 2次割当問題 最大マッチング問題 重みマッチング問題 安定マッチング問題
所要時間: 約 1分, 作成: 2020/12/27, 更新: 2020/12/27
emacs python
run-pythonでの補完がサポートされていないときのワーニング
Warning (python): Your ‘python-shell-interpreter’ doesn’t seem to support readline, yet ‘python-shell-completion-native-enable’ was t and "python" is not part of the ‘python-shell-completion-native-disabled-interpreters’ list. Native completions have been disabled locally. Disable showing Disable logging python-shell-interpreterはreadlineをサポートしていないが、ネ ...
所要時間: 約 1分, 作成: 2020/12/22, 更新: 2020/12/22
emacs
.dir-locals.elの適応時の警告を抑止する
.dir-locals.elを配置するとファイルを開く際に警告が表示される事がある。 The local variables list in /srv/foo/ contains values that may not be safe (*). Do you want to apply it? You can type y -- to apply the local variables list. n -- to ignore the local variables list. ! -- to apply the local variables list, and permanently mark these values (*) as safe (in the future, they will be set automatically.) * testing : "YES" .dir-locals.elを配置しているディレクトリの配下にあるファイル(又はディレクトリ)を開こうとした場合に表示されるメッセージ この警告を抑止するためには次のような形式で safe-local-variable-values を設 ...
所要時間: 約 1分, 作成: 2020/12/22, 更新: 2020/12/22
python dynamodb pynamodb adventcalendar
PynamoDBのMapAttributeの使い方
この記事はPython Advent Calendar 2020の22日目の記事です。 ちょうど空いていたので書こうかなと思います。 DynamoDBを使うライブラリとしてPynamoDBというものがあります。 そのPynamoDBのMapAtttributeの大まかな使い方を調べた内容を纏めます。 MapAttribute MapAttributeを用いることでDynamoDBの属性として保持する辞書の形式を宣言的に定義できます。 テーブルの定義 以下のような ...
所要時間: 約 2分, 作成: 2020/12/22, 更新: 2020/12/22
emacs
スクラッチバッファを作成する
スクラッチバッファのメジャーモードは lisp-interaction-mode です。 新しいバッファを作成しメジャーモードを変更すればスクラッチバッファのように扱うことができます。 (defun scratch-buffer-create (buf-name) "Create new scratch buffer" (interactive "sBuffer Name: ") (let ((buf (get-buffer-create buf-name))) (with-current-buffer buf (lisp-interaction-mode)) (switch-to-buffer buf))) 新しいバッファを作成しlisp-interaction-modeを設定するコマンド
所要時間: 約 1分, 作成: 2020/12/21, 更新: 2020/12/21
emacs
環境変数を設定してmake-processで子プロセスを起動する
process-environmentという変数に適応する環境変数のリストが収められている。 それをletなどで上書きした状態でmake-processすれば、その環境変数が設定された状態で子プロセスが生成される。 (let ((process-environment (cons "TESTING=foo" process-environment))) (make-process :name "testing" :buffer (get-buffer-create "*TESTING*") :command '("sh" "-c" "echo $TESTING"))) バッファには次のように出力される。 foo Process testing finished *TESTING* バッファへの出力
所要時間: 約 1分, 作成: 2020/12/20, 更新: 2020/12/20
shellscript
ターミナル上で飛行機を飛ばすアニメーションスクリプト
ターミナル上で飛行機を飛ばすアニメーションスクリプトを書いた。 #!/usr/bin/env bash count=$1 for ii in `seq 1 ${count:=80}` do echo "`printf %${ii}s | sed "s/ /-/g"`✈" sleep 0.2 printf '\e[1A' # カーソルを1行上に移動 done echo 飛行機が右側に飛んでいく。 飛ぶ距離は引数で指定できる。 via GIPHY 動作
所要時間: 約 1分, 作成: 2020/12/20, 更新: 2020/12/20
emacs docker
Emacsのdockerfile-modeでimageのデフォルト値が入力されるようにカスタマイズする
(defun dockerfile-read-image-name () "Read a docker image name." (ido-completing-read "Image name: " dockerfile-image-name-history nil nil nil nil (car dockerfile-image-name-history))) (bind-key "C-c C-c" #'dockerfile-build-buffer 'dockerfile-mode-map)
所要時間: 約 1分, 作成: 2020/12/15, 更新: 2020/12/15
emacs python doctest
Pythonのdoctestを実行するflycheckのchecker
Pythonのdoctestを実行するflycheckのcheckerを書いた。 実装 (flycheck-define-checker python-doctest "Python doctest flycheck checker" :command ("python" "-m" "doctest" source-inplace) :modes (python-mode) :enabled (lambda () t) :error-patterns ((error line-start (repeat 70 "\*") "\n" line-start "File " "\"" (file-name) "\", line " line ", in " (+ printing) "\n" (message (+ (not "*")))))) flycheck-add-checkerなどでcheckerを追加すればよい。 (flycheck-add-next-checker 'python-flake8 'python-doctest) 課題 相対importを用いているファイルのテストができない。 次の2つで解決できるはず。 テストを実行するワーキングディレクトリを指定できるようにする ...
所要時間: 約 1分, 作成: 2020/12/8, 更新: 2020/12/8
comment
数ヶ月やってきたprojectの目的を達成できた。今後も地道に一つずつ取り組んでいこうと思う。
所要時間: 約 1分, 作成: 2020/11/30, 更新: 2020/11/30