Giter VIP home page Giter VIP logo

nsisolauncher's Introduction

NsisoLauncher(Master)

A New Minecraft Launcher (unofficial) from Nsiso (Master)
Build status Build Status

感谢您关注到我们Nsiso启动器的开源项目
此项目开源目的在于学习,错误排查,公开安全策略
作者:Nsiso工作室-siso
请注意该项目遵循GNU GPL3.0开源协议

使用组件(由名字字母排序):

BMCLAPI

bangbang93's minecraft launcher api
https://bmclapidoc.bangbang93.com/

关于
BMCLAPI是@bangbang93开发的BMCL的一部分,用于解决国内线路对Forge和Minecraft官方使用的Amazon S3 速度缓慢的问题。BMCLAPI是对外开放的,所有需要Minecraft资源的启动器均可调用。
协议
BMCLAPI下的所有文件,除BMCLAPI本身的源码之外,归源站点所有
BMCLAPI会尽量保证文件的完整性、有效性和实时性,对于使用BMCLAPI带来的一切纠纷,与BMCLAPI无关。
BMCLAPI和BMCL不同,属于非开源项目
所有使用BMCLAPI的程序必需在下载界面或其他可视部分标明来源
禁止在BMCLAPI上二次封装其他协议
捐助
服务器的开销是有费用的,若你觉得BMCLAPI对你有帮助,欢迎捐助,支付宝:[email protected]服务器的开销是有费用的,若你觉得BMCLAPI对你有帮助,欢迎捐助,支付宝:[email protected]


okayapi

启动器检查更新,上传报告API接口 小白接口,小接口做大事情 小白接口,是免费,免开发,直接可用的云端数据接口!我们致力于为客户端开发同学提供便利的云端接口,实现快速开发! https://www.okayapi.com/


老腊肉提供的Steve,Alex 3D XAML

3D建模来自老腊肉(代表作LauncherX)热情提供

NsisoLauncher开源代码许可

MahApps.Metro

https://github.com/MahApps/MahApps.Metro
Copyright (c) 2018 MahApps
The goal of MahApps.Metro is to allow devs to quickly and easily cobble together a "Metro" or "Modern UI" for their WPF4+ apps, with minimal effort.
Licensed under the MIT License(MIT);
https://github.com/MahApps/MahApps.Metro/blob/master-net40/LICENSE

MahApps.Metro.IconPacks

https://github.com/MahApps/MahApps.Metro.IconPacks
Copyright (c) 2016-2018 MahApps, Jan Karger
IconPacks for stylish awesome WPF or UWP apps.
Licensed under the MIT License(MIT);
https://github.com/MahApps/MahApps.Metro.IconPacks/blob/master/LICENSE

Newtonsoft.Json

https://www.newtonsoft.com/json
https://github.com/JamesNK/Newtonsoft.Json
Copyright (c) 2007 James Newton-King
Json.NET is a popular high-performance JSON framework for .NET
Licensed under the MIT License(MIT);
https://github.com/JamesNK/Newtonsoft.Json/blob/master/LICENSE.md

Fody

https://github.com/Fody/Fody
Copyright (c) Simon Cropp and contributors
Extensible tool for weaving .net assemblies.
Licensed under the MIT License(MIT);
https://github.com/Fody/Fody/blob/master/License.txt

Costura.Fody

https://github.com/Fody/Costura
Copyright (c) 2012 Simon Cropp and contributors
Fody add-in for embedding references as resources.
Licensed under the MIT License(MIT);
https://github.com/Fody/Costura/blob/master/license.txt

LiveCharts.Wpf

https://lvcharts.net
https://github.com/Live-Charts/Live-Charts
Copyright (c) 2016 Alberto Rodriguez & LiveCharts contributors
Simple, flexible, interactive and powerful data visualization for Wpf
Licensed under the MIT License(MIT);
https://github.com/Live-Charts/Live-Charts/blob/master/LICENSE.TXT

SharpZipLib

https://github.com/icsharpcode/SharpZipLib
Copyright © 2000-2018 SharpZipLib Contributors
SharpZipLib (#ziplib, formerly NZipLib) is a compression library for Zip, GZip, BZip2, and Tar written entirely in C# for .NET. It is implemented as an assembly (installable in the GAC), and thus can easily be incorporated into other projects (in any .NET language)
Licensed under the MIT License(MIT);
https://github.com/icsharpcode/SharpZipLib/blob/master/LICENSE.txt

MojangSharp

https://github.com/hawezo/MojangSharp
Copyright 2017 Enzo Innocenzi
MojangSharp is a C# wrapper for the Mojang API and Mojang Authentication API.
Licensed under the Apache License, Version 2.0;
https://github.com/hawezo/MojangSharp/blob/master/LICENSE

Heijden.Dns

https://github.com/ghuntley/Heijden.Dns
Copyright (c) 2008-2013 Alphons van der Heijden [email protected] Copyright (c) 2014 Geoffrey Huntley [email protected]
A reusable DNS resolver for .NET
Licensed under the MIT License(MIT);
https://github.com/ghuntley/Heijden.Dns/blob/master/LICENSE.md

Minecraft-Console-Client

https://github.com/ORelio/Minecraft-Console-Client
Copyright (c) ORelio
Lightweight console for Minecraft chat and automated scripts
Licensed under the CDDL-1.0 License;
https://opensource.org/licenses/CDDL-1.0

nsisolauncher's People

Contributors

nsiso avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nsisolauncher's Issues

启动器界面

能不能把启动器的界面缩小一点,界面太大了,虽然能手动缩小,但是每次打开它的界面都是非常大。

改善对 authlib-injector 的支持

  1. 目前配置 authlib-injector 需要手动下载 authlib-injector.jar,并且还需要手动设置启动参数。但实际上这些都可以由启动器自动完成,服主只需要输入 URL。
  2. 统一通行证的 nide8auth.jar 可以用 authlib-injector.jar 替代。并且这样的话,两者可以使用同一个验证逻辑。

如何登录微软账号?

Mojang账号的游戏版本转移到微软了,但是尝试用微软的用户名和密码登录时出现错误

[Bug]无法处理官方启动器未完成的下载

概述

无法处理官方启动器未完成的下载.

复现

1,使用官方启动器下载游戏并在下载完之前退出官方启动器.
2,打开nsiso,将游戏路径设为官方默认路径.
此时:
1,nsiso无法检测到未下载完成的版本.
2,在nsiso下载界面选择下载未下载完的游戏,nsiso直接提示下载完成,并不会进行下载.

预期

1,能够检测到未下载完成版本.
2,能够检测游戏文件损坏.

无法使用openj9虚拟机通过统一通行证启动mc

openj9版本:8.0.222.10
nsiso启动器版本:4.5.6819.2638
mc版本:1.12.2
forge版本:14.23.5.2838
具体表现是,点击启动游戏,进入启动中界面后直接跳回原始界面,具体看gif
我猜是不是启动参数的锅,mccl是可以启动的
GIF.gif

提示游戏非正常退出

客户端1.12.2,移除全部mod依然提示这个。用其他启动器就可以正常运行。这啥情况

无法启动1.8.9

我用nsiso下载版本总是下载失败,用hmcl下载了1.8.9,nsiso打不开,1.13.2以上我能打开

某些皮肤站同账号多ID登录时选择ID功能的缺失

多数皮肤站支持同一个账号创建不同名称的角色,
Nsiso启动器还没能支持从多个角色中任选其一启动的功能,如果遇到用皮肤站外置
登录正巧该皮肤站账号添加了多个id不同的角色,Nsiso将没法顺利启动游戏。

出错,下载出错,三个下载源全部尝试过了

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

dev

========NsisoLauncher Error Report========
Date:2021/2/9 12:09:28 Launcher Version:4.10.7710.20254
Exception Detail:
System.InvalidOperationException: 集合 Remove 事件必须指定项位置。
在 MS.Internal.Data.EnumerableCollectionView.ProcessCollectionChanged(NotifyCollectionChangedEventArgs args)
在 System.Collections.Specialized.NotifyCollectionChangedEventHandler.Invoke(Object sender, NotifyCollectionChangedEventArgs e)
在 NsisoLauncherCore.Util.ObservableDictionary`2.RemoveWithNotification(TKey key)
在 NsisoLauncher.Views.Controls.AuthModuleControl.<DelButton_Click>d__11.MoveNext()
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
在 System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
在 System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

BUG: 登陆成功后无法添加用户到本地

dev版本的启动器在登陆流程中出现

登录失败:该类型的 CollectionView 不支持从调度程序线程以外的线程对其 SourceCollection 进行的更改.

产生异常的位置是NsisioLauncherCore.Authenticator.MicrosoftAuthenticator.AuthenticateAsync()的

this.Users.Add(user.UserId, user);

语句,同时我怀疑,下面两行更新用户数据的功能也是无法正常运行的.
导致这个问题的原因似乎是在外部线程修改了ObservableDictionary,但是这个行为貌似是不被允许的.

功能建议:希望改进MultiThreadDownloader

您的 Dev 版本似乎采用了与 Master 不同的 HTTPDownload 函数,加入了异步处理的代码。但是当我调用此函数(无论是 Dev 还是 Master)下载大文件(100MB+ Zip格式 实际为客户端压缩包)时,DownloadWindow 内不显示进度,Visual Studio Debug 界面内显示占用内存逐渐上涨,由正常的 100MB 到 800MB+ 直至2G,同时任务管理器显示有网络读写,不过下载进度会被 Retry 机制打断。同时我观察到并没有任何的磁盘 I/O ,由此结合代码可以推测下载逻辑或许是全部以 Buffer 作为缓存,下载完后再进行 WriteAsync ?
这种方法面对下载版本 Assets 等小而多的文件确实没有问题,不过稍大一点(我测试的是 80MB+)的文件便会出现诸多问题。改用自己编写的函数调用 WebClient 进行下载则没有这个问题。

大佬年过了记得修复BUG发布新版本我帮你整理下

①修复自定义游戏标题的功能 ②修复开启强制统一模式后就无法显示服务器状态和无法直接进入服务器的问题 ③最好能根据游戏API实时头像 ④最好能支持中文统一通行证账号登陆 ⑤启动器音乐关闭时的图标有斜杠的优化 ⑥统一通行证只要记住账号密码,下次登陆就算换了账号输入了正确密码也还是上次记住的账号,除非重置用户信息的BUG

在打开下载器的时候可以直接刷新而不是手动刷新?

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
在4.9版本中发现版本获取需要手动点击刷新。
Describe the solution you'd like
A clear and concise description of what you want to happen.
希望在首次打开后自动跟新列表,刷新用作跟新失败后。
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
在src\NsisoLauncher\Views\Windows\NewDownloadTaskWindow.xaml.cs的NewDownloadTaskWindow()函数中加入refreshversion()函数以解决之
Additional context
Add any other context or screenshots about the feature request here.
捕获
这看着有点像启动器坏了,让人心里膈应

找不到启动版本

Describe the bug
打开启动器,启动版本里是空的,但是version文件夹里是有游戏版本的

Screenshots
image
image

Desktop (please complete the following information):

  • OS: [Windows 10]
  • Version [4.8.7368.23222]

Additional context
这个版本是用HMCL下载安装的,是原版+Forge的
推测是启动器不支持这种方式的版本

启动时微软登录卡死

Describe` the bug
A clear and concise description of what the bug is.
卡住,报错,启动器没反应了(不是未响应)
To Reproduce
Steps to reproduce the behavior:

  1. 下载启动器 版本:4.10配置修复并打开
  2. 微软登录,关掉启动器
  3. 重新打开
  4. 坏了
  5. bug出现频率很奇怪,有几回是马上不行了,就隔了一小时半小时,有几回等了几天才出现

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.
bug_2021_6_15.txt

Desktop (please complete the following information):

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

启动器挪位置报错

========NsisoLauncher Error Report========
Date:2021/8/19 18:02:27    Launcher Version:4.10.7892.18804
Exception Detail:
System.Collections.Generic.KeyNotFoundException: 给定关键字不在字典中。
   在 System.ThrowHelper.ThrowKeyNotFoundException()
   在 System.Collections.Generic.Dictionary`2.get_Item(TKey key)
   在 NsisoLauncher.ViewModels.Pages.WelcomePageViewModel.<RefreshUser>d__34.MoveNext()
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
   在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   在 System.Runtime.CompilerServices.TaskAwaiter.GetResult()
   在 NsisoLauncher.ViewModels.Pages.WelcomePageViewModel.<CheckEnvironment>d__32.MoveNext()
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
   在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   在 System.Runtime.CompilerServices.TaskAwaiter.GetResult()
   在 NsisoLauncher.ViewModels.Pages.WelcomePageViewModel.<<-ctor>b__28_0>d.MoveNext()
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
   在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   在 System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   在 System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

卡在登录用户

登录的是统一通行证的用户

建议:关于显示服务器信息

如题,现在主界面只能单独显示一个服务器的连接信息,希望添加更多的设置插槽,毕竟有很多服务器是多条线路的

[BUG] 设置修改后未能及时应用

BUG内容

修改完设置并应用后,在启动器重启前不会使用新的设置。

复现流程

  • 点击设置
  • 修改任意设置(例如Java路径、JVM参数等容易从启动器日志中看出的设置)
  • 点击应用,并关闭设置窗口
  • 启动游戏,检查启动器日志

启动器错误

========NsisoLauncher Error Report========
Date:2021/1/29 10:05:31 Launcher Version:4.8.7368.23222
Exception Detail:
System.NullReferenceException: 未将对象引用设置到对象的实例。
在 NsisoLauncher.Config.ConfigHandler.Read()
在 NsisoLauncher.Config.ConfigHandler..ctor()
在 NsisoLauncher.App.InitializeApplication(StartupEventArgs e)
在 System.Windows.Application.OnStartup(StartupEventArgs e)
在 System.Windows.Application.<.ctor>b__1_0(Object unused)
在 System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
在 System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

启动器读取文件出错

版本是action里的忘记了4.10.x
不是系统就是messagebox提示的文件读取出错,之后启动器就报错了,或者直接打不开来
首先启动器目录下没有中文字符,可以排除路径问题
其次的话也是把config.js删了就好了,怕不是一样的俩问题

错误日志

========NsisoLauncher Error Report========
Date:2021/1/15 10:44:43 Launcher Version:4.8.7368.23222
Exception Detail:
System.NullReferenceException: 未将对象引用设置到对象的实例。
在 NsisoLauncher.MainWindow.d__6.MoveNext()

无法识别 OpenJDK

Describe the bug
无法识别 OpenJDK 17.0.1

To Reproduce
Steps to reproduce the behavior:

  1. 安装 OpenJDK 17.0.1
  2. 启动 NsisoLauncher

Expected behavior
正常启动

Actual behavior
提示:该电脑上未安装Java

Desktop (please complete the following information):

  • OS: Windows 11 21H2

[BUG] "inheritsFrom"未能自动获取

BUG内容

一个版本(json)如果声明了inheritsFrom,但是没有对应的json文件时,启动器不会自动获取这一json。

复现流程

  • 建立.minecraft/versions/test/test.json,写入如下内容
{
    "id": "test",
    "inheritsFrom": "1.13",
    "jar": "1.13"
}
  • 删除.minecraft/versions/1.13/1.13.json
  • 查看版本选项,不存在test

寒冰之刄提供:客户端防盗原理

防客户端盗初期想法,在模组核心jar文件都按压缩包加上密码,这样mc是启动不了的,但在启动器里引导mc时使用里面预设密码解密加载,启动器(安全性加壳)无法反编辑,你也看不到里面的预设密码,从而实现无伤99%免破解。

linux

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

能不能加一個修改UUID的功能?

每次重啟客戶端似乎會生成新的 UUID?
如果是,在 1.14.2 版本,統計信息保存在saves/存檔名/%uuid%.json中,所以不能保存遊戲統計信息。

dev 分支 无法启动1.12.2 forge

[GAME][19:41:29] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper
[GAME][19:41:30] [main/FATAL] [FML]: Patcher expecting non-empty class data file for net.minecraft.entity.passive.EntityOcelot, but received empty.
[GAME][19:41:30] [main/ERROR] [LaunchWrapper]: Unable to launch
[GAME]java.lang.RuntimeException: java.lang.RuntimeException: Patcher expecting non-empty class data file for net.minecraft.entity.passive.EntityOcelot, but received empty, your vanilla jar may be corrupt.
[GAME] at net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper.injectIntoClassLoader(CoreModManager.java:169) ~[forge-1.12.2-14.23.5.2855.jar:?]
[GAME] at net.minecraft.launchwrapper.Launch.launch(Launch.java:115) [launchwrapper-1.12.jar:?]
[GAME] at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
[GAME]Caused by: java.lang.RuntimeException: Patcher expecting non-empty class data file for net.minecraft.entity.passive.EntityOcelot, but received empty, your vanilla jar may be corrupt.
[GAME] at net.minecraftforge.fml.common.patcher.ClassPatchManager.applyPatch(ClassPatchManager.java:114) ~[forge-1.12.2-14.23.5.2855.jar:?]
[GAME] at net.minecraftforge.fml.common.patcher.ClassPatchManager.getPatchedResource(ClassPatchManager.java:77) ~[forge-1.12.2-14.23.5.2855.jar:?]
[GAME] at net.minecraftforge.fml.common.asm.transformers.deobf.FMLDeobfuscatingRemapper.getFieldType(FMLDeobfuscatingRemapper.java:219) ~[forge-1.12.2-14.23.5.2855.jar:?]
[GAME] at net.minecraftforge.fml.common.asm.transformers.deobf.FMLDeobfuscatingRemapper.parseField(FMLDeobfuscatingRemapper.java:192) ~[forge-1.12.2-14.23.5.2855.jar:?]
[GAME] at net.minecraftforge.fml.common.asm.transformers.deobf.FMLDeobfuscatingRemapper.setup(FMLDeobfuscatingRemapper.java:161) ~[forge-1.12.2-14.23.5.2855.jar:?]
[GAME] at net.minecraftforge.fml.common.asm.FMLSanityChecker.injectData(FMLSanityChecker.java:187) ~[forge-1.12.2-14.23.5.2855.jar:?]
[GAME] at net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper.injectIntoClassLoader(CoreModManager.java:164) ~[forge-1.12.2-14.23.5.2855.jar:?]
[GAME] ... 2 more
[GAME][19:41:30] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:-1]: net.minecraftforge.fml.relauncher.FMLSecurityManager$ExitTrappedException
[GAME][19:41:30] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:-1]: at net.minecraftforge.fml.relauncher.FMLSecurityManager.checkPermission(FMLSecurityManager.java:49)
[GAME][19:41:30] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:-1]: at java.lang.SecurityManager.checkExit(Unknown Source)
[GAME][19:41:30] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:-1]: at java.lang.Runtime.exit(Unknown Source)
[GAME][19:41:30] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:-1]: at java.lang.System.exit(Unknown Source)
[GAME][19:41:30] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:-1]: at net.minecraft.launchwrapper.Launch.launch(Launch.java:138)
[GAME][19:41:30] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:-1]: at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
[GAME]Exception in thread "main"

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.