jfrasch / qpdunes Goto Github PK
View Code? Open in Web Editor NEWqpDUNES - an implementation of the DUal NEwton Strategy for quadratic programming
qpDUNES - an implementation of the DUal NEwton Strategy for quadratic programming
when I use ACADO to export codes for a mpc problem solved by qpdunes, I have got the error: no rule to make target 'qpdunes/src/utils.o', needed by 'libacado_exported_rti.a' during compiling. However, there is no utils related codes within src directory.
Hello,
i sometimes wrap existing C interfaces to make them available from the JuMP modeling language in Julia.
This would allow easy use of your solver by people and other solvers in the JuMP ecosystem.
This would require me to:
Since this is would require work on my behalf, i would like to ask some questions:
Hello, I’m trying qpDUNES on Simulink with ACADO MATLAB Interface in the following environment.
--Environment—
OS : Windows 10 Pro 64bit
ACADO : latest stable version (on 21 Jun 2017)
MATLAB : R2020a
Compiler : Visual Studio 2017 C/C++ Compiler
---------------------------------------------------------
Adding a term that consists of multiple states and control inputs to the cost function,
I got an error message below in MATLAB. (Sample file is attached.)
--Error Mesasge--
Error using mex
acado_solver.c
D:\Work\export_MPC\acado_solver.c(51):
error C2065: 'QPDUNES_LS_HOMOTOPY_GRID_SEARCH': undeclared identifier
Error in legacycode.LCT/compile
Error in legacycode.LCT.legacyCodeImpl
Error in legacy_code (line 103)
[varargout{1:nargout}] = legacycode.LCT.legacyCodeImpl(action, varargin{1:end});
Error in make_acado_solver_sfunction (line 251)
legacy_code('compile', ACADODef, {iFlags{:}, ldFlags});
Error in ACADO_simulink (line 97)
make_acado_solver_sfunction
-----------------------------------------------------------------------------------------------
I have two questions.
I hope you will be able to provide the information.
SampleFiles.zip
It would be much easier to switch between the solvers if the error codes are similar. At least for "OK"-like return codes. In particular, is there really a need that QPDUNES_OK
and QPDUNES_SUCC_OPTIMAL_SOLUTION_FOUND
have different values? Moreover, @jfrasch, is there really a need for the later one??
in 3571892 I added the custom calloc
, which basically does an assertion on calloc
returned value. This is kinda nasty, but better this than nothing. Said nasty, cause this can possibly crash MATLAB. Something a bit more sophisticated should be implemented, IMO.
Hello, when I build qpDUNES in ./interfaces/matlab by running 'make.m', the following error shows up.
Building with 'Xcode Clang++'.
gcc -c -D__cpluplus -D__MATLAB__ -DLINUX -DMATLAB_MEX_FILE -I. -I../../include -I../../externals/qpOASES-3.0beta/include -I../../interfaces/mpc -I"/Applications/MATLAB_R2015a.app/extern/include" -I"/Applications/MATLAB_R2015a.app/simulink/include" -fno-common -arch x86_64 -mmacosx-version-min=10.12 -fexceptions -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk -fobjc-arc -std=c++11 -stdlib=libc++ -O2 -DNDEBUG /Users/yezhao/Downloads/qpDUNES/interfaces/matlab/qpDUNES.cpp -o /var/folders/bk/p_h3ng_95dlfg8xpyg98n69h0000gn/T//mex_17967324059907_28912/qpDUNES.o
Error using mex
In file included from /Users/yezhao/Downloads/qpDUNES/interfaces/matlab/qpDUNES.cpp:39:
./qpDUNES_matlab_utils.cpp:436:24: error: non-constant-expression cannot be narrowed from type
'int' to 'mwSize' (aka 'unsigned long') in initializer list [-Wc++11-narrowing]
mwSize dims[2] = { 1, numIter+1 };
^~~~~~~~~
./qpDUNES_matlab_utils.cpp:436:24: note: insert an explicit cast to silence this issue
mwSize dims[2] = { 1, numIter+1 };
^~~~~~~~~
static_cast<mwSize>( )
1 error generated.
Error in make (line 77)
eval( cmd );
Besides the non-constant-expression error, another error that I am trying to fix is the mex cmd error. My cmd is
mex -v CC="gcc" CXX="gcc" LD="gcc" COPTIMFLAGS="$COPTIMFLAGS -O3" -output qpDUNES -I. -I../../include -I../../externals/qpOASES-3.0beta/include -I../../interfaces/mpc -largeArrayDims -D__cpluplus -D__MATLAB__ -cxx -O -DLINUX CFLAGS='$CFLAGS -fPIC' qpDUNES.cpp ../../src/stage_qp_solver_clipping.c ../../src/stage_qp_solver_qpoases.cpp ../../src/qpdunes_utils.c ../../src/dual_qp.c ../../src/matrix_vector.c ../../src/setup_qp.c ../../interfaces/mpc/setup_mpc.c
Does anyone know the potential reason for this issue? Thank you. Build qpDUNES in its root directory works fine in my case (run make
in terminal) and I can run the examples. I am using matlab R2015a in MacOS Sierra 10.12.1.
Please add it, @jfrasch :)
Sometimes when the solver fails, I get a fairly long love letter.
It would be nice if the solver could return after the first (few) error messages, and not after all the processing is done.
....\SRC\dual_qp.c(42) : warning C4101: 'tQpStart' : unreferenced local variable
....\SRC\dual_qp.c(42) : warning C4101: 'tItStart' : unreferenced local variable
....\SRC\dual_qp.c(44) : warning C4101: 'tLineSearchEnd' : unreferenced local variable
....\SRC\dual_qp.c(44) : warning C4101: 'tDiff' : unreferenced local variable
....\SRC\dual_qp.c(44) : warning C4101: 'tLineSearchStart' : unreferenced local variable
....\SRC\dual_qp.c(42) : warning C4101: 'tItEnd' : unreferenced local variable
....\SRC\dual_qp.c(42) : warning C4101: 'tQpEnd' : unreferenced local variable
....\SRC\dual_qp.c(383) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(387) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(391) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(394) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(399) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(404) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(450) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(459) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(498) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(596) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(610) : error C2275: 'boolean_t' : illegal use of this type as an expression
../../INCLUDE\qp/types.h(148) : see declaration of 'boolean_t'
....\SRC\dual_qp.c(610) : error C2146: syntax error : missing ';' before identifier 'addToRes'
....\SRC\dual_qp.c(610) : error C2065: 'addToRes' : undeclared identifier
....\SRC\dual_qp.c(611) : error C2065: 'addToRes' : undeclared identifier
....\SRC\dual_qp.c(619) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(635) : error C2275: 'zx_matrix_t' : illegal use of this type as an expression
../../INCLUDE\qp/types.h(264) : see declaration of 'zx_matrix_t'
....\SRC\dual_qp.c(635) : error C2065: 'ZTCT' : undeclared identifier
....\SRC\dual_qp.c(636) : error C2065: 'ZTCT' : undeclared identifier
....\SRC\dual_qp.c(636) : error C2223: left of '->data' must point to struct/union
....\SRC\dual_qp.c(636) : warning C4047: 'function' : 'const real_t *const ' differs in levels of indirection from 'int_t'
....\SRC\dual_qp.c(636) : warning C4024: 'multiplyMatrixMatrixTDenseDense' : different types for formal and actual parameter 3
....\SRC\dual_qp.c(636) : error C2198: 'multiplyMatrixMatrixTDenseDense' : too few arguments for call
....\SRC\dual_qp.c(638) : error C2065: 'ZTCT' : undeclared identifier
....\SRC\dual_qp.c(638) : warning C4047: 'function' : 'const zz_matrix_t *const ' differs in levels of indirection from 'int'
....\SRC\dual_qp.c(638) : warning C4024: 'backsolveRT_ZTCT' : different types for formal and actual parameter 4
....\SRC\dual_qp.c(640) : error C2275: 'boolean_t' : illegal use of this type as an expression
../../INCLUDE\qp/types.h(148) : see declaration of 'boolean_t'
....\SRC\dual_qp.c(640) : error C2146: syntax error : missing ';' before identifier 'addToRes'
....\SRC\dual_qp.c(640) : error C2065: 'addToRes' : undeclared identifier
....\SRC\dual_qp.c(641) : error C2065: 'addToRes' : undeclared identifier
....\SRC\dual_qp.c(648) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(649) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(659) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(680) : error C2275: 'boolean_t' : illegal use of this type as an expression
../../INCLUDE\qp/types.h(148) : see declaration of 'boolean_t'
....\SRC\dual_qp.c(680) : error C2146: syntax error : missing ';' before identifier 'addToRes'
....\SRC\dual_qp.c(680) : error C2065: 'addToRes' : undeclared identifier
....\SRC\dual_qp.c(681) : error C2065: 'addToRes' : undeclared identifier
....\SRC\dual_qp.c(684) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(685) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(694) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(695) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(730) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(736) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(741) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(781) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(782) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(803) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(804) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(882) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(884) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(896) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(930) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(941) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(954) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(955) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(1014) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(1019) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(1020) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(1056) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(1060) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(1061) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(1076) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(1108) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(1110) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(1115) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(1147) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(1150) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(1151) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(1192) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(1195) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(1196) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(1213) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(1215) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(1220) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(1256) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(1259) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(1265) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(1270) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(1277) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(1282) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(1285) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(1325) : error C2275: 'int_t' : illegal use of this type as an expression
../../INCLUDE\qp/types.h(99) : see declaration of 'int_t'
....\SRC\dual_qp.c(1325) : error C2146: syntax error : missing ';' before identifier 'kk'
....\SRC\dual_qp.c(1325) : error C2065: 'kk' : undeclared identifier
....\SRC\dual_qp.c(1326) : error C2275: 'interval_t' : illegal use of this type as an expression
../../INCLUDE\qp/types.h(478) : see declaration of 'interval_t'
....\SRC\dual_qp.c(1326) : error C2065: 'interval' : undeclared identifier
....\SRC\dual_qp.c(1334) : error C2065: 'kk' : undeclared identifier
....\SRC\dual_qp.c(1334) : error C2065: 'kk' : undeclared identifier
....\SRC\dual_qp.c(1334) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(1334) : error C2065: 'kk' : undeclared identifier
....\SRC\dual_qp.c(1336) : error C2065: 'kk' : undeclared identifier
....\SRC\dual_qp.c(1338) : error C2065: 'kk' : undeclared identifier
....\SRC\dual_qp.c(1353) : error C2065: 'kk' : undeclared identifier
....\SRC\dual_qp.c(1353) : error C2065: 'kk' : undeclared identifier
....\SRC\dual_qp.c(1353) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(1353) : error C2065: 'kk' : undeclared identifier
....\SRC\dual_qp.c(1354) : error C2065: 'interval' : undeclared identifier
....\SRC\dual_qp.c(1354) : error C2065: 'kk' : undeclared identifier
....\SRC\dual_qp.c(1354) : warning C4047: '=' : 'int' differs in levels of indirection from 'interval_t *'
....\SRC\dual_qp.c(1356) : error C2065: 'interval' : undeclared identifier
....\SRC\dual_qp.c(1356) : error C2223: left of '->qpSolverSpecification' must point to struct/union
....\SRC\dual_qp.c(1358) : error C2065: 'interval' : undeclared identifier
....\SRC\dual_qp.c(1358) : warning C4047: 'function' : 'interval_t *const ' differs in levels of indirection from 'int'
....\SRC\dual_qp.c(1358) : warning C4024: 'directQpSolver_doStep' : different types for formal and actual parameter 2
....\SRC\dual_qp.c(1359) : error C2065: 'interval' : undeclared identifier
....\SRC\dual_qp.c(1359) : error C2223: left of '->qpSolverClipping' must point to struct/union
....\SRC\dual_qp.c(1359) : error C2440: 'function' : cannot convert from 'real_t' to 'const z_vector_t *const '
....\SRC\dual_qp.c(1359) : warning C4024: 'directQpSolver_doStep' : different types for formal and actual parameter 3
....\SRC\dual_qp.c(1360) : error C2065: 'interval' : undeclared identifier
....\SRC\dual_qp.c(1360) : error C2223: left of '->qpSolverClipping' must point to struct/union
....\SRC\dual_qp.c(1361) : error C2065: 'interval' : undeclared identifier
....\SRC\dual_qp.c(1361) : error C2223: left of '->z' must point to struct/union
....\SRC\dual_qp.c(1361) : error C2065: 'interval' : undeclared identifier
....\SRC\dual_qp.c(1361) : error C2223: left of '->y' must point to struct/union
....\SRC\dual_qp.c(1361) : error C2065: 'interval' : undeclared identifier
....\SRC\dual_qp.c(1361) : error C2223: left of '->q' must point to struct/union
....\SRC\dual_qp.c(1362) : error C2065: 'interval' : undeclared identifier
....\SRC\dual_qp.c(1362) : error C2223: left of '->p' must point to struct/union
....\SRC\dual_qp.c(1362) : error C2198: 'directQpSolver_doStep' : too few arguments for call
....\SRC\dual_qp.c(1366) : error C2065: 'interval' : undeclared identifier
....\SRC\dual_qp.c(1366) : error C2223: left of '->qpSolverQpoases' must point to struct/union
....\SRC\dual_qp.c(1367) : error C2065: 'interval' : undeclared identifier
....\SRC\dual_qp.c(1367) : warning C4022: 'qpOASES_doStep' : pointer mismatch for actual parameter 2
....\SRC\dual_qp.c(1367) : error C2440: 'function' : cannot convert from 'real_t' to 'interval_t *const '
....\SRC\dual_qp.c(1367) : warning C4024: 'qpOASES_doStep' : different types for formal and actual parameter 3
....\SRC\dual_qp.c(1367) : error C2065: 'interval' : undeclared identifier
....\SRC\dual_qp.c(1367) : error C2223: left of '->z' must point to struct/union
....\SRC\dual_qp.c(1367) : error C2065: 'interval' : undeclared identifier
....\SRC\dual_qp.c(1367) : error C2223: left of '->y' must point to struct/union
....\SRC\dual_qp.c(1368) : error C2065: 'interval' : undeclared identifier
....\SRC\dual_qp.c(1368) : error C2223: left of '->q' must point to struct/union
....\SRC\dual_qp.c(1368) : error C2065: 'interval' : undeclared identifier
....\SRC\dual_qp.c(1368) : error C2223: left of '->p' must point to struct/union
....\SRC\dual_qp.c(1368) : error C2198: 'qpOASES_doStep' : too few arguments for call
....\SRC\dual_qp.c(1446) : error C2065: 'kk' : undeclared identifier
....\SRC\dual_qp.c(1446) : error C2065: 'kk' : undeclared identifier
....\SRC\dual_qp.c(1446) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(1446) : error C2065: 'kk' : undeclared identifier
....\SRC\dual_qp.c(1447) : error C2065: 'interval' : undeclared identifier
....\SRC\dual_qp.c(1447) : error C2065: 'kk' : undeclared identifier
....\SRC\dual_qp.c(1447) : warning C4047: '=' : 'int' differs in levels of indirection from 'interval_t *'
....\SRC\dual_qp.c(1450) : error C2065: 'interval' : undeclared identifier
....\SRC\dual_qp.c(1450) : error C2223: left of '->qpSolverSpecification' must point to struct/union
....\SRC\dual_qp.c(1452) : error C2065: 'interval' : undeclared identifier
....\SRC\dual_qp.c(1452) : warning C4047: 'function' : 'interval_t *const ' differs in levels of indirection from 'int'
....\SRC\dual_qp.c(1452) : warning C4024: 'directQpSolver_doStep' : different types for formal and actual parameter 2
....\SRC\dual_qp.c(1453) : error C2065: 'interval' : undeclared identifier
....\SRC\dual_qp.c(1453) : error C2223: left of '->qpSolverClipping' must point to struct/union
....\SRC\dual_qp.c(1453) : error C2440: 'function' : cannot convert from 'real_t' to 'const z_vector_t *const '
....\SRC\dual_qp.c(1453) : warning C4024: 'directQpSolver_doStep' : different types for formal and actual parameter 3
....\SRC\dual_qp.c(1454) : error C2065: 'interval' : undeclared identifier
....\SRC\dual_qp.c(1454) : error C2223: left of '->qpSolverClipping' must point to struct/union
....\SRC\dual_qp.c(1455) : error C2065: 'interval' : undeclared identifier
....\SRC\dual_qp.c(1455) : error C2223: left of '->z' must point to struct/union
....\SRC\dual_qp.c(1455) : error C2065: 'interval' : undeclared identifier
....\SRC\dual_qp.c(1455) : error C2223: left of '->y' must point to struct/union
....\SRC\dual_qp.c(1455) : error C2065: 'interval' : undeclared identifier
....\SRC\dual_qp.c(1455) : error C2223: left of '->q' must point to struct/union
....\SRC\dual_qp.c(1456) : error C2065: 'interval' : undeclared identifier
....\SRC\dual_qp.c(1456) : error C2223: left of '->p' must point to struct/union
....\SRC\dual_qp.c(1456) : error C2198: 'directQpSolver_doStep' : too few arguments for call
....\SRC\dual_qp.c(1460) : error C2065: 'interval' : undeclared identifier
....\SRC\dual_qp.c(1460) : error C2223: left of '->qpSolverQpoases' must point to struct/union
....\SRC\dual_qp.c(1461) : error C2065: 'interval' : undeclared identifier
....\SRC\dual_qp.c(1461) : warning C4022: 'qpOASES_doStep' : pointer mismatch for actual parameter 2
....\SRC\dual_qp.c(1461) : error C2440: 'function' : cannot convert from 'real_t' to 'interval_t *const '
....\SRC\dual_qp.c(1461) : warning C4024: 'qpOASES_doStep' : different types for formal and actual parameter 3
....\SRC\dual_qp.c(1461) : error C2065: 'interval' : undeclared identifier
....\SRC\dual_qp.c(1461) : error C2223: left of '->z' must point to struct/union
....\SRC\dual_qp.c(1461) : error C2065: 'interval' : undeclared identifier
....\SRC\dual_qp.c(1461) : error C2223: left of '->y' must point to struct/union
....\SRC\dual_qp.c(1462) : error C2065: 'interval' : undeclared identifier
....\SRC\dual_qp.c(1462) : error C2223: left of '->q' must point to struct/union
....\SRC\dual_qp.c(1462) : error C2065: 'interval' : undeclared identifier
....\SRC\dual_qp.c(1462) : error C2223: left of '->p' must point to struct/union
....\SRC\dual_qp.c(1462) : error C2198: 'qpOASES_doStep' : too few arguments for call
....\SRC\dual_qp.c(1502) : warning C4018: '<' : signed/unsigned mismatch
....\SRC\dual_qp.c(1546) : error C2275: 'real_t' : illegal use of this type as an expression
../../INCLUDE\qp/types.h(101) : see declaration of 'real_t'
....\SRC\dual_qp.c(1546) : error C2146: syntax error : missing ';' before identifier 'minimumProgress'
....\SRC\dual_qp.c(1546) : error C2065: 'minimumProgress' : undeclared identifier
....\SRC\dual_qp.c(1546) : fatal error C1003: error count exceeds 100; stopping compilation
C:\PROGRA~2\MATLAB\R2009B\BIN\MEX.PL: Error: Compile of '....\SRC\dual_qp.c' failed.
??? Error using ==> mex at 221
Unable to complete successfully.
Error in ==> make at 76
eval( cmd );
Please add documentation.
Hi,
I wonder if qpDUNES is under development. Affine stage constraint ist not supported in this version
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.