Giter VIP home page Giter VIP logo

boostercreator's Introduction

ASF Booster Creator Plugin

ATTENTION! This plugin only works with ASF-generic!

Introduction

This plugin was made by Outzzz, but after some time it got removed from github. Luckily I forked it before that, and as it was published under Apache 2.0 license I can continue development of this plugin. I tried to improve it a little, you can check what changes I made to it in git commits history.
As title says, aim of this plugin is giving a user an easy way to create booster packs from gems, both by command and automatically.

Installation

  • download BoosterCreator.zip file from latest release
  • unpack downloaded .zip file to plugins folder inside your ASF folder.
  • (re)start ASF, you should get a message indicating that plugin loaded successfully.

Usage

There is two ways to create boosters with this plugin: manual and automatic. To manually create booster just send ASF command booster <bots> <appids>, and ASF will try to create boosters from specified games on selected bots.
Example: booster bot1 730
To automatically create boosters you can add to config of your bot(s) parameter GamesToBooster, of type "array of uint". ASF will create boosters from specified games as long as there is enough gems, automatically waiting for cooldowns.
Example: "GamesToBooster": [730, 570],

downloads

boostercreator's People

Contributors

abrynos avatar citrinate avatar outzzz avatar rudokhvist avatar woctezuma 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

Watchers

 avatar  avatar  avatar

boostercreator's Issues

Please check that v.2.0.0.0 works correctly for you with ASF v.6

          Please check that v.2.0.0.0 works correctly for you with ASF v.6

Originally posted by @Rudokhvist in #23 (comment)

It initializes and loads, but throws this on the attempt to make the first booster:

2024-03-11 16:28:34|dotnet-10591|FATAL|ASF|OnUnhandledException() System.Text.Json.JsonException: The JSON value could not be converted to System.UInt32. Path: $[0].price | LineNumber: 0 | BytePositionInLine: 59.
 ---> System.InvalidOperationException: Cannot get the value of a token type 'String' as a number.                         at System.Text.Json.ThrowHelper.ThrowInvalidOperationException_ExpectedNumber(JsonTokenType tokenType)
   at System.Text.Json.Utf8JsonReader.TryGetUInt32(UInt32& value)                                                          at System.Text.Json.Utf8JsonReader.GetUInt32()                                                                          at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.ReadJsonAndSetMember(Object obj, ReadStack& state, Utf8JsonReader& reader)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value)
   at System.Text.Json.Serialization.JsonConverter`1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value, Boolean& isPopulatedValue)
   at System.Text.Json.Serialization.JsonCollectionConverter`2.OnTryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, TCollection& value)
   at System.Text.Json.Serialization.JsonConverter`1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value, Boolean& isPopulatedValue)
   at System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state)
   --- End of inner exception stack trace ---
   at System.Text.Json.ThrowHelper.ReThrowWithPath(ReadStack& state, Utf8JsonReader& reader, Exception ex)                 at System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state)
   at System.Text.Json.JsonSerializer.ReadFromSpan[TValue](ReadOnlySpan`1 utf8Json, JsonTypeInfo`1 jsonTypeInfo, Nullable`1 actualByteCount)
   at System.Text.Json.JsonSerializer.ReadFromSpan[TValue](ReadOnlySpan`1 json, JsonTypeInfo`1 jsonTypeInfo)
   at ArchiSteamFarm.Helpers.Json.JsonUtilities.ToJsonObject[T](String json)
   at BoosterCreator.BoosterHandler.CreateBooster(Bot bot, ConcurrentDictionary`2 gameIDs)
   at BoosterCreator.BoosterHandler.AutoBooster()                                                                        
   at BoosterCreator.BoosterHandler.<.ctor>b__6_0(Object e)
   at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_1(Object state)
   at System.Threading.ThreadPoolWorkQueue.Dispatch()
   at System.Threading.PortableThreadPool.WorkerThread.WorkerThreadStart()
2024-03-11 16:28:34|dotnet-10591|ERROR|ASF|Exit() Exiting with 1 error code!

Breaking ArchiSteamFarm

Using ASF 5.5.1.4 on win 64, have this error:

image

and then, it quits the ASF.

How to fix it, or a new version is needed?

FYI: this was also happening on older ASF versions

Could not load file or assembly AngleSharp

ArchiSteamFarm V5.2.8.4 (generic/7bbe0d91-9e01-49d7-9653-9f1f07adb09a | .NET 6.0.7; win10-x64)
ERROR|ASF|InitPlugins() Échec dû à une erreur : BoosterCreator, Version=1.2.3.1, Culture=neutral, PublicKeyToken=null
ERROR|ASF|InitPlugins() System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types.
Could not load file or assembly 'AngleSharp, Version=0.17.1.0, Culture=neutral, PublicKeyToken=e83494dcdc6d31ea'. Le fichier spécifié est introuvable.
   at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module)
   at System.Reflection.Assembly.GetTypes()
   at ArchiSteamFarm.Plugins.PluginsCore.InitPlugins()
System.IO.FileNotFoundException: Could not load file or assembly 'AngleSharp, Version=0.17.1.0, Culture=neutral, PublicKeyToken=e83494dcdc6d31ea'. Le fichier spécifié est introuvable.
File name: 'AngleSharp, Version=0.17.1.0, Culture=neutral, PublicKeyToken=e83494dcdc6d31ea'

Issue with ASF v.5

ASF was updated to version 5. Since then, the plugin has stopped working, especially to trigger creation of packs on bots.

Could not load type 'ArchiSteamFarm.Plugins.Interfaces.IBotCommand'

Error:

2022-03-03 00:40:41|dotnet-14196|ERROR|ASF|InitPlugins() Échec dû à une erreur : BoosterCreator, Version=1.2.1.0, Culture=neutral, PublicKeyToken=null
2022-03-03 00:40:41|dotnet-14196|ERROR|ASF|InitPlugins() System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types.
Could not load type 'ArchiSteamFarm.Plugins.Interfaces.IBotCommand' from assembly 'ArchiSteamFarm, Version=5.2.3.5, Culture=neutral, PublicKeyToken=504f46588cc351a9'.
   at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module)
   at System.Reflection.Assembly.GetTypes()
   at ArchiSteamFarm.Plugins.PluginsCore.InitPlugins()
System.TypeLoadException: Could not load type 'ArchiSteamFarm.Plugins.Interfaces.IBotCommand' from assembly 'ArchiSteamFarm, Version=5.2.3.5, Culture=neutral, PublicKeyToken=504f46588cc351a9'.

Possible Explanation:

[Deprecation] ASF plugins that implement IBotCommand interface or use Bot.HasAccess(), Commands.Response() functionality will need slight code changes in regards to changes done as part JustArchiNET/ArchiSteamFarm#2501. We tried our best to keep them working as part of this release - the deprecated functionality will be removed in the next release cycle.

https://github.com/JustArchiNET/ArchiSteamFarm/releases/tag/5.2.2.4

Useful references:

System.MissingMethodException: Method not found

ArchiSteamFarm V5.2.5.5 (generic/ff9c19de-593f-4213-b31d-4e09469e6931 | .NET 6.0.4; win10-x64)
ERROR|ASF|OnBotInitModules() System.MissingMethodException: Method not found: 'Void ArchiSteamFarm.NLog.ArchiLogger.LogNullError(System.String, System.String)'.
   at BoosterCreator.BoosterCreator.OnBotInitModules(Bot bot, IReadOnlyDictionary`2 additionalConfigProperties)
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
   at BoosterCreator.BoosterCreator.OnBotInitModules(Bot bot, IReadOnlyDictionary`2 additionalConfigProperties)
   at ArchiSteamFarm.Plugins.PluginsCore.<>c__DisplayClass21_0.<OnBotInitModules>b__0(IBotModules plugin)
   at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext()
   at System.Threading.Tasks.Task.WhenAll(IEnumerable`1 tasks)
   at ArchiSteamFarm.Core.Utilities.InParallel(IEnumerable`1 tasks)
   at ArchiSteamFarm.Plugins.PluginsCore.OnBotInitModules(Bot bot, IReadOnlyDictionary`2 additionalConfigProperties)

System.Threading.Timer

I'm new using ASF plugins. I couldn't find a fix for this

2020-02-01 14:00:38|ArchiSteamFarm-8764|FATAL|ASF|OnUnhandledException() System.IO.FileNotFoundException: Could not load file or assembly 'System.Threading.Timer, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. El sistema no puede encontrar el archivo especificado.
File name: 'System.Threading.Timer, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
   at BoosterCreator.BoosterHandler..ctor(Bot bot, IReadOnlyCollection`1 gameIDs)
   at BoosterCreator.BoosterCreator.<>c__DisplayClass6_1.<OnBotInitModules>b__0()
   at System.Threading.Tasks.Task`1.InnerInvoke()
   at System.Threading.Tasks.Task.<>c.<.cctor>b__274_0(Object obj)
   at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location where exception was thrown ---
   at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of stack trace from previous location where exception was thrown ---
   at BoosterCreator.BoosterCreator.OnBotInitModules(Bot bot, IReadOnlyDictionary`2 additionalConfigProperties)
   at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__139_1(Object state)
   at System.Threading.QueueUserWorkItemCallbackDefaultContext.Execute()
   at System.Threading.ThreadPoolWorkQueue.Dispatch()
   at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()

Thanks in advance for any help! :)

Suggestion regarding scheduler

Hi,
Thanks for this great and useful tool!

I've a small suggestion regarding its scheduler:
during initial setup Plugin is adding 5 min delay between bots and this is fine!
but after successful creation or when booster unavailable and Plugin is scheduling next try it's again adding 5 min (GetBotIndex(bot) * DelayBetweenBots) delay per bot. I think this is unnecessary waste of time, and you can remove it.

Thanks in advance!

Suggestion for handling "Not enough gems to create booster" error

I've had this error happen a few times when I've had plenty of gems in my inventory and it currently causes an extra 8 hour delay. The root of the problem is a Steam bug that is also encountered when manually creating boosters. The frequency is not great, but occasionally after making 1 booster, the page refresh will erroneously read "0 Gems" and you have to refresh the page to continue making boosters. I reported this to Valve long ago and apparently it's very low priority or difficult to reproduce and pin down the cause.

I would suggest adding an additional check after the "if (gooAmount < bi.Price)" to see if the value is 0. If that's the case, then refresh the page once and reread the gem values. If it's still 0, exit with error as usual, otherwise continue with the attempt to make the booster.

Unable to parse time

Issue totally same as #2

ArchiSteamFarm V4.2.0.1
BoosterCreator V1.0.3.1

Thanks for your help.

System.MissingMethodException issue on v1.1.0.0 with ASF v5.0.1.2

Hello,

I recently try this plugin and find it doesn't work,
I followed the example ASF bot config : "GamesToBooster": [nnnnnn, nnnnnn],
and the below is the log message of the error

The setup of my ASF is ASF-generic.zip v5.0.1.2 on a CentOS 7 (Google Computer Engine Image)


2021-01-05 11:01:28|ArchiSteamFarm-4847|FATAL|ASF|OnUnhandledException() System.MissingMethodException: Method not found: 'System.String System.DateTime.ToShortDateString()'.
at BoosterCreator.BoosterHandler..ctor(Bot bot, IReadOnlyCollection'1 gameIDs)
at BoosterCreator.BoosterCreator.<>c__DisplayClass6_1.b__0()
at System.Threading.Tasks.Task'1.InnerInvoke()
at System.Threading.Tasks.Task.<>c.<.cctor>b__277_0(Object obj)
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of stack trace from previous location ---
at BoosterCreator.BoosterCreator.OnBotInitModules(Bot bot, IReadOnlyDictionary'2 additionalConfigProperties)
at System.Threading.Tasks.Task.<>c.b__140_1(Object state)
at System.Threading.QueueUserWorkItemCallbackDefaultContext.Execute()
at System.Threading.ThreadPoolWorkQueue.Dispatch()
at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()
2021-01-05 11:01:28|ArchiSteamFarm-4847|ERROR|ASF|Exit() Exiting with nonzero error code!
Unhandled exception. System.MissingMethodException: Method not found: 'System.String System.DateTime.ToShortDateString()'.
at BoosterCreator.BoosterHandler..ctor(Bot bot, IReadOnlyCollection'1 gameIDs)
at BoosterCreator.BoosterCreator.<>c__DisplayClass6_1.b__0()
at System.Threading.Tasks.Task'1.InnerInvoke()
at System.Threading.Tasks.Task.<>c.<.cctor>b__277_0(Object obj)
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of stack trace from previous location ---
at BoosterCreator.BoosterCreator.OnBotInitModules(Bot bot, IReadOnlyDictionary'2 additionalConfigProperties)
at System.Threading.Tasks.Task.<>c.b__140_1(Object state)
at System.Threading.QueueUserWorkItemCallbackDefaultContext.Execute()
at System.Threading.ThreadPoolWorkQueue.Dispatch()
at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()
Aborted

Unable to parse time / System.ArgumentOutOfRangeException

2020-02-02 15:50:01|ArchiSteamFarm-5344|INFO|XXXXXXX|OnBotInitModules() GamesToBooster : XXXXXX
2020-02-02 15:50:01|ArchiSteamFarm-5344|INFO|ASF|.ctor() <XXXXXXX> Auto-attepmt to make booster from XXXXXX is planned at 02/02/2020 16:50

2020-02-02 16:52:03|ArchiSteamFarm-5344|INFO|ASF|CreateBooster() <XXXXXXX> Crafting booster from XXXXXX is not availiable now
2020-02-02 16:52:03|ArchiSteamFarm-5344|INFO|ASF|CreateBooster() Unable to parse time "3 Feb @ 1:19pm", please report this.

2020-02-02 17:00:02|ArchiSteamFarm-5344|INFO|ASF|CreateBooster() <XXXXXXX> Crafting booster from XXXXXX is not availiable now
2020-02-02 17:00:02|ArchiSteamFarm-5344|INFO|ASF|CreateBooster() Unable to parse time "3 Feb @ 1:19pm", please report this.
2020-02-02 17:00:02|ArchiSteamFarm-5344|FATAL|ASF|OnUnhandledException() System.ArgumentOutOfRangeException: Number must be either non-negative and less than or equal to Int32.MaxValue or -1. (Parameter 'dueTime')
   at System.Threading.Timer.Change(Int64 dueTime, Int64 period)
   at System.Threading.Timer.Change(TimeSpan dueTime, TimeSpan period)
   at BoosterCreator.BoosterHandler.CreateBooster(Bot bot, ConcurrentDictionary`2 gameIDs)
   at BoosterCreator.BoosterHandler.AutoBooster()
   at BoosterCreator.BoosterHandler.<.ctor>b__4_0(Object e)
   at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__139_1(Object state)
   at System.Threading.QueueUserWorkItemCallbackDefaultContext.Execute()
   at System.Threading.ThreadPoolWorkQueue.Dispatch()
2020-02-02 17:00:02|ArchiSteamFarm-5344|ERROR|ASF|Exit() Exiting with nonzero error code!

Can't seem to get this plugin working.

When installing this plugin and running the "booster" command, I just get an error, which you can see below. I am using the latest version of ASF. Any solutions for this would be greatly appreciated.

2023-03-31 18:56:20|ArchiSteamFarm-18|ERROR|ASF|OnBotCommand() System.MissingMethodException: Method not found: '!!0 System.Linq.Enumerable.Min(System.Collections.Generic.IEnumerable`1<!!0>)'.

   at BoosterCreator.BoosterHandler.CreateBooster(Bot bot, ConcurrentDictionary`2 gameIDs)

   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine&)

   at BoosterCreator.BoosterHandler.CreateBooster(Bot bot, ConcurrentDictionary`2 gameIDs)

   at BoosterCreator.Commands.ResponseBooster(Bot bot, EAccess access, String targetGameIDs)

   at BoosterCreator.Commands.Response(Bot bot, EAccess access, UInt64 steamID, String message, String[] args)

   at BoosterCreator.BoosterCreator.OnBotCommand(Bot bot, EAccess access, String message, String[] args, UInt64 steamID)

   at ArchiSteamFarm.Core.Utilities.InParallel[T](IEnumerable`1 tasks)

   at ArchiSteamFarm.Plugins.PluginsCore.OnBotCommand(Bot bot, EAccess access, String message, String[] args, UInt64 steamID)

Error when execute command (System.MissingMethodException)

OnBotCommand() System.MissingMethodException: Method not found: '!!0 System.Linq.Enumerable.Min(System.Collections.Generic.IEnumerable1<!!0>)'. at BoosterCreator.BoosterHandler.CreateBooster(Bot bot, ConcurrentDictionary2 gameIDs)
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
at BoosterCreator.BoosterHandler.CreateBooster(Bot bot, ConcurrentDictionary2 gameIDs) at BoosterCreator.Commands.ResponseBooster(Bot bot, UInt64 steamID, String targetGameIDs) at ArchiSteamFarm.Utilities.InParallel[T](IEnumerable1 tasks)
at BoosterCreator.Commands.ResponseBooster(UInt64 steamID, String botNames, String targetGameIDs)
at BoosterCreator.Commands.Response(Bot bot, UInt64 steamID, String message, String[] args)
at BoosterCreator.BoosterCreator.OnBotCommand(Bot bot, UInt64 steamID, String message, String[] args)
at ArchiSteamFarm.Utilities.InParallel[T](IEnumerable`1 tasks)
at ArchiSteamFarm.Plugins.PluginsCore.OnBotCommand(Bot bot, UInt64 steamID, String message, String[] args)

I think that the new asc version broke it

You are probably aware of this, but just in case, the plugin loads normally with the new version but when the 5 minutes pass and it attempts to create boosters, it shuts asc down. This is my log:

2023-12-15 19:33:53|dotnet-12020|FATAL|ASF|OnUnhandledException() System.MissingMethodException: Method not found: 'System.Threading.Tasks.Task1<ArchiSteamFarm.Web.Responses.HtmlDocumentResponse> ArchiSteamFarm.Steam.Integration.ArchiWebHandler.UrlGetToHtmlDocumentWithSession(System.Uri, System.Collections.Generic.IReadOnlyCollection1<System.Collections.Generic.KeyValuePair2<System.String,System.String>>, System.Uri, ERequestOptions, Boolean, Byte, Int32, Boolean)'. at BoosterCreator.WebRequest.GetBoosterPage(Bot bot) at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine) at BoosterCreator.WebRequest.GetBoosterPage(Bot bot) at BoosterCreator.BoosterHandler.CreateBooster(Bot bot, ConcurrentDictionary2 gameIDs)
at BoosterCreator.BoosterHandler.AutoBooster()
at BoosterCreator.BoosterHandler.<.ctor>b__6_0(Object e)
at System.Threading.Tasks.Task.<>c.b__128_1(Object state)
at System.Threading.ThreadPoolWorkQueue.Dispatch()
at System.Threading.PortableThreadPool.WorkerThread.WorkerThreadStart()
2023-12-15 19:33:53|dotnet-12020|ERROR|ASF|Exit() Exiting with nonzero error code!
2023-12-15 19:33:53|dotnet-12020|INFO|Microsoft.Hosting.Lifetime|Application is shutting down...

ASF v6 upgrade breaks plugin

Throws the following error at initialization:

2024-03-10 15:14:19|dotnet-7873|ERROR|ASF|InitPlugins() Failed due to error: BoosterCreator, Version=1.3.0.0, Culture=neutral, PublicKeyToken=null
2024-03-10 15:14:19|dotnet-7873|ERROR|ASF|InitPlugins() System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types.
Method 'OnBotInitModules' in type 'BoosterCreator.BoosterCreator' from assembly 'BoosterCreator, Version=1.3.0.0, Culture=neutral, PublicKeyToken=null' does not have an implementation.
at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module)
at System.Reflection.RuntimeModule.GetTypes()
at ArchiSteamFarm.Plugins.PluginsCore.InitPlugins()
System.TypeLoadException: Method 'OnBotInitModules' in type 'BoosterCreator.BoosterCreator' from assembly 'BoosterCreator, Version=1.3.0.0, Culture=neutral, PublicKeyToken=null' does not have an implementation.
2024-03-10 15:14:29|dotnet-7873|ERROR|ASF|Exit() Exiting with 1 error code!

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.