Code Monkey home page Code Monkey logo

jpgraph's Introduction

JpGraph Community Edition v4.1.0

JpGraph Community Edition was created as a Composer friendly port of JpGraph v3.5. With time and through incremental refactorings, it became a whole different library, with PSR-1 and PSR-2 compliant codebase, namespaces and folder hierarchy enabling PSR-4 autoloading, and more.

We are now, at most, distant cousins with the current official release.

Refactoring is an ongoing effort and we ensure editions and additions don't hurt our (already poor) metrics

Scrutinizer Code Quality


What is JPGraph Community Edition?

As can be seen in their releases section, there was a six year pause in JPGraph release cycle, during which some of us had no choice but to code our way out of PHP 5.x. And thus "Community Edition" was born. From then on, this library evolved on its own and completely diverged from the official packages.

In general terms, JPGraph CE relies in PHP's thriving ecosystem. We aim to be a simple dependency you can seamlessly integrate in your app. JPGraph CE aligns with PHP Standards Reccomendations as published by the PHP Framework Interoperability Group, and when presented with the choice, will always pick an agnostic implementation over custom ones that reinvent the wheel. A lot of code has been trimmed and refactored with this purpose and a lot more is waiting to undergo such a change.

  • Distrbution through PHP's popular Packagist Registry
  • Relies in Composer, so you don't need to manually download or copy anything, nor check for platform and dependency requirements yourself.
  • PSR-4: Autoloader compliant structure. No need to resort to require or include in your code.
  • Sensible fallbacks to handle missing fonts or particular GD version features availability.
  • IDE friendly, allowing for autocompletion and go-to-definition where supported.
  • Integration pipelines checking new releases compatibility against different PHP versions
  • New or refactored code is expected to observe PSR-1 and PSR-2 coding standards (Eventually PSR-12 as well).

Comparing against the original v3.5 codebase, we also stripped examples or incomplete implementation of graph types exclusive to v3.5 pro (e.g. Barcodes).

Things that JPGraph CE is NOT

  • This library is NOT an official JPGraph package. The offcial package can be downloaded at JPGraph's downloads section of their website. They have a full featured free version with support for current and olver PHP versions.
  • Endorsed in any way by JPGraph's creator company Asial
  • A composer enabled wrapper for the official package
  • A drop-in replacement for the official package. We do not claim nor offer any kind of feature parity with the official package.

Requirements And Installation

This version requires PHP v7.2.0+. If you need to install this library package in older PHP environments please try

  • Upgrading your PHP installation. (No, really, even PHP 7.2 is past its EOL)
  • for PHP v7.0+ please try release v4.0.x
  • for PHP v5.6+ please check release v3.6.x

Install it Using composer

composer require amenadiel/jpgraph:^4

How to use

See the examples folder for working samples.

The examples work the same way you should use this library:

  • run composer install

  • require vendor/autoload.php it the top of your script

  • generate a graph with a snippet like the following

   require_once 'PATH/TO/vendor/autoload.php';

   use Amenadiel\JpGraph\Graph;
   use Amenadiel\JpGraph\Plot;

   // Create the Pie Graph.
   $graph = new Graph\PieGraph(350, 250);
   $graph->title->Set("A Simple Pie Plot");
   $graph->SetBox(true);

   $data = array(40, 21, 17, 14, 23);
   $p1   = new Plot\PiePlot($data);
   $p1->ShowBorder();
   $p1->SetColor('black');
   $p1->SetSliceColors(array('#1E90FF', '#2E8B57', '#ADFF2F', '#DC143C', '#BA55D3'));

   $graph->Add($p1);
   $graph->Stroke();
  • important make sure to instance the Graph (or Graph child class) before its content (for example, Plots). Doing this will load the global configuration to the global scope. Yeah, we know we are polluting the global scope with dozens of constants, but we are still refactoring 🤷 .

See the examples working by performing the following steps:

  • run composer install
  • run make start or php -S localhost:8000 -t Examples
  • Open your browser at http://localhost:8000

Change the config

You can override some configs set on config.inc.php by creating a .env file in your project root. See .env.example as a reference.

Contributors ✨

All Contributors

Thanks goes to these wonderful people (emoji key):


Sean Zhang

💻

Shawn McCool

💻

Vinicius Dias

💻

Paul van der Knaap

💻

Florent Morselli

💻

Tony Murray

💻

Andreas

💻

Corey Watts

💻

Alexander Rakushin

💻

Muhammad Abid

💻

WhileTrue

🐛

This project follows the all-contributors specification. Contributions of any kind welcome!


Wishlist

  • Get all the examples working (half of them have yet to be transformed from the old code to the new PSR-4 format)
  • Add more tests (We need to test more classes and methods besides the ones in the examples, as well as perform more assetions on the current tests)
  • Add alternative use of imagick

jpgraph_logo

Similar Projects

License

FOSSA Status

jpgraph's People

Contributors

abidaks avatar allcontributors[bot] avatar angeljqv avatar corwatts avatar cviniciussdias avatar dependabot-preview[bot] avatar diegomarty avatar eisberg avatar ffflabs avatar fossabot avatar funkjedi avatar iquito avatar kick-the-bucket avatar mot3rror avatar murrant avatar pauluzznl avatar pvogt09 avatar spomky avatar zhangsean 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jpgraph's Issues

fix

jpgraph_gb2312.php This file does not exist

Display chart at a specific location on the page

I want to generate the graphic in a specific place on the page, but it always opens as if it were a modal, with a black background and showing only the graphic, covering the rest of the page. I looked for something in the documentation but I couldn't find it, could you help me? Thanks

Is there a way to add margin to the bars of a GroupBarPlot?

Hi, I'm trying to create a GroupBarPlot with two BarPlots, by default the bars on each of the values of the series appear next to each other, is there a way to add a margin so there's space between them?

This is what I'm getting:
Screenshot_20220815_101519

and something like this is what I'm looking to achieve:
Screenshot_20220815_101617

I've been diving into the code but can't seem to find a way to do it.

Failed opening required 'jpgraph_imgtrans.php'

When trying to use the following line:
$graph->Set3DPerspective(SKEW3D_UP,100,120,true);

this error is thrown:
PHP Warning: require_once(jpgraph_imgtrans.php): failed to open stream: No such file or directory in /.../vendor/amenadiel/jpgraph/src/graph/Graph.php on line 1790

That file has been renamed to images/ImgTrans.php in the src directory.

Deprecation notices in PHP 8.1

I get the following deprecation notices in PHP 8.1 (just based on my usage, there might be more, as PHP 8.1 included quite a few new deprecation notices):

  • Function strftime() is deprecated - src/util/DateLocale.php (on line 60, 61 and 68)
  • imagefilledpolygon(): Using the $num_points parameter is deprecated - src/image/Image.php (on line 1611)
  • Implicit conversion from float to int loses precision - src/image/Image.php (on line 1049)

Unknown font font family specification.

I use this library in Slimframework 3.x, PHP 7.x and I got this error:

{
    "status": "error",
    "message": "Unknown font font family specification. "
}<br />
<b>Notice</b>:  Use of undefined constant FF_DEFAULT - assumed 'FF_DEFAULT' in <b>E:\Projects\report-ima-service\vendor\amenadiel\jpgraph\src\plot\PiePlot.php</b> on line <b>83</b><br />
<br />
<b>Notice</b>:  Use of undefined constant FS_NORMAL - assumed 'FS_NORMAL' in <b>E:\Projects\report-ima-service\vendor\amenadiel\jpgraph\src\plot\PiePlot.php</b> on line <b>83</b><br />
<br />
<b>Notice</b>:  Use of undefined constant FF_DEFAULT - assumed 'FF_DEFAULT' in <b>E:\Projects\report-ima-service\vendor\amenadiel\jpgraph\src\plot\PiePlot.php</b> on line <b>84</b><br />
<br />
<b>Notice</b>:  Use of undefined constant FS_BOLD - assumed 'FS_BOLD' in <b>E:\Projects\report-ima-service\vendor\amenadiel\jpgraph\src\plot\PiePlot.php</b> on line <b>84</b><br />
<br />
<b>Notice</b>:  Use of undefined constant FF_DEFAULT - assumed 'FF_DEFAULT' in <b>E:\Projects\report-ima-service\vendor\amenadiel\jpgraph\src\plot\PiePlot.php</b> on line <b>85</b><br />
<br />
<b>Notice</b>:  Use of undefined constant FS_NORMAL - assumed 'FS_NORMAL' in <b>E:\Projects\report-ima-service\vendor\amenadiel\jpgraph\src\plot\PiePlot.php</b> on line <b>85</b><br />
<br />
<b>Warning</b>:  imagefontheight() expects parameter 1 to be integer, string given in <b>E:\Projects\report-ima-service\vendor\amenadiel\jpgraph\src\image\Image.php</b> on line <b>317</b><br />
<br />
<b>Warning</b>:  imagefontheight() expects parameter 1 to be integer, string given in <b>E:\Projects\report-ima-service\vendor\amenadiel\jpgraph\src\image\Image.php</b> on line <b>317</b><br />

Fatal errors in Image class getWidth and getHeight static methods

If one would call \Amenadiel\JpGraph\Image\Image::GetWidth(null) or \Amenadiel\JpGraph\Image\Image::GetHeight(null) - you would get a fatal error in any PHP version: https://3v4l.org/Ao64k

php > require_once 'vendor/autoload.php';
php > \Amenadiel\JpGraph\Image\Image::getWidth(null);
Warning: Uncaught Error: Using $this when not in object context in /srv/marketing/vendor/amenadiel/jpgraph/src/image/Image.php:269
Stack trace:
#0 php shell code(1): Amenadiel\JpGraph\Image\Image::GetWidth()
#1 {main}
  thrown in /srv/marketing/vendor/amenadiel/jpgraph/src/image/Image.php on line 269


php > \Amenadiel\JpGraph\Image\Image::getHeight(null);
Warning: Uncaught Error: Using $this when not in object context in /srv/marketing/vendor/amenadiel/jpgraph/src/image/Image.php:278
Stack trace:
#0 php shell code(1): Amenadiel\JpGraph\Image\Image::GetHeight()
#1 {main}
  thrown in /srv/marketing/vendor/amenadiel/jpgraph/src/image/Image.php on line 278

I would suggest removing the possibility to call the function with a null parameter, since this never worked, since these methods were introduced.

PHP 7.4 Trying to access array offset on value of type null

Affected File: Amenadiel\JpGraph\Plot\PiePlot.php
Line: 398
Reason: The value of $this->csimtargets might null, accessing array offset on value of type null will cause exception (E_WARINING) in PHP 7.4

I would like to help and create a pull request but I am not sure what is the expecting value from $graph->legend->Add() if value of $this->csimtargets is null.

My quick fix for now is check if $this->csimtargets is array, if it is not array then pass the null value to $graph->legend->Add() else using the original code ($this->csimtargets[$i]).

Example

if (!is_array($this->csimtargets)) {
    $csimtargetsTmp = null;
} else {
    $csimtargetsTmp = $this->csimtargets[$i];
}
$graph->legend->Add($l, $this->setslicecolors[$i % $numcolors], '', 0, $csimtargetsTmp, $alt, $wintarg);

cannot find fonts

it throws this error

JpGraph Error: 25092There is either a configuration problem with TrueType or a problem reading font file "/usr/share/fonts/TTF/DejaVuSans.ttf" Make sure file exists and is in a readable place for the HTTP process. (If 'basedir' restriction is enabled in PHP then the font file must be located in the document root.). It might also be a wrongly installed FreeType library. Try upgrading to at least FreeType 2.1.13 and recompile GD with the correct setup so it can find the new FT library.

but phpinfo() shows it enabled and the file exists, with no basedir configuration (it is disabled on php.ini open_basedir => no value => no value )

GD Support => enabled
GD headers Version => 2.3.0
GD library Version => 2.3.0
FreeType Support => enabled
FreeType Linkage => with freetype

i recompiled php, resulting in the same issue. also this is from php cli not apache etc.

Not support in php v8.2

Error:

1

 Using ${var} in strings is deprecated, use {$var} instead
  • Can be fixed in this version

2

Function strftime() is deprecated
  • Can be fixed in this version, Alternatives to this function date()

3

[TypeError]                              
  Unsupported operand types: int - string
Exception trace:
 () at /www/app/vendor/amenadiel/jpgraph/src/util/DateLocale.php:60
  • Can be fixed in this version, using (int)

4

imagefilledpolygon(): Using the $num_points parameter is deprecated
#1 /www/app/vendor/amenadiel/jpgraph/src/image/Image.php(1611): imagefilledpolygon(Object(GdImage), Array, 4, 16777215)
  • it cannot be modified directly, which will cause compatibility problems. (deprecated as of PHP 8.1.0)

5

Creation of dynamic property Amenadiel\JpGraph\Themes\UniversalTheme::$graph is deprecated
#0 /www/app/vendor/amenadiel/jpgraph/src/themes/Theme.php(52)
Creation of dynamic property Amenadiel\JpGraph\Graph\LinearTicks::$ticks_label is deprecated
#0 /www/app/vendor/amenadiel/jpgraph/src/graph/LinearTicks.php(209)
  • Can be fixed in this version, declare the class properties

6

Implicit conversion from float 48.5 to int loses precision
#1 /www/app/vendor/amenadiel/jpgraph/src/image/Image.php(1158): imagettftext(Object(GdImage), 8, 0, 48.5, 98.0, 4473924
Implicit conversion from float 113.5 to int loses precision
#1 /www/app/vendor/amenadiel/jpgraph/src/image/Image.php(1048): imagettftext(Object(GdImage), 8, 0, 113.5, 52.0, 4473924, 
  • Can be fixed in this version, using (int)

Bug when upgrading to 3.6.16 from 3.6.12

When my autodeploy script updated jpgrah to the latest, it started displaying errors:

ErrorException
Use of undefined constant ROOT_PATH - assumed 'ROOT_PATH'

line 23 of src/config.inc.php.

Best regards

Class loading error in MGraph

There seem to be multiple Issues in there as far as i can see.

Fatal error: Class 'Amenadiel\JpGraph\Graph\Text' not found in vendor\amenadiel\jpgraph\src\graph\MGraph.php on line 60

line graph not updating styling on multi yaxis

i have a line graph with multiple y axis because i want every line to have there own scaling but that causes it to stop changing the styling it only grabs the normal styling and i cant change anything about it technically i can but that only makes it look worse because its way to janky

composer autoload deprecation warnings

composer install complains about non-compliant classes:

  • Amenadiel\JpGraph\UnitTest\UnitTester located in tests/_support/UnitTester.php
  • Amenadiel\JpGraph\UnitTest\Helper\Unit located in tests/_support/Helper/Unit.php
  • Amenadiel\JpGraph\UnitTest_generated\UnitTesterActions located in tests/_support/_generated/UnitTesterActions.php

For each class composer shows this Deprecation notice: Class does not comply with psr-4 autoloading standard. It will not autoload anymore in Composer v2.0.

Composer version: 1.10.13

The only classes affected are in the UnitTest namespace, so this probably won't affect actually running jpgraph in production.

get width and height from legend

Could the code calculating the legend width and height

$abs_height = 0;
for ($i = 0; $i < $rows; ++$i) {
$abs_height += $rowheight[$i];
}
// Make sure that the height is at least as high as mark size + ymargin
$abs_height = max($abs_height, $this->mark_abs_vsize);
$abs_height += $this->ybottom_margin;
// Find out the maximum width in each column
for ($i = $numcolumns; $i < $n; ++$i) {
$colwidth[$i % $numcolumns] = max(
$aImg->GetTextWidth($this->txtcol[$i][0]) + 2 * $this->xmargin + 2 * $this->mark_abs_hsize,
$colwidth[$i % $numcolumns]
);
}
// Get the total width
$mtw = 0;
for ($i = 0; $i < $numcolumns; ++$i) {
$mtw += $colwidth[$i];
}
// remove the last rows interpace margin (since there is no next row)
$abs_height -= $this->ylinespacing;
// Find out maximum width we need for legend box
$abs_width = $mtw + $this->xlmargin + ($numcolumns - 1) * $this->mark_abs_hsize;
be refactored into it's own function?

That way we can get the width and height with getter functions. Use case is then you know exactly how big to set the plot margins to reserve sufficient space for the legend.

Error in Laravel

Hi friends. The first of all is to thank you for the work you are doing. A good graphics generation library for PHP was needed.

I have little knowledge of PHP and English is not my language but if I can help with something, I am delighted.

I have been using the previous version (4.0.3?) In Laravel 8 with PHP 8 for several months and I have had no problems creating bar and grid

I just updated to this latest version and I have come across this general error that always happens to me.

PHP Fatal error:  Cannot redeclare ddd() (previously declared in C:\xampp\htdocs\laravel\vendor\facade\ignition\src\helpers.php:8) in C:\xampp\htdocs\laravel\vendor\amenadiel\jpgraph\src\includes\polyfills.php on line 53

I thank you again. I want you to know that there are many of us who use this library and we are very happy to know that it will continue to be updated. Thanks!

Check for invalid GD image resource not compatible with PHP 8.

Line 143 in src/images/Image.php checks for an invalid GD resource with an "if ($this->img < 1)".

As per "breaking changes" list in PHP 8 (https://www.php.net/manual/en/migration80.incompatible.php):
"The GD extension now uses GdImage objects as the underlying data structure for images, rather than resources."

In my private testing, a change of this line to a simple null reference check is enough to have the library run on 8.0.0. I have attached a patch for your consideration.
0001-Adjustment-to-check-on-invalid-image-resource.patch.zip

Dashed Line

From php7 i cant trace any dotted/dashed line
On linux work, on 5.x work

If i do the same raw GD (i dont have a debugger so something can miss) i can create dashed line

Probably is not related to Jpgraph himself but is someone can help on this....
Here the raw GD i can extrapolate

16711680, 1 => 16711680, 2 => 16711680, 3 => 16711680, 4 => 16711680, 5 => 16711680, 6 => 16711680, 7 => 16711680, 8 => 16711680, 9 => -6, 10 => -6, 11 => -6, 12 => -6, ); imagesetthickness($im, 1); imagesetstyle($im, $style); imageline($im, 40, 265, 780, 265, IMG_COLOR_STYLED); imagepng($im, null); imagedestroy($im); ?>

GetPlotsYMinMax() error

Hi,
I created a Graph with 4 horizontal lines (Amenadiel\JpGraph\Plot\PlotLine) and a GroupBarPlot (Amenadiel\JpGraph\Plot\GroupBarPlot).
If I call Graph->GetPlotsYMinMax(...) the horizontal lines will be stripped out for calculation, which is fine.
But in line 2807 your array index is initialized with 0 but the GroupBarPlot object has the index 4.
Better would be to rather do a foreach() { .... }' than do { ... } while' because the latter doesn't recognizes the GroupBarPlot at position 4 and raises an error in line 2820.
Thank you.

Band disappear

use Amenadiel\JpGraph\Graph;
use Amenadiel\JpGraph\Plot;

$lineData = array(
0 => 2.176,
1 => 2.17,
2 => 2.185,
3 => 2.195,
4 => 2.171,
5 => 2.168,
6 => 2.168,
7 => 2.163,
8 => 2.149,
9 => 2.189,
10 => 2.192,
11 => 2.17,
12 => 2.146,
13 => 2.169,
14 => 2.176,
15 => 2.174,
16 => 2.183,
17 => 2.176,
18 => 2.159,
19 => 2.194,
);

$graph = new Graph\Graph(800, 440, 'auto');
$graph->img->SetMargin(50, 20, 20, 40);
$graph->SetScale('textlin', 2.11, 2.29);
$graph->yaxis->scale->SetGrace(2, 2);

$p1 = new Plot\LinePlot($lineData);

$graph->AddBand(new Plot\PlotBand(HORIZONTAL, 2, 2.25, 'max', '#5C9BF9'));
$graph->AddBand(new Plot\PlotBand(HORIZONTAL, 1, 'min', 2.15, '#5C9BF9'));

$graph->Add($p1);
$graph->Stroke();

The PlotBand dont work anymore... i can see only a fraction of the upper and none of the bottom
Original version work as expected

I try to investigate this bug bot for now no luck... thinks some "z order" broblem

** Update: I try original jpgraph 4.2.0 and have the same bug... i figured out only now my code use old 3.0.7 (and work correctly)

** Update2: adding $graph->ygrid->Show(false); seem fix the problem

PHP7 support

I haven't tested this, but this thread suggests that the original jpGraph is not compatible with PHP7. As this is a "modernized" version of jpGraph, have you tested if it supports PHP7?

I really like your work, I have to use jpGraph and would much rather use true namespaces and composer instead of the vanilla version. Are you actively supporting this? Can I depend on it in production?
EDIT: I meant if you're planning on pulling in new versions as they're released. Seeing that the last one was in 2010 this probably isn't going to be an issue.

imagecolorresolvealpha() expects parameter 2 to be int, string given

Passing multiple colors to a Radar graph's titles results in an imagecolorresolvealpha error. (vendor/amenadiel/jpgraph/src/image/RGB.php:586)

my Code:
$titles is an array of 11 string values
$colors is an array of 11 string values (e.g. 'black','blue','green',...)
$data is an array of 11 ints between 0 and 3

$graph = new Graph\RadarGraph(1140, 850); $graph->SetCenter(0.52, 0.5); $graph->SetScale('lin', 0, 3); $graph->SetFrame(false); $graph->legend->SetPos(0.77,0.02,'left','top'); $graph->legend->SetFont(FF_ARIAL,FS_NORMAL,16); $graph->SetTitles($titles); $graph->axis->SetFont(FF_ARIAL,FS_BOLD,12); $graph->axis->SetWeight(2); $graph->axis->title->SetFont(FF_ARIAL,FS_BOLD,12); $graph->axis->SetColor('black', $colors); $graph->axis->scale->ticks->Set(1,2,3); $graph->grid->Show (); $teamPlot = new Plot\RadarPlot($data); $teamPlot ->SetColor('blue','lightblue'); $teamPlot ->SetLegend('Initial Assessment'); $graph->Add($teamPlot); $img = $graph->Stroke(_IMG_HANDLER); ob_start(); imagepng($img); $img_data = ob_get_contents(); ob_end_clean(); $img_data = base64_encode($img_data); return($img_data);

kint-php/kint dependency

Despite the fact you mentioned kint-php/kint: ^2.2 as "requires (dev)" dependency it causes fatal error, if kint-php/kint: version 1.1 or lower installed. The problem is in
vendor/amenadiel/jpgraph/src/config.inc.php:758

\Kint::$enabled_mode = DEBUGMODE;

This static property is undeclared in older versions of kint.

Plus, i think it is a bad practice to declare a Class that mocks Kint inside config.inc.php.
What is the pupose, all the code with kint is commented like:

//\Kint::dump($files[$i]);

DotEnv should be optional

This library is requiring symfony/dotenv, but then it's working without it too.
So, such dependency should be moved from require to require-dev (and/or to suggest)

PHP 7.4 not supported

Can You Please Update it to last version of JpGraph to JpGraph-4.3.0-pro (4.3.0-pro) because its supporting PHP 7.4.
Thanks,

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.