tencent / luahelper Goto Github PK
View Code? Open in Web Editor NEWLuaHelper is a High-performance lua VSCode plugin, Language Server Protocol for lua.
License: Other
LuaHelper is a High-performance lua VSCode plugin, Language Server Protocol for lua.
License: Other
插件的跳转功能感觉不如Lua-Tags插件好用,比如下面的代码:
按下F12原本是想跳转到Lobby2Club符号的定义处,但实际上跳转到了SNSUtil的定义处了。
希望作者可以参考下Lua-Tags的跳转功能更好的完善插件,感谢作者的奉献!
对目前已知的特性做了总结,如下:
---@alias RequestMode string
---| '"GET"' # 资源已被提取并在消息正文中传输。
---| '"HEAD"' # 实体标头位于消息正文中。
---|>'"POST"' # 描述动作结果的资源在消息体中传输。
---| '"TRACE"' # 消息正文包含服务器收到的请求消息。
---@param mode RequestMode
function toRequest(mode)
-- 首先,光标悬浮在此方法上,就应该有展开的RequestMode完整提示
end
toRequest() -- 其次,这里光标到括号内,按语法提示快捷键,应该列出完整的RequestMode选项
---@class Emmy
local emmy = {}
function emmy:sayHello()
end
---@see Emmy#sayHello
local function testHello()
-- 目前还不支持点击跳转
-- 也不支持书写see后面时自动提示
end
GOLD_ID = 100001
---@see _G#GOLD_ID
function getGoodsIcon(goodsId)
-- 这里也应该能点击跳转到上面定义
end
---@deprecated
function oldFun()
end
oldFun() -- 使用不推荐的方法,ide会报警告
---@param tbl table
---@param name string
---@param hook function
---@overload fun(name: string, hook: function) @mode 2
function hooksecurefunc(tbl, name, hook) end
--[[
在输入此方法时,ide会提示出两个候选项
function hooksecurefunc(name: string, hook: function)
function hooksecurefunc(tbl: table, name: string, hook: function)
]]
hooksecurefunc()
--- - item 1
--- - level 21
--- - level 22
--- - item 2
function TestFunc()
end
作者辛苦了,请酌情安排计划,再次感谢作者的辛苦付出~
Hi,
What's the reason the plugin opens a connection to 42.194.136.76
?
Is it to just show the number of active users?
Cheers
This number syntax : 27000000ULL is correct in LuaJIT but displays an error.
Using the extension to deal with GLua, which is a LUA api for GMOD.
The lint constantly shows errors about GLua syntax implementations (! instead of not) (|| instead of or).
Would be nice to have an option to completly disable warns on linting.
Is it possible to add an option to enable/disable luaformat? For now I have to edit the source file to disable the format provider.
Thanks for the extension and I found it very useful.
您好,我用mingw编译的lua,不能调试,猜测可能是dll使用的是vs编译的,所以想用vs再编一次,请问您的插件自带的dll是x86还是x64的
Steps to reproduce:
obj.lua
obj = {}
obj.fun = function()
end
obj1.lua
obj.fun1 = function()
end
main.lua
obj = {}
-- Can jump and locate normally 能正常跳转定位
obj.fun()
-- Cannot be located 不能被定位到
obj.fun1()
Scene two
main.lua
obj.fun()
obj.lua
local createObj = function()
local o = {}
o.fun = function()
end
return {fun=o.fun}
end
obj = obj or createObj()
在vs code1.54之后,handleGenerateComment就失效了。
没有忽略分析文件或文件夹;
在lua function 上输入-- 或者 ---并没有出现generate document comments for the function,
但---@还是可以使用的
将luahelper.json模板文件丢在工程目录下,但是并未见到如期的效果。
just a tip llo
期待中。。。
I Use rawset(_G, "XXX", function()end) in my code,
In another file when I use XXX, it tips me var not define: XXX.
[Warn type:2], var not define: XXX. How to resolve this problem?
---@class Cat
local Cat = class()
function Cat:test()
end
---@type table<string, Cat>
local catsMap = {}
---@return table<string, Cat>
function getCatsMap()
return catsMap
end
---@param catData Cat
for catId, catData in pairs(getCatsMap()) do
catData:test() -- 这句打的时候没提示
end
如题,这是一个简单的例子,for循环中的提示还是蛮常用的,期待这个支持能早日向emmet一样。
这是我在vscod中用到的最好用的插件了,所以很期待能早日解决这个需求,感激不尽~谢谢辛苦付出的作者
Your breakpoint/stepping debugging support is excellent. Thank you.
But I wondered if it was possible to step into a loaded C library.
For example:-
#!/usr/bin/env -S lua -W
-- Require cffi-lua, not from luaJIT
-- via LuaRocks, with LUA_CPATH set
local cffi = require("cffi")
-- Load libfoo
local mylib = cffi.load('./libfoo.so')
--Call function
local ret = mylib.getStable(mytableSCuserdata)
As I think you'll agree, your debugger steps over the Function call.
Any chance it could step in?
现在看上去只能通过luahelper.json来设置这个选项,不能给工作区或者全局应用
希望老哥加一个开关,我觉得并不是大家都想看这个启动时间打印
Bug
luahelper
0.1.58
Darwin x64 20.6.0
1.53.2
LuaHelper-DebugFile 一闪而过 不起作用,麻烦给看看休息 ,luaPath/packagePath填写什么呢
{
"type": "LuaHelper-Debug",
"request": "launch",
"name": "LuaHelper-DebugFile",
"luaPath": "",
"packagePath": [],
"luaFileExtension": "cocos2dx",
"connectionPort": 8818,
"stopOnEntry": true,
"useCHook": true,
"logLevel": 1
}
期望作者大大能够完善竞品插件般的的枚举提示
https://github.com/sumneko/lua-language-server/wiki/EmmyLua-Annotations#alias
当我使用了竞品插件后,定义了如下代码
---@alias requestMode string
---| '"GET"' # 资源已被提取并在消息正文中传输。
---| '"HEAD"' # 实体标头位于消息正文中。
---|>'"POST"' # 描述动作结果的资源在消息体中传输。
---| '"TRACE"' # 消息正文包含服务器收到的请求消息。
---@param mode requestMode
function toRequest(mode)
end
诚恳作者大大能够加入todo任务中,期待早日用上这个功能特性,真的能很方便coding体验。
VSCode Version: 1.62.2
Extension Version: v0.2.2
问题描述:
在独立文件调试模式中
当系统登陆用户名含有空格时,其路径事例类似:”C:/Users/USER 1“,这种情况下当Lua Helper执行自身路径下的Lua5.4.exe时未加入双引号,致使CMD/PS因存在空格无法执行对应文件,表现为
'c:/Users/USER' 不是内部或外部命令,也不是可运行的程序或批处理文件。
建议加入双引号或者使用%USERPROFILE%
为了解决问题1,我尝试修改launch.json中的luaPath为
%USERPROFILE%/.vscode/extensions/yinfei.luahelper-0.2.2/debugger/luasocket/win/x64/lua5.4/lua54.exe
后执行调试发现没有变化,遂改成说明中默认的
"C:/lua5.3/lua.exe"
发现执行调试时的命令行依旧无变化
提示该配置没有起到正确作用
常常因为新建lua文件是空白的,出现这种报错,不得不重新打开VSCode
panic: runtime error: index out of range [0] with length 0 [recovered]
panic: interface conversion: interface {} is runtime.boundsError, not lexer.LuaParseError
goroutine 215 [running]:
luahelper-lsp/langserver/check/compiler/parser.(*Parser).BeginAnalyze.func1(0xc0007d7b50)
G:/companyproject/LuaHelper/LuaHelper/luahelper-lsp/langserver/check/compiler/parser/parser.go:25 +0x1c7
panic(0x13ab660, 0xc000aeccc0)
D:/Go/src/runtime/panic.go:965 +0x1c7
luahelper-lsp/langserver/check/compiler/lexer.(*Lexer).SkipFirstLineComment(0xc0007d7da8)
G:/companyproject/LuaHelper/LuaHelper/luahelper-lsp/langserver/check/compiler/lexer/lexer.go:84 +0x13d
luahelper-lsp/langserver/check/compiler/parser.(*Parser).BeginAnalyze(0xc0007d7c00, 0x0, 0x0, 0x0, 0x0)
G:/companyproject/LuaHelper/LuaHelper/luahelper-lsp/langserver/check/compiler/parser/parser.go:30 +0x85
luahelper-lsp/langserver/check.(*AllProject).analysisFirstLuaFile(0xc00073e0e0, 0xc0012c85a0, 0xc00017fa00, 0x7e, 0x0, 0x0, 0x0, 0xc0002b0000, 0x1, 0x1, ...)
G:/companyproject/LuaHelper/LuaHelper/luahelper-lsp/langserver/check/check_first_hanlde.go:76 +0x2ad
luahelper-lsp/langserver/check.GoRoutineFirstWork(0xc0000860c0)
G:/companyproject/LuaHelper/LuaHelper/luahelper-lsp/langserver/check/check_first_hanlde.go:136 +0x2e5
created by luahelper-lsp/langserver/check.(*AllProject).firstCreateAndTraverseAst
G:/companyproject/LuaHelper/LuaHelper/luahelper-lsp/langserver/check/check_first_hanlde.go:203 +0xe6
[Info - 下午5:56:30] Connection to server got closed. Server will restart.
panic: runtime error: index out of range [0] with length 0 [recovered]
panic: interface conversion: interface {} is runtime.boundsError, not lexer.LuaParseError
goroutine 274 [running]:
luahelper-lsp/langserver/check/compiler/parser.(*Parser).BeginAnalyze.func1(0xc00071fb50)
G:/companyproject/LuaHelper/LuaHelper/luahelper-lsp/langserver/check/compiler/parser/parser.go:25 +0x1c7
panic(0x13ab660, 0xc00060e060)
D:/Go/src/runtime/panic.go:965 +0x1c7
luahelper-lsp/langserver/check/compiler/lexer.(*Lexer).SkipFirstLineComment(0xc00071fda8)
G:/companyproject/LuaHelper/LuaHelper/luahelper-lsp/langserver/check/compiler/lexer/lexer.go:84 +0x13d
luahelper-lsp/langserver/check/compiler/parser.(*Parser).BeginAnalyze(0xc00071fc00, 0x0, 0x0, 0x0, 0x0)
G:/companyproject/LuaHelper/LuaHelper/luahelper-lsp/langserver/check/compiler/parser/parser.go:30 +0x85
luahelper-lsp/langserver/check.(*AllProject).analysisFirstLuaFile(0xc0003ef880, 0xc0007fa960, 0xc00049dd00, 0x7e, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, ...)
G:/companyproject/LuaHelper/LuaHelper/luahelper-lsp/langserver/check/check_first_hanlde.go:76 +0x2ad
luahelper-lsp/langserver/check.GoRoutineFirstWork(0xc000200840)
G:/companyproject/LuaHelper/LuaHelper/luahelper-lsp/langserver/check/check_first_hanlde.go:136 +0x2e5
created by luahelper-lsp/langserver/check.(*AllProject).firstCreateAndTraverseAst
G:/companyproject/LuaHelper/LuaHelper/luahelper-lsp/langserver/check/check_first_hanlde.go:203 +0xe6
[Info - 下午5:56:30] Connection to server got closed. Server will restart.
panic: runtime error: index out of range [0] with length 0 [recovered]
panic: interface conversion: interface {} is runtime.boundsError, not lexer.LuaParseError
goroutine 263 [running]:
luahelper-lsp/langserver/check/compiler/parser.(*Parser).BeginAnalyze.func1(0xc000537b50)
G:/companyproject/LuaHelper/LuaHelper/luahelper-lsp/langserver/check/compiler/parser/parser.go:25 +0x1c7
panic(0x13ab660, 0xc00020a000)
D:/Go/src/runtime/panic.go:965 +0x1c7
luahelper-lsp/langserver/check/compiler/lexer.(*Lexer).SkipFirstLineComment(0xc000537da8)
G:/companyproject/LuaHelper/LuaHelper/luahelper-lsp/langserver/check/compiler/lexer/lexer.go:84 +0x13d
luahelper-lsp/langserver/check/compiler/parser.(*Parser).BeginAnalyze(0xc000537c00, 0x0, 0x0, 0x0, 0x0)
G:/companyproject/LuaHelper/LuaHelper/luahelper-lsp/langserver/check/compiler/parser/parser.go:30 +0x85
luahelper-lsp/langserver/check.(*AllProject).analysisFirstLuaFile(0xc0007052d0, 0xc000f88550, 0xc000524100, 0x7e, 0x0, 0x0, 0x0, 0xc000010000, 0x1, 0x1, ...)
G:/companyproject/LuaHelper/LuaHelper/luahelper-lsp/langserver/check/check_first_hanlde.go:76 +0x2ad
luahelper-lsp/langserver/check.GoRoutineFirstWork(0xc0004a2360)
G:/companyproject/LuaHelper/LuaHelper/luahelper-lsp/langserver/check/check_first_hanlde.go:136 +0x2e5
created by luahelper-lsp/langserver/check.(*AllProject).firstCreateAndTraverseAst
G:/companyproject/LuaHelper/LuaHelper/luahelper-lsp/langserver/check/check_first_hanlde.go:203 +0xe6
[Info - 下午5:56:30] Connection to server got closed. Server will restart.
panic: runtime error: index out of range [0] with length 0 [recovered]
panic: interface conversion: interface {} is runtime.boundsError, not lexer.LuaParseError
goroutine 268 [running]:
luahelper-lsp/langserver/check/compiler/parser.(*Parser).BeginAnalyze.func1(0xc0022a7b50)
G:/companyproject/LuaHelper/LuaHelper/luahelper-lsp/langserver/check/compiler/parser/parser.go:25 +0x1c7
panic(0x13ab660, 0xc0025325b8)
D:/Go/src/runtime/panic.go:965 +0x1c7
luahelper-lsp/langserver/check/compiler/lexer.(*Lexer).SkipFirstLineComment(0xc0022a7da8)
G:/companyproject/LuaHelper/LuaHelper/luahelper-lsp/langserver/check/compiler/lexer/lexer.go:84 +0x13d
luahelper-lsp/langserver/check/compiler/parser.(*Parser).BeginAnalyze(0xc0022a7c00, 0x0, 0x0, 0x0, 0x0)
G:/companyproject/LuaHelper/LuaHelper/luahelper-lsp/langserver/check/compiler/parser/parser.go:30 +0x85
luahelper-lsp/langserver/check.(*AllProject).analysisFirstLuaFile(0xc000598f50, 0xc0025d5180, 0xc0003e2780, 0x7e, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, ...)
G:/companyproject/LuaHelper/LuaHelper/luahelper-lsp/langserver/check/check_first_hanlde.go:76 +0x2ad
luahelper-lsp/langserver/check.GoRoutineFirstWork(0xc0002e0b40)
G:/companyproject/LuaHelper/LuaHelper/luahelper-lsp/langserver/check/check_first_hanlde.go:136 +0x2e5
created by luahelper-lsp/langserver/check.(*AllProject).firstCreateAndTraverseAst
G:/companyproject/LuaHelper/LuaHelper/luahelper-lsp/langserver/check/check_first_hanlde.go:203 +0xe6
[Info - 下午5:56:30] Connection to server got closed. Server will restart.
panic: runtime error: index out of range [0] with length 0 [recovered]
panic: interface conversion: interface {} is runtime.boundsError, not lexer.LuaParseError
goroutine 247 [running]:
luahelper-lsp/langserver/check/compiler/parser.(*Parser).BeginAnalyze.func1(0xc000737b50)
G:/companyproject/LuaHelper/LuaHelper/luahelper-lsp/langserver/check/compiler/parser/parser.go:25 +0x1c7
panic(0x13ab660, 0xc000227d10)
D:/Go/src/runtime/panic.go:965 +0x1c7
luahelper-lsp/langserver/check/compiler/lexer.(*Lexer).SkipFirstLineComment(0xc000737da8)
G:/companyproject/LuaHelper/LuaHelper/luahelper-lsp/langserver/check/compiler/lexer/lexer.go:84 +0x13d
luahelper-lsp/langserver/check/compiler/parser.(*Parser).BeginAnalyze(0xc000737c00, 0x0, 0x0, 0x0, 0x0)
G:/companyproject/LuaHelper/LuaHelper/luahelper-lsp/langserver/check/compiler/parser/parser.go:30 +0x85
luahelper-lsp/langserver/check.(*AllProject).analysisFirstLuaFile(0xc00058dc00, 0xc0000e31d0, 0xc0002dd8c0, 0x81, 0x0, 0x0, 0x0, 0xc000010000, 0x1, 0x1, ...)
G:/companyproject/LuaHelper/LuaHelper/luahelper-lsp/langserver/check/check_first_hanlde.go:76 +0x2ad
luahelper-lsp/langserver/check.GoRoutineFirstWork(0xc00001af00)
G:/companyproject/LuaHelper/LuaHelper/luahelper-lsp/langserver/check/check_first_hanlde.go:136 +0x2e5
created by luahelper-lsp/langserver/check.(*AllProject).firstCreateAndTraverseAst
G:/companyproject/LuaHelper/LuaHelper/luahelper-lsp/langserver/check/check_first_hanlde.go:203 +0xe6
[Error - 下午5:56:30] Connection to server got closed. Server will not be restarted.
It could be great to have the same feature than in Zerobrane : perfom a 'static' code analysis thru the contextual menu, that will outputs all the warnings/error as a textual summary in the console.
The formatter formats
variable = {
'entry' -- comment
-- another comment
}
into
variable = {'entry' -- comment
}
Our project needs to add spaces inside the parenthesis(ie, function foo( param )), is there a way to do that?
I'm working on a project that has a build process that runs as a preprocessor and converts backticks to convert values before runtime. so I could have
local test = `somevalue`
-- or
local test2 = {
[`weapon_name`] = "information"
}
Then before the code is run those would be converted to hash values. In another resource it makes use of Lua › Runtime: Nonstandard Symbol
which saves to settings.json as:
"Lua.runtime.nonstandardSymbol": [
"`"
],
Would it be possible to add support for something like that? I'd just like them to be treated just as a string would just without auto-replacement and not throwing errors, nothing fancy. There's a whole community using this same system. read more
这几行LuaPanda源码,会出现这样的错误
--sync breaks to c
if hookLib ~= nil then
hookLib.sync_breakpoints();
end
Error:Editor/LuaPanda:1132: bad argument #-1 to 'sync_breakpoints' (string expected, got nil)
stack traceback:
[C]: in function 'libpdebug.sync_breakpoints'
in function 'Editor/LuaPanda.dataProcess' -(at E:/Project/Saint_Seiya/Client/Trunk/ProjectSaintSeiya/Assets/Res/LuaScripts/Editor/LuaPanda:1132)
in function 'Editor/LuaPanda.receiveMessage' -(at E:/Project/Saint_Seiya/Client/Trunk/ProjectSaintSeiya/Assets/Res/LuaScripts/Editor/LuaPanda:1566)
in function 'Editor/LuaPanda.debugger_wait_msg' -(at E:/Project/Saint_Seiya/Client/Trunk/ProjectSaintSeiya/Assets/Res/LuaScripts/Editor/LuaPanda:1590)
in function 'Editor/LuaPanda.dataProcess' -(at E:/Project/Saint_Seiya/Client/Trunk/ProjectSaintSeiya/Assets/Res/LuaScripts/Editor/LuaPanda:1404)
in function 'Editor/LuaPanda.receiveMessage' -(at E:/Project/Saint_Seiya/Client/Trunk/ProjectSaintSeiya/Assets/Res/LuaScripts/Editor/LuaPanda:1566)
in function 'Editor/LuaPanda.debugger_wait_msg' -(at E:/Project/Saint_Seiya/Client/Trunk/ProjectSaintSeiya/Assets/Res/LuaScripts/Editor/LuaPanda:1590)
in function 'Editor/LuaPanda.connectSuccess' -(at E:/Project/Saint_Seiya/Client/Trunk/ProjectSaintSeiya/Assets/Res/LuaScripts/Editor/LuaPanda:275)
in function 'Editor/LuaPanda.start' -(at E:/Project/Saint_Seiya/Client/Trunk/ProjectSaintSeiya/Assets/Res/LuaScripts/Editor/LuaPanda:247)
in main chunk -(at E:/Project/Saint_Seiya/Client/Trunk/ProjectSaintSeiya/Assets/Res/LuaScripts/Editor/EditorDebug:6)
[C]: in function 'require'
in main chunk -(at E:/Project/Saint_Seiya/Client/Trunk/ProjectSaintSeiya/Assets/Res/LuaScripts/Game:32)
[C]: in function 'require'
[string "chunk"]:1: in main chunk
经过一番研究,我已经发现这个库的位置,VSCode插件会将dll文件位置发送到LuaPanda.tryRequireClib
里。
我尝试通过项目的XLua加载脚本,把这个位置传递给了CustomLoder。也就是进入了 StaticLuaCallbacks.LoadFromCustomLoaders
这个函数中。能读出byte[]。但是仍然会显示
error loading module libpdebug from CustomLoader, 【用户目录】\\.vscode\\extensions\\yinfei.luahelper-0.1.65/Debugger/debugger_lib/plugins/win/x86_64/503/libpdebug.dll:1: syntax error near '<\\144>'"
我们主程确实改过xlua源码。我也不确定是不是他们改出问题了🤣。不过如果有时间我新建一个项目看看
https://emmylua.github.io/annotations/see.html
请问后面会加入 emmylua 的 @see 的支持么?
有些情况下还是有些用处的,比如继承来的方法上标注一下see父类的同名方法
Ps:作者大大们辛苦了
In projects with a lot of Lua files (ie 3000+), the CPU is completly locked by the extension for many seconds (ie > 20).
The processing done by the extension should be limited or controllable by a setting to avoid this.
如果说,Unity 项目中。有人用vscode做主开发,其中,lua根目录在Unity项目的Assets某目录里。而不是与Unity同级根目录。如果就这样LuaHelper-Attach ,将会找不到路径。
但是呢,可以调整json
"cwd": "${workspaceFolder}/Assets/LuaScript/"
经测试,甚至可以C#,lua 两种调试同一个vscode同时开启。将会带来巨大的方便。
目前测试的结果有下列问题
还有,这个项目什么时候开源,如果开源了我就可以自己解决问题并发 pr 给你们
从0.16.2至最新版0.2.4都无法正常工作,打开日志后,选择格式化代码无任何日志输出
This will be a great feature if an option can be added that can be able to change color for global variables and local variables.
Proposed setting using luahelper.json
:
{
"globalVarColor": "#xxxxxx",
"localVarColor": "#xxxxxx",
}
or via VSCode:
"luahelper.global_var_color":"#xxxxxxx"
"luahelper.local_var_color":"#xxxxxxx"
---@class MyModel
local myModel = class('MyModel')
---@return MyModel
function getMyModel()
return myModel
end
local model = getMyModel() -- type is any ??
麻烦作者抽看看一下,是不是之前改出bug了?
这还是非常常用的提示功能,听影响coding的。
-- 方法嵌套调用,导致返回类型丢失
---@class uiButton
local uiButton = class('uiButton')
---@return uiButton
function uiButton.new()
return self
end
---@return uiButton
function uiButton:setX(x)
self.x_ = x
return self
end
---@return uiButton
function uiButton:setY(y)
self.y_ = y
return self
end
local btn1 = uiButton.new() -- 返回类型 uiButton
local btn2 = uiButton.new():setX(10) -- 返回类型 any
local btn3 = uiButton.new():setX(10):setY(10) -- 返回类型 any
示例代码如上,期待早日修复
作者辛苦了~
local a = {
b = 3
}
local c = (a and a.b) or true
print(c)
when you run this code, you got 3. but lua helper says:
[Warn type:15], or expression is always true [4, 12]
我另外使用了emmylua
我想优先跳转到emmylua定义的地方,并且在提示里把emmylua提供的提示放在最上面
因为emmylua的定义是开发者自己手动指定的,理应具备更高优先级
默认indent是4个空格, 但是我希望是2个空格.
indent_width: 2
我阅读了LuaFormatter的文档, 在项目根目录放置了.lua-format
文件不起作用.已经重启了vs code
Ability to declare external API, in order to enhance documentation and avoid 'undefined variable'.
有一些其他编辑器想使用该项目,需要如何配置,有说明文档吗?
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.