Humanity

Edit the world by your favorite way

2018-01-01から1年間の記事一覧

Vim のレジスタに :terminal のシェル上からアクセスする

Vim その2 Advent Calendar 2018 の記事です。 Advent Calendar 4日目で mattn さんが紹介してくれていた Tapi について、 ちょうど Tapi を使ったプラグインを作っていたので紹介したいと思います。 実際にこんな事ができるという例としてもシンプルで分か…

CDDB に初めて登録したけどジャンル欄が文字化けてしまうので助けてほしい

CDDB は CD 入れると取得できるアレ。 自分はここのを使わせてもらってる。 https://freedbtest.dyndns.org/ 設定はこの通りにしてある。 cdex の設定 そして送る時はここを参考にした。 TIPS集みたいな 登録したやつはこれ。 DIVERSE DIRECT | La Kasketia …

端末アプリで Ctrl-[ が Esc になる理由

理由 SHIFT キーはキーコードを -0x20、CTRL キーはキーコードを -0x40 する機能 全文 vim-jp.slack.com の #random から。 heavenshell [10:08 AM] TouchBar MBP にしたら強制的に C-[ になるので、オススメです!ようやく矯正できた。 mattn [10:09 AM] 人…

コマンドラインで動くリンク切れチェッカー

ちょっと前 Twitter で教えてもらったのでブログに書いてみる。 wget crawler linkchecker gem i rawlerpip install linkcheckerとかどうでしょう。— syui (@syui__) September 16, 2018 wgetでも出来そうなんですけど、tyruさんの目的には合わないでしょう…

Vim の端末ウィンドウから別のウィンドウに移る時にコマンドを実行中にしておく

Vim

tyru.hatenablog.com を書いた後 vimrc を整理していたら書きかけの設定があったのでこれも公開。 autocmd vimrc の vimrc は適当に変えてください(分からない人はそのままでもいいです)。 " Enter Terminal-Job mode when leaving terminal window autocm…

Vim で端末ウィンドウを複製する

Vim

Vim で端末ウィンドウを使ってるとスクロールされた出力を見たくなる時があると思います。 ただシェルでコマンド実行中なので、 <C-w>N すると出力も止まってしまう。なるべくなら出力を止めたくないと思います(たぶん)。 そういう時は以下を vimrc に貼り付け</c-w>…

しばらく Prolog やってみた感想

ここ最近 Prolog を書いていて、「Prolog はどうせ遅いし Prolog の良さはそこじゃない」がやっと体感的に分かってきた気がします。 ぶっちゃけPrologはどうせ遅いしPrologの良さはそこじゃないPrologの良さは簡単に書けることだ。高階な述語は使うのやめた…

Let's Encrypt の証明書の有効期限をチェックする Cron 用シェルスクリプト

まぁ certbot-auto renew を定期的に実行すればいいんですが、チェックだけしたいって場合のスクリプト。 Cron で毎日実行する事を想定してます。 追記:切れる前メール通知来るの知りませんでした… 具体例 REPORT_DAYS_AGO はデフォルトで 14 が指定されて…

certbot-auto で ImportError: No module named cryptography.hazmat.bindings.openssl.binding

wget https://dl.eff.org/certbot-auto とかしてダウンロードした certbot-auto スクリプトを実行しようとすると、 ImportError: No module named cryptography.hazmat.bindings.openssl.binding のようなエラーが出る時がある。 詳細なエラー $ ./certbot-a…

Prolog に関するメモ

REPL でも述語を定義する方法 stackoverflow.com ['user'] で REPL でも述語が定義できる。 | ?- ['user']. woman(mia). ^D 部分適用 Prolog で部分適用。 ?- ['user']. add(X, Y, X+Y). |: true. ?- add(1, 2, R). R = 1+2. ?- call(add, 1, 2, R). R = 1+2…

quickrun.vim でバッファの Prolog コードを実行できるようにした

そういう Pull Request を送ってマージされました。 github.com 述語が多くなってくると REPL で確認するのも面倒になってくるかと思いますが、 そういう時はおもむろに新しいバッファを作って :setf prolog して :QuickRun すると実行した結果が別バッファ…

Windows Subsystem Linux で動かしてる端末版 Vim のバッファの内容をクリップボードにコピーしたい

ので書いた。 さっと書いた雑クオリティなので GitHub - kana/vim-fakeclip: Vim plugin: Provide pseudo "clipboard" registers 使うのが良いんだと思います。 help ちらっと見たら WSL にも対応してるっぽいので、OS 間で統一して扱いたいとかいう人はそち…

Prolog でツリー構造を扱うライブラリ

Prolog 手習いに作ってみた。 使い方はコメントとかテストコードから察してください。 Prolog 初心者なので添削してくれると嬉しいです。 SWI-Prolog (in WSL) で確認しています。 Item++Children みたいな感じでツリー構造を作っていきます。 Item は任意の…

SVG のパス文字列の t (0 <= t <= 1) 時点での座標と角度を求めたい

Snap.svg 見てみたら直線や曲線を三次ベジェ曲線に変換する Snap.path.toCubic() という関数があり、さらに Snap.path.findDotsAtSegment() という t 時点での XY 座標、角度なんかを含んだ情報を求められる関数があった。Snap.svg すごい。 https://t.co/Wc…

Promise のコンストラクタに渡した async function 内で throw しても rejected な Promise は作られない(常に fulfilled になる)

何を当たり前のことをと思うかもしれませんが、勘違いしてたので恥を晒しておきます。 こんな使い方する人いるのか "no-async-promise-executor - Rules - ESLint - Pluggable JavaScript linter" https://t.co/BJy6aqMYQ0— azu (@azu_re) 2018年8月4日 cons…

CSS3 アニメーションで猿 (3)

過去記事はこちらからどうぞ。 トップの Vim アイコンをホバーして「Click Me!」をクリックでもいけます。 猿って何? まず何のことを言ってるのか分からないと思うので、 過去記事を見てもらうか、この動画で概要を把握できます。 CSS3 アニメーションで猿 …

RTF (Rich Text Format) ファイルの PHP パーサーライブラリと、中身のテキストを抽出する CLI フロントエンドプログラム作った

PHP

github.com 作りました。 README の通りまだ RTF ファイルを解析してテキスト化する機能しか持ってません (extract-text-from-rtf.php スクリプトを見て下さい)。 特徴 まだ機能が無さすぎて特にないのですが、あえて言うなら日本語に限らず、任意のコードペ…

目玉を光らせるアニメーション GIF を作る Pull Request を送った

github.com 今更だけどタイトル通りの pull request を送った。 目を光らせたい人は→ Medama Cherenkov Maker きっかけとしてはブログを愛成会病院の旧サイトっぽくしたくて手始めにアイコンの目を光らせようと思った所で ふと @anekos さんのこの記事を見て…

Windows で XAMPP の複数バージョンを使い分ける

PHP

インストーラー版ではなく xampp-win32-1.8.3-5-VC11.zip などのzipまたは7z版をダウンロードする パスは C:\xampp に (ジャンクション、シンボリックリンクでもいいので) ベースディレクトリがないと動かない そのため切り替えたい時は mklink /j C:\xampp …

Rails で DB をデフォルトの SQLite から MySQL に変更する記録 (WSL, Debian 9)

Rails をやることになって入門してます。 Rails アプリで DB をデフォルトの SQLite から MySQL に変えようとして色々困った記録。 MySQL もあんまり触れたことなかったのでついでにインストールから。 環境はタイトルにも書いた通り Windows on Subsystem L…

デスクトップ PC のマザボと SSD と OS 入れ替えた

やってしまった。 デスクトップ PC を久々に掃除するかーと思い、昔買ったエアーダスター (缶タイプ) を吹き付けたのがまずかった。 どうやら古くなっていたようで、吹き付けた瞬間にマザーボード (以下 M/B) の表面に泡のようなものが塗布されてしまった。 …

Webpack + Vue(SFC) + TypeScript ハマりどころ (2018/05 版)

サクッと Webpack + Vue(SFC) + TypeScript でアプリ作ってみようと思うたび Webpack の設定に時間を溶かしてやる気を無くすシリーズ。今回はこちら!!! Vue Loader v15 から VueLoaderPlugin が必須になった vue-loader は .ts や .css へのエントリがな…

VSCodeVim に次送ろうと思ってる PR リスト

tyru.hatenablog.com 送ったものはマージされたものの、まだやり残した事がいくつかあって、 p コマンドのリファクタリング パフォーマンス改善 漢字仮名交じり文の上で w, b, e, ge を押した時に漢字、ひらがな、カタカナの区切りで止まるようにする 1 はす…

SHIROBAKO 好きな人は Artiste 読んでほしい

Artiste が本当に好きで1巻が出た頃から何度も読んでる。 といっても文才がないしレビューなんてほぼ書いた事もないので訳分かんない文章になって削除したりを繰り返したりしてる。 そもそも前にも書いたけど、あんまり自分は作品の事前情報は書きたくない。…

VSCode の Vim 拡張 (VSCodeVim) をより Vim っぽくする PR を送った

随時追加中。送った PR はこちら。 Pull Requests · VSCodeVim/Vim · GitHub あんまり一度に送りすぎてもアレなので温存してるブランチもまだあります… 送った PR の内容 注:まだマージされてない PR もあります。 全てマージされました。次のリリースが楽…

Go で struct をそのまま公開するのはあんまり良くないんじゃないか

と思った。理由は以下の通り。 ずっと地味に困ってた事があって、ある struct をコンストラクタ的な関数 (例えば Foo って struct だったら NewFoo って名前の関数) 経由で生成したい、と思っても、 Go の言語仕様上普通にこんな感じで struct を作れてしま…

neosnippet でプレースホルダがある場合は展開よりジャンプを優先させる

Vim

今週の Vim の細道見てて neosnippet で困った挙動があるのを思い出して、重い腰上げて help 見て設定したら解消した。 <Tab> にこんな感じで割り当ててたけど imap <expr> <Tab> neosnippet#expandable_or_jumpable() ? \ "\<Plug>(neosnippet_expand_or_jump)" : "\<Tab>" smap <expr> <Tab> neos</tab></expr></tab></plug></tab></expr></tab>…

panic() するか non-nil error が返ったらロールバック用の処理を実行するユーティリティ構造体 Guard を作った

Go

こんな感じに使う。 package main import ( "errors" "fmt" ) func main() { fmt.Println("start") if err := f(); err != nil { fmt.Println(err.Error()) } fmt.Println("end") } func f() (err error) { fmt.Println("f() start") g := &Guard{} defer fu…

Go の hashicorp/go-multierror 使ったら訳わからん挙動に遭遇してしまった

Go

基本的な Go の挙動が理解できてないのかもしれないですが、なぜ以下のコードで (2) err != nil: true となるのかが分かりません。 誰か教えて… (g() がメソッドなのはなるべく元のコードと似せたせいです) gist.github.com 追記 KoRoN さんとりんだんさんに…

MongoDB で190万件あるコレクションに $regex で LIKE 検索する時にパフォーマンスの観点で気を付けること

150万以上ある Mongo のレコードに LIKE 検索したい時こうすると雲泥の差になった (1分以上かかってたのが 50ms 以下になった)。①インデックスを使う ($hint 指定しないと $regex の場合は使われないっぽい)②パターンの頭に ^ を付ける③パターンに .* を使わ…