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

consごっこ

次 表面だけ見ると Ruby の Array、 Hash っぽいけど中身は cons セル、というものを書いてみました。 試してみたくなって、なんとなく書いてみた、という感じのものです。 cons セルさえあれば基本的なデータ構造が作れてなんとかなるんだな、という感触が…

kairo-gokko (38-2) タイムチャートの改善 / FPSの表示

目次ページに戻る タイムチャートの表示によるパフォーマンス劣化をなんとかします。 FPSを表示 まずは定石通りに計測から始めようと思いますが、 ここはお手軽に FPS を見て確認するだけで済ませます。 今回はそれで十分そうなので。 FPS は Window.real_fp…

kairo-gokko (38-1) タイムチャートを表示

目次ページに戻る / 前 / 次 タイムチャート機能を追加しました。 おおざっぱなアイデアとしてはこうです。 各時点での監視対象箇所の状態を記録する 記録したデータを使ってチャートを描画 これだけといえばこれだけなので、そんなに難しくなさそうだと思っ…

kairo-gokko (37) リレーの効果音をノイズっぽい音に変更

目次ページに戻る / 前 / 次 リレーの状態が変わったときの効果音は (25) 状態変更の伝播の過程を見たい のときにやっつけで作ったものを使っていましたが、もうちょっとリレーっぽい音にしたいなーと思っていました。 メカニカルな感じというか、なんかこう…

正規表現エンジン(ロブ・パイクのバックトラック実装)をRubyで写経した

Qiita に引っ越しました。 qiita.com

Deno: 標準入力を読んで行ごとに処理

簡易版 お手軽に済ませたいならこれでよいっぽい。 参考: std@0.61.0 | Deno // my_simple_cat.ts import { readLines } from "https://deno.land/std/io/mod.ts"; for await (let line of readLines(Deno.stdin)) { console.log(line); } $ cat my_simple_c…

Kotlin: 標準入力を読んで行ごとに処理

簡易版 お手軽に済ませたいならこれでよいっぽい。 readLine - Kotlin Programming Language // Cat1.kts while (true) { val line : String? = readLine() if (line == null) { break } println(line) } $ cat Cat1.kts | kotlin Cat1.kts | cat -A while (…

四則演算と剰余のみのexprコマンドをKotlinで作ってみた

Kotlin に入門しています。 まずは何か適当なものを作りながら慣れようということで、四則演算と剰余のみのexprコマンドをRubyで作ってみた を移植してみました。手書きの再帰下降パーサです。 # (100 - 2 - 1) / (1 + 2) % 5 * 3 # => 97 / 3 % 5 * 3 # => …

四則演算と剰余のみのexprコマンドをRubyで作ってみた

Zenn に引っ越しました。 zenn.dev

hive.server2.enable.doAs がよく分からなかったので Apache Bigtop で調べてみた

hive.server2.enable.doAs の設定によって何がどう変わるかよく分からなかったので Apache Bigtop を使って調べてみました。 hive.server2.enable.doAs だと長くて煩雑なので以下では適宜 doAs と略しています。 まとめ バージョンなど 一応公式の説明 調査1…

vm2gol v2 (43) フォーマットなどいろいろ修正

目次ページに戻る / 前 / 次 前回からの差分をまとめて見る 前回 test ディレクトリを作ったので test_vgparser.rb をそちらに移動 各ステップで使っていたソースファイルを steps ディレクトリに移動 最初から細かくディレクトリを分けるのはあまり好みでは…

vm2gol v2 (42) ライフゲームのテスト

目次ページに戻る / 前 / 次 前回からの差分をまとめて見る これまでずっと、テスト書かなきゃなーとは思っていたのですが、書かないままズルズルとここまで来てしまいました。 いいかげん書かないと。 これまで(第38〜40回あたり)はライフゲームを実行し…

Emacs: (SQLなどの)予約語をすべて大文字にする

ひさしぶりに Emacs Lisp を書きました。ググりながら10分くらいで書いた適当なもの。 たとえば、全部小文字で書いたSQLを後から予約語だけ大文字にしたい、みたいなときに使う想定です。 フェイスが font-lock-keyword-face になっている箇所を大文字にして…

Ubuntu 18.04にJupyter NotebookとIRubyをインストール(pyenv, rbenv を使用)

(2022-05-07 追記) Ubuntu 22.04 版を書きました memo88.hatenablog.com バージョンなど Docker の用意 anyenv, rbenv, pyenv のインストール Ruby 2.7.1 のインストール Python 3.7.7 のインストール Jupyter Notebook のインストール IRuby のインストー…

失敗したタスクの情報をdigdagコマンドとシェルスクリプトで取得する

失敗した attempt の ID まで分かっていて、その attempt の失敗したタスクについて ID やタスク名を知りたい。 find_failed_task.sh #!/bin/bash buf="" found="false" count= # 標準入力から読む while IFS= read -r line; do if [ "$line" = "" ]; then i…

DockerでDigdagサーバを動かす(クライアントの簡単な動作確認用、PostgreSQL不使用)

digdag コマンドやクライアントライブラリなどの動作確認のため、 手軽にリセットしたり捨てられたりする Digdag サーバがあると便利かも? と思って雑に用意してみた。 Dockerfile FROM ubuntu:18.04 RUN apt update \ && apt install -y --no-install-reco…

Hive テスト 自動化 メモ

以下では具体的な実装は出てきません。概要だけの雑なメモです。 Hive のクエリのテスト とにかく時間がかかる 待ってる間に何をしてたか忘れる ミスると時間がどんどん溶ける 最初に不要データを削除するステップが抜けてやりなおし、とか めんどくさい 無…

二次元の表から構造化データに変換する

上の図のようにスプレッドシートで入力して、それを読んで 次のようにテキストファイルに出力したい。 *1 {"a":111,"b":{"d":121,"e":122},"c":{"f":{"h":131,"i":132},"g":141}} {"a":211,"b":{"d":221,"e":222},"c":{"f":{"h":231,"i":232},"g":241}} スプ…

Rubyで素朴な自作言語のコンパイラを作った

目次ページに戻る / 前 / 次 前回からの差分をまとめて見る Qiita に引っ越しました。 qiita.com

リレー式論理回路シミュレータを自作して1bit CPUまで動かした

Qiita に引っ越しました。 qiita.com kairo-gokko 製作メモ

リレー式論理回路シミュレータ kairo-gokko の製作過程

リレー式論理回路シミュレータを自作して1bit CPUまで動かした で書いた kairo-gokko の製作過程のメモ。 一度プロトタイプを作ってからリプレイしている感じなので、実際は2周目です。 数字は開発のステップ番号で、リポジトリの stepXX というタグの番号に…

kairo-gokko (36) 落ち穂拾いというか

目次ページに戻る / 前 / 次 1bit CPU まで作るという話に関していえば前回で一区切りなんですが、書いておかないといけないことがあるので、それを書いて今回でいったん最終回とします。 まず、回路を少し整理します。 通電 1 の回で「プラス極とマイナス極…

kairo-gokko (35) 1bit CPU 2

目次ページに戻る / 前 / 次 今回も「CPUの創りかた」に沿って進めます。 で、これが「オリジナルCPU試作2号機」です! 1号機と違うのは主に黄色く色を付けた部分ですね。 小さくてちょっと見にくいですが、 not リレーで反転しています。 これで、 NOT A が…

kairo-gokko (34) 1bit CPU 1

目次ページに戻る / 前 / 次 Dフリップフロップが手に入ったら 1bit CPU が作れます。 右上の出力を左上の入力につないであげるだけ (2つの子回路がつながって 1つになるので、片方の子回路のプラス極・マイナス極は消しました)。 できました! 1bit CPU …

kairo-gokko (33) Dフリップフロップ 2

目次ページに戻る / 前 / 次 前回作った回路をさらに改造します。 前回の回路を左右に2つ並べる 左側=前段 / 右側=後段 とする 後段の切り替え器部分を消し、代わりに前段の出力をつなげる 前段と後段の門番回路をつなげる 前段の方は NOT で反転する す…

kairo-gokko (32) Dフリップフロップ 1

目次ページに戻る / 前 / 次 前回、順序回路である RSフリップフロップが動かせることが分かりました。 曳光弾が通ったので、これで一安心です。 あとはリファクタリングなり最適化なりを、ゆるゆると、好きなだけやっていけばよいでしょう……。 といいつつ、…

kairo-gokko (31) RSフリップフロップ

目次ページに戻る / 前 / 次 さて、基本的な部品が揃ったところで、 「部品を組み合わせて何か作る」ステージに進みましょう、 まずは組み合わせ回路から……とも考えましたが、もういきなりフリップフロップを作ってしまいます。 というのは、さっさと曳光弾…

kairo-gokko (30) OR / NOR / XOR

目次ページに戻る / 前 / 次 基本的なところでいうと OR がまだ残っています。 作りましょう。 OR スイッチを並列つなぎにすると OR になります。 これまでグリッド線を描画していましたが、 見にくいような気がしてきたため、 コメントアウトして描画を止め…

kairo-gokko (29) AND / NAND

目次ページに戻る / 前 / 次 さて! ようやく準備が整いました。ここからがお楽しみですよ! AND NOT はすでに作ったので次は AND を作ります。 スイッチを直列つなぎにして equal リレーで切り替え。 NAND NOT と AND ができたということは……NAND が作れま…

kairo-gokko (28) 回路の選択

目次ページに戻る / 前 / 次 早く先に進みたいのですが、今回も主にブログに貼る都合による修正です。 今までの作りだと実行時に 1つの回路だけしか動かすことができませんでしたが、 上の画像のようにドロップダウンで複数の回路から選択して切り替えられる…