Comments (7)
Thank you for reporting the issue !
The issue is fixed in the github, now the library will throw an exception when the connection attempt is failed in the following scenarios,
- When there is a MqttSecurityException - One or more credentials are wrong
- When there is a UnKnownHostException - Host doesn't exist. For example, a wrong organization name is used to connect.
But it it receives host not reachable exception, it retries.
from iot-java.
Thank you for your continued work on this project; its a step in the right direction. I downloaded and compiled the new source code but still have issues. The exception that I am receiving happens to be a ConnectionRefused (including the callstack below). Do you need to be less selective on what you throw? Do you need a mechanism to say never retry? Basically sitting in an infinite loop.
Thank you for your efforts on this project.
03/23/16 09:11:35:720 ERROR: thread:146[Job_Executor2] Unable to connect to server (32103) - java.net.ConnectException: Connection refused [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:35:720 ERROR: thread:146[Job_Executor2] at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:79) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:35:720 ERROR: thread:146[Job_Executor2] at org.eclipse.paho.client.mqttv3.internal.SSLNetworkModule.start(SSLNetworkModule.java:82) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:35:721 ERROR: thread:146[Job_Executor2] at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:619) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:35:721 ERROR: thread:146[Job_Executor2] at java.lang.Thread.run(Thread.java:785) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:35:722 ERROR: thread:146[Job_Executor2] Caused by: java.net.ConnectException: Connection refused [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:35:722 ERROR: thread:146[Job_Executor2] at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:375) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:35:723 ERROR: thread:146[Job_Executor2] at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:236) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:35:723 ERROR: thread:146[Job_Executor2] at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:218) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:35:724 ERROR: thread:146[Job_Executor2] at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:35:724 ERROR: thread:146[Job_Executor2] at java.net.Socket.connect(Socket.java:658) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:35:725 ERROR: thread:146[Job_Executor2] at com.ibm.jsse2.as.connect(as.java:599) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:35:725 ERROR: thread:146[Job_Executor2] at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:70) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:35:726 ERROR: thread:146[Job_Executor2] ... 3 more [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:36:727 ERROR: thread:146[Job_Executor2] Mar 23, 2016 9:11:36 AM com.ibm.iotf.client.AbstractClient connect [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:36:727 ERROR: thread:146[Job_Executor2] INFO: Job_Executor2: Connecting client a:91m97d:streams_4027.3035948017 to ssl://91m97d.messaging.internetofthings.ibmcloud.com:8883 (attempt #2)... [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:36:727 ERROR: thread:146[Job_Executor2] [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:36:730 ERROR: thread:146[Job_Executor2] Unable to connect to server (32103) - java.net.ConnectException: Connection refused [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:36:730 ERROR: thread:146[Job_Executor2] at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:79) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:36:730 ERROR: thread:146[Job_Executor2] at org.eclipse.paho.client.mqttv3.internal.SSLNetworkModule.start(SSLNetworkModule.java:82) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:36:731 ERROR: thread:146[Job_Executor2] at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:619) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:36:731 ERROR: thread:146[Job_Executor2] at java.lang.Thread.run(Thread.java:785) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:36:731 ERROR: thread:146[Job_Executor2] Caused by: java.net.ConnectException: Connection refused [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:36:731 ERROR: thread:146[Job_Executor2] at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:375) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:36:732 ERROR: thread:146[Job_Executor2] at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:236) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:36:732 ERROR: thread:146[Job_Executor2] at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:218) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:36:732 ERROR: thread:146[Job_Executor2] at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:36:733 ERROR: thread:146[Job_Executor2] at java.net.Socket.connect(Socket.java:658) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:36:733 ERROR: thread:146[Job_Executor2] at com.ibm.jsse2.as.connect(as.java:599) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:36:733 ERROR: thread:146[Job_Executor2] at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:70) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:36:733 ERROR: thread:146[Job_Executor2] ... 3 more [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:37:190 TRACE: thread:128[StreamsExcecutorGC] ##### garbage collection is being suggested: active=0 threshold=50 [com.ibm.streams.admin.internal.api.StreamsExecutorGarbageCollection.run(StreamsExecutorGarbageCollection.java:59)]
03/23/16 09:11:37:273 TRACE: thread:128[StreamsExcecutorGC] ##### Memory usage, total memory 18808832 free 7454248 used 11354584 [com.ibm.streams.admin.internal.api.StreamsExecutorGarbageCollection.run(StreamsExecutorGarbageCollection.java:71)]
03/23/16 09:11:37:734 ERROR: thread:146[Job_Executor2] Mar 23, 2016 9:11:37 AM com.ibm.iotf.client.AbstractClient connect [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:37:735 ERROR: thread:146[Job_Executor2] INFO: Job_Executor2: Connecting client a:91m97d:streams_4027.3035948017 to ssl://91m97d.messaging.internetofthings.ibmcloud.com:8883 (attempt #3)... [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:37:735 ERROR: thread:146[Job_Executor2] [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:37:737 ERROR: thread:146[Job_Executor2] Unable to connect to server (32103) - java.net.ConnectException: Connection refused [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:37:738 ERROR: thread:146[Job_Executor2] at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:79) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:37:738 ERROR: thread:146[Job_Executor2] at org.eclipse.paho.client.mqttv3.internal.SSLNetworkModule.start(SSLNetworkModule.java:82) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:37:738 ERROR: thread:146[Job_Executor2] at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:619) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:37:738 ERROR: thread:146[Job_Executor2] at java.lang.Thread.run(Thread.java:785) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:37:739 ERROR: thread:146[Job_Executor2] Caused by: java.net.ConnectException: Connection refused [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:37:739 ERROR: thread:146[Job_Executor2] at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:375) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:37:739 ERROR: thread:146[Job_Executor2] at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:236) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:37:739 ERROR: thread:146[Job_Executor2] at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:218) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:37:740 ERROR: thread:146[Job_Executor2] at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:37:740 ERROR: thread:146[Job_Executor2] at java.net.Socket.connect(Socket.java:658) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:37:740 ERROR: thread:146[Job_Executor2] at com.ibm.jsse2.as.connect(as.java:599) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:37:740 ERROR: thread:146[Job_Executor2] at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:70) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:37:741 ERROR: thread:146[Job_Executor2] ... 3 more [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:38:742 ERROR: thread:146[Job_Executor2] Mar 23, 2016 9:11:38 AM com.ibm.iotf.client.AbstractClient connect [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:38:742 ERROR: thread:146[Job_Executor2] INFO: Job_Executor2: Connecting client a:91m97d:streams_4027.3035948017 to ssl://91m97d.messaging.internetofthings.ibmcloud.com:8883 (attempt #4)... [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:38:742 ERROR: thread:146[Job_Executor2] [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:38:745 ERROR: thread:146[Job_Executor2] Unable to connect to server (32103) - java.net.ConnectException: Connection refused [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:38:745 ERROR: thread:146[Job_Executor2] at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:79) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:38:745 ERROR: thread:146[Job_Executor2] at org.eclipse.paho.client.mqttv3.internal.SSLNetworkModule.start(SSLNetworkModule.java:82) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:38:745 ERROR: thread:146[Job_Executor2] at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:619) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:38:746 ERROR: thread:146[Job_Executor2] at java.lang.Thread.run(Thread.java:785) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:38:746 ERROR: thread:146[Job_Executor2] Caused by: java.net.ConnectException: Connection refused [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:38:746 ERROR: thread:146[Job_Executor2] at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:375) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:38:746 ERROR: thread:146[Job_Executor2] at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:236) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:38:747 ERROR: thread:146[Job_Executor2] at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:218) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:38:747 ERROR: thread:146[Job_Executor2] at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:38:747 ERROR: thread:146[Job_Executor2] at java.net.Socket.connect(Socket.java:658) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:38:748 ERROR: thread:146[Job_Executor2] at com.ibm.jsse2.as.connect(as.java:599) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:38:748 ERROR: thread:146[Job_Executor2] at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:70) [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:38:748 ERROR: thread:146[Job_Executor2] ... 3 more [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
03/23/16 09:11:39:749 ERROR: thread:146[Job_Executor2] Mar 23, 2016 9:11:39 AM com.ibm.iotf.client.AbstractClient connect [com.ibm.streams.admin.internal.api.trace.ConsoleTraceOutputStream.writeError(ConsoleTraceOutputStream.java:145)]
from iot-java.
Would you be opposed to a solution where a new signature for connect is introduced? void connect(boolean autoRetry). The current behavior can be the default. See below. I think that you have to give the option to the caller if they want to retry automatically.
/**
* Connect to the IBM Watson IoT Platform
* @throws MqttSecurityException
*/
public void connect() throws MqttException {
connect(true);
}
/**
* Connect to the IBM Watson IoT Platform
* @param autoRetry
* @throws MqttSecurityException
*/
public void connect(boolean autoRetry) throws MqttException {
final String METHOD = "connect";
boolean tryAgain = true;
int connectAttempts = 0;
if (getOrgId() == "quickstart") {
configureMqtt();
}
else {
configureMqtts();
}
while (tryAgain) {
connectAttempts++;
LoggerUtility.info(CLASS_NAME, METHOD, "Connecting client "+ this.clientId + " to " + mqttAsyncClient.getServerURI() +
" (attempt #" + connectAttempts + ")...");
try {
mqttAsyncClient.connect(mqttClientOptions).waitForCompletion(1000 * 60);
} catch (MqttSecurityException e) {
System.err.println("Looks like one or more connection parameters are wrong !!!");
throw e;
} catch (MqttException e) {
Throwable t = e.getCause();
if(!autoRetry || (t != null && t instanceof java.net.UnknownHostException)) {
// We must give up as the host doesn't exist.
throw e;
}
e.printStackTrace();
}
if (mqttAsyncClient.isConnected()) {
LoggerUtility.info(CLASS_NAME, METHOD, "Successfully connected "
+ "to the IBM Watson IoT Platform");
if (LoggerUtility.isLoggable(Level.FINEST)) {
LoggerUtility.log(Level.FINEST, CLASS_NAME, METHOD,
" * Connection attempts: " + connectAttempts);
}
tryAgain = false;
} else {
waitBeforeNextConnectAttempt(connectAttempts);
}
}
}
from iot-java.
Thank you, I have added the overloaded method now in DeviceClient, ApplicationClient and GatewayClient.
from iot-java.
Thank you for adding this feature. Do you know when the next official release is expected?
from iot-java.
Hi Steve,
The next release will be in maven, and will take ~2-3 weeks.
Thanks !
Sathish
from iot-java.
A new version of the library is released that contains the fix - https://github.com/ibm-messaging/iot-java/releases/tag/0.0.12. Hence closing the issue.
from iot-java.
Related Issues (20)
- Write some decent documentation HOT 3
- Support configuration by yaml file
- Bring code coverage up to 80% HOT 2
- Sort out the samples HOT 1
- Publish to Maven Central HOT 1
- Core Rewrite
- Update samples
- sample code correction: DeviceClient is not in "app" but "device"? HOT 1
- Automatic-Reconnect function is not working in our environment HOT 9
- Connect timeout problems HOT 1
- GatewayClient Connection lost: MqttException - Unexpected error (6) HOT 1
- mqtt client gets "stuck" in connect loop with exception code REASON_CODE_CONNECT_IN_PROGRESS HOT 1
- Clean up code whitespace/indentation
- Add ability to set memory persistence and buffer size in underlying MQTTAsyncClient HOT 1
- getEventsMappedToPhysicalInterface has wrong return type HOT 1
- 0.2.7 is not available for Maven HOT 1
- Q: is there a transition guide from 0.2.6? HOT 4
- This project is dead - but you can use the MQTT stream directly HOT 2
- Use latest version of Paho MQTTv3 Java client library (release 1.2.4) HOT 1
- cleanSession option wrong setup HOT 1
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 iot-java.