Coder Social home page Coder Social logo

cheat / cheat Goto Github PK

View Code? Open in Web Editor NEW
12.0K 190.0 806.0 8.17 MB

cheat allows you to create and view interactive cheatsheets on the command-line. It was designed to help remind *nix system administrators of options for commands that they use frequently, but not frequently enough to remember.

License: MIT License

Shell 5.60% Go 88.27% Makefile 5.89% Dockerfile 0.25%
cheatsheets interactive-cheatsheets man-page documentation help cheat bash cheatsheet

cheat's Introduction

Workflow status

cheat

cheat allows you to create and view interactive cheatsheets on the command-line. It was designed to help remind *nix system administrators of options for commands that they use frequently, but not frequently enough to remember.

The obligatory xkcd

Use cheat with cheatsheets.

Example

The next time you're forced to disarm a nuclear weapon without consulting Google, you may run:

cheat tar

You will be presented with a cheatsheet resembling the following:

# To extract an uncompressed archive:
tar -xvf '/path/to/foo.tar'

# To extract a .gz archive:
tar -xzvf '/path/to/foo.tgz'

# To create a .gz archive:
tar -czvf '/path/to/foo.tgz' '/path/to/foo/'

# To extract a .bz2 archive:
tar -xjvf '/path/to/foo.tgz'

# To create a .bz2 archive:
tar -cjvf '/path/to/foo.tgz' '/path/to/foo/'

Usage

To view a cheatsheet:

cheat tar      # a "top-level" cheatsheet
cheat foo/bar  # a "nested" cheatsheet

To edit a cheatsheet:

cheat -e tar     # opens the "tar" cheatsheet for editing, or creates it if it does not exist
cheat -e foo/bar # nested cheatsheets are accessed like this

To view the configured cheatpaths:

cheat -d

To list all available cheatsheets:

cheat -l

To list all cheatsheets that are tagged with "networking":

cheat -l -t networking

To list all cheatsheets on the "personal" path:

cheat -l -p personal

To search for the phrase "ssh" among cheatsheets:

cheat -s ssh

To search (by regex) for cheatsheets that contain an IP address:

cheat -r -s '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'

Flags may be combined in intuitive ways. Example: to search sheets on the "personal" cheatpath that are tagged with "networking" and match a regex:

cheat -p personal -t networking --regex -s '(?:[0-9]{1,3}\.){3}[0-9]{1,3}'

Installing

For installation and configuration instructions, see INSTALLING.md.

Cheatsheets

Cheatsheets are plain-text files with no file extension, and are named according to the command used to view them:

cheat tar     # file is named "tar"
cheat foo/bar # file is named "bar", in a "foo" subdirectory

Cheatsheet text may optionally be preceeded by a YAML frontmatter header that assigns tags and specifies syntax:

---
syntax: javascript
tags: [ array, map ]
---
// To map over an array:
const squares = [1, 2, 3, 4].map(x => x * x);

The cheat executable includes no cheatsheets, but community-sourced cheatsheets are available. You will be asked if you would like to install the community-sourced cheatsheets the first time you run cheat.

Cheatpaths

Cheatsheets are stored on "cheatpaths", which are directories that contain cheatsheets. Cheatpaths are specified in the conf.yml file.

It can be useful to configure cheat against multiple cheatpaths. A common pattern is to store cheatsheets from multiple repositories on individual cheatpaths:

# conf.yml:
# ...
cheatpaths:
  - name: community                   # a name for the cheatpath
    path: ~/documents/cheat/community # the path's location on the filesystem
    tags: [ community ]               # these tags will be applied to all sheets on the path
    readonly: true                    # if true, `cheat` will not create new cheatsheets here

  - name: personal
    path: ~/documents/cheat/personal  # this is a separate directory and repository than above
    tags: [ personal ]
    readonly: false                   # new sheets may be written here
# ...

The readonly option instructs cheat not to edit (or create) any cheatsheets on the path. This is useful to prevent merge-conflicts from arising on upstream cheatsheet repositories.

If a user attempts to edit a cheatsheet on a read-only cheatpath, cheat will transparently copy that sheet to a writeable directory before opening it for editing.

Directory-scoped Cheatpaths

At times, it can be useful to closely associate cheatsheets with a directory on your filesystem. cheat facilitates this by searching for a .cheat folder in the current working directory. If found, the .cheat directory will (temporarily) be added to the cheatpaths.

Autocompletion

Shell autocompletion is currently available for bash, fish, and zsh. Copy the relevant completion script into the appropriate directory on your filesystem to enable autocompletion. (This directory will vary depending on operating system and shell specifics.)

Additionally, cheat supports enhanced autocompletion via integration with fzf. To enable fzf integration:

  1. Ensure that fzf is available on your $PATH
  2. Set an envvar: export CHEAT_USE_FZF=true

cheat's People

Contributors

0rax avatar 1mm0rt41pc avatar aayush-kasurde avatar aborgna avatar adelviscio avatar amitsaha avatar askurihin avatar brutus avatar carlosp420 avatar cedric-dufour avatar charley-peng avatar chenrui333 avatar chrisallenlane avatar dependabot-preview[bot] avatar dufferzafar avatar fmunch avatar gbremer avatar kragniz avatar laomaiweng avatar larsyencken avatar maggick avatar mic92 avatar ozdemircili avatar pierrepo avatar rahulkavale avatar rognan avatar shanahanjrs avatar shigemk2 avatar tomaskorbar avatar youtux 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  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

cheat's Issues

cheat of for/if

When writing shell script, I often use "if" or "for".
But I forget the usages of them because OFTEN use them.

So, I want to add if/for on this repository.
Just like this executing "cheat for":

# loop specified number of times
for i in `seq 1 N`
dodone

What do you think about this?

Feature Request: displaying default cheat / displaying your own cheats + the default cheat afterward

When you edit a cheat file, you create a new file including the data from the existing packaged cheat file.

But what happens if there is an update to the default cheat file you already edited, do you have a way to tell some data that may interest you was added? You won't see it because you are displaying your own cheat.

Is it possible maybe to have an option to:

  • display the default cheat
  • display your own cheat, and below the default cheat (and to be able to change the order)
  • a setting to not use the default cheat data when editing a cheat for the first time

That way if a default cheat is updated you won't miss anything.

Suggestion: tag the version in release.

I recommend that you tag every bump version in the release. This will make it easy to arrange the versions. And it will allow user install cheat using the package manager (such as homebrew for OS X) .

Cannot run Cheat under Root

When I run "cheat" under root in my Ubuntu 12.04 I got this: "Please do not run this application as root."
But I need using it under root account.
Any workaround?
Thanx!

cheat is now available in homebrew

Just for the heads up. For the Mac users, cheat is now available in homebrew. Installing cheat just needs one command:

brew install cheat

Compared with pip, it also installs shell completion.

Refactor into argparse

cheat's complexity has risen to the point where it likely makes sense to use a proper option-parser. Refactor away from the ad-hoc option checking implemented currently and into argparse.

Flexible order of arguments, e.g. 'cheat mycheat -e'

Rather than 'cheat -e mycheat' and 'cheat mycheat', it'd be nice to be able to enter 'cheat mycheat -e' so that to switch between edit and display mode you only need to delete the last 3 characters rather than needing to move the cursor over to the left then add/remove the flag.

I find myself doing a lot of editing then displaying what I've just written, or the other way around where I will display it then make changes. Having a flexible order of arguments would make for a more pleasant command line experience.

(Of course this is for all argument types, not just '-e')

Better search result output?

Could you make the search results output the "block of code" since most of the time we are searching for the commented out text and that is all it outputs, which isnt very useful.

example:
cheat -s integers

awk:
  # sum integers from a file or stdin, one integer per line:
  # using specific character as separator to sum integers from a file or stdin

So we would have to waste more time pulling out the awk cheatsheet

cheat awk

# sum integers from a file or stdin, one integer per line:
printf '1\n2\n3\n' | awk '{ sum += $1} END {print sum}'

# using specific character as separator to sum integers from a file or stdin
printf '1:2:3' | awk -F ":" '{print $1+$2+$3}'

# print a multiplication table
seq 9 | sed 'H;g' | awk -v RS='' '{for(i=1;i<=NF;i++)printf("%dx%d=%d%s", i, NR, i*NR, i==NR?"\n":"\t")}'

# Specify output separator character
printf '1 2 3' | awk 'BEGIN {OFS=":"}; {print $1,$2,$3}'

The original cheat

(Or the closet I could find, for some time-/egocentric definition of "original")

gem install cheat

Introductory blog post

It seems to have fallen out of use as of late, which is a shame. But, it's also impressive that it's still running!

Newly copied cheats lack write permissions

So I started using cheat on my new system (OSX 10.10) and wanted to edit an existing cheat using -e but ran into an issue. Seems like when cheats are copied the DEFAULT_CHEAT_DIR the permissions remain read-only, so changes can't be saved. And when trying to edit them again cheat checks to see if the new file is_writeable which returns false so it tries to copy that file again but throws an error since the new cheat file already exists.

Strangely this didn't happen when I was using cheat on linux so I'm not sure if it's something different with my setup or what, but either way maybe adding a quick call to os.chmod in create_or_edit after copying a new cheat to add write permissions would help.

Here's an example of what I'm talking about:

00:23:22-renfred@wartortle~$ ls -l ~/.dotfiles/link/.cheat
total 24
-rw-r--r--  1 renfred  staff   132 Jan 28 11:19 grails
-rw-r--r--  1 renfred  staff   598 Feb  3 00:15 mysql
-rw-r--r--  1 renfred  staff  1700 Feb  3 00:15 vim
00:23:31-renfred@wartortle~$ cheat -e git
The git sheet is not editable. Do you want to copy it to your user cheatsheets directory before editing? Keep in mind that your sheet will always be used before system-wide one.
[y/n] y
# Editor opens up here in read-only mode
00:23:50-renfred@wartortle~$ ls -l ~/.dotfiles/link/.cheat
total 32
-r--r--r--  1 renfred  staff  1909 Feb  3 00:23 git
-rw-r--r--  1 renfred  staff   132 Jan 28 11:19 grails
-rw-r--r--  1 renfred  staff   598 Feb  3 00:15 mysql
-rw-r--r--  1 renfred  staff  1700 Feb  3 00:15 vim
00:23:54-renfred@wartortle~$ cheat -e git
The git sheet is not editable. Do you want to copy it to your user cheatsheets directory before editing? Keep in mind that your sheet will always be used before system-wide one.
[y/n] y
# Editor opens up again, read-only mode
Traceback (most recent call last):
  File "/usr/local/Cellar/cheat/2.1.3/libexec/bin/cheat", line 53, in <module>
    sheet.create_or_edit(options['<cheatsheet>'])
  File "/usr/local/Cellar/cheat/2.1.3/lib/python2.7/site-packages/cheat/sheet.py", line 44, in create_or_edit
    copy(path(sheet), os.path.join(sheets.default_path(), sheet))
  File "/usr/local/Cellar/cheat/2.1.3/lib/python2.7/site-packages/cheat/sheet.py", line 14, in copy
    shutil.copy(current_sheet_path, new_sheet_path)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 119, in copy
    copyfile(src, dst)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 69, in copyfile
    raise Error("`%s` and `%s` are the same file" % (src, dst))
shutil.Error: `/Users/renfred/.cheat/git` and `/Users/renfred/.cheat/git` are the same file
00:24:03-renfred@wartortle~$ chmod +w ~/.dotfiles/link/.cheat/git
00:24:23-renfred@wartortle~$ cheat -e git
# Editor opens here and cheat can be edited normally

Add Python 3.3 support

You could add Python 3.3 support by just adding bounding parentheses to all 'print' statements in the /usr/bin/cheat file.

Changing existing cheatsheets

Hi,

I wanted to make a change to the existing git cheatsheet.

Therefore I ran cheat -e git but then it tries to make changes to /usr/lib/python2.7/site-packages/cheatsheets/git` for which I do not have permissions.

As a suggestion: Can't cheat recognise if I am about to change an existing (default) cheatsheet and if that is the case copies it into my user dir before launching the editor?

option -e under python3

I had to change the file

/usr/lib/python3.4/site-packages/cheat/utils.py

specifically I changed the original raw_input command to new python's 3 input.

Edit:

In the same file, I also changed the last line. Originally it was something like print >> std.err ...
had to change it to the python's 3 sys.stderr.write(message).

./install

when trying to insall this, got an error

cheat >> ./install
File "./install", line 9
except IOError as e:
^
SyntaxError: invalid syntax

also tried

python ./install
File "./install", line 9
except IOError as e:
^
SyntaxError: invalid syntax

is a specific version of python required?

cheat --search

Hi there,

I extremely like cheat but miss a search feature. Let's say I am looking for the command to kill my X instance which would be pkill -KILL Xorg. However, I might not remember the pkill command. Thus I cannot look up cheat pkill. Yet I know that I want to kill my instance. Hence I could look up for all commands which kill something by cheat -s kill. This would search all cheatsheets and print the existing commands.

Is this possible to implement?

Implement autocompletion

If this can be done without adding an undue amount of complexity (and likewise, can be guaranteed not to introduce portability problems), it would be cool to implement keyphrase autocompletion.

For example, if a user types this:

$ cheat my<tab>

The prompt should autocomplete to:

$ cheat mysqldump

Will have to decide how to best display ambigious cheats (for example mysql and mysqldump above). Also, if this feature proves to be difficult to implement, it may just not be worth it.

sudo ./install -> /root/.cheat

When I installed cheat on my RPi, I had to run ./install as root. This lead to installation of the .cheat folder in /root/ instead of ~.
After a (edit: mv, then) chmod and chgrp everything was right as rain, but would be nice not to have to do these steps.

Cheatsheet for subcommands

The current stategy for subcommand cheatsheets is to create a new cheatsheet whose filename is command subcommand.
This option requires a space in the filename -- that is not optimal -- and could also generate redundancy in the command cheatsheet. For instance, the git cheatsheet already refers to the subcommand git commit.

Whould it be a better solution to extract subcommand directly from within the command cheatsheet?

    keyphrase = sys.argv[1]
    if keyphrase in cheatsheets:
        filename = os.path.join(cheatsheets[keyphrase], keyphrase)
        if USE_PYGMENTS:
            pretty_print(filename)
        else:
            with open(filename) as istream:
                for l in istream:
                    if len(sys.argv) > 2:
                        if keyphrase + " " + sys.argv[2] in l:
                            sys.stdout.write(l)
                    else:
                        sys.stdout.write(l)

Unfortunately the above solution is similar to grep and does not output comments accompanying cheats.
Any idea?

Autocompletions files break non-privileged installs

This stanza in setup.py is bad:

    data_files   = [
        ('/usr/share/zsh/site-functions', ['cheat/autocompletion/_cheat.zsh']),
        ('/etc/bash_completion.d'       , ['cheat/autocompletion/cheat.bash']),
        ('/usr/share/fish/completions'  , ['cheat/autocompletion/cheat.fish'])
    ],

It basically assumes you have write access to these places. Plenty of modern Python workflows are totally unprivileged. For example, installing cheat into a virtualenv should work.

I'd propose including the files in the package, but not installing them by default. Let notes in the README say how to install them.

when I "cheat -c col" , got following exception

➜ ~ cheat -c col
Traceback (most recent call last):
File "/usr/local/bin/cheat", line 183, in
main()
File "/usr/local/bin/cheat", line 142, in main
create_cheatsheet(' '.join(sys.argv[2:]), cheatsheets)
File "/usr/local/bin/cheat", line 76, in create_cheatsheet
os.path.join(DEFAULT_CHEAT_DIR, cheat)])
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 493, in call
return Popen(_popenargs, *_kwargs).wait()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 679, in init
errread, errwrite)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1228, in _execute_child
raise child_exception

[RFE] config file (peculiarly another commandline options)

Settings through environment variables is nice and pretty easy. However when it is only possible way how to set behaviour of the application, it is not so friendly. For packaging it's even unfriendly.

There could be some priority like:

  1. options
  2. environment variable
  3. config file

where options have the highest priority and settings in config file the lowest priority. Not sure how options could be usefull here. Some people prefer own aliases with predefined options they want to use. Config file is more friendly for packagers, who can't (or shouldn't) set environment variables when package is installed.

CHEATPATH for multiple locations

Supporting a CHEATPATH variable for multiple locations of cheat files (think: the MANPATH variable) would open up support for cheat files in internal packages and organization-specific software.

For example, I manage the Foo package for organization Bar, and it goes into /opt/foo-bar. I don't want to add the cheats for the foo-* commands to the cheat repo, but can have my systems configured so everyone's shell has /opt/foo-bar/cheat appended to their CHEATPATH variable. I would manage my cheat files in the Foo repository, and push them out with each release. The cheat script and project would happily spit out the foo-* cheat files and references to proprietary programs would be kept out of the GitHub cheat repository.

ImportError When I install cheat

$cheat -v
Traceback (most recent call last):
File "/usr/local/bin/cheat", line 36, in
from docopt import docopt
ImportError: No module named docopt

Cheat Cheat?

Surely we can include a cheatsheet for cheat.

Unable to upgrade

I run the following command with the following output:

$ pip install --upgrade cheat
Downloading/unpacking cheat
Downloading cheat-2.1.15.tar.gz
Running setup.py (path:/tmp/pip-build-z3jNTK/cheat/setup.py) egg_info for package cheat

Downloading/unpacking docopt>=0.6.1 (from cheat)
Downloading docopt-0.6.2.tar.gz
Running setup.py (path:/tmp/pip-build-z3jNTK/docopt/setup.py) egg_info for package docopt

Downloading/unpacking pygments>=1.6.0 (from cheat)
Downloading Pygments-2.0.2-py2-none-any.whl (672kB): 672kB downloaded
Installing collected packages: cheat, docopt, pygments
Running setup.py install for cheat
changing mode of build/scripts-2.7/cheat from 664 to 775

changing mode of /home/me/.local/bin/cheat to 775
Running setup.py install for docopt

Successfully installed cheat docopt pygments
Cleaning up...`

But when I do:

$ cheat -v
cheat 2.1.13

It still says the older version?

Missing man page

Yes, usage is trivial, however it could be fine to have manpage.

Color output instead of syntax highlighting

Can you add color output instead of relying on syntax highlighting?
The syntax highlighting isnt very useful since it only works on very few cheatsheet.
Most of the time, I am seeing all white color text =)

Something like green for commented lines and red for code.
or yellow for commented lines and white for code.

Thanks

Permissive license discussion

Hello,

That was a discussion in tldr project about possibility to collaborate with cheat:

I see 3 possibilities:

  • Double licensing with GPL and MIT
  • Decoupling pages into separate repo and license them separately as MIT, Creative Commons or any other permissive license
  • Relicensing, which might be hard as many people are already using cheat.

Any thoughts on that?

Edit system cheatsheet as root

As root, cheat -e will happily edit the system-wide cheatsheets in the cheat package, if no customization exists in the DEFAULT_CHEAT_DIR.
It may be a good idea to guard against this (and perhaps add a --force flag to ignore this restriction?).

Create new cheatsheets

These might be helpful, for starters:

  • 7z
  • ab
  • at
  • chgrp
  • chmod
  • chown
  • curl
  • dd
  • dhclient
  • dmsg
  • enca
  • gcc
  • gdb
  • gem
  • git
  • gpg
  • ifconfig
  • lsblk
  • lscpu
  • lsusb (?)
  • ltrace
  • mkfifo
  • mkfs
  • mount / umount
  • nc
  • netstat
  • npm
  • php
  • pip
  • ps
  • screen
  • sqlite3
  • strace
  • svn
  • top
  • traceroute
  • truecrypt
  • truncate
  • useradd / adduser
  • wget
  • wpa_supplicant / wpa_cli
  • xargs

(I will check off boxes as commits are made.)

Archlinux package

Hi, I've created package for Archlinux linux distribution, if you like you can add it to the README file.

Partial highlighting in bash

Very useful thing you created here.

I was wondering if you had any idea why I would get partial highlighting only.

For example, if I do "cheat tar" the only thing highlighted in the entire output is * in red in one of the last examples were it says: --exclude=*

Some other commands like "cheat sed" appear ok.

I include a screenshot bellow, could you let me know if this output is normal?

I am running Xubuntu 15.10 and the options have been set in .bashrc

Thanks you.

screenshot_2016-01-13_09-45-46

Caching for name=>file-path mapping?

From function def get() in the file, is there a caching mechanism for cheats = {}? It seems that every time invoking $ cheat <cheatsheet>, the file system is re-traversed and the mapping is re-constructed, which hinders further scaling.

Add to README instructions for how to upgrade/uninstall?

If I installed using the 'sudo python setup.py install' command, how can I upgrade to the latest if the git repository was updated (I did git pull and some changes were pulled down)?

Should I be following the dev or master branch to have the most stable version?

How can I uninstall cheat? I see there's no uninstall argument to setup.py.

It would be useful to have these added to the README.

edit not working without hack on windows

Hello, I just checked out the current version of cheat: b6137ca, code base is really nice. However, subprocess.call doesn't work out of box on windows (python 2.7.6). But hacking the following lines:
changing the editor call from [ ... ] to a string , it works.

Maybe it's just an edge case, but it would be nice if possible to include a fix, so it works out of box. Thanks

def create(sheet):
""" Creates a cheatsheet """
new_sheet_path = os.path.join(sheets.default_path(), sheet)

try:
    subprocess.call(editor() + " "+ new_sheet_path)

except OSError:
    die('Could not launch ' + editor())

def edit(sheet):
""" Opens a cheatsheet for editing """

try:
    subprocess.call(editor() + " "+ path(sheet))

except OSError:
    die('Could not launch ' + editor())

ZSH auto completion

Auto completion in zsh doesn't work.
I need to do sudo cp /usr/share/zsh/site-functions/* /usr/local/share/zsh/site-functions/
After that it work.

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.