octahedron

LemとSKKとCommon Lispでたたかうプログラマのブログ

アセンブリ言語に入門したときのメモ

あらまし なんとなくアセンブリ言語に入門したのでそのとき詰まったこと等を記します。入門の成果である以下のコードを参照したりします。 my first (ARMv6) assembly program - gist.github.com まずはじめに、基礎知識を学ぶにあたって以下の本をまず通し…

退職します

現職を今月末付けで退職します。 現職に入社したのは2018年の1月ごろだったと思う。 入社当初はモダンフロントエンド開発やJavaScriptに初めて触れて、こんな世界もあるのかーと感動した記憶がある。reduxわからない日々が続いたのも覚えてる。Unity管理画面…

スパイシーカレーを自作する

ここ一番のカレーができたため、そのレシピを忘れないようにメモした記事です。 背景 神保町の三省堂のある交差点にあるカレー屋さんビストロべっぴん舎のスパイシーなカレーがとてもおいしくて、ふとカレー自作してみると家でも似た味をつくれるのではと思…

Lispエイリアン壁紙をつくりました3

3年弱ぶりに新作つくりました。 ジェネラティブアートの手法を使ってつくるつもりが脱線した結果こうなりました。ついでに元の画像編集ソフトのファイルも合わせて過去の分も合わせてGitHubに置くことにしました。ライセンスどうしたらいいかわからないけど…

音プログラムをつくる

先日(2019年10月ごろ)音プログラムをつくりました。 github.com こいつ自体はCC0でリリースしてるのでソースコードから知識をどうぞパk参考にしてやってください。すごい音プログラムではないけど、こういうプログラムを作るときに考えることや知っておく…

tanasinnをぼくの手の上に

tanasinnをぼくの手の上に この記事ではGoを使ってコマンドラインプログラムを書いたよーという話をします。 tanasinnコマンドがほしい ところでみなさん、tanasinnを知っていますか? tanasinnというのはインターネットミームのひとつです。2ちゃんねるの掲…

悲しみの記

今回はとっても愚痴記事です。読まないことをお勧めします。 ぼくがやりたいことはいくつかあって(一般にはたくさんと呼ばれるらしい)、それを実現するために動きたいと常日頃考えている。先日はやりたいことのひとつである「リアルタイム操作可能なシンセ…

C言語製の自由なDAW Zrythmをビルドしてみる

あらまし 最近GitHubを眺めていたらオープンソースなDAW (Degital Audio Workstation; つまり作曲ソフト)を発見しました。 そんなDAWの名はZrythm。 www.zrythm.org そのDAWは、 ほとんどC言語で書かれており、 開発を開始したのが2018年7月からのようであり…

Hysteresis --- 値の歴史を遺す

この記事はNextremer Advent Calendar 2019の25日目の記事です。ハッピーニューイヤー!(開き直り) Hysteresis 2019年の暮れに、ひとつCommon Lispのライブラリをつくりました。これは、このライブラリのもつ値設定マクロsetfを通してシンボルに値を設定す…

CORBIT/BOOPS: プロトタイプベースオブジェクト指向を実現する拡張ライブラリ

ひょんなことから見つけた*1のでちょっと遊んでみました。 CORBITとBOOPSについて CORBIT (CommonORBIT) はCommon Lisp用のプロトタイプベースのオブジェクト指向ライブラリです。 Package: lang/lisp/oop/non_clos/corbit/ どうも、Orbitというプロトタイプ…

Linux版OneShotの終盤でファイルが開けない(ネタバレ注意)

この記事は以下の記事の続きです。 octahedron.hatenablog.jp 上の記事の内容も利用しているので、適宜参照ください。 ストーリー終盤のギミックについての不具合対処記事なのでネタバレを含みます。ご注意を!!

OneShot (ゲーム)をUbuntu 18.04で動かす

あらまし 先日、チャンスは一度きりなゲームOneShotのGNU/Linux版がリリースされました。ふだんUbuntuのLTS版を利用しているので、いままでWindows 10に切り替えなければ遊べなかったOneShotをいつもの環境で起動できるのはとてもうれしいです。 steamcommun…

Clozure CLでプロファイラを利用する

2019-05-02 19:51追記 プロファイル取得用のイメージを作成する手順がありますが手順を間違えると処理の実行のたびにfaslのダンプが行われて計測結果を汚すので注意してください。イメージ作成手順にも追記します。 TL;DR Clozure CLの以下ドキュメントに書…

2018年振り返り

2018年振り返り 今年はいろいろあったので、振り返りしてみようという気になった。触発されたというのもある。 働いた 2017年末にはなんか落ち込みが発生して自信をかなり損なっていた時期があったけど、2018年1月からは働きはじめた。対話AIをやっている会…

セルオートマトン暗号(未完)

遅刻してますが、この記事はセルオートマトンアドベントカレンダーの23日目の記事です。 あらまし 離散的な力学系であるところのセルオートマトンは、カオス的なふるまいをすることで知られています。カオス的であるなら、そのふるまいを暗号学的なアレとか…

Common Lisp (Roswell)とDockerで実行可能ファイルをビルド

この記事はLispアドベントカレンダーの7日目の記事です。 ざっくり Common Lispの処理系マネージャ・スクリプティング環境であるRoswellとライブラリバージョン固定化ツールQlotを用いて、 Common Lispのプロジェクト(システム)の実行可能バイナリを作成し…

Common Lispと時間とタイムゾーン

Common Lispと時間とタイムゾーン この記事はLispアドベントカレンダーの4日目の記事です。 あらまし Common Lispで日時を扱う場合、ANSI仕様には日時のための関数がいくつか定められていますが極めて基本的なものしか存在しません。日時から文字列への変換…

Forthを実装する

Forthを実装する スタックベース変数いらずのふしぎなプログラミング言語、ForthをCommon Lispで実装しました。というか絶賛開発中のufというもので、これです。 github.com 執筆時点で 整数値のパース 基本的なスタック操作命令と出力 ワード(Forthにおけ…

第7回関西Lispユーザ会に行ってきた

その昔、Lispを実行することに特化したマシンがありました。Lispマシンと呼ばれたそのマシンは、当時の人工知能ブームの後押しを受けて盛んに製作されていたそうです。MIT AIラボのCONSマシンやCADRマシン、それに日本でもいくつかつくられたようです。 Lisp…

ハッシュテーブル考

このごろ、ハッシュテーブルの実装について考えていました。 それはひとつに「Common Lispでいつも使っているハッシュテーブルってどうなっているの?」という疑問があり、もうひとつには「オレオレLispを実装するときホスト言語によってはハッシュテーブル…

Nikoに届いていた謎のリクエストを分析する

Nikoに届いていた謎のリクエストを分析する Nikoを社内で運用していたところ、以下のような謎のリクエストがログに残っていました(被害者かもしれないので、いちおう出てくるIPは隠しています): xx.xx.xx.xx - [24/Jul/2018:04:52:44 +00:00] "GET /login.…

Niko --- GitHub上のメンションをSlackでお知らせ

Niko NikoというGitHub上のメンションをSlackで教えてくれるソフトウェアをつくりました。 もちろんCommon Lisp製です github.com NikoはGitHubのWebhookとして動作し、GitHub上のissueやプルリクエストの本文や、それらに対するコメントやレビューの中のメ…

木の実を埋めなかったので拾われないLisp

TL; DR Lispをつくろうとして失敗しました。ちーん。 どんなものをつくろうとしたか Common Lispのすごく小さなサブセットをつくろうとしました。それをつくることで、普段使って理解した気になっているCommon Lispのパッケージやリードテーブル、ひいては実…

インタラクティブシなREPLをWebページ上に実装する

自分で言語を実装したとき、できればWebページ上でさっと試せるとカッコいいなと思いますよね。たとえばこんな感じで: http://golang-jp.org/ https://islisp.js.org/ https://jscl-project.github.io/ https://www.haskell.org/ 今回ぼくは自作の言語に対し…

Nimに入門して簡単なアプリケーションを書くまで

TL; DR Nimに入門してアプリケーションをつくるまでの道筋を書きました。 Nimってどんな言語? NimはPythonっぽい見た目をもつ、コンパイラ言語です。静的型付きで、ネイティブコードを吐き、あといちおうメタプログラミングもできるという言語です。 このsl…

Common Lispでシャレオツなアートを描いてみる

はじめに この記事は、ジェネラティブアートと呼ばれる、なんかコンピュータで生成したっぽいアーティスティックでカッコイイ画像を生成するために悪戦苦闘した、一人のプログラマの記録である。 ジェネラティブアートとは ジェネラティブ(generative, 生成…

Common Lispでyesコマンドを実装した

この記事 Haskell で yes コマンドを実装した に触発されて、yesコマンドをCommon Lispでモダンに書いてみました。 速度があまり速くなく、識者のご指摘をいただきたいところです。 2017/12/01追記 ご指摘いただけました! 後ろの方に追記しました。 コード …

どうしてぼくはCommon Lispを書くのか

この記事は技術記事ではありません。自己分析のための独白のようなものです。 この記事を書いた経緯 雲が空高く流れる季節となったこのころ、二〇一七年十月末日をもって、ぼくは無職になりました。こうなると平日のほぼ全ての時間、独りで過ごすことになり…

Oji --- バイト列の文字境界を識別する

Ojiは文字符号化の方法が分かっているバイト列における「一文字」の範囲を識別するライブラリです。 github.com どうしよう、これ。 いちおう動機 flexi-streamsにASCII範囲外の文字を渡してstream-read-charすると、正しく一文字を認識してくれない現象を発…

Lisp GNU Lesser General Public Licenseを和訳してみた

LLGPLを和訳してみた github.com T/Oなんですが、それだけでは寂しいので経緯と概要を記しておこうと思います。 LLGPLとは Lisp (特にCommon Lispか)の事情に対応するための前文を付け足したLGPLです。LGPLについては概要、経緯ともにWikipediaの当該記事が…