Giter VIP home page Giter VIP logo

sharetocomputer's People

Contributors

drramm avatar eboye avatar jimmod avatar poussinou avatar tacothedank avatar waldist 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

sharetocomputer's Issues

Addition of Categories and share history features to share to computer

Introduction

Share to Computer is an Android application that makes sharing files from mobile phones to computer easier. You just need to select the files you want to send and share to computer. This will generate a link to be inputted on the computer browser where you can download the file shared.

Components

My Suggestion is on the

  • Landing page

Proposal

ShareToComputer is a decent application that reduces the stress most users go through just to send a piece of file to their computer. I believe the application can still be improved.

  • Categories- Trying to send files on ShareToComputer is kind of stressful if the files are not recent or together. That is why I propose that the files should be categorized. The categories will include Music, Videos, Photo Gallery, Files. Each of these categories will contain similar files. For example, the music category will include all music files. This is the same with the Video and photo gallery. The Files category will include files that can not be categorized.

  • Share History- Users can only send files but can’t see what they have sent in the future. I propose the addition of a Share history feature that will display all sent files and the date sent.

Mockups/Examples

Comb19062019133732.jpg

The above is how I want the categories feature to be enhanced. You can see that the music button has only music files in there. That will be the same for other categories.

Comb19062019133747.jpg

This image is how I want the Share history to be implemented. You can see that the files sent can be seen and the date sent plus the device sent to.

Benefits

Categories- This is an important feature that will reduce the time spent in finding the file to send. Imagine someone that want to send multiple video files in different locations, with the current mode of the application that is impossible. The user have to be selecting the video in each of the categories and sent. With the categories feature, the user can see all the videos on the device and choose anyone to send. It saves time and stress used to search and share videos one after the other.

Share History- This is another important feature that will let users see their past files sent. It helps to avoid situation of double sending. I often like transferring some of my pictures to my computer to increase available storage space. The presence of a history feature will make me avoid situations where I send a file twice. I can easily check the history and see the files I have sent. You can also see the device name you sent the files to.

Conclusion

The application is one useful one because it cuts out the use of external devices such as cables, flash drives to send things between your phone and computer. Implementing my suggestions will make it more desirable for the general public. It will reduce the time and also cut out stress associated with finding the files to send.

Bug: App crashed when I tried to share a file after using a function in the menu tab.

Describe the bug

When I click on the settings page and checked the about tab, I clicked back to use the share file feature. After I clicked the share file and I clicked on a file to share, the app crashed. So I tried the same thing many times and it happened every time.

Steps to reproduce.

  • Launch the app.

  • Click on the menu icon,

*Click any option in the menu

  • Go back to share file

  • Select any file and see the error

Expected Behaviour

I don't expect an action like that to cause the app to crash.

Screen recording.

https://youtu.be/4FXu2fydYmc

Devices and Versions)

  • Device [Gionee X1]

  • Version [7.0]

  • App version [1.1.1]

Log

2019-06-23 23:28:37.820 I/com.jim.sharetocomputer.Application[38]: *QR Code version: 2
2019-06-23 23:28:37.843 I/com.jim.sharetocomputer.logging.KoinLogger[28]: [init] declare Android Context
2019-06-23 23:28:37.854 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind type:'android.content.Context' ~ [type:Single,primary_type:'android.content.Context']
2019-06-23 23:28:37.855 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind type:'android.app.Application' ~ [type:Single,primary_type:'android.app.Application']
2019-06-23 23:28:37.862 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind qualifier:'PORT' ~ [type:Single,name:'PORT', primary_type:'java.lang.Integer']
2019-06-23 23:28:37.864 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind type:'com.jim.sharetocomputer.webserver.WebServerText' ~ [type:Factory,primary_type:'com.jim.sharetocomputer.webserver.WebServerText']
2019-06-23 23:28:37.865 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind type:'com.jim.sharetocomputer.webserver.WebServerSingleFile' ~ [type:Factory,primary_type:'com.jim.sharetocomputer.webserver.WebServerSingleFile']
2019-06-23 23:28:37.866 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind type:'com.jim.sharetocomputer.webserver.WebServerMultipleFiles' ~ [type:Factory,primary_type:'com.jim.sharetocomputer.webserver.WebServerMultipleFiles']
2019-06-23 23:28:37.868 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind type:'com.jim.sharetocomputer.MainViewModel' ~ [type:Factory,primary_type:'com.jim.sharetocomputer.MainViewModel']
2019-06-23 23:28:37.870 I/com.jim.sharetocomputer.logging.KoinLogger[28]: total 7 registered definitions
2019-06-23 23:28:37.871 I/com.jim.sharetocomputer.logging.KoinLogger[28]: load modules in 8.81477 ms
2019-06-23 23:28:37.922 I/com.jim.sharetocomputer.MainActivity[46]: onCreate
2019-06-23 23:28:38.115 W/com.jim.sharetocomputer.MainActivity[92]: Unknown action: android.intent.action.MAIN|null
2019-06-23 23:28:38.155 I/com.jim.sharetocomputer.MainFragment[46]: onCreate
2019-06-23 23:28:38.207 I/com.jim.sharetocomputer.ext.ContextExtKt[51]: IP address: 192.168.43.225
2019-06-23 23:28:38.330 I/com.jim.sharetocomputer.MainViewModel[81]: no request
2019-06-23 23:28:38.336 I/com.jim.sharetocomputer.ext.ContextExtKt[51]: IP address: 192.168.43.225
2019-06-23 23:28:44.861 I/com.jim.sharetocomputer.MainFragment[73]: onDestroy
2019-06-23 23:28:48.216 I/com.jim.sharetocomputer.MainFragment[46]: onCreate
2019-06-23 23:28:48.231 I/com.jim.sharetocomputer.MainViewModel[81]: no request
2019-06-23 23:28:48.236 I/com.jim.sharetocomputer.ext.ContextExtKt[51]: IP address: 192.168.43.225
2019-06-23 23:28:50.754 I/com.jim.sharetocomputer.MainViewModel[28]: Select File
2019-06-23 23:28:52.896 I/com.jim.sharetocomputer.ext.FragmentHelper[75]: onActivityResult 0|-1|null
2019-06-23 23:28:52.898 I/com.jim.sharetocomputer.MainViewModel[54]: *Result: -1|null
2019-06-23 23:28:52.902 I/com.jim.sharetocomputer.MainViewModel[95]: Starting web service
2019-06-23 23:28:52.951 I/com.jim.sharetocomputer.WebServerService[48]: onStartCommand
2019-06-23 23:28:52.957 I/com.jim.sharetocomputer.ext.ContextExtKt[51]: IP address: 192.168.43.225
2019-06-23 23:28:52.973 I/com.jim.sharetocomputer.webserver.WebServer[39]: Starting WebServer
2019-06-23 23:28:53.001 E/com.jim.sharetocomputer.logging.MyUncaughtExceptionHandler[5]: uncaughtException
java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@6d57891
	at android.graphics.Canvas.throwIfCannotDraw(Canvas.java:1271)
	at android.view.DisplayListCanvas.throwIfCannotDraw(DisplayListCanvas.java:257)
	at android.graphics.Canvas.drawBitmap(Canvas.java:1415)
	at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:545)
	at android.view.View.getDrawableRenderNode(View.java:17654)
	at android.view.View.drawBackground(View.java:17578)
	at android.view.View.draw(View.java:17347)
	at android.view.View.updateDisplayListIfDirty(View.java:16302)
	at android.view.View.draw(View.java:17113)
	at android.view.ViewGroup.drawChild(ViewGroup.java:3893)
	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3679)
	at android.view.View.updateDisplayListIfDirty(View.java:16294)
	at android.view.View.draw(View.java:17113)
	at android.view.ViewGroup.drawChild(ViewGroup.java:3893)
	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3679)
	at android.view.View.updateDisplayListIfDirty(View.java:16294)
	at android.view.View.draw(View.java:17113)
	at android.view.ViewGroup.drawChild(ViewGroup.java:3893)
	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3679)
	at android.view.View.updateDisplayListIfDirty(View.java:16294)
	at android.view.View.draw(View.java:17113)
	at android.view.ViewGroup.drawChild(ViewGroup.java:3893)
	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3679)
	at android.view.View.updateDisplayListIfDirty(View.java:16294)
	at android.view.View.draw(View.java:17113)
	at android.view.ViewGroup.drawChild(ViewGroup.java:3893)
	at androidx.drawerlayout.widget.DrawerLayout.drawChild(DrawerLayout.java:1426)
	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3679)
	at android.view.View.draw(View.java:17375)
	at android.view.View.updateDisplayListIfDirty(View.java:16302)
	at android.view.View.draw(View.java:17113)
	at android.view.ViewGroup.drawChild(ViewGroup.java:3893)
	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3679)
	at android.view.View.updateDisplayListIfDirty(View.java:16294)
	at android.view.View.draw(View.java:17113)
	at android.view.ViewGroup.drawChild(ViewGroup.java:3893)
	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3679)
	at android.view.View.updateDisplayListIfDirty(View.java:16294)
	at android.view.View.draw(View.java:17113)
	at android.view.ViewGroup.drawChild(ViewGroup.java:3893)
	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3679)
	at android.view.View.updateDisplayListIfDirty(View.java:16294)
	at android.view.View.draw(View.java:17113)
	at android.view.ViewGroup.drawChild(ViewGroup.java:3893)
	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3679)
	at android.view.View.updateDisplayListIfDirty(View.java:16294)
	at android.view.View.draw(View.java:17113)
	at android.view.ViewGroup.drawChild(ViewGroup.java:3893)
	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3679)
	at com.android.internal.policy.DecorView.dispatchDraw(DecorView.java:792)
	at android.view.View.draw(View.java:17375)
	at com.android.internal.policy.DecorView.draw(DecorView.java:778)
	at android.view.View.updateDisplayListIfDirty(View.java:16302)
	at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:661)
	at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:667)
	at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:775)
	at android.view.ViewRootImpl.draw(ViewRootImpl.java:3209)
	at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:3002)
	at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2590)
	at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1479)
	at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7019)
	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:907)
	at android.view.Choreographer.doCallbacks(Choreographer.java:709)
	at android.view.Choreographer.doFrame(Choreographer.java:644)
	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:893)
	at android.os.Handler.handleCallback(Handler.java:836)
	at android.os.Handler.dispatchMessage(Handler.java:103)
	at android.os.Looper.loop(Looper.java:203)
	at android.app.ActivityThread.main(ActivityThread.java:6269)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924)```

Share to Computer v1.1.0 - The application suddenly stops when sharing contact files

Actual behaviour

Supposedly, when I want to share contact files, that capability must be able to be done.

Expected behaviour

The application suddenly stopped when I shared files contacts, so the ability to share contact files couldn't be done. Even though I have tried doing it repeatedly, the same problem still occurs.

Step to reproduce

  • Install and open the application.

  • Select and open the "Share files" feature, then select the contact you want to share.

  • Then you will find problems like I have experienced.

Information

  • Device: Nubia n2 lite
  • Android version: 8.1.0
  • Application version: 1.1.0

Recording of the bug

https://youtu.be/7CgtKrszV5U

Sharing while Tethering

Currently it is not possible to share files/images over tethering (device with STC creates WLAN hotspot), it just asks for a WLAN connection.

Possible situation would be that there's no access to an AP which allows connections to other devices.

ShareToComputer application cant share to computer

Expected behavior:

I expected the application to send my chosen file to my computer when input the URL given to my browser.

Actual behavior

When I tried sending my file from the file manager using the share to computer application, then the application shows a URL requesting me to input it to my computer browser, I input it but it was coming up with information that site cannot be reached.

How to reproduce

Here is every possible detail to reproduce the bug.

  1. Open my file manager
  2. Long click on a file and clicking on the file manager share icon
  3. Choosing "Share to my computer" application
  4. "Share to my computer" application popping up a UR L expected to insert on my computer browser
  5. Noticing the bug:

This site can’t be reached
The webpage at http://0.0.0.0:8080/ might be temporarily down or it may have moved permanently to a new web address.

  • App Version: V1.01
  • Operating system: Android 7.0

Recording the bug

Step 1: Smartphone Transfer

https://youtu.be/8VKlZ_hiFHs

Computer recieve bug

https://youtu.be/L6yoAFrF9_M

Add shear in group and language option to share to computer app.

proposal
My suggestion is to add shear in group and language option to this app.
Mockups/Examples
After adding shear in group option to this app.
PicsArt_07-11-11 35 48
After adding language option to this app
PicsArt_07-11-11 34 30
Shearit app has both these options.
Benefits of adding these two options

1.The benefit of shear in group option is that when we need to shear any file to many people we have to send the file to people one by one of we have shear in group option we can make the group of all these people and send the file in the group. This option leads to reduce the wastage of time and quick shear to many people.
2. The benefit of adding language option is that Now by implementing Language feature, user can use the app in many languages. As we all know that there are many languages in this globe and many user are not comfortable with english language. So this feature can help user to feel comfort with his mother language.

Share To Computer server drops out at about 400 megs

While it repeated several times, I simply launched SuperBeam and that app transferred properly.
Android 7.0 on LG Fiesta 2 cellphone from Tracfone.
Kernel version 3.18.31,
Build number NRD90U,
Software version L164V10a.

How to produce failure
Launched STC,
I tapped 'Share Image/Video',
Chose to complete action using Gallery
I selected the proper 'album',
I selected 99 files (select all),
Clicked ok.
STC window now shows the QR code and URL
Went to my PC,
I opened a browser (Chromium Version 75.0.3770.90 (Official Build) Built on Ubuntu , running on Ubuntu 18.04 (64-bit), Browser and PC is on same network;
I went to the address shown by STC;
Clicked to download all files as zip.
STC transfer fails, and Chromium deletes the unconfirmed download.
When I returned to looking at the cellphone, STC is no longer showing the URL/QR code window, it is back at the file type selection screen.

This repeated 2 more times, and then I gave up using STC for the transfer.

Total file size for a Superbeam transfer which was successful is 649 megs
The URL from Superbeam is identical to the STC URL.

Request header: content-length

This will allow browser and download tools show a loading bar, tell me the process and keep me patient.
More importantly, without content length,it would just wait for the additional bit that would never come.

Unicode filename will cause error

when sharing a file to the computer that has unicode character
it may have wrong filename.
just look at the screenshot.
maybe you don't understand chinese, but just take a look at the filename.
The filename of files are ok,but the name displayed is not ok.
maybe the html template needs sth like

Use alternative port when port 8080 is not available

Hi there, thanks for your effort on this simple yet horrific app. However I can confirm that if 8080/tcp is already binded by another application the app will exit (crash?) without giving a hint.

How to reproduce:

Run an app that binds to 0.0.0.0:8080 (e.g. privoxy or Drony). Then attempts to share something through ShareToComputer.

My suggestion is to provide the user an interface to assign what port to bind to. Or try port 8081, 8082... until it reaches an available port.

Share to computer v1.1.1 - Using the "SHARE IMAGE / VIDEO" feature in landscape view mode, makes the application CRASH.

Actual behaviour

The "Share image / video" feature cannot be used in landscape view mode. And this application suddenly stopped when I clicked or used the feature in landscape view mode.

Expected behaviour

After switching to landscape display mode, then I clicked on the "Share image / video" feature. This application still works well, so the ability to share pictures or videos can be done.

Step to reproduce

  • Install and open the application.

  • Switch to "landscape" display mode.

  • Click on the "Share image/video" feature.

  • Then you will find problems like I have experienced.

Information

  • Device: Nubia n2 lite
  • Android version: 8.1.0
  • Application version: 1.1.1

Recording of the bug

https://youtu.be/zw7R4te5Jys

Secure http connection?

Any chance of native https support maybe via Let's encrypt or something? Can I install my own cert and send over https? I wouldnt trust sending information even on a home network over an unsecured connection.

share link or text

Great app. Thank you

Can we just share link or text?

Often I share small quick things to my tv browser. This would be a great way to share links quickly.

Bug: App crashed when I click on select file and click phone back button.

Describe the bug

When I clicked on the 'select' file and then clicked on the phone back button 'to cancel' the app crashed

Steps to reproduce.

  • Launch the app.

  • Click on Select File,

  • Then click the phone back button to cancel

  • And see the error

Expected Behaviour

I expected that the app should function normally and canceled with the back button.

Screen recording.

https://youtu.be/bGiD99YbJxk

Devices and Versions):)

  • Device: [Gionee, X1]

  • Version [7.0]

  • App version [1.0.1]

Log

 Process: com.jim.sharetocomputer, PID: 22689
 java.lang.IllegalStateException: result.resultData must not be null
	at b.c.a.k.b(:12)
	at d.b.b.a.a.a()
	at e.a.O.run(:2)
	at e.a.c.b.a()
	at e.a.c.b.a()
	at e.a.c.b$a.run(:13)```

Error Wi-Fi connection required although connected to Wi-Fi

Reported via email

Steps

  • Download application from F-Droid
  • Connected to Wi-Fi
  • Click share button (image / files)

Actual

Showing "Wi-Fi connection required"

Expected

Able to share file / image

Information

  • Device: LG g3 Verizon
  • Android version: Lineage OS 15.X (mod Android 8.1)
  • Application version: 1.1.2(1120)

Log

2019-07-13 21:11:28.588 I/com.jim.sharetocomputer.Application[37]: Application is starting
2019-07-13 21:11:28.591 I/com.jim.sharetocomputer.Application[38]: *QR Code version: 2
2019-07-13 21:11:28.609 I/com.jim.sharetocomputer.logging.KoinLogger[28]: [init] declare Android Context
2019-07-13 21:11:28.618 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind type:'android.content.Context' ~ [type:Single,primary_type:'android.content.Context']
2019-07-13 21:11:28.619 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind type:'android.app.Application' ~ [type:Single,primary_type:'android.app.Application']
2019-07-13 21:11:28.624 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind qualifier:'PORT' ~ [type:Single,name:'PORT', primary_type:'java.lang.Integer']
2019-07-13 21:11:28.625 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind type:'com.jim.sharetocomputer.webserver.WebServerText' ~ [type:Factory,primary_type:'com.jim.sharetocomputer.webserver.WebServerText']
2019-07-13 21:11:28.626 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind type:'com.jim.sharetocomputer.webserver.WebServerSingleFile' ~ [type:Factory,primary_type:'com.jim.sharetocomputer.webserver.WebServerSingleFile']
2019-07-13 21:11:28.627 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind type:'com.jim.sharetocomputer.webserver.WebServerMultipleFiles' ~ [type:Factory,primary_type:'com.jim.sharetocomputer.webserver.WebServerMultipleFiles']
2019-07-13 21:11:28.627 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind type:'com.jim.sharetocomputer.MainViewModel' ~ [type:Factory,primary_type:'com.jim.sharetocomputer.MainViewModel']
2019-07-13 21:11:28.629 I/com.jim.sharetocomputer.logging.KoinLogger[28]: total 7 registered definitions
2019-07-13 21:11:28.630 I/com.jim.sharetocomputer.logging.KoinLogger[28]: load modules in 4.997031 ms
2019-07-13 21:11:28.675 I/com.jim.sharetocomputer.MainActivity[46]: onCreate
2019-07-13 21:11:28.865 W/com.jim.sharetocomputer.MainActivity[92]: Unknown action: android.intent.action.MAIN|null
2019-07-13 21:11:28.901 I/com.jim.sharetocomputer.MainFragment[37]: onCreate
2019-07-13 21:11:28.936 I/com.jim.sharetocomputer.MainViewModel[121]: no request
2019-07-13 21:11:37.226 I/com.jim.sharetocomputer.QrCodeFragment[43]: onCreate
2019-07-13 21:11:37.272 I/com.jim.sharetocomputer.MainFragment[48]: onDestroy
2019-07-13 21:11:44.647 I/com.jim.sharetocomputer.ext.FragmentHelper[75]: onActivityResult 49374|0|null
2019-07-13 21:11:44.721 I/com.jim.sharetocomputer.MainFragment[37]: onCreate
2019-07-13 21:11:44.744 I/com.jim.sharetocomputer.MainViewModel[121]: no request
2019-07-13 21:11:44.751 I/com.jim.sharetocomputer.QrCodeFragment[58]: onDestroy
2019-07-13 21:11:46.382 I/com.jim.sharetocomputer.MainViewModel[40]: Select File
2019-07-13 21:11:50.449 I/com.jim.sharetocomputer.MainViewModel[40]: Select File
2019-07-13 21:11:51.499 I/com.jim.sharetocomputer.MainViewModel[56]: Select Media
2019-07-13 21:11:54.159 I/com.jim.sharetocomputer.SettingFragment[26]: onCreate
2019-07-13 21:11:54.174 I/com.jim.sharetocomputer.MainFragment[48]: onDestroy
2019-07-13 21:11:59.593 I/com.jim.sharetocomputer.ext.ContextExtKt[51]: IP address: 172.29.189.12

Bug: App crashed when I use the Scan QR code feature

Describe the bug

When I use the QR code scanner to scan on my second device, the app crashed after it scanning.

Steps to reproduce.

  • Launch the app.

  • Click on the menu icon,

  • Then click the scan QR code to scan another phone

  • And see the error

Expected Behaviour

I expect that the scan feature to work successfully without any fatal error.

Screen recording.

https://youtu.be/5qE5oZq2lFE

Devices and Versions)

  • Device [itel]

  • Version [6.1]

  • App version [1.1.1]

Log

06-20 23:24:31.636 19492 20271 E AndroidRuntime: Process: com.jim.sharetocomputer, PID: 19492
06-20 23:24:31.636 19492 20271 E AndroidRuntime: java.net.ConnectException: failed to connect to localhost/127.0.0.1 (port 8080): connect failed: ECONNREFUSED (Connection refused)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: 	at libcore.io.IoBridge.connect(IoBridge.java:124)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: 	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: 	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:452)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: 	at java.net.Socket.connect(Socket.java:884)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: 	at com.android.okhttp.internal.Platform.connectSocket(Platform.java:117)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: 	at com.android.okhttp.internal.http.SocketConnector.connectRawSocket(SocketConnector.java:160)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: 	at com.android.okhttp.internal.http.SocketConnector.connectCleartext(SocketConnector.java:67)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: 	at com.android.okhttp.Connection.connect(Connection.java:152)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: 	at com.android.okhttp.Connection.connectAndSetOwner(Connection.java:185)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: 	at com.android.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:128)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: 	at com.android.okhttp.internal.http.HttpEngine.nextConnection(HttpEngine.java:341)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: 	at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:330)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: 	at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:248)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: 	at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:433)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: 	at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:384)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: 	at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:231)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: 	at java.net.URL.openStream(URL.java:470)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: 	at com.jim.sharetocomputer.DownloadService.a()
06-20 23:24:31.636 19492 20271 E AndroidRuntime: 	at com.jim.sharetocomputer.DownloadService.a()
06-20 23:24:31.636 19492 20271 E AndroidRuntime: 	at c.c.a.d.a(:5)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: 	at e.g.a()
06-20 23:24:31.636 19492 20271 E AndroidRuntime: 	at e.g.a(:84)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: 	at com.jim.sharetocomputer.DownloadService.a(:15)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: 	at c.c.a.e.b(:2)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: 	at e.b.b.a.a.a()
06-20 23:24:31.636 19492 20271 E AndroidRuntime: 	at f.a.O.run(:2)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: 	at f.a.c.b.a()
06-20 23:24:31.636 19492 20271 E AndroidRuntime: 	at f.a.c.b.a()
06-20 23:24:31.636 19492 20271 E AndroidRuntime: 	at f.a.c.b$a.run(:13)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: Caused by: android.system.ErrnoException: connect failed: ECONNREFUSED (Connection refused)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: 	at libcore.io.Posix.connect(Native Method)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: 	at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:111)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: 	at libcore.io.IoBridge.connectErrno(IoBridge.java:137)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: 	at libcore.io.IoBridge.connect(IoBridge.java:122)```

Bug: the app crashed when I pick a file to select, then went to check the about page and used back button.

Describe the bug

I used the share file and I picked an image to share. After the link has been generated, I click the menu and access the about page. When I used the back arrow button to go back, the app crashed.

Steps to reproduce.

  • Launch the app

  • Click on share file

  • Select any file

  • Click on menu icon and click on about function

  • Then click back function on the app or phone back button and see the error

Expected Behaviour

I expect the app to take me back to the previous page, so that I may continue the process.

Screen recording.

https://youtu.be/ZMFDNXhELlM

Devices and Versions)

  • Device [Gionee X1]

  • Version [7.0]

  • App version [1.1.1]

Log

2019-06-24 09:45:40.808 I/com.jim.sharetocomputer.Application[38]: *QR Code version: 2
2019-06-24 09:45:40.836 I/com.jim.sharetocomputer.logging.KoinLogger[28]: [init] declare Android Context
2019-06-24 09:45:40.847 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind type:'android.content.Context' ~ [type:Single,primary_type:'android.content.Context']
2019-06-24 09:45:40.848 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind type:'android.app.Application' ~ [type:Single,primary_type:'android.app.Application']
2019-06-24 09:45:40.853 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind qualifier:'PORT' ~ [type:Single,name:'PORT', primary_type:'java.lang.Integer']
2019-06-24 09:45:40.854 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind type:'com.jim.sharetocomputer.webserver.WebServerText' ~ [type:Factory,primary_type:'com.jim.sharetocomputer.webserver.WebServerText']
2019-06-24 09:45:40.855 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind type:'com.jim.sharetocomputer.webserver.WebServerSingleFile' ~ [type:Factory,primary_type:'com.jim.sharetocomputer.webserver.WebServerSingleFile']
2019-06-24 09:45:40.856 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind type:'com.jim.sharetocomputer.webserver.WebServerMultipleFiles' ~ [type:Factory,primary_type:'com.jim.sharetocomputer.webserver.WebServerMultipleFiles']
2019-06-24 09:45:40.857 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind type:'com.jim.sharetocomputer.MainViewModel' ~ [type:Factory,primary_type:'com.jim.sharetocomputer.MainViewModel']
2019-06-24 09:45:40.867 I/com.jim.sharetocomputer.logging.KoinLogger[28]: total 7 registered definitions
2019-06-24 09:45:40.868 I/com.jim.sharetocomputer.logging.KoinLogger[28]: load modules in 5.310058 ms
2019-06-24 09:45:40.891 I/com.jim.sharetocomputer.WebServerService[48]: onStartCommand
2019-06-24 09:45:40.913 I/com.jim.sharetocomputer.ext.ContextExtKt[51]: IP address: 0.0.0.0
2019-06-24 09:45:40.954 I/com.jim.sharetocomputer.WebServerService[111]: onDestroy
2019-06-24 09:46:13.370 I/com.jim.sharetocomputer.MainActivity[46]: onCreate
2019-06-24 09:46:13.627 W/com.jim.sharetocomputer.MainActivity[92]: Unknown action: android.intent.action.MAIN|null
2019-06-24 09:46:13.656 I/com.jim.sharetocomputer.MainFragment[46]: onCreate
2019-06-24 09:46:13.720 I/com.jim.sharetocomputer.ext.ContextExtKt[51]: IP address: 0.0.0.0
2019-06-24 09:46:13.953 I/com.jim.sharetocomputer.MainViewModel[81]: no request
2019-06-24 09:46:13.959 I/com.jim.sharetocomputer.ext.ContextExtKt[51]: IP address: 0.0.0.0
2019-06-24 09:46:16.661 I/com.jim.sharetocomputer.QrCodeFragment[43]: onCreate
2019-06-24 09:46:16.789 I/com.jim.sharetocomputer.MainFragment[73]: onDestroy
2019-06-24 09:46:25.607 I/com.jim.sharetocomputer.ext.FragmentHelper[75]: onActivityResult 49374|-1|android.util.MapCollections$KeySet@b471c403
2019-06-24 09:46:25.762 I/com.jim.sharetocomputer.QrCodeFragment[70]: Start download service to download from: QrCodeInfo(version=2, url=http://0.0.0.0:8080)
2019-06-24 09:46:25.775 I/com.jim.sharetocomputer.DownloadService[60]: onStartCommand
2019-06-24 09:46:25.902 E/com.jim.sharetocomputer.DownloadService[157]: Error on downloading and parsing info
java.net.ConnectException: failed to connect to localhost/127.0.0.1 (port 8080): connect failed: ECONNREFUSED (Connection refused)
	at libcore.io.IoBridge.connect(IoBridge.java:124)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:452)
	at java.net.Socket.connect(Socket.java:884)
	at com.android.okhttp.internal.Platform.connectSocket(Platform.java:117)
	at com.android.okhttp.internal.http.SocketConnector.connectRawSocket(SocketConnector.java:160)
	at com.android.okhttp.internal.http.SocketConnector.connectCleartext(SocketConnector.java:67)
	at com.android.okhttp.Connection.connect(Connection.java:152)
	at com.android.okhttp.Connection.connectAndSetOwner(Connection.java:185)
	at com.android.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:128)
	at com.android.okhttp.internal.http.HttpEngine.nextConnection(HttpEngine.java:341)
	at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:330)
	at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:248)
	at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:433)
	at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:384)
	at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:231)
	at java.net.URL.openStream(URL.java:470)
	at com.jim.sharetocomputer.DownloadService.downloadInfo(DownloadService.kt:153)
	at com.jim.sharetocomputer.DownloadService.access$downloadInfo(DownloadService.kt:39)
	at com.jim.sharetocomputer.DownloadService$onHandleIntent$2.invokeSuspend(DownloadService.kt:123)
	at com.jim.sharetocomputer.DownloadService$onHandleIntent$2.invoke(DownloadService.kt)
	at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:91)
	at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:155)
	at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
	at com.jim.sharetocomputer.DownloadService.onHandleIntent(DownloadService.kt:121)
	at com.jim.sharetocomputer.DownloadService$onStartCommand$1.invokeSuspend(DownloadService.kt:63)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(Dispatched.kt:238)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:594)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.access$runSafely(CoroutineScheduler.kt:60)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:742)
Caused by: android.system.ErrnoException: connect failed: ECONNREFUSED (Connection refused)
	at libcore.io.Posix.connect(Native Method)
	at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:111)
	at libcore.io.IoBridge.connectErrno(IoBridge.java:137)
	at libcore.io.IoBridge.connect(IoBridge.java:122)

The app crashed when I canceled the QR code scanning process after selecting a file to share.

Expected behavior

I expected that I could cancel the QR code scanning process after selecting a file to share.

Actual behavior

After selecting a file to share, when I canceled the QR code scanning process, then the app crashed.

How to reproduce

Here is every possible detail to reproduce the bug.

  1. Open the app.
  2. Select a file using "SHARE IMAGE/VIDEO" or "SHARE IMAGE".
  3. Now go to the main menu of the app and click on "Scan QR code".
  4. Your phone's rear camera will open to scan the QR code. Then press the back button of your phone and notice the error.
  • App version: 1.1.1
  • Operating system: Android 6.0.1
  • Device: Samsung A5

Recording Of The Bug

https://www.youtube.com/watch?v=kH8UNpIGgls

LogCat

07-07 00:06:33.632  5375  5375 E AndroidRuntime: FATAL EXCEPTION: main

07-07 00:06:33.632  5375  5375 E AndroidRuntime: Process: com.jim.sharetocomputer, PID: 5375

07-07 00:06:33.632  5375  5375 E AndroidRuntime: java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@308c95c

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.graphics.Canvas.throwIfCannotDraw(Canvas.java:1311)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.graphics.Canvas.drawBitmap(Canvas.java:1445)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:551)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.View.getDrawableRenderNode(View.java:17784)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.View.drawBackground(View.java:17708)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.View.draw(View.java:17515)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:16517)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.View.draw(View.java:17293)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.ViewGroup.drawChild(ViewGroup.java:3926)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3716)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:16512)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.View.draw(View.java:17293)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.ViewGroup.drawChild(ViewGroup.java:3926)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3716)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:16512)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.View.draw(View.java:17293)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.ViewGroup.drawChild(ViewGroup.java:3926)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3716)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:16512)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.View.draw(View.java:17293)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.ViewGroup.drawChild(ViewGroup.java:3926)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3716)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:16512)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.View.draw(View.java:17293)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.ViewGroup.drawChild(ViewGroup.java:3926)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at androidx.drawerlayout.widget.DrawerLayout.drawChild(DrawerLayout.java:1426)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3716)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.View.draw(View.java:17527)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:16517)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.View.draw(View.java:17293)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.ViewGroup.drawChild(ViewGroup.java:3926)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3716)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:16512)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.View.draw(View.java:17293)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.ViewGroup.drawChild(ViewGroup.java:3926)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3716)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:16512)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.View.draw(View.java:17293)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.ViewGroup.drawChild(ViewGroup.java:3926)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3716)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:16512)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.View.draw(View.java:17293)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.ViewGroup.drawChild(ViewGroup.java:3926)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3716)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:16512)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.View.draw(View.java:17293)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.ViewGroup.drawChild(ViewGroup.java:3926)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3716)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.View.draw(View.java:17527)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at com.android.internal.policy.PhoneWindow$DecorView.draw(PhoneWindow.java:3184)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.View.updateDisplayListIfDirty(View.java:16517)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:325)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:331)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:366)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.ViewRootImpl.draw(ViewRootImpl.java:3234)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:3033)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2615)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1528)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7524)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.Choreographer.doCallbacks(Choreographer.java:686)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.Choreographer.doFrame(Choreographer.java:622)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.os.Handler.handleCallback(Handler.java:739)

07-07 00:06:33.632  5375  5375 E AndroidRuntime: 	at android.os.Handler.dispatchMes

${app_title}

When I connect to STC via a web browser, the browser tab is titled ${app_title}.

Might want to edit that!

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.