Giter VIP home page Giter VIP logo

files_3dmodelviewer's Issues

thumbnail generator for 3d files would be great.

Is your feature request related to a problem? Please describe

A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like

A clear and concise description of what you want to happen.

Describe alternatives you've considered

A clear and concise description of any alternative solutions or features you've considered.

Additional context

Add any other context or screenshots about the feature request here.

Pls make private repo

I'm wondering your work structure
And did u guys integrate with slack or communication channel ?

Support for Nextcloud 27

Is your feature request related to a problem? Please describe

When can we expect support for Nextcloud 27?

Describe the solution you'd like

Support for Nextcloud 27

Describe alternatives you've considered

None - as far as I know there are not alternative apps

Additional context

Problem previewing larger files on mobile

Describe the bug

Nextcloud webpage crashes when trying to load model files > ~15MB on mobile browsers

To Reproduce

Steps to reproduce the behavior:

  1. Try to preview model files > ~15MB in size on phone or tablet
  2. Loading spinner and message appear normally
  3. Webpage crashes and browser displays a "Something went wrong..." message

Expected behavior

Model preview loads normally, even after some time

I have checked that the files are not corrupted

Models will load the preview normally on desktop, the same models will cause the page to crash on mobile and tablet if they are too large

Screenshots

N/A

Browser log

...(many lines of the same jQuery warning)...

[Warning] $ is deprecated: The global jQuery is deprecated. It will be removed in a later versions without another warning. Please ship your own. (core-main.js, line 2)

[Debug] File info for /My/Directory/Path/3dmodel.stl fetched (viewer-main.js, line 2)

Object

How to access your browser console (Click to expand)

Chrome

  1. Press either CTRL + SHIFT + I / CMD + ALT + I or F12 to open the Developer Tools.
  2. Click the “console” tab.

Safari

  1. Press CMD + ALT + I to open the Web Inspector.
  2. See Chrome’s step 2. (Chrome and Safari have pretty much identical dev tools.)

IE

  1. Press F12 to open the developer tools.
  2. Click the “console” tab.

Firefox

  1. Press CTRL + SHIFT + K to open the Web console (COMMAND + SHIFT + K on Macs).
  2. or, if Firebug is installed (recommended):
    1. Press F12 to open Firebug.
    2. Click on the “console” tab.

Opera

  1. Press CTRL + SHIFT + I to open Dragonfly.
  2. Click on the “console” tab.

Installation and configuration

How the app was installed?

  • Via app store.

App server configuration Parameters

  • apps_path parameter is not explicitly configured/customised in config/config.php

Versions

Nextcloud

  • Version: 25.0.4
  • Webserver: Nginx

Desktop

  • OS: MacOS 13.3.1
  • Browser and version: Safari 16.4

Handheld

  • Device: iPhone 12

  • OS: iOS 16.4

  • Browser and version: Safari 16.4

  • Device: iPad Pro 5th Gen

  • OS: iPadOS 16.4.1

  • Browser and version: Safari 16.4, Brave 1.49 (23.4.3.20)

  • Device: Galaxy Note8

  • OS: Android 9

  • Browser and version: Chrome 111.0.5563.116

Additional context

Tested with model file sizes 8-50MB

On the mobile Apple devices, the loading spinner would display for a few seconds before reloading the page with an open sidebar and loading spinner, then the page would crash after several more seconds.

The Fileinfo object logged in the browser console always appears to be initially empty and will populate with properties at some point before the model renders in preview, on the mobile devices I'm not seeing the object populate with any data before the page crashes.

I was unable to reproduce the issue on desktop when changing the browser agent or in responsive mode to imitate a mobile device.

3dsMax for files (*.max) scene view needed

Support for 3dsMax scenes would be perfect, specifically files with the extension *.max -- this would be incredibly convenient. If possible, it would be amazing to store the project folder on a Nextcloud server and have the ability to view the scene simultaneously.

Not an issue, but large over 100 M files?

Hello,

Thank you for excellent 3D viewer, just stunning! Is there anything that I could tweak on server side to make large models load and run? Thank you in advance!

Br Matti

SecureView - View of 3d-files without download option if download permission is dinied for internal/external shared folders/files

Is your feature request related to a problem? Please describe

Sharing files/folders with another user or via a link, and only giving view permissions and disallowing download, allows viewing documents with some apps, but not viewing 3D files. This is a real pity! So I can't share my own designed 3D models without copy protection.

Describe the solution you'd like

The integration of a SecureView would be helpful, so that with these security settings when sharing, the files can still be viewed in the cloud. To do this, download options would have to be blocked on the app side and this SecureView would have to be registered for Nextcloud, as for example with OnlyOffice.

Describe alternatives you've considered

External 3d model portals, like:

  • Sketchfab
  • Modelo
    But this options are not secure enough for my usage and commercial exensie

Additional context

Would be nice to see this feature as fast as possible and open the nextcloud maybe for more usage for 3d models.

importing model is failing

Describe the bug

I am using 3D viewer in my v25 snap installation. Once I try to open any STEP file it displays "importing..." forever.

To Reproduce

Just open any STEP file

Expected behavior

expected to see a 3D model preview

I have checked that the files are not corrupted

Yes, using Autodesk Inventor and SW eDrawings. Tried many different files. All without issues in these desktop apps.

Browser log

There is an error in the browser log (Opera 64bit):

occt-import-js.js:1 Uncaught (in promise) TypeError: err is not a function
at occt-import-js.js:1:162214

Installation and configuration

How the app was installed?

  • Via app store.

App server configuration Parameters

  • apps_path parameter is not explicitly configured/customised in config/config.php

Versions

Nextcloud

  • Version: 25.0.4
  • Webserver: Apache

Desktop

Opera Browser, most recent version
also tried Edge and Firefox with same result

For the downloaded FBX format 3D model package, it cannot be previewed directly in Nextcloud after decompression.

Describe the bug

To Reproduce

Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior

I have checked that the files are not corrupted

Yes, file is working when I open it in...

Screenshots

Browser log

How to access your browser console (Click to expand)

Chrome

  1. Press either CTRL + SHIFT + I / CMD + ALT + I or F12 to open the Developer Tools.
  2. Click the “console” tab.

Safari

  1. Press CMD + ALT + I to open the Web Inspector.
  2. See Chrome’s step 2. (Chrome and Safari have pretty much identical dev tools.)

IE

  1. Press F12 to open the developer tools.
  2. Click the “console” tab.

Firefox

  1. Press CTRL + SHIFT + K to open the Web console (COMMAND + SHIFT + K on Macs).
  2. or, if Firebug is installed (recommended):
    1. Press F12 to open Firebug.
    2. Click on the “console” tab.

Opera

  1. Press CTRL + SHIFT + I to open Dragonfly.
  2. Click on the “console” tab.

Installation and configuration

How the app was installed?

  • Via app store.
  • Manually. Downloading files_3dmodelviewer.tar.gz from releases and unzipping the directory.
  • Manually. Cloning and building.

App server configuration Parameters

  • apps_path parameter is not explicitly configured/customised in config/config.php

Versions

3D Model Viewer

  • Version:

Nextcloud

  • Installation type:
  • Version:
  • Webserver:

Desktop

  • OS:
  • Browser and version:

Handheld

  • Device:
  • OS:
  • Browser and version:

Additional context

Viewer not opening

Describe the bug

Preview doesn't open, Nextcloud just downloads the file when clicked

To Reproduce

Steps to reproduce the behavior:

  1. Install app
  2. Upload .obj or .stl files
  3. Browse to them in the Files app
  4. Click on them

Expected behavior

The 3d viewer preview screen to display

Desktop (please complete the following information)

  • OS: Macos (Apple Silicon)
  • Browser Chrome, Safari
  • Version Nextcloud 25.0.4

Browser log

GET https://[redacted]/custom_apps/files_3dmodelviewer/js/files_3dmodelviewer.js?v=841b80fe-19 net::ERR_ABORTED 404
Refused to execute script from 'https://[redacted]/custom_apps/files_3dmodelviewer/js/files_3dmodelviewer.js?v=841b80fe-19' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.

Transparency

A possibility to display the 3D models transparently would be great

Normal direction

It would be great if we could see the direction of normals for polygons.
Or, at least, see polygons with inverted normals. Indicate them with transparency or bright red color.

select/deselect objects in the 3d-model

When opening a 3D-model the hull is shown only. The objects inside cannot be seen.

A list of objects of the model to select/deselect. A button "toggle", "select all", "select none"

IFC not working on nextcloud 24.0.6

Describe the bug

ifc fles, even small ones like 2MB, do not load. other formats do load but they take quite long. Im connected via LAN directly to the server where our nextcloud instance is running

To Reproduce

Steps to reproduce the behavior:

Take a ifc file and try to look at it in the 3DModel Viewer

Expected behavior

The ifc file should load an

I have checked that the files are not corrupted

Yes, using BIM VISION.

Screenshots

Browser log

ConsoleLogger.js:33 [INFO] viewer: Opening viewer for file  {app: 'viewer', uid: 'm.burgert', path: '/BKK Cloud/AVA/haus.ifc'}
ConsoleLogger.js:29 [DEBUG] viewer: Fetching additional files... {app: 'viewer', uid: 'm.burgert'}
web-ifc-api-browser.js:1 
        
       Uncaught (in promise) EvalError: Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive: "script-src 'self'".

    at new Function (<anonymous>)
    at createNamedFunction (web-ifc-api-browser.js:1:213972)
    at extendError (web-ifc-api-browser.js:1:214156)
    at WebIFCWasm2 (web-ifc-api-browser.js:1:243576)
    at IfcAPI2.<anonymous> (web-ifc-api-browser.js:1:1379921)
    at Generator.next (<anonymous>)
    at web-ifc-api-browser.js:1:1162
    at new Promise (<anonymous>)
    at __async (web-ifc-api-browser.js:1:849)
    at IfcAPI2.Init (web-ifc-api-browser.js:1:1379712)
createNamedFunction @ web-ifc-api-browser.js:1
extendError @ web-ifc-api-browser.js:1
WebIFCWasm2 @ web-ifc-api-browser.js:1
(anonym) @ web-ifc-api-browser.js:1
(anonym) @ web-ifc-api-browser.js:1
__async @ web-ifc-api-browser.js:1
Init @ web-ifc-api-browser.js:1
(anonym) @ files_3dmodelviewer.js?v=570800e1-40:1
Promise.then (asynchron)
(anonym) @ files_3dmodelviewer.js?v=570800e1-40:1
Promise.then (asynchron)
ImportContent @ files_3dmodelviewer.js?v=570800e1-40:1
Import @ files_3dmodelviewer.js?v=570800e1-40:1
ImportLoadedMainFile @ files_3dmodelviewer.js?v=570800e1-40:1
ImportLoadedFiles @ files_3dmodelviewer.js?v=570800e1-40:1
(anonym) @ files_3dmodelviewer.js?v=570800e1-40:1
DecompressArchives @ files_3dmodelviewer.js?v=570800e1-40:1
(anonym) @ files_3dmodelviewer.js?v=570800e1-40:1
(anonym) @ files_3dmodelviewer.js?v=570800e1-40:1
setTimeout (asynchron)
RunTaskAsync @ files_3dmodelviewer.js?v=570800e1-40:1
onReady @ files_3dmodelviewer.js?v=570800e1-40:1
TaskReady @ files_3dmodelviewer.js?v=570800e1-40:1
(anonym) @ files_3dmodelviewer.js?v=570800e1-40:1
Promise.finally (asynchron)
GetFileContent @ files_3dmodelviewer.js?v=570800e1-40:1
runTask @ files_3dmodelviewer.js?v=570800e1-40:1
(anonym) @ files_3dmodelviewer.js?v=570800e1-40:1
setTimeout (asynchron)
RunOnce @ files_3dmodelviewer.js?v=570800e1-40:1
Run @ files_3dmodelviewer.js?v=570800e1-40:1
(anonym) @ files_3dmodelviewer.js?v=570800e1-40:1
GetContent @ files_3dmodelviewer.js?v=570800e1-40:1
LoadFiles @ files_3dmodelviewer.js?v=570800e1-40:1
ImportFiles @ files_3dmodelviewer.js?v=570800e1-40:1
LoadModel @ files_3dmodelviewer.js?v=570800e1-40:1
LoadModelFromInputFiles @ files_3dmodelviewer.js?v=570800e1-40:1
LoadModelFromFileList @ files_3dmodelviewer.js?v=570800e1-40:1
Init3DViewerFromFileList @ files_3dmodelviewer.js?v=570800e1-40:1
(anonym) @ files_3dmodelviewer.js?v=570800e1-40:1
tryCatch @ files_3dmodelviewer.js?v=570800e1-40:1
(anonym) @ files_3dmodelviewer.js?v=570800e1-40:1
(anonym) @ files_3dmodelviewer.js?v=570800e1-40:1
Appvue_type_script_lang_js_asyncGeneratorStep @ files_3dmodelviewer.js?v=570800e1-40:1
_next @ files_3dmodelviewer.js?v=570800e1-40:1
Promise.then (asynchron)
Appvue_type_script_lang_js_asyncGeneratorStep @ files_3dmodelviewer.js?v=570800e1-40:1
_next @ files_3dmodelviewer.js?v=570800e1-40:1
(anonym) @ files_3dmodelviewer.js?v=570800e1-40:1
(anonym) @ files_3dmodelviewer.js?v=570800e1-40:1
construct @ files_3dmodelviewer.js?v=570800e1-40:1
(anonym) @ files_3dmodelviewer.js?v=570800e1-40:1
(anonym) @ vue.runtime.esm.js:1989
et @ vue.runtime.esm.js:1915
Promise.then (asynchron)
Ke @ vue.runtime.esm.js:1942
at @ vue.runtime.esm.js:1999
e.$nextTick @ vue.runtime.esm.js:3542
mounted @ files_3dmodelviewer.js?v=570800e1-40:1
We @ vue.runtime.esm.js:1863
ln @ vue.runtime.esm.js:4235
insert @ vue.runtime.esm.js:3158
_ @ vue.runtime.esm.js:6390
bo.nodeOps @ vue.runtime.esm.js:6609
e._update @ vue.runtime.esm.js:3963
r @ vue.runtime.esm.js:4081
bn.get @ vue.runtime.esm.js:4495
bn.run @ vue.runtime.esm.js:4570
yn @ vue.runtime.esm.js:4326
(anonym) @ vue.runtime.esm.js:1989
et @ vue.runtime.esm.js:1915
Promise.then (asynchron)
Ke @ vue.runtime.esm.js:1942
at @ vue.runtime.esm.js:1999
(anonym) @ vue.runtime.esm.js:4418
bn.update @ vue.runtime.esm.js:4560
de.notify @ vue.runtime.esm.js:730
set @ vue.runtime.esm.js:1055
Cn.set @ vue.runtime.esm.js:4644
(anonym) @ Viewer.vue:431
u @ runtime.js:63
(anonym) @ runtime.js:294
(anonym) @ runtime.js:119
Vm @ Download.vue?b226:19
i @ Download.vue?b226:19
Promise.then (asynchron)
Vm @ Download.vue?b226:19
i @ Download.vue?b226:19
Promise.then (asynchron)
Vm @ Download.vue?b226:19
i @ Download.vue?b226:19
(anonym) @ Download.vue?b226:19
(anonym) @ Download.vue?b226:19
openFile @ Viewer.vue:345
file @ Viewer.vue:256
We @ vue.runtime.esm.js:1863
bn.run @ vue.runtime.esm.js:4584
yn @ vue.runtime.esm.js:4326
(anonym) @ vue.runtime.esm.js:1989
et @ vue.runtime.esm.js:1915
Promise.then (asynchron)
Ke @ vue.runtime.esm.js:1942
at @ vue.runtime.esm.js:1999
(anonym) @ vue.runtime.esm.js:4418
bn.update @ vue.runtime.esm.js:4560
de.notify @ vue.runtime.esm.js:730
set @ vue.runtime.esm.js:1055
value @ Viewer.js:193
gm @ FilesActionHandler.js:40
action @ merged-index.js?v=570800e1-40:3025
_onClickFile @ merged-index.js?v=570800e1-40:4986
be @ _executeBound.js:8
(anonym) @ bind.js:10
(anonym) @ restArguments.js:16
dispatch @ jquery.js:5430
m.handle @ jquery.js:5234
App.vue:323 No new notification data received
App.vue:355 Polling interval updated to 30000
How to access your browser console (Click to expand)

Chrome

  1. Press either CTRL + SHIFT + I / CMD + ALT + I or F12 to open the Developer Tools.
  2. Click the “console” tab.

Safari

  1. Press CMD + ALT + I to open the Web Inspector.
  2. See Chrome’s step 2. (Chrome and Safari have pretty much identical dev tools.)

IE

  1. Press F12 to open the developer tools.
  2. Click the “console” tab.

Firefox

  1. Press CTRL + SHIFT + K to open the Web console (COMMAND + SHIFT + K on Macs).
  2. or, if Firebug is installed (recommended):
    1. Press F12 to open Firebug.
    2. Click on the “console” tab.

Opera

  1. Press CTRL + SHIFT + I to open Dragonfly.
  2. Click on the “console” tab.

Installation and configuration

How the app was installed?

  • Via app store.

App server configuration Parameters

  • apps_path parameter is not explicitly configured/customised in config/config.php

Versions

Nextcloud

  • Version: 24.0.6
  • Webserver: apache

Desktop

  • OS: Windows 11
  • Browser and version: Edge 110.0.1587.57

Handheld

  • Device:
  • OS:
  • Browser and version:

Additional context

The IFC test files I used:
ifcs.zip

**Enabled:

  • activity: 2.16.0
  • admin_audit: 1.14.0
  • cloud_federation_api: 1.7.0
  • dav: 1.22.0
  • email_template_example: 0.0.1
  • external: 4.0.1
  • federatedfilesharing: 1.14.0
  • files: 1.19.0
  • files_3dmodelviewer: 0.0.6
  • files_accesscontrol: 1.14.1
  • files_automatedtagging: 1.14.1
  • files_downloadactivity: 1.15.0
  • files_external: 1.16.1
  • files_linkeditor: 1.1.13
  • files_pdfviewer: 2.5.0
  • files_rightclick: 1.3.0
  • files_scripts: 2.0.3
  • files_sharing: 1.16.2
  • files_snapshots: 1.0.5
  • files_versions: 1.17.0
  • files_videoplayer: 1.13.0
  • guests: 2.3.0
  • impersonate: 1.11.1
  • logreader: 2.9.0
  • lookup_server_connector: 1.12.0
  • notifications: 2.12.1
  • oauth2: 1.12.0
  • password_policy: 1.14.0
  • photos: 1.6.0
  • provisioning_api: 1.14.0
  • settings: 1.6.0
  • sharepoint: 1.12.0
  • side_menu: 2.5.2
  • systemtags: 1.14.0
  • theming: 1.15.0
  • theming_customcss: 1.12.0
  • twofactor_backupcodes: 1.13.0
  • unroundedcorners: 1.0.3
  • updatenotification: 1.14.0
  • viewer: 1.8.0
  • workflowengine: 2.6.0**

_Disabled:

  • accessibility: 1.8.0
  • announcementcenter: 6.3.1
  • circles: 24.0.0
  • comments: 1.12.0
  • contactsinteraction: 1.5.0
  • dashboard: 7.4.0
  • encryption
  • federation: 1.12.0
  • files_fulltextsearch: 24.0.1
  • files_fulltextsearch_tesseract: 24.0.0
  • files_photospheres: 1.24.3
  • files_trackdownloads: 1.11.0
  • files_trashbin: 1.12.0
  • firstrunwizard: 2.11.0
  • fulltextsearch: 23.0.0
  • nextcloud_announcements: 1.11.0
  • privacy: 1.6.0
  • recommendations: 1.3.0
  • serverinfo: 1.14.0
  • sharebymail: 1.12.0
  • sharelisting: 1.1.1
  • support: 1.5.0
  • survey_client: 1.10.0
  • text: 3.5.1
  • transfer: 0.6.0
  • user_ldap
  • user_status: 1.2.0
  • weather_status: 1.2.0_

Update to NextCloud 27.0.1 failed with Viewer 0.0.11

Viewer 0.0.11 was running without problems on NC 26 but after updating to NC 27.0.1 the following error occurred:

[files_3dmodelviewer] Fatal: TypeError: OCP\AppFramework\App::__construct(): Argument #1 ($appName) must be of type string, null given, called in /var/www/html/custom_apps/files_3dmodelviewer/lib/AppInfo/Application.php on line 37 at <>

  1. /var/www/html/custom_apps/files_3dmodelviewer/lib/AppInfo/Application.php line 37
    OCP\AppFramework\App->__construct(null)
  2. /var/www/html/lib/private/ServerContainer.php line 107
    OCA\Files3dModelViewer\AppInfo\Application->__construct()
  3. /var/www/html/lib/private/ServerContainer.php line 186
    OC\ServerContainer->getAppContainer("files3dmodelviewer", "Files3dModelViewer")
  4. /var/www/html/lib/private/ServerContainer.php line 153
    OC\ServerContainer->getAppContainerForService("OCA\Files3dMod ... n")
  5. /var/www/html/lib/private/AppFramework/Bootstrap/Coordinator.php line 133
    OC\ServerContainer->query("OCA\Files3dMod ... n")
  6. /var/www/html/lib/private/AppFramework/Bootstrap/Coordinator.php line 94
    OC\AppFramework\Bootstrap\Coordinator->registerApps(["files_3dmodelviewer"])
  7. /var/www/html/lib/private/Installer.php line 143
    OC\AppFramework\Bootstrap\Coordinator->runLazyRegistration("files_3dmodelviewer")
  8. /var/www/html/apps/settings/lib/Controller/AppSettingsController.php line 451
    OC\Installer->installApp("files_3dmodelviewer")
  9. /var/www/html/lib/private/AppFramework/Http/Dispatcher.php line 230
    OCA\Settings\Controller\AppSettingsController->enableApps(["files_3dmodelviewer"], [])
  10. /var/www/html/lib/private/AppFramework/Http/Dispatcher.php line 137
    OC\AppFramework\Http\Dispatcher->executeController(["OCA\Settings\ ... "], "enableApps")
  11. /var/www/html/lib/private/AppFramework/App.php line 183
    OC\AppFramework\Http\Dispatcher->dispatch(["OCA\Settings\ ... "], "enableApps")
  12. /var/www/html/lib/private/Route/Router.php line 315
    OC\AppFramework\App::main("OCA\Settings\ ... r", "enableApps", ["OC\AppFramewo ... "], ["settings.AppSettings.enableApps"])
  13. /var/www/html/lib/base.php line 1071
    OC\Route\Router->match("/settings/apps/enable")
  14. /var/www/html/index.php line 36
    OC::handleRequest()

Allow viewing of models from shared link

When a shared link is generated (/s/abcde), would it be possible to run the viewer there to be able to view the file as a user foreign to the Nextcloud instance?

Other plugins like Nextcloud Office are able to do so, too, but I have no idea how that functionality is faciliated.

Allow to have a section view of the files.

Describe the solution you'd like

I need a kind of a cut button that allow to made a Section view through the body.

  • Add Cuting XY, YZ, ZX
  • add turning the cut by selecting an Edge or an Axis and enter an angle or drag the section view
  • allow Cutting by selecting a Plane of the Body

Describe alternatives you've considered

Large files will time out with out of memory error on browser.

i have version 0.0.8 installed from the app store (non snap edition).
When I click a model file that is 16 MB or lower it loads fine. but when I click on a model file that is bigger then 16 MB the web page crashes with an out of memory error.
I have tired on Opera GX, Chrome, and Edge.
I have increased the php memory in the php.ini to 16 GB and I have tried everything I can think of.
https://3dviewer.net does not have an issue with the file and is able to load it in a matter of seconds and responds quickly.
Am i missing somthing and not changing the ram limits somewhere that i should be.

Below is what i get in my nextcloud instance
image

Below is what i get on https://3dviewer.net
image

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.