Git Product home page Git Product logo

pysesame3's People

Contributors

konikoni428 avatar mochipon avatar renovate-bot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

key

pysesame3's Issues

Home assistant integration based on your library

Describe the question you have - 質問の内容

Just in case anyone is interested I made a home assistant custom integration with this library.

You can find it here: https://github.com/dragouf/sesame_lock_homeassistant

It is compatible with sesame 5 devices (pro included).

You just need to copy the root content of the repository to config/custom_components/sesame_lock then restart home assistant and go to integration and search for sesame. Name of the integration is Sesame Smart Lock 3/4/5.

You will need your api key, device uuid (found inside mobile app) and device secret (found by sending device QR code to api admin website).

it use CognitoAuth to get lock status and battery so it should avoid to much api request.

it's the first version, it may contain some bugs but it is working fine for me though.

The only minor bug I was not able to fix was to display correctly config flow label (the form show when setting up the integration).
If anyone can help for that you are welcome.

Additional context - その他

No response

Pysesame3 version (pip show pysesame3)

0.6.0

Python version (python --version)

3.11

OS

linux

Action Required: Fix Renovate Configuration

There is an error with this repository's Renovate configuration that needs to be fixed. As a precaution, Renovate will stop PRs until it is resolved.

Error type: Cannot find preset's package (github>whitesource/merge-confidence:beta)

[Request]: Support simultaneous subscriptions

Describe the solution you'd like - リクエストの内容

As as a specification of MQTT, only one MQTT connection can be established for one client ID at a time.

In the current implementation, the device object maintains a session to AWS IoT. That is, if a user executes subscribeMechStatus for multiple devices with a single client ID (CognitoAuth authenticator), only one of them can be kept.

self._iot_client = AWSIoTMQTTClient(
self.authenticator.client_id, useWebsocket=True
)

This is because when a device instance creates a new MQTT connection, it destroys the MQTT connection created by another device instance.

What's the problem this feature will solve? - 解決したい内容

Allow users to subscribe to the status of multiple devices at the same time.

Additional context - その他

No response

[Request]: Home Assistant Integration

Describe the solution you'd like - リクエストの内容

As the subject line suggests.

What's the problem this feature will solve? - 解決したい内容

No response

Additional context - その他

No response

[Question]: QR Code

Describe the question you have - 質問の内容

This looks great and I would love to use it. I just have no idea where to get the QR code that the QR code site need to provide the KEY Secret. Thoughts?

Additional context - その他

No response

Pysesame3 version (pip show pysesame3)

3

Python version (python --version)

3

OS

macOS

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Rate-Limited

These updates are currently rate-limited. Click on a checkbox below to force their creation now.

  • Update codecov/codecov-action action to v4
  • Update dependency importlib-metadata to v7
  • Update dependency mkdocs-autorefs to v1
  • Update dependency mkdocs-include-markdown-plugin to v6
  • Update dependency moto to v5
  • Update dependency pytest to v8
  • Update dependency pytest-cov to v5
  • Update szenius/set-timezone action to v2
  • 🔐 Create all rate-limited PRs at once 🔐

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

github-actions
.github/workflows/ci.yml
  • szenius/set-timezone v1.0
  • actions/checkout v3
  • actions/setup-python v4
  • codecov/codecov-action v3
  • szenius/set-timezone v1.0
  • actions/checkout v3
  • actions/setup-python v4
.github/workflows/release.yml
  • actions/checkout v3
  • heinrichreimer/github-changelog-generator-action v2.3
  • actions/setup-python v4
pep621
pyproject.toml
  • poetry-core >=1.0.0
poetry
pyproject.toml
  • python >=3.7,<4.0
  • typing-extensions ^4.2.0
  • importlib-metadata ^4.11.4
  • pycryptodome ^3.14.1
  • requests ^2.27.1
  • awsiotsdk ^1.11.1
  • boto3 ^1.23.6
  • certifi *
  • requests-aws4auth ^1.1.2
  • livereload ^2.6.3
  • mkdocs ^1.3.0
  • mkdocstrings ^0.19.0
  • mkdocstrings-python ^0.7.0
  • mkdocs-autorefs ^0.4.1
  • mkdocs-include-markdown-plugin ^3.5.0
  • mkdocs-material ^8.2.15
  • asynctest ^0.13.0
  • bump2version ^1.0.1
  • moto ^3.1.10
  • pre-commit ^2.19.0
  • pytest ^7.1.2
  • pytest-cov ^3.0.0
  • requests-mock ^1.9.3

  • Check this box to trigger a request for Renovate to run again on this repository

[Bug]: pysesame3 does not work at all

Description - 説明

subscribeMechStatusを実行するとエラーが出続け、鍵の開閉を受信しません。
おそらく半年前くらい前からこの症状が出ており、それまで便利に使わせていただいていましたが、いつかバージョンアップ等で解消されるだろうと思い放置していましたが、現状も同じなので報告させていただきます。

Expected Behavior - 期待する動作

エラーが出ず、開閉を受信する。

Pysesame3 version (pip show pysesame3)

0.5.1

Python version (python --version)

Python 3.10.4

OS

Win10

How to Reproduce - 再現方法

  1. pip install pysesame3[cognito] でインストール
  2. Example Usage ( https://pysesame3.readthedocs.io/en/stable/usage/ ) のソースの必要箇所を変更して実行
  3. An error occurs.

Output - 出力された内容, 具体的な問題内容

C:\Users\myname\Desktop>python pysesame3Test.py
==========
[Initial MechStatus]
CHSesame2MechStatus(Battery=100% (6.07V), isInLockRange=True, isInUnlockRange=False, retCode=0, target=551, position=517)
==========
[History]
AWS IoT connection interrupted. error: AWS_ERROR_MQTT_UNEXPECTED_HANGUP: The connection was closed unexpectedly.
AWS IoT connection resumed. return_code: 0 session_present: True
(Histories)
==========
[Prompt]
Action [lock/unlock/toggle/click]: AWS IoT connection interrupted. error: AWS_ERROR_MQTT_UNEXPECTED_HANGUP: The connection was closed unexpectedly.
AWS IoT connection resumed. return_code: 0 session_present: True
AWS IoT connection interrupted. error: AWS_ERROR_MQTT_UNEXPECTED_HANGUP: The connection was closed unexpectedly.
AWS IoT connection resumed. return_code: 0 session_present: True
AWS IoT connection interrupted. error: AWS_ERROR_MQTT_UNEXPECTED_HANGUP: The connection was closed unexpectedly.
AWS IoT connection resumed. return_code: 0 session_present: True
AWS IoT connection interrupted. error: AWS_ERROR_MQTT_UNEXPECTED_HANGUP: The connection was closed unexpectedly.
AWS IoT connection resumed. return_code: 0 session_present: True
AWS IoT connection interrupted. error: AWS_ERROR_MQTT_UNEXPECTED_HANGUP: The connection was closed unexpectedly.
AWS IoT connection resumed. return_code: 0 session_present: True
AWS IoT connection interrupted. error: AWS_ERROR_MQTT_UNEXPECTED_HANGUP: The connection was closed unexpectedly.
AWS IoT connection resumed. return_code: 0 session_present: True
AWS IoT connection interrupted. error: AWS_ERROR_MQTT_UNEXPECTED_HANGUP: The connection was closed unexpectedly.
Traceback (most recent call last):
  File "C:\Users\myname\Desktop\pysesame3Test.py", line 134, in <module>
    main()
  File "C:\Users\myname\Desktop\pysesame3Test.py", line 116, in main
    val = input("Action [lock/unlock/toggle/click]: ")
KeyboardInterrupt
^C

history enumeration fails because of unexpected parameter in CHSesame2History.

  • pysesame3 version:0.3.0
  • Python version:3.9
  • Operating System:Ubuntu 21.04

Description

Almost at the end of cloud.py, CHSesame2History is created using returned value from the API (**entry), but it fails when it contains a value with 'parameter' key, as it is not defined in CHSesame2History.__init__.

What I Did

I sImply followed the example usage at: https://pysesame3.readthedocs.io/en/latest/usage/
then got an error in device.historyEntries iteration.

[Bug]: Missing the version menu on the docs site

Description - 説明

Read the Docs is able to handle multiple doc versions. Although pysesame3 is developed with backward compatibility in mind, users should be able to intentionally specify and read the version of the document they are using.

Read the Docs will inject their own javascript and css at build time, and the version (flyout) menu should appear at the bottom right of the screen. The problem is, this script depends on jQuery, but jQuery was not loaded implicitly, so the menu could not be displayed.

8a7ca4b has solved the issue. We have to cherry-pick the commit and rebuild the docs we have published so far.

Expected Behavior - 期待する動作

No response

Pysesame3 version (pip show pysesame3)

N/A

Python version (python --version)

N/A

OS

N/A

How to Reproduce - 再現方法

Open the docs site.

Output - 出力された内容, 具体的な問題内容

readthedocs-doc-embed.js:1 Uncaught ReferenceError: $ is not defined
    at Object.get (readthedocs-doc-embed.js:1)
    at Object.init (readthedocs-doc-embed.js:1)
    at HTMLDocument.n (readthedocs-doc-embed.js:1)

[Request]: CLIENT_ID is no longer required for `CognitoAuth`

Describe the solution you'd like - リクエストの内容

The user is unable to issue a new CLIENT_ID. CLIENT_ID is no longer unique to each user.

To be honest, I personally thought that this was going to be a paid service. So I was very surprised to see this decision.

What's the problem this feature will solve? - 解決したい内容

No response

Additional context - その他

No response

SESAME bot の譲渡

  • pysesame3 version:
  • Python version:
  • Operating System:

Description

ここに書いて良いのかどうかわかりませんが、使ってないセサミbotがあります。開発のお役に立てるのならお譲りしたいと思います。

What I Did

Paste the command(s) you ran and the output.
If there was a crash, please include the traceback here.

[Bug]: `subscribeMechStatus` callback will not be executed

Description - 説明

Reported at sesame スマートロック Part.7:

439目のつけ所が名無しさん (ワッチョイ a56c-KuYY [180.144.208.216])2021/07/01(木) 23:03:59.36ID:DD5tr8/A0
Pysesame3のwebhookつうかMQTTの開閉通知だが、急に効かなくなる

Pysesame3が勝手にgetLoggerに吐いてたのを見たが、
ドア開閉すると、まずAWSIoTPythonSDKがProduced出す。
次にDispatching→Invoking Custom Event Callbackで、Callbackされるけど
たまにProducedで止まっちゃう。一度止まると再起動するまで止まったまま。
一日一回夜中にcronで再起動かけてるけど、夕方くらいからCallbackしなくなってくる。

再起動しなくても上手く動いてる人いるかね?

Thanks for the report! I could reproduce the issue.

Expected Behavior - 期待する動作

No problems even if you use it for a long time.

Pysesame3 version (pip show pysesame3)

0.3.1.dev70

Python version (python --version)

3.9.6

OS

Ubuntu 20.04.2 LTS

How to Reproduce - 再現方法

Run the example script and keep it running for a long time.

Output - 出力された内容, 具体的な問題内容

DEBUG:AWSIoTPythonSDK.core.protocol.internal.clients:Invoking custom event callback...
DEBUG:AWSIoTPythonSDK.core.protocol.internal.workers:Produced [message] event
DEBUG:AWSIoTPythonSDK.core.protocol.internal.workers:Dispatching [message] event
Exception in thread Thread-1:
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/threading.py", line 973, in _bootstrap_inner
    self.run()
  File "/usr/local/lib/python3.9/threading.py", line 910, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/local/lib/python3.9/site-packages/AWSIoTPythonSDK/core/protocol/internal/workers.py", line 147, in _dispatch
    self._dispatch_one()
  File "/usr/local/lib/python3.9/site-packages/AWSIoTPythonSDK/core/protocol/internal/workers.py", line 154, in _dispatch_one
    self._dispatch_methods[event_type](mid, data)
  File "/usr/local/lib/python3.9/site-packages/AWSIoTPythonSDK/core/protocol/internal/workers.py", line 237, in _dispatch_message
    message_callback(None, None, message)  # message_callback(client, userdata, message)
  File "/usr/local/lib/python3.9/site-packages/pysesame3/chsesame2.py", line 84, in _iot_shadow_callback
    status = CHSesame2MechStatus(rawdata=shadow["state"]["reported"]["mechst"])
KeyError: 'mechst'
DEBUG:AWSIoTPythonSDK.core.protocol.internal.workers:Produced [message] event
DEBUG:AWSIoTPythonSDK.core.protocol.internal.workers:Produced [message] event
DEBUG:AWSIoTPythonSDK.core.protocol.internal.workers:Produced [message] event
DEBUG:AWSIoTPythonSDK.core.protocol.internal.workers:Produced [message] event
DEBUG:AWSIoTPythonSDK.core.protocol.internal.workers:Produced [message] event
DEBUG:AWSIoTPythonSDK.core.protocol.internal.workers:Produced [message] event
DEBUG:AWSIoTPythonSDK.core.protocol.internal.workers:Produced [message] event
DEBUG:AWSIoTPythonSDK.core.protocol.internal.workers:Produced [message] event
DEBUG:AWSIoTPythonSDK.core.protocol.internal.workers:Produced [message] event
DEBUG:AWSIoTPythonSDK.core.protocol.internal.workers:Produced [message] event
DEBUG:AWSIoTPythonSDK.core.protocol.internal.workers:Produced [message] event
DEBUG:AWSIoTPythonSDK.core.protocol.internal.workers:Produced [message] event

[Question]: Why do you access 169.254.169.254 at CHSesame2 startup?

Describe the question you have - 質問の内容

at first "CognitoAuth" next "CHSesame2" use then accessing 169.254.169.254 and time out and error.

There is no problem in operation.
It's working fine.

Is this the correct behavior?

Additional context - その他

2021-07-03 17:58:32,506 - botocore.hooks - DEBUG - Changing event name from creating-client-class.iot-data to creating-client-class.iot-data-plane
2021-07-03 17:58:32,573 - botocore.hooks - DEBUG - Changing event name from before-call.apigateway to before-call.api-gateway
2021-07-03 17:58:32,601 - botocore.hooks - DEBUG - Changing event name from request-created.machinelearning.Predict to request-created.machine-learning.Predict
2021-07-03 17:58:32,670 - botocore.hooks - DEBUG - Changing event name from before-parameter-build.autoscaling.CreateLaunchConfiguration to before-parameter-build.auto-scaling.CreateLaunch$2021-07-03 17:58:32,674 - botocore.hooks - DEBUG - Changing event name from before-parameter-build.route53 to before-parameter-build.route-53
2021-07-03 17:58:32,691 - botocore.hooks - DEBUG - Changing event name from request-created.cloudsearchdomain.Search to request-created.cloudsearch-domain.Search
2021-07-03 17:58:32,716 - botocore.hooks - DEBUG - Changing event name from docs..autoscaling.CreateLaunchConfiguration.complete-section to docs..auto-scaling.CreateLaunchConfiguration.c$2021-07-03 17:58:32,825 - botocore.hooks - DEBUG - Changing event name from before-parameter-build.logs.CreateExportTask to before-parameter-build.cloudwatch-logs.CreateExportTask
2021-07-03 17:58:32,829 - botocore.hooks - DEBUG - Changing event name from docs..logs.CreateExportTask.complete-section to docs..cloudwatch-logs.CreateExportTask.complete-section
2021-07-03 17:58:32,832 - botocore.hooks - DEBUG - Changing event name from before-parameter-build.cloudsearchdomain.Search to before-parameter-build.cloudsearch-domain.Search
2021-07-03 17:58:32,836 - botocore.hooks - DEBUG - Changing event name from docs..cloudsearchdomain.Search.complete-section to docs..cloudsearch-domain.Search.complete-section
2021-07-03 17:58:32,899 - botocore.utils - DEBUG - IMDS ENDPOINT: http://169.254.169.254/
2021-07-03 17:58:32,927 - botocore.credentials - DEBUG - Looking for credentials via: env
2021-07-03 17:58:32,929 - botocore.credentials - DEBUG - Looking for credentials via: assume-role
2021-07-03 17:58:32,931 - botocore.credentials - DEBUG - Looking for credentials via: assume-role-with-web-identity
2021-07-03 17:58:32,933 - botocore.credentials - DEBUG - Looking for credentials via: sso
2021-07-03 17:58:32,934 - botocore.credentials - DEBUG - Looking for credentials via: shared-credentials-file
2021-07-03 17:58:32,937 - botocore.credentials - DEBUG - Looking for credentials via: custom-process
2021-07-03 17:58:32,938 - botocore.credentials - DEBUG - Looking for credentials via: config-file
2021-07-03 17:58:32,941 - botocore.credentials - DEBUG - Looking for credentials via: ec2-credentials-file
2021-07-03 17:58:32,942 - botocore.credentials - DEBUG - Looking for credentials via: boto-config
2021-07-03 17:58:32,945 - botocore.credentials - DEBUG - Looking for credentials via: container-role
2021-07-03 17:58:32,947 - botocore.credentials - DEBUG - Looking for credentials via: iam-role
2021-07-03 17:58:32,959 - urllib3.connectionpool - DEBUG - Starting new HTTP connection (1): 169.254.169.254:80
2021-07-03 17:58:33,982 - botocore.utils - DEBUG - Caught retryable HTTP exception while making metadata service request to http://169.254.169.254/latest/api/token: Connect timeout on endp$Traceback (most recent call last):
File "/usr/local/lib/python3.7/dist-packages/urllib3/connection.py", line 170, in _new_conn
(self._dns_host, self.port), self.timeout, **extra_kw
File "/usr/local/lib/python3.7/dist-packages/urllib3/util/connection.py", line 96, in create_connection
raise err
File "/usr/local/lib/python3.7/dist-packages/urllib3/util/connection.py", line 86, in create_connection
sock.connect(sa)
socket.timeout: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/usr/local/lib/python3.7/dist-packages/botocore/httpsession.py", line 332, in send
chunked=self._chunked(request.headers),
File "/usr/local/lib/python3.7/dist-packages/urllib3/connectionpool.py", line 756, in urlopen
method, url, error=e, _pool=self, _stacktrace=sys.exc_info()[2]
File "/usr/local/lib/python3.7/dist-packages/urllib3/util/retry.py", line 507, in increment
raise six.reraise(type(error), error, _stacktrace)
File "/usr/local/lib/python3.7/dist-packages/urllib3/packages/six.py", line 770, in reraise
raise value
File "/usr/local/lib/python3.7/dist-packages/urllib3/connectionpool.py", line 706, in urlopen
chunked=chunked,
File "/usr/local/lib/python3.7/dist-packages/urllib3/connectionpool.py", line 394, in _make_request
conn.request(method, url, **httplib_request_kw)
File "/usr/local/lib/python3.7/dist-packages/urllib3/connection.py", line 234, in request
super(HTTPConnection, self).request(method, url, body=body, headers=headers)
File "/usr/lib/python3.7/http/client.py", line 1260, in request
self._send_request(method, url, body, headers, encode_chunked)
File "/usr/local/lib/python3.7/dist-packages/botocore/awsrequest.py", line 93, in _send_request
method, url, body, headers, *args, **kwargs)
File "/usr/lib/python3.7/http/client.py", line 1306, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File "/usr/lib/python3.7/http/client.py", line 1255, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File "/usr/local/lib/python3.7/dist-packages/botocore/awsrequest.py", line 120, in _send_output
self.send(msg)
File "/usr/local/lib/python3.7/dist-packages/botocore/awsrequest.py", line 204, in send
return super(AWSConnection, self).send(str)
File "/usr/lib/python3.7/http/client.py", line 970, in send
self.connect()
File "/usr/local/lib/python3.7/dist-packages/urllib3/connection.py", line 200, in connect
conn = self._new_conn()
File "/usr/local/lib/python3.7/dist-packages/urllib3/connection.py", line 177, in _new_conn
% (self.host, self.timeout),
urllib3.exceptions.ConnectTimeoutError: (<botocore.awsrequest.AWSHTTPConnection object at 0xb56c5370>, 'Connection to 169.254.169.254 timed out. (connect timeout=1)')

During handling of the above exception, another exception occurred:

Pysesame3 version (pip show pysesame3)

0.4.0

Python version (python --version)

3.7.3

OS

Raspbian buster 10.10

[Bug]: Subscription to a device shadow cannot be continued after 24 hours

Description - 説明

Due to the websocket connection quota in AWS IoT, the websocket connection will be closed after 24 hours. The problem is the temporary credential from Cogninto has been out dated at that moment so we cannot reconnect.

The issue is reported at aws/aws-iot-device-sdk-python#224.

Expected Behavior - 期待する動作

No response

Pysesame3 version (pip show pysesame3)

0.4.0

Python version (python --version)

3.9.6

OS

Ubuntu 20.04.2 LTS

How to Reproduce - 再現方法

Run the example script and keep it running more than 24 hours.

Output - 出力された内容, 具体的な問題内容

DEBUG:AWSIoTPythonSDK.core.protocol.internal.clients:Invoking custom event callback...
[Errno 103] 0
DEBUG:AWSIoTPythonSDK.core.protocol.internal.workers:Produced [disconnect] event
DEBUG:AWSIoTPythonSDK.core.protocol.internal.workers:Dispatching [disconnect] event
DEBUG:AWSIoTPythonSDK.core.protocol.internal.clients:Invoking custom event callback...
DEBUG:AWSIoTPythonSDK.core.protocol.connection.cores:backOff: current backoff time is: 1 sec.
DEBUG:AWSIoTPythonSDK.core.protocol.connection.cores:IAM credentials from custom config.
DEBUG:AWSIoTPythonSDK.core.protocol.connection.cores:createWebsocketEndpoint: Websocket URL: wss://<snip>
Exception in thread Thread-2:
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/AWSIoTPythonSDK/core/protocol/connection/cores.py", line 428, in __init__
    self._handShake(hostAddress, portNumber)
  File "/usr/local/lib/python3.9/site-packages/AWSIoTPythonSDK/core/protocol/connection/cores.py", line 523, in _handShake
    raise wssHandShakeError()
AWSIoTPythonSDK.exception.AWSIoTExceptions.wssHandShakeError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/threading.py", line 973, in _bootstrap_inner
    self.run()
  File "/usr/local/lib/python3.9/threading.py", line 910, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/local/lib/python3.9/site-packages/AWSIoTPythonSDK/core/protocol/paho/client.py", line 2389, in _thread_main
    self.loop_forever()
  File "/usr/local/lib/python3.9/site-packages/AWSIoTPythonSDK/core/protocol/paho/client.py", line 1391, in loop_forever
    self.reconnect()
  File "/usr/local/lib/python3.9/site-packages/AWSIoTPythonSDK/core/protocol/paho/client.py", line 802, in reconnect
    self._ssl = SecuredWebSocketCore(rawSSL, self._host, self._port, self._AWSAccessKeyIDCustomConfig, self._AWSSecretAccessKeyCustomConfig, self._AWSSessionTokenCustomConfig)  # Override the _ssl socket
  File "/usr/local/lib/python3.9/site-packages/AWSIoTPythonSDK/core/protocol/connection/cores.py", line 432, in __init__
    raise ValueError("Websocket Handshake Error")
ValueError: Websocket Handshake Error

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.