Coder Social home page Coder Social logo

terminus's Introduction

Bring a real terminal to Sublime Text

The first cross platform terminal for Sublime Text.

Unix shell Cmd.exe
Terminal in panel Support showing images

This package is heavily inspired by TerminalView. Compare with TerminalView, this has

  • Windows support
  • continuous history
  • easily customizable themes (see Terminus Utilities)
  • unicode support
  • 256 colors support
  • better xterm support
  • terminal panel
  • imgcat support (PS: it also works on Linux / WSL)

Installation

Package Control.

Getting started

Shell configurations

Terminus comes with several shell configurations. The settings file should be quite self explanatory.

User Key Bindings

You may find these key bindings useful. To edit, run Preferences: Terminus Key Bindings. Check the details for the arguments of terminus_open below.

  • toggle terminal panel
[
    { 
        "keys": ["alt+`"], "command": "toggle_terminus_panel"
    }
]
  • open a terminal view at current file directory
[
    { 
        "keys": ["ctrl+alt+t"], "command": "terminus_open", "args": {
            "cwd": "${file_path:${folder}}"
        }
    }
]

or by passing a custom cmd, say ipython

[
    { 
        "keys": ["ctrl+alt+t"], "command": "terminus_open", "args": {
            "cmd": "ipython",
            "cwd": "${file_path:${folder}}"
        }
    }
]
  • open terminal in a split view by using Origami's carry_file_to_pane
[
    {
        "keys": ["ctrl+alt+t"],
        "command": "terminus_open",
        "args": {
            "post_window_hooks": [
                ["carry_file_to_pane", {"direction": "down"}]
            ]
        }
    }
]
  • ctrl-w to close terminal

Following keybinding can be considered if one wants to use ctrl+w to close terminals.

{ 
    "keys": ["ctrl+w"], "command": "terminus_close", "context": [{ "key": "terminus_view"}]
}

User Commands in Palette

  • run Preferences: Terminus Command Palette. Check the details for the arguments of terminus_open below
[
    {
        "caption": "Terminus: Open Default Shell at Current Location",
        "command": "terminus_open",
        "args"   : {
            "cwd": "${file_path:${folder}}"
        }
    }
]

or by passing custom cmd, say ipython

[
    {
        "caption": "Terminus: Open iPython",
        "command": "terminus_open",
        "args"   : {
            "cmd": "ipython",
            "cwd": "${file_path:${folder}}",
            "title": "iPython"
        }
    }
]
  • open terminal in a split tab by using Origami's carry_file_to_pane
[
    {
        "caption": "Terminus: Open Default Shell in Split Tab",
        "command": "terminus_open",
        "args": {
            "post_window_hooks": [
                ["carry_file_to_pane", {"direction": "down"}]
            ]
        }
    }
]

Terminus Build System

It is possible to use Terminus as a build system. The target terminus_exec is a drop in replacement of the default target exec. It takes exact same arguments as terminus_open except that their default values are set differently.

terminus_cancel_build is used to cancel the build when user runs cancel_build triggered by ctrl+c (macOS) or ctrl+break (Windows / Linux).

The following is an example of build system define in project settings that run a python script

{
    "build_systems":
    [
        {
            "name": "Hello World",
            "target": "terminus_exec",
            "cancel": "terminus_cancel_build",
            "cmd": [
                "python", "helloworld.py"
            ],
            "working_dir": "$folder"
        }
    ]
}

The same Hello World example could be specified via a .sublime-build file.

{
    "target": "terminus_exec",
    "cancel": "terminus_cancel_build",
    "cmd": [
        "python", "helloworld.py"
    ],
    "working_dir": "$folder"
}

Instead of cmd, user could also specify shell_cmd. In macOS and linux, a bash shell will be invoked; and in Windows, cmd.exe will be invoked.

{
    "target": "terminus_exec",
    "cancel": "terminus_cancel_build",
    "shell_cmd": "python helloworld.py",
    // to directly invoke bash command
    // "shell_cmd": "echo helloworld",
    "working_dir": "$folder"
}

Alt-Left/Right to move between words (Unix)

  • Bash: add the following in .bash_profile or .bashrc

    if [ "$TERM_PROGRAM" == "Terminus-Sublime" ]; then
        bind '"\e[1;3C": forward-word'
        bind '"\e[1;3D": backward-word'
    fi
  • Zsh: add the following in .zshrc

    if [ "$TERM_PROGRAM" = "Terminus-Sublime" ]; then
        bindkey "\e[1;3C" forward-word
        bindkey "\e[1;3D" backward-word
    fi

Some programs, such as julia, do not recognize the standard keycodes for alt+left and alt+right. You could bind them to alt+b and alt+f respectively

[
    { "keys": ["alt+left"], "command": "terminus_keypress", "args": {"key": "b", "alt": true}, "context": [{"key": "terminus_view"}] },
    { "keys": ["alt+right"], "command": "terminus_keypress", "args": {"key": "f", "alt": true}, "context": [{"key": "terminus_view"}] }
]

Terminus API

  • A terminal could be opened using the command terminus_open with
window.run_command(
    "terminus_open", {
        "config_name": None,     # the shell config name, use `None` for the default config
        "cmd": None,             # the cmd to execute
        "shell_cmd": None,       # a script to execute in a shell
                                 # bash on Unix and cmd.exe on Windows
        "cwd": None,             # the working directory
        "working_dir": None,     # alias of "cwd"
        "env": {},               # extra environmental variables
        "title": None,           # title of the view, let terminal configures it if leave empty
        "panel_name": None,      # the name of the panel if terminal should be opened in panel
        "focus": True,           # focus to the panel
        "tag": None,             # a tag to identify the terminal
        "file_regex": None       # the `file_regex` pattern in sublime build system
                                 # see https://www.sublimetext.com/docs/3/build_systems.html
        "line_regex": None       # the `file_regex` pattern in sublime build system
        "pre_window_hooks": [],  # a list of window hooks before opening terminal
        "post_window_hooks": [], # a list of window hooks after opening terminal
        "post_view_hooks": [],   # a list of view hooks after opening terminal
        "auto_close": "always",  # auto close terminal, possible values are "always" (True), "on_success", and False.
        "cancellable": False,    # allow `cancel_build` command to terminate process, only relevent to panels
        "timeit": False          # display elapsed time when the process terminates
    }
)

The fields cmd and cwd understand Sublime Text build system variables.

  • the setting view.settings().get("terminus_view.tag") can be used to identify the terminal and

  • keybind can be binded with specific tagged terminal

    {
        "keys": ["ctrl+alt+w"], "command": "terminus_close", "context": [
            { "key": "terminus_view.tag", "operator": "equal", "operand": "YOUR_TAG"}
        ]
    }
  • text can be sent to the terminal with
window.run_command(
    "terminus_send_string", 
    {
        "string": "ls\n",
        "tag": "<YOUR_TAG>"        # ignore this or set it to None to send text to the first terminal found
        "visible_only": False      # send to visible terminal only, default is `False`. Only relevent when `tag` is None
    }
)

If tag is not provided or is None, the text will be sent to the first terminal found in the current window.

FAQ

Memory issue

It is known that Terminus sometimes consumes a lot of memory after extensive use. It is because Sublime Text keeps an infinite undo stack. There is virtually no fix unless upstream provides an API to work with the undo stack. Meanwhile, users could execute Terminus: Reset to release the memory.

This issue has been fixed in Sublime Text >= 4114 and Terminus v0.3.20.

Color issue when maximizing and minimizing terminal

It is known that the color of the scrollback history will be lost when a terminal is maximized or minimized from or to the panel. There is no fix for this issue.

Terminal panel background issue

If you are using DA UI and your terminal panel has weird background color, try playing with the setting panel_background_color or panel_text_output_background_color in DA UI: Theme Settings.

{
    "panel_background_color": "$background_color"
}

Or, to keep the Find and Replace panels unchanged:

"panel_text_output_background_color": "$background_color"

Cmd.exe rendering issue in panel

Due to a upstream bug (may winpty or cmd.exe?), there may be arbitrary empty lines inserted between prompts if the panel is too short. It seems that cmder and powershell are not affected by this bug.

Acknowledgments

This package won't be possible without pyte, pywinpty and ptyprocess.

terminus's People

Contributors

aalma avatar blase avatar deathaxe avatar dwkns avatar frou avatar gobijan avatar itsxaos avatar joepmoritz avatar jpcirrus avatar jwortmann avatar karissawhiting avatar keithrussell42 avatar neunato avatar randy3k avatar rubjo avatar rwols avatar saneef avatar symera avatar t-bltg avatar thedanheller avatar timfjord avatar toph-allen avatar trych 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

terminus's Issues

[QUESTION] Ssh with port forwading

Thanks for the terminal!
How do I add a configuration to the terminal list so that the terminal connects to the remote via ssh with port forwarding?

My OS windows 10 and i use pageant.

Terminus closes immediately after execution from a plugin

I tried to run terminus from a plugin but it immediately closes, is there a way to keep it open? I have provided a small example of what I'am trying to do.

import sublime
import sublime_plugin

class HelloWorldCommand(sublime_plugin.TextCommand):
    def on_select(self, item):
        window = self.view.window()
        item = self.items[item]
        window.run_command(
            "terminus_open", {
                "config_name": "Default",
                "cmd": ["echo", item]
            }
        )
        print(item)

    def run(self, edit):
        window = self.view.window()
        self.items = ["hello", "world"]
        window.show_quick_panel(self.items, self.on_select);

Thanks for a great plugin btw!

Last directory removed, Terminus no longer works

Presumably, the last working directory my shell was in is cached someplace within Terminus. Unfortunately, that directory now no longer exists. Now, launching Terminus leads to this error in the console:

  File "/Users/bphunter/Library/Application Support/Sublime Text 3/Packages/Terminus/terminus/commands.py", line 239, in <lambda>
    lambda x: on_selection_method(x, config_name)
  File "/Users/bphunter/Library/Application Support/Sublime Text 3/Packages/Terminus/terminus/commands.py", line 245, in on_selection_method
    self.run(config_name)
  File "/Users/bphunter/Library/Application Support/Sublime Text 3/Packages/Terminus/terminus/commands.py", line 163, in run
    raise Exception("{} does not exist".format(cwd))
Exception: /Users/bphunter/<mydir> does not exist

Key combi Shift+8 or AltGr+8 not working

First of all: Thanks for your efforts. Really cool to see this plugin.

Played around with it a little bit. Works very well already. Even Midnight Commander via bash (WSL) works. Funny to see MC in ST :-)

As the title says I found some key bindings, which do not work.

Shift+8 is used for ( on german keyboard layout and AltGr+8 is used for [.

Same with Shift+Β΄

AltGr+e should type €.

Resizing Window Columns - Text Disappears

When layout columns are resized on Ubuntu 16.04 and macOS Mojave, text disappears until there's interaction with the terminal. Below are images of the issue on Ubuntu 16.04 and ST v3.1.1 Build 3176. Steps to reproduce are 1) create or add a column, 2) run commands in terminal to generate text, 3) resize the column so that text is obscured, 4) resize and expect text to show again, 5) press arrow key up and run command again and text appears. This is particularly difficult to deal with when running a long command while trying to view its text stream.

image
image
image
image

Terminus.sublime-commands?

First, thanks for putting this package together. Very exciting.

I see that you've added some options for customizing Terminus's behavior via keybindings, but it would be great to provide similar functionality in a .sublime-commands file (like TerminalView does). I'd love to be able to create commands that open Terminus windows straight to Rtichoke or iPython, for example.

To illustrate, here's what one simple command looks like in my TerminalView.sublime-commands file:

[ 
   {
        "caption": "Terminal View: Open R (Rtichoke) Console",
        "command": "terminal_view_open",
        "args"   : {
            "title": "R Console (Rtichoke)",
            "cmd": "/bin/bash -l -c rtichoke",
            "cwd": "${folder}",
            "syntax": "TerminalView.sublime-syntax"
        }
    }
]

In case it's not clear, this command opens Rtichoke, and sets the working directory to the first folder in the project. (Note also that I've created a special (and empty) TerminalView syntax file, which allows me to set preferences (like rulers, spell check, etc) for terminal windows.) It would be great to have similar functionality in Terminus.

Console rendering very slow with respect to process execution

On windows7 the view rendering is quite slow, to prove you that, try running this:

ptime python -c "import time;s=time.time();[print(i) for i in range(100000)];print(time.time()-s)"

Now, check out the final result at the end of the video... Time measured by ptime and python process is ~4.5/~4.7 while rendering the whole output has taken ~1min10s!!!!

Any chance to optimize this one?

I don't use ctrl+p (Goto Anything...)

If I use ctrl+p must show Goto Anything...
It seems that the shortcut was replaced by the shortcut of the terminal.
There is a way that the sublime keyboard shortcut dominates the terminal


seleccion_022

Theme Documentation

The feature list says that Terminus supports color schemes but I couldn't find any documentation for it.

Right-click -> Paste

Thank you for this long-awaited plugin. I'm using it regularly.

A minor issue I face is that the Paste option from right-click menu doesn't work. Copy works though.

image

"plugin_host has exited unexpectedly" message

After using Terminus for any significant period of time (say, more than 30 minutes), I eventually get a pop-up message saying "plugin_host has exited unexpectedly, plugin functionality won't be available until Sublime Text has been restarted."

Not sure what info would be helpful here, but to start, I'm running ST3 (build 3176) on MacOS 10.13.5. Happy to provide whatever additional details would be of use.

Use env option

I'm trying to add a new path to the env var but I'm having a problem. If use:

"env": {"new_path"}

I got an parse error because a dictionary needs a key and a value, the question is, what should I use as key?

Sublime ask to save terminus tab

When closing the terminus tab, Sublime Test asks to save the file.
Can you put an option to allow us to close it without warning?

Thank you!

Disable shortcuts for tabs navigation

Ubuntu 18.04 here.
I use Ctrl+(PageUp|PageDown) to navigate between tabs, but when in terminus tab that shortcut doesn't work (it writes some characters).
Need some kind of command, like 'do-nothing' to put in the terminus shortcuts file and overwrite the default action.

Git_Bash for Windows via Terminus

I am trying to get Terminus to open git-bash instead of the windows command prompt with absolutely zero luck. Any one know how this can be done?

How to disable trailing whitespaces in panel mode.

Hi, I have posted a question regarding this package on sublime forum, but I think I did not explained it very clearly there. So, like many other people, I like to keep the trailing spaces activated while coding.

I use your package Terminus (formerly Console and SublimelyTerminal) and must say that it is a must for sublime users.

Formerly with the package when was named Console, it supported only the tab view mode, it was highlighting the trailing spaces in the Console tab. I managed to remove the trailing slashes for the tab view by adding "highlight_trailing_whitespace": false, to the Plain text syntax specific settings:

image

When the package was named SublimelyTerminal, you added the panel view to the package. It works great, but I can't figure out how to disable the trailing whitespaces for the panel view which looks quite unconsistent with the tab view mode:

image

My question is, is there any way to disable the highlighting trailing spaces while in the panel view mode, so that people can use Terminus consistently in both the modes.

ctrl+delete, ctrl+backspace not working.

First of all, I got to know about this package on Sublime Text forum. I honestly have to tell you that this is a very useful package.

Everything is beyond expectations here, but there are some quirks (I am on Windows 10):

  1. Hitting Ctrl+Delete and Ctrl+BackSpace does erase the whole word on right and left of cursor respectively, this does not work here. (Hitting plain Delete and BackSpace works though.)

  2. I generated my own custom theme, but can't activate it now.

  3. The ANSI color sequences does not show up out-of-the-box. I have to manually activate the utility I use called Ansicon to display them correctly. (I have 256colors setting turned on).

  4. Cannot use copy-paste from the Console view.

Anyways, I must tell you that this is a great plugin 😊.

try to enter and exit ide by double clicking keyboard accelerators.

class enteride(sublime_plugin.WindowCommand):
    # enter python
    def run(self, ide):
        global already_in_ide

        if not already_in_ide:
            self.window.run_command("toggle_terminus_panel")

            self.window.run_command("terminus_send_string",
                                    {"string": "{}\n".format(ide),
                                     "tag": None}
                                    )
            already_in_ide = True
        else:
            if ide == "python":
                exit_cmd = "exit();"
            elif ide == "node":
                exit_cmd = "process.exit();"
            self.window.run_command(
                "terminus_send_string",
                {
                    "string": "{}\nclear\n".format(exit_cmd),
                    "tag": None        # or the tag which is passed to "terminus_open"
                }
            )
            already_in_ide = False`

try to use new api Terminus Command Palette in v0.1.4 to enter and exit ide by double clicking shortcuts ,but in my bash.exe everytime it open a new tab,and i can't use toggle_terminus_panel it to open it,so i make my own python script like this,but i still has many bugs like already_in_ide not ensure and exit command not same in many ides like node,python....sorry for my english

White lines/empty space just after each text

Environment:

  • Sublime-Text 3.1.1
  • Windows 10
  • Sublime Theme: Adaptive
  • Sublime Color Scheme: Monokai
  • Terminus Theme: Monokai
  • Terminus Window: Both View and Panel
  • Terminus Terminal type: any (cmd, WSL, powerline)

When I open terminus and i.e. list files/directory on every line just after the text there is white empty space to the end of the line. Every line.
The cursor is also white.
I've tried every theme, color scheme, terminus-theme, different shells. Always the same effect.

terminus

Console is completely black with blinking cursor

After installing the package I get the following messages in Sublime's console:

Traceback (most recent call last):
File "/opt/sublime_text/sublime_plugin.py", line 1066, in run_
return self.run(edit, **args)
File "/home/aap/.config/sublime-text-3/Packages/Console/console.py", line 826, in run
console.open(**kwargs)
File "/home/aap/.config/sublime-text-3/Packages/Console/console.py", line 390, in open
self.process = ConsolePtyProcess.spawn(cmd, cwd=cwd, env=_env, dimensions=size)
File "/home/aap/.config/sublime-text-3/Packages/ptyprocess/all/ptyprocess/ptyprocess.py", line 256, in spawn
max_fd = resource.getrlimit(resource.RLIMIT_NOFILE)[0]
File "/home/aap/.config/sublime-text-3/Packages/ptyprocess/all/ptyprocess/resource.py", line 9, in getrlimit
soft_limit = int(subprocess.check_output(['ulimit', '-Sn']))
File "./python3.3/subprocess.py", line 576, in check_output
File "./python3.3/subprocess.py", line 819, in init
File "./python3.3/subprocess.py", line 1448, in execute_child
FileNotFoundError: [Errno 2] No such file or directory: 'ulimit'
Traceback (most recent call last):
File "/opt/sublime_text/sublime_plugin.py", line 1066, in run

return self.run(edit, **args)
File "/home/aap/.config/sublime-text-3/Packages/Console/console.py", line 476, in run
screen = console.screen
AttributeError: 'Console' object has no attribute 'screen'

The terminal is black with a blinking cursor, and it does not seem to be responsive.

I'm running Ubuntu 18.04 LTS.

New Text During Command in Terminal Tab Pulls Scroll Bar to Bottom

This behavior is different than I experience in Ubuntu 16.04 in terminal. Typically when I scroll up, the command keeps outputting text and doesn't pull me to the bottom as text is output. It's very helpful to be able to inspect text while the command continues to run and not be forced to the latest output. To reproduce, scroll up while running a long command that continuously outputs and let off the mouse buttons and/or scroll wheel.

toggle_terminus_panel with cwd

Any reason why the following cwd doesn't change to the current working directory

    { "keys": ["alt+`"],
        "command": "toggle_terminus_panel",
        "cwd": "${file_path:${folder}}"
    },

The last update generated this bug

Hi,
the last update generated this bug on ST build 3176.

screen shot 2018-07-03 at 01 40 17

When we try to remove your package, the result is this:

screen shot 2018-07-03 at 01 53 47

Without Terminus, everything works fine:

screen shot 2018-07-03 at 01 55 54

Terminus freezes when running more than 30 lines in R

This happens with Sublime Text 3 (Build 3176) when copying the code in the Terminus panel and view or using SendCode. I report the R session hereunder even if I don't believe R is causing the problem since if i use SendCode with R-Gui or R-Studio this problem does not appear

sessionInfo()
R version 3.5.1 (2018-07-02)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS High Sierra 10.13.6

Matrix products: default
BLAS: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRblas.0.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats graphics grDevices utils datasets methods base

loaded via a namespace (and not attached):
[1] compiler_3.5.1

Consider setting a conspicuous environment variable by default

If this plugin set a conspicuous environment variable by default, such as TERMINUS_SUBLIME=1, we could all make use of that when adding things that are only for Terminus to our regular bash_profile etc files.

For example, the word-movement stuff:

# ...

if test -n "$TERMINUS_SUBLIME"; then
    bind '"\e[1;3C": forward-word'
    bind '"\e[1;3D": backward-word'
fi

# ...

Number of lines in scrollback history.

Hi,

Is there a way to specify the number of lines Terminus saves in the scrollback history? I've noticed that the terminal starts to slow down after a long period of use (and especially after displaying a lot of output), and I'm assuming this has to do with the size of the buffer. It would be nice to have a bit of control over this.

.bashrc is not used

Hi,
running "command": "terminus_open", "args": {"config_name": "Bash", "panel_name": "Terminus"}
launch a terminus terminal with bash but .bashrc is not taken in account since some env variable declared in are not present inside terminus.
If I run bash inside terminus, it solves the problem

focus back terminus in panel

If the lost focus, there is no way to go back to it. for example you loose your current ipython "session".
new panel close the current panel.

the idea would be for new panel command :

if  "output.Terminal" in window.panels:
   window.run_command("show_panel", args={"panel":"output.Terminus"})
else:
  window.run_commad("terminus_open", args={"config_name": "Default", "panel_name": "Terminus"})

i'll do the pr if you want
great plugin anyway
Jimmy

include behavior from ~/.inputrc

I use terminal history autocomplete from my ~/.inputrc. Is there a way to include this in terminus?

Awesome work by the way! - especially combined with sendcode. Between the anaconda package and your packages, sublime an ideal IDE for python dev.

No trace of Terminus on fresh Sublime install

I installed the Terminus package through packagecontrol on a fresh Sublime. I can find no trace of Terminus after installation however. Nothing under any menu item, nor does the package appear under package preferences. The alt+` hotkey has no effect either. In the Sublime console I see one line regarding Terminus reloading plugin Terminus.main.

I run Sublime on Windows 7x64. If I can provide you with more details I will gladly do so.

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.