Giter Club home page Giter Club logo

usdmanager's Introduction

USD Manager

Documentation Status License

Website

USD Manager is an open-source, python-based Qt tool for browsing, managing, and editing text-based files like USD, combining the best features from your favorite web browser and text editor into one application, with hooks to deeply integrate with other pipeline tools. It is developed and maintained by DreamWorks Animation for use with USD and other hierarchical, text-based workflows, primarily geared towards feature film production. While originally designed around PyQt4, USD Manager uses the Qt.py compatibility library to allow working with PyQt4, PyQt5, PySide, or PySide2 for Qt bindings.

USD Manager screenshot

Development Repository

This GitHub repository hosts the trunk of the USD Manager development. This implies that it is the newest public version with the latest features and bug fixes. However, it also means that it has not undergone a lot of testing and is generally less stable than the production releases.

License

USD Manager is released under the Apache License, Version 2.0, which is a free, open-source, and detailed software license developed and maintained by the Apache Software Foundation.

Contents

Installing USD Manager

Requirements

usdmanager requires Python 2 (for Python 3, see the python3 branch), Qt.py and setuptools (can be handled by setup.py), and one of Qt.py's four supported Qt bindings, which will need to be installed separately.

Additionally, an installation of USD itself is recommended but not required for all use cases. Installing USD provides access to file path resolvers, non-ASCII USD formats, and plug-ins like usdview. All USD versions should be supported.

Install with setup.py

For a site-wide install, try:

python setup.py install

For a personal install, try:

python setup.py install --user

Studios with significant python codebases or non-trivial installs may need to customize setup.py.

Your PATH and PYTHONPATH will need to be set appropriately to launch usdmanager, and this will depend on your setup.py install settings.

For more OS-specific installation notes, known issues, and common problems, see Installing USD Manager.

Using USD Manager

Once you have installed usdmanager, you can launch from the command line:

usdmanager

You can also specify one or more files to open directly:

usdmanager shot.usd

For more documentation on usage, see Using USD Manager

Keyboard shortcuts

For a full list of keyboard shortcuts, see Keyboard Shortcuts

Development / Customization

Most customization of the app is through the usdmanager/config.json file.

For a full list of all customization options, see Development / Customization

Contributing

Developers who wish to contribute code to be considered for inclusion in the USD Manager distribution must first complete the Contributor License Agreement and submit it to DreamWorks (directions in the CLA). We prefer code submissions in the form of pull requests to this repository.

Every commit must be signed off. That is, every commit log message must include a "Signed-off-by" line (generated, for example, with "git commit --signoff"), indicating that the committer wrote the code and has the right to release it under the Apache 2.0 license. See http://developercertificate.org/ for more information on this requirement.

  1. Fork the repository on GitHub
  2. Clone it locally
  3. Build a local copy
python setup.py install --user
pip install -r docs/requirements.txt
  1. Write code, following the style guide.
  2. Test it
  3. Update any manual documentation pages (like this one)
  4. Test that the documentation builds without errors with:
sphinx-build -b html docs/ docs/_build
  1. Commit changes to the dev branch, signing off on them per the code signing instructions, then push the changes to your fork on GitHub
  2. Make a pull request targeting the dev branch

Pull requests should be rebased on the latest dev commit and squashed to as few logical commits as possible, preferably one. Each commit should pass tests without requiring further commits.

usdmanager's People

Contributors

garyo avatar jonjondev avatar mds-dwa 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  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

usdmanager's Issues

Python 3 comptibility going forwards

Hi @mds-dwa, thank you for looking over our PRs - we've been hoping to align our internal changes with the upstream repository.

Internally we keep everything Py2/3 compatible, which at the moment looks like v0.12.1 with a handful of code compatibility modifications alongside Qt v5.12.5. Looking at the python3 branch, I was wondering if there was an intention to retain that compatibility going forward? It would also definitely be great at some point to get the project onto Qt v5.15.x, in step with the VFX Reference Platform.

Thanks for looking after this project, it's an incredibly useful tool!

I have trouble in launching usdmanger caused by pyside2uic

Hello, I am ARKit engineer with usd file format.
I try to use usdmanager the purpose of project is really good.
So, I installed Qt and pyside2 in python 2.7, mac os env.
I saw error about pyside2uic error.
How can I install pyside2uic?

I saw issue about pyside2uic, it doesn't help my problem.

Traceback (most recent call last):
  File "/Users/younghokwon/usdmanager/venv/bin/usdmanager", line 4, in <module>
    __import__('pkg_resources').run_script('usdmanager==0.10.0', 'usdmanager')
  File "/Users/younghokwon/usdmanager/venv/lib/python2.7/site-packages/pkg_resources/__init__.py", line 666, in run_script
    self.require(requires)[0].run_script(script_name, ns)
  File "/Users/younghokwon/usdmanager/venv/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1462, in run_script
    exec(code, namespace, namespace)
  File "/Users/younghokwon/usdmanager/venv/lib/python2.7/site-packages/usdmanager-0.10.0-py2.7.egg/EGG-INFO/scripts/usdmanager", line 17, in <module>
    from usdmanager import run
  File "/Users/younghokwon/usdmanager/venv/lib/python2.7/site-packages/usdmanager-0.10.0-py2.7.egg/usdmanager/__init__.py", line 74, in <module>
    from . import highlighter, images_rc, utils
  File "/Users/younghokwon/usdmanager/venv/lib/python2.7/site-packages/usdmanager-0.10.0-py2.7.egg/usdmanager/highlighter.py", line 26, in <module>
    from .utils import findModules
  File "/Users/younghokwon/usdmanager/venv/lib/python2.7/site-packages/usdmanager-0.10.0-py2.7.egg/usdmanager/utils.py", line 34, in <module>
    import pyside2uic as uic
ImportError: No module named pyside2uic

WINDOWS 10: subProcess error when dynamically converting crate to ascii

Related to issue #8
When calling usdcat from utils.usdcat with a path that has a space in it, the call errors out with message about number of arguments (seems familiar...)

All works as expected if I wrap the construction of the cmd assembly (line 171ish of utils) in a similar method to fix for__init__ launchUsdView in issue #8
ie
if os.name == 'nt':
cmd = 'usdcat "{}" -o "{}"'.format(inputFile, outputFile)
else:
cmd = "usdcat {} -o {}".format(inputFile, outputFile)

execfile issue in setup.py

When running the installation "python setup.py install" python is not recognizing the execfile command... instead I had implemented exec(open().read()) and it worked with that... Can you please update the issue

Unable to install on mac - ImportError: No module named pyside2uic - Python 3?

andytriboletti@andys-mbp ~ % usdmanager
Traceback (most recent call last):
File "/usr/local/bin/usdmanager", line 4, in
import('pkg_resources').run_script('usdmanager==0.9.0', 'usdmanager')
File "/usr/local/lib/python2.7/site-packages/pkg_resources/init.py", line 666, in run_script
self.require(requires)[0].run_script(script_name, ns)
File "/usr/local/lib/python2.7/site-packages/pkg_resources/init.py", line 1462, in run_script
exec(code, namespace, namespace)
File "/usr/local/lib/python2.7/site-packages/usdmanager-0.9.0-py2.7.egg/EGG-INFO/scripts/usdmanager", line 17, in
from usdmanager import run
File "/usr/local/lib/python2.7/site-packages/usdmanager-0.9.0-py2.7.egg/usdmanager/init.py", line 74, in
from . import highlighter, images_rc, utils
File "/usr/local/lib/python2.7/site-packages/usdmanager-0.9.0-py2.7.egg/usdmanager/highlighter.py", line 26, in
from .utils import findModules
File "/usr/local/lib/python2.7/site-packages/usdmanager-0.9.0-py2.7.egg/usdmanager/utils.py", line 34, in
import pyside2uic as uic
ImportError: No module named pyside2uic

I tried installing macports, and Pyside, Pyside2, etc. Already had and tried brew.

(Windows) TypeError: 'PySide2.QtCore.qRegisterResourceData' called with wrong argument types

Seeing the following error when trying to run USD Manager on Win11 with Python 3.7.4 (Qt.py 1.3.8, PySide2 5.14.1, setuptools 40.8.0):

c:\Python374\Scripts>python c:\Python374\Scripts\usdmanager
WARNING:usdmanager.utils:Unable to create AssetResolver - Asset links may not work correctly
Traceback (most recent call last):
  File "c:\Python374\Scripts\usdmanager", line 4, in <module>
    __import__('pkg_resources').run_script('usdmanager==0.15.0', 'usdmanager')
  File "c:\python374\lib\site-packages\pkg_resources\__init__.py", line 666, in run_script
    self.require(requires)[0].run_script(script_name, ns)
  File "c:\python374\lib\site-packages\pkg_resources\__init__.py", line 1446, in run_script
    exec(code, namespace, namespace)
  File "c:\python374\lib\site-packages\usdmanager-0.15.0-py3.7.egg\EGG-INFO\scripts\usdmanager", line 17, in <module>
    from usdmanager import run
  File "c:\python374\lib\site-packages\usdmanager-0.15.0-py3.7.egg\usdmanager\__init__.py", line 78, in <module>
    from . import highlighter, images_rc, utils
  File "c:\python374\lib\site-packages\usdmanager-0.15.0-py3.7.egg\usdmanager\images_rc.py", line 708, in <module>
    qInitResources()
  File "c:\python374\lib\site-packages\usdmanager-0.15.0-py3.7.egg\usdmanager\images_rc.py", line 703, in qInitResources
    QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)
TypeError: 'PySide2.QtCore.qRegisterResourceData' called with wrong argument types:
  PySide2.QtCore.qRegisterResourceData(int, str, str, str)
Supported signatures:
  PySide2.QtCore.qRegisterResourceData(int, bytes, bytes, bytes)

This file (usdmanager\images_rc.py) is auto generated: # Created by: The Resource Compiler for PyQt (Qt v4.8.5)

I'm working around it by modifying qt_resource_struct, qt_resource_name, and qt_resource_data to be byte arrays instead of strings in the installed images_rc.py file (c:\python374\lib\site-packages\usdmanager-0.15.0-py3.7.egg\usdmanager\images_rc.py).
e.g. changing

qt_resource_struct = "\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
...
\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x01\x00\x00\x19\x1e\
"

to

qt_resource_struct = b"\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
...
\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x01\x00\x00\x19\x1e\
"

errors spawning processes in windows when path names contain spaces

When a usd file has spaces in it's absolute path (eg C:\temp\A Ball\Ball.usd) is open in usdmanager and then an attempt is made to use "open with usdview" in the commands menu a console error is produced about unrecognized arguments, as windows splits the path name at the spaces.

The issue seems to happen at around line 2471 of the init.py file in the launchUsdView proc.
getCurrentPath returns a string with spaces and when that is fed into the cmd, windows vomits it up.

A quick test of wrapping the result of getCurrentPath with double quotes results in windows happily opening the correct file in usdview.

SUG: Point usdview at usdmanager

@superfunc over here also thought it would be nice. That is, have a widget in usdview that opens the scene in usdmanager.

Now, getting fancy, send updates to usdview via an update message and maybe a temp file to simulate in-buffer preview without saving a file.

Of course, this is really a sug against usd to start.

WINDOWS 10: errors with utils.generateTemporaryUsdFile when trying to open binary usd

As above. Trying to "double click open" a binary usd file in usdmanager left hand panel produces error about unable to rename the temp file to usd, It does create the usd as 0KB file but can't write to it.

Sorry for hacking away again Mark, but I noticed that, when using the same logic during the saveAs process, around line 992 in init.py, the temp file is closed before calling utils.usdcat

I moved the os.close in utils.py from the finally: (around line 154 ish) to line 150, just after the tempfile call and before the try: usdcat call.

Seems to work.

Being a noob, I don't really understand the finally: thing, so I just commented out the existing os.close and stuck in a print statement of the tmpFileName for now...so that it didn't give me a syntrax error.

Hope this is useful.

cheer mate
B

It works!

Hi guys! This is running over at WDAS, albeit in a kind of sandbox mode while WDAS figures out how to make its show environments play nice.

Isn't it refreshing to get a bug report saying there's no bug? Please close as "Won't Fix"

-r

Trouble installing on windows

Hi there,

I am trying to run through getting usdmanager up and running on windows 10. I have gone through the steps here.
https://github.com/dreamworksanimation/usdmanager/blob/master/docs/installation.md#windows

All seemed to go well to the last point of launching the app (step 7), ie no errors on setup etc. When I try and run the command, I get the following error.

E:\gitHub\usdmanager\usdmanager>python C:\Python27\Scripts\usdmanager Traceback (most recent call last): File "C:\Python27\Scripts\usdmanager", line 4, in <module> __import__('pkg_resources').run_script('usdmanager==0.10.0', 'usdmanager') File "C:\Python27\lib\site-packages\pkg_resources\__init__.py", line 666, in run_script self.require(requires)[0].run_script(script_name, ns) File "C:\Python27\lib\site-packages\pkg_resources\__init__.py", line 1453, in run_script .format(**locals()), pkg_resources.ResolutionError: Script 'scripts/usdmanager' not found in metadata at 'e:\\github\\usdmanager\\usdmanager\\usdmanager.egg-info'

As a side note, I have USD 20.05 installed and working.

Install issue OSX

python setup.py install fails for me with:

ERROR: Sphinx requires at least Python 3.5 to run. Traceback (most recent call last): File "setup.py", line 75, in <module> dependency_links=[], File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/core.py", line 111, in setup _setup_distribution = dist = klass(attrs) File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/dist.py", line 268, in __init__ self.fetch_build_eggs(attrs['setup_requires']) File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/dist.py", line 313, in fetch_build_eggs replace_conflicting=True, File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 843, in resolve dist = best[req.key] = env.best_match(req, ws, installer) File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 1088, in best_match return self.obtain(req, installer) File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 1100, in obtain return installer(requirement) File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/dist.py", line 380, in fetch_build_egg return cmd.easy_install(req) File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/easy_install.py", line 638, in easy_install return self.install_item(spec, dist.location, tmpdir, deps) File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/easy_install.py", line 668, in install_item dists = self.install_eggs(spec, download, tmpdir) File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/easy_install.py", line 851, in install_eggs return self.build_and_install(setup_script, setup_base) File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/easy_install.py", line 1079, in build_and_install self.run_setup(setup_script, setup_base, args) File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/easy_install.py", line 1067, in run_setup raise DistutilsError("Setup script exited with %s" % (v.args[0],)) distutils.errors.DistutilsError: Setup script exited with 1

variable PXR_AR_DEFAULT_SEARCH_PATH not taken into account.

When loading a USD file that has paths relative to the PXR_AR_DEFAULT_SEARCH_PATH variable, the USDManager cannot find the files.

I have set my variable to point to a central location where we have USD files, and then loaded a USD file elsewhere that contains references to USD files in the central location by relative path. The paths appear in red in UsdManager and when I hover the mouse over it, the tooltip says "File not found".

The PXR_AR_DEFAULT_SEARCH_PATH is useful to set a location like the project folder and all files within that project don't need to refer to the project location explicitly. USD files befome more portable this way.

python3 error

Open app after install the python3 branch

home/rf/.local/bin/usdmanager:4: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
  __import__('pkg_resources').run_script('usdmanager==0.15.0', 'usdmanager')
WARNING:usdmanager.utils:Unable to create AssetResolver - Asset links may not work correctly
Traceback (most recent call last):
  File "/home/rf/.local/bin/usdmanager", line 4, in <module>
    __import__('pkg_resources').run_script('usdmanager==0.15.0', 'usdmanager')
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 722, in run_script
    self.require(requires)[0].run_script(script_name, ns)
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 1561, in run_script
    exec(code, namespace, namespace)
  File "/home/rf/.local/lib/python3.11/site-packages/usdmanager-0.15.0-py3.11.egg/EGG-INFO/scripts/usdmanager", line 20, in <module>
    run()
  File "/home/rf/.local/lib/python3.11/site-packages/usdmanager-0.15.0-py3.11.egg/usdmanager/__init__.py", line 5028, in run
    app.run()
  File "/home/rf/.local/lib/python3.11/site-packages/usdmanager-0.15.0-py3.11.egg/usdmanager/__init__.py", line 4891, in run
    window = self.newWindow()
             ^^^^^^^^^^^^^^^^
  File "/home/rf/.local/lib/python3.11/site-packages/usdmanager-0.15.0-py3.11.egg/usdmanager/__init__.py", line 4944, in newWindow
    window = self.createWindowFrame()
             ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/rf/.local/lib/python3.11/site-packages/usdmanager-0.15.0-py3.11.egg/usdmanager/__init__.py", line 4934, in createWindowFrame
    return widgetClass()
           ^^^^^^^^^^^^^
  File "/home/rf/.local/lib/python3.11/site-packages/usdmanager-0.15.0-py3.11.egg/usdmanager/__init__.py", line 256, in __init__
    self.setupUi()
  File "/home/rf/.local/lib/python3.11/site-packages/usdmanager-0.15.0-py3.11.egg/usdmanager/__init__.py", line 538, in setupUi
    self.currTab = self.newTab()
                   ^^^^^^^^^^^^^
  File "/home/rf/.local/lib/python3.11/site-packages/usdmanager-0.15.0-py3.11.egg/usdmanager/__init__.py", line 1021, in newTab
    newTab = BrowserTab(self.tabWidget)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/rf/.local/lib/python3.11/site-packages/usdmanager-0.15.0-py3.11.egg/usdmanager/__init__.py", line 4373, in __init__
    self.setIndentSettings(prefs['useSpaces'], prefs['tabSpaces'], prefs['autoIndent'])
  File "/home/rf/.local/lib/python3.11/site-packages/usdmanager-0.15.0-py3.11.egg/usdmanager/__init__.py", line 4675, in setIndentSettings
    self.textBrowser.setTabStopWidth(width)
TypeError: setTabStopWidth(self, width: int): argument 1 has unexpected type 'float'

By changing the line 4675 to self.textBrowser.setTabStopWidth(int(width)) the gui opens but still get some errors

Traceback (most recent call last):
  File "/home/rf/.local/lib/python3.11/site-packages/usdmanager-0.15.0-py3.11.egg/usdmanager/linenumbers.py", line 323, in paintEvent
    painter.drawText(0, yPos - vScrollPos, width, height, flags, str(currLine))
TypeError: arguments did not match any overloaded call:
  drawText(self, p: Union[QPointF, QPoint], s: str): argument 1 has unexpected type 'int'
  drawText(self, rectangle: QRectF, flags: int, text: str): argument 1 has unexpected type 'int'
  drawText(self, rectangle: QRect, flags: int, text: str): argument 1 has unexpected type 'int'
  drawText(self, rectangle: QRectF, text: str, option: QTextOption = QTextOption()): argument 1 has unexpected type 'int'
  drawText(self, p: QPoint, s: str): argument 1 has unexpected type 'int'
  drawText(self, x: int, y: int, width: int, height: int, flags: int, text: str): argument 2 has unexpected type 'float'
  drawText(self, x: int, y: int, s: str): argument 2 has unexpected type 'float'
QBackingStore::endPaint() called with active painter; did you forget to destroy it or call QPainter::end() on it?
QPaintDevice: Cannot destroy paint device that is being painted

Ubuntu Release: 23.10
pyQt5 install

Unable to open files from drive other than drive of current working directory

Issue

It seems I'm unable to open USD files correctly with USD Manager that are not under the same drive letter on Windows as the current working directory.

This is what I'm doing, say my cwd is C:/foo/bar and I start usdmanager in Python:

import usdmanager
usdmanager.run()

Whenever I open a file that is on C:/ it works "fine"*. However when I open a file from D:/foo/bar or P:/projects it seems USD Manager tries to still prepend the original current working directory drive letter, getting me paths like:

D:C:/foo/bar/file.usd

It's not really prepending it. It seems the first character is the drive letter of the USD file, then it inserts the drive letter of the current working directory and then it continues the file path.

The same happens when clicking on a reference link inside the .usd file that refers to a USD file on another drive letter.

*Note that I'm saying opening a file on the same drive letter works "fine" however it also seems to insert the current working directory drive letter: C:C:/foo/bar but somehow reads the file just fine.

I am not sure where this is coming from. I also tried to get the debug logger running but it didn't seem to output any messages whatsoever.

# no output printed somehow...
import logging
import usdmanager
usdmanager.logger.setLevel(logging.DEBUG)
usdmanager.run()

Windows 10
usdmanager 0.9.0
USD 19.11
PySide

SUG: Access to a linter?

When i remember to be responsible, i'll run usdchecker on scenes being hand-edited.
Some editors let you run a linter on your buffer or can run one before/during save.
This ever come up as an idea?

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.