Git Product home page Git Product logo

sonar's Introduction

👋 Hi there!

Languages and Tools

Contact

sonar's People

Contributors

dependabot[bot] avatar fallencrystal avatar greeneddev avatar jonesdevelopment avatar micartey avatar slosacoder avatar xism4 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  avatar

sonar's Issues

Feature Request: Spigot/Bukkit Support

Information

Sonar should support Spigot / Bukkit as well

Reason

There are single server “networks”.
E.g., vanilla style survival servers.

Additional information

No response

Feature Request: IPTables support

Information

I've been checking the config and doesnt seem to be mentoning something about firewall block using iptables.

Reason

Would not be this more effective to block the IP once it founded that it's a bot? Specially for large massive attacks would be useful. This list could be reset every 24 hours or when the server restart just in case there are some false positives?

Additional information

No response

Fix Geyser/floodgate player profiles

This is only an issue on Velocity servers.

Sonar's injection replaces Geyser's (floodgate-velocity plugin) injection resulting in invalid IP addresses and player profiles.

Release 2.1

Information

  • Resolve #12
  • Resolve #19
  • Resolve #61
  • Publish API to the maven repository
    • Automatic publishing?

Bug Report: rare NoSuchElementException when multiple players log in

General information

[13:18:11] [Velocity Async Event Executor - #0/ERROR] [com.velocitypowered.proxy.event.VelocityEventManager]: Couldn't pass PreLoginEvent to sonar
java.util.NoSuchElementException: minecraft-decoder
	at io.netty.channel.DefaultChannelPipeline.getContextOrDie(DefaultChannelPipeline.java:1073) ~[velocity-3.2.0-SNAPSHOT-265.jar:3.2.0-SNAPSHOT (git-19abb909-b265)]
	at io.netty.channel.DefaultChannelPipeline.addBefore(DefaultChannelPipeline.java:248) ~[velocity-3.2.0-SNAPSHOT-265.jar:3.2.0-SNAPSHOT (git-19abb909-b265)]
	at io.netty.channel.DefaultChannelPipeline.addBefore(DefaultChannelPipeline.java:237) ~[velocity-3.2.0-SNAPSHOT-265.jar:3.2.0-SNAPSHOT (git-19abb909-b265)]
	at xyz.jonesdev.sonar.common.fallback.traffic.TrafficChannelHooker.hook(TrafficChannelHooker.java:31) ~[?:?]
	at xyz.jonesdev.sonar.velocity.fallback.FallbackListener.handle(FallbackListener.java:121) ~[?:?]
	at xyz.jonesdev.sonar.velocity.fallback.Lmbda$12.execute(Unknown Source) ~[?:?]
	at com.velocitypowered.proxy.event.UntargetedEventHandler$VoidHandler.lambda$buildHandler$0(UntargetedEventHandler.java:56) ~[velocity-3.2.0-SNAPSHOT-265.jar:3.2.0-SNAPSHOT (git-19abb909-b265)]
	at com.velocitypowered.proxy.event.VelocityEventManager.fire(VelocityEventManager.java:597) ~[velocity-3.2.0-SNAPSHOT-265.jar:3.2.0-SNAPSHOT (git-19abb909-b265)]
	at com.velocitypowered.proxy.event.VelocityEventManager.lambda$fire$5(VelocityEventManager.java:478) ~[velocity-3.2.0-SNAPSHOT-265.jar:3.2.0-SNAPSHOT (git-19abb909-b265)]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[?:?]
	at java.lang.Thread.run(Thread.java:1623) [?:?]

Steps to reproduce

  1. Let multiple bots/players enter the verification with high ping
  2. Wait for the error message to pop up in console

Sonar dump

No response

Additional information

No response

Feature Request: Add console filter

Information

Sonar is a good antibot but But he doesn't have any console filtering strategy I think you can add one now

Reason

Sonar is a good antibot but But he doesn't have any console filtering strategy I think you can add one now
I tested your AntiBot using mcstorm and it was I9 13900k without much relief. The CPU utilization was above 40%, and after filtering the console, it was only 10% -20%

You can do a filter similar to BotSentry

For example:

Sonar AntiBot>Join: 34/s Motd: 230/s Ping: 230/s CPS: 2000 Queue: 23 Mode: AntiBot

In the console

Additional information

I have translated your Soanr Antibot into Chinese. Do you need it? I can provide to everyone :)

Feature Request: Support MongoDB as a database type

Information

I think that adding MongoDB as a supported database too could be a good idea.

Reason

Not everyone uses MySQL as their primary db and some don't even have it installed (like me) to save verified players i think it would be good to add it

Additional information

No response

Bug Report: Configuration is saved after loading

General information

Instead of loading the configuration, it is saved after the values are loaded.
This leads to a configuration file update every time the plugin is reloaded.

Steps to reproduce

  1. Open the configuration
  2. Reload the plugin (/sonar reload)

Sonar dump

/

Additional information

No response

Feature Request: Velocity 3.3.0 support

Information

  • Implement support for Velocity 3.3.0

Reason

  • Velocity 3.3.0 is still highly experimental, but some people still want to use it because of 1.20.3/1.20.4 support which is quite understandable

Additional information

No response

Bug Report: Any configuration error resets the config.yml

General information

image
(Configuration resets after the error is thrown)

Steps to reproduce

  1. Make an invalid change to the configuration
  2. Reload the plugin using /sonar reload
  3. All your configuration changes will be discarded

Sonar dump

/

Additional information

No response

Bug Report: Webhook displaying absolute values

General information

image
The variables failed and successful show the total, absolute amount instead of the relative amount (during attack).

Steps to reproduce

  1. Set up webhooks
  2. Receive an attack notification

Sonar dump

/

Additional information

No response

Bug Report: Local database cache is duplicated after reload

General information

VerifiedPlayerController#MAP is static and doesn't reset whenever a new database connection is instantiated

Steps to reproduce

  1. /sonar verified size
  2. /sonar reload
  3. /sonar verified size shows 2x the normal amount

Sonar dump

/

Additional information

No response

Allow genuine players to bypass this verification

Information

The identities of genuine players are mostly reliable
So there is no need to do this verification
In addition, I hope there are options to adjust the verification after successful verification, such as sending it directly to the login server instead of disconnecting.
I'm looking forward to seeing these features added, it will be very helpful to complete the plugin

Reason

Some very useful feature improvements

Additional information

No response

Bug Report: DB clean-up is often run after the map is initialized

General information

  • The automatic database clean up task is run asynchronously and is sometimes still in process when the map is written to

Steps to reproduce

  1. Make sure to have a lot of verified players
  2. Restart your server

Sonar dump

/

Additional information

This will be fixed in the next week(s) - I wanted to get 2.0.14 out now.

Bug Report: 1.7 clients cannot verify

General information

1.7 clients cannot connect to the verification server

Steps to reproduce

  1. Start 1.7.10
  2. Join the server

Sonar dump

No response

Additional information

This will be fixed in the upcoming updates of the 2.0 series.

Bug Report: [incompatibility] Protocolize on BungeeCord

General information

[10:13:09 ERROR]: Exception occurred while injecting into netty pipeline
java.util.NoSuchElementException: protocolize2-decoder
at io.netty.channel.DefaultChannelPipeline.getContextOrDie(DefaultChannelPipeline.java:1073) ~[proxy.jar:git:Waterfall-Bootstrap:1.20-R0.2-SNAPSHOT:8a3326a:unknown]
at io.netty.channel.DefaultChannelPipeline.addAfter(DefaultChannelPipeline.java:302) ~[proxy.jar:git:Waterfall-Bootstrap:1.20-R0.2-SNAPSHOT:8a3326a:unknown]
at io.netty.channel.DefaultChannelPipeline.addAfter(DefaultChannelPipeline.java:290) ~[proxy.jar:git:Waterfall-Bootstrap:1.20-R0.2-SNAPSHOT:8a3326a:unknown]
at dev.simplix.protocolize.bungee.netty.NettyPipelineInjector.injectAfter(NettyPipelineInjector.java:36) ~[?:?]
at dev.simplix.protocolize.bungee.listener.PlayerListener.onPing(PlayerListener.java:34) ~[?:?]
at jdk.internal.reflect.GeneratedMethodAccessor27.invoke(Unknown Source) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
at net.md_5.bungee.event.EventHandlerMethod.invoke(EventHandlerMethod.java:19) ~[proxy.jar:git:Waterfall-Bootstrap:1.20-R0.2-SNAPSHOT:8a3326a:unknown]
at net.md_5.bungee.event.EventBus.post(EventBus.java:50) ~[proxy.jar:git:Waterfall-Bootstrap:1.20-R0.2-SNAPSHOT:8a3326a:unknown]
at net.md_5.bungee.api.plugin.PluginManager.callEvent(PluginManager.java:511) ~[proxy.jar:git:Waterfall-Bootstrap:1.20-R0.2-SNAPSHOT:8a3326a:unknown]
at net.md_5.bungee.connection.InitialHandler$3.done(InitialHandler.java:350) ~[proxy.jar:git:Waterfall-Bootstrap:1.20-R0.2-SNAPSHOT:8a3326a:unknown]
at net.md_5.bungee.connection.InitialHandler$3.done(InitialHandler.java:300) ~[proxy.jar:git:Waterfall-Bootstrap:1.20-R0.2-SNAPSHOT:8a3326a:unknown]
at net.md_5.bungee.connection.InitialHandler.handle(InitialHandler.java:410) ~[proxy.jar:git:Waterfall-Bootstrap:1.20-R0.2-SNAPSHOT:8a3326a:unknown]
at xyz.jonesdev.sonar.bungee.fallback.FallbackInitialHandler.lambda$handle$0(FallbackInitialHandler.java:133) ~[?:?]
at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804) ~[?:?]
at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796) ~[?:?]
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) ~[?:?]
at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) ~[?:?]
at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) ~[?:?]
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) ~[?:?]
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) ~[?:?]

Steps to reproduce

  1. Protocolize
  2. Protocolize Legacy Data
  3. Sonar (built from source code)
  4. Send a bot attack

Sonar dump

[Sonar]: Generated dump: {"memory":{"total":"4.0 GB","max":"4.0 GB","free":"2.5 GB","used":"1.5 GB"},"runtime":{"virtualCores":12,"jvmArguments":["-Xmx4G","-Xms4G"],"vmName":"OpenJDK 64-Bit Server VM","vmVendor":"Debian","vmVersion":"17.0.7+7-Debian-1deb11u1"},"os":{"name":"Linux","arch":"amd64","version":"5.10.0-26-amd64"},"sonar":{"version":"2.0.15-512faa9-1015-main","platform":"BUNGEE","isOnMainBranch":true}}

Additional information

No response

Bug Report: Missing relocations breaking existing classes

General information

startup plugin error

Steps to reproduce

im only add sonar to plugins and start server

Sonar dump

not works (plugin not load)

Additional information

[19:38:30] [Velocity Async Event Executor - #0/INFO] [sonar]: Successfully booted in 0.007s!
[19:38:30] [Velocity Async Event Executor - #0/INFO] [sonar]: Initializing shared components...
[19:38:30] [Velocity Async Event Executor - #0/ERROR] [com.velocitypowered.proxy.event.VelocityEventManager]: Couldn't pass ProxyInitializeEvent to sonar
java.lang.NoSuchMethodError: 'net.kyori.adventure.nbt.LongArrayBinaryTag net.kyori.adventure.nbt.LongArrayBinaryTag.longArrayBinaryTag(long[])'
at xyz.jonesdev.sonar.common.fallback.protocol.packets.EmptyChunkData.prepareNBT(EmptyChunkData.java:71) ~[?:?]
at xyz.jonesdev.sonar.common.fallback.protocol.packets.EmptyChunkData.(EmptyChunkData.java:65) ~[?:?]
at xyz.jonesdev.sonar.common.fallback.protocol.FallbackPreparer.(FallbackPreparer.java:77) ~[?:?]
at xyz.jonesdev.sonar.common.boot.SonarBootstrap.reload(SonarBootstrap.java:111) ~[?:?]
at xyz.jonesdev.sonar.common.boot.SonarBootstrap.initialize(SonarBootstrap.java:79) ~[?:?]
at xyz.jonesdev.sonar.velocity.SonarVelocityPlugin.handle(SonarVelocityPlugin.java:64) ~[?:?]
at xyz.jonesdev.sonar.velocity.Lmbda$21.execute(Unknown Source) ~[?:?]
at com.velocitypowered.proxy.event.UntargetedEventHandler$VoidHandler.lambda$buildHandler$0(UntargetedEventHandler.java:56) ~[server.jar:3.2.0-SNAPSHOT (git-bda1430d-b259)]
at com.velocitypowered.proxy.event.VelocityEventManager.fire(VelocityEventManager.java:597) ~[server.jar:3.2.0-SNAPSHOT (git-bda1430d-b259)]
at com.velocitypowered.proxy.event.VelocityEventManager.lambda$fire$5(VelocityEventManager.java:478) ~[server.jar:3.2.0-SNAPSHOT (git-bda1430d-b259)]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
at java.lang.Thread.run(Thread.java:829) [?:?]

Bug Report: Database error will constantly throw exceptions

General information

A single misconfiguration in the database section can lead to NullPointerException spam

Steps to reproduce

  1. Set the database type to MySQL
  2. Set up a MySQL database
  3. Set the username or password to something invalid
  4. Check console for java.lang.NullPointerException spam

Sonar dump

/

Additional information

There shouldn't be any unhandled exceptions in the DB_UPDATE_SERVICE thread.

Bug Report: LibreLogin incompatiblity on BungeeCord

General information

LibreLogin plugin not supported due to custom InitialHandler

Steps to reproduce

  1. LibreLogin
  2. Sonar
  3. Join

Sonar dump

[Sonar]: Generated dump: {"memory":{"total":"4.0 GB","max":"4.0 GB","free":"3.8 GB","used":"230.9 MB"},"runtime":{"virtualCores":12,"jvmArguments":["-Xmx4G","-Xms4G"],"vmName":"OpenJDK 64-Bit Server VM","vmVendor":"Debian","vmVersion":"17.0.7+7-Debian-1deb11u1"},"os":{"name":"Linux","arch":"amd64","version":"5.10.0-26-amd64"},"sonar":{"version":"2.0.15-bea1d29-1006-main","platform":"BUNGEE","isOnMainBranch":true}}

Additional information

https://pastebin.com/hA4xMHiB

Bug Report: Geyser players are unable to connect

General information

People have been reporting issues with Geyser (floodgate).
I've tested Geyser before, but only on Velocity and it seemed to work "just fine".

Steps to reproduce

  1. Join the proxy with a bedrock client

Sonar dump

/

Additional information

I need to collect more information on this issue. More information and related classes:

Bug Report: MySQL driver not working on BungeeCord

General information

addPath doesn't exist in BungeeCord's PluginClassLoader

Steps to reproduce

  1. Set database type to "MYSQL"

Sonar dump

/

Additional information

Probably going to use a loader in the future...

BungeeCord support

Information

Support BungeeCord & forks like

  • Waterfall
  • FlameCord
  • ...

Reason

Multi-version support is important, especially for an anti-bot plugin.

Additional information

  • Netty injection
  • Replace VarInt decoder
  • Server lockdown feature
  • Fallback (anti-bot) integration
  • Testing

Bug Report: Update checker warning about unreleased versions

General information

Currently, the update checker will warn you if you're using an unreleased version.

Steps to reproduce

  1. Spoof the version to be something higher than the current latest release
  2. Start your server
  3. Check console for the update checker notification

Sonar dump

/

Additional information

I will probably implement a heartbeat task (run the update checker every 1-6 hours) soon.

Feature Request: Update checker and notifier

Information

Implement an update notifier which tells the user to update whenever a new version of Sonar is released.

Reason

Many people forget to update... See for yourself

Additional information

  • Check for updates on server startup
  • Check for updates every day (async task)

Bug Report: Y prediction issue on 1.7/1.8 clients

General information

1.7/1.8 clients sometimes fail the verification for invalid y gravity

Steps to reproduce

  1. Join the server on 1.7/1.8
  2. Get kicked for "failed verification"
  3. Check console for more information

Sonar dump

/

Additional information

The gravity check will most likely be recoded before the release of 2.0.3.
2.0.3 will most likely be released in a couple of days or next weekend.

Bug Report: Lockdown mode notification kicking admins

General information

Enabling lockdown mode with the bypass permission gets you kicked on rejoin

Steps to reproduce

  1. Enable lockdown mode
  2. Grant yourself the bypass permission
  3. Rejoin

Sonar dump

[sonar]: Generated dump: {"memory":{"total":"4.0 GB","max":"4.0 GB","free":"3.8 GB","used":"247.9 MB"},"runtime":{"virtualCores":1,"jvmArguments":["-Xms4096M","-Xmx4096M","-XX:+UseG1GC","-XX:G1HeapRegionSize\u003d4M","-XX:+UnlockExperimentalVMOptions","-XX:+ParallelRefProcEnabled","-XX:+AlwaysPreTouch","-XX:MaxInlineLevel\u003d15"],"vmName":"OpenJDK 64-Bit Server VM","vmVendor":"Eclipse Adoptium","vmVersion":"17.0.8.1+1"},"os":{"name":"Linux","arch":"amd64","version":"5.15.0-87-generic"},"sonar":{"version":"2.0.6-38110cc-942-fix/db-error-handling","platform":"VELOCITY","isOnMainBranch":false}}

Additional information

No response

Bug Report: Run queue and traffic counter in separate thread

General information

If the server itself is exhausted by (Sonar or) another plugin some functionality will break.
This can be fixed by using a separate thread/executor for Sonar's internal tasks.

Steps to reproduce

  1. Low memory issues → Queue/Traffic thread runs slower

Sonar dump

/

Additional information

No response

Bug Report: Pings/connections are blocked

General information

Ping and connections are blocked by default with some users i'm getting lots of reports

Steps to reproduce

I really don't know, they are unable to ping the server while Sonar is in the plugins folder.

Sonar dump

[Sonar]: Generated dump: {"memory":{"total":"4.0 GB","max":"4.0 GB","free":"2.7 GB","used":"1.3 GB"},"runtime":{"virtualCores":12,"jvmArguments":["-Xmx4G","-Xms4G"],"vmName":"OpenJDK 64-Bit Server VM","vmVendor":"Debian","vmVersion":"17.0.7+7-Debian-1deb11u1"},"os":{"name":"Linux","arch":"amd64","version":"5.10.0-26-amd64"},"sonar":{"version":"2.0.15-512faa9-1015-main","platform":"BUNGEE","isOnMainBranch":true}}

Additional information

No response

Bug Report: BungeeCord disconnect method implementation is wrong

General information

https://github.com/jonesdevelopment/sonar/blob/bf40333de54c74134a0c0ac1134fd110fe8d62b9/sonar-bungee/src/main/java/xyz/jonesdev/sonar/bungee/fallback/FallbackUserWrapper.java
Instead of

connection.closeWith(Disconnect.create(reason));

it should be

connection.closeWith(getKickPacket(reason));

from

public static @NotNull Kick getKickPacket(final @NotNull Component component) {

Steps to reproduce

/

Sonar dump

/

Additional information

Will be fixed on Jan 23rd (probably next PR).

Bug Report: "Root tag must be a named compound tag" on join

General information

When attempting to join a Velocity Proxy (b276, also tried b264) with Sonar installed, I get immediately kicked with the error in the title.
(Full error in case it matters)

Internal Exception: io.netty.handler.codec.DecoderException: io.netty.handler.codec.EncoderException: java.io.IOException: Root tag must be a named compound tag

The error occurs on:

  • Vanilla 1.19.4
  • Vanilla 1.20.1
  • Modded 1.20.1

I successfully joined using Vanilla 1.20.2

I believe that the error is a client side error, but it happening in vanilla, as well as only when using Sonar seems to indicate Sonar is causing it.

Steps to reproduce

  1. Install Sonar (I tried on Velocity)
  2. Join Proxy/Server

Sonar dump

{"memory":{"total":"560.0 MB","max":"15.7 GB","free":"409.7 MB","used":"150.3 MB"},"runtime":{"virtualCores":16,"jvmArguments":[],"vmName":"OpenJDK 64-Bit Server VM","vmVendor":"Oracle Corporation","vmVersion":"21+35"},"os":{"name":"Linux","arch":"amd64","version":"6.1.57-1-lts"},"sonar":{"version":"2.0.4-1671cca-928-main","platform":"VELOCITY","isOnMainBranch":true}}

Additional information

No response

Bug Report: Players from Geyser Standalone cannot connect

General information

Geyser Standalone does not work with Sonar, since Sonar can't resolve the client brand

[10:54:35 INFO] [sonar]: [fallback] AlexanderOF4256/xxx.xxx.xxx.xxx (764) has connected.
[10:54:35 INFO] [floodgate]: Floodgate player logged in as AlexanderOF4256 disconnected
[10:54:35 INFO] [sonar]: [fallback] /xxx.xxx.xxx.xxx (764) has failed the bot check for: did not resolve client brand

Steps to reproduce

Install Geyser Standalone

Sonar dump

Additional information

No response

Bug Report: Disconnect messages showing even though they should be silent

General information

  • Velocity disconnect messages show up on silent events (blacklist, errors, rejoin delay, etc.)

Steps to reproduce

  1. Connect some bots to the server
  2. See the disconnect message showing up even though it should be silent

Sonar dump

Unnecessary - latest version

Additional information

This can be fixed within velocity's configuration but that fix is deprecated. I will add a fix for this in Sonar directly.

Bug Report: Permission message not showing on Velocity

General information

Velocity makes the command unknown if you don't have the permission to execute it.
image

Steps to reproduce

  1. Try running /sonar when you don't have the required permission

Sonar dump

/

Additional information

No response

Feature Request: Change configuration types

Information

Let's be honest, YAML is not that great. I'd like to switch to TOML for the configurations.

Reason

This way it'll be much easier to implement multi-language support.

Additional information

No response

Feature Request: MiniMessage support

Information

Provide MiniMessage-like color formatting support for the configuration.
This would include HEX/RGB color codes, etc.

Reason

Additional information

No response

Bug Report: Velocity b360+ support

General information

Velocity changed something in their API... again.

Steps to reproduce

  1. Join
  2. Reconnect before being verified

Sonar dump

/

Additional information

No response

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.