Git Product home page Git Product logo

connectbot's Introduction

Build Status

ConnectBot

ConnectBot is a Secure Shell client for Android that lets you connect to remote servers over a cryptographically secure link.

Google Play

Get it on Google Play

Compiling

Android Studio

ConnectBot is most easily developed in Android Studio. You can import this project directly from its project creation screen by importing from the GitHub URL.

Command line

To compile ConnectBot using gradlew, you must first specify where your Android SDK is via the ANDROID_SDK_HOME environment variable. Then you can invoke the Gradle wrapper to build:

./gradlew build

Reproducing Continuous Integration (CI) builds locally

To run the Jenkins CI pipeline locally, you can use jenkinsfile-runner via a Docker installation which can be invoked like this:

docker run -it -v $(pwd):/workspace \
    -v jenkinsfile-runner-cache:/var/jenkinsfile-runner-cache \
    -v jenkinsfile-runner:/var/jenkinsfile-runner \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v $(which docker):$(which docker) \
    -e ANDROID_ADB_SERVER_ADDRESS=host.docker.internal \
    jenkins/jenkinsfile-runner

Translations

If you'd like to correct or contribute new translations to ConnectBot, then head on over to ConnectBot's translations project

connectbot's People

Contributors

agenthh avatar alescdb avatar arthurhsu avatar caseyburkhardt avatar dependabot-preview[bot] avatar dependabot[bot] avatar douglaswth avatar fat-tire avatar ge0rg avatar hagau avatar hannesa2 avatar jbcode42 avatar jklein24 avatar johnheroy avatar jsharkey avatar khorimoto avatar kruton avatar leonerd avatar m-griffin avatar morckx avatar netman69 avatar pcc avatar pfn avatar rhansby avatar rypervenche avatar sblackshear avatar shevt avatar skyer9 avatar tornewuff avatar whydoubt 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

connectbot's Issues

Try all addresses for a host (including IPv6/IPv4)

When you are on a network with broken IPv6 but working IPv4 routing, connecting to a dual stack host via DNS fails because IPv6 is prefered.

I had to manually connect to the IPv4 address to establish the connection.

It would be nice to have

a) a global and/or per host setting to specify i.e. IPv4 only host
b) maybe a long click option "Connect via IPvX this time only"

What do you think?
Raoul

Ask me to unlock a key instead of skipping it

I think the current behavior of going to keyboard-interactive authentication instead of prompting me for the key's passphrase is not very user-friendly. If I have a key chances are good that I want to use it when connecting to a host. Also, AFAIK SSH clients can offer a key's public information to a server to find out if it's going to accept it or not.

So the behavior should be like this:

  • If there are no keys, use keyboard-interactive
  • Otherwise, offer all keys to the server. If it accepts one, ask for the passphrase to unlock it. If not, proceed to keyboard-interactive.

Input field missing on Android M preview build MPZ44Q

The input field for typing the user@server name is not visible on Connectbot 1.8.4 on Nexus 6 running the M preview build MPZ44Q. I can still type and it works, but can't see what I typed.

Obviously, this is a preview build (so is buggy) of Android, but I remember a similar input issue on L preview too, which was fixed via a Connectbot release, so thought I might as well mention it.

Happy to provide more detail if needed. Many thanks!

screenshot_20150608-213431

ECDSA 521 bit keys auth always fails

Trying to authenticate the client with a 521 bit sized ECDSA key signature always fails on the client side (it fails to format the signature to the ssh format, and doesn't send anything).

Here is a logcat of what happens when I try it :

W/System.err( 6589): java.io.IOException: Invalid signature format
W/System.err( 6589):    at com.trilead.ssh2.signature.ECDSASHA2Verify.encodeSSHECDSASignature(ECDSASHA2Verify.java:278)
W/System.err( 6589):    at com.trilead.ssh2.auth.AuthenticationManager.authenticatePublicKey(AuthenticationManager.java:272)
W/System.err( 6589):    at com.trilead.ssh2.Connection.authenticateWithPublicKey(Connection.java:500)
W/System.err( 6589):    at org.connectbot.transport.SSH.tryPublicKey(SSH.java:358)
W/System.err( 6589):    at org.connectbot.transport.SSH.authenticate(SSH.java:240)
W/System.err( 6589):    at org.connectbot.transport.SSH.connect(SSH.java:466)
W/System.err( 6589):    at org.connectbot.service.TerminalBridge$3.run(TerminalBridge.java:278)
W/System.err( 6589):    at java.lang.Thread.run(Thread.java:838)
E/ConnectBot.SSH( 6589): Problem during handleAuthentication()
E/ConnectBot.SSH( 6589): java.io.IOException: Publickey authentication failed.
E/ConnectBot.SSH( 6589):    at com.trilead.ssh2.auth.AuthenticationManager.authenticatePublicKey(AuthenticationManager.java:309)
E/ConnectBot.SSH( 6589):    at com.trilead.ssh2.Connection.authenticateWithPublicKey(Connection.java:500)
E/ConnectBot.SSH( 6589):    at org.connectbot.transport.SSH.tryPublicKey(SSH.java:358)
E/ConnectBot.SSH( 6589):    at org.connectbot.transport.SSH.authenticate(SSH.java:240)
E/ConnectBot.SSH( 6589):    at org.connectbot.transport.SSH.connect(SSH.java:466)
E/ConnectBot.SSH( 6589):    at org.connectbot.service.TerminalBridge$3.run(TerminalBridge.java:278)
E/ConnectBot.SSH( 6589):    at java.lang.Thread.run(Thread.java:838)
E/ConnectBot.SSH( 6589): Caused by: java.io.IOException: Invalid signature format
E/ConnectBot.SSH( 6589):    at com.trilead.ssh2.signature.ECDSASHA2Verify.encodeSSHECDSASignature(ECDSASHA2Verify.java:278)
E/ConnectBot.SSH( 6589):    at com.trilead.ssh2.auth.AuthenticationManager.authenticatePublicKey(AuthenticationManager.java:272)
E/ConnectBot.SSH( 6589):    ... 6 more

post-login command doesn't execute

in the latest f-droid build, it seems as if no newline is sent after the post-login command, so the configured command is just printed but not executed.
when enter is pressed, the command gets executed.

Impossible to add port forwarding to a non-database connection

It is currently impossible to add a port forward to a connection that was opened from an external call (intent), and is thus not in the database (hostId == -1).
Adding one from the menu won't show anything in the list, and won't actually open the defined port forward.

Failure to connect without hmac-sha1

Recent versions of OpenSSH don’t include hmac-sha1 in the default HMACs. My copy of ConnectBot (v1.7.1-109-g716cdaa-dirty 2013.05.13) can’t connect to these servers.

This problem has hit other SSH clients. PuTTY recently released a version that works. Ghost Commander still seems to fail to connect to these servers.

Connectbot keeps trying to connect although no more authentication methods available.

When using quick connect to a host which only accepts public key without specifying an ssh key before, Connectbot keeps trying to connect via password and keyboard interactive although it knows that no more authentication methods available.

This behavior should be fixed to prevent Connectbot client to be banned from the specified host. Connectbot should stop trying to connect when it detects no more valid authentication method to use.

Tested on an OpenWrt router, using Dropbear 2014.65. Connectbot version git-master-2014-03-02_12-38-08.

screenshot-connectbot-error

ECDSA host identification errors after 1.8.2 release

I'm assuming this is because RSA keys are now ignored entirely if an ECDSA key exists. I got the "WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!" on all my hosts which have ECDSA keys after upgrading to 1.8.2.

This didn't affect hosts that only offer RSA public keys.

I'm not very familiar with ConnectBot's dependencies, but I can't see an obvious change. Whatever ConnectBot's using to verify hosts should use the RSA key, if it exists, to verify the (presumably) newly discovered ECDSA key for that host, as ssh does.

Cursor jumps to the middle of the screen after 2 rotations

In ConnectBot 1.8.4, after choosing "Automatic" in the "Rotation Mode" setting, you can start at the bottom of a portrait view like in step1.png, then rotate to landscape as in step2.png, and then rotate back to portrait.
You'll notice the cursor moves out of the original place in step 2, and "jumps" to the middle vertically in step 3.

step1
step2
step3

ConnectBot isn't consistent with UNIX telnet client

After some testing with ConnectBot and why it's not talking to my custom telnet server properly, I have come to a conclusion that the ConnectBot telnet client is actually disabling line mode without first sending the server the IAC SB packets to actually tell the server to disable such mode and go into RAW mode. The UNIX telnet client also sends "CRLF" to the server, which ConnectBot is just sending "CR". According to the RFC, CRLF is the most used by server/client implementations, however the server should also accept just CR. I have no problem fixing this on my server, however ConnectBot should start in line mode, and negotiate with the server about using RAW mode, rather than assuming RAW mode.

Looking through the Telnet source code and seeing which IAC commands are handled, it seems that ConnectBot completely lacks any Line mode support. I personally don't want to enable character mode support, as on a mobile network with lag, this can be very problematic, and from a server-side code point of view, the code is much cleaner if the client just sends completed lines rather than each character. It also appears that IAC ECHO is ignored, or at least the handler which is called.

Would it at all be possible to support line mode in ConnectBot? I have been using SL4A and a custom Telnet client, but would rather just use ConnectBot if proper support was implemented.

abort while starting local terminal

I've seen this on the developer console list of issues, but could never reproduce it. Here it is reproduced under art which gives us a little bit more information about what's wrong.

/libc    ( 2701): Fatal signal 6 (SIGABRT), code -6 in tid 2701 (org.connectbot)
I/DEBUG   (  929): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG   (  929): Build fingerprint: 'generic_x86/sdk_google_phone_x86/generic_x86:5.0.2/LSY66D/1797986:eng/test-keys'
I/DEBUG   (  929): Revision: '0'
I/DEBUG   (  929): ABI: 'x86'
I/DEBUG   (  929): pid: 2701, tid: 2701, name: org.connectbot  >>> org.connectbot <<<
I/DEBUG   (  929): signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
I/DEBUG   (  929): Abort message: 'art/runtime/check_jni.cc:65] JNI DETECTED ERROR IN APPLICATION: field operation on invalid stack indirect reference table or invalid reference: 0x0'
I/DEBUG   (  929):     eax 00000000  ebx 00000a8d  ecx 00000a8d  edx 00000006
I/DEBUG   (  929):     esi b7757f08  edi 0000000b
I/DEBUG   (  929):     xcs 00000073  xds 0000007b  xes 0000007b  xfs 00000007  xss 0000007b
I/DEBUG   (  929):     eip b76c41e6  ebp 00000a8d  esp bfe6abf0  flags 00200282
I/DEBUG   (  929):
I/DEBUG   (  929): backtrace:
I/DEBUG   (  929):     #00 pc 000751e6  /system/lib/libc.so (tgkill+22)
I/DEBUG   (  929):     #01 pc 00021b1b  /system/lib/libc.so (pthread_kill+155)
I/DEBUG   (  929):     #02 pc 00023394  /system/lib/libc.so (raise+36)
I/DEBUG   (  929):     #03 pc 0001b874  /system/lib/libc.so (abort+84)
I/DEBUG   (  929):     #04 pc 003735e6  /system/lib/libart.so (art::Runtime::Abort()+294)
I/DEBUG   (  929):     #05 pc 000ec304  /system/lib/libart.so (art::LogMessage::~LogMessage()+1668)
I/DEBUG   (  929):     #06 pc 00101598  /system/lib/libart.so (art::JniAbort(char const*, char const*)+1656)
I/DEBUG   (  929):     #07 pc 00101ecc  /system/lib/libart.so (art::JniAbortF(char const*, char const*, ...)+108)
I/DEBUG   (  929):     #08 pc 00105cbf  /system/lib/libart.so (art::ScopedCheck::CheckInstanceFieldID(_jobject*, _jfieldID*)+479)
I/DEBUG   (  929):     #09 pc 001183a9  /system/lib/libart.so (art::CheckJNI::GetIntField(_JNIEnv*, _jobject*, _jfieldID*)+121)
I/DEBUG   (  929):     #10 pc 00000a8f  /data/app/org.connectbot-1/lib/x86/libcom_google_ase_Exec.so (jniGetFDFromFileDescriptor(_JNIEnv*, _jobject*)+95)
I/DEBUG   (  929):     #11 pc 00000b0d  /data/app/org.connectbot-1/lib/x86/libcom_google_ase_Exec.so (Java_com_google_ase_Exec_setPtyWindowSize+45)
I/DEBUG   (  929):     #12 pc 000002fe  /data/dalvik-cache/x86/data@[email protected]@[email protected]
I/DEBUG   (  929):
I/DEBUG   (  929): Tombstone written to: /data/tombstones/tombstone_00
I/Zygote  (  935): Process 2701 exited due to signal (6)

Window size might be incorrect on connect.

I see something strange still with the new version of the connectbot. When I log in, and re-attach to a screen session which is active in some other terminal (screen -x), initial screen geometry is very wrong. Full-screen applications like mutt output is garbled.

If I increase and then decrease the font size in connectbot, the display is corrected and full-screen apps work correctly afterward.

L input bug

Fix the L input bug (fill in details if needed).

Cannot type at first with swiftkey

Swiftkey is somehow confused by the switch away from the password field to the standard key input, so keys don't appear. enter/up/down/left/right works, but no normal letters appear.

Hitting back twice to get to the menu and then going back into the connection will fix the issue.

Tested with the March-2 build on Android 4.4.3 and Swiftkey 5.0.5.95

3rd party app integration

it would be nice if there would be a way for 3rd party apps to open connections/send commands via ssh using connectbot. maybe using broadcast intents or by handling URL schemes like ssh://user@server:port

Keyboard layout from jackpal.androidterm

Hi,

I am frequently using jackpal.androidterm, shipping with I.e. CyanogenMod.

There, the hardware volume keys are used for ctrl and also to implement i.e. cursor keys. I found this to be very effective.

Would it be possible to implement this as an alternative key layout when the volume keys are not used for font scaling?

Thanks,
Raoul

Connection instantly closed on server and hangs on ConnectBot

The current Google Play version was working fine except for a small issue where it would not try to reconnect if my connection changed from WiFi to Data or vice versa. I found there were actually new releases elsewhere - like here - so tried updating to those in case it worked. Since updating, when I try to connect the terminal says only "Connecting to address:port via ssh" and hangs forever. I checked my SSH server log on my PC - using Bitvise SSH Server - and it confirms a connection opening and the client sending client version string "SSH-2.0-TrileadSSH2Java_213", then it says the connection was terminated, all in the same second. I tried the version here and all the releases on F-Droid and they all do it.

What can I do to fix the problem? I'll be using the Google Play version until I can get it fixed.

Can't import private key in the new OpenSSH format

ConnectBot 1.8.4 cannot parse keys created by ssh-keygen with the "-o" option (OpenSSH >= 6.5), which are in the new (more secure) OpenSSH format rather than the PEM format, and have the header

-----BEGIN OPENSSH PRIVATE KEY-----

rather than one like

-----BEGIN RSA PRIVATE KEY-----

Port range is not checked in Telnet transport

There are some crashes like this:

java.lang.IllegalArgumentException: Port out of range: 19216803
        at java.net.Socket.checkDestination(Socket.java:302)
        at java.net.Socket.tryAllAddresses(Socket.java:127)
        at java.net.Socket.<init>(Socket.java:178)
        at java.net.Socket.<init>(Socket.java:150)
        at org.connectbot.transport.Telnet.connect(Telnet.java:129)
        at org.connectbot.service.TerminalBridge$3.run(TerminalBridge.java:275)
        at java.lang.Thread.run(Thread.java:841)

We should detect this before failing. Maybe we can also try to detect 192.168.x.x mistypes?

Slow operations in UI thread

Dear developers,

I am analyzing connectbot using a static code checker. I found some potential slow operations in connectbot's UI thread.

Android documentation says this:
http://developer.android.com/training/articles/perf-anr.html

"Any method that runs in the UI thread should do as little work as possible on that thread. In particular, activities should do as little as possible in key life-cycle methods such as onCreate(). Potentially long running operations such as network or database operations should be done in a worker thread (e.g., via AsyncTask)."

I found the following event handlers transitively performing heavy operations (db query)

org.connectbot.PortForwardListActivity.onCreate()
org.connectbot.HostEditorActivity.onCreate()
org.connectbot.ColorsActivity.onCreate()
org.connectbot.PubkeyListActivity.onCreate()

The call hierarchy is shown below:
org.connectbot.util.PubkeyDatabase.getPubkeys(Ljava/lang/String;[Ljava/lang/String;)Ljava/util/List;
org.connectbot.util.PubkeyDatabase.allPubkeys()Ljava/util/List;
org.connectbot.PubkeyListActivity.updateList()V
org.connectbot.PubkeyListActivity.onCreate(Landroid/os/Bundle;)V

org.connectbot.util.HostDatabase.getDefaultColorsForScheme(I)[I
org.connectbot.ColorsActivity.onCreate(Landroid/os/Bundle;)V

org.connectbot.HostEditorActivity$CursorPreferenceHack.cacheValues()V
org.connectbot.HostEditorActivity$CursorPreferenceHack.(Lorg/connectbot/HostEditorActivity;Ljava/lang/String;J)V
org.connectbot.HostEditorActivity.onCreate(Landroid/os/Bundle;)V

org.connectbot.util.HostDatabase.getPortForwardsForHost(Lorg/connectbot/bean/HostBean;)Ljava/util/List;
org.connectbot.PortForwardListActivity.updateList()V
org.connectbot.PortForwardListActivity.onCreate(Landroid/os/Bundle;)V

Do you think these operations affect connectbot's performance? If yes, perhaps moving these actions to a separate thread can help make connectbot super smooth in user interaction. Looking forward to your reply and hope I can help improve connectbot.

it is easy to use

please install and have a try。
one ssh client

  • it can autoresize,never show new line under the keyboard;

why connectbot not?

  • any more easy action。

Home/End/PgUp/PgDn on ASUS TF701T physical keyboard dock don't work.

I'm using an ASUS TF701T tablet, with its physical keyboard dock 1, which has a Fn modifier key to change the Left/Right/Up/Down arrow keys into Home/End/PageUp/PageDown keys respectively. But in ConnectBot v1.8.1 2014.10.21 downloaded here on GitHub, these Home/End/PgUp/PgDn keys don't work - nothing is sent through the SSH connection to the host when I push Fn+Left/Right/Up/Down. Using them as regular arrow keys (w/out the Fn modifier) works as expected.

Home & End do work correctly in ConnectBot on the username@hostname:port text entry field (PgUp & PgDn are meaningless there) on the bottom of the first screen before opening the SSH connection, but once the SSH connection is open, nothing is sent to the host when pressing these same keys. Using these keys in either of the IRSSI ConnectBot or VX ConnectBot forks works (although Home & End create different control codes in the 2 forks), but both of those forks have other problems & haven't been updated as recently as ConnectBot, so I'd prefer to keep using ConnectBot.

I test this just by running cat on the SSH host, and then pressing the keys. I expect this to display control codes similar to the below. In ConnectBot 1.8.1 the up, down, right, and left control codes (from pressing the keys w/out the Fn modifier) are displayed, and work as expected. But pressing Home, End, PgUp, and PgDn (using the Fn modifier) does not display anything, and trying to use them in normal operation (not using cat to test) does nothing.

These are the control codes expected. Up, down, right, & left are displayed, Home, End, PgUp, & PgDn are not:
$ cat
up: ^[[A
down: ^[[B
right: ^[[C
left: ^[[D
Fn+left (Home): ^[[1~ (IRSSI ConnectBot & most SSH clients) or ^[[H (VX ConnectBot)
Fn+right (End): ^[[4~ (IRSSI ConnectBot & most SSH clients) or ^[[F (VX ConnectBot)
Fn+up (PgUp): ^[[5~
Fn+down (PgDown): ^[[6~

Using Terminal Emulator for a local shell on the tablet shows the same control codes as IRSSI ConnectBot.

I have tried changing everything in Settings that I think could be related, to no effect. This includes all the possible Emulation modes, the Directory shortcuts, and the Shift/Ctrl Fn options.

Let me know if there's any more information I can provide, or anything else I can do to help (I do not have a build environment set up for Android apps).

Thanks in advance,
Beolach

Can't import private ed25519 key

Error reported is Problem parsing imported private key. Also there is no possibility to generate this type of key. I suppose it's not supported, so if this is the case, please consider adding support for ed25519.

No ipv6 support

Inserting a sequence of ipv6 address such as 2620:0:1cfe:face:b00c::3 will result in connectbot warning about malformed hostname. Putting the ipv6 address in brackets has no effect. Connectbot still treats ipv6 in brackets as invalid hostname format.

strange behavior when connectbot and juicessh are both installed

When juicessh is also installed, selecting a saved connection in connectbot launches a dialog to choose which app to handle the ssh connection. Connectbot and juicessh are both listed as options. This seems to be unintended behavior. Expected is for connectbot to launch the saved connection regardless of what other apps are installed.

Import[/export] settings from[/to] ssh_config

I have a collection of hosts. It's very convenient to have aliases for them. I'm talking about standard feature that .ssh/config provides.

I think that it would be nice to reuse this file to have all hosts configuration imported just by importing .ssh/config. I would like to have export feature too, but it's much less important than the import.

Unconfirmed issues with app updates?

Hi,

I am unsure if this is the correct forum:

I had connectbot installed on my rooted Acer Iconia A1-810 tablet which runs Android 4.2.2

Overnight an auto update happened and this triggered Kaspersky on connectbot ssh-agent-patch on HEUR:Trojan-Ransom.AndroidOS.Svpeng.d

After a very quick google I decided to err on the side of caution and let Kaspersky remove the infected app. If I had more time I might have tried to grab a copy to provide for forensics for ClamAV. Unfortunately I didn't think to screenshot either :-( I kind of need this tablet to get things done so I had to secure it in a hurry...

The only reference to this malware I could find so far is discussed here: http://forum.dji.com/forum.php?mod=viewthread&tid=7083

This could well be a false positive but I figured you should probably know to do any extra scans as a precaution. For my part I have been running Kaspersky for a few years and never triggered it before

Sometimes the terminal gets stuck on the last line

I've noticed every once in a while the terminal gets stuck on the last line even just running "ls" I can't reproduce this reliably, though. However, user feedback on the 1.8.2 version shows that it's happening to others.

@leonerd we might need to fix this before v2.0

ssh-key picker is unable to navigate to other location.

File picker used to import ssh keys cannot navigate to other location.
It will be troublesome when ssh keys are not stored in /sdcard.

For user convenience, Connectbot should be able to use internal android file picker.
To be better, connectbot should prompt for which app to be used to pick the desired ssh-key.

Tested on connectbot version git-master-2014-03-02_12-38-08

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.