Giter Site home page Giter Site logo

rollbar / rollbar.net Goto Github PK

View Code? Open in Web Editor NEW
64.0 29.0 46.0 14.81 MB

Rollbar for .NET

Home Page: https://docs.rollbar.com/docs/dotnet

License: MIT License

C# 99.41% Batchfile 0.01% PowerShell 0.59%
rollbar dotnet asp-net error-handling error-monitoring observability

rollbar.net's Introduction

Rollbar Logo

Rollbar.NET Notifier SDK

A .NET Rollbar Client/Notifier SDK that can be used in any application built on the following .NET versions: .NET Core 2.0+, .NET Standard 2.0+, .NET Full Framework 4.5+, Mono, Xamarin, and, in general, any implementation of the .NET Standard 2.0+. It simplifies building data payloads based on exception data, tracing data, informational messages and telemetry data and sends the payloads to the Rollbar API for remote monitoring and analysis of the hosting application's behavior and health.

It also includes a collection of adapters and helpers for many .NET application frameworks as well as a collection of Rollbar.NET plug-ins into most popular .NET logging and exception handling libraries/frameworks, like:

  • Serilog
  • log4net
  • NLog
  • Microsoft Enterprise Library's Exception Handling block
  • etc.
  • as well as RollbarTraceListener and ASP.NET Core Rollbar middleware.

These plug-ins simplify integration of the Rollbar.NET Notifier into codebases that are already using any of these libraries/frameworks using the libraries' native extensions mechanisms.

NEW MAJOR RELEASE (v5) ANNOUNCEMENT

A new major release v5 of the SDK is available. The primary new feature of this release is the support of Blazor Client/Webassembly/WASM.

For detailed instructions see our v5 specific documentation.

Codebase status (code quality and CI build)

CI workflow

Build Status

Security Rating Reliability Rating Maintainability Rating Vulnerabilities Coverage

Available as NuGet packages

  • Rollbar (the core).................... NuGet version Nuget downloads
  • Rollbar.Deploys....................... NuGet version Nuget downloads
  • Rollbar.NetPlatformExtensions......... NuGet version Nuget downloads
  • Rollbar.NetCore.AspNet................ NuGet version Nuget downloads
  • Rollbar.Net.AspNet.................... NuGet version Nuget downloads
  • Rollbar.Net.AspNet.Mvc................ NuGet version Nuget downloads
  • Rollbar.Net.AspNet.WebApi............. NuGet version Nuget downloads
  • Rollbar.PlugIns.Log4net............... NuGet version Nuget downloads
  • Rollbar.PlugIns.MSEnterpriseLibrary... NuGet version Nuget downloads
  • Rollbar.PlugIns.NLog.................. NuGet version Nuget downloads
  • Rollbar.PlugIns.Serilog............... NuGet version Nuget downloads

Install

Using Nuget Package Manager:

Install-Package Rollbar

Blocking vs Non-Blocking Use

The SDK is designed to have as little impact on the hosting system or application as possible. It takes an async "fire and forget" approach to logging. Normally, you want to use fully asynchronous logging, since it has virtually no instrumentational overhead on your application execution performance at runtime (especially when running on a multi-core/multi-processor system).

In v1.x.x versions of the SDK, the asynchronous logging calls were still performing some of their data processing functions (like packaging the data objects to log into a proper Rollbar Payload DTO instance) on the calling thread before asynchronously placing the payloads into a transmission queue. Hence, the duration of the logging method calls was proportional to the size and complexity of the data object to package and log.

In v2.x.x versions of the SDK, we moved the packaging of the data-to-log one level deeper and now it is handled in a context of a worker thread that is responsible for packaging of a proper payload DTO and queuing it for transmission to the Rollbar API Server. As the result, the logging method calls are extremely quick now (under 20 microseconds) regardless of complexity and size of the data-to-log. All the methods now return a Task instance (instead of an ILogger instance as in v1.x.x) that could be either ignored in true "fire-and-forget" logging scenarios or could be waited (or awaited) to complete packaging and queuing of the payloads in some scenarios.

While it was a nice flexible and easy to use solution from API point of view, the tasks did not perform well (as we learned it the hard way) under EXTREMELY high AND sustained rate of load. So, in v3.x.x, we went away from the Tasks and removed IAsynLogger all together. We are now back to having only ILogger and we have a substitute for the eliminated Tasks in the form of IRollbarPackage. Think of the IRollbarPackage as a basis for implementing arbitrary data packaging strategies with explicit flag (named as MustApplySynchronously) that signifies need to apply the packaging (steps 1 and 2) on the calling thread before returning from a logging method. We also provide with abstract base classes like RollbarPackageBase and RollbarPackageDecoratorBase for implementing custom packaging strategies and their decorators. We used these abstraction to implement our own collection of packagers and their decorators. All of them are available to the SDK users as well. In addition to helping us in getting away from the Tasks usage, these new abstractions allow for very flexible and powerful ways to bundle a lot specific types of data into a single payload as needed while encapsulating and reusing the packaging rules of any custom type.
In v3.x.x, you can either throw into a logging method a data object to log (exactly the way it was in v2) or you can wrap in an ObjectPackage while setting the MustApplySynchronously flag if you want the logger to behave the way IAsyncLogger used to when you had to block-wait on its Task to complete.

However, in some specific situations (such as while logging right before exiting an application), you may want to use a logger fully synchronously so that the application does not quit before the logging completes (including subsequent delivery of the corresponding payload to the Rollbar API).

That is why every instance of the Rollbar logger (implementing ILogger interface) defines the AsBlockingLogger(TimeSpan timeout) method that returns a fully synchronous implementation of the ILogger interface. This approach allows for easier code refactoring when switching between asynchronous and synchronous uses of the logger.

Therefore, this call will perform the quickest possible asynchronous logging (true "fire-and-forget" logging):

RollbarLocator.RollbarInstance.Log(ErrorLevel.Error, "test message");
// which is equivalent:
// RollbarLocator.RollbarInstance.Log(ErrorLevel.Error, new ObjectPackage("test message", false));

while the following call will perform somewhat quick asynchronous logging (only having its payload packaging and queuing complete by the end of the call):

var package = new ObjectPackage("test message", true);
// OR to make it a bit leaner:
// var package = new MessagePackage("test message", true);
RollbarLocator.RollbarInstance.Log(ErrorLevel.Error, package);

while next call will perform fully blocking/synchronous logging with a timeout of 5 seconds (including the payload delivery to the Rollbar API either complete or failed due to the timeout by the end of the call):

RollbarLocator.RollbarInstance.AsBlockingLogger(TimeSpan.FromSeconds(5)).Log(ErrorLevel.Error, "test message");

In case of a timeout, all the blocking log methods throw System.TimeoutException instead of gracefully completing the call. Therefore you might want to make all the blocking log calls within a try-catch block while catching System.TimeoutException specifically to handle a timeout case.

Basic Usage

  • Configure Rollbar with RollbarLocator.RollbarInstance.Configure(new RollbarConfig("POST_SERVER_ITEM_ACCESS_TOKEN"))
  • Send errors (asynchronously) to Rollbar with RollbarLocator.RollbarInstance.Error(Exception)
  • Send messages (synchronously) to Rollbar with RollbarLocator.RollbarInstance.AsBlockingLogger(TimeSpan.FromSeconds(5)).Info(string)

Upgrading to 4.x.x from v3.x.x versions

The only area of the SDK APIs that changed between v3 and v4 is the one related to the file-based configuration of Rollbar infrastructure.

All the public types related to configuring the SDK based on either app.config or web.config files were moved to their own dedicated module/package Rollbar.App.Config. The types namespace changed from Rollbar.NetFramework to Rollbar.App.Config.

All the public types related to configuring the SDK based on appsettings.json file were moved to their own dedicated module/package Rollbar.AppSettings.Json. The types namespace changed from Rollbar.NetCore to Rollbar.AppSettings.Json.

Both new modules are optional alternatives. When either is needed, just reference a corresponding module/package from the application already hosting the Rollbar core module. Assuming you are already using the application config file in your application for other reasons than just configuring Rollbar, all the dependencies needed for accessing the file should be already established by your application codebase.

Upgrading to v3.x.x from v2.x.x versions

Some Rollbar functionality and API types related to specific more narrow .NET sub-technology were moved into separate dedicated modules. For example, Rollbar Asp.Net Core middleware moved into the Rollbar.NetCore.AspNet module while changing its namespace to follow the module naming. So, might need to add extra reference to a relevant module and update namespaces when upgrading to v3.

The IAsyncLogger is gone. There is only ILogger. So, if you had some code relying on the IAsyncLogger where you used to wait on a Task like:

RollbarLocator.RollbarInstance.Log(ErrorLevel.Error, "test message").Wait();

now, the easiest fix is to rework it into:

RollbarLocator.RollbarInstance.Log(ErrorLevel.Error, new ObjectPackage("test message", true));

to achieve the same behavior of the logger.

For more details about the v3 specific changes, please, refer to the ReleaseNotes.md in the root of this repository.

Upgrading to v2.x.x from v1.x.x versions

All Rollbar notifier instances of IRollbar (that used to be expanding ILogger in v1.x.x versions) now implement IAsyncLogger instead of ILogger. As the result of this change, the rollbar instances lost support of fluent API, hence, they can not be cascaded like so:

RollbarLocator.RollbarInstance.Log(ErrorLevel.Error, "error message")
                              .Log(ErrorLevel.Info, "info message")
                              .Log(ErrorLevel.Debug, "debug message");

and now have to be reworked as:

RollbarLocator.RollbarInstance.Log(ErrorLevel.Error, "error message");
RollbarLocator.RollbarInstance.Log(ErrorLevel.Info, "info message");
RollbarLocator.RollbarInstance.Log(ErrorLevel.Debug, "debug message");

while the instance of the blocking Rollbar logger are still capable of supporting the fluent/cascading calls.

We think that convenience of the fluent APIs is less important than an ability to support completely "fire-and-forget" logging calls that could be waited upon if needed.

One more significant change in v2.x.x SDK API that should be fully backward compatible with the v1.x.x SDK API (hence, should not require any client code changes) but is important enough to be mentioned here:

You will notice that the ILogger interface was significantly simplified by getting rid of a large amount of logging methods' overloads based on types of the data-to-log (an Exception vs a String vs an Object vs a Data DTO, etc). Now, we only have the overloads that take in an Object (a good enough reason for backward compatibility of the latest API). The newly introduced IAsyncLogger interface defines the same set of methods as ILogger with the only difference between the equivalent method signatures - method return type: IAsyncLogger's methods return Task while ILogger's methods return ILogger.

Upgrading to v1.x.x from earlier versions

In order to upgrade to v1.0.0+ from an earlier version, you should change your config from the old version

Rollbar.Init(new RollbarConfig("POST_SERVER_ITEM_ACCESS_TOKEN"));

to

    const string postServerItemAccessToken = "POST_SERVER_ITEM_ACCESS_TOKEN";
    RollbarLocator.RollbarInstance.Configure(
        new RollbarConfig(postServerItemAccessToken) { Environment = "proxyTest" }
        ) ;

Additionally, anywhere in your code that you were sending error reports via Rollbar.Report(Exception) or Rollbar.Report(string) will need to be replaced with either something like RollbarLocator.RollbarInstance.Error(new Exception("trying out the TraceChain", new NullReferenceException())) or RollbarLocator.RollbarInstance.Info("Basic info log example.").

Rollbar Plug-ins

We are adding extra projects to the Rollbar.sln solution that simplify integration of Rollbar services with existing popular .NET logging and tracing libraries like Serilog, log4net, NLog, etc. These plug-in projects are named using following pattern Rollbar.PlugIns.<LoggingLibraryToIntegrateWith> and implement similarly named namespaces for the plug-ins. Each plug-in maintains its own versioning schema and is distributed as its own NuGet package using the naming pattern mentioned above.

More Information about the SDK

More details about Rollbar.NET usage and API reference are available at Rollbar.NET SDK Documentation. v5 specific documentation is available here.

Help / Support

If you run into any issues, please email us at [email protected]

For bug reports, please open an issue on GitHub.

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature).
  3. Commit your changes (git commit -am 'Added some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

rollbar.net's People

Contributors

akornich avatar azure-pipelines[bot] avatar brianr avatar bxsx avatar cdesch avatar chadly avatar chamamo avatar charles-rumley avatar chrisbarmonde avatar csaba-ilonka-rollbar avatar dependabot[bot] avatar dlsteuer avatar jamesthurley avatar janek91 avatar lextm avatar mrunalk avatar rivkahstandig3636 avatar rokob avatar ruzzil avatar snakefoot 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

Watchers

 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

rollbar.net's Issues

.NET Framework 4.0 Support

When adding to a .NET 4.0 project via NuGet I'm receiving the following error:

Could not install package 'Rollbar 0.3.2'. You are trying to install this package into a project that targets '.NETFramework,Version=v4.0', but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author.

no extension method 'UseRollbarMiddleware'

What library am I missing? I am running Asp.net Core 2 with installed Rollbar package from nuget.
I am getting the following error.

'IApplicationBuilder' does not contain a definition for 'UseRollbarMiddleware' and no extension method 'UseRollbarMiddleware' accepting a first argument of type 'IApplicationBuilder' could be found (are you missing a using directive or an assembly reference?)

using Rollbar;
.
.
.

   public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseRollbarMiddleware();

        app.UseStaticFiles();

        app.UseAuthentication();

        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });
    }

Rollbar .NET in WPF application

Is this possible?

I have the following code:

//Initialize Rollbar
Rollbar.Init(newRollbarConfig
{
AccessToken = "0dbfbfea85a245f79d2f4a1600b8f552",
#if DEBUG
Environment = "development"
#else
Environment = "production"
#endif 
});
AppDomain.CurrentDomain.UnhandledException += (sender, args) =>
{
Rollbar.Report(args.ExceptionObject as System.Exception);
};
Rollbar.Report("Started application + " + Settings.Default.Client, ErrorLevel.Info);

On deploying to the users systems I get the following exception

Application: ReferralLaboratories.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.Net.WebException
at System.Net.WebClient.UploadDataInternal(System.Uri, System.String, Byte[], System.Net.WebRequest ByRef)
at System.Net.WebClient.UploadString(System.Uri, System.String, System.String)
at System.Net.WebClient.UploadString(System.Uri, System.String)
at RollbarDotNet.RollbarClient.SendPost[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.String, System.__Canon)
at RollbarDotNet.RollbarClient.PostItem(RollbarDotNet.Payload)
at RollbarDotNet.Rollbar.SendBody(RollbarDotNet.Body, System.Nullable`1<RollbarDotNet.ErrorLevel>, System.Collections.Generic.IDictionary`2<System.String,System.Object>)
at RollbarDotNet.Rollbar.Report(System.String, System.Nullable`1<RollbarDotNet.ErrorLevel>, System.Collections.Generic.IDictionary`2<System.String,System.Object>)
at Referral_Laboratories.App..ctor()
at Referral_Laboratories.App.Main()

use HttpClient class

so itt will automatically pick up the proxy configuration from the hosting system.

Do we support WebForms?

Does this library currently support ASP.NET WebForms?

@akornich we were chatting about this yesterday in Slack. I'll post the relevant bits of info:
In general, I think the Rollbar.NET should work within a WebForms app. But that is assuming that WebForms are still supported by .NET 4.5 (that is oldest .NET version that Rollbar.NET v1 supports)
Let me research if the WebForms are still part of latest .NET frameworks.

I cant get it work

Hello, I'm new to this and I think I'm forgetting something because is not registering any error in the web page, this is my code:

public static void LogError(string env, Exception e)
{
    RollbarLocator.RollbarInstance.Configure(new RollbarConfig(postServerItemAccessToken) { Environment = env });
    var a = RollbarLocator.RollbarInstance.Error(e);
}

The code executes without errors
How can I catch the errors?

  • I have a MVC Classic Net Framework 4.6 but the logger is in an external dll, that could be the problem?

Implement a Blocking/Synchronous Error Reporting Method

A user is using WPF (.NET) and is creating a custom window to display the error and prompt a “Do you want to send a report?” before allowing the event to be sent to Rollbar and then exiting the environment using Environment.Exit. However, this does not allow enough time for Rollbar to send the event. His workaround is to wait until RollbarQueueController.Instance.InternalEvent is triggered before exiting. And he needs to call the Exit function so that the default Error UI from Windows is not shown.

A new feature to work around this would be to add a blocking/synchronous error reporting method that would internally do similar bookkeeping of the events (or time-out) before returning.

[Internal] https://app.intercom.io/a/apps/rlisg82q/respond/inbox/813342/conversations/14109552876

Package issue with .NET Core

I can't install Rollbar.NET NuGet package:

Installing Rollbar 0.3.2.
Package Rollbar 0.3.2 is not compatible with netcoreapp1.1 (.NETCoreApp,Version=v1.1). Package Rollbar 0.3.2 supports: net45 (.NETFramework,Version=v4.5)

Document individual functions

From internal issue tracker:

Currently no inline documentation. Go through and document everything with MS Standard XML docs.
Make sure the docs come through in Visual Studio when installed from NuGet

Rollbar.Init doesn't exist

Hi, I was using v0.3.2 with great success and then updated to v1.0.0, however the function 'Rollbar.Init' no longer seems to exist. The documentation on the main page still lists it as the main function to use so I assume it still exists somewhere, could you point me in the right direction for this please?

Add PersonData to Report in WebApi

I'm trying to wire up Rollbar in a .Net Core WebApi application and I don't see how to add PersonData to a Rollbar.Report. It looks like either I have to set a global variable via Rollbar.PersonData() which would affect all subsequent calls (that sounds bad), or else I have to call Transform during initialization. Transform doesn't take any arguments that I could access the HttpContext with. Are there any examples on how to set this up correctly?

Could not load type 'Rollbar.RollbarLocator' from assembly 'RollBar, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.

Hi,

I am facing the problem while integrating the Rollbar into my ASP.NET MVC project.
I have followed the documentation instructions that you have provided.

Here is the step that I have followed.

  1. Installed rollbar package- Install-Package Rollbar -Version 1.0.1
  2. Configure rollbar into the global.asax.cs
protected void Application_Start()
        {
            const string postServerItemAccessToken = "MY_ACCESS_TOKEN";
            RollbarLocator.RollbarInstance.Configure(new RollbarConfig(postServerItemAccessToken)
            {
                Environment = "production"
            });
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }

I am getting the following error while application loading.

capture

Could you please help me out.

How can I config Webclient to use alternative proxy settings?

Question that came in through email:

our application is behind an egress firewall and we need to route all outbound HTTP traffic through a proxy server. The .NET Rollbar SDK uses WebClient to make that connection, and it is picking up the system (internet explorer) proxy settings, which is the default WebClient behavior. Unfortunately, the system proxy settings are not correct and need to be overridden. Do you know to make that WebClient instance use alternative proxy settings? We’ve been googling and looking at StackOverflow, but none of those solutions ultimately worked for us.

Xamarin PCL support

Hi, Would like to know if there are any plans to support Xamarin PCL. And what can i do to help in this regard?

Older .NET Version Support

There are some good tools that are stuck on older versions of .NET

Would be good to offer at least NET30 support.

Unicode characters serialized incorrectly

At least 1 rollbar customer is seeing unicode escape characters in the payload reported by Rollbar.NET.

E.g.

"...{"filename":"d:\\Work\\\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\\branches\\v2\\..."

It appears that this SDK is serializing unicode into ascii which results in the unicode escape sequences making their way into the payload. It should be serializing into ascii with UTF-8 encoding.

Instructions for setting up non-MVC project?

hoping to get some guidance on the changes I need to make to the Startup/Configure Services and Startup/Configure methods.

If you are not able to provide the specific changes required for the two methods above, could you at least send through the syntax for the changes to be made in the Program class, keeping in mind this is a netcore app. So my Program file currently looks like this:

public class Program

{

public static void Main(string[] args)

{

BuildWebHost(args).Run();

}

public static IWebHost BuildWebHost(string[] args) =>

WebHost.CreateDefaultBuilder(args)

//.UseKestrel()

//.UseContentRoot(Directory.GetCurrentDirectory())

.UseIISIntegration()

.UseStartup()

.Build();

}

Rollbar Request lifecycle hooks

Would an ErrorCondition (or something like that) event on the RollbarLogger instance work? The event event argument would communicate the response object related to the error detected...

Signed version

It is weird that the NuGet package contains an unsigned assembly.

You should ship a signed version so as to work with any project that is signed or not.

Unsigned version only works with unsigned projects and won't work for signed projects.

Send error message fails if the incoming HttpRequest cannot be read

If you want to raise an error for say a web request size issue, you cannot read the multi part of the incoming content. Even if you catch the error RollBar client tries to read it when sending the error and fails.

To reproduce this setup an IIS with default settings. The web request size would be 4 mb. Try sending in a post request to... say a web API. If you try to read the content of the request it will fail with an IO exception. If you try reporting this to Rollbar it will fail too.

Support for netstandard1.x

Would be nice to have support to netstandard1.x also.

I can't update my 1.4 project because of another dependencies which are not compatible with 2.x (private library and closed-source...).

.NET not logging since update to 1.0.1 via nuget

I have started a brand new, never touched before, test project. Then added the later Rollbar nuget package 1.0.1. I’m following docs from here: https://rollbar.com/docs/notifier/rollbar.net/

I have stripped my nunit test right back to this;

using NUnit.Framework;
using Rollbar;
using System;

namespace RollbarTests
{
[TestFixture]
public class SmokeTests
{
private string apiKey = "myApiKey";

    [Test]
    public void JustLog()
    {
        RollbarLocator.RollbarInstance.Configure(new RollbarConfig(apiKey) { Environment = "development" });

        Assert.DoesNotThrow(() => RollbarLocator.RollbarInstance.Info(string.Format("Logging test {0:dd MMM yyyy HH:mm:ss:ffff}", DateTime.Now)));
    }
}

}

No errors are generated, yet nothing is logging (I have tried both server-side and client-side apiKeys). I'm not behind a firewall for this test, and I can ping api.rollbar.com.

What am I missing?

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.