merge
This commit is contained in:
parent
56e5f290e2
commit
43ee7b8e5b
3
content/.obsidian/community-plugins.json
vendored
3
content/.obsidian/community-plugins.json
vendored
@ -5,5 +5,6 @@
|
|||||||
"obsidian-local-rest-api",
|
"obsidian-local-rest-api",
|
||||||
"obsidian-excalidraw-plugin",
|
"obsidian-excalidraw-plugin",
|
||||||
"obsidian-git",
|
"obsidian-git",
|
||||||
"obsidian-auto-link-title"
|
"obsidian-auto-link-title",
|
||||||
|
"2hop-links-plus"
|
||||||
]
|
]
|
2
content/.obsidian/core-plugins.json
vendored
2
content/.obsidian/core-plugins.json
vendored
@ -19,7 +19,7 @@
|
|||||||
"zk-prefixer": false,
|
"zk-prefixer": false,
|
||||||
"random-note": false,
|
"random-note": false,
|
||||||
"outline": true,
|
"outline": true,
|
||||||
"word-count": true,
|
"word-count": false,
|
||||||
"slides": false,
|
"slides": false,
|
||||||
"audio-recorder": false,
|
"audio-recorder": false,
|
||||||
"workspaces": false,
|
"workspaces": false,
|
||||||
|
2
content/.obsidian/graph.json
vendored
2
content/.obsidian/graph.json
vendored
@ -17,6 +17,6 @@
|
|||||||
"repelStrength": 11.1808268229167,
|
"repelStrength": 11.1808268229167,
|
||||||
"linkStrength": 0.893798828125,
|
"linkStrength": 0.893798828125,
|
||||||
"linkDistance": 48,
|
"linkDistance": 48,
|
||||||
"scale": 0.15383699374609286,
|
"scale": 0.7181374393724258,
|
||||||
"close": true
|
"close": true
|
||||||
}
|
}
|
6
content/Bruce Archer.md
Normal file
6
content/Bruce Archer.md
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
date: 2024-10-29 14:15
|
||||||
|
---
|
||||||
|
#person
|
||||||
|
|
||||||
|
[L. Bruce Archer - Monoskop](https://monoskop.org/L._Bruce_Archer)
|
@ -4,7 +4,6 @@ date: "2023-10-29T18:14:14+0900"
|
|||||||
#programming #music #sound
|
#programming #music #sound
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[Algorithmic symphonies from one line of code -- how and why?(2011)](http://countercomplex.blogspot.com/2011/10/algorithmic-symphonies-from-one-line-of.html)
|
[Algorithmic symphonies from one line of code -- how and why?(2011)](http://countercomplex.blogspot.com/2011/10/algorithmic-symphonies-from-one-line-of.html)
|
||||||
|
|
||||||
|
|
||||||
@ -18,7 +17,7 @@ Bytebeatは2011年に[[viznut]]がYoutube上の動画で公開し、自身のブ
|
|||||||
|
|
||||||
[HTML5 Bytebeat](https://greggman.com/downloads/examples/html5bytebeat/html5bytebeat.html)
|
[HTML5 Bytebeat](https://greggman.com/downloads/examples/html5bytebeat/html5bytebeat.html)
|
||||||
|
|
||||||
[Bytebeat Composer](https://sarpnt.github.io/bytebeat-composer)
|
[Bytebeat Composer](https://bytebeat.ficial.net/)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -32,13 +31,12 @@ Bytebeatは元々次のようなC言語のプログラムで作られてた。
|
|||||||
main(t){for(;;t++)putchar(((t<<1)^((t<<1)+(t>>7)&t>>12))|t>>(4-(1^7&(t>>19)))|t>>7);}
|
main(t){for(;;t++)putchar(((t<<1)^((t<<1)+(t>>7)&t>>12))|t>>(4-(1^7&(t>>19)))|t>>7);}
|
||||||
```
|
```
|
||||||
|
|
||||||
このC言語のコードは極限まで圧縮されているのでもうちょっと丁寧に書くとこうなります。
|
このC言語のコードは極限まで圧縮されているのでもうちょっと丁寧に書くとこうなります(大昔のCコンパイラでない限りエラーで落とされる)。
|
||||||
|
|
||||||
```c
|
```c
|
||||||
int main(int t){
|
#include <stdio.h>
|
||||||
for(;;t++){
|
int main(){
|
||||||
putchar(((t<<1)^((t<<1)+(t>>7)&t>>12))|t>>(4-(1^7&(t>>19)))|t>>7);
|
for(int t=0;;t++) putchar(((t<<1)^((t<<1)+(t>>7)&t>>12))|t>>(4-(1^7&(t>>19)))|t>>7);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -47,7 +45,7 @@ int main(int t){
|
|||||||
macOSでやろうとするなら、`ffmpeg`に付属する`ffplay`で次のようなコードで書ける
|
macOSでやろうとするなら、`ffmpeg`に付属する`ffplay`で次のようなコードで書ける
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
program | ffplay -f u8 -i pipe:0 -ar 44k -ac 1
|
program | ffplay -f u8 -i pipe:0 -ar 8k -ch_layout mono
|
||||||
```
|
```
|
||||||
|
|
||||||
どうせならC言語使わずにデータを生成したいが、シェルスクリプトで直接バイナリを扱うのは死ぬほどだるい(`printf`コマンドや`bc`であれこれすれば不可能でもないが、結局ファイルを一度経由しないと厳しい)
|
どうせならC言語使わずにデータを生成したいが、シェルスクリプトで直接バイナリを扱うのは死ぬほどだるい(`printf`コマンドや`bc`であれこれすれば不可能でもないが、結局ファイルを一度経由しないと厳しい)
|
||||||
@ -65,11 +63,7 @@ let t = 0;
|
|||||||
|
|
||||||
const mainProcess = () =>{
|
const mainProcess = () =>{
|
||||||
const data = Uint8Array.from({ length: length },
|
const data = Uint8Array.from({ length: length },
|
||||||
(v, _t) => {
|
(v, _t) => bytebeat(t++)
|
||||||
const res = bytebeat(t);
|
|
||||||
t += 1;
|
|
||||||
return res
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
process.stdout.write(data);
|
process.stdout.write(data);
|
||||||
};
|
};
|
||||||
|
7
content/Christopher Alexander.md
Normal file
7
content/Christopher Alexander.md
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
date: 2024-10-29 13:49
|
||||||
|
---
|
||||||
|
|
||||||
|
#person #stub
|
||||||
|
|
||||||
|
[[パターン・ランゲージ]]の提唱者、建築家で研究者
|
10
content/Computation Expression.md
Normal file
10
content/Computation Expression.md
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
date: 2024-10-30 14:39
|
||||||
|
---
|
||||||
|
#programming
|
||||||
|
|
||||||
|
[[FSharp|F#]]で使えるDSLを構築する方法。
|
||||||
|
|
||||||
|
[[Haskell]]のdo式をユーザーでカスタマイズできる・・・みたいな感じだと思う。
|
||||||
|
|
||||||
|
[Computation expressions: Introduction | F# for fun and profit](https://fsharpforfunandprofit.com/posts/computation-expressions-intro/)
|
8
content/FSharp.md
Normal file
8
content/FSharp.md
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
date: 2024-10-30 14:35
|
||||||
|
---
|
||||||
|
#programming-language
|
||||||
|
|
||||||
|
C#のランタイムである.Net上で動く関数型言語。
|
||||||
|
|
||||||
|
[[Computation Expression]]とか独自のDSLを構築する方法で有名
|
8
content/Felienne Harmans.md
Normal file
8
content/Felienne Harmans.md
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
date: 2024-10-25 18:01
|
||||||
|
---
|
||||||
|
#stub #person
|
||||||
|
|
||||||
|
[Felienne Hermans](https://www.felienne.com/)
|
||||||
|
|
||||||
|
|
11
content/Feminism in Programming Language Design.md
Normal file
11
content/Feminism in Programming Language Design.md
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
date: 2024-10-25 17:59
|
||||||
|
---
|
||||||
|
|
||||||
|
#stub #paper #feminism #programming-language
|
||||||
|
|
||||||
|
[Paper: Feminism in Programming Language Design – Felienne Hermans](https://www.felienne.com/archives/8470)
|
||||||
|
|
||||||
|
[A Case for Feminism in Programming Language Design | Proceedings of the 2024 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software](https://dl.acm.org/doi/10.1145/3689492.3689809)
|
||||||
|
|
||||||
|
[[Felienne Harmans]] と[[Ari Schlesinger]]
|
12
content/The Nature of Research - Bruce Archer.md
Normal file
12
content/The Nature of Research - Bruce Archer.md
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
---
|
||||||
|
date: 2024-10-29 14:13
|
||||||
|
---
|
||||||
|
|
||||||
|
#paper #stub
|
||||||
|
|
||||||
|
[[Bruce Archer]]
|
||||||
|
|
||||||
|
[The Nature of Research : Bruce Archer : Free Download, Borrow, and Streaming : Internet Archive](https://archive.org/details/TheNatureOfResearch)
|
||||||
|
|
||||||
|
|
||||||
|
[[デザインリサーチ]]
|
15
content/The Timeless Way of Programming - Tomas Petricek.md
Normal file
15
content/The Timeless Way of Programming - Tomas Petricek.md
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
date: 2024-10-29 14:08
|
||||||
|
---
|
||||||
|
#scrap
|
||||||
|
|
||||||
|
[[Tomas Petricek]]
|
||||||
|
|
||||||
|
[The Timeless Way of Programming - Tomas Petricek](https://tomasp.net/blog/2022/timeless-way/)
|
||||||
|
|
||||||
|
ここがいい(DeepL翻訳)
|
||||||
|
|
||||||
|
> ### メンテナンスから生活へ
|
||||||
|
>
|
||||||
|
> 従来のソフトウェア開発プロセスでは、_開発_ と _保守_ を厳密に分離していました。 これは、常に進化するシステム (たとえば、常に進化する Twitter のようなシステム) について話す場合はそうではありませんが、その場合でも、そのようなシステムはプログラマが保守されるとみなすコンポーネントで構成されています。 上記で示唆したように、アレクサンダーの考え方は(従来のアーキテクトの考え方とは対照的に)、この2つを別個のフェーズと見なさない考え方により適していると思う。
|
||||||
|
> _成長_ という観点から、より有機的な思考に移行することは、明らかに技術的な問題だけでなく、社会的な問題でもある。 社会的な側面は、最近出版された[イノベーションの妄想](https://amzn.to/3CKtmfL "The Innovation Delusion: How Our Obsession with the New Has Disrupted the Work That Matters Most - Lee Vinsel, Andrew L. Russell")という本の主題である。 この本では、「『進歩』を『イノベーション』に置き換えることで、目新しさが改善であるかどうかという問題を回避することができる」という事実など、いくつかの素晴らしい指摘がなされている。 この本の重要なポイントは、[オープンソースソフトウェア](https://arstechnica.com/information-technology/2014/04/tech-giants-chastened-by-heartbleed-finally-agree-to-fund-openssl/)だけでなく、家事労働などの分野でも、社会がイノベーションとメンテナンスをどのように評価するかの不均衡が大きな問題につながっているということだ。
|
11
content/Tomas Petricek.md
Normal file
11
content/Tomas Petricek.md
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
date: 2024-10-29 14:06
|
||||||
|
---
|
||||||
|
|
||||||
|
#person #stub
|
||||||
|
|
||||||
|
プログラミングの思想の哲学などの研究者。[[FSharp|F#]]が好きらしい。
|
||||||
|
|
||||||
|
[Tomas Petricek - New ways of thinking about programming](https://tomasp.net/)
|
||||||
|
|
||||||
|
[[プログラミング基盤]]
|
118
content/mimiumでMIDIインプットを実装.md
Normal file
118
content/mimiumでMIDIインプットを実装.md
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
---
|
||||||
|
date: 2024-10-30 15:42
|
||||||
|
---
|
||||||
|
#mimium
|
||||||
|
|
||||||
|
## 要件
|
||||||
|
|
||||||
|
どこまでMIDIインプットをmimiumの世界の外側として捉えるか
|
||||||
|
|
||||||
|
|
||||||
|
### 先行例
|
||||||
|
|
||||||
|
[[SuperCollider]]や[[ChucK]]はコールバックを登録するようなイメージ
|
||||||
|
|
||||||
|
[Using MIDI | SuperCollider 3.12.2 Help](https://doc.sccode.org/Guides/UsingMIDI.html
|
||||||
|
|
||||||
|
```smalltalk
|
||||||
|
s.boot;
|
||||||
|
|
||||||
|
(
|
||||||
|
var notes, on, off;
|
||||||
|
|
||||||
|
MIDIClient.init;
|
||||||
|
MIDIIn.connectAll;
|
||||||
|
|
||||||
|
notes = Array.newClear(128); // array has one slot per possible MIDI note
|
||||||
|
|
||||||
|
on = MIDIFunc.noteOn({ |veloc, num, chan, src|
|
||||||
|
notes[num] = Synth(\default, [\freq, num.midicps,
|
||||||
|
\amp, veloc * 0.00315]);
|
||||||
|
});
|
||||||
|
|
||||||
|
off = MIDIFunc.noteOff({ |veloc, num, chan, src|
|
||||||
|
notes[num].release;
|
||||||
|
});
|
||||||
|
|
||||||
|
q = { on.free; off.free; };
|
||||||
|
)
|
||||||
|
|
||||||
|
// when done:
|
||||||
|
q.value;
|
||||||
|
```
|
||||||
|
|
||||||
|
まあこれはDSPアウトプットの合成が.playで暗黙的に行える(加算で合成されるという想定)だからできることかな、、、
|
||||||
|
|
||||||
|
ChuckもボイスごとにShredを生やす方向で対応してるからちょっと微妙だ
|
||||||
|
|
||||||
|
[Chuck - Input & Output](https://chuck.stanford.edu/doc/reference/io.html#MidiIn)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
現実的には、[[Faust]]のように、ボイスアロケーターは外側で実装してしまい、非同期に更新されうるAtomicな値のセルをノートやccのデータとして受け取れるようにすれば当面は十分
|
||||||
|
|
||||||
|
が、最終的にはMIDIエフェクト(MIDI信号自体のディレイやクォンタイズ、スロットリングとか)を[[FUnctional Reactive Programming|FRP]]っぽく書けると嬉しい
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Noteのバインドの記法
|
||||||
|
|
||||||
|
```rust
|
||||||
|
let cell:()->float = bind_midi_note_mono(channel)
|
||||||
|
|
||||||
|
let (note,vel) = cell(); //値の取り出し
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
```rust
|
||||||
|
//rust
|
||||||
|
fn bind_midi_note_mono(&mut self ,vm:&mut Machine)->ReturnCode{
|
||||||
|
let ch = Machine::get_as::<f64>(vm.get_stack(0));
|
||||||
|
let cell = Arc::new((AtomicF64::new(),AtomicF64::new() ));
|
||||||
|
self.add_midi_listener(ch,|note,vel|{
|
||||||
|
let (note_c,vel_c) = cell.clone();
|
||||||
|
note_c.write(note);
|
||||||
|
vel_c.write(vel);
|
||||||
|
});
|
||||||
|
let cls = |vm:&mut Machine|->ReturnCode{
|
||||||
|
let (note_c,vel_c) = cell.clone();
|
||||||
|
vm.set_stack(0,Machine::to_value(note_c));
|
||||||
|
vm.set_stack(1,Machine::to_value(vel_c));
|
||||||
|
2
|
||||||
|
}
|
||||||
|
vm::set_stack(0, wrap_rust_closure(cls))
|
||||||
|
1
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
あとは頑張って`add_midi_listener`相当の何かを作ろうって感じだな(関数型っぽくはないけども)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
IOの順序保証とか考える
|
||||||
|
|
||||||
|
正格評価だとIOモナドとかはそもそも考える必要がない
|
||||||
|
|
||||||
|
[Algebraic Effects入門](https://v2.aintek.xyz/posts/introduction-to-algebraic-effects)
|
||||||
|
|
||||||
|
> `type 'a io = unit -> 'a`
|
||||||
|
> 純粋な値は以下のようなIOモナドにリフトできる。
|
||||||
|
> `let return x = fun () -> x`
|
||||||
|
> 計算はバインド演算子によってつなげることができる。
|
||||||
|
> `let (>>=) c1 c2 = fun () -> c2 (c1 ())`
|
||||||
|
|
||||||
|
mimiumだとバインド演算子ってこうか(ジェネリクスが必要だけども)
|
||||||
|
|
||||||
|
```rust
|
||||||
|
fn bind(f1,f2){
|
||||||
|
| | f1() |> f2
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
58
content/mimiumのMIRコンパイル過程を真面目に考える.md
Normal file
58
content/mimiumのMIRコンパイル過程を真面目に考える.md
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
---
|
||||||
|
date: 2024-10-20 12:02
|
||||||
|
---
|
||||||
|
#mimium
|
||||||
|
|
||||||
|
ツリー形式からBasicBlockのインストラクション形式に変える
|
||||||
|
|
||||||
|
Stateのこととupvalueを両方処理しなくてはならない
|
||||||
|
|
||||||
|
StateSize計算とUpvalue計算の両方をtraitとして切り出す方がいいのかな
|
||||||
|
|
||||||
|
|
||||||
|
## 値
|
||||||
|
|
||||||
|
$$
|
||||||
|
\begin{align}
|
||||||
|
v \; ::= & \quad R \\
|
||||||
|
| & (\lambda x:\tau.e, [\Gamma, x:e],StateStorage(p,Vec)) \quad & [Closure]\\
|
||||||
|
\end{align}
|
||||||
|
$$
|
||||||
|
|
||||||
|
$$
|
||||||
|
\begin{align}
|
||||||
|
e \; ::=& \quad x \quad x \in \mathbb{V} \quad & [value]\\
|
||||||
|
|& \quad \lambda x.e \quad & [lambda]\\
|
||||||
|
|& \quad e \; e \quad & [app(global,stateful)]\\
|
||||||
|
|& \quad appcls \; e \; e \quad & [appclosure]\\
|
||||||
|
|& \quad fix \; x.e \quad & [fixpoint]\\
|
||||||
|
|& \quad getstate \; e \; I_n \; I_s \quad & [feed] \\
|
||||||
|
|& \quad delay \; e \; e & [delay]\\
|
||||||
|
\end{align}
|
||||||
|
$$
|
||||||
|
|
||||||
|
結局[[The w-calculus a synchronous framework for the verified modelling of digital signal processing algorithms|W計算]]のStaged Interpreterと変わらんかもな
|
||||||
|
|
||||||
|
そうすると型付けの時点でクロージャ相当の項とグローバル関数適用の項は分かれることになる?エフェクトとして考えるのが妥当なのかな
|
||||||
|
|
||||||
|
## 型
|
||||||
|
|
||||||
|
$$
|
||||||
|
\begin{align}
|
||||||
|
\tau ::=&\quad R_a \quad & a \in \mathbb{N}\\
|
||||||
|
|&\quad I_n \quad &n \in \mathbb{N} \\\
|
||||||
|
|&\quad \tau → \tau \quad \\
|
||||||
|
% |&\quad \langle \tau \rangle
|
||||||
|
\end{align}
|
||||||
|
$$
|
||||||
|
|
||||||
|
## コンパイル
|
||||||
|
|
||||||
|
```ocaml
|
||||||
|
let compiler = fun e -> match e with
|
||||||
|
Id(x) ->
|
||||||
|
| App(e1,e2)->
|
||||||
|
| Feed(x,e) ->
|
||||||
|
|
||||||
|
|
||||||
|
```
|
@ -209,3 +209,35 @@ fn filterbank (n,filter){ //n:0 filter: 1
|
|||||||
あ、でも`callcls`命令実行の時だけ、最初にgetstateを実行、暗黙的に読み出して、その中身のポインタへ飛べばいいのか
|
あ、でも`callcls`命令実行の時だけ、最初にgetstateを実行、暗黙的に読み出して、その中身のポインタへ飛べばいいのか
|
||||||
|
|
||||||
Closureを作った時にどうやってstateのメモリを拡張するかというと、ヒープ上のクロージャのデータ構造自体にstateへのポインタを持たせないと無理?
|
Closureを作った時にどうやってstateのメモリを拡張するかというと、ヒープ上のクロージャのデータ構造自体にstateへのポインタを持たせないと無理?
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
最小限の表現としてはCall(Stateポインタをいじる可能性がある)とCallClsの2種類で対応可能なんだろうけど、最適化を考えると
|
||||||
|
|
||||||
|
- Call (ほぼ純粋な関数)
|
||||||
|
- CallState (後々SelfとかDelayを呼び出しうる関数)
|
||||||
|
- CallClosure
|
||||||
|
- CallExtFunction
|
||||||
|
|
||||||
|
ここにTailCallとか加えると、それぞれに一つずつTailCall用の命令が映えるみたいな感じになるのだろうか
|
||||||
|
|
||||||
|
コンパイル時ifが使える想定として
|
||||||
|
|
||||||
|
```rust
|
||||||
|
call_function<is_tailcall,is_stateful>(&mut self,f:F){
|
||||||
|
ifc !is_tailcall{
|
||||||
|
self.stack.push_return_address();
|
||||||
|
}
|
||||||
|
ifc is_closure{
|
||||||
|
self.stateptr_stack.push(f.state_stack_ptr)
|
||||||
|
}
|
||||||
|
let nret = f(self);
|
||||||
|
ifc is_closure{
|
||||||
|
self.stateptr_stack.pop()
|
||||||
|
}
|
||||||
|
ifc !is_tailcall{
|
||||||
|
self.stack.push_return_address();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
@ -56,14 +56,10 @@ $$
|
|||||||
\begin{align}
|
\begin{align}
|
||||||
e \; ::=& \quad x \quad x \in \mathbb{V} \quad & [value]\\
|
e \; ::=& \quad x \quad x \in \mathbb{V} \quad & [value]\\
|
||||||
|& \quad \lambda x.e \quad & [lambda]\\
|
|& \quad \lambda x.e \quad & [lambda]\\
|
||||||
|& \quad fix \; x.e \quad & [fixpoint]\\
|
|
||||||
|& \quad e \; e \quad & [app]\\
|
|& \quad e \; e \quad & [app]\\
|
||||||
|
|& \quad fix \; x.e \quad & [fixpoint]\\
|
||||||
|& \quad feed \; x.e \quad & [feed] \\
|
|& \quad feed \; x.e \quad & [feed] \\
|
||||||
|& \quad delay \; e \; e & [delay]\\
|
|& \quad delay \; e \; e & [delay]\\
|
||||||
%%|& \quad (e_1,e_2) \quad & [product]\\
|
|
||||||
%%|& \quad \pi_n e \quad n\in \mathbb{N},\; n>0 \quad & [project]\\
|
|
||||||
%%|& \quad \langle e \rangle \quad & [code] \\
|
|
||||||
%%|& \quad \textasciitilde e \quad & [escape]
|
|
||||||
\end{align}
|
\end{align}
|
||||||
$$
|
$$
|
||||||
|
|
||||||
|
48
content/オープンソースLSI設計環境の構築.md
Normal file
48
content/オープンソースLSI設計環境の構築.md
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
---
|
||||||
|
date: 2024-10-27 11:59
|
||||||
|
---
|
||||||
|
|
||||||
|
#transistor #openlsi
|
||||||
|
|
||||||
|
このシリーズが参考になりそう
|
||||||
|
|
||||||
|
[SkyWater 130 nm フルカスタム設計への道|Akira Tsuchiya|note](https://note.com/akira_tsuchiya/m/m7877b0dd1dbe)
|
||||||
|
|
||||||
|
Dockerでセットアップするならここで紹介されてた
|
||||||
|
|
||||||
|
[GitHub - iic-jku/IIC-OSIC-TOOLS: IIC-OSIC-TOOLS is an all-in-one Docker image for SKY130/GF180/IHP130-based analog and digital chip design. AMD64 and ARM64 are natively supported.](https://github.com/iic-jku/IIC-OSIC-TOOLS)
|
||||||
|
|
||||||
|
を使うのが良さそう。(ただしGUIを表示するためにXserver(MacならXQuartz)が必要になる。VNCでもいけるけどちょっと重いらしい)
|
||||||
|
|
||||||
|
|
||||||
|
とりあえずローカルでセットアップするなら[[ISHI-KAI]]のスクリプトを使うと良い(Macの場合中でbrewを叩くので環境汚れるのは覚悟の上で)。
|
||||||
|
|
||||||
|
[GitHub - ishi-kai/OpenRule1umPDK\_setupEDA: OpenRule1umPDKを各種環境にセットアップするためのスクリプトです。](https://github.com/ishi-kai/OpenRule1umPDK_setupEDA)
|
||||||
|
|
||||||
|
基本的に使うことになるのは
|
||||||
|
|
||||||
|
- [[xschem]]
|
||||||
|
- [[klayout]]
|
||||||
|
- [[netgen]]
|
||||||
|
- [[ngspice]]
|
||||||
|
|
||||||
|
あたり。xschemとklayoutはKiCADやEagleの回路図エディタとレイアウトエディタにそれぞれ相当するものだと思えば良いっぽい。ngspiceはKiCADでも使ってるSPICEシミュレータ。
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## PDK(Process Design Kit)
|
||||||
|
|
||||||
|
- シミュレーションライブラリ
|
||||||
|
- デザインルール
|
||||||
|
- LVS
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
## OpenRule1umで使われる用語とかの解説
|
||||||
|
|
||||||
|
[MakeLSI お絵描きを理解する](https://sinby.com/posts/2022/08150.html)
|
||||||
|
|
||||||
|
シンボルのライブラリさえ合わせられれば.schはxschemでなくKiCADでも大丈夫なのかな?
|
||||||
|
|
||||||
|
|
7
content/デザインリサーチ.md
Normal file
7
content/デザインリサーチ.md
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
date: 2024-10-29 14:13
|
||||||
|
---
|
||||||
|
|
||||||
|
#stub #research
|
||||||
|
|
||||||
|
[[リサーチ・スルー・デザイン]]
|
14
content/プログラミング基盤.md
Normal file
14
content/プログラミング基盤.md
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
---
|
||||||
|
date: 2024-10-29 14:36
|
||||||
|
---
|
||||||
|
[[Tomas Petricek]]が呼んでいる概念
|
||||||
|
|
||||||
|
[No-code, no thought? Substrates for simple programming for all - Tomas Petricek](https://tomasp.net/blog/2022/no-code-substrates/)
|
||||||
|
|
||||||
|
プログラミングの学習の階段([[Ladder of Complexity]] ?だっけ)の話と似ている
|
||||||
|
|
||||||
|
[[加藤淳|加藤]]さんのスライドにも出てくるな
|
||||||
|
|
||||||
|
[media2024autumn-kato-slides.pdf](https://junkato.jp/publications/media2024autumn-kato-slides.pdf)
|
||||||
|
|
||||||
|
[Beyond Applications: Interaction Substrates and Instruments | Proceedings of the 34th Conference on l'Interaction Humain-Machine](https://doi.org/10.1145/3583961.3583968)
|
@ -19,6 +19,8 @@ date: 2024-04-02 15:37
|
|||||||
|
|
||||||
## 参考
|
## 参考
|
||||||
|
|
||||||
|
[[好きなWikipediaの記事]]
|
||||||
|
|
||||||
[好きな個人ホームページ | 麦 Baku](https://baku89.com/list/homepages)
|
[好きな個人ホームページ | 麦 Baku](https://baku89.com/list/homepages)
|
||||||
|
|
||||||
|
|
||||||
|
5
content/リサーチ・スルー・デザイン.md
Normal file
5
content/リサーチ・スルー・デザイン.md
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
date: 2024-10-29 14:14
|
||||||
|
---
|
||||||
|
|
||||||
|
#stub #research
|
@ -14,5 +14,6 @@ reference: [面白かったWikipedia記事の一覧 | 麦 Baku](https://baku89.c
|
|||||||
- なんでこの記事作ったのか謎すぎて面白い(はじめに記事を作ったユーザーは無期限ブロックをくらっている)
|
- なんでこの記事作ったのか謎すぎて面白い(はじめに記事を作ったユーザーは無期限ブロックをくらっている)
|
||||||
- [肋骨レコード](https://ja.wikipedia.org/wiki/%E8%82%8B%E9%AA%A8%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89)
|
- [肋骨レコード](https://ja.wikipedia.org/wiki/%E8%82%8B%E9%AA%A8%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89)
|
||||||
- [アコースティック・キティー](https://ja.wikipedia.org/wiki/%E3%82%A2%E3%82%B3%E3%83%BC%E3%82%B9%E3%83%86%E3%82%A3%E3%83%83%E3%82%AF%E3%83%BB%E3%82%AD%E3%83%86%E3%82%A3%E3%83%BC)
|
- [アコースティック・キティー](https://ja.wikipedia.org/wiki/%E3%82%A2%E3%82%B3%E3%83%BC%E3%82%B9%E3%83%86%E3%82%A3%E3%83%83%E3%82%AF%E3%83%BB%E3%82%AD%E3%83%86%E3%82%A3%E3%83%BC)
|
||||||
|
- [ラムダ計算騎士団](https://ja.wikipedia.org/wiki/%E3%83%A9%E3%83%A0%E3%83%80%E8%A8%88%E7%AE%97%E9%A8%8E%E5%A3%AB%E5%9B%A3)
|
||||||
|
|
||||||
[^token]: tokenさんが[貼ってた](https://fedibird.com/@aknosp6/112240788498392236)のを見て。
|
[^token]: tokenさんが[貼ってた](https://fedibird.com/@aknosp6/112240788498392236)のを見て。
|
||||||
|
17
content/無名の質.md
Normal file
17
content/無名の質.md
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
date: 2024-10-29 13:48
|
||||||
|
---
|
||||||
|
#notion
|
||||||
|
|
||||||
|
= The quality without a name
|
||||||
|
|
||||||
|
建築家の[[Christopher Alexander]]が提示した概念
|
||||||
|
|
||||||
|
「特有のあの感じ」
|
||||||
|
|
||||||
|
ソフトウェア界隈ではデザインパターンみたいな方向からオブジェクト指向界隈を経由して割と定着してるっぽい?
|
||||||
|
|
||||||
|
[Software Architecture — quest for “quality without a name” | by Vinay Muniganti | Walmart Global Tech Blog | Medium](https://medium.com/walmartglobaltech/software-architecture-quest-for-quality-without-a-name-92478f671fed)
|
||||||
|
|
||||||
|
|
||||||
|
[[The Timeless Way of Programming - Tomas Petricek]]
|
12
content/遅いソフトウェア開発.md
Normal file
12
content/遅いソフトウェア開発.md
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
---
|
||||||
|
date: 2024-10-29 14:07
|
||||||
|
---
|
||||||
|
#memo
|
||||||
|
|
||||||
|
[Slow software development](https://robinwinslow.uk/slow-software-development)
|
||||||
|
|
||||||
|
|
||||||
|
[[The Timeless Way of Programming - Tomas Petricek]]
|
||||||
|
|
||||||
|
「メンテナンスから生活へ」
|
||||||
|
|
Loading…
Reference in New Issue
Block a user