Comments (12)
Well and do we need to use the silly _log()
to log these events? I mean so far as I know autotest cares only about START
and END xxx
lines. All other lines are basically just logged.
So instead of tweaking and modifying the autotest logger, we can use the default logger to announce start and end of the test and instead of using RUNNING...
use simple logging.LOGLEVEL. This is actually similar to how virt-test uses logs (plus they added custom context
keyword to be able to parse test steps, which is really cool).
Original:
10:55:16 DEBUG| Test has timeout: 3600 sec. 10:55:16 INFO | START docker/subtests/docker_cli/version.test_1-of-2 docker/subtests/docker_cli/version.test_1-of-2 timestamp=1396342516 timeout=3600 localtime=Apr 01 10:55:16 10:55:16 DEBUG| Persistent state client._record_indent now set to 2 10:55:16 DEBUG| Persistent state client.unexpected_reboot now set to ('docker/subtests/docker_cli/version.test_1-of-2', 'docker/subtests/docker_cli/version.test_1-of-2') 10:55:16 DEBUG| Waiting for pid 8657 for 3600 seconds 10:55:16 INFO | RUNNING INFO: initialize() 10:55:16 INFO | RUNNING INFO: run_once() iteration 1 of 1 10:55:16 DEBUG| Running '/usr/bin/docker -D version' 10:55:17 INFO | RUNNING INFO: postprocess_iteration(), iteration #1 10:55:17 INFO | RUNNING INFO: Found docker versions client: 0.9.0 server 0.9.0 10:55:17 INFO | RUNNING INFO: Docker cli version matches docker client API version 10:55:17 INFO | RUNNING INFO: cleanup() 10:55:18 INFO | GOOD docker/subtests/docker_cli/version.test_1-of-2 docker/subtests/docker_cli/version.test_1-of-2 timestamp=1396342518 localtime=Apr 01 10:55:18 completed successfully 10:55:18 INFO | END GOOD docker/subtests/docker_cli/version.test_1-of-2 docker/subtests/docker_cli/version.test_1-of-2 timestamp=1396342518 localtime=Apr 01 10:55:18 10:55:18 DEBUG| Persistent state client._record_indent now set to 1 10:55:18 DEBUG| Persistent state client.unexpected_reboot deleted 10:55:18 DEBUG| Persistent state client.steps now set to [] 10:55:18 DEBUG| Test has timeout: 3600 sec. 10:55:18 INFO | START docker/subtests/docker_cli/version.test_2-of-2 docker/subtests/docker_cli/version.test_2-of-2 timestamp=1396342518 timeout=3600 localtime=Apr 01 10:55:18 10:55:18 DEBUG| Persistent state client._record_indent now set to 2 10:55:18 DEBUG| Persistent state client.unexpected_reboot now set to ('docker/subtests/docker_cli/version.test_2-of-2', 'docker/subtests/docker_cli/version.test_2-of-2') 10:55:18 DEBUG| Waiting for pid 8676 for 3600 seconds 10:55:18 INFO | RUNNING INFO: initialize() 10:55:18 INFO | RUNNING INFO: run_once() iteration 1 of 1 10:55:18 DEBUG| Running '/usr/bin/docker -D version' 10:55:19 INFO | RUNNING INFO: postprocess_iteration(), iteration #1 10:55:19 INFO | RUNNING INFO: Found docker versions client: 0.9.0 server 0.9.0 10:55:19 INFO | RUNNING INFO: Docker cli version matches docker client API version 10:55:19 INFO | RUNNING INFO: cleanup() 10:55:20 INFO | GOOD docker/subtests/docker_cli/version.test_2-of-2 docker/subtests/docker_cli/version.test_2-of-2 timestamp=1396342520 localtime=Apr 01 10:55:20 completed successfully 10:55:20 INFO | END GOOD docker/subtests/docker_cli/version.test_2-of-2 docker/subtests/docker_cli/version.test_2-of-2 timestamp=1396342520 localtime=Apr 01 10:55:20 10:55:20 DEBUG| Persistent state client._record_indent now set to 1 10:55:20 DEBUG| Persistent state client.unexpected_reboot deleted 10:55:20 INFO | END GOOD ---- ---- timestamp=1396342520 localtime=Apr 01 10:55:20
Without RUNNING:
10:54:23 DEBUG| Test has timeout: 3600 sec. 10:54:23 INFO | START docker/subtests/docker_cli/version.test_1-of-2 docker/subtests/docker_cli/version.test_1-of-2 timestamp=1396342463 timeout=3600 localtime=Apr 01 10:54:23 10:54:23 DEBUG| Persistent state client._record_indent now set to 2 10:54:23 DEBUG| Persistent state client.unexpected_reboot now set to ('docker/subtests/docker_cli/version.test_1-of-2', 'docker/subtests/docker_cli/version.test_1-of-2') 10:54:23 DEBUG| Waiting for pid 8562 for 3600 seconds 10:54:23 INFO | initialize() 10:54:23 INFO | run_once() iteration 1 of 1 10:54:23 DEBUG| Running '/usr/bin/docker -D version' 10:54:24 INFO | postprocess_iteration(), iteration #1 10:54:24 INFO | Found docker versions client: 0.9.0 server 0.9.0 10:54:24 INFO | Docker cli version matches docker client API version 10:54:24 INFO | cleanup() 10:54:25 INFO | GOOD docker/subtests/docker_cli/version.test_1-of-2 docker/subtests/docker_cli/version.test_1-of-2 timestamp=1396342465 localtime=Apr 01 10:54:25 completed successfully 10:54:25 INFO | END GOOD docker/subtests/docker_cli/version.test_1-of-2 docker/subtests/docker_cli/version.test_1-of-2 timestamp=1396342465 localtime=Apr 01 10:54:25 10:54:25 DEBUG| Persistent state client._record_indent now set to 1 10:54:25 DEBUG| Persistent state client.unexpected_reboot deleted 10:54:25 DEBUG| Persistent state client.steps now set to [] 10:54:25 DEBUG| Test has timeout: 3600 sec. 10:54:25 INFO | START docker/subtests/docker_cli/version.test_2-of-2 docker/subtests/docker_cli/version.test_2-of-2 timestamp=1396342465 timeout=3600 localtime=Apr 01 10:54:25 10:54:25 DEBUG| Persistent state client._record_indent now set to 2 10:54:25 DEBUG| Persistent state client.unexpected_reboot now set to ('docker/subtests/docker_cli/version.test_2-of-2', 'docker/subtests/docker_cli/version.test_2-of-2') 10:54:25 DEBUG| Waiting for pid 8582 for 3600 seconds 10:54:25 INFO | initialize() 10:54:25 INFO | run_once() iteration 1 of 1 10:54:25 DEBUG| Running '/usr/bin/docker -D version' 10:54:26 INFO | postprocess_iteration(), iteration #1 10:54:26 INFO | Found docker versions client: 0.9.0 server 0.9.0 10:54:26 INFO | Docker cli version matches docker client API version 10:54:26 INFO | cleanup() 10:54:27 INFO | GOOD docker/subtests/docker_cli/version.test_2-of-2 docker/subtests/docker_cli/version.test_2-of-2 timestamp=1396342467 localtime=Apr 01 10:54:27 completed successfully 10:54:27 INFO | END GOOD docker/subtests/docker_cli/version.test_2-of-2 docker/subtests/docker_cli/version.test_2-of-2 timestamp=1396342467 localtime=Apr 01 10:54:27 10:54:27 DEBUG| Persistent state client._record_indent now set to 1 10:54:27 DEBUG| Persistent state client.unexpected_reboot deleted 10:54:27 INFO | END GOOD ---- ---- timestamp=1396342467 localtime=Apr 01 10:54:27
For comparision, there is output of kernel-install virt-test:
10:35:29 INFO | START ---- ---- timestamp=1396341329 localtime=Apr 01 10:35:29 10:35:29 DEBUG| Persistent state client._record_indent now set to 1 10:35:29 INFO | START kernelinstall.3.3.4 kernelinstall.3.3.4 timestamp=1396341329 localtime=Apr 01 10:35:29 10:35:29 DEBUG| Persistent state client._record_indent now set to 2 10:35:29 DEBUG| Persistent state client.unexpected_reboot now set to ('kernelinstall.3.3.4', 'kernelinstall.3.3.4') 10:35:29 INFO | Chose to install kernel through 'tar', proceeding 10:35:29 DEBUG| Running 'rm -rf /home/medic/Work/Projekty/autotest/autotest-ldoktor/client/results/default/kernelinstall.3.3.4/debug' 10:35:29 DEBUG| Running 'rm -rf /home/medic/Work/Projekty/autotest/autotest-ldoktor/client/results/default/kernelinstall.3.3.4/results' 10:35:30 INFO | --- START kernel.extract --- 10:35:30 INFO | kernelexpand: 10:35:30 INFO | ['http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.4.tar.bz2'] 10:35:30 DEBUG| Fetching http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.4.tar.bz2 -> /home/medic/Work/Projekty/autotest/autotest-ldoktor/client/tmp/tmp/build/src/linux-3.4.tar.bz2 10:38:21 INFO | Extracting kernel tarball: /home/medic/Work/Projekty/autotest/autotest-ldoktor/client/tmp/tmp/build/src/linux-3.4.tar.bz2 ... 10:38:21 DEBUG| Running 'bzcat /home/medic/Work/Projekty/autotest/autotest-ldoktor/client/tmp/tmp/build/src/linux-3.4.tar.bz2 | tar xvf - 2>/dev/null' 10:38:36 INFO | --- END kernel.extract --- 10:38:36 INFO | GOOD kernelinstall.3.3.4 kernel.extract timestamp=1396341516 localtime=Apr 01 10:38:36 10:38:36 DEBUG| Fetching http://www.kernel.org/pub/linux/kernel/v3.0/patch-3.4.4.bz2 -> /home/medic/Work/Projekty/autotest/autotest-ldoktor/client/tests/kernelinstall/patch-3.4.4.bz2 10:38:37 INFO | --- START kernel.patch --- 10:38:37 INFO | Applying patches: ('/home/medic/Work/Projekty/autotest/autotest-ldoktor/client/tests/kernelinstall/patch-3.4.4.bz2',) 10:38:37 INFO | get_file /home/medic/Work/Projekty/autotest/autotest-ldoktor/client/tests/kernelinstall/patch-3.4.4.bz2 /home/medic/Work/Projekty/autotest/autotest-ldoktor/client/tmp/tmp/build/src/patch-3.4.4.bz2 /home/medic/Work/Projekty/autotest/autotest-ldoktor/client/tmp/tmp/build/src patch-3.4.4.bz2 10:38:37 DEBUG| Running 'md5sum /home/medic/Work/Projekty/autotest/autotest-ldoktor/client/tmp/tmp/build/src/patch-3.4.4.bz2' 10:38:37 INFO | PATCH: /home/medic/Work/Projekty/autotest/autotest-ldoktor/client/tests/kernelinstall/patch-3.4.4.bz2 /home/medic/Work/Projekty/autotest/autotest-ldoktor/client/tests/kernelinstall/patch-3.4.4.bz2 51d5b74c3523c5dd8d0f4d1a7abb68be
from autotest-docker.
Sorry, the original is even worse, I played with it for a while so the timestamp, localtime and ----'s are missing.
from autotest-docker.
Anyway if you really insist on "RUNNING ..." we can modify the render
class:
def _log(self, level, message, *args): class DockerLogEntry(base_job.status_log_entry): def render(self): """ Render the status log entry into a text string. :returns: A text string suitable for writing into a status log file. """ # combine all the log line data into a tab-delimited string line_items = [self.message] first_line = '\t'.join(line_items) # append the extra unparsable lines, two-space indented all_lines = [first_line] all_lines += [' ' + line for line in self.extra_message_lines] return '\n'.join(all_lines) method = getattr(logging, level) message = 'RUNNING %s: %s' % (level.upper(), message) sle = DockerLogEntry("RUNNING", None, None, message, {}) rendered = self._re(sle) return method(rendered, *args)
Generates:
11:08:52 DEBUG| Test has timeout: 3600 sec. 11:08:52 INFO | START docker/subtests/docker_cli/version.test_1-of-2 docker/subtests/docker_cli/version.test_1-of-2 timestamp=1396343332 timeout=3600 localtime=Apr 01 11:08:52 11:08:52 DEBUG| Persistent state client._record_indent now set to 2 11:08:52 DEBUG| Persistent state client.unexpected_reboot now set to ('docker/subtests/docker_cli/version.test_1-of-2', 'docker/subtests/docker_cli/version.test_1-of-2') 11:08:52 DEBUG| Waiting for pid 15698 for 3600 seconds 11:08:54 INFO | RUNNING INFO: initialize() 11:08:57 INFO | RUNNING INFO: run_once() iteration 1 of 1 11:08:57 DEBUG| Running '/usr/bin/docker -D version' 11:08:59 INFO | RUNNING INFO: postprocess_iteration(), iteration #1 11:08:59 INFO | RUNNING INFO: Found docker versions client: 0.9.0 server 0.9.0 11:09:00 INFO | RUNNING INFO: Docker cli version matches docker client API version 11:09:00 INFO | RUNNING INFO: cleanup() 11:09:02 INFO | GOOD docker/subtests/docker_cli/version.test_1-of-2 docker/subtests/docker_cli/version.test_1-of-2 timestamp=1396343342 localtime=Apr 01 11:09:02 completed successfully 11:09:02 INFO | END GOOD docker/subtests/docker_cli/version.test_1-of-2 docker/subtests/docker_cli/version.test_1-of-2 timestamp=1396343342 localtime=Apr 01 11:09:02 11:09:02 DEBUG| Persistent state client._record_indent now set to 1 11:09:02 DEBUG| Persistent state client.unexpected_reboot deleted 11:09:02 DEBUG| Persistent state client.steps now set to [] 11:09:02 DEBUG| Test has timeout: 3600 sec. 11:09:02 INFO | START docker/subtests/docker_cli/version.test_2-of-2 docker/subtests/docker_cli/version.test_2-of-2 timestamp=1396343342 timeout=3600 localtime=Apr 01 11:09:02 11:09:02 DEBUG| Persistent state client._record_indent now set to 2 11:09:02 DEBUG| Persistent state client.unexpected_reboot now set to ('docker/subtests/docker_cli/version.test_2-of-2', 'docker/subtests/docker_cli/version.test_2-of-2') 11:09:02 DEBUG| Waiting for pid 15757 for 3600 seconds 11:09:06 INFO | RUNNING INFO: initialize() 11:09:06 INFO | RUNNING INFO: run_once() iteration 1 of 1 11:09:06 DEBUG| Running '/usr/bin/docker -D version' 11:09:08 INFO | RUNNING INFO: postprocess_iteration(), iteration #1 11:09:08 INFO | RUNNING INFO: Found docker versions client: 0.9.0 server 0.9.0 11:09:08 INFO | RUNNING INFO: Docker cli version matches docker client API version 11:09:09 INFO | RUNNING INFO: cleanup() 11:09:10 INFO | GOOD docker/subtests/docker_cli/version.test_2-of-2 docker/subtests/docker_cli/version.test_2-of-2 timestamp=1396343350 localtime=Apr 01 11:09:10 completed successfully 11:09:10 INFO | END GOOD docker/subtests/docker_cli/version.test_2-of-2 docker/subtests/docker_cli/version.test_2-of-2 timestamp=1396343350 localtime=Apr 01 11:09:10 11:09:10 DEBUG| Persistent state client._record_indent now set to 1 11:09:10 DEBUG| Persistent state client.unexpected_reboot deleted 11:09:10 INFO | END GOOD ---- ---- timestamp=1396343350 localtime=Apr 01 11:09:10
from autotest-docker.
Naa, I'm not sold on 'RUNNING'. The only reason it's there is because the autotest client interface asked for something. RUNNING made more sense at the time than the other choices. Don't forget too, this is only for console logging, not the official record, test-logs. That's a different (but related) problem. BTW, thanks for looking into this :)
from autotest-docker.
what about:
11:08:52 DEBUG| Test has timeout: 3600 sec. 11:08:52 INFO | START docker/subtests/docker_cli/version.test_1-of-2 docker/subtests/docker_cli/version.test_1-of-2 timestamp=1396343332 timeout=3600 localtime=Apr 01 11:08:52 11:08:52 DEBUG| Persistent state client._record_indent now set to 2 11:08:52 DEBUG| Persistent state client.unexpected_reboot now set to ('docker/subtests/docker_cli/version.test_1-of-2', 'docker/subtests/docker_cli/version.test_1-of-2') 11:08:52 DEBUG| Waiting for pid 15698 for 3600 seconds 11:08:54 INFO | RUNNING : initialize() 11:08:57 INFO | RUNNING : run_once() iteration 1 of 1 11:08:57 DEBUG| RUNNING : iRunning '/usr/bin/docker -D version' 11:08:59 INFO | RUNNING : postprocess_iteration(), iteration #1 11:08:59 INFO | RUNNING : Found docker versions client: 0.9.0 server 0.9.0 11:09:00 INFO | RUNNING : Docker cli version matches docker client API version 11:09:00 INFO | RUNNING : cleanup() 11:09:02 INFO | GOOD docker/subtests/docker_cli/version.test_1-of-2 docker/subtests/docker_cli/version.test_1-of-2 timestamp=1396343342 localtime=Apr 01 11:09:02 completed successfully 11:09:02 INFO | END GOOD docker/subtests/docker_cli/version.test_1-of-2 docker/subtests/docker_cli/version.test_1-of-2 timestamp=1396343342 localtime=Apr 01 11:09:02 11:09:02 DEBUG| Persistent state client._record_indent now set to 1 11:09:02 DEBUG| Persistent state client.unexpected_reboot deleted 11:09:02 DEBUG| Persistent state client.steps now set to [] 11:09:02 DEBUG| Test has timeout: 3600 sec. 11:09:02 INFO | START docker/subtests/docker_cli/version.test_2-of-2 docker/subtests/docker_cli/version.test_2-of-2 timestamp=1396343342 timeout=3600 localtime=Apr 01 11:09:02 11:09:02 DEBUG| RUNNING: Persistent state client._record_indent now set to 2 11:09:02 DEBUG| RUNNING: iPersistent state client.unexpected_reboot now set to ('docker/subtests/docker_cli/version.test_2-of-2', 'docker/subtests/docker_cli/version.test_2-of-2') 11:09:02 DEBUG| RUNNING: iWaiting for pid 15757 for 3600 seconds 11:09:06 INFO | RUNNING: initialize() 11:09:06 INFO | RUNNING: run_once() iteration 1 of 1 11:09:06 DEBUG| RUNNING: Running '/usr/bin/docker -D version' 11:09:08 INFO | RUNNING: postprocess_iteration(), iteration #1 11:09:08 INFO | RUNNING: Found docker versions client: 0.9.0 server 0.9.0 11:09:08 INFO | RUNNING: Docker cli version matches docker client API version 11:09:09 INFO | RUNNING: cleanup() 11:09:10 INFO | GOOD docker/subtests/docker_cli/version.test_2-of-2 docker/subtests/docker_cli/version.test_2-of-2 timestamp=1396343350 localtime=Apr 01 11:09:10 completed successfully 11:09:10 INFO | END GOOD docker/subtests/docker_cli/version.test_2-of-2 docker/subtests/docker_cli/version.test_2-of-2 timestamp=1396343350 localtime=Apr 01 11:09:10 11:09:10 DEBUG|Persistent state client._record_indent now set to 1 11:09:10 DEBUG| Persistent state client.unexpected_reboot deleted 11:09:10 INFO | END GOOD ---- ---- timestamp=1396343350 localtime=Apr 01 11:09:10
from autotest-docker.
Everything is doable... We just have to pick the right form. I prefer the first one as the only indented part is START
and END xxx
lines. So I'm able to find them easily. All the rest uses as much space as possible so I don't need to scroll the view (I use portrait display).
Anyway all mentioned solutions works for me and IMO are better than current solution.
from autotest-docker.
Yeah, that looks nice!
I'd say even the RUNNING
is optional (we assume it between START
/END
).
If there's a way to wipe-out all the extra/redundant timestamps & duplicated URI's it would be even better (just on the console output, the log files I don't care). If not, oh well, it's still a LOT better than what we have now.
from autotest-docker.
Well, it's not really convenient, but I'm able to do something like this:
15:43:26 INFO | START ---- ---- timestamp=1396446206 localtime=Apr 02 15:43:26 15:43:26 DEBUG| Persistent state client._record_indent now set to 1 15:43:26 DEBUG| Persistent state client.steps now set to [([], 'step_init', (), {})] 15:43:26 DEBUG| Persistent state client.steps now set to [] 15:43:26 DEBUG| Persistent state client.steps now set to [([], 'run_test', ('/home/medic/Work/Projekty/autotest/autotest-ldoktor/client/tests/docker', 'docker/subtests/docker_cli/version', 'test_1-of-1', 600), {})] 15:43:26 DEBUG| Persistent state client.steps now set to [] 15:43:26 DEBUG| Test has timeout: 600 sec. 15:43:26 INFO | START docker/subtests/docker_cli/version.test_1-of-1 docker/subtests/docker_cli/version.test_1-of-1 timestamp=1396446206 timeout=600 localtime=Apr 02 15:43:26 15:43:26 DEBUG| Persistent state client._record_indent now set to 2 15:43:26 DEBUG| Persistent state client.unexpected_reboot now set to ('docker/subtests/docker_cli/version.test_1-of-1', 'docker/subtests/docker_cli/version.test_1-of-1') 15:43:26 DEBUG| Waiting for pid 8430 for 600 seconds 15:43:26 INFO | initialize() 15:43:26 INFO | run_once() iteration 1 of 1 15:43:26 INFO | aaa bbb 15:43:26 DEBUG| bbb ccc 15:43:27 INFO | postprocess_iteration(), iteration #1 15:43:27 INFO | Found docker versions client: 0.9.0 server 0.9.0 15:43:27 INFO | Docker cli version matches docker client API version 15:43:27 INFO | cleanup() 15:43:28 INFO | GOOD docker/subtests/docker_cli/version.test_1-of-1 docker/subtests/docker_cli/version.test_1-of-1 timestamp=1396446208 localtime=Apr 02 15:43:28 completed successfully 15:43:28 INFO | END GOOD docker/subtests/docker_cli/version.test_1-of-1 docker/subtests/docker_cli/version.test_1-of-1 timestamp=1396446208 localtime=Apr 02 15:43:28 15:43:28 DEBUG| Persistent state client._record_indent now set to 1 15:43:28 DEBUG| Persistent state client.unexpected_reboot deleted 15:43:28 INFO | END GOOD ---- ---- timestamp=1396446208 localtime=Apr 02 15:43:28 15:43:28 DEBUG| Persistent state client._record_indent now set to 0 15:43:28 INFO | Report successfully generated at /home/medic/Work/Projekty/autotest/autotest-ldoktor/client/results/default/job_report.html
But it requires use of self.loginfo()
instead of import logging; logging.info()
.
from autotest-docker.
(Assigned to you, pinned to 'future', I'm undecided if this can/should go into 0.6.x)
from autotest-docker.
OK, it's number 4 on my TODOlist, should be very simple, though. Just start using self.logxxx
instead of import logging
to minimize the impact ;-)
from autotest-docker.
Aye, probably could address it through logging
but autotest already has it's hands all over that and there are many private methods :S As long as we're using self.logxxx()
bloody everywhere it's possible, we can change self.logxxx
and fix the problem all at once.
Oh right, I did put it on there, good. Okay, pegging this onto #32
from autotest-docker.
This is addressed in #61 no reason to have issue open on it as well.
from autotest-docker.
Related Issues (20)
- info test fails
- commit subtest check_commit_default fail HOT 5
- New test: Pull latest also pulls cooresponding tagged image HOT 1
- cp test fails
- Docs: Add sub-section about subtest documentation
- docker_cli/logs/basic test fails w/ unhelpful exception message
- docker_cli/dockerimport/truncated is unreliable
- New test: iptables / firewalld is working. (Docker 1.7.0) HOT 1
- docker_cli/run_volumes cleanup() in base class is not general purpose
- Pre-check wether image exists before container uses it HOT 2
- Improve conf.py's compability for Sphinx v1.3.1 HOT 2
- new test: Exercise --icc=false w/ docker rm --link HOT 1
- Docs: Update development-env. requirements
- Quick Fix: Make image name parsing regex pretty
- Quick Fix: Default omit_empty=True in get_as_list() HOT 1
- Reimplement some dockertest/docker_daemon.py functions HOT 3
- redhat/packaging test fails on Atomic Host HOT 8
- run_cgroups/memory_no_cgroup : fix handling of 0
- Dockercmd module documentation
- Add support for Ubuntu HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from autotest-docker.