Git Product home page Git Product logo

insights's People

Contributors

dependabot-preview[bot] avatar frankheijden avatar mateusneresrb avatar mind04 avatar senpr avatar ur3k-lw 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

insights's Issues

Error on plugin enable

Spigot 1.16.4

ver WorldEdit
WorldEdit 7.3.0-b5491
ver WorldGuard
WorldGuard 7.0.5-b2079
Insights 5.5.0

On server start-up

[12:26:27] [Server thread/INFO]: [Insights] Enabling Insights v5.5.0
[12:26:27] [Server thread/INFO]: [Insights] Successfully hooked into WorldEdit!
[12:26:27] [Server thread/INFO]: [Insights] Successfully hooked into WorldGuard!
[12:26:27] [Server thread/INFO]: [Insights] Recognized a total of 124 tiles!
[12:26:27] [Server thread/INFO]: [Insights] Minecraft version '1.16.4' detected!
[12:26:27] [Server thread/ERROR]: [Insights] Plugin Insights v5.5.0 has failed to register events for class net.frankheijden.insights.listeners.EntityListener because com/destroystokyo/paper/event/entity/EntityRemoveFromWorldEvent does not exist.

Update Wiki for Insights v6

Document features! Must haves:

  • config.yml detailed explanation
  • limits/<limit.yml> detailed explanation
  • F.A.Q.
  • Developer API docs

1.17 error

error

[01:06:17 ERROR]: Could not pass event BlockMultiPlaceEvent to Insights v6.4.0
java.lang.ExceptionInInitializerError: null
        at dev.frankheijden.insights.listeners.BlockListener.onBlockPlace(BlockListener.java:62) ~[?:?]
        at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor21.execute(Unknown Source) ~[?:?]
        at org.bukkit.plugin.EventExecutor.lambda$create$1(EventExecutor.java:69) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:624) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at org.bukkit.craftbukkit.v1_17_R1.event.CraftEventFactory.callBlockMultiPlaceEvent(CraftEventFactory.java:360) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at net.minecraft.world.item.ItemStack.placeItem(ItemStack.java:372) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at net.minecraft.server.level.PlayerInteractManager.a(PlayerInteractManager.java:568) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at net.minecraft.server.network.PlayerConnection.a(PlayerConnection.java:1743) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at net.minecraft.network.protocol.game.PacketPlayInUseItem.a(PacketPlayInUseItem.java:33) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at net.minecraft.network.protocol.game.PacketPlayInUseItem.a(PacketPlayInUseItem.java:9) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at net.minecraft.network.protocol.PlayerConnectionUtils.lambda$ensureRunningOnSameThread$1(PlayerConnectionUtils.java:36) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at net.minecraft.server.TickTask.run(TickTask.java:18) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at net.minecraft.util.thread.IAsyncTaskHandler.executeTask(IAsyncTaskHandler.java:149) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at net.minecraft.util.thread.IAsyncTaskHandlerReentrant.executeTask(IAsyncTaskHandlerReentrant.java:23) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at net.minecraft.server.MinecraftServer.executeTask(MinecraftServer.java:1340) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at net.minecraft.server.MinecraftServer.executeTask(MinecraftServer.java:193) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at net.minecraft.util.thread.IAsyncTaskHandler.executeNext(IAsyncTaskHandler.java:122) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at net.minecraft.server.MinecraftServer.bg(MinecraftServer.java:1319) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at net.minecraft.server.MinecraftServer.executeNext(MinecraftServer.java:1312) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at net.minecraft.util.thread.IAsyncTaskHandler.awaitTasks(IAsyncTaskHandler.java:132) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at net.minecraft.server.MinecraftServer.sleepForTick(MinecraftServer.java:1273) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at net.minecraft.server.MinecraftServer.x(MinecraftServer.java:1184) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:320) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at java.lang.Thread.run(Thread.java:831) [?:?]
Caused by: dev.frankheijden.insights.dependencies.minecraftreflection.exceptions.MinecraftReflectionException: Invalid class 'net.minecraft.server.v1_17_R1.BlockPosition'!
        at dev.frankheijden.insights.dependencies.minecraftreflection.Reflection.getClassFromName(Reflection.java:40) ~[?:?]
        at dev.frankheijden.insights.dependencies.minecraftreflection.MinecraftReflection.of(MinecraftReflection.java:20) ~[?:?]
        at dev.frankheijden.insights.api.utils.BlockUtils.<clinit>(BlockUtils.java:20) ~[?:?]
        ... 26 more
Caused by: java.lang.ClassNotFoundException: net.minecraft.server.v1_17_R1.BlockPosition
        at org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:146) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:103) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:519) ~[?:?]
        at java.lang.Class.forName0(Native Method) ~[?:?]
        at java.lang.Class.forName(Class.java:375) ~[?:?]
        at dev.frankheijden.insights.dependencies.minecraftreflection.Reflection.getClassFromName(Reflection.java:38) ~[?:?]
        at dev.frankheijden.insights.dependencies.minecraftreflection.MinecraftReflection.of(MinecraftReflection.java:20) ~[?:?]
        at dev.frankheijden.insights.api.utils.BlockUtils.<clinit>(BlockUtils.java:20) ~[?:?]
        ... 26 more
[01:06:20 ERROR]: Could not pass event BlockBreakEvent to Insights v6.4.0
java.lang.NoClassDefFoundError: Could not initialize class dev.frankheijden.insights.api.utils.BlockUtils
        at dev.frankheijden.insights.listeners.BlockListener.onBlockBreak(BlockListener.java:112) ~[?:?]
        at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor25.execute(Unknown Source) ~[?:?]
        at org.bukkit.plugin.EventExecutor.lambda$create$1(EventExecutor.java:69) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:624) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at net.minecraft.server.level.PlayerInteractManager.breakBlock(PlayerInteractManager.java:369) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at net.minecraft.server.level.PlayerInteractManager.a(PlayerInteractManager.java:329) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at net.minecraft.server.level.PlayerInteractManager.a(PlayerInteractManager.java:219) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at net.minecraft.server.network.PlayerConnection.a(PlayerConnection.java:1677) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at net.minecraft.network.protocol.game.PacketPlayInBlockDig.a(PacketPlayInBlockDig.java:34) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at net.minecraft.network.protocol.game.PacketPlayInBlockDig.a(PacketPlayInBlockDig.java:8) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at net.minecraft.network.protocol.PlayerConnectionUtils.lambda$ensureRunningOnSameThread$1(PlayerConnectionUtils.java:36) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at net.minecraft.server.TickTask.run(TickTask.java:18) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at net.minecraft.util.thread.IAsyncTaskHandler.executeTask(IAsyncTaskHandler.java:149) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at net.minecraft.util.thread.IAsyncTaskHandlerReentrant.executeTask(IAsyncTaskHandlerReentrant.java:23) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at net.minecraft.server.MinecraftServer.executeTask(MinecraftServer.java:1340) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at net.minecraft.server.MinecraftServer.executeTask(MinecraftServer.java:193) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at net.minecraft.util.thread.IAsyncTaskHandler.executeNext(IAsyncTaskHandler.java:122) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at net.minecraft.server.MinecraftServer.bg(MinecraftServer.java:1319) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at net.minecraft.server.MinecraftServer.executeNext(MinecraftServer.java:1312) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at net.minecraft.util.thread.IAsyncTaskHandler.awaitTasks(IAsyncTaskHandler.java:132) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at net.minecraft.server.MinecraftServer.sleepForTick(MinecraftServer.java:1273) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at net.minecraft.server.MinecraftServer.x(MinecraftServer.java:1184) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:320) ~[patched_1.17.jar:git-Paper-"33a04d9"]
        at java.lang.Thread.run(Thread.java:831) [?:?]

Actions to reproduce (if known)

Put Insight in the plugins folder and start it. place and destroy the bed.

pluginlist

insights-6.4.0

server version

paper-1.17-28.jar

Error

Here is the error shown in the console : http://prntscr.com/tuhznr
I'm using Spigot ( This server is running CraftBukkit version git-Spigot-0287a20-7560f5f (MC: 1.16.1) (Implementing API version 1.16.1-R0.1-SNAPSHOT) ) and Insights 3.5.9.

Create Addon API for Insights v6

Insights will need functionality similar to v5, where addons return a volume which needs to be scanned by Insights in order to apply limits upon. Some basic tasks to do:

  • Implement addon API, addon plugin loading, reloading, error handling
  • Implement a caching system for non-chunks based on the current cache system
  • Refactor the event listeners to update both the chunk cache and addon cache when block modifications are done

Limit multiplier scalar

This feature is still a WIP, but it should be something along the lines of "bigger plots should receive bigger limits", which could be implemented through a scalar multiplier depending on the area of the land. This means a limit should receive two extra options:

  1. The scalar multiplier
  2. The area which describes "one full region"

console error

error ๐Ÿ‘

`[14:09:45 WARN]: [Insights] Task #336 for Insights v2.7.6 generated an exception
java.util.ConcurrentModificationException: null
at java.util.HashMap$HashIterator.nextNode(HashMap.java:1445) ~[?:1.8.0_222]
at java.util.HashMap$KeyIterator.next(HashMap.java:1469) ~[?:1.8.0_222]
at net.frankheijden.insights.tasks.BossBarTask.run(BossBarTask.java:16) ~[?:?]
at org.bukkit.craftbukkit.v1_14_R1.scheduler.CraftTask.run(CraftTask.java:84) ~[patched_1.14.4.jar:git-Paper-175]
at org.bukkit.craftbukkit.v1_14_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:452) ~[patched_1.14.4.jar:git-Paper-175]
at net.minecraft.server.v1_14_R1.MinecraftServer.b(MinecraftServer.java:1148) ~[patched_1.14.4.jar:git-Paper-175]
at net.minecraft.server.v1_14_R1.DedicatedServer.b(DedicatedServer.java:417) ~[patched_1.14.4.jar:git-Paper-175]
at net.minecraft.server.v1_14_R1.MinecraftServer.a(MinecraftServer.java:1075) ~[patched_1.14.4.jar:git-Paper-175]
at net.minecraft.server.v1_14_R1.MinecraftServer.run(MinecraftServer.java:919) ~[patched_1.14.4.jar:git-Paper-175]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_222]

`

Version 1.14.4 paper

plugin version : v2.7.6

Feature request : Lands add-on and placeholders.

Hi, i wanted to propose you some suggestions. The plugin is very good, one of the only to make this, but it could be even more perfect. Why do not add some placeholders which could display the allowed limit for a type of block, or the amount of this block the player has already set. An other thing would be to hook into more claims plugins like Lands, which is becoming one of the most used claim plugin today.

Thank you for reading.

Fire a fake block place event for async scanning

Instead of only cancelling the event for synchronous limits, instead, cancel the event at all times, "fake" place the block at the location and fire a BlockPlaceEvent if Insights did not cancel the event asynchronously.

Entity culler feature

To enforce entity limits, Insights should have a entity culler feature which removes entities above the limit on a specified interval

Per World Limiting

I think that this plugin could be made more versatile by enabling a way to have limits that are per world. This would mean that if you have the plugin enabled in multiple worlds, that you could have different settings in each world. I am not much of a developer and don't have much to offer into "how" this should be implemented, but would donate to see such a feature added.

My personal use case for such a feature would be so that I could have different limits enforced for Skyblock Islands, and for the Nether/End worlds. When this plugin is used in combination with the Bento addon, the limits are applied to islands in the Bento world, and by chunk in every other world. This makes configuring useful limits very hard in this scenario very difficult.

I realize how busy you may possibly be, and I appreciate the time and effort put into this plugin, thank you.

Add entities to custom scans

Insights should also allow the lookup of Entities, by adding a "entity" subcommand to the scan commands. Subcommand "all" should include entities as well.

Limit is hardcoded in messages

BlockLimiter 2.1.0

messages.yml

  # Message send when a user tries to place more tiles than the above value
  limit_reached: "You have reached the limit of 256 tiles in this chunk. Please remove some."

Message should reflect the value of config.yml

general:
  # Max tiles in a chunk (Default: 256) -1 to disable
  # A chunk is defined as width x length x height blocks (16 x 16 x 256).
  limit: 100

Error with plotsquared

Hello,
I have got the following error when using the plotsquared addon: https://hastebin.com/doxawasifa.properties

Sadly no result cam from /scregion scan thou

I have also the following data which might help you:

  • mc version: Paper-626 (MC: 1.16.5) (Implementing API version 1.16.5-R0.1-SNAPSHOT)
  • Insight version: 6.3.1
  • Plotsquared version: 4.4.495

Greetins,

makemp1997
aka mapemp2014

Cleanup project

  • Cleanup BossBarUtils / SQLite / PlayerScanTasks / NMS / WorldGuard into fancy "Manager" classes
  • Cleanup Tasks and Listener classes into nice methods / eliminate duplicated code and reduce the logic involved.
  • Add proper documentation + Javadoc for API (Events, Scanner, Hooks)

Feature request: Configurable paper flogging

Please either remove these messages entirely, or provide a configuration option to mask them:

[14:38:14] [Server thread/WARN]: [Insights]   
[14:38:14] [Server thread/WARN]: [Insights]  Paper offers significant performance improvements,
[14:38:14] [Server thread/WARN]: [Insights]  bug fixes, security enhancements and optional
[14:38:14] [Server thread/WARN]: [Insights]  features for server owners to enhance their server.
[14:38:14] [Server thread/WARN]: [Insights]   
[14:38:14] [Server thread/WARN]: [Insights]  Paper includes Timings v2, which is significantly
[14:38:14] [Server thread/WARN]: [Insights]  better at diagnosing lag problems over v1.
[14:38:14] [Server thread/WARN]: [Insights]   
[14:38:14] [Server thread/WARN]: [Insights]  All of your plugins should still work, and the
[14:38:14] [Server thread/WARN]: [Insights]  Paper community will gladly help you fix any issues.
[14:38:14] [Server thread/WARN]: [Insights]   
[14:38:14] [Server thread/WARN]: [Insights]  Join the Paper Community @ https://papermc.io

It is not the case that all of my plugins work on Paper, and the Paper community did not help. Basically, they said it was my problem for running so many plugins.

I will ignore the messages in any event, but I would prefer that they not spam my console/log.

Add /clearregioncache

This command should remove any cache at the player's position. Command could optionally take in a "key" argument to remove cache by their unique key.

Critical bug with W/E extension

There's a bug with the tile disabler i have discovered.
You can use wall blocks, for example you can't do //set red_banner, but you can do //set red_wall_banner

Regex limits

Insights should have the ability to specify wildcards in limits configs, for easier material/entity specification.

Feature request: Update check masking

I hope that if update checking is reintroduced (in 6.0.0 or later) that the options to disable them are also reincorporated into config.yml (taken from 5.9.3 version):

general:
  # The update section of Insights!
  updates:
    # Disable this is you don't want any notifications about updates
    # of Insights. Insights will check the GitHub repo for updates.
    # Permission to receive updates: insights.notification.update
    check: true
    # Choose whether you want Insights to automatically install updates!
    # Not recommended for production servers, always carefully test before updating!
    download: false
    # If you really want to ensure you're always on the latest version of Insights
    # without touching anything, you can enable this setting below. This will
    # enable Insights to download and restart the plugin on startup of the server.
    download_startup: false

NoSuchMethodError spamming console

Spigot 1.16.5-3007
Insights 6.0.0-RC1 with default configuration

On server start-up, every tick yields

[09:28:07] [Server thread/WARN]: [Insights] Task #46 for Insights v6.0.0-RC1 generated an exception
java.lang.NoSuchMethodError: org.bukkit.entity.Entity.isTicking()Z
        at dev.frankheijden.insights.tasks.EntityTrackerTask.run(EntityTrackerTask.java:37) ~[?:?]
        at org.bukkit.craftbukkit.v1_16_R3.scheduler.CraftTask.run(CraftTask.java:81) ~[spigot-1.16.5-3007.jar:3007-Spigot-cd23533-a82b212]
        at org.bukkit.craftbukkit.v1_16_R3.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:400) ~[spigot-1.16.5-3007.jar:3007-Spigot-cd23533-a82b212]
        at net.minecraft.server.v1_16_R3.MinecraftServer.b(MinecraftServer.java:1060) ~[spigot-1.16.5-3007.jar:3007-Spigot-cd23533-a82b212]
        at net.minecraft.server.v1_16_R3.DedicatedServer.b(DedicatedServer.java:355) ~[spigot-1.16.5-3007.jar:3007-Spigot-cd23533-a82b212]
        at net.minecraft.server.v1_16_R3.MinecraftServer.a(MinecraftServer.java:1008) ~[spigot-1.16.5-3007.jar:3007-Spigot-cd23533-a82b212]
        at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:847) ~[spigot-1.16.5-3007.jar:3007-Spigot-cd23533-a82b212]
        at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$0(MinecraftServer.java:164) ~[spigot-1.16.5-3007.jar:3007-Spigot-cd23533-a82b212]
        at java.lang.Thread.run(Thread.java:834) [?:?]

Implement WorldEdit hard-limits for Insights v6

Currently, Insights does have the config option(s) (both in the limit yamls and in config.yml), but does not have the implementation yet for WorldEdit. Insights should apply limitations (hard-limit) on worldedit modifications, such that limits are respected.

  • Create WorldEdit hook
  • Create FAWE hook
  • Make both hooks abstract in Insights' repo, and get rid of WECompatibility Project is now a standalone, called "InsightsWorldEditExtension"

getAmountInChunk error

Good afternoon ,

I got an issue that /autoscan doesn't' seems to work for me, for example /autoscan limit REDSTONE_WIRE.
Also I got the following error that is spamming my console: https://hastebin.com/yacoxiyepo.bash

For your info:
Server / gamemode : Creative
Plugins : creative plugins
Version: Server version

Also how can I enable the bossbar, is seems that doesn't show.

Greetinngs,

makemp2014
aka makemp1997

Incompatibility - WildStacker

Hello,

I am writing this report to let you know that there is a compatibility problem with WildStacker. When I install Insights, Wildstacker spammed me with error in my console. but as soon as I uninstall Insights, I have no more problems.

Spigot: Stellarspigot (Fork TacoSpigot-1.8.8)
Insights version: 2.9.1

Error: https://pastebin.com/3hcW3Zdz

Best regards,

Enhancement: Add exceptions to group limits

Would be nice to add exceptions to some limitations determined by groups, example:

limit:
  name: "Tiles"
  type: "TILE"
  bypass-permission: "insights.bypass.limit.tile"
  limit: 256
  settings:
    **exceptions: CHEST**
    enabled-worlds:
      whitelist: false
      worlds: []
    enabled-addons:
      whitelist: false
      addons: []

selfbot

did u manage to fix that selfbot issue? i have the same issue, please help.

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.