Code Monkey home page Code Monkey logo

react-google-recaptcha's Introduction

react-google-recaptcha

Build Status npm version npm downloads

Edit react-google-recaptcha example

React component for Google reCAPTCHA v2.

Installation

npm install --save react-google-recaptcha

Usage

All you need to do is sign up for an API key pair. You will need the client key then you can use <ReCAPTCHA />.

The default usage imports a wrapped component that loads the google recaptcha script asynchronously then instantiates a reCAPTCHA the user can then interact with.

Code Example:

import ReCAPTCHA from "react-google-recaptcha";

function onChange(value) {
  console.log("Captcha value:", value);
}

ReactDOM.render(
  <ReCAPTCHA
    sitekey="Your client site key"
    onChange={onChange}
  />,
  document.body
);

Component Props

Properties used to customise the rendering:

Name Type Description
asyncScriptOnLoad func optional callback when the google recaptcha script has been loaded
badge enum optional bottomright, bottomleft or inline. Positions reCAPTCHA badge. Only for invisible reCAPTCHA
hl string optional set the hl parameter, which allows the captcha to be used from different languages, see reCAPTCHA hl
isolated bool optional For plugin owners to not interfere with existing reCAPTCHA installations on a page. If true, this reCAPTCHA instance will be part of a separate ID space. (default: false)
onChange func The function to be called when the user successfully completes the captcha
onErrored func optional callback when the challenge errored, most likely due to network issues.
onExpired func optional callback when the challenge is expired and has to be redone by user. By default it will call the onChange with null to signify expired callback.
sitekey string The API client key
size enum optional compact, normal or invisible. This allows you to change the size or do an invisible captcha
stoken string optional set the stoken parameter, which allows the captcha to be used from different domains, see reCAPTCHA secure-token
tabindex number optional The tabindex on the element (default: 0)
type enum optional image or audio The type of initial captcha (defaults: image)
theme enum optional light or dark The theme of the widget (defaults: light). See example

Component Instance API

The component instance also has some utility functions that can be called. These can be accessed via ref.

  • getValue() returns the value of the captcha field
  • getWidgetId() returns the recaptcha widget Id
  • reset() forces reset. See the JavaScript API doc
  • execute() programmatically invoke the challenge
  • executeAsync() programmatically invoke the challenge and return a promise that resolves to the token or errors(if encountered).
    • alternative approach to execute() in combination with the onChange() prop - example below

Example:

const recaptchaRef = React.createRef();
...
onSubmit = () => {
  const recaptchaValue = recaptchaRef.current.getValue();
  this.props.onSubmit(recaptchaValue);
}
render() {
  return (
    <form onSubmit={this.onSubmit} >
      <ReCAPTCHA
        ref={recaptchaRef}
        sitekey="Your client site key"
        onChange={onChange}
      />
    </form>
  )
}

Invisible reCAPTCHA

▶ Codesandbox invisible example

See the reCAPTCHA documentation to see how to configure it.

With the invisible option, you need to handle things a bit differently. You will need to call the execute method yourself.

import ReCAPTCHA from "react-google-recaptcha";

const recaptchaRef = React.createRef();

ReactDOM.render(
  <form onSubmit={() => { recaptchaRef.current.execute(); }}>
    <ReCAPTCHA
      ref={recaptchaRef}
      size="invisible"
      sitekey="Your client site key"
      onChange={onChange}
    />
  </form>,
  document.body
);

Additionally, you can use the executeAsync method to use a promise based approach.

import ReCAPTCHA from "react-google-recaptcha";


const ReCAPTCHAForm = (props) => {
  const recaptchaRef = React.useRef();

  const onSubmitWithReCAPTCHA = async () => {
    const token = await recaptchaRef.current.executeAsync();

    // apply to form data
  }

  return (
    <form onSubmit={onSubmitWithReCAPTCHA}>
      <ReCAPTCHA
        ref={recaptchaRef}
        size="invisible"
        sitekey="Your client site key"
      />
    </form>
  )

}

ReactDOM.render(
  <ReCAPTCHAForm />,
  document.body
);

Advanced usage

Global properties used by reCaptcha

useRecaptchaNet: If google.com is blocked, you can set useRecaptchaNet to true so that the component uses recaptcha.net instead.

enterprise: if you want to use Google Enterprise Recaptcha, instead of the free version, set enterprise to true.

Example global properties:

window.recaptchaOptions = {
  useRecaptchaNet: true,
  enterprise: true,
};

CSP Nonce support

window.recaptchaOptions = {
  nonce: document.querySelector('meta[name=\'csp-nonce\']').getAttribute('content'),
};

ReCaptcha loading google recaptcha script manually

You can also use the barebone components doing the following. Using that component will oblige you to manage the grecaptcha dep and load the script by yourself.

import { ReCAPTCHA } from "react-google-recaptcha";

const grecaptchaObject = window.grecaptcha // You must provide access to the google grecaptcha object.

render(
  <ReCAPTCHA
    ref={(r) => this.recaptcha = r}
    sitekey="Your client site key"
    grecaptcha={grecaptchaObject}
  />,
  document.body
);

Hiding the Recaptcha

According to the google docs you are allowed to hide the badge as long as you include the reCAPTCHA branding visibly in the user flow. Please include the following text:

This site is protected by reCAPTCHA and the Google
    <a href="https://policies.google.com/privacy">Privacy Policy</a> and
    <a href="https://policies.google.com/terms">Terms of Service</a> apply.

If you wish to hide the badge you must add:

.grecaptcha-badge { visibility: hidden; }

to your css.

react-google-recaptcha's People

Contributors

ahuth avatar aij avatar alexkval avatar anajavi avatar bitfrost avatar brien-givens avatar codeth avatar danez avatar dependabot[bot] avatar dozoisch avatar etienne-bondot avatar hannah-goodridge avatar hartzis avatar iranreyes avatar jhrdina avatar joshuaalpuerto avatar jozefcipa avatar kuhnsm avatar laserpants avatar m-orsh avatar markthethomas avatar mathieumg avatar mattgd avatar megamaddu avatar mvhenten avatar newyork-anthonyng avatar piloos avatar ptondereau avatar rubtsovav avatar stemsmit 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

react-google-recaptcha's Issues

How to reset captcha

How can I reset the captcha?

I'm render it like these:
<ReCAPTCHA ref="recaptcha" sitekey="xxxxxxxxx" onChange={this.onCaptchaChange} />

I know I can do something like grecaptcha.reset() but I can't understand how I do this:

var grecaptchaObject = grecaptcha // You must provide access to the google grecaptcha object.

Thank you :)

Recaptcha breaks after an expiration event

  1. Load page
  2. Check box
  3. Wait for expiration
  4. Try to click the box again or reset it manually
  5. Error inside the recaptcha script:
    image

Any ideas if something related to the async script loading might be causing this? I've tried specifying an expiration callback as well but it behaves the same. Once it expires the recaptcha is unusable until the page is refreshed.

ReCAPTCHA couldn't find user-provided function: onloadcallback

I'm trying to migrate our current recaptcha implementation in order to use this dependency instead of react-captcha (since it doesn't seem to support invisible recaptcha).

Here is part of the implementation using react-captcha dependency (which works perfectly fine):

<Recaptcha
  ref={ref => (this.recaptchaInstance = ref)}
  sitekey={params.captcha.key}
  render="explicit"
  verifyCallback={this.validateCaptchaResponse}
  onloadCallback={this.captchaCallback}
  expiredCallback={this.captchaExpired}
/>

And here is the react-google-recaptcha implementation (which gives the user-provided function error message):

recaptcha

<ReCAPTCHA
  ref={ref => (this.recaptchaInstance = ref)}
  size="invisible"
  sitekey={params.captcha.key}
  onExpired={this.captchaExpired}
  onChange={this.validateCaptchaResponse}
/>

It seems the problem is related to the missing onloadCallback function, I've also tried using the same function onloadCallback as the original react-recaptcha implementation without success and I didn't see any equivalent onloadCallback prop in the react-google-recaptcha documentation. Any suggestions?

Issue installing with yarn

When installing with yarn v1.3.2 react-async-script which is in peerDependencies in the package.json doesn't get installed. It works fine with npm. I think the solution would be to change the peerDependencies in the package.json to dependencies.

No 'Access-Control-Allow-Origin' header is present on the requested resource

I'm getting the following error upon populating captcha:

Fetch API cannot load https://www.gstatic.com/recaptcha/api2/r20170829114530/recaptcha__en.js. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:3000' is therefore not allowed access. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

Do you have any suggestions on how to solve this?

Resetting captcha with redux-form

How do I reset captcha if I'm using redux-form ?

export const FormCaptcha = ({ input }) => {}
        <ReCAPTCHA {...input}
              sitekey="xxxxxxxxxxxxx"
        />
<Field
        name="g-recaptcha-response"
        component={FormCaptcha}
/>

Suggest Idea: Event handle for async load

Hi, thanks a lot for your work on this.
I just have a suggest, maybe add a event to handle when the captcha script loads correctly or/and a timeout (in case of internet problems)

<ReCAPTCHA
     ref="recaptcha"
     sitekey="6LcYNzMUAAAAAOgeebqBLFCOIFSKmCsSTkSUNwWk"
     onLoad={this.handleOnLoad}
     onTimeout={this.handleTimeout}
     onChange={this.onCaptcha}
/>

Cannot contact reCAPTCHA. Check your connection and try again.

Hi,

I'm not sure if this is related to this library or is just a google thingie.

I have a login form (redux form) with a recaptcha field (using the invisible one).
When I'm executing captcha for the first time, everything is ok and form will be submitted.
In case of wrong username or password, when I will execute it for the second time, a popup comes and says: 'Cannot contact reCAPTCHA. Check your connection and try again.'.
If I will execute captcha again, now it works and the iframe with the images is displayed.

Any idea?

Thanks for you help,

React 0.14.0 warning

Since React have been released I get warning
Warning: ReactDOMComponent: Do not access .getDOMNode() of a DOM node; instead, use the node directly. This DOM node was rendered by reCAPTCHA.

If I remove .getDOMNode() calls at lines
https://github.com/bobiblazeski/react-google-recaptcha/blob/master/src/recaptcha.js
52 // this.captcha.getDOMNode(); // removed
53 let id = this.props.grecaptcha.render(this.captcha, { // removed .getDOMNode() call
and rebuild I got

Warning: AsyncScriptLoader(...): React component classes must extend React.Component.warning @
main.js:1148 Uncaught Error: Invariant Violation: AsyncScriptLoader.render(): A valid ReactComponent must be returned. You may have returned undefined, an array or some other invalid object.

If I remove them at the compiled code components works without warning.

recaptcha error render

react 15.03
react-google-recaptcha 0.8.1

in my file:

const ReCAPTCHA = require('react-google-recaptcha/lib/recaptcha')


render() {
  <div className="login">
    ...
    <ReCAPTCHA ref="recaptcha"
                                  size="normal"
                                  onChange={(e) => this.test(e)}
                                  sitekey="[SITE_KEY]"/>
  </div>
}

the error:

Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object. Check the render 

Did I miss some config or It have to render by any special way?

Can't force focus on recaptcha

For accessibility, I need to be able to focus on the checkbox when the user attempts to submit the form while not being validated. I currently see no way to do that with your component. Ideally, I'd be able to call this.recaptcha.focus(), where this.recaptcha is the ref.

Warning: Unknown prop `render` on div tag.

The following warning in generated when rendering a ReCAPTCHA component:
Warning: Unknown prop 'render' on div tag. Remove this prop from the element.

Debugging the distributed code, the root cause is line 108 in the react-google-recaptcha’s recaptcha.js file:
return _react2["default"].createElement("div", _extends({}, childProps, { ref: "captcha" }));

Here, the childProps contain a “render” property which is inappropriate for a div element.

A patch is to exclude "render" from the childProps just above by adding “render” to the list of excluded props:
var childProps = _objectWithoutProperties(_props, ["render", "sitekey", "onChange", "theme", "type", "tabindex", "onExpired", "size", "stoken", "grecaptcha”]);

In the original recaptcha.js source (pre-webpack), this fix translates to also consuming ‘render’ on line 80:
const{render,sitekey,onChange,theme,type,tabindex,onExpired,size,stoken,grecaptcha,...childProps}=this.props;

Use this for RN app

Hey. Thanks for your works.

Can you please advise whether this repo can be used for react-native apps?

Need to detect "onHide" when running in "insivible" mode

Nice component! We just have one annoying edge case. When the re-captcha overlay challenge appears (running in invisible mode), and the user just clicks "outside" of the recaptcha challenge-box, the whole overlay will just hide.

Unfortunately, no function like "onChange" is fired in this case - making it impossible for us to detect this particular edge-case. Imagine that we want to handle a form-loading state, preventing people from multi-submitting. We can implement it perfectly with all cases, except this special one - as the hide-overlay action from the user is done "behind the curtains" - the form stays in the locking loading state when the user simply clicks away recaptcha :-/

IOS Problem

After completing the captcha on IOS, the window is scrolling to end of the page.

Error: ReCAPTCHA has already been rendered in this element when rendering page for second time

If I render my page with the invisible captcha, everything works as expected. If leave the page (i.e. back-button) and come back to my page with the captcha, I get the error Error: ReCAPTCHA has already been rendered in this element.

I am trying to use the captcha.reset() function, but it doesn't seem to be doing what I expect. I have tried the reset() in multiple react lifecycle locations (componentWillMount, componentWillUnmount, render), but I'm still seeing the error.

I'm rendering the invisible captcha using this code:

render() {

return (
  <button className='confirm' onClick={() =>captcha.execute()}>
    <ReCAPTCHA
      className='recaptcha'
      ref={(element) => { captcha = element }}
      size='invisible'
      sitekey='__sitekey__'
      onChange={this.doConfirm}
    />
  <button>
)
}

Loaded notification

I want to show a loading indicator while it's in the process of loading so people know they can do anything yet. Is there a way to added a notification onLoaded for when the reCAPTCHA's loaded?

this.props.grecaptcha.render is not a function

I have used the react-google-recaptcha for a while and it used to work well.
But recently, I found that there's a bug with the following error log,

Uncaught (in promise) TypeError: this.props.grecaptcha.render is not a function

image

Not sure if someone encounters the bug as mine.
And my website is a Single Page Application (SPA) implemented in React framework.

How to checkCaptcha?

I used your function:

checkCaptcha: function(value) {
    console.log("Captcha value:", value);
},

But what do I do with this value? Is it the case that this function will only be called with the user is not a robot? What should we do with this value hash?

Error on page refresh

Sometimes recaptcha thows exception immediately after page refresh

TypeError: this.props.grecaptcha.render is not a function
explicitRender
node_modules/react-google-recaptcha/lib/es/recaptcha.js:65

  62 | ReCAPTCHA.prototype.explicitRender = function explicitRender (cb) {
  63 |   if (this.props.grecaptcha && this.state.widgetId === undefined) {
  64 |     var wrapper = document.createElement('div')
> 65 |     var id = this.props.grecaptcha.render(wrapper, {
  66 |       sitekey: this.props.sitekey,
  67 |       callback: this.props.onChange,
  68 |       theme: this.props.theme,

componentDidUpdate
node_modules/react-google-recaptcha/lib/es/recaptcha.js:100

   97 | }
   98 | 
   99 | ReCAPTCHA.prototype.componentDidUpdate = function componentDidUpdate () {
> 100 |   this.explicitRender()
  101 | }
  102 | 
  103 | ReCAPTCHA.prototype.componentWillUnmount = function componentWillUnmount () {

One possible fix is to change condition to

 if (this.props.grecaptcha && this.props.grecaptcha.render && this.state.widgetId === undefined) {

Uncaught Invariant Violation: Stateless function components cannot have refs.

@dozoisch

Getting error when i making this as separate component

import React from 'react';
import ReactDOM from 'react-dom';
import ReCAPTCHA from "react-google-recaptcha";

function onChange(value) {
  console.log("Captcha value:", value);
}

export default () => {

  return (
      <ReCAPTCHA
        ref="recaptcha"
        sitekey="xxx"
        onChange={onChange}
      />
  );

}

Environment details

 "react": "^15.3.1",
  "react-dom": "^15.3.1",
  "react-google-recaptcha": "^0.5.4",

FYI
Then based on (This stackoverflow answer)[http://stackoverflow.com/questions/35891653/how-to-properly-set-references-to-react-components] ,i have changed the code as shown bellow , now it working

import React from 'react';
import ReactDOM from 'react-dom';
import ReCAPTCHA from "react-google-recaptcha";

function onChange(value) {
  console.log("Captcha value:", value);
}

export default () => {
  let ref_value = "recaptcha";
  return (
      <ReCAPTCHA
        ref={node => ref_value = node}
        sitekey="xxx"
        onChange={onChange}
      />
  );

}

Warning:

Hi there,

Changes in React 15.2.0 mean you'll get a warning now for unknown properties on DOM elements.

react-google-recaptcha is triggering one for grecaptcha in the div it creates:

screen shot 2016-07-18 at 2 19 13 pm

In the above, our SignInForm contains:
import ReCAPTCHA from 'react-google-recaptcha'

Cheers
Karen

Executing Invisible reCAPTCHA, value is a null string

When using an invisible captcha, I'm doing this.captcha.execute() on submit. My onChange handler isn't called and in the onSubmit, when I do this.captcha.getValue(), the value is a null string. What could cause this?

Execute doesn't work on invisible when recaptcha isn't cached

I'm running execute on the ref returned by the callback to ReCAPTCHA. If it's the second time (i.e. cached), execute() works. If recaptcha hasn't been cached (e.g. first time in incognito), execute() does nothing.

After some analysis it seems to be because this.__executeRequested is undefined in explicitRender, even though it gets set in execute().... some kind of race condition?

Environment:

Cant set language with global variable

Hi,
I tried to set the Spanish language in index.js for an app created by create-react-app.
window.recaptchaOptions = { lang: 'es' };

The captcha still load in English language. Any suggestions? Thnks!

Set window.recaptchaOptions.lang dynamically after creating the store

I'm trying to set the recaptcha language dynamically in my application. Looking at the documentation here https://github.com/dozoisch/react-google-recaptcha

In order to translate the reCaptcha widget, you should create a global variable configuring the desired language. If you don't provide it, reCaptcha will pick up the user's interface language.
window.recaptchaOptions = {
lang: 'fr'
}
This works if I set the global window.recaptchaOptions object in root app.js file

The issue that I'm trying to resolve is setting the window.recaptchaOptions inside the index.js after creating the store so I can access the locale dynamically.

Investigating the requests, it looks like the google recaptcha__fr script is pulled in only if I set the global window.recaptchaOptions in the root App. This doesn't allow me to access the store.

Any thoughts on how I can fix this so I can set the window.recaptchaOptions in index.js after creating the store?

Thanks

onChange breaks after reset

run grecaptcha.reset() and then the onChange event doesn't work anymore.

You could need to bind everything after the reset

Uncaught SecurityError in Google iframe when unmounting

When the component gets unmounted (e.g., when navigating to a different page using react-router), an exception occurs:

Uncaught SecurityError: Blocked a frame with origin "https://www.google.com" from 
accessing a frame with origin "localhost". The frame requesting access has a protocol 
of "https", the frame being accessed has a protocol of "http". Protocols must match.

Possible solution is to remove the iframe container inserted by the reCAPTCHA script in componentWillUnmount.

ReCaptcha in iFrame not working

Hi !

I'm trying to use your component in an iframe but it fails with a "cannot join the ReCaptcha service" message (without any call to the verify callback). I guess it's an issue due to some script included / operations done at the window level, without the ability to specify a custom window context (as the component works just fine if I replace the iframe by a div).
I think it could be interesting to add the behavior to your component to make it more versatile.
If you do not think so, do you have an idea, a workaround or something to make your component work in an iframe to help me solve my corner-case ?

Thanks.

Possible to make execute function Promise-based?

I have a parent component to the component that actually uses the invisible recaptcha facility. In my case (below) the onSubmit and onChange functions are passed down from this parent component, so how do I get the value returned by captcha.execute() into the onSubmit function so that I can include it in the request payload sent to my server:

// Child component.
var React = require("react").default;
var render = require("react-dom").render
var ReCAPTCHA = require("react-google-recaptcha");

class Child extends React.Component {
  ...
  render(
    return (
      <form onSubmit={this.props.onSubmit}}>
        <ReCAPTCHA
          ref={(el) => { this.captcha = el; }}
          size="invisible"
          sitekey="Your client site key"
          onChange={this.props.onChange}
        />
      </form>
    )
  );
}

NPM Release for v0.11.1

Hi everyone. Thanks so much for this package. We are using v0.11.0 @iyzico and recently experiencing #76. I saw that this issue has been fixed but npm package has not been updated yet. Is it possible to publish a new release for npm?

Possible to support http to avoid browser error?

Currently using recaptcha on an http page which is generating the following error:

Uncaught SecurityError: Blocked a frame with origin "https://www.google.com" from accessing a frame with origin "http://local:3001".  The frame requesting access has a protocol of "https", the frame being accessed has a protocol of "http". Protocols must match.

Render function issue

Using in side React 15+

Following error is thrown whenever the component is used:

Warning: React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: object.

Can't resize responsively

Trying to giving the 'size' property different value base on the window size, so it can be responsive.
Seems like it only uses the initial value. Can't switch between 'compact' and 'normal' when the window size changes.

Any way to get widgetid?

With the standard google api we can use widgetid = grecaptcha.render(params). Having the widgetid allows us to specify which widget to execute recaptcha on. For example, if the user has a modal window that can be opened/closed and reopened, if the widget is loaded a second time when the user opens the modal a second time, there won't be a way of interacting with that specific recaptcha widget unless we have the widgetid.

Recaptcha Doesn't load on first render

Using a Recapture in a rendered page, wont always load the Recaptcha box when react.render is fired, only refreshing the page or firing render again works.

Console also warns ReCAPTCHA couldn't find user-provided function: onloadcallback

Since this is a wrapper for react, should this not working in relation to reacts lifecycle functions, there is no way to hold up render() (nor would one want to) how can we overcome this issue?

Im rendering as below; (onChange fires an imported redux action).

const  ReCaptchaBox => ({dispatch}) => (
<ReCAPTCHA
    sitekey={AppProperties.googleReCaptchaKey}
    size="normal"
    onChange={r => sendRecaptchaVerificationRequest(dispatch, r)}/>);
....

Once the ReCaptcha is loaded, it works fine despite the warning, but it simply wont render the first time if the element is a child of another element, or inside a render function. For example, a partial of where I am using my component looks as follows:

<form>
        ....
        <ReCaptchaBox/>
        ....
</form>

Callback on ready?

Hi!

Is there any easy way to execute a callback function when the recaptcha is loaded and ready?

Lang

Hey everyone,

how i set lang param for change language?

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.