Giter VIP home page Giter VIP logo

jshor / symbology Goto Github PK

View Code? Open in Web Editor NEW
212.0 3.0 24.0 5.68 MB

๐Ÿ”– Generates 1D, 2D, or composite barcodes in png, svg, or eps formats. Supports 50+ symbologies.

Home Page: https://symbology.dev

License: GNU General Public License v3.0

C++ 11.38% Python 4.15% JavaScript 7.64% TypeScript 76.47% Shell 0.36%
barcode code-128 data-matrix onecode ean upc isbn qrcode pdf417 gs1

symbology's People

Contributors

dependabot[bot] avatar dominik-korsa avatar github-actions[bot] avatar jshor avatar l-clem avatar sapikachu 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

symbology's Issues

Node ERR_MODULE_NOT_FOUND

Running on Node v15.8.0 (on a Mac)

Error [ERR_MODULE_NOT_FOUND]: Cannot find package './node_modules/symbology/' imported from /index.js

Here's a simple out the box example and package.json

package.json

{
  "name": "symbology-test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "type": "module",
  "author": "",
  "license": "ISC",
  "dependencies": {
    "symbology": "^2.1.2"
  }
}

index.js:

import {
    SymbologyType,
    OutputTypes,
    EncodingMode,
    createStream
  } from 'symbology'
  
  (async () => {
    try {
      const { data } = await createStream({
        symbology: SymbologyType.CODE128,
        encoding: EncodingMode.GS1_MODE,
      }, '12345', OutputTypes.SVG)
  
      console.log('Result: ', data)
    } catch (err) {
      console.error('Error: ', err)
    }
  })()

A screenshot of what the inside of the package looks like, the binary appears to be there, the dist folder referenced in the package.json is not however (should it be)

Screenshot 2021-04-08 at 1 08 34 pm

Node 17x Error

When installing symbology with node v17+ the following error occurs.

error [email protected]: The engine "node" is incompatible with this module. Expected version ">=14.0.0 <17.0.0". Got "17.0.1"

Suggestion:
Maybe don't set a hard node version limit in the package manifest.

Node Pre GYP Install response error and build error in Ubuntu 21.04 / NodeJS 16.9.1 / Python 3.9.5

When attempting to install using the latest version of symbology via Node 16.9.1 it fails to download the prebuilt node build file and also fails to fallback compile using node-gyp.

I have tested on multiple machines in different networks and different operating systems. I have even checked via wget if https://github.com/jshor/symbology/releases/download/3.0.6/symbology_linux_x64_node-v93.tar.gz is accessible by the system and it can download it no problem however, during the build process it errors.

The node-gyp fallback build also fails with the error ../src/binding/main.cpp:10:10: fatal error: nan.h: No such file or directory
10 | #include <nan.h>

OS: Ubuntu 21.04
Node: 16.9.1
Node-GYP: [email protected]

`> [email protected] binary:install

node-pre-gyp install --fallback-to-build

node-pre-gyp info it worked if it ends with ok
node-pre-gyp info using [email protected]
node-pre-gyp info using [email protected] | linux | x64
node-pre-gyp info check checked for "/var/[Redacted]/Server/node_modules/symbology/bin/binding/bin/symbology.node" (not found)
node-pre-gyp http GET https://github.com/jshor/symbology/releases/download/3.0.6/symbology_linux_x64_node-v93.tar.gz
node-pre-gyp ERR! install response status 403 Forbidden on https://github.com/jshor/symbology/releases/download/3.0.6/symbology_linux_x64_node-v93.tar.gz
node-pre-gyp WARN Pre-built binaries not installable for [email protected] and [email protected] (node-v93 ABI, glibc) (falling back to source compile with node-gyp)
node-pre-gyp WARN Hit error response status 403 Forbidden on https://github.com/jshor/symbology/releases/download/3.0.6/symbology_linux_x64_node-v93.tar.gz
gyp info it worked if it ends with ok
gyp info using [email protected]
gyp info using [email protected] | linux | x64
gyp info ok
gyp info it worked if it ends with ok
gyp info using [email protected]
gyp info using [email protected] | linux | x64
gyp info find Python using Python version 3.9.5 found at "/usr/bin/python3"
gyp info spawn /usr/bin/python3
gyp info spawn args [
gyp info spawn args '/usr/local/nvm/versions/node/v16.9.1/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',
gyp info spawn args 'binding.gyp',
gyp info spawn args '-f',
gyp info spawn args 'make',
gyp info spawn args '-I',
gyp info spawn args '/var/[Redacted]/Server/node_modules/symbology/build/config.gypi',
gyp info spawn args '-I',
gyp info spawn args '/usr/local/nvm/versions/node/v16.9.1/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',
gyp info spawn args '-I',
gyp info spawn args '/root/.cache/node-gyp/16.9.1/include/node/common.gypi',
gyp info spawn args '-Dlibrary=shared_library',
gyp info spawn args '-Dvisibility=default',
gyp info spawn args '-Dnode_root_dir=/root/.cache/node-gyp/16.9.1',
gyp info spawn args '-Dnode_gyp_dir=/usr/local/nvm/versions/node/v16.9.1/lib/node_modules/npm/node_modules/node-gyp',
gyp info spawn args '-Dnode_lib_file=/root/.cache/node-gyp/16.9.1/<(target_arch)/node.lib',
gyp info spawn args '-Dmodule_root_dir=/var/[Redacted]/Server/node_modules/symbology',
gyp info spawn args '-Dnode_engine=v8',
gyp info spawn args '--depth=.',
gyp info spawn args '--no-parallel',
gyp info spawn args '--generator-output',
gyp info spawn args 'build',
gyp info spawn args '-Goutput_dir=.'
gyp info spawn args ]
gyp info ok
gyp info it worked if it ends with ok
gyp info using [email protected]
gyp info using [email protected] | linux | x64
gyp info spawn make
gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
make: Entering directory '/var/[Redacted]/Server/node_modules/symbology/build'
CC(target) Release/obj.target/symbology/.zint/backend/output.o
CC(target) Release/obj.target/symbology/.zint/backend/2of5.o
CC(target) Release/obj.target/symbology/.zint/backend/auspost.o
CC(target) Release/obj.target/symbology/.zint/backend/aztec.o
CC(target) Release/obj.target/symbology/.zint/backend/code.o
CC(target) Release/obj.target/symbology/.zint/backend/code1.o
CC(target) Release/obj.target/symbology/.zint/backend/code16k.o
CC(target) Release/obj.target/symbology/.zint/backend/code49.o
CC(target) Release/obj.target/symbology/.zint/backend/code128.o
CC(target) Release/obj.target/symbology/.zint/backend/common.o
CC(target) Release/obj.target/symbology/.zint/backend/composite.o
CC(target) Release/obj.target/symbology/.zint/backend/dmatrix.o
CC(target) Release/obj.target/symbology/.zint/backend/gridmtx.o
CC(target) Release/obj.target/symbology/.zint/backend/gs1.o
CC(target) Release/obj.target/symbology/.zint/backend/imail.o
CC(target) Release/obj.target/symbology/.zint/backend/large.o
CC(target) Release/obj.target/symbology/.zint/backend/library.o
CC(target) Release/obj.target/symbology/.zint/backend/maxicode.o
CC(target) Release/obj.target/symbology/.zint/backend/medical.o
CC(target) Release/obj.target/symbology/.zint/backend/pdf417.o
CC(target) Release/obj.target/symbology/.zint/backend/plessey.o
CC(target) Release/obj.target/symbology/.zint/backend/png.o
CC(target) Release/obj.target/symbology/.zint/backend/postal.o
CC(target) Release/obj.target/symbology/.zint/backend/ps.o
../.zint/backend/ps.c: In function 'ps_plot':
../.zint/backend/ps.c:142:9: warning: unused variable 'buf' [-Wunused-variable]
142 | char *buf = malloc(sizeof(symbol->rendered_data));
| ^~~
CC(target) Release/obj.target/symbology/.zint/backend/qr.o
CC(target) Release/obj.target/symbology/.zint/backend/reedsol.o
CC(target) Release/obj.target/symbology/.zint/backend/rss.o
CC(target) Release/obj.target/symbology/.zint/backend/svg.o
../.zint/backend/svg.c: In function 'svg_plot':
../.zint/backend/svg.c:125:9: warning: unused variable 'buf' [-Wunused-variable]
125 | char *buf = malloc(sizeof(symbol->rendered_data));
| ^~~
CC(target) Release/obj.target/symbology/.zint/backend/telepen.o
CC(target) Release/obj.target/symbology/.zint/backend/upcean.o
CC(target) Release/obj.target/symbology/.zint/backend/bmp.o
CC(target) Release/obj.target/symbology/.zint/backend/codablock.o
CC(target) Release/obj.target/symbology/.zint/backend/dotcode.o
CC(target) Release/obj.target/symbology/.zint/backend/eci.o
CC(target) Release/obj.target/symbology/.zint/backend/emf.o
CC(target) Release/obj.target/symbology/.zint/backend/gb2312.o
CC(target) Release/obj.target/symbology/.zint/backend/gb18030.o
CC(target) Release/obj.target/symbology/.zint/backend/general_field.o
CC(target) Release/obj.target/symbology/.zint/backend/gif.o
CC(target) Release/obj.target/symbology/.zint/backend/hanxin.o
CC(target) Release/obj.target/symbology/.zint/backend/mailmark.o
CC(target) Release/obj.target/symbology/.zint/backend/pcx.o
CC(target) Release/obj.target/symbology/.zint/backend/raster.o
CC(target) Release/obj.target/symbology/.zint/backend/sjis.o
CC(target) Release/obj.target/symbology/.zint/backend/tif.o
CC(target) Release/obj.target/symbology/.zint/backend/ultra.o
CC(target) Release/obj.target/symbology/.zint/backend/vector.o
CXX(target) Release/obj.target/symbology/src/binding/main.o
../src/binding/main.cpp:10:10: fatal error: nan.h: No such file or directory
10 | #include <nan.h>
| ^~~~~~~
compilation terminated.
make: *** [symbology.target.mk:164: Release/obj.target/symbology/src/binding/main.o] Error 1
make: Leaving directory '/var/[Redacted]/Server/node_modules/symbology/build'
gyp ERR! build error
gyp ERR! stack Error: make failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/usr/local/nvm/versions/node/v16.9.1/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)
gyp ERR! stack at ChildProcess.emit (node:events:394:28)
gyp ERR! stack at Process.ChildProcess._handle.onexit (node:internal/child_process:290:12)
gyp ERR! System Linux 4.4.0-210-generic
gyp ERR! command "/usr/local/nvm/versions/node/v16.9.1/bin/node" "/usr/local/nvm/versions/node/v16.9.1/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "build" "--fallback-to-build" "--module=/var/[Redacted]/Server/node_modules/symbology/bin/binding/bin/symbology.node" "--module_name=symbology" "--module_path=/var/[Redacted]/Server/node_modules/symbology/bin/binding/bin" "--napi_version=8" "--node_abi_napi=napi" "--napi_build_version=0" "--node_napi_label=node-v93"
gyp ERR! cwd /var/[Redacted]/Server/node_modules/symbology
gyp ERR! node -v v16.9.1
gyp ERR! node-gyp -v v7.1.2
gyp ERR! not ok
node-pre-gyp ERR! build error
node-pre-gyp ERR! stack Error: Failed to execute '/usr/local/nvm/versions/node/v16.9.1/bin/node /usr/local/nvm/versions/node/v16.9.1/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --module=/var/[Redacted]/Server/node_modules/symbology/bin/binding/bin/symbology.node --module_name=symbology --module_path=/var/[Redacted]/Server/node_modules/symbology/bin/binding/bin --napi_version=8 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=node-v93' (1)
node-pre-gyp ERR! stack at ChildProcess. (/var/[Redacted]/Server/node_modules/@mapbox/node-pre-gyp/lib/util/compile.js:89:23)
node-pre-gyp ERR! stack at ChildProcess.emit (node:events:394:28)
node-pre-gyp ERR! stack at maybeClose (node:internal/child_process:1064:16)
node-pre-gyp ERR! stack at Process.ChildProcess._handle.onexit (node:internal/child_process:301:5)
node-pre-gyp ERR! System Linux 4.4.0-210-generic
node-pre-gyp ERR! command "/usr/local/nvm/versions/node/v16.9.1/bin/node" "/var/[Redacted]/Server/node_modules/symbology/node_modules/.bin/node-pre-gyp" "install" "--fallback-to-build"
node-pre-gyp ERR! cwd /var/[Redacted]/Server/node_modules/symbology
node-pre-gyp ERR! node -v v16.9.1
node-pre-gyp ERR! node-pre-gyp -v v1.0.5
node-pre-gyp ERR! not ok
Failed to execute '/usr/local/nvm/versions/node/v16.9.1/bin/node /usr/local/nvm/versions/node/v16.9.1/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --module=/var/[Redacted]/Server/node_modules/symbology/bin/binding/bin/symbology.node --module_name=symbology --module_path=/var/[Redacted]/Server/node_modules/symbology/bin/binding/bin --napi_version=8 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=node-v93' (1)`

Node 16x Support

Node version 16.2.0 has been released and the package.json has limited the maximum version of node to node 15.

Is node 16x going to be supported?

How to set height use unit mm

How to set height use unit mm?

like

 const { data } = await createStream({
                symbology: SymbologyType.EANX,
                backgroundColor: 'FFFFFFFF',
                height: '100mm'
            }, ele.content, OutputType.SVG);

quick start not working? SyntaxError: Named export 'EncodingMode' not found.

Using quick start example:

import {
  OutputOption,
  EncodingMode,
  SymbologyType,
  createStream
} from 'symbology'

(async () => {
  try {
    const { data } = await createFile({
      symbology: SymbologyType.CODE128,
      encoding: EncodingMode.GS1_MODE,
      fileName: 'out.svg',
      backgroundColor: '00000000',
      foregroundColor: '00FF00FF'
    }, '12345')

    console.log('File successfully created.')
  } catch (err) {
    console.error('Error: ', err)
  }
})()

Results in error message:

$ node --version ## result: v16.16.0
$ yarn add symbology
$ node quick_start_symbology.js
file:///.../quick_start_symbology.js:3
	EncodingMode,
	^^^^^^^^^^^^
SyntaxError: Named export 'EncodingMode' not found. The requested module 'symbology' is a CommonJS module, which may not support all module.exports as named exports.
CommonJS modules can always be imported via the default export, for example using:

import pkg from 'symbology';

    at ModuleJob._instantiate (node:internal/modules/esm/module_job:128:21)
    at async ModuleJob.run (node:internal/modules/esm/module_job:194:5)
    at async Promise.all (index 0)
    at async ESMLoader.import (node:internal/modules/esm/loader:385:24)
    at async loadESM (node:internal/process/esm_loader:88:5)
    at async handleMainPromise (node:internal/modules/run_main:61:12)

Am I doing something wrong?

Ability to change dot size

As a developer, I would like to be able to specify the desired dot size (in dotty mode) in the config so that dots can be rendered according to the consumer's desire.

CreateFile

The type param is not passed. I see in documentation it's available in the call to createStream(Symbol, data, type). In createFile() it's not listed but the documentation indicates that png, svg and eps are available options. Looking at the createFile function I don't see the type being passed along.

Download tarball instead of git clone

Usually when a package is depends on an external library, a tarball (or zip) is downloaded, unpacked and compiled, see sharp's install script. For zint, the links can be found at their GitHub.
This package is instead using git clone zint, which assumes that git is installed in the host system, which might not be the case. I am using a slim node-alpine docker image and now I am forced to include a git installation just to compile this package. I suggest we download the tarball instead.
There is also IMO no need to compile the master branch. I would much rather see this package using a pinned version which is guaranteed to work.

Unable to get this working

Hi Josh, I love the idea of this module but I can't get it working using the following:

// create temp file
var tmpFile = path.resolve(path.join(tmpFolder, (new Date().getTime()) + '.png'));

// setup options
var opts = {
    symbology: symbology.Barcode.CODE128,
    foregroundColor: 'fff000',
    backgroundColor: '000000',
    fileName: tmpFile
};

// create file
symbology.createFile(opts, data, 'png').then(function(result) {
    console.log(result);
})
.catch(function(err) {
    console.log(err);
});

Output:

{
    code:2,
    fileName:"/var/folders/2p/b__k79vs73j04x7lx_zjwnlm0000gn/T/1537561690583.png",
    inputData:"11110010010",
    message:""
}

Any ideas?

using on alpine linux

Hello,
First of all Thank you for your library.

and Could I use on aline linux?

When I use docker node:14-alpine. the node process crash when I using this module.

Is there any way to use it on alpine?

If I can what should I install ?

Ability to rotate barcodes

As a developer, I would like to be able to specify the desired right-angle rotation (mod 90) in the config so that I can rotate my rendered barcode.

Unable to set custom text

Hello,

The documentation states that the text property in the config object allows customizing the human readable text shown under the barcode. However, it appears that setting anything to the property has no effect:

try {
        const { data } = await createStream({
            symbology: SymbologyType.CODE128,
            text: "custom_text", //has no effect, original input used for barcode generation will appear instead
        }, input, OutputType.PNG)

        console.log('Result: ', data)
        return data;
} catch (err) {
        console.error('Error: ', err)
        return undefined
}

Node 18 support

Super useful package - but I can't run it in lambda at the moment because I've migrated to 18, so a generic request please for the package to support node 18.

White space width

Hi,

I create some barcodes with the datamatrix type. When i set the whitespaceWidth to 2, i get white space on both sides, but not on the top and bottom. Any way to fix this ? I tried the other options, like borderWidth but it has no effects.

Thanks.

App crashes when generating barcode with SVG output

I have a script in nodejs to generate some PDF files. Each page must have a barcode, so I'm using symbology to generate the barcode in the SVG format and add it to each PDF page.

This is working ok, so far, but now I had to generate a large number of pages.

I need to run 3000 times, but the app crashes every time at iteration 509/510.
I isolated the code and simply running the function that returns the barcode SVG string make the app crash.

This seems to happen if the output is SVG. If the output is set to PNG the app runs all the iterations that I tested (1000 / 2000 and 3000).

/**
 * Returns an SVG string of a CODE39 barcode.
 * @param value string: barcode value.
 * @returns 
 */
const getBarCode = async (value:string):Promise<string> =>
{
    try 
    {
        const { data } = await createStream
        (
            { 
                symbology: SymbologyType.CODE39, 
                showHumanReadableText: true,
                height: 190, 
                scale: 1
            },
            value,
            OutputType.SVG
        );
    
        return data; 
    } 
    catch (error) 
    {
        throw error;
    }
}

/**
 * Render a number of pages corresponding to totalPages number.
 * @param totalPages: number total pages to render
 */
const generatePages = async (totalPages:number) => 
{
    console.time('Time Rendering');

    try 
    {
        const pages = [...Array(totalPages).keys()].map(page => (page + 1).toString().padStart(4, '0'));
        
        for (const [index, value] of pages.entries()) 
        {
            console.log('Barcode to page: ', value);
            await getBarCode(value);
        }

        console.timeEnd('Time Rendering');
    } 
    catch (error) 
    {
        throw error;
    }
}

//Starts to generate n pages
generatePages(1000);

I'm using node v16.14.0 and the latest version of this lib: v3.0.8

AWS SDK Error on Install

Seems to be only after installing symbology.

./node_modules/@mapbox/node-pre-gyp/lib/util/s3_setup.js
Module not found: Can't resolve 'aws-sdk' in '/node_modules/@mapbox/node-pre-gyp/lib/util'

Unable to create any barcode in docker with alpine linux

I am trying to use this library inside of a docker container, everything seems to be fine but if I run my code (even if it's just a basic example from your documentation) it gets stuck with no error or anything.

Docker image is based on node-alpine:

  • Node.js version: 15.10.0
  • alpine linux version: 3.13

EDIT: it doesn't matter if I use higher version of node or alpine

Here is a snippet of my code (it gets stuck on createStream line):

console.log('before')
  try {
    const data = await createStream({
      symbology: SymbologyType.CODE11,
    }, '8765432164')

   console.log(data)
  } catch (e) {
    console.log(e)
  }
  console.log('after')

Console output:

before

Npm install fails due to 404

I wanted to try it out but during installation node-pre-gyp failed trying to fetch symbology from
https://github.com/jshor/symbology/releases/download/3.0.1/symbology_win32_x64_node-v72.tar.gz

symbology: 3.0.1
node 12.16.1
windows: 10

Here is full error:

Cannot install Node.js module: "C:\Program Files\nodejs\node.exe" "C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js" install symbology --save

Standard error:
node-pre-gyp ERR! install response status 404 Not Found on https://github.com/jshor/symbology/releases/download/3.0.1/symbology_win32_x64_node-v72.tar.gz 
node-pre-gyp WARN Pre-built binaries not installable for [email protected] and [email protected] (node-v72 ABI, unknown) (falling back to source compile with node-gyp) 
node-pre-gyp WARN Hit error response status 404 Not Found on https://github.com/jshor/symbology/releases/download/3.0.1/symbology_win32_x64_node-v72.tar.gz 
gyp ERR! find Python 
gyp ERR! find Python Python is not set from command line or npm configuration
gyp ERR! find Python Python is not set from environment variable PYTHON
gyp ERR! find Python checking if "python" can be used
gyp ERR! find Python - "python" is not in PATH or produced an error
gyp ERR! find Python checking if "python2" can be used

Error: Cannot find module './lib/binary'

My app crashes when adding the require line for this library.

const symbology = require('symbology')

It throws this error:
Error: Cannot find module './lib/binary'

The version installed is the 2.0.1.

403 when node-gyp tries to download file

hey!
I wanted to try out your library, because it should fit my needs perfectly.

When I run npm install symbology --save, node-gyp fails to download v1.2.3 from AWS with a HTTP-error 403.

Here's the error:

node-pre-gyp WARN Using request for node-pre-gyp https download 
node-pre-gyp WARN Tried to download(403): https://symbologyjs.s3-us-west-2.amazonaws.com/symbology/v1.2.3/Release/symbology-v1.2.3-node-v64-darwin-x64.tar.gz 
node-pre-gyp WARN Pre-built binaries not found for [email protected] and [email protected] (node-v64 ABI, unknown) (falling back to source compile with node-gyp) 

Is there anything I can do to get this lib working for me?

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.