Skip to content

Commit c364c51

Browse files
committed
2 parents 3807f37 + 1b05952 commit c364c51

25 files changed

+436
-1
lines changed

browser/data.json

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[1,2,3,4]

browser/error.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module.exports = 500
2+
3+
setTimeout(function () {
4+
throw new Error('whatever')
5+
}, 1000)

browser/hello.txt

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
HI THERE!!!!

browser/main.js

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
var gamma = require('gamma')
2+
var foo = require('foo')
3+
console.log(require('./data.json'))
4+
var fs = require('fs')
5+
var xhr = require('xhr')
6+
xhr('/hello.txt', function (err, res, body) {
7+
console.log(body)
8+
})
9+
10+
var img = document.createElement('img')
11+
img.src = 'data:image/jpg;base64,'
12+
+ fs.readFileSync(__dirname + '/tinycat.jpg', 'base64')
13+
document.body.appendChild(img)
14+
15+
foo(3, function (err, n) {
16+
document.body.innerHTML += '<u>' + n + '</u>'
17+
})

browser/package.json

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
"dependencies": {
3+
"brfs": "^1.4.3",
4+
"gamma": "^1.0.0",
5+
"glsl-noise": "0.0.0",
6+
"glslify": "^6.1.0",
7+
"level-browserify": "^1.1.1",
8+
"regl": "^1.3.0",
9+
"regl-camera": "^2.1.1",
10+
"webaudio": "^2.0.0",
11+
"xhr": "^2.4.0",
12+
"yo-yo": "^1.4.1",
13+
"yo-yoify": "^3.7.3"
14+
},
15+
"scripts": {
16+
"build": "browserify main.js > public/bundle.js",
17+
"watch": "watchify main.js -o public/bundle.js -dv"
18+
},
19+
"browserify": {
20+
"transform": [
21+
"brfs"
22+
]
23+
}
24+
}

browser/public/index.html

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<body>
2+
<h1>hi</h1>
3+
<script src="bundle.js"></script>
4+
</body>

browser/tinycat.jpg

39.1 KB
Loading

git.markdown

+1-1
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ checkout a previous commit to a new branch.
108108
`git branch` see what branch you're on and what branches are
109109
available.
110110

111-
`git branch -d dev` delete branch "dev"
111+
`git branch -D dev` delete branch "dev"
112112

113113
when making a new branch, default behavior copies from
114114
your current commit on your current branch.

node/count-http-server/404.html

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
<h1>404!!!!</h1>
2+
<div>file not found</div>

node/count-http-server/server.js

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
var http = require('http')
2+
var fs = require('fs')
3+
var count = 0
4+
var server = http.createServer(function (req, res) {
5+
console.log(req.method, req.url)
6+
if (req.method === 'GET' && req.url === '/') {
7+
res.setHeader('content-type', 'text/html')
8+
res.end(`<h1>HOWDY</h1>
9+
<div>you are the ${count++}th visitor</div>
10+
<div>sign my guestbook</div>
11+
`)
12+
} else {
13+
fs.readFile('404.html', function (err, src) {
14+
if (err) {
15+
res.statusCode = 500
16+
res.setHeader('content-type', 'text/plain')
17+
res.end(err + '\n')
18+
} else {
19+
res.statusCode = 404
20+
res.setHeader('content-type', 'text/html')
21+
res.end(src)
22+
}
23+
})
24+
}
25+
})
26+
server.listen(3000)
+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
<h1>404!!!!</h1>
2+
<div>file not found</div>
491 KB
Loading

node/modular-http-server/server.js

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
var http = require('http')
2+
var fs = require('fs')
3+
var ecstatic = require('ecstatic')
4+
var st = ecstatic(__dirname + '/public')
5+
var router = require('routes')()
6+
var count = 0
7+
8+
router.addRoute('GET /', function (req, res, m) {
9+
res.setHeader('content-type', 'text/html')
10+
res.end(`<h1>HOWDY</h1>
11+
<div>you are the ${count++}th visitor</div>
12+
<div>sign my guestbook</div>
13+
<form action="/guestbook" method="POST">
14+
<input type="text" placeholder="your name"
15+
name="name">
16+
<textarea name="msg"></textarea>
17+
</form>
18+
`)
19+
})
20+
router.addRoute('POST /guestbook', function (req, res, m) {
21+
var w = fs.createWriteStream('guestbook.txt', { flags: 'a+' })
22+
req.pipe(w, { end: false })
23+
req.on('end', function () { w.end('\n') })
24+
w.on('error', function (err) {
25+
res.statusCode = 500
26+
res.end(err + '\n')
27+
})
28+
w.on('finish', function () {
29+
res.end('thank you for signing my guestbook\n')
30+
})
31+
})
32+
33+
var server = http.createServer(function (req, res) {
34+
console.log(req.method, req.url)
35+
var m = router.match(req.method + ' ' + req.url)
36+
if (m) m.fn(req, res, m)
37+
else st(req, res)
38+
})
39+
server.listen(3000)

node/package.json

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"dependencies": {
3+
"bel": "^5.0.0",
4+
"choo": "^5.6.2",
5+
"concat-stream": "^1.6.0",
6+
"content-addressable-blob-store": "^4.5.1",
7+
"ecstatic": "^2.2.1",
8+
"filereader-stream": "^1.0.0",
9+
"hypercore": "^6.6.0",
10+
"hyperdrive": "^9.4.1",
11+
"hyperlog": "^4.12.1",
12+
"level": "^1.7.0",
13+
"routes": "^2.1.0",
14+
"xhr": "^2.4.0"
15+
}
16+
}

node/simple-http-server/server.js

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
var http = require('http')
2+
var server = http.createServer(function (req, res) {
3+
console.log(req.method, req.url)
4+
if (req.method === 'GET' && req.url === '/') {
5+
res.setHeader('content-type', 'text/html')
6+
res.end('<h1>HOWDY</h1>\n')
7+
} else {
8+
res.statusCode = 404
9+
res.setHeader('content-type', 'text/plain')
10+
res.end('not found\n')
11+
}
12+
})
13+
server.listen(3000)

node/tcp/client.js

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
2+
var net = require('net')
3+
var stream = net.connect(3000, 'localhost')
4+
process.stdin.pipe(stream).pipe(process.stdout)

node/tcp/server.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
var net = require('net')
2+
var server = net.createServer(function (stream) {
3+
stream.pipe(stream)
4+
})
5+
server.listen(3000)

p2pwiki/main.js

+89
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
var level = require('level-browserify')
2+
var hyperlog = require('hyperlog')
3+
var hyperkv = require('hyperkv')
4+
var log = hyperlog(level('kvlog.db'), { valueEncoding: 'json' })
5+
var kv = hyperkv({
6+
log: log,
7+
db: level('kvstore.db')
8+
})
9+
10+
var wswarm = require('webrtc-swarm')
11+
var signalhub = require('signalhub')
12+
var wsock = require('websocket-stream')
13+
14+
var app = require('choo')()
15+
var html = require('choo/html')
16+
var to = require('to2')
17+
18+
app.use(function (state, emitter) {
19+
var swarm = wswarm(signalhub('kvswarm',
20+
['https://signalhub.mafintosh.com']))
21+
swarm.on('peer', function (peer) {
22+
console.log('CONNECT')
23+
peer.pipe(log.replicate({ live: true })).pipe(peer)
24+
})
25+
})
26+
app.use(function (state, emitter) {
27+
state.page = {}
28+
state.title = ''
29+
emitter.on('open', function (title) {
30+
state.title = title
31+
kv.get(title, function (err, values) {
32+
state.page = values
33+
emitter.emit('render')
34+
})
35+
})
36+
emitter.on('wsync', function (href) {
37+
var stream = wsock(href)
38+
stream.pipe(log.replicate()).pipe(stream)
39+
})
40+
emitter.on('save', function (edit) {
41+
kv.put(edit.title, edit.body, function (err, node) {
42+
console.log(err, node)
43+
})
44+
})
45+
})
46+
47+
app.route('/', function (state, emit) {
48+
return html`<body>
49+
<h1>p2p social network log</h1>
50+
<form onsubmit=${onsubmit}>
51+
<div><input type="text" name="title"></div>
52+
<textarea name="body"></textarea>
53+
<div><button type="submit">POST</button></div>
54+
</form>
55+
<hr>
56+
<form onsubmit=${read}>
57+
<input type="text" name="title" value=${state.title}>
58+
<button type="submit">open</button>
59+
</form>
60+
<form onsubmit=${wsync}>
61+
<input type="text" name="wsock" placeholder="ws://">
62+
<button type="submit">sync</button>
63+
</form>
64+
${Object.keys(state.page).map(function (key) {
65+
return html`<div>
66+
<hr>
67+
<div>${key}</div>
68+
<pre>${state.page[key].value}</pre>
69+
</div>`
70+
})}
71+
</body>`
72+
function wsync (ev) {
73+
ev.preventDefault()
74+
emit('wsync', ev.target.wsock.value)
75+
}
76+
function read (ev) {
77+
ev.preventDefault()
78+
emit('open', ev.target.title.value)
79+
}
80+
function onsubmit (ev) {
81+
ev.preventDefault()
82+
emit('save', {
83+
title: ev.target.title.value,
84+
body: ev.target.body.value
85+
})
86+
ev.target.reset()
87+
}
88+
})
89+
app.mount('body')

p2pwiki/package.json

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"dependencies": {
3+
"budo": "^9.2.1",
4+
"choo": "^5.6.2",
5+
"hyperkv": "^2.0.3",
6+
"hyperlog": "^4.12.1",
7+
"level": "^1.7.0",
8+
"level-browserify": "^1.1.1",
9+
"signalhub": "^4.8.0",
10+
"subleveldown": "^2.1.0",
11+
"to2": "^1.0.0",
12+
"webrtc-swarm": "^2.8.0",
13+
"websocket-stream": "^5.0.0"
14+
},
15+
"scripts": {
16+
"start": "budo main.js"
17+
}
18+
}

p2pwiki/readme.md

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
to run this app:
2+
3+
```
4+
npm install
5+
npm start
6+
```

webapp2/count-server.js

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
var http = require('http')
2+
var level = require('level')
3+
var db = level('counter.db')
4+
var count = 0
5+
db.get('count', function (err, value) {
6+
count = Number(value || 0) + count
7+
})
8+
var router = require('routes')()
9+
router.addRoute('GET /', function (req, res, m) {
10+
res.setHeader('content-type', 'text/html')
11+
res.end('<h1>hello</h1>\n'
12+
+ 'you are the ' + (count++) + 'th visitor')
13+
db.put('count', count, function (err) {
14+
if (err) console.error(err)
15+
})
16+
})
17+
router.addRoute('*', function (req, res, m) {
18+
res.statusCode = 404
19+
res.setHeader('content-type', 'text/plain')
20+
res.end('not found\n')
21+
})
22+
23+
var server = http.createServer(function (req, res) {
24+
console.log(req.method, req.url)
25+
var m = router.match(req.method + ' ' + req.url)
26+
if (m) m.fn(req, res, m)
27+
else res.end('error')
28+
})
29+
server.listen(5000)

webapp2/main.js

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
var app = require('choo')()
2+
var html = require('choo/html')
3+
var mainpage = require('./mainpage.js')
4+
var xhr = require('xhr')
5+
6+
app.use(function (state, emitter) {
7+
Object.keys(initState).forEach(function (key) {
8+
state[key] = initState[key]
9+
})
10+
emitter.on('sign-guestbook', function (doc) {
11+
xhr({
12+
method: 'POST',
13+
host: location.host,
14+
url: '/guestbook',
15+
headers: { 'content-type': 'application/json' },
16+
body: JSON.stringify(doc)
17+
}, function (err, res, body) {
18+
if (err) console.error(err)
19+
state.messages.push(doc)
20+
emitter.emit('render')
21+
})
22+
})
23+
})
24+
app.route('/', require('./mainpage.js'))
25+
app.mount('body')

webapp2/mainpage.js

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
var html = require('choo/html')
2+
3+
module.exports = function (state, emit) {
4+
return html`<body>
5+
<h1>hello</h1>
6+
you are the <span id="count">${state.count++}</span>th visitor
7+
<hr>
8+
<form method="POST" action="/guestbook"
9+
onsubmit=${onsubmit}>
10+
<input type="text" name="name"
11+
placeholder="name">
12+
<textarea name="msg" placeholder="message"></textarea>
13+
<button type="submit">POST</button>
14+
</form>
15+
${state.messages.map(function (doc) {
16+
return html`<div>
17+
<div>${doc.name}</div>
18+
<pre>${doc.msg}</pre>
19+
</div>`
20+
})}
21+
<script>initState = ${JSON.stringify(state)}</script>
22+
<script src="bundle.js"></script>
23+
</body>`
24+
function onsubmit (ev) {
25+
ev.preventDefault()
26+
emit('sign-guestbook', {
27+
name: ev.target.name.value,
28+
msg: ev.target.msg.value
29+
})
30+
}
31+
}

0 commit comments

Comments
 (0)