Code Monkey home page Code Monkey logo

tendo's Introduction

tendo

Tendo is a python module that adds basic functionality that is not provided by Python. Read the documentation for more info.

Requirements and compatibility

  • python 3.8 or newer
  • tox for running tests

Related projects and packages

tendo's People

Contributors

dependabot[bot] avatar lemeryfertitta avatar liorp avatar nhooey avatar obradovic avatar pre-commit-ci[bot] avatar pylanglois avatar riverfr0zen avatar ssbarnea avatar symphorien avatar tirkarthi 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

tendo's Issues

tendo.colorer v0.2.4: global name 'e' is not defined

This was issued by an output from the 'tree' command, possibly because it outputs colorized text. The colorer's error was:

File "/usr/lib/python2.7/site-packages/tendo/colorer.py", line 125, in new
  except e:
     NameError: global name 'e' is not defined"

which should be instead:

File "/usr/lib/python2.7/site-packages/tendo/colorer.py", line 127, in new
  raise e
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 50: ordinal not in range(128)"

Fixed by this patch:

diff --git a/usr/lib/python2.7/site-packages/tendo/colorer.py.orig b/usr/lib/python2.7/site-packages/tendo/colorer.py
index 91f53c4..13a2dcb 100644
--- a/usr/lib/python2.7/site-packages/tendo/colorer.py.orig
+++ b/usr/lib/python2.7/site-packages/tendo/colorer.py
@@ -122,7 +122,7 @@ if (hasattr(sys.stderr, "isatty") and sys.stderr.isatty()) or \
                 color = '\x1b[0m'  # normal
             try:
                 new_args[1].msg = color + unicode(new_args[1].msg) + '\x1b[0m'  # normal
-            except e:
+            except Exception as e:
                 print type(new_args[1].msg)
                 raise e
             # print "after"

Window flashing when packaged with PyInstaller.

I put the example code (from singleton module) at the top of my script and it worked as expected. But when I converted it to .exe with PyInstaller the .exe also works fine and prevents multiple instances of my program, except there are some windows flashing before the program starts.
I guess this is the multiprocessing issue as always it flashes new windows in .exe files. So I removed the multiprocessing imports and usages from singleton.py and the window flashing was gone.

I think someone should prevent unitTests from running multiprocessing in .exe mode.

Redirect stderr in tee::system2

I need to run the system2 function together with certbot on windows and I have command like this on GNU/Linux:

sudo certbot certonly --manual --expand --manual-public-ip-logging-ok \
     --preferred-challenges http -n \
     -d <LIST OF COMMA SEPARATED DOMAINS AND SUBDOMAINS>\
     --manual-auth-hook ./cert.py --agree-tos --email <EMAIL ADRESS> 2>&1 | tee $output

I'm using 2>&1 because certbot print some output to stderr but on windows I can use command with 2>&1.

Error on python 3.4

Using

from tendo import singleton
singleton.SingleInstance() # will sys.exit(-1) if other instance is running

We get

Exception ignored in: <bound method SingleInstance.__del__ of <tendo.singleton.SingleInstance object at 0x7faf9af8bf60>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.4/dist-packages/tendo/singleton.py", line 63, in __del__
  File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
  File "<frozen importlib._bootstrap>", line 2222, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 2155, in _find_spec
TypeError: 'NoneType' object is not iterable
2.26user 0.51system 1:31.64elapsed 3%CPU (0avgtext+0avgdata 27284maxresident)k
18944inputs+936outputs (61major+9800minor)pagefaults 0swaps

Proposed fix:

Remove these 2 lines:

import sys
import os

from

  def __del__(self):
        import sys
        import os
        if not self.initialized:
            return
        try:
            if sys.platform == 'win32':
                if hasattr(self, 'fd'):
                    os.close(self.fd)
                    os.unlink(self.lockfile)
            else:
                import fcntl
                fcntl.lockf(self.fp, fcntl.LOCK_UN)
                # os.close(self.fp)
                if os.path.isfile(self.lockfile):
                    os.unlink(self.lockfile)
        except Exception as e:
            if logger:
                logger.warning(e)
            else:
                print("Unloggable error: %s" % e)
            sys.exit(-1)

New release?

Hello,

It would be very cool to have a new release for the SingleInstance(lockfile) new feature :)

SingleInstance prints log messages twice

While testing the script that uses SingleInstance, I noticed that log messagaes from SingleInstance are printed twice. I think this behavior relates to the StreamHandler added at line

logger.addHandler(logging.StreamHandler())

I would suggest moving this line into the 'if name == "main":', so that the StreamHandler will be created and used only within the unit tests as I think it was expected.

Exception ImportError: 'No module named sys' in <bound method SingleInstance.__del__...

When I make a Python package with setuptools, then install it in a virtualenv and run it, I get this error:

Exception ImportError: 'No module named sys' in <bound method SingleInstance.__del__ of 
<tendo.singleton.SingleInstance instance at 0x108618488>> ignored

Here are the project files:

#!/usr/bin/env python
# setup.py

from setuptools import setup

setup(
    name='run-ansible-pull',
    version='1.0',
    description='Runs Ansible Pull and reports to Sensu',
    author='Author',
    author_email='[email protected]',
    packages=['singleton_test'],
    entry_points = {
        'console_scripts': [
            'singleton-test = singleton_test:main',
        ],
    },
    install_requires=[
        'tendo==0.2.8',
    ],
 )
# singleton_test/__init__.py
from tendo import singleton

me = singleton.SingleInstance()

def main():
    print "Hello, World!"

And here is the full transcript:

$ virtualenv .venv && source .venv/bin/activate
$ python setup.py install && singleton-test
running install
running bdist_egg
running egg_info
creating run_ansible_pull.egg-info
writing requirements to run_ansible_pull.egg-info/requires.txt
writing run_ansible_pull.egg-info/PKG-INFO
writing top-level names to run_ansible_pull.egg-info/top_level.txt
writing dependency_links to run_ansible_pull.egg-info/dependency_links.txt
writing entry points to run_ansible_pull.egg-info/entry_points.txt
writing manifest file 'run_ansible_pull.egg-info/SOURCES.txt'
reading manifest file 'run_ansible_pull.egg-info/SOURCES.txt'
writing manifest file 'run_ansible_pull.egg-info/SOURCES.txt'
installing library code to build/bdist.macosx-10.10-x86_64/egg
running install_lib
running build_py
creating build
creating build/lib
creating build/lib/singleton_test
copying singleton_test/__init__.py -> build/lib/singleton_test
creating build/bdist.macosx-10.10-x86_64
creating build/bdist.macosx-10.10-x86_64/egg
creating build/bdist.macosx-10.10-x86_64/egg/singleton_test
copying build/lib/singleton_test/__init__.py -> build/bdist.macosx-10.10-x86_64/egg/singleton_test
byte-compiling build/bdist.macosx-10.10-x86_64/egg/singleton_test/__init__.py to __init__.pyc
creating build/bdist.macosx-10.10-x86_64/egg/EGG-INFO
copying run_ansible_pull.egg-info/PKG-INFO -> build/bdist.macosx-10.10-x86_64/egg/EGG-INFO
copying run_ansible_pull.egg-info/SOURCES.txt -> build/bdist.macosx-10.10-x86_64/egg/EGG-INFO
copying run_ansible_pull.egg-info/dependency_links.txt -> build/bdist.macosx-10.10-x86_64/egg/EGG-INFO
copying run_ansible_pull.egg-info/entry_points.txt -> build/bdist.macosx-10.10-x86_64/egg/EGG-INFO
copying run_ansible_pull.egg-info/requires.txt -> build/bdist.macosx-10.10-x86_64/egg/EGG-INFO
copying run_ansible_pull.egg-info/top_level.txt -> build/bdist.macosx-10.10-x86_64/egg/EGG-INFO
zip_safe flag not set; analyzing archive contents...
creating dist
creating 'dist/run_ansible_pull-1.0-py2.7.egg' and adding 'build/bdist.macosx-10.10-x86_64/egg' to it
removing 'build/bdist.macosx-10.10-x86_64/egg' (and everything under it)
Processing run_ansible_pull-1.0-py2.7.egg
Removing /private/tmp/singleton-test/.venv/lib/python2.7/site-packages/run_ansible_pull-1.0-py2.7.egg
Copying run_ansible_pull-1.0-py2.7.egg to /private/tmp/singleton-test/.venv/lib/python2.7/site-packages
run-ansible-pull 1.0 is already the active version in easy-install.pth
Installing singleton-test script to /private/tmp/singleton-test/.venv/bin

Installed /private/tmp/singleton-test/.venv/lib/python2.7/site-packages/run_ansible_pull-1.0-py2.7.egg
Processing dependencies for run-ansible-pull==1.0
Searching for tendo==0.2.8
Best match: tendo 0.2.8
Processing tendo-0.2.8-py2.7.egg
tendo 0.2.8 is already the active version in easy-install.pth

Using /private/tmp/singleton-test/.venv/lib/python2.7/site-packages/tendo-0.2.8-py2.7.egg
Finished processing dependencies for run-ansible-pull==1.0
Hello, World!
Exception ImportError: 'No module named sys' in <bound method SingleInstance.__del__ of <tendo.singleton.SingleInstance instance at 0x108618488>> ignored

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Python 3.6.6, ModuleNotFoundError: import of os halted; None in sys.modules

Hi,

I found an example "single instance of program" on https://stackoverflow.com/a/1265445
I ran the script and got an error.

python3 test.py

#
import sys
from tendo import singleton

try:
    me = singleton.SingleInstance()
except:
    sys.exit()

Exception ignored in: <bound method SingleInstance.del of <tendo.singleton.SingleInstance object at 0x7f4cb68f3f28>>
Traceback (most recent call last):
File "/usr/local/lib/python3.6/dist-packages/tendo/singleton.py", line 70, in del
ModuleNotFoundError: import of os halted; None in sys.modules

Ubuntu 18.04.1 LTS, Python 3.6.6

v0.3 checklist

  • require >=py38 and update metadata
  • remove six
  • convert readme to markdown
  • activate pylint hook
  • activate mypy hook

BlockingIOError: [Errno 35] Resource temporarily unavailable

Hello,
I am trying to run a Flask App in which tendo was used, I have installed tendo successfully but when I try to run the app I get the error below:

  • Environment: production
    WARNING: This is a development server. Do not use it in a production deployment.
    Use a production WSGI server instead.
  • Debug mode: on
  • Running on http://0.0.0.0:8080/ (Press CTRL+C to quit)
  • Restarting with stat
    Another instance is already running, quitting.
    Traceback (most recent call last):
    File "/Users/macbook/Desktop/securityPI/pi/lib/python3.7/site-packages/tendo/singleton.py", line 66, in init
    fcntl.lockf(self.fp, fcntl.LOCK_EX | fcntl.LOCK_NB)
    BlockingIOError: [Errno 35] Resource temporarily unavailable

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/Users/macbook/Desktop/securityPI/prgms/webPrgm.py", line 155, in
me = singleton.SingleInstance()
File "/Users/macbook/Desktop/securityPI/pi/lib/python3.7/site-packages/tendo/singleton.py", line 70, in init
raise SingleInstanceException()
tendo.singleton.SingleInstanceException

I am using a Mac running macOS Catalina 10.15 and python3.7

buildroot integration problem

I've added tendo to buildroot, but I get an installation error, and I'm not sure whether or not the problem lies with the tendo installer or elsewhere.

Buildroot gives me back (I think from tendo's setup.py) "distutils.errors.DistutilsError: Could not find suitable distribution fro Requirement.parse('six').

Initially I thought that perhaps the "six" package is a dependency, but after adding this to buildroot, I still get the error message. Even tried installing it locally, but no luck.

Race condition in singleton.py

Hi,
the singleton.py code contains a race condition:

fcntl.lockf(self.fp, fcntl.LOCK_UN)
if os.path.isfile(self.lockfile):
    os.unlink(self.lockfile)

So the lock is released, then the file is deleted, but at that moment the file may already belong to another process.

I tried different methods of unlocking/deleting the file, but they all result in some race condition.

The only reliable way I found is to keep the lock file, and not delete it.

Regards
Dirk

Testcode test.py:

import threading 
import os
import time

def fun():
    os.system("python test2.py")
    
for x in range(0,10):
    time.sleep(0.2)
    for i in range(0,200):
        t = threading.Thread(target=fun)
        t.start()

Singelton protected code test2.py

import random
from singleton import Singleton
     
si = Singelton("test",20)

id = random.randint(1,100000)

for i in range(0,50):
    f=open("/tmp/testlock","a" )    
    f.write("%s\n" % id)
    f.flush
    f.close()

Short version of singleton.py with retry to faster demonstrate the issue , singleton.py

import sys
import os
import time
import fcntl

class Singleton():
    def __init__(self,name,timeout):
        self.locked = False
        self.lockfile = "/tmp/lock_%s" % name
        self.fp = open(self.lockfile , 'w')
        while timeout > 0:
            try:
                fcntl.lockf(self.fp, fcntl.LOCK_EX | fcntl.LOCK_NB)
                self.locked = True
                break
            except:
                time.sleep(0.2)
                timeout = timeout - 0.2
            
        if self.locked == False:
            raise Exception("Could not aquire lock %s within %s seconds" % (name,timeout))    
            
    def __del__(self):
        if self.locked == True:
            import os
            # all of these fail:
            #os.unlink(self.lockfile)  
            #os.remove(self.lockfile)
            #os.system("rm %s" % self.lockfile)
            import fcntl  
            fcntl.lockf(self.fp, fcntl.LOCK_UN) # the reliable way, dont  delete ! 
            #if os.path.isfile(self.lockfile):
            #    os.unlink(self.lockfile)

check results:

"cat /tmp/testlock |uniq -c|grep -v 50" should show no lines if test2.py was actually run as a single instance.

quiet error message in singleton.py

is it possible to quiet the error message for singleton.py in a python script without editing the source? just so I can still get error messages from a cronjob if required

versioning

Windows 7
Python 3.6
tendo 0.2.12
Pyinstaller 3.4.dev0+b31794cf1

Hey all,

after updating tendo I created an .exe with Pyinstaller.

Trying to run my .exe gives the following error-message:

[WARNING] stderr: Traceback (most recent call last):
[WARNING] stderr: File "site-packages\pbr\version.py", line 442, in get_version_from_pkg_resources
[WARNING] stderr: File "site-packages\pkg_resources_init
.py", line 344, in get_provider
[WARNING] stderr: File "site-packages\pkg_resources_init_.py", line 892, in require
[WARNING] stderr: File "site-packages\pkg_resources_init_.py", line 778, in resolve
[WARNING] stderr: pkg_resources.DistributionNotFound: The 'tendo' distribution was not found and is required by the application
[WARNING] stderr:
[WARNING] stderr: During handling of the above exception, another exception occurred:
[WARNING] stderr:
[WARNING] stderr: Traceback (most recent call last):
[WARNING] stderr: File "to_exe\main.py", line 79, in
[WARNING] stderr: from tendo import singleton
[WARNING] stderr: File "", line 971, in _find_and_load
[WARNING] stderr: File "", line 955, in _find_and_load_unlocked
[WARNING] stderr: File "", line 665, in load_unlocked
[WARNING] stderr: File "c:\users\mirk\appdata\local\programs\python\python36\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 628, in exec_module
[WARNING] stderr: exec(bytecode, module.dict)
[WARNING] stderr: File "site-packages\tendo_init
.py", line 10, in
[WARNING] stderr: File "site-packages\pbr\version.py", line 462, in semantic_version
[WARNING] stderr: File "site-packages\pbr\version.py", line 449, in _get_version_from_pkg_resources
[WARNING] stderr: File "site-packages\pbr\packaging.py", line 816, in get_version
[WARNING] stderr: Exception: Versioning for this project requires either an sdist tarball, or access to an upstream git repository. It's also possible that there is a mismatch between the package name in setup.cfg and the argument given to pbr.version.VersionInfo. Project name tendo was given, but was not able to be found.

New version on pypi?

Hey folks,

I was trying to use SingleInstance and thought 'this would be great to use as a contextmanager` ... was about to PR that, then saw the latest on main has it.

Can there be a new release to pypi that includes those changes? Thanks!

BlockingIOError when running on Python 3.6

Hi,

When attempting to implement tendo to make a simple Python script a singleton, the following blocking error occurs. Not sure of the cause, any help very welcomed.

  File "/usr/local/lib/python3.6/site-packages/tendo/singleton.py", line 64, in __init__
    fcntl.lockf(self.fp, fcntl.LOCK_EX | fcntl.LOCK_NB)
BlockingIOError: [Errno 11] Resource temporarily unavailable

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/fs_api_cron/cron.py", line 10, in <module>
    me = singleton.SingleInstance() # will sys.exit(-1) if other instance is running
  File "/usr/local/lib/python3.6/site-packages/tendo/singleton.py", line 68, in __init__
    raise SingleInstanceException()
tendo.singleton.SingleInstanceException```


'NoneType' has no attribute exit

try:
    me = singleton.SingleInstance()
except tendo.singleton.SingleInstanceException:
    sys.exit(0)

For some reason, this code produces an error when exiting the program.

Exception ignored in: <function SingleInstance.__del__ at 0x00000224E7351510>
Traceback (most recent call last):
  File "C:\Users\sarah\PycharmProjects\stella_manager_gui\venv\lib\site-packages\tendo\singleton.py", line 91, in __del__
AttributeError: 'NoneType' object has no attribute 'exit'
Unloggable error: 'NoneType' object has no attribute 'platform'

I'm not sure how this happens, looking at the source it seems like sys is somehow a NoneType. If it helps, I'm using pyqt5 with qasync together with tendo on Windows 11. This error produces when I close it with the X button on pyqt instead of keyboard interrupt.

Compatibility with Python 3.7?

The official documentation states that Tendo is compatible with Python 2.7 - 3.6. Are there any known issues using it with Python 3.7?

tee::system2 broken if echo empty line

Executing this script display no output:

#!/usr/bin/env python
print '''
Waiting for verification...
Cleaning up challenges
IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/www.domektkaczki.pl/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/www.domektkaczki.pl/privkey.pem
   Your cert will expire on 2018-06-08. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - If you like Certbot, please consider supporting our work by:
'''

because first line is empty.

NameError: name 'SingleInstance' is not defined

Installed tendo using pip install tendo. Package installed successfully.

>>> import tendo
>>> me = SingleInstance()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'SingleInstance' is not defined
>>> dir(tendo)
['VersionInfo', '__all__', '__author__', '__builtins__', '__cached__', '__copyright__', '__doc__', '__email__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '__status__', '__version__', '_v', 'absolute_import', 'sys', 'version_info']
>>> tendo.__version__
'0.2.15'
>>>

singleton.py misdesign

Hello

I've just made the same issue to one project (PyBitMessage) that using your idea. The thing I want to talk aboue is file singleton.py with singleinstance class especially.

The design of this class is incorrect because of two things as below:

  1. This class has to ensure that lock file is being deleted when app is closed (as far as I understand it). But it won't work. Well, it would, probably, but as it's stated in python doc, it's not guaranteed that __del__ method will ever called. So it can easily lead to situation when lock file remains in system after app shutdown.
  2. There is try..except block in __del__ method which would not work ever because, as stated in python doc, any exception that occurs while running __del__ method will be ignored and just printed a warning in stderr instead.

Thus, I'd suggest to either make some other method like release() that should be called directly or redesign this class\idea.

Thanks,
Constantine

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Exception in SingleInstance.__del__

Perhaps harmless.

mySystem:myappdir myuser$ nosetests-3.4
SingleInstance lockfile: /var/folders/8m/6dsl12z52g7b_9f4kh1yb0s40000gn/T/-usr-local-bin-nosetests-3-.lock
.
----------------------------------------------------------------------
Ran 1 test in 0.008s

OK
Exception ignored in: <bound method SingleInstance.__del__ of <tendo.singleton.SingleInstance object at 0x104af9c18>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.5/site-packages/tendo/singleton.py", line 63, in __del__
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 954, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 887, in _find_spec
TypeError: 'NoneType' object is not iterable
mySystem:myappdir myuser$ 

Or when commenting out the two imports suggested by @efairon in #12 :

mySystem:myappdir myuser$ nosetests-3.4
SingleInstance lockfile: /var/folders/8m/6dsl12z52g7b_9f4kh1yb0s40000gn/T/-usr-local-bin-nosetests-3-.lock
.
----------------------------------------------------------------------
Ran 1 test in 0.009s

OK
'NoneType' object is not iterable
Exception ignored in: <bound method SingleInstance.__del__ of <tendo.singleton.SingleInstance object at 0x102f7cbe0>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.5/site-packages/tendo/singleton.py", line 83, in __del__
SystemExit: -1
mySystem:myappdir myuser$ 

Running my app seems to work, with tendo keeping other instances from starting, but that ignored exception shows up again when I exit using ctrl-c

mySystem:myappdir myuser$ python3 myappdir/myapp.py
SingleInstance lockfile: /var/folders/8m/6dsl12z52g7b_9f4kh1yb0s40000gn/T/-Users-myuser-factory-Py-myapp-myapp-myapp-.lock
please Control-C to exit myapp
RUNNING myapp
^CCLOSING myapp
Exception ignored in: <bound method SingleInstance.__del__ of <tendo.singleton.SingleInstance object at 0x10ced8128>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.5/site-packages/tendo/singleton.py", line 63, in __del__
ImportError: import of 'sys' halted; None in sys.modules
mySystem:myappdir myuser$ 

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

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.