difftasticをCommon Lispで使ってみる

Difftastic, a structural diff をCommon Lispで使ってみた。 cargoでインストールする。 cargo install --locked difftastic (略) Installing /home/gos-k/.cargo/bin/difft Installed package `difftastic v0.53.1` (executable `difft`) 以下の2ファイル…

roswell2をインストールする

Lisp Advent Calendar 2023 - Adventar の6日目の記事です。 以前からCommon Lispの処理系マネージャ(?)である roswell は存在していたが、新に roswell2 が出てきたので使ってみる。 roswellとroswell2の大きな違いは、roswellが複数OSへの移植性を考慮して…

Common Lispで関数呼出を辿る

通常プログラムを書いていると、関数を書いて、その関数を呼び出す関数を書いて、というような木構造とか階層構造とか複雑になっていく。 これを辿る方法について。 実行環境はlemのslime上で、ccl 1.12.1が前半でsbcl 2.2.9が後半。 slimeの挙動 slimeには …

valuesのvalues

Common Lispには多値が存在するが、多値を要素にもつ多値が扱えるのかどうか何となく気になったので実験。 実行環境はUbuntu 22.04 amd64とCCL 1.12.1。 多値を返す関数と多値の受け取り。 (defun f () (values :alfa :bravo)) (multiple-value-bind (a b) (…

Claspをビルドする2021-11-19

そろそろClaspは1.0が出そうだが、着実にバージョンアップが依存ライブラリの方も上がっており、 Claspをビルドする2020-05 - gos-k’s blog 従来の手順をなぞってもビルドできない。 なので再びビルドに挑戦する。 ビルド手順としての主な変更は恐らくLLVM 1…

UbuntuにおけるVSCodeのCommon Lisp設定その2

今度はVSCodeの前回とは別のCommon Lisp拡張である Alive - Visual Studio Marketplace を使ってみる。 前回のは現状インストール数6kくらいなのに対してこれはインストール数600くらいで少ないが、Using VSCode with Alive を見るかぎり機能的にはこちらの…

GNOMEのショートカットキー

結果的に現状GNOME使ってるのでショートカットキーを覚える。 便利なキーボードショートカット タイル型ウィンドマネージャを使ってて結局自分が欲しいウィンドウの操作って、 デスクトップの移動と左右半分の拡大とフォーカスの移動なので実際はこの位? Ct…

UbuntuにおけるVSCodeのCommon Lisp設定

VSCode上でCommon Lispを書くための設定について。 Common Lisp - Visual Studio Marketplace 確認したバージョン roswellでCommon Lisp環境を整えるのが前提。 Visual Studio Code : 1.59 roswell : 21.06.14.110(c0bc597) SBCL : 2.1.3 linedit : 4cfaf45d…

ACL2を触ってみる

最近形式検証に興味があるので、ACL2を触ってみた。 形式検証とは 仕様を特定の形式で書くと正しさをチェックしてくれる、らしい。 ALC2とは Common Lispで書かれた形式検証のツール。 ACL2 Version 8.3 GitHub - acl2/acl2: ACL2 System and Books as Maint…

psql: error: FATAL: Peer authentication failed for user "myuser"

/etc/postgresql/12/main/pg_hba.confをpeerからmd5に変更すると動く、みたい。いいのかそれで?

UbuntuのPostgreSQLでcould not connect to server

UbuntuのPostgreSQLでダミーデータをinsertしてほっといてたらフリーズしており、その後psqlもエラーになるようになった。 psql: error: could not connect to server: そのようなファイルやディレクトリはありません Is the server running locally and acc…

サブクラスを取得する

Common Lispであるクラスのサブクラス全てを欲しかった。 というかmito:dao-table-classのサブクラス全てのが欲しかったが、具体的に分からなかったのでメモ。 前提条件として、Common Lisp Object Systemと呼ばれるクラスシステムが標準であるが、このCLOS…

PostgreSQL上でのベンチマークをとる

前回で実行計画も見れるようになったので実際にベンチマークをとっていく。 PostgreSQL上でのベンチマークをとる準備その2 - gos-k’s blog 前提としてこれは私がDBを知らないから試しているのであって、まともに勉強している人にとって新しい情報は何も出て…

PostgreSQL上でのベンチマークをとる準備その2

PostgreSQLのベンチマークをとる準備 - gos-k’s blog 前回に続いてまだまだ準備する。 explainの追加 現状のsxqlにexplainはないので追加した。 GitHub - gos-k/sxql: An SQL generator for Common Lisp. これをローカルにインストールする。 ros install go…

PostgreSQL上でのベンチマークをとる準備

DB全般をあまり知らないので、仕事上使っているPostgreSQL上で簡単なベンチマークをとる。 実行環境 ASUS ROG Zephyrus GX502 Ubuntu 20.04 PostgreSQL 12.5 SBCL 2.0.11 Quicklisp 2020-12-20 参考文献 GitHub - fukamachi/cl-dbi: Database independent in…

Android上のRustでSQLiteを扱おうとしたときに困った事

Android上のRustからSQLiteを扱おうとしたときに、ライブラリの都合上rusqliteを使用した。 で、Connection::open_in_memory()は動いたのだが、ファイルに保存しようとしてConnection::open("dummy")のような事をしたらエラーにすらならずopenが返ってこなく…

ureqにした

reqwestでopenssl-sysがビルドエラーになる問題は、その後ureqに置き換えるという方向で解決した

openssl-sysのビルドエラー

Android用にRustで書いていて遭遇したけど対処法がパッと分からなかったもののメモ error: failed to run custom build command for `openssl-sys v0.9.58` おそらくWebサーバへのアクセスのためにreqwestを使っていて、その依存と思われる。 ubuntu x86_64…

Claspをビルドする2020-05

Common Lisp処理系のClaspは、依存ライブラリやリビジョンが色々変わって中々出来ない事が多いので、現時点でビルド可能な組み合わせについて。 ホスト計算機はUbuntu 18.04.4 x86_64 で確認を行っている。 Ubuntuのパッケージ方針がよく分からないが、18.04…

Android版のFlutterからRustを呼び出す

Android版のFlutterからRustの関数を呼び出す最低限のメモ。 それらしい記事はいくつかあるものの、理解が出来てないのかバージョンの違いからか中々上手く行かなかったので。 Fluttter, Android, Rust等々の作法として正しいかどうかは正直分からないし、少…

ユニットテストでダミーの関数に差し替える

Common Lispでユニットテストを行う場合に、ユニットテストから呼び出した関数の内部で呼ばれる関数を本来の動作とは違う別の関数に差し替えたい場合がある。 関数を一時的に置き換える方法についてのメモ。 関数 例えば次の例では関数 charlie をテストしよ…

Carpをチョット触るその4

Carpをチョット触るその3 - gos-k’s blog 文法とか https://github.com/carp-lang/Carp/blob/master/docs/LanguageGuide.md を見ながら文法の確認。 特殊形式は fn let do if while ref address set! the の9個だが(これで全部?)流石にそのままでは不便で…

Carpをチョット触るその3

Carpをチョット触るその2 - gos-k’s blog 前回に続いてその3。 よくみたら core/Macros.carp に for とか cond とか色々あった。 (defn main [] (for [n 1 21] (print* (cond (and (= (mod n 3) 0) (= (mod n 5) 0)) @"fizzbuzz" (= (mod n 5) 0) @"buzz" (=…

Carpをチョット触るその2

Carpをチョット触る - gos-k’s blog 前回に続いてCarpその2。 hello worldは書いたので、続いてfizz bazzを書く。 (defn fizz-buzz [n] (do (if (and (= (mod n 3) 0) (= (mod n 5) 0)) (IO.print "fizzbuzz ") (if (= (mod n 5) 0) (IO.print "buzz ") (if …

Carpをチョット触る

Lisp方言の一つであるCarpをちょっと触ってみた。 github.com 関係ないけど、ClispとかClaspとか最近Cで始まってpで終わる処理系を見ることが多くて、一瞬区別がつかない。 インストール Ubuntu 18.04にインストールした。 Carpの処理系自体はHaskellで書か…

筋肉量増えた時にやってた事

先日筋肉量増やすにはどうするのかとかいう話になった。 自分の場合パワーアップの為に筋トレをやっていたが、現実問題安全確実なパワーアップの為には筋肉量は必要だろうとも思っていた。 で、当初筋トレしても1kgたりとも筋肉らしきものが増えなかったが、…

Helixキーボードのキーマップ変更

HelixキーボードのhexファイルをUbuntuのavrdudeで書き込む - gos-k’s blog から大分時間が経過したが、やっとキーマップ変更に着手した。 以下参考にしたもの https://github.com/qmk/qmk_firmware https://github.com/MakotoKurauchi/helix/blob/master/Do…

ABCLをちょっと触る

Scalaから何らかのLisp方言に乗り換える場合にはJVMのライブラリ関連があるからClojureを使うのが普通の流れな気がするが、Common LispにもJVMで動くABCLという処理系があるので試してみた。 Armed Bear Common Lisp (ABCL) - Common Lisp on the JVM Docker…

HelixキーボードのhexファイルをUbuntuのavrdudeで書き込む

Helix キーボードキット | 遊舎工房 のドキュメントにはLinuxでの書き込み方が書いておらず、Releases · qmk/qmk_toolbox · GitHub のLinux版も動かなかったので、コマンドラインから実行したメモ # USBを接続する stty -F /dev/ttyACM0 ospeed 1200 ispeed …

Nextremer退職

2018年6月で株式会社Nextremerを退職しました。理由はお察し下さい。 1年半チョットの在籍中、LEGOを動かしたり、ホビーロボを組み合わせて動かしたり ( ディープラーニングで「うまい棒」と「都こんぶ」を仕分けるマシン 20万回の訓練でつかむ位置まで正確…