feat: 초기 프로젝트 설정 및 룰.md 파일 추가

This commit is contained in:
2025-07-28 09:53:31 +09:00
commit 09a4d38512
8165 changed files with 1021855 additions and 0 deletions

View File

@@ -0,0 +1,23 @@
var multimeter = require('multimeter');
var multi = multimeter(process);
multi.on('^C', function () {
multi.charm.cursor(true);
multi.write('\n').destroy();
process.exit();
});
multi.charm.cursor(false);
multi.drop(function (bar) {
var iv = setInterval(function () {
var p = bar.percent();
bar.percent(p + 1);
if (p >= 100) {
clearInterval(iv);
multi.charm.cursor(true);
multi.write('\n').destroy();
}
}, 25);
});

View File

@@ -0,0 +1,47 @@
var multimeter = require('multimeter');
var multi = multimeter(process);
multi.on('^C', process.exit);
multi.charm.reset();
var bars = [];
var progress = [];
var deltas = [];
multi.write('Progress:\n\n');
for (var i = 0; i < 5; i++) {
var s = 'ABCDE'[i] + ': \n';
multi.write(s);
var bar = multi(s.length, i + 3, {
width : 20,
solid : {
text : '|',
foreground : 'white',
background : 'blue'
},
empty : { text : ' ' },
});
bars.push(bar);
deltas[i] = 1 + Math.random() * 9;
progress.push(0);
}
multi.write('\nbeep boop\n');
var pending = progress.length;
var iv = setInterval(function () {
progress.forEach(function (p, i) {
progress[i] += Math.random() * deltas[i];
bars[i].percent(progress[i]);
if (p < 100 && progress[i] >= 100) pending --;
if (pending === 0) {
multi.write('\nAll done.\n');
multi.destroy();
clearInterval(iv);
pending --;
}
});
}, 100);

View File

@@ -0,0 +1,52 @@
var multimeter = require('multimeter');
var multi = multimeter(process);
multi.on('^C', process.exit);
var bars = [];
var progress = [];
var deltas = [];
multi.write('Progress:\n\n');
for (var i = 0; i < 5; i++) {
var s = 'ABCDE'[i] + ': \n';
multi.write(s);
var bar = multi.rel(4, i, {
width : 20,
solid : {
text : '|',
foreground : 'white',
background : 'blue'
},
empty : { text : ' ' },
});
bars.push(bar);
deltas[i] = 1 + Math.random() * 9;
progress.push(0);
}
multi.offset += 2;
multi.write('\nbeep');
setTimeout(function () {
multi.offset ++;
multi.write('\n boop');
}, 2000);
var pending = progress.length;
var iv = setInterval(function () {
progress.forEach(function (p, i) {
progress[i] += Math.random() * deltas[i];
bars[i].percent(progress[i]);
if (p < 100 && progress[i] >= 100) pending --;
if (pending === 0) {
multi.write('\nAll done.\n');
multi.destroy();
clearInterval(iv);
pending --;
}
});
}, 100);

View File

@@ -0,0 +1,11 @@
var multimeter = require('multimeter');
var multi = multimeter(process);
multi.drop(function (bar) {
var iv = setInterval(function () {
var p = bar.percent();
bar.percent(p + 1);
if (p >= 100) clearInterval(iv);
}, 25);
});

View File

@@ -0,0 +1,37 @@
var multimeter = require('multimeter');
var multi = multimeter(process);
var charm = multi.charm;
charm.on('^C', process.exit);
charm.reset();
var xs = [];
for (var i = 0; i < 100; i++) xs.push(i);
console.log('Calculating the sum of [0..100]:\n');
charm.write(' ');
multi.drop(function (bar) {
bar.percent(0);
charm.write('\n\nResult: ');
charm.position(function (x, y) {
var sum = 0;
var iv = setInterval(function () {
sum += xs.shift();
bar.percent(100 - xs.length);
charm
.position(x, y)
.erase('end')
.write(sum.toString())
;
if (xs.length === 0) {
clearInterval(iv);
multi.destroy();
}
}, 50);
});
});

View File

@@ -0,0 +1,55 @@
var http = require('http');
var multimeter = require('multimeter');
http.createServer(function (req, res) {
res.setHeader('content-type', 'application/octet-stream');
var multi = multimeter(res);
multi.charm.on('^C', process.exit);
multi.charm.reset();
var bars = [];
var progress = [];
var deltas = [];
for (var i = 0; i < 5; i++) {
var s = 'ABCDE'[i] + ': \n';
multi.write(s);
var bar = multi(s.length, i + 1, {
width : 20,
solid : {
text : '|',
foreground : 'white',
background : 'blue'
},
empty : { text : ' ' },
});
bars.push(bar);
deltas[i] = 1 + Math.random() * 9;
progress.push(0);
}
multi.write('\nbeep boop\n');
var pending = progress.length;
var iv = setInterval(function () {
progress.forEach(function (p, i) {
progress[i] += Math.random() * deltas[i];
bars[i].percent(progress[i]);
if (p < 100 && progress[i] >= 100) pending --;
if (pending === 0) {
multi.write('\nAll done.\n');
res.end();
}
});
}, 100);
res.connection.on('end', function () {
multi.destroy();
clearInterval(iv);
});
}).listen(8080);
console.log('curl -N localhost:8080');

View File

@@ -0,0 +1,60 @@
var http = require('http');
var multimeter = require('multimeter');
http.createServer(function (req, res) {
res.setHeader('content-type', 'application/octet-stream');
var multi = multimeter(res);
multi.charm.on('^C', process.exit);
var bars = [];
var progress = [];
var deltas = [];
for (var i = 0; i < 5; i++) {
var s = 'ABCDE'[i] + ': \n';
multi.write(s);
var bar = multi.rel(4, i, {
width : 20,
solid : {
text : '|',
foreground : 'white',
background : 'blue'
},
empty : { text : ' ' },
});
bars.push(bar);
deltas[i] = 5 + Math.random() * 10;
progress.push(0);
}
multi.offset += 2;
multi.write('\nbeep');
setTimeout(function () {
multi.offset ++;
multi.write('\n boop');
}, 1000);
var pending = progress.length;
var iv = setInterval(function () {
progress.forEach(function (p, i) {
progress[i] += Math.random() * deltas[i];
bars[i].percent(progress[i]);
if (p < 100 && progress[i] >= 100) pending --;
if (pending === 0) {
multi.write('\nAll done.\n');
res.end();
}
});
}, 100);
res.connection.on('end', function () {
multi.destroy();
clearInterval(iv);
});
}).listen(8080);
console.log('curl -N localhost:8080');

View File

@@ -0,0 +1,45 @@
var http = require('http');
var multimeter = require('multimeter');
http.createServer(function (req, res) {
var multi = multimeter(res);
var charm = multi.charm;
var xs = [];
for (var i = 0; i < 100; i++) xs.push(i);
charm.reset()
.write('Calculating the sum of [0..100]:\n\n')
;
var bar = multi(4, 3, { width : 20 });
bar.percent(0);
var sum = 0;
charm.write('\n\nResult: ' + sum);
var iv = setInterval(function () {
var x = xs.shift();
bar.percent(100 - xs.length);
charm
.left(sum.toString().length)
.erase('end')
;
sum += x;
charm.write(sum.toString());
if (xs.length === 0) {
charm.write('\n');
res.end();
}
}, 50);
res.connection.on('end', function () {
multi.destroy();
clearInterval(iv);
});
}).listen(8081);
console.log('curl -N localhost:8081');