vii / teepeedee2 Goto Github PK
View Code? Open in Web Editor NEWFast webserver for dynamic pages
Home Page: http://cliki.net/teepeedee2
License: Other
Fast webserver for dynamic pages
Home Page: http://cliki.net/teepeedee2
License: Other
Hi,
I come accross this but want to know what's the status of the project? is it still in use? any supporting docs?
When I try to build teepeedee2 with parenscript 2.2, I get about 32,000 lines of this:
STYLE-WARNING: == is deprecated, use EQUAL instead
Then I get a failure and backtrace:
Control stack guard page temporarily disabled: proceed with caution
unhandled SB-KERNEL::CONTROL-STACK-EXHAUSTED in thread #<SB-THREAD:THREAD
"initial thread" RUNNING
{AE8DB31}>:
Control stack exhausted (no more space for function call frames).
This is probably due to heavily nested or infinitely recursive function
calls, or a tail call that SBCL cannot or has not optimized away.
PROCEED WITH CAUTION.
0: (SB-DEBUG::MAP-BACKTRACE #<CLOSURE # {13A19D85}>)[:EXTERNAL]
1: (SB-DEBUG:BACKTRACE
128
#<SB-SYS:FD-STREAM
for "file /home/xach/quicklisp-controller/tmp/depcheck-fail.txt"
{B0C9819}>)
2: (SB-DEBUG::DEBUGGER-DISABLED-HOOK
#<SB-KERNEL::CONTROL-STACK-EXHAUSTED {13A18A81}>
#)
3: (SB-DEBUG::RUN-HOOK
SB-EXT:INVOKE-DEBUGGER-HOOK
#<SB-KERNEL::CONTROL-STACK-EXHAUSTED {13A18A81}>)
4: (INVOKE-DEBUGGER #<SB-KERNEL::CONTROL-STACK-EXHAUSTED {13A18A81}>)
5: (ERROR SB-KERNEL::CONTROL-STACK-EXHAUSTED)[:EXTERNAL]
6: (SB-KERNEL::CONTROL-STACK-EXHAUSTED-ERROR)
7: ("foreign function: call_into_lisp")
8: ("foreign function: post_signal_tramp")
9: (SB-KERNEL:UB8-BASH-COPY
:INVALID-VALUE-FOR-UNESCAPED-REGISTER-STORAGE
:INVALID-VALUE-FOR-UNESCAPED-REGISTER-STORAGE
:INVALID-VALUE-FOR-UNESCAPED-REGISTER-STORAGE
:INVALID-VALUE-FOR-UNESCAPED-REGISTER-STORAGE
:INVALID-VALUE-FOR-UNESCAPED-REGISTER-STORAGE)[:EXTERNAL]
10: (SB-KERNEL:STRING-SUBSEQ* "EQUAL" 0 NIL)
11: (STRING-UPCASE "EQUAL" :START 0 :END NIL)
12: (SB-IMPL::CASE-FROB-UPCASE-SOUT
#<SB-IMPL::CASE-FROB-STREAM {13A18999}>
"EQUAL"
0
5)
13: (SB-IMPL::%WRITE-STRING
"EQUAL"
#<SB-IMPL::CASE-FROB-STREAM {13A18999}>
0
NIL)
14: (SB-KERNEL:OUTPUT-SYMBOL-NAME
"EQUAL"
#<SB-IMPL::CASE-FROB-STREAM {13A18999}>
NIL)
15: (PRINC EQUAL #<SB-IMPL::CASE-FROB-STREAM {13A18999}>)
16: (SB-FORMAT::A-FORMAT-DIRECTIVE-INTERPRETER
#<SB-IMPL::CASE-FROB-STREAM {13A18999}>
#<a>:@(> #<
NIL
#
#)
17: (SB-FORMAT::INTERPRET-DIRECTIVE-LIST
#<SB-IMPL::CASE-FROB-STREAM {13A18999}>
(#<a>):@(>
(PARENSCRIPT:== EQUAL EQUAL)
(EQUAL))
18: (SB-FORMAT::|(-FORMAT-DIRECTIVE-INTERPRETER|
#<SB-PRETTY:PRETTY-STREAM {13A18421}>
#<
(#<a> #<)> " instead")
(PARENSCRIPT:== EQUAL EQUAL)
#)
19: (SB-FORMAT::INTERPRET-DIRECTIVE-LIST
#<SB-PRETTY:PRETTY-STREAM {13A18421}>
(#<a> #<)> " instead")
(PARENSCRIPT:== EQUAL EQUAL)
(EQUAL))
20: (SB-FORMAT::[-FORMAT-DIRECTIVE-INTERPRETER
#<SB-PRETTY:PRETTY-STREAM {13A18421}>
#<:[>;> ", use " #<
("." #<:@(> #<]>)a> #<)> " instead" #<
(PARENSCRIPT:== EQUAL EQUAL)
#)
21: (SB-FORMAT::INTERPRET-DIRECTIVE-LIST
#<SB-PRETTY:PRETTY-STREAM {13A18421}>
(#<:[> "." #<;> ", use " #<:@(> #<]>)a> #<)> " instead" #<
(PARENSCRIPT:== EQUAL EQUAL)
(EQUAL EQUAL))
22: (SB-FORMAT::%FORMAT
#<SB-PRETTY:PRETTY-STREAM {13A18421}>
":@(:[.a) is deprecated;, use :@(:@(]"a) instead
(PARENSCRIPT:== EQUAL EQUAL)
(PARENSCRIPT:== EQUAL EQUAL))
23: (FORMAT
#<SB-PRETTY:PRETTY-STREAM {13A18421}>
"a) is deprecated~:[.;, use :@(:@(]")[:EXTERNAL]a) instead
24: (PRINC
#<PARENSCRIPT::SIMPLE-STYLE-WARNING
"a) is deprecated~:[.;, use ;, use :@(]" {13A17869}>a) instead
#<SB-PRETTY:PRETTY-STREAM {13A18421}>)
25: (SB-FORMAT::A-FORMAT-DIRECTIVE-INTERPRETER
#<SB-PRETTY:PRETTY-STREAM {13A18421}>
#<A>:[.
NIL
#
#)
26: (SB-FORMAT::INTERPRET-DIRECTIVE-LIST
#<SB-PRETTY:PRETTY-STREAM {13A18421}>
(#<A>):@(
(STYLE-WARNING
#<PARENSCRIPT::SIMPLE-STYLE-WARNING
"a) is deprecated:@(]" {13A17869}>)a) instead
(#<PARENSCRIPT::SIMPLE-STYLE-WARNING
":@(:[.a) is deprecated;, use :@(:@(]" {13A17869}>))a) instead
27: ((LABELS #:BODY-NAME-[WITH-PRETTY-STREAM924]926))
28: (SB-FORMAT::INTERPRET-FORMAT-LOGICAL-BLOCK
#<SB-SYS:FD-STREAM
for "file /home/xach/quicklisp-controller/tmp/depcheck-fail.txt"
{B0C9819}>
(STYLE-WARNING
#<PARENSCRIPT::SIMPLE-STYLE-WARNING
"a) is deprecated~:[.;, use :@(:@(]" {13A17869}>)a) instead
(STYLE-WARNING
#<PARENSCRIPT::SIMPLE-STYLE-WARNING
"a) is deprecated~:[.;, use :@(:@(]" {13A17869}>)a) instead
""
NIL
(#<S> ": " #<%>)3i> #<:> #<A>)@<>
""
T)
29: (SB-FORMAT::<-FORMAT-DIRECTIVE-INTERPRETER
#<SB-SYS:FD-STREAM
for "file /home/xach/quicklisp-controller/tmp/depcheck-fail.txt"
{B0C9819}>
#<
(#<~S> ": " #<3i> #<:> #<A> #<:>> #<
(STYLE-WARNING
#<PARENSCRIPT::SIMPLE-STYLE-WARNING
"a) is deprecated~:[.;, use @<> #<:@(]" {13A17869}>)a) instead
#)
30: (SB-FORMAT::INTERPRET-DIRECTIVE-LIST
#<SB-SYS:FD-STREAM
for "file /home/xach/quicklisp-controller/tmp/depcheck-fail.txt"
{B0C9819}>
(#<S> ": " #<%>)3i> #<:_> #<A> #<:>> #<
(STYLE-WARNING
#<PARENSCRIPT::SIMPLE-STYLE-WARNING
":@(:[.a) is deprecated;, use :@(:@(]" {13A17869}>)a) instead
(STYLE-WARNING
#<PARENSCRIPT::SIMPLE-STYLE-WARNING
"a) is deprecated~:[.;, use &:@(]" {13A17869}>))a) instead
31: (SB-FORMAT::%FORMAT
#<SB-SYS:FD-STREAM
for "file /home/xach/quicklisp-controller/tmp/depcheck-fail.txt"
{B0C9819}>
"@<:@(S: %"3i:_A:>
(STYLE-WARNING
#<PARENSCRIPT::SIMPLE-STYLE-WARNING
"a) is deprecated~:[.;, use :@(:@(]" {13A17869}>)a) instead
(STYLE-WARNING
#<PARENSCRIPT::SIMPLE-STYLE-WARNING
"a) is deprecated~:[.;, use &:@(]" {13A17869}>))a) instead
32: (FORMAT
#<SB-SYS:FD-STREAM
for "file /home/xach/quicklisp-controller/tmp/depcheck-fail.txt"
{B0C9819}>
"@< ELEMENT CLASS-NAME) "-jiggle-"))S: %")[:EXTERNAL]3i:_A:>
33: (WARN PARENSCRIPT::SIMPLE-STYLE-WARNING)[:EXTERNAL]
34: ((LAMBDA (#:|ps-macro-form-arg-134|))
(PARENSCRIPT:== (
35: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
36: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
37: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
38: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
39: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
40: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
41: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
42: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
43: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
44: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
45: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
46: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
47: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
48: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
49: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
50: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
51: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
52: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
53: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
54: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
55: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
56: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
57: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
58: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
59: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
60: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
61: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
62: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
63: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
64: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
65: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
66: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
67: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
68: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
69: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
70: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
71: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
72: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
73: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
74: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
75: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
76: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
77: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
78: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
79: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
80: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
81: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
82: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
83: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
84: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
85: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
86: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
87: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
88: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
89: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
90: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
91: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
92: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
93: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
94: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
95: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
96: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
97: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
98: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
99: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
100: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
101: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
102: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
103: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
104: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
105: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
106: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
107: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
108: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
109: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
110: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
111: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
112: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
113: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
114: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
115: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
116: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
117: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
118: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
119: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
120: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
121: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
122: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
123: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
124: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
125: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
126: (PARENSCRIPT::PS-MACROEXPAND (EQUAL (~ ELEMENT CLASS-NAME) "-jiggle-"))
127: (PARENSCRIPT::PS-MACROEXPAND
(PARENSCRIPT:== (~ ELEMENT CLASS-NAME) "-jiggle-"))
Are you going to keep tracking the old parenscript interface? If so, are you going to maintain the old parenscript in some way?
Is it feasible to apply something like https://github.com/sykopomp/teepeedee2/commit/1822f159c10686335468168fcef95873cd969dda to get teepeedee2 to work on the new parenscript interface?
Define-modify-macro requires a symbol as the function argument, but in src/lib/macros.lisp it defines reversed-deletef with a lambda. That would give an error on any proper common-lisp implementation.
http://www.lispworks.com/documentation/HyperSpec/Body/m_defi_2.htm
cl-ssl+ requires the current revision of trivial-garbage
The function alexandria:format-sybmol in the alexandria version that comes with teepeedee2 doesn't convert it's argument to string. In result babel fails with error "value #:~A-CODE-POINT-COUNTER is not of the expected type STRING".
Note, it is necessary to rm -r ~/.cache/common-lisp to reproduce this problem reliably
invoked in quickstart.lisp:6
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.