-
Notifications
You must be signed in to change notification settings - Fork 2
/
Notes.rtf
282 lines (255 loc) · 12.8 KB
/
Notes.rtf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
{\rtf1\ansi\ansicpg1252\cocoartf1504\cocoasubrtf830
{\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\fnil\fcharset0 Menlo-Regular;\f2\fnil\fcharset0 HelveticaNeue;
\f3\fswiss\fcharset0 ArialMT;}
{\colortbl;\red255\green255\blue255;\red2\green2\blue2;\red9\green80\blue208;\red0\green0\blue0;
\red60\green60\blue59;\red165\green66\blue16;\red83\green83\blue83;\red159\green159\blue159;\red38\green38\blue38;
\red0\green0\blue0;\red249\green249\blue249;\red60\green60\blue59;\red96\green96\blue96;\red255\green255\blue255;
\red203\green0\blue77;\red9\green76\blue116;\red240\green240\blue240;}
{\*\expandedcolortbl;;\csgenericrgb\c784\c784\c784;\cssrgb\c0\c41176\c85098;\csgray\c0;
\cssrgb\c30196\c30196\c29804;\cssrgb\c71373\c33725\c6667;\cssrgb\c40000\c40000\c40000;\cssrgb\c68627\c68627\c68627;\cssrgb\c20000\c20000\c20000;
\cssrgb\c0\c0\c0;\cssrgb\c98039\c98039\c98039;\cssrgb\c30196\c30196\c29804;\cssrgb\c45098\c45098\c45098;\cssrgb\c100000\c100000\c100000;
\cssrgb\c84314\c0\c37255;\cssrgb\c0\c37255\c52941;\cssrgb\c95294\c95294\c95294;}
\deftab720
\pard\pardeftab720\partightenfactor0
\f0\fs48 \cf2 publishing a new version\
try clippy (requires nightly for now)\
make sure tests work\
make sure examples work\
change the version number \
dependencies auto-update if the first non-zero number doesn\'92t change\
update categories (after slug pull request)\
\f1\fs34 \cf0 \CocoaLigature0 git tag version-0.X.0
\f0\fs48 \cf2 \CocoaLigature1 \
cargo package\
optional, allows you to inspect the target/package/*.crate file\
cargo publish\
\
\pard\pardeftab720\partightenfactor0
{\field{\*\fldinst{HYPERLINK "https://github.com/brson/rust-api-guidelines"}}{\fldrslt \cf2 https://github.com/brson/rust-api-guidelines}}\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720\pardirnatural\partightenfactor0
{\field{\*\fldinst{HYPERLINK "https://deterministic.space/elegant-apis-in-rust.html"}}{\fldrslt \cf2 https://deterministic.space/elegant-apis-in-rust.html}}\
https://pascalhertleif.de/artikel/good-practices-for-writing-rust-libraries/\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720\pardirnatural\partightenfactor0
{\field{\*\fldinst{HYPERLINK "http://cglab.ca/~abeinges/blah/too-many-lists/book/README.html"}}{\fldrslt \cf2 http://cglab.ca/~abeinges/blah/too-many-lists/book/README.html}}\
\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720\pardirnatural\partightenfactor0
{\field{\*\fldinst{HYPERLINK "https://rust-lang.github.io/book/second-edition/index.html"}}{\fldrslt \cf2 https://rust-lang.github.io/book/second-edition/index.html}}\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720\pardirnatural\partightenfactor0
{\field{\*\fldinst{HYPERLINK "https://doc.rust-lang.org/stable/nomicon/README.html"}}{\fldrslt \cf2 https://doc.rust-lang.org/stable/nomicon/README.html}}\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720\pardirnatural\partightenfactor0
{\field{\*\fldinst{HYPERLINK "https://rust-leipzig.github.io/architecture/2016/12/20/idiomatic-trees-in-rust/"}}{\fldrslt \cf2 https://rust-leipzig.github.io/architecture/2016/12/20/idiomatic-trees-in-rust/}}\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720\pardirnatural\partightenfactor0
{\field{\*\fldinst{HYPERLINK "https://github.com/rust-unofficial/patterns"}}{\fldrslt \cf2 https://github.com/rust-unofficial/patterns}}\
{\field{\*\fldinst{HYPERLINK "https://github.com/brson/rust-cookbook"}}{\fldrslt
\fs36 \cf3 \expnd0\expndtw0\kerning0
\ul \ulc3 https://github.com/brson/rust-cookbook}}
\fs36 \cf0 \expnd0\expndtw0\kerning0
\
\pard\pardeftab720\partightenfactor0
\cf0 \
{\field{\*\fldinst{HYPERLINK "https://thesquareplanet.com/blog/rust-tips-and-tricks/"}}{\fldrslt https://thesquareplanet.com/blog/rust-tips-and-tricks/}}\
\pard\pardeftab720\partightenfactor0
{\field{\*\fldinst{HYPERLINK "https://danielkeep.github.io/itercheat_baked.html"}}{\fldrslt
\fs48 \cf0 https://danielkeep.github.io/itercheat_baked.html}}\
\
\pard\pardeftab963\pardirnatural\partightenfactor0
\f1\fs40 \cf0 \kerning1\expnd0\expndtw0 \
rouille really simple, active\
rustful fairly light weight, built on top of hyper\
lot of docs, active\
iron pretty heavy weight\
very active\
{\field{\*\fldinst{HYPERLINK "https://www.jamestease.co.uk/blether/writing-a-basic-json-web-server-in-rust-using-iron"}}{\fldrslt https://www.jamestease.co.uk/blether/writing-a-basic-json-web-server-in-rust-using-iron}}\
nickel fairly light weight, built on top of hyper\
lot of examples, iffy docs, inactive\
pencil very light weight, built on top of hyper\
inactive\
\
\
curl http://127.0.0.1:9000/log/all\
\
curl -X PUT http://127.0.0.1:9000/set/time/10\
\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720\pardirnatural\partightenfactor0
{\field{\*\fldinst{HYPERLINK "http://es6-features.org/#Constants"}}{\fldrslt
\fs36 \cf4 \CocoaLigature0 http://es6-features.org/#Constants}}
\fs36 \cf4 \CocoaLigature0 \
\pard\pardeftab963\pardirnatural\partightenfactor0
\f0\fs48 \cf2 \CocoaLigature1 \
\pard\pardeftab720\sl540\partightenfactor0
\f1\fs36 \cf5 \expnd0\expndtw0\kerning0
\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720\pardirnatural\partightenfactor0
\cf0 \kerning1\expnd0\expndtw0 \CocoaLigature0 cargo test -- --nocapture
\fs28 \cf5 \expnd0\expndtw0\kerning0
\CocoaLigature1 \
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720\pardirnatural\partightenfactor0
\f0\fs48 \cf2 \kerning1\expnd0\expndtw0 \
\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720\pardirnatural\partightenfactor0
\b \cf2 user\
\
application\
\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720\pardirnatural\partightenfactor0
\b0 \cf2 socket?\
\
udp tcp
\b transport\
\b0 \\ /
\b \
\b0 lower_transport in general components send a packet and their struct\
|\
|\
upper_internet
\b internet
\b0 \
/ \\\
IPv4 IPv6
\b \
\b0 \\ /\
\\ /\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720\pardirnatural\partightenfactor0
\b \cf2
\b0 MAC
\b link\
\b0 \
\pard\pardeftab720\sl480\partightenfactor0
\f1\fs42 \cf6 \expnd0\expndtw0\kerning0
\
\pard\pardeftab720\sl440\qr\partightenfactor0
\f2\fs36\fsmilli18200 \cf7 can use mem::replace to extract a value from a mutable reference\
Option has a take method to make that even easier
\fs26 \cf8 \
\pard\pardeftab720\sl380\partightenfactor0
\f1\fs27\fsmilli13600 \cf9 rustc --explain E0106\
\pard\pardeftab720\sl300\partightenfactor0
\f2\fs26 \cf10 \cb11 \
\pard\pardeftab720\sl480\partightenfactor0
\f0\fs48 \cf2 \cb1 \kerning1\expnd0\expndtw0 \
\pard\pardeftab720\sl300\sa240\partightenfactor0
\cf2 \
\
Oct 14 - Kris\
\
\
\
\pard\pardeftab720\sl420\partightenfactor0
\f1\fs28 \cf12 \expnd0\expndtw0\kerning0
\outl0\strokewidth0 \strokec12 \
\pard\pardeftab720\sl300\partightenfactor0
\f3\fs26 \cf13 \strokec13 LINKTYPE_ETHERNET\cb14 = 1 802.3 ethernet
\f1\fs28 \cf12 \cb1 \strokec12 \
\f3\fs26 \cf13 \strokec13 LINKTYPE_IEEE802_11_RADIOTAP = 127\
\
LINKTYPE_IPV4\cb14 228 starts with an IPv4 header
\f1\fs28 \cf12 \cb1 \strokec12 \
\pard\pardeftab720\sl420\partightenfactor0
\cf12 \
\pard\pardeftab720\sl300\sa240\partightenfactor0
\f0\fs48 \cf2 \kerning1\expnd0\expndtw0 \outl0\strokewidth0 \
\pard\pardeftab720\sl420\partightenfactor0
\f1\fs28 \cf12 \expnd0\expndtw0\kerning0
\outl0\strokewidth0 \strokec12 \
\pard\pardeftab720\sl420\partightenfactor0
\cf5 \outl0\strokewidth0 \
\pard\pardeftab720\sl420\partightenfactor0
\cf15 \outl0\strokewidth0 \strokec15 impl\cf12 \strokec12 Medium80211Component\
\'a0\'a0\'a0\'a0\cf15 \strokec15 pub\cf12 \strokec12 \cf15 \strokec15 fn\cf12 \strokec12 \cf16 \strokec16 new\cf12 \strokec12 (sim: &\cf15 \strokec15 mut\cf12 \strokec12 Simulation, parent_id: ComponentID) -> \cf15 \strokec15 Self\cf12 \strokec12 \
\'a0\'a0\'a0\'a0\cf15 \strokec15 pub\cf12 \strokec12 \cf15 \strokec15 fn\cf12 \strokec12 \cf16 \strokec16 connect\cf12 \strokec12 (&\cf15 \strokec15 mut\cf12 \strokec12 Medium80211Component, above_out: OutPort<(ComponentID, Packet)>, above_i\cb17 n: InPort<Packet>) -> \cf15 \strokec15 Self\cf12 \cb1 \strokec12 \
\
\pard\pardeftab720\sl420\partightenfactor0
\cf5 \outl0\strokewidth0 \
\
\pard\pardeftab720\sl300\sa240\partightenfactor0
{\field{\*\fldinst{HYPERLINK "https://stackoverflow.com/questions/2177143/how-to-renew-an-iphone-development-certificate"}}{\fldrslt
\f0\fs48 \cf2 https://stackoverflow.com/questions/2177143/how-to-renew-an-iphone-development-certificate}}
\f0\fs48 \cf2 \kerning1\expnd0\expndtw0 \
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720\pardirnatural\partightenfactor0
\cf2 \
* Create an echo app:\
- try and get tcpdump working\
- add a WirelessMediumComponent \
- pcap should have \
maybe packets should be a list of headers and a payload?\
could hace a VecDeque of Slices\
little harder to inject bit errors, tho bit errors should be uncommon\
{\field{\*\fldinst{HYPERLINK "https://wiki.wireshark.org/Development/LibpcapFileFormat"}}{\fldrslt https://wiki.wireshark.org/Development/LibpcapFileFormat}}\
add a pcap comand line option\
- add in physical layer\
- add in transport layer\
\
- add lower_transport component\
- might want internet and transport components\
- use a real enum for protocol\
- do a commit once unit test works again\
- make file should probably check checksum\
or just have main do it\
integration test?\
- could have a make check\
runs all examples\
uses \'97finger-print option (examples assert if finger print option is used)\
- for unit tests could just feed inputs into a component and look at outputs\
maybe build a sim to do that\
* Could use {\field{\*\fldinst{HYPERLINK "https://crates.io/crates/lazy_static"}}{\fldrslt https://crates.io/crates/lazy_static}} to make a global config object\
- or the thread_local module\
* ansi-term: color coding output\
* Start working on snet:\
- write an IP test: two IP components directly connected\
- send an IP packet to loopback\
- might want to use tshark to test packet encoding\
- can we save off pcaps?\
\pard\pardeftab720\sl480\partightenfactor0
\f3\fs50\fsmilli25333 \cf10 \expnd0\expndtw0\kerning0
* Start using clippy\
* Add persistence?\
- maybe with some simple viewer tools\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720\pardirnatural\partightenfactor0
\f0\fs48 \cf2 \kerning1\expnd0\expndtw0 * Check parallelism:\
- maintain a list of buckets where the bucket number is how many threads executed\
- log that at debug\
- counting should only be done if should_log\
* Try
\fs36 \cf0 \expnd0\expndtw0\kerning0
#[warn(unused_must_use)]
\fs48 \cf2 \kerning1\expnd0\expndtw0 \
* Try separate executioners\
* Probably should have make targets to check finger prints\
* Could have optimistic parallelism:\
- default to scheduling num cores components\
- commit those that didn\'92t do a read from a key that a later time slice wrote to\
- otherwise commit those that executed at the same time slice\
- maybe self-adapt to scale back optimism\
* could have reflected tables to encode meta info: units, blurb, default value, maybe ranges\
* might also want some static sort of reporters\
- maybe a version that spits out escaped text for console runs\
- another could do rtf or markdown\
* have to pay close attention to reproducibility, even across architectures\
* Should be a way to collect results over runs\
* support multiple cores but not the cloud\
* probably just want to use code to configure\
* wonder if es could be sucked into the store\
\pard\pardeftab720\partightenfactor0
\cf2 * Would be cool to have a checkbox for animated runs\
- could have a checkbox under the run until button\
- would need to change Run Until to Stop\
- would need to disable Run Until Changed\
\pard\pardeftab720\sl480\partightenfactor0
\f3\fs50\fsmilli25333 \cf10 \expnd0\expndtw0\kerning0
* Could have a specialized project just to show log files:\
\pard\pardeftab963\pardirnatural\partightenfactor0
\f0\fs48 \cf2 \kerning1\expnd0\expndtw0 # comments are hash mark in first column\
# =~ is a case insensitive regex match\
# !=~ is a case insensitive regex non-match\
# expressions are applied in the order they are listed\
# to be really cool could have an option to persist these\
#time >= 0.0\
level >= Debug\
#show path =~ .+\
#hide message =~ xxx\
#color path red =~ error\
#back color path gray =~ blah\
\
\
\
}