Giter Club home page Giter Club logo

maimaidx-prober's Issues

mac开启代理后微信查记录不导入数据

版本:1.12
系统版本:macOS Monterey 12.4
架构:arm
问题描述:shell已经反馈代理设置已自动修改,通过app版微信查询我的记录之后正常进入页面了,查分器没有工作
3EEA8D83E3B2E0E66B90FE3EF9EF57DF

建议添加filter

在和群友吹水的时候经常会被问什么11+好嫖分(
希望能有个按指定难度筛选的功能

CHUNITHM查分接口

请问中二节奏之后会开放/dev/player/records的查询成绩的接口吗

Linux 代理工具无法使用

系统:Arch Linux (内核版本 5.18.6,gcc 12.1.0)
微信使用 deepin-wine 运行,无论使用 http_proxy https_proxy 环境变量,还是 proxychains 工具,又或是微信的代理设置,均无法连接,打开公众号后是舞萌首页,并且代理程序出现 go 报错信息。

图片

TypeError: Cannot read properties of undefined (reading 'toString')

1e10227

TypeError: Cannot read properties of undefined (reading 'toString')
    at MainPage.vue?85bf:28:1109
    at s.d (MainPage.vue?85bf:28:1063)
    at t._render (vue.runtime.esm.js:3548:22)
    at s.i (vue.runtime.esm.js:4066:21)
    at ni.get (vue.runtime.esm.js:4479:25)
    at new ni (vue.runtime.esm.js:4468:12)
    at Ln (vue.runtime.esm.js:4073:3)
    at Si.$mount (vue.runtime.esm.js:8415:10)
    at init (vue.runtime.esm.js:3118:13)
    at p (vue.runtime.esm.js:5978:9)

一个关于公众号内曲目的小问题

最近搞某带学习的时候找到了在微信公众号页面跑js的办法,然后想直接在那里面拿到歌曲信息压缩后扔到查分器里(
不过,最后给出的文本带着曲名的话会太长,导致手机卡死
所以想问一下是不是每个人打开乐曲种类->歌曲类别->所有种类->某个难度这个页面时,显示的曲目顺序都是一样的...

dev console导入代码fetch化

感觉2023了还在$.ajax {async:false}有点不文明(x

((u,p)=>[0,1,2,3,4].reduce(async(promise, diff)=>{
  await promise
  var diffName = ['Basic', 'Advanced', 'Expert', 'Master', 'Re:Master'][diff]
  var url = 'https://maimai.wahlap.com/maimai-mobile/record/musicGenre/search/?genre=99&diff='+diff
  return fetch(url)
  .then(r => {if(r.url!=url)throw new Error(diffName+' 获取分数出错');return r.text()})
  .then(res => fetch('https://www.diving-fish.com/api/pageparser/page', {
    method: 'POST',
    headers:(new Headers({'Content-Type':'text/plain'})),
    body: "<login><u>"+u+"</u><p>"+p+"</p></login>" + res.match(/<html.*>([\s\S]*)<\/html>/)[1].replace(/\s+/g,' ')
  }))
  .then(r => r.json())
  .then(res => {console.log(diffName, res.message, res);if(res.message!='success')throw new Error(diffName+' 上传分数出错')})
}, Promise.resolve()))
("USERNAME", "PASSWORD");

当然我没有测过微信那个浏览器支不支持,按理说应该都可以了吧。
(我是自己做了抓net登录token地址扔给电脑,在电脑上上传的)

没有针对网络异常做合适的错误处理

众所周知,新版更新后服务器一直是炸的,查看成绩页面巨卡。

然后查分也炸了。

连接异常可以尝试重试或者跳过当前难度,但是不应该挂掉啊。

登录成功,代理已开启到127.0.0.1:8033
自动修改代理设置失败。请尝试手动修改代理。
使用此软件则表示您同意共享您在微信公众号舞萌 DX、中二节奏中的数据。
您可以在微信客户端访问微信公众号舞萌 DX、中二节奏的个人信息主页进行分数导入,如需退出请直接关闭程序或按下 Ctrl + C
正在导入 Basic 难度……2023/06/23 17:52:21 [004] WARN: Error copying to client: readfrom tcp 127.0.0.1:8033->127.0.0.1:56590: read tcp 192.168.31.20:56591->202.89.233.100:443: wsarecv: An existing connection was forcibly closed by the remote host.
2023/06/23 17:52:50 [008] WARN: Error copying to client: readfrom tcp 192.168.31.20:56612->124.251.34.42:443: read tcp 127.0.0.1:8033->127.0.0.1:56611: wsarecv: An existing connection was forcibly closed by the remote host.
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x40 pc=0x12cc1e5]

goroutine 51 [running]:
main.commit({0x13e63e0?, 0xc00019e080?})
        C:/Users/DivingFish/Github/maimaidx-prober/proxy/cmd/maimaidx-prober-proxy/main.go:71 +0x65
main.fetchData(0xc00015c400, {0xc0001a6018, 0x1, 0x1})
        C:/Users/DivingFish/Github/maimaidx-prober/proxy/cmd/maimaidx-prober-proxy/main.go:102 +0x5e5
created by main.main.func2
        C:/Users/DivingFish/Github/maimaidx-prober/proxy/cmd/maimaidx-prober-proxy/main.go:223 +0x28f

适用于开发人员的 iOS 设备数据导入方案

这可能不是一个预期解

思路

利用 iOS 的 CA 证书通过 VPN 代理监视微信浏览器的 TCP 流量来抓取 HTTP 请求。

iOS 支持中间人代理攻击(MitM)但我不知道这是否有必要

步骤

我使用的是 Quantumult X 来抓取 HTTP 请求,没有特别原因,只是因为个人比较常用

53DEBD27-A19F-4CA4-B9D0-56B705CDE95B
1F9AB22C-0D48-488C-8790-6CA9BD89C782

可以获得完整的网页源代码

可行的一键上传

iOS 的捷径 APP 可以进行 HTTP Post,如果不使用证书反代,可以考虑通过手动抓包后使用捷径快速上传至查分器

MiLK PLUS 不含 "maimai" 前缀

如题,其他版本都写作 “maimai ...”
只有 MiLK PLUS 不含 maimai 前缀
虽然不是在查分器上发现的 但是还是来说一下

代理程序在导入分数时报错

panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x40 pc=0xebc1e5]

goroutine 80 [running]:
main.commit({0xfd63e0?, 0xc000332500?})
C:/Users/DivingFish/Github/maimaidx-prober/proxy/cmd/maimaidx-prober-proxy/main.go:71 +0x65
main.fetchData(0xc00025e100, {0xc00000a050, 0x1, 0x1})
C:/Users/DivingFish/Github/maimaidx-prober/proxy/cmd/maimaidx-prober-proxy/main.go:102 +0x5e5
created by main.main.func2
C:/Users/DivingFish/Github/maimaidx-prober/proxy/cmd/maimaidx-prober-proxy/main.go:223 +0x28f

关于导入方法 3 对目前的微信版本(半?)无效,以及查分器上的导入指南未及时更新

关于导入方法三:微信目前使用了 xweb 内核,不使用 x5 内核
但 xweb 内核就目前来说没有 vConsole 调试功能,因此此方法算是半无效的了

至于查分器上的导入指南没更新这件事嘛......
主要是因为今天用代理工具导入的时候会卡在获取 Base 难度这一条提示
(不知道是网络原因还是咋的,在写这一条 issues 的时候竟然又能导入了...)
然后就尝试按照导入指南中的其他办法来尝试,那结果肯定是不行
翻到 #65 后才发现仓库中的 README.md 已经对导入方法四进行补充,也对方法三中的代码进行更新
总之就是,(假装微笑)

顺带提一下,通过调试工具也可以走方法二的网页源代码获取
就是复制源代码有一点点点麻烦
在 Elements(元素) 选项卡中选中 <html lang="zh"><head> ,然后右键 Copy(复制)->Copy Elements(复制元素) 或者 Edit as HTML(编辑为 HTML) 后全选复制(

mac用不了

系统Big Sur 11.2.3
微信Version. 3.0.0 (17801)
查分器直接下Release的maimaidx-prober-proxy-mac,版本1.0.2

证书已经信任,go代理已经打开,网络设置配置了代理。
但开微信的「我的记录」还是进的首页,没有自动收集数据。
而且代理如果挂到了https,Terminal会报EOF错误

“导出CSV”功能无法区分标准谱面和DX谱面

就是说,现在导出的CSV只有“标题”字段,
但是标准谱面和DX谱面的标题是相同的((
就不太好区分哪个是标准哪个是DX(
而且好像也有两首不同乐曲的标题完全相同


只要导出csv的时候带上“乐曲ID”字段就好了

页面语言为"en"引起的字体显示错误

页面的语言为"en",当浏览器的默认语言不是中文时,会有字体错误(如图日语汉字显示为日语字体)
图片

正确的字体显示(使用 userscript 设置为了 "zh-cn" 后)
图片

查牌子时不知道哪些曲子是不需要打的

如题,用query/plate查牌子时无法得知哪些曲子不用打,希望可以在api返回的数据中加入字段。
具体地,可以在music_data返回的数据中加入某个谱面属于哪些牌子。
比如,[{"id": ..., ..., "charts": [{"notes": ..., "charter": ..., "plates": ["真", "舞"]},...}...]

关于查分器对Proxifier等全局代理编辑器的支持

首先感谢开发者的付出。
image
因为我日常使用科学上网,所以安装了Proxifier以更方便地使某些不支持代理设置的软件走代理。
在使用查分器更新工具的时候,我也尝试了通过Proxifier来代理微信访问华立网站的流量,然而如图所示,没有任何反应。
先前我在macOS下使用更新工具的时候(那个时候macOS的查分器应该还不支持自动设置系统代理)甚至必须彻底退出Proxifier之后才能正常使用查分器,否则我连系统代理都无法手动设置。
所以,既然都是HTTPS代理,为什么不能通过Proxifier类第三方代理工具代理微信的流量,而只能通过设置系统代理实现?
因为每次更新查分器都必须退出Proxifier,导致了我的使用带来了一定程度的不便。
望尽快得到回复。
谢谢!

CHUNITHM 查分接口问题

CHUNITHM 当前只提供了一个 /chuni/query/player 接口

做的bot想要一个查询所有成绩的接口,来实现一个成绩汇总的功能,如下图,图中是按等级汇总

image.png

maimai这个功能的实现是通过牌子查询拿到所有成绩的,不知道能否给CHUNITHM也添加一个类似的接口

查分器网页点击达成率、定数等按钮的时候,歌曲名会加长

在查分器的网站上面,如果反复点击“排名”,“乐曲名”,“难度”,“定数”,“达成率”,“DX Rating”,“相对难度”的按钮的时候,某些歌曲歌曲名较长,会在反复按下按键后加长。
例如:“DX ここからはじまるプロローグ。”会在多次点击后变成“DX ここからはじまるプロローグ。 プロローグ。 プロローグ。 プロローグ。”

在Termux上使用时发生错误

使用main分支进行的编译
go 版本为 go1.20 android/arm64
下面是错误日志

2023/04/01 18:45:44 http: panic serving 127.0.0.1:44576: runtime error: index out of range [0] with length 0
goroutine 50 [running]:
net/http.(*conn).serve.func1()
        /data/data/com.termux/files/usr/lib/go/src/net/http/server.go:1854 +0xb0
panic({0x5a34eb90c0, 0x400001a138})
        /data/data/com.termux/files/usr/lib/go/src/runtime/panic.go:890 +0x248
github.com/elazarl/goproxy.signHost({{0x0, 0x0, 0x0}, {0x0, 0x0}, {0x0, 0x0, 0x0}, {0x0, 0x0, ...}, ...}, ...)
        /data/data/com.termux/files/home/go/pkg/mod/github.com/elazarl/[email protected]/signer.go:44 +0x8b8
github.com/elazarl/goproxy.TLSConfigFromCA.func1.1(...)
        /data/data/com.termux/files/home/go/pkg/mod/github.com/elazarl/[email protected]/https.go:434
github.com/elazarl/goproxy.TLSConfigFromCA.func1({0x4000020207, 0x17}, 0x400007a360)
        /data/data/com.termux/files/home/go/pkg/mod/github.com/elazarl/[email protected]/https.go:439 +0x208
github.com/elazarl/goproxy.(*ProxyHttpServer).handleHttps(0x4000504000, {0x5a34ed8b00?, 0x40005240e0}, 0x40004a4000)
        /data/data/com.termux/files/home/go/pkg/mod/github.com/elazarl/[email protected]/https.go:184 +0x3d8
github.com/elazarl/goproxy.(*ProxyHttpServer).ServeHTTP(0x0?, {0x5a34ed8b00?, 0x40005240e0?}, 0x5a34e04ff8?)
        /data/data/com.termux/files/home/go/pkg/mod/github.com/elazarl/[email protected]/proxy.go:114 +0xb0
net/http.serverHandler.ServeHTTP({0x4000490090?}, {0x5a34ed8b00, 0x40005240e0}, 0x40004a4000)
        /data/data/com.termux/files/usr/lib/go/src/net/http/server.go:2936 +0x2c0
net/http.(*conn).serve(0x4000494000, {0x5a34ed8d28, 0x400007c210})
        /data/data/com.termux/files/usr/lib/go/src/net/http/server.go:1995 +0x518
created by net/http.(*Server).Serve
        /data/data/com.termux/files/usr/lib/go/src/net/http/server.go:3089 +0x4e8

OSX can not revert proxy successfully

OS Version:

❯ sw_vers
ProductName:		macOS
ProductVersion:		13.3.1
ProductVersionExtra:	(a)
BuildVersion:		22E772610a

The latest networksetup command requires param.

❯ networksetup --help | grep set | grep state
networksetup -setwebproxystate <networkservice> <on off>
networksetup -setsecurewebproxystate <networkservice> <on off>
networksetup -setsocksfirewallproxystate <networkservice> <on off>

Besides, since the tool set both http and https, need to revert for both as well

使用时提示 index out of range [0] with length 0

问题描述: 使用代理后打开我的记录 代理报错 且数据未能同步
版本: maimaidx-prober-proxy-windows-1.1.1
复现: 按照使用教程操作 在电脑端微信打开我的记录
出现概率: 每次都是如此
log如下
登录成功,代理已开启到127.0.0.1:8033 代理设置已自动修改。 2021/04/25 23:28:21 http: panic serving 127.0.0.1:62981: runtime error: index out of range [0] with length 0 goroutine 52 [running]: net/http.(*conn).serve.func1(0xc0000b2280) c:/go/src/net/http/server.go:1801 +0x147 panic(0x4940a0, 0xc0001adac0) c:/go/src/runtime/panic.go:975 +0x3e9 github.com/elazarl/goproxy.signHost(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) C:/Users/divingfish/go/pkg/mod/github.com/elazarl/[email protected]/signer.go:44 +0xcce github.com/elazarl/goproxy.TLSConfigFromCA.func1.1(...) C:/Users/divingfish/go/pkg/mod/github.com/elazarl/[email protected]/https.go:434 github.com/elazarl/goproxy.TLSConfigFromCA.func1(0xc0001ada67, 0x15, 0xc00005f500, 0x0, 0x0, 0x0) C:/Users/divingfish/go/pkg/mod/github.com/elazarl/[email protected]/https.go:439 +0x4e9 github.com/elazarl/goproxy.(*ProxyHttpServer).handleHttps(0xc000075860, 0x523c60, 0xc0001568c0, 0xc000168600) C:/Users/divingfish/go/pkg/mod/github.com/elazarl/[email protected]/https.go:184 +0x5b5 github.com/elazarl/goproxy.(*ProxyHttpServer).ServeHTTP(0xc000075860, 0x523c60, 0xc0001568c0, 0xc000168600) C:/Users/divingfish/go/pkg/mod/github.com/elazarl/[email protected]/proxy.go:114 +0xc9a net/http.serverHandler.ServeHTTP(0xc000156700, 0x523c60, 0xc0001568c0, 0xc000168600) c:/go/src/net/http/server.go:2843 +0xaa net/http.(*conn).serve(0xc0000b2280, 0x5243e0, 0xc00005cf00) c:/go/src/net/http/server.go:1925 +0x8ad created by net/http.(*Server).Serve c:/go/src/net/http/server.go:2969 +0x36d 2021/04/25 23:29:08 [009] WARN: Error copying to client: readfrom tcp 127.0.0.1:8033->127.0.0.1:63006: read tcp 192.168.1.127:63007->192.30.255.112:443: wsarecv: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.

[Feature request] 添加神将牌查漏补缺

之前刷将牌的时候用贵项目的代理自己撸了一个简单的出来,但因为我不会 js 所以是 python 实现的,还考虑过用查分器导出的 .csv 文件来实现导出导入的查漏补缺,不过既然都直接用查分器的数据了,是不是直接内置进查分器更牛逼一点,但我不会 js 所以也发不出 pr,开个 issue 提一嘴问问想法。

macOS下查分程序Runtime Error

系统信息

OS: macOS 12.6
Device: MacBookPro2019 late 16-Inch
CPU: intel core i7-9750H

软件版本

Release:1.2.0-fix1

错误代码

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x40 pc=0x12ba705]

goroutine 22 [running]:
main.commit({0x13c90e0?, 0xc000308040?})
	C:/Users/DivingFish/Github/maimaidx-prober/proxy/cmd/maimaidx-prober-proxy/main.go:71 +0x65
main.fetchData(0xc000160300, {0xc000224008, 0x1, 0x1})
	C:/Users/DivingFish/Github/maimaidx-prober/proxy/cmd/maimaidx-prober-proxy/main.go:102 +0x5e5
created by main.main.func2
	C:/Users/DivingFish/Github/maimaidx-prober/proxy/cmd/maimaidx-prober-proxy/main.go:213 +0x29a

发生时机

    成功开启代理后,在微信中打开舞萌DX公众号,显示代理连接成功,然后Terminal中程序发生报错

增加只能导入数据的API Token密钥

导入数据需要中间人攻击,而复杂的网络环境有可能导致密码泄露。
因此可以增加一种只能导入数据而不能登录网站的密钥用以防止密码泄露带来危险

未知原因闪退

环境

  • 处理器:AMD Ryzen 7 5800H
  • 内存:16.0 GB (15.9 GB 可用)
  • 系统:Windows 11 家庭中文版 22H2
  • 系统版本 22621.1848

程序版本

在以下两个版本中均出现闪退情况:

  1. 官方编译1.3.0
  2. 官方编译1.2.1

如何复现

  1. 参照本项目readme完成“1. 准备工作”
  2. 双击运行程序,打开电脑版微信,进入舞萌 DX 公众号,点击我的记录
  3. 切换到代理服务器的控制台界面,等待导入完成

预期结果

成功导入数据并可通过舞萌 DX | 中二节奏查分器查询

实际所得

  • 小概率成功同步
  • 较大概率同步到一半(Advance/Expert/Master)即闪退,无法获取报错信息

6+

Tell your world 黄谱是6,但是由于定数大于等于6.7,在网页里被错误标注为6+,导致无法在成绩列表中显示条目,但在pq中有显示

代理出现认证错误

如题,本人懒得在Arch linux上折腾Wine微信了,决定利用局域网来进行代理。结果刷了一大片认证错误
错误如下

2023/04/18 22:17:17 [002] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:17 [003] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:17 [004] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:17 [005] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:17 [006] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:17 [007] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:18 [008] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:18 [009] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:18 [010] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:18 [011] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:18 [012] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:18 [013] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:18 [014] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:18 [015] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:18 [016] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:18 [017] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:19 [018] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:19 [019] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:19 [020] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:19 [021] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:19 [022] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:19 [023] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:19 [024] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:20 [025] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:20 [026] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:20 [027] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:20 [028] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:20 [029] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:20 [030] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:20 [031] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:20 [032] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate
2023/04/18 22:17:21 [033] WARN: Cannot handshake client maimai.wahlap.com:443 remote error: tls: unknown certificate

手机通过局域网直接连接的电脑代理,同时也安装了证书:
Screenshot_20230418_222045_com android settings

系统信息:
手机:NAM-AL00 鸿蒙3.0.0.205
电脑:
Linux crystal 6.2.11-arch1-1 #1 SMP PREEMPT_DYNAMIC Thu, 13 Apr 2023 16:59:24 +0000 x86_64 GNU/Linux

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.