Git Product home page Git Product logo

android-download-manager-pro's Introduction

Android Arsenal The MIT License

Android-Download-Manager

Android/Java download manager library help you to download files in parallel mechanism in some chunks.

Overview

This library is a download manager android/java library which developers can use in their apps and allow you to download files in parallel mechanism in some chunks and notify developers about tasks status (any download file process is a task). Each download task cross 6 stats in its lifetime.

  1. init
  2. ready
  3. downloading
  4. paused
  5. download finished
  6. end

applications states

Usage

In the first stage, you need to include these permissions in your AndroidManifest.xml file

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

After that, import com.golshadi.downloadManager package in your packages folder. So now everything is ready to start.

Let's get started

One of the important benefits of this lib is that you don't need to initialize object completely before getting any reports.

DownloadManagerPro dm = new DownloadManagerPro(Context);

to get report about tasks you can use these methods that will be introduced later on this doc:

public ReportStructure singleDownloadStatus(int token);
public List<ReportStructure> downloadTasksInSameState(int state);
public List<ReportStructure> lastCompletedDownloads();
public boolean unNotifiedChecked();
public boolean delete(int token, boolean deleteTaskFile);

Attention: in this documentation dm stands for DownloadManagerPro object

Initialize DownloadManagerPro

in order to download with this lib you need to set its basic configurations and give him a listener to poke you about tasks status.

void DownloadManagerPro.init(String saveFilePath, int maxChunk, DownloadManagerListener class)
  • String saveFilePath: folder address that you want to save your completed download task in it.
  • int maxChunk : number of maximum chunks. any task is divided into some chunks and download them in parallel. it's better not to define more than 16 chunks; but if you do it's set to 16 automatically.
  • DownloadManagerListener listenerClass in this package an interface created to report developer download tasks status. this interface includes some abstract methods that will be introduced later.

Example:

public class MyActivity extends Activity implements DownloadManagerListener {
    ...
    public void methodName() {
        ...
        // you can only pass this for context but here i want to show clearly
        DownloadManagerPro dm = new DownloadManagerPro(this.getApplicationContext());
        dm.init("downloadManager/", 12, this);
        ...
    }
    ...
}

there are three ways to define your download task, so you can define it any way you want. for example If you didn't set maximum chunks number or sd card folder address it uses your initialized values. these methods return you a task id that you can call to start or pause that task using this token.

int DownloadManagerPro.addTask(String saveName, String url, int chunk, String sdCardFolderAddress, boolean overwrite, boolean priority)

int DownloadManagerPro.addTask(String saveName, String url, String sdCardFolderAddress, boolean overwrite, boolean priority)

int DownloadManagerPro.addTask(String saveName, String url, boolean overwrite, boolean priority)
  • String saveName: defining te name of desired download file.

  • String url : Location of desired downlaod file.

  • int chunk : Number of chunks which download file has been divided into.

  • String sdCardFolder : Location of where user want to save the file.

  • boolean overwrite : Overwrite if exists another file with the same name. If true, overwrite and replace the file. If false, find new name and save it with new name.

  • boolean priority : Grant priority to more desired files to be downloaded.

  • return int task id: task token

Example:

int taskToken = dm.addTask("save_name", "http://www.site.com/video/ss.mp4", false, false);

this method usage is to start a download task. If download task doesn't get started since this task is in downloading state, it throw you an IOException. When download task start to download this lib notify you with OnDownloadStarted interface

void DownloadManagerPro.startDownload(int token) throws IOException
  • int token: It is an assigned token to each new download which is considered as download task id.

Example:

try {
        dm.startDownload(taskToekn);

    } catch (IOException e) {
        e.printStackTrace();
    }

pause a download tasks that you mention and when that task paused this lib notify you with OnDownloadPaused interface

void DownloadManagerPro.pauseDownload(int token)
  • int token: It is an assigned token to each new download which is considered as download task id.

Example:

dm.pauseDownload(taskToekn);

StartQueueDownload method create a queue sort on what you want and start download queue tasks with downloadTaskPerTime number simultaneously. If download tasks are running in queue and you try to start it again it throws a QueueDownloadInProgressException exception.

void DownloadManagerPro.StartQueueDownload(int downloadTaskPerTime, int sortType) throws QueueDownloadInProgressException
  • int downloadTaskPerTime: the number of task that can be downloaded simultaneously

  • int sortType: Grant priority to more desired files to be downloaded.

  • QueueSort.HighPriority : only high priority

  • QueueSort.LowPriority : only low priority

  • QueueSort.HighToLowPriority : sort queue from high to low priority

  • QueueSort.LowToHighPriority : sort queue from low to high priority

  • QueueSort.earlierFirst : sort queue from earlier to oldest tasks

  • QueueSort.oldestFirst : sort queue from old to earlier tasks

Example:

try {
        dm.startQueueDownload(3, QueueSort.oldestFirst);

    } catch (QueueDownloadInProgressException e) {
        e.printStackTrace();
    }

this method pauses queue download and if no queue download was started it throws a QueueDownloadNotStartedException exception.

void DownloadManagerPro.pauseQueueDownload()throws QueueDownloadNotStartedException

Example:

try {
        dm.pauseQueueDownload();

    } catch (QueueDownloadNotStartedException e){
        e.printStackTrace();
    }

Report

In this section we are working with reports since we need to get tasks status and some useful information about those status.


It reports task download information in "ReportStructure" style using a token (download task id) and finally returns the statue of that token.

ReportStruct DownloadManagerPro.SingleDownloadStatus(int token)
  • int token: task token

  • return ReportStructure object and it has a method to convert these info to json

  • int id: task token

  • String name: file name that will be saved on your sdCard

  • int state: download state number

  • String url: file download link

  • long fileSize: downloaded bytes

  • boolean resumable: download link is resumable or not

  • String type: file MIME

  • int chunks: task chunks number

  • double percent: downloaded file percent

  • long downloadLength: size that will get from your sd card after it completely download

  • String saveAddress: save file address

  • boolean priority: true if task was high priority

Example:

ReportStructure report = dm.singleDownloadStatus(taskToken);

It's a report method for returning the list of download task in same state that developers want.

List DownloadManagerPro.downloadTasksInSameState(int state)
  • int state: any download in it's life time across 6 state.
  • TaskState.INIT: task intruduce for library and gave you token back but it didn't started yet.
  • TaskState.READY: download task data fetch from its URL and it's ready to start.
  • TaskState.DOWNLOADING: download task in downloading process.
  • TaskState.PAUSED: download task in puase state. If in middle of downloading process internet disconnected; task goes to puase state and you can start it later
  • TaskState.DOWNLOAD_FINISHED: download task downloaded completely but their chunks did not rebuild.
  • TaskState.END: after rebuild download task chunks, task goes to this state and notified developer with OnDownloadCompleted(long taskToken) interface

Example:

List<ReportStructure> report = dm.downloadTasksInSameState(TaskState.INIT);

This method returns list of last completed Download tasks in "ReportStructure" style, developers can use it for notifying whether the task is completed or not.

List DownloadManagerPro.lastCompletedTasks()
  • return List : list of completed download from last called unNotifiedCheck() method till now.

Example:

List<ReportStructure> completedDownloadTasks = dm.lastCompletedTasks();

This method checks all un notified tasks, so in another "lastCompletedDownloads" call ,completed task does not show up again. “lastCompletedDownloads”: Shows the list of latest completed downloads. Calling this method, all of the tasks that were shown in the previous report, will be eliminated from "lastCompletedDownloads"

void DownloadManagerPro.unNotifiedCheck()

Example:

dm.unNotifiedCheck()

this method delete download task

boolean DownloadManagerPro.delete(int token, boolean deleteTaskFile)
  • int token: download task token
  • boolean deleteTaskFile: deletes download task from database and set deleteTaskFile as true, then it goes to saved folder and delete that file.

*return boolean : if delete is successfully it returns true otherwise false

Example:

dm.delete(12, false);

This method closes database connection.

void DownloadManagerPro.disConnectDB()

Example:

dm.disConnectDb();

android-download-manager-pro's People

Contributors

aspook avatar hipercube avatar lap089 avatar majidgolshadi avatar veinhorn 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

android-download-manager-pro's Issues

java.net.SocketTimeoutException

System.errjava.net.SocketTimeoutException
System.errat java.net.PlainSocketImpl.read(PlainSocketImpl.java:491)
System.errat java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46)
System.errat java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:240)
System.errat java.io.BufferedInputStream.read(BufferedInputStream.java:304)
System.errat libcore.net.http.FixedLengthInputStream.read(FixedLengthInputStream.java:45)
System.errat java.io.InputStream.read(InputStream.java:163)
System.errat com.golshadi.majid.core.chunkWorker.AsyncWorker.run(AsyncWorker.java:64)

for the first time downloaded properly...after then always getting this error...why?

Stuck at OnDownloadStarted

I followed the example and gave full permissions and While i can download files using Volley and other methods, This library is actually stuck at OnDownloadStarted for some reason, this is all i get. Any idea how to fix this?
T.N,
File is on a direct URL
Android 7.1.1
Other download methods work

also my code is

     DownloadManagerPro dm = new DownloadManagerPro(con);
    dm.init(path,12,con);
    int token = dm.addTask(name,url,12,path,true,true);
    try {
        dm.startDownload(token);
    }catch (Exception e){
        Log.w("download_manager","Error "+e.getMessage());
    }

and

@OverRide
public void OnDownloadStarted(long taskId) {

    Log.w("download_manager","Download Started "+taskId);
}

@Override
public void OnDownloadPaused(long taskId) {
    Log.w("download_manager","Download paused "+taskId);

}

@Override
public void onDownloadProcess(long taskId, double percent, long downloadedLength) {
    Log.w("download_manager","Download process, percent="+percent+" downloadedLength="+downloadedLength);

}

@Override
public void OnDownloadFinished(long taskId) {
    Log.w("download_manager","Download finished "+taskId);

}

@Override
public void OnDownloadRebuildStart(long taskId) {
    Log.w("download_manager","Download Rebuild Start "+taskId);
}

@Override
public void OnDownloadRebuildFinished(long taskId) {
    Log.w("download_manager","Download Rebuild finished "+taskId);
}

@Override
public void OnDownloadCompleted(long taskId) {
    Log.w("download_manager","Download Rebuild completed "+taskId);
}

@Override
public void connectionLost(long taskId) {
    Log.w("download_manager","Download connection lost "+taskId);
}

and All i get is

download_manager: Download Started 2

Download mode from where it stopped

Thank you for opening this good module
But I guess that this module only support overwrite or not.
I can add function "download from where it stopped", if you want
I change value type 'boolean overwrite' to 'int downloadMode' in addTask() method.
int downloadMode can be tree types

  1. overwrite
  2. not overwrite
  3. download from where it stopped(and sure I add relative code)
    1,2 is same boolean overwrite.
    Please check my opinion.

Sample Application

Hello sir,

I am new to android , can you please provide sample application how to use this library
it help me to learning.
Thanks

connectionLost Socket Timeout Exception

D/BBK_MainActivity: [MainActivity.java_118_onDownloadProcess] taskId: 1 percent:25.49293327331543 downloadedLength:2328545
D/BBK_MainActivity: [MainActivity.java_167_connectionLost] taskId: 1

java.lang.NullPointerException

some time i got this error
Exception java.lang.NullPointerException:
com.golshadi.majid.core.chunkWorker.Rebuilder.run (Rebuilder.java) any body have idea how to fix this

attempt to re-open an already-closed object

java.lang.IllegalStateException: attempt to re-open an already-closed object: SQLiteDatabase: /data/data/package_name/databases/com.doitflash.air.extension.downloadManagerPro
            at android.database.sqlite.SQLiteClosable.acquireReference(SQLiteClosable.java:55)
            at android.database.sqlite.SQLiteDatabase.delete(SQLiteDatabase.java:1626)
            at com.golshadi.majid.database.ChunksDataSource.delete(ChunksDataSource.java:75)
            at com.golshadi.majid.core.chunkWorker.Moderator.reBuildIsDone(Moderator.java:193)
            at com.golshadi.majid.core.chunkWorker.Rebuilder.run(Rebuilder.java:69)

it happening only for low memory device...any idea...

I removed this library

because of this library has more bug and cause of getting bad feed back on crashing our application i had to remove this library on our projects

AsyncWorker exception

java.net.protocolException: unexpected end of stream
AsyncWorker.run (AsyncWorker.java:65)

How I get percent progress?

ReportStructure report = dm.singleDownloadStatus(taskToekn);

The all atributes are private in ReportStructure.

AsyncWorker exception throwing

in run() method of AsyncWorker, you catch MalformedURLException and IOException. But since it is printing only in stackTrace, I don't have any way how to propagate those errors to UI to stop / restart download. Is there any way around ? Or it would be nice to have some exception callback.
Thanks

Unable to download files

Hi,
Just tried this library and I am not able to download files. I tried downloading from these sites apkleecher.com and www.mp3juices.cc.
It says Download started but the download is never completed and I see small files created in external storage.
Can you please verify it if it is an issue with the library or with the sites?

getting progress percentage using ReportStruct

I want to get the status of downloaded file while its downloading.For that I am using ReportStruct.But both report.getTotalSize() and report.toJsonObject().get("percent") is returning 0 even if i place report.toJsonObject().get("percent") inside onDownloadProcess.How can i get the percentage progress of downloaded video?

   int taskToekn = dm.addTask(caption, url, false, false);
    try {

            dm.startDownload(taskToekn);

        } catch (Exception e) {

            e.printStackTrace();
        }

        ReportStructure report = dm.singleDownloadStatus(taskToekn);
        Log.e("BHUV", "totalsize" + report.getTotalSize());
  try {
            Log.e("Bhuv", "percent" + report.toJsonObject().get("percent"));
        } catch (JSONException e) {
            e.printStackTrace();
        }

Both Logs return 0 and 0.0

Readme.md file misspelled

Plz look at line 59~!

Initialize DownloadManagerPro

String saveFielPath: folder address that you want to save your completed download task in it.

I think that you need to modify the "saveFielPath" to "saveFilePath".
So I think it should be modified in the following sentence.

String saveFilePath: folder address that you want to save your completed download task in it.

Thank you :D ~

ادامه دادن دانلود

با سلام و عرض خسته نباشید

من میخواستم از این کتابخونه استفاده کنم اما قبلش نیازه این سوال رو بپرسم

مثلا من یک فایل رو دادم دانلود کنه و اون فایل تا نصفه دانلود شده ، حالا من برنامه رو میبندم و میخوام وقتی کاربر بعدا دوباره وارد برنامه شد و ادامه دانلود رو زد ، دادمه فایل دانلود بشه ایا همچین چیزی توی این کتابخونه هست؟

با تشکر

Fatel Exception

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.io.FileInputStream.read(byte[])' on a null object reference
       at downloadmanager.core.chunkWorker.Rebuilder.run(Rebuilder.java:53)

onDownloadfinished called directly after connectionlost on lolipop 5.0

hi , thx for this great library but i am facing issue , in lolipop 5.0 ondownloadFinished Called Directly after connectionlost , but on other apis it works fine even on 5.1 , this issue appear only in 5.0
i noticed that an error raised
07-31 16:50:06.941 1670-1804/com.filmov.itech.movies E/AndroidRuntime﹕ FATAL EXCEPTION: Thread-229
Process: com.filmov.itech.movies, PID: 1670
java.lang.NullPointerException: Attempt to invoke virtual method 'int java.io.FileInputStream.read(byte[])' on a null object reference
at tools.majid.core.chunkWorker.Rebuilder.run(Rebuilder.java:52)

unexpected end of stream error for large files

Getting this error while download large files, size larger than 20MB

ajmalrasi.com.rasi.hellod W/System.err: java.net.ProtocolException: unexpected end of stream ajmalrasi.com.rasi.hellod W/System.err: at com.android.okhttp.internal.http.HttpConnection$FixedLengthSource.read(HttpConnection.java:421) ajmalrasi.com.rasi.hellod W/System.err: at com.android.okhttp.okio.RealBufferedSource$1.read(RealBufferedSource.java:371) ajmalrasi.com.rasi.hellod W/System.err: at java.io.BufferedInputStream.fill(BufferedInputStream.java:235) ajmalrasi.com.rasi.hellod W/System.err: at java.io.BufferedInputStream.read1(BufferedInputStream.java:275) ajmalrasi.com.rasi.hellod W/System.err: at java.io.BufferedInputStream.read(BufferedInputStream.java:334) ajmalrasi.com.rasi.hellod W/System.err: at java.io.FilterInputStream.read(FilterInputStream.java:107) ajmalrasi.com.rasi.hellod W/System.err: at com.golshadi.majid.core.chunkWorker.AsyncWorker.run(AsyncWorker.java:94)

any idea how to solve this issue, looked up this error on google but couldn't a find solution.

Example ?

Any good example how to implement this library ?

How to know in which state downloader now ?

Please, help me to understandm how can i know in which state my task : pause, downlaoded or something else. After i write ReportStructure report = dm.singleDownloadStatus(taskToken); how can i get information from that ? Thank you

video files became courrpeted after finishing download with 12 chunks

hi new issue , i tried in the past days to download video files with 12 chunks but after download finished , i tried to play the video i noticed that the video became corrupted in some places , i tried the same file with 1 chunk , and i tried to play it after finishing download , the video played correctly without any issue , i think that there is issue in regrouping algorithm of chunks after finishing , i hope to fix this issues soon because when i put the chunk to 1 the download speed became very slow

QueueDownloadInProgressException: queue download is already in progress

Hi

I am downloading 2 files by below method.
dm.startQueueDownload(1, QueueSort.oldestFirst);

Then, I am disconnecting internet and trying to start queue again but it is throwing

com.golshadi.majid.report.exceptions.QueueDownloadInProgressException: queue download is already in progress
        at com.golshadi.majid.core.DownloadManagerPro.startQueueDownload(DownloadManagerPro.java:182)

Please help me to resume queue again..

Thanks

Cursor object not always closed properly

for example you forgot to close it in TaskDataSource in the method getUnCompletedTasks

You are also not persistent in the way you close your cursors. Sometimes you check if the cursor object is null, and sometimes you do not.

Is there also a reason why the connection to the database is never closed? I see an unused method called close() in TaskDataSource. I do not properly understand the source code just yet to understand when I should call this method

Crash application when i try to pause when onStop trigger

I'm trying to pause current download on onStop by this code:

@Override
protected void onStop() {
    super.onStop();
    Alachiq.getDefaultInstance().pauseDownload(Alachiq.getDefaultInstance().getCurrentDownloadingTaskId());

    EventBus.getDefault().unregister(this);
}

public int getCurrentTask(){
    int thisTask = 0;
    String query = "SELECT * FROM " + TABLES.TASKS
            + " WHERE " + TASKS.COLUMN_STATE + "==" + SqlString.Int(TaskStates.DOWNLOADING);

    ...
}

but i get an error on this line of code

.core.chunkWorker.ConnectionWatchDog.run(ConnectionWatchDog.java:56)

How to add it to my project?

Hello, I am kind of confused and also new to java, but usualy libraryz have some kind of tutorial like:

"download this jar and put it in the folder xxx"
Or
"Add dependencie xxxx to gradle"

But on this one I can t find anything and it s frustrating as I would like to use this library on my project.

Can someone please give me the steps to use it? Thank you

AsyncWorker pause failed.

//check whether a thread is interruptted or not by this is not a good choice.
Thread#isInterrupted()

i invoke downloader.puaseDownload(int token);
and it finally interrupts the AsyncWorker,but in AsyncWorker this.isInterrupted() is false.
so observer.rebuild(chunk); is invoked .

that is to say ,invoke downloader.puaseDownload(int token); and observer.rebuild(chunk);will be invoked too.
so, the task's state is wrong.

//my solution

volatile boolean interrupt = false;

@Override
public void interrupt() {
      super.interrupt();
      interrupt = true;
}

//update #run
```java
 while (!interrupt &&
       (len = remoteFileIn.read(buffer)) > 0) {
       watchDog.reset();
       chunkFile.write(buffer, 0, len);
       process(len);
 }
if (!interrupt) {
     observer.rebuild(chunk);
}

Socket Timeout Exception

URL url = new URL(task.url);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(1000);
connection.setReadTimeout(1000);

in AsyncWorker.class having above code throws socket time out exception
and download stops after few moments

whenever i made below changes in above code it works well sometimes and after sometime again facing same problem

URL url = new URL(task.url);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(60000);
connection.setReadTimeout(60000);

Using MotoG3 for testing device android MarshMallow 6.0.1

Not downloading video file

Hello,

when I try to download some video files, it does nothing. OnDownloadStarted is called, but nothing else.

The file that I try to download is: http://www.sample-videos.com/video/mp4/360/big_buck_bunny_360p_2mb.mp4

This is what I get from downloadTasksInSameState:

{
  "token":"39",
  "name":"save_name_15",
  "state":3,
  "resumable":true,
  "fileSize":-1,
  "url":"http:\/\/www.sample-videos.com\/video\/mp4\/360\/big_buck_bunny_360p_2mb.mp4",
  "type":"mp4",
  "chunks":1,
  "percent":0,
  "downloadLength":0,
  "saveAddress":"\/storage\/emulated\/0\/downloadManager\/save_name_15.mp4",
  "priority":true
}

Thank you for your help.

Daniel

pause all downloads and dispose

Hello,

do I need to worry about downloading states when I call dispose()?

I run the downloadManagerPro in the service. But the service can be stopped by the system. So in the onDestroy I want to pause all downloading files and then call dispose. But there is no listener for onPauseAllDownloads.

So my question is: Do I need to pause dowloads before dispose or can I omit the dispose function at all?

Thank you in advance.

read byte is 0 && java.net.SocketTimeoutException

I have set up a longer link time, but there is still a problem

[CDS]read byte is 0
java.net.SocketTimeoutException
at java.net.PlainSocketImpl.read(PlainSocketImpl.java:497)
at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:42)
at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:242)
at com.android.okio.Okio$2.read(Okio.java:113)
at com.android.okio.RealBufferedSource.read(RealBufferedSource.java:48)
at com.android.okhttp.internal.http.HttpConnection$FixedLengthSource.read(HttpConnection.java:446)
at com.android.okio.RealBufferedSource$1.read(RealBufferedSource.java:168)
at java.io.InputStream.read(InputStream.java:162)
at com.golshadi.majid.core.chunkWorker.AsyncWorker.run(AsyncWorker.java:64)

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.