Git Product home page Git Product logo

proton-ide's Introduction

Proton IDE

Salesforce.com IDE for the Atom editor

NOTE: This IDE is still in BETA and is being actively developed. If you encounter any issues please check the known issues and log an issue in Github if it does not already exist. Thanks and enjoy!

Installation

Proton is available as an Atom package. Use cmd+, on a Mac or ctrl+, on Windows to pull up your Atom settings. Search for Proton IDE.

Configuration

Once the install is complete, we need to set the project directory (where all your projects will be saved). To do this:

  • Click Atom in the menu and click Open Your Config
  • Find the following lines (it will be near the very bottom of the configuration file): If you don't see it, click Packages -> Proton -> Login/New Project, then check your config again
'proton':
  'project_path': ''
  • In between the empty single quotes, add the full path to your project. NOTE: This directory must exist so make sure to create it if it doesn't.
  • Do not add a trailing slash. For example, if you're on a Mac and you want your project to be in your home directory in a folder called atom you would use: /Users/yourusername/atom

That's it! Keep reading for instructions on using the Proton IDE.

Creating a new SFDC project

  • Navigate to Packages -> Proton
  • Select Login/New Project
  • Enter you username and password for a Salesforce instance (NOTE: You may need to append your security token onto your password)
  • Select the org type (Is it Production, Sandbox or Developer?)
  • Click Login
  • When you see a successful login message, click on the Select Metadata tab
  • This will load all the available Metadata from your org (NOTE: At this time, only the main dev resources are available)
  • Enter a project name (no spaces)
  • Click Create Project

Saving your file to SFDC

To deploy the changes you made to a file:

  • Right click anywhere in the active file window and click Proton: Save to server OR
  • Navigate to Packages -> Proton and click Save current file

Refreshing a file from SFDC

If you want to pull the most recent version of a file from SFDC:

  • Right click anywhere in the active file window and click Proton: Refresh from server OR
  • Navigate to Packages -> Proton and click Refresh current file

Deleting a file from SFDC

If you want to delete a file from SFDC (and locally):

  • Right click anywhere in the active file window and click Proton: Delete from server OR
  • Navigate to Packages -> Proton and click Delete current file

Creating new metadata

You can create new Classes/Triggers/Pages/Components right from the IDE.

  • Navigate to Packages -> Proton -> Create Metadata
  • Click on the metadata type that you'd like to create
  • Fill in all required fields
  • Click create

Interactive Query Editor

Proton IDE has a rich query editor built-in. It allows you to query/sort/update data in your org right from the IDE!

To open the editor:

  • Navigate to Packages -> Proton -> Run Interactive Query

To perform a query:

  • The top 3 fields are for you select/from/where statements. NOTE: Don't include the select, from, or where keywords.
  • NOTE: You can also query relationally (Account.Name, Account.Owner.Name etc..)
  • Click Execute Query or press [ENTER]

To search and sort:

  • Use the column headers to sort.
  • Use the search box to search table data.

To update data:

  • Double click on the cell that you want to update
  • Enter the new value and press [ENTER]
  • You can edit multiple rows before saving
  • When finished, click Save Rows

Running code against your org

You can execute anonymous apex from Proton and view the full debug log.

  • Navigate to Packages -> Proton -> Execute Anonymous Apex
  • Enter Apex code into the editor and click "Execute"
  • The debug log will be displayed under the Results tab

proton-ide's People

Contributors

haggy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

proton-ide's Issues

Can't backspace in New* windows

Backspace is broken in the following windows:

  • New Project
  • New Apex Class
  • New Apex Trigger
  • New VF Page
  • New VF Component

Temporary Workaround: Just highlight the text you want to replace and type over it.

The fix: Replace all input text fields with EditorView

Failed to install Proton IDE. Failed at the [email protected] install script

Hi

I was trying to install this package when I bumped into this error:

> [email protected] install /private/var/folders/yv/jbqbhrtn3zlgmwglqkm1q5nw0000gn/T/apm-install-dir-11482-1697-w201rw/node_modules/Proton-IDE/node_modules/text-buffer/node_modules/pathwatcher/node_modules/runas
> node-gyp rebuild

  CXX(target) Release/obj.target/runas/src/main.o

npm http GET https://registry.npmjs.org/jQuery
npm http GET https://registry.npmjs.org/fs-plus
npm http GET https://registry.npmjs.org/node-rest-client
npm http GET https://registry.npmjs.org/async
npm http GET https://registry.npmjs.org/text-buffer/2.4.0
npm http GET https://registry.npmjs.org/soap
npm http GET https://registry.npmjs.org/xml2js
npm http GET https://registry.npmjs.org/rimraf
npm http 304 https://registry.npmjs.org/node-rest-client
npm http 304 https://registry.npmjs.org/fs-plus
npm http 304 https://registry.npmjs.org/jQuery
npm WARN deprecated [email protected]: This is deprecated. Please use 'jquery' (all lowercase).
npm http 304 https://registry.npmjs.org/xml2js
npm http 304 https://registry.npmjs.org/rimraf
npm http 304 https://registry.npmjs.org/soap
npm http 304 https://registry.npmjs.org/text-buffer/2.4.0
npm http 304 https://registry.npmjs.org/async
npm http GET https://registry.npmjs.org/underscore-plus
npm http GET https://registry.npmjs.org/mkdirp
npm http GET https://registry.npmjs.org/span-skip-list
npm http GET https://registry.npmjs.org/delegato
npm http GET https://registry.npmjs.org/emissary
npm http GET https://registry.npmjs.org/grim/0.11.0
npm http GET https://registry.npmjs.org/interval-skip-list
npm http GET https://registry.npmjs.org/serializable
npm http GET https://registry.npmjs.org/pathwatcher
npm http GET https://registry.npmjs.org/q
npm http GET https://registry.npmjs.org/xmlbuilder
npm http GET https://registry.npmjs.org/sax
npm http GET https://registry.npmjs.org/lodash
npm http GET https://registry.npmjs.org/request
npm http GET https://registry.npmjs.org/sax
npm http GET https://registry.npmjs.org/strip-bom
npm http 304 https://registry.npmjs.org/mkdirp
npm http 304 https://registry.npmjs.org/grim/0.11.0
npm http 304 https://registry.npmjs.org/span-skip-list
npm http 304 https://registry.npmjs.org/interval-skip-list
npm http 304 https://registry.npmjs.org/delegato
npm http 304 https://registry.npmjs.org/q
npm http 304 https://registry.npmjs.org/pathwatcher
npm http 304 https://registry.npmjs.org/xmlbuilder
npm http 304 https://registry.npmjs.org/sax
npm http 304 https://registry.npmjs.org/lodash
npm http 304 https://registry.npmjs.org/request
npm http 304 https://registry.npmjs.org/underscore-plus
npm http 304 https://registry.npmjs.org/sax
npm http 304 https://registry.npmjs.org/serializable
npm http GET https://registry.npmjs.org/underscore
npm http GET https://registry.npmjs.org/lodash-node
npm http 304 https://registry.npmjs.org/emissary
npm http 304 https://registry.npmjs.org/strip-bom
npm http GET https://registry.npmjs.org/mixto
npm http GET https://registry.npmjs.org/get-parameter-names
npm http GET https://registry.npmjs.org/underscore
npm http GET https://registry.npmjs.org/first-chunk-stream
npm http GET https://registry.npmjs.org/is-utf8
npm http 304 https://registry.npmjs.org/underscore
npm http 304 https://registry.npmjs.org/lodash-node
npm http GET https://registry.npmjs.org/property-accessors
npm http GET https://registry.npmjs.org/runas
npm http GET https://registry.npmjs.org/bindings
npm http GET https://registry.npmjs.org/nan/0.8.0
npm http GET https://registry.npmjs.org/mime-types
npm http GET https://registry.npmjs.org/node-uuid
npm http GET https://registry.npmjs.org/forever-agent
npm http GET https://registry.npmjs.org/tough-cookie
npm http GET https://registry.npmjs.org/form-data
npm http GET https://registry.npmjs.org/tunnel-agent
npm http GET https://registry.npmjs.org/http-signature
npm http GET https://registry.npmjs.org/oauth-sign
npm http 304 https://registry.npmjs.org/underscore
npm http GET https://registry.npmjs.org/hawk/1.1.1
npm http GET https://registry.npmjs.org/aws-sign2
npm http GET https://registry.npmjs.org/stringstream
npm http GET https://registry.npmjs.org/qs
npm http GET https://registry.npmjs.org/json-stringify-safe
npm http 304 https://registry.npmjs.org/first-chunk-stream
npm http 304 https://registry.npmjs.org/get-parameter-names
npm http 304 https://registry.npmjs.org/property-accessors
npm http 304 https://registry.npmjs.org/mixto
npm http GET https://registry.npmjs.org/testla
npm http 304 https://registry.npmjs.org/mime-types
npm http 304 https://registry.npmjs.org/runas
npm http 304 https://registry.npmjs.org/node-uuid
npm http 304 https://registry.npmjs.org/is-utf8
npm http 304 https://registry.npmjs.org/forever-agent
npm http 304 https://registry.npmjs.org/bindings
npm http 304 https://registry.npmjs.org/tough-cookie
npm http 304 https://registry.npmjs.org/form-data
npm http 304 https://registry.npmjs.org/http-signature
npm http 304 https://registry.npmjs.org/tunnel-agent
npm http 304 https://registry.npmjs.org/oauth-sign
npm http 304 https://registry.npmjs.org/hawk/1.1.1
npm http 304 https://registry.npmjs.org/aws-sign2
npm http 304 https://registry.npmjs.org/json-stringify-safe
npm http 304 https://registry.npmjs.org/qs
npm http 304 https://registry.npmjs.org/stringstream
npm http GET https://registry.npmjs.org/combined-stream
npm http GET https://registry.npmjs.org/mime
npm http 304 https://registry.npmjs.org/testla
npm http GET https://registry.npmjs.org/assert-plus/0.1.2
npm http GET https://registry.npmjs.org/asn1/0.1.11
npm http GET https://registry.npmjs.org/ctype/0.5.2
npm http 304 https://registry.npmjs.org/nan/0.8.0
npm http 304 https://registry.npmjs.org/ctype/0.5.2
npm http GET https://registry.npmjs.org/dependency-injector
npm http GET https://registry.npmjs.org/fantasy-promises
In file included from ../src/main.cc:1:
../../nan/nan.h:339:13: error: no member named 'New' in 'v8::String'
    return  _NAN_ERROR(v8::Exception::Error, errmsg);
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:319:50: note: expanded from macro '_NAN_ERROR'
# define _NAN_ERROR(fun, errmsg) fun(v8::String::New(errmsg))
                                     ~~~~~~~~~~~~^
../../nan/nan.h:343:5: error: no member named 'ThrowException' in namespace 'v8'
    _NAN_THROW_ERROR(v8::Exception::Error, errmsg);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:324:11: note: expanded from macro '_NAN_THROW_ERROR'
      v8::ThrowException(_NAN_ERROR(fun, errmsg));                             \
      ~~~~^
../../nan/nan.h:343:5: error: no member named 'New' in 'v8::String'
    _NAN_THROW_ERROR(v8::Exception::Error, errmsg);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:324:26: note: expanded from macro '_NAN_THROW_ERROR'
      v8::ThrowException(_NAN_ERROR(fun, errmsg));                             \
                         ^~~~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:319:50: note: expanded from macro '_NAN_ERROR'
# define _NAN_ERROR(fun, errmsg) fun(v8::String::New(errmsg))
                                     ~~~~~~~~~~~~^
../../nan/nan.h:348:9: error: no type named 'ThrowException' in namespace 'v8'
    v8::ThrowException(error);
    ~~~~^
../../nan/nan.h:355:65: error: no member named 'New' in 'v8::String'
    v8::Local<v8::Value> err = v8::Exception::Error(v8::String::New(msg));
                                                    ~~~~~~~~~~~~^
../../nan/nan.h:357:26: error: no member named 'New' in 'v8::String'
    obj->Set(v8::String::New("code"), v8::Int32::New(errorNumber));
             ~~~~~~~~~~~~^
../../nan/nan.h:369:12: error: no member named 'New' in 'v8::String'
    return _NAN_ERROR(v8::Exception::TypeError, errmsg);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:319:50: note: expanded from macro '_NAN_ERROR'
# define _NAN_ERROR(fun, errmsg) fun(v8::String::New(errmsg))
                                     ~~~~~~~~~~~~^
../../nan/nan.h:373:5: error: no member named 'ThrowException' in namespace 'v8'
    _NAN_THROW_ERROR(v8::Exception::TypeError, errmsg);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:324:11: note: expanded from macro '_NAN_THROW_ERROR'

      v8::ThrowException(_NAN_ERROR(fun, errmsg));                             \
      ~~~~^
../../nan/nan.h:373:5: error: no member named 'New' in 'v8::String'
    _NAN_THROW_ERROR(v8::Exception::TypeError, errmsg);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:324:26: note: expanded from macro '_NAN_THROW_ERROR'
      v8::ThrowException(_NAN_ERROR(fun, errmsg));                             \
                         ^~~~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:319:50: note: expanded from macro '_NAN_ERROR'
# define _NAN_ERROR(fun, errmsg) fun(v8::String::New(errmsg))
                                     ~~~~~~~~~~~~^
../../nan/nan.h:377:12: error: no member named 'New' in 'v8::String'
    return _NAN_ERROR(v8::Exception::RangeError, errmsg);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:319:50: note: expanded from macro '_NAN_ERROR'
# define _NAN_ERROR(fun, errmsg) fun(v8::String::New(errmsg))
                                     ~~~~~~~~~~~~^
../../nan/nan.h:381:5: error: no member named 'ThrowException' in namespace 'v8'
    _NAN_THROW_ERROR(v8::Exception::RangeError, errmsg);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:324:11: note: expanded from macro '_NAN_THROW_ERROR'
      v8::ThrowException(_NAN_ERROR(fun, errmsg));                             \
      ~~~~^
../../nan/nan.h:381:5: error: no member named 'New' in 'v8::String'
    _NAN_THROW_ERROR(v8::Exception::RangeError, errmsg);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:324:26: note: expanded from macro '_NAN_THROW_ERROR'
      v8::ThrowException(_NAN_ERROR(fun, errmsg));                             \
                         ^~~~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:319:50: note: expanded from macro '_NAN_ERROR'
# define _NAN_ERROR(fun, errmsg) fun(v8::String::New(errmsg))
                                     ~~~~~~~~~~~~^
../../nan/nan.h:727:49: error: too few arguments to function call, single argument 'isolate' was not specified
    v8::Local<v8::Object> obj = v8::Object::New();
                                ~~~~~~~~~~~~~~~ ^
/Users/spav/.atom/.node-gyp/.node-gyp/0.11.13/deps/v8/include/v8.h:2372:3: note: 'New' declared here
  static Local<Object> New(Isolate* isolate);
  ^
In file included from ../src/main.cc:1:
../../nan/nan.h:733:49: error: too few arguments to function call, single argument 'isolate' was not specified
    v8::Local<v8::Object> obj = v8::Object::New();
                                ~~~~~~~~~~~~~~~ ^
/Users/spav/.atom/.node-gyp/.node-gyp/0.11.13/deps/v8/include/v8.h:2372:3: note: 'New' declared here
  static Local<Object> New(Isolate* isolate);
  ^
In file included from ../src/main.cc:1:
../../nan/nan.h:740:12: error: no member named 'Dispose' in 'v8::Persistent<v8::Object, v8::NonCopyablePersistentTraits<v8::Object> >'
    handle.Dispose();
    ~~~~~~ ^
../../nan/nan.h:741:12: error: no member named 'Clear' in 'v8::Persistent<v8::Object, v8::NonCopyablePersistentTraits<v8::Object> >'
    handle.Clear();
    ~~~~~~ ^
../../nan/nan.h:746:39: error: no member named 'NewSymbol' in 'v8::String'; did you mean 'IsSymbol'?
    NanPersistentToLocal(handle)->Set(NanSymbol("callback"), fn);
                                      ^~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:181:38: note: expanded from macro 'NanSymbol'
#define NanSymbol(value) v8::String::NewSymbol(value)
                         ~~~~~~~~~~~~^
/Users/spav/.atom/.node-gyp/.node-gyp/0.11.13/deps/v8/include/v8.h:1356:8: note: 'IsSymbol' declared here
  bool IsSymbol() const;
       ^
In file included from ../src/main.cc:1:
../../nan/nan.h:746:39: error: call to non-static member function without an object argument
    NanPersistentToLocal(handle)->Set(NanSymbol("callback"), fn);
                                      ^~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:181:38: note: expanded from macro 'NanSymbol'
#define NanSymbol(value) v8::String::NewSymbol(value)
                         ~~~~~~~~~~~~^~~~~~~~~
../../nan/nan.h:750:46: error: no member named 'NewSymbol' in 'v8::String'; did you mean 'IsSymbol'?
    return NanPersistentToLocal(handle)->Get(NanSymbol("callback"))
                                             ^~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:181:38: note: expanded from macro 'NanSymbol'
#define NanSymbol(value) v8::String::NewSymbol(value)
                         ~~~~~~~~~~~~^
/Users/spav/.atom/.node-gyp/.node-gyp/0.11.13/deps/v8/include/v8.h:1356:8: note: 'IsSymbol' declared here
  bool IsSymbol() const;
       ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
make: *** [Release/obj.target/runas/src/main.o] Error 1
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/Applications/Atom.app/Contents/Resources/app/apm/node_modules/atom-package-manager/node_modules/npm/node_modules/node-gyp/lib/build.js:267:23)
gyp ERR! stack     at ChildProcess.EventEmitter.emit (events.js:98:17)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:797:12)
gyp ERR! System Darwin 13.3.0
gyp ERR! command "node" "/Applications/Atom.app/Contents/Resources/app/apm/node_modules/atom-package-manager/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /private/var/folders/yv/jbqbhrtn3zlgmwglqkm1q5nw0000gn/T/apm-install-dir-11482-1697-w201rw/node_modules/Proton-IDE/node_modules/text-buffer/node_modules/pathwatcher/node_modules/runas
gyp ERR! node -v v0.10.26
gyp ERR! node-gyp -v v0.12.2
gyp ERR! not ok 
npm http 304 https://registry.npmjs.org/mime
npm http 304 https://registry.npmjs.org/combined-stream
npm http 304 https://registry.npmjs.org/assert-plus/0.1.2
npm http 304 https://registry.npmjs.org/asn1/0.1.11
npm http GET https://registry.npmjs.org/punycode
npm http GET https://registry.npmjs.org/delayed-stream/0.0.5
npm http GET https://registry.npmjs.org/hoek
npm http GET https://registry.npmjs.org/boom
npm http GET https://registry.npmjs.org/sntp
npm http GET https://registry.npmjs.org/cryptiles
npm http 304 https://registry.npmjs.org/fantasy-promises
npm http 304 https://registry.npmjs.org/boom
npm http 304 https://registry.npmjs.org/punycode
npm http 304 https://registry.npmjs.org/delayed-stream/0.0.5
npm http 304 https://registry.npmjs.org/sntp
npm http 304 https://registry.npmjs.org/cryptiles
npm http 304 https://registry.npmjs.org/dependency-injector
npm http 304 https://registry.npmjs.org/hoek
npm ERR! [email protected] install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] install script.
npm ERR! This is most likely a problem with the runas package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls runas
npm ERR! There is likely additional logging output above.

npm ERR! System Darwin 13.3.0
npm ERR! command "/Applications/Atom.app/Contents/Resources/app/apm/node_modules/atom-package-manager/bin/node" "/Applications/Atom.app/Contents/Resources/app/apm/node_modules/atom-package-manager/node_modules/npm/bin/npm-cli.js" "--globalconfig" "/Applications/Atom.app/Contents/Resources/app/apm/node_modules/atom-package-manager/.apmrc" "--userconfig" "/Users/spav/.atom/.apmrc" "install" "/Users/spav/.atom/.node-gyp/.atom/.apm/Proton-IDE/0.10.0/package.tgz" "--target=0.11.13" "--arch=x64"
npm ERR! cwd /private/var/folders/yv/jbqbhrtn3zlgmwglqkm1q5nw0000gn/T/apm-install-dir-11482-1697-w201rw
npm ERR! node -v v0.10.26
npm ERR! npm -v 1.4.4
npm ERR! code ELIFECYCLE
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /private/var/folders/yv/jbqbhrtn3zlgmwglqkm1q5nw0000gn/T/apm-install-dir-11482-1697-w201rw/npm-debug.log
npm ERR! not ok code 0

I know you are not the developer for that package mentioned in the debug, but I thought you might have more information on this.

Let me know if I can help on anything.

install is failing on node 4.4.2

Many compile errors.  Looks like changes to Native Node layer is out of date wrt to the version of node I'm using.   I don't have time to debug and fix this right now.   I'm guessing these are mostly simple interface changes that need to be tracked.    


in file included from ../src/main.cc:1:0:
../../nan/nan.h: In function ‘v8::Handle<v8::Value> NanError(const char*)’:
../../nan/nan.h:319:38: error: ‘New’ is not a member of ‘v8::String’
 # define _NAN_ERROR(fun, errmsg) fun(v8::String::New(errmsg))
                                      ^
../../nan/nan.h:339:13: note: in expansion of macro ‘_NAN_ERROR’
     return  _NAN_ERROR(v8::Exception::Error, errmsg);

Fix last modified by feature on save

Currently, the code checks the Last Modified By field on the record before save to determine if somebody modified the file on the server. This breaks down when somebody else created the record and the developer creates a new project because everything on the server is modified by somebody else.

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.