Coder Social home page Coder Social logo

tedaliez / parsingplayer Goto Github PK

View Code? Open in Web Editor NEW
355.0 14.0 27.0 836 KB

A video player playing videos from youku.com and other video sites.

License: GNU Lesser General Public License v2.1

Java 99.42% Shell 0.58%
android-development video-player android-library

parsingplayer's Introduction

ParsingPlayer

ParsingPlayer is an Android video library based on IjkPlayer, playing video from Youku or other video sites.

screenshot

screenshot

Gradle Dependency

Build Status License: LGPL v2.1 GitHub release

The Gradle dependency is available via jCenter. jCenter is the default Maven repository used by Android Studio.

Dependency

Add this to your module's build.gradle file (make sure the version matches the last release):

dependencies {
    // ... other dependencies
    compile 'com.uniquestudio:parsingplayer:2.0.6'
}

Table of Contents

  1. Quick Setup
  2. License

Quick Setup

public class MainActivity extends AppCompatActivity {
    private ParsingVideoView mVideoView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mVideoView = (ParsingVideoView) findViewById(R.id.videoView);
        mVideoView.play("http://v.youku.com/v_show/id_XMjUyNDIxNjAwNA==.html");
    }


    @Override
    protected void onResume() {
        super.onResume();
        mVideoView.onResume();
    }


    @Override
    protected void onPause() {
        super.onPause();
        mVideoView.onPause();
    }


    @Override
    protected void onDestroy() {
        super.onDestroy();
        mVideoView.onDestroy();
    }
}

License

Copyright (c) 2017 UniqueStudio
Licensed under LGPLv2.1 or later

No Commercial Use

Although this project is is licensed under LGPLv2.1,but commercial use is forbidden.As we parse video's address, we have no idea whether commercial use is legal

parsingplayer's People

Contributors

coxier avatar tedaliez 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

parsingplayer's Issues

Time stop at 00:02.

There is a bug in seek bar. It just refresh when the controller's state changes between VIEW.GONE and VIEW.VISIBELE

NullPointerException when quit the application

In Android API 23, OnePlus 3, when I exit the sample application:

02-06 14:46:12.382 10480-10480/com.hustunique.jianguo.parsingplayer W/System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'void java.io.RandomAccessFile.close()' on a null object reference
02-06 14:46:12.383 10480-10480/com.hustunique.jianguo.parsingplayer W/System.err: at com.hustunique.parsingplayer.player.FileMediaDataSource.close(FileMediaDataSource.java:53)
02-06 14:46:12.383 10480-10480/com.hustunique.jianguo.parsingplayer W/System.err: at tv.danmaku.ijk.media.player.IjkMediaPlayer._reset(Native Method)
02-06 14:46:12.383 10480-10480/com.hustunique.jianguo.parsingplayer W/System.err: at tv.danmaku.ijk.media.player.IjkMediaPlayer.reset(IjkMediaPlayer.java:687)
02-06 14:46:12.383 10480-10480/com.hustunique.jianguo.parsingplayer W/System.err: at com.hustunique.parsingplayer.player.ParsingPlayer.reset(ParsingPlayer.java:201)
02-06 14:46:12.384 10480-10480/com.hustunique.jianguo.parsingplayer W/System.err: at com.hustunique.parsingplayer.player.ParsingVideoView.release(ParsingVideoView.java:492)
02-06 14:46:12.384 10480-10480/com.hustunique.jianguo.parsingplayer W/System.err: at com.hustunique.parsingplayer.player.ParsingVideoView.onDetachedFromWindow(ParsingVideoView.java:827)
02-06 14:46:12.384 10480-10480/com.hustunique.jianguo.parsingplayer W/System.err: at android.view.View.dispatchDetachedFromWindow(View.java:14618)
02-06 14:46:12.384 10480-10480/com.hustunique.jianguo.parsingplayer W/System.err: at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3083)
02-06 14:46:12.384 10480-10480/com.hustunique.jianguo.parsingplayer W/System.err: at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3075)
02-06 14:46:12.384 10480-10480/com.hustunique.jianguo.parsingplayer W/System.err: at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3075)
02-06 14:46:12.385 10480-10480/com.hustunique.jianguo.parsingplayer W/System.err: at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3075)
02-06 14:46:12.385 10480-10480/com.hustunique.jianguo.parsingplayer W/System.err: at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3075)
02-06 14:46:12.385 10480-10480/com.hustunique.jianguo.parsingplayer W/System.err: at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3075)
02-06 14:46:12.385 10480-10480/com.hustunique.jianguo.parsingplayer W/System.err: at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3075)
02-06 14:46:12.385 10480-10480/com.hustunique.jianguo.parsingplayer W/System.err: at android.view.ViewRootImpl.dispatchDetachedFromWindow(ViewRootImpl.java:3070)
02-06 14:46:12.386 10480-10480/com.hustunique.jianguo.parsingplayer W/System.err: at android.view.ViewRootImpl.doDie(ViewRootImpl.java:5639)
02-06 14:46:12.386 10480-10480/com.hustunique.jianguo.parsingplayer W/System.err: at android.view.ViewRootImpl.die(ViewRootImpl.java:5616)
02-06 14:46:12.386 10480-10480/com.hustunique.jianguo.parsingplayer W/System.err: at android.view.WindowManagerGlobal.removeViewLocked(WindowManagerGlobal.java:397)
02-06 14:46:12.386 10480-10480/com.hustunique.jianguo.parsingplayer W/System.err: at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:352)
02-06 14:46:12.386 10480-10480/com.hustunique.jianguo.parsingplayer W/System.err: at android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:118)
02-06 14:46:12.387 10480-10480/com.hustunique.jianguo.parsingplayer W/System.err: at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3944)
02-06 14:46:12.387 10480-10480/com.hustunique.jianguo.parsingplayer W/System.err: at android.app.ActivityThread.access$1500(ActivityThread.java:159)
02-06 14:46:12.387 10480-10480/com.hustunique.jianguo.parsingplayer W/System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1438)
02-06 14:46:12.387 10480-10480/com.hustunique.jianguo.parsingplayer W/System.err: at android.os.Handler.dispatchMessage(Handler.java:102)
02-06 14:46:12.387 10480-10480/com.hustunique.jianguo.parsingplayer W/System.err: at android.os.Looper.loop(Looper.java:152)
02-06 14:46:12.387 10480-10480/com.hustunique.jianguo.parsingplayer W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5507)
02-06 14:46:12.388 10480-10480/com.hustunique.jianguo.parsingplayer W/System.err: at java.lang.reflect.Method.invoke(Native Method)
02-06 14:46:12.388 10480-10480/com.hustunique.jianguo.parsingplayer W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
02-06 14:46:12.388 10480-10480/com.hustunique.jianguo.parsingplayer W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

Though it won't crash the application, I still want to figure out the reason.

Crash when I click back key several times

The sample will crash when I click back key several times.One back key means exiting the app.So exiting and starting app for several times ,there is a crash.

Log:

02-06 11:03:32.957 16443-16443/com.hustunique.jianguo.parsingplayer E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                      Process: com.hustunique.jianguo.parsingplayer, PID: 16443
                                                                                      java.lang.ClassCastException: com.hustunique.parsingplayer.player.io.CallbackTask cannot be cast to java.lang.Comparable
                                                                                          at java.util.concurrent.PriorityBlockingQueue.siftUpComparable(PriorityBlockingQueue.java:318)
                                                                                          at java.util.concurrent.PriorityBlockingQueue.offer(PriorityBlockingQueue.java:450)
                                                                                          at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1332)
                                                                                          at com.hustunique.parsingplayer.player.io.ParsingFileManager.write(ParsingFileManager.java:55)
                                                                                          at com.hustunique.parsingplayer.player.ParsingPlayer.setConcatVideoPath(ParsingPlayer.java:96)
                                                                                          at com.hustunique.parsingplayer.player.ParsingVideoView.setConcatVideos(ParsingVideoView.java:416)
                                                                                          at com.hustunique.sample.MainActivity$1.onSuccess(MainActivity.java:29)
                                                                                          at com.hustunique.parsingplayer.parser.extractor.Extractor$2$1.run(Extractor.java:90)
                                                                                          at android.os.Handler.handleCallback(Handler.java:739)
                                                                                          at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                          at android.os.Looper.loop(Looper.java:148)
                                                                                          at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                                          at java.lang.reflect.Method.invoke(Native Method)
                                                                                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

why i

貌似youku规则改了?为啥只能看10分钟,有的只能6分钟

能将播放模块跟解析模块分开吗?

就很多时候我只想得到播放的地址

    private void setConcatContent(String content) {
        LogUtil.i(TAG, "set temp file content: \n" + content);
        mPlayer.setConcatVideoPath(SystemClock.currentThreadTimeMillis() + "",
                content, new LoadingCallback<String>() {
                    @Override
                    public void onSuccess(final String result) {
                       // use post here to run in main thread
                        setVideoURI(Uri.parse(result));
                    }

                    @Override
                    public void onFailed(Exception e) {
                        Log.wtf(TAG, e);
                    }
                });
    }

在这里交给自己的播放器,还是我理解错了。

Activity leaked window sometimes

In Android API 23, OnePlus 3, when I exit the sample application:

02-13 20:21:21.217 6983-6983/com.hustunique.jianguo.parsingplayer E/WindowManager: android.view.WindowLeaked: Activity com.hustunique.sample.MainActivity has leaked window android.widget.LinearLayout{ac578eb V.E...... ........ 0,0-984,204} that was originally added here
at android.view.ViewRootImpl.(ViewRootImpl.java:370)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:299)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:86)
at com.hustunique.parsingplayer.player.ParsingMediaController.showPopupWindowLayout(ParsingMediaController.java:318)
at com.hustunique.parsingplayer.player.ParsingMediaController.show(ParsingMediaController.java:346)
at com.hustunique.parsingplayer.player.ParsingMediaController.show(ParsingMediaController.java:361)
at com.hustunique.parsingplayer.player.ParsingVideoView.toggleMediaControlsVisibility(ParsingVideoView.java:703)
at com.hustunique.parsingplayer.player.ParsingVideoView.onTouchEvent(ParsingVideoView.java:691)
at android.view.View.dispatchTouchEvent(View.java:9337)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2241)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2561)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2198)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2561)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2198)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2561)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2198)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2561)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2198)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2561)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2198)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2561)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2198)
at com.android.internal.policy.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2432)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1746)
at android.app.Activity.dispatchTouchEvent(Activity.java:2824)
at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:67)
at com.android.internal.policy.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2393)
at android.view.View.dispatchPointerEvent(View.java:9557)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4263)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4102)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3644)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3697)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3663)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3789)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3671)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3846)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3644)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3697)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3663)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3671)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3644)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5955)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5929)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5890)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6058)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:323)
at android.os.Looper.loop(Looper.java

Crashed in bad networking

In Android API 23, OnePlus 3

02-14 11:01:20.169 4951-4965/? E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
Process: com.hustunique.jianguo.parsingplayer, PID: 4951
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:309)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
Caused by: com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 32 path $
at com.google.gson.JsonParser.parse(JsonParser.java:65)
at com.google.gson.JsonParser.parse(JsonParser.java:45)
at com.hustunique.parsingplayer.parser.extractor.YoukuExtractor.getData(YoukuExtractor.java:273)
at com.hustunique.parsingplayer.parser.extractor.YoukuExtractor.createInfo(YoukuExtractor.java:115)
at com.hustunique.parsingplayer.parser.extractor.Extractor.extract(Extractor.java:74)
at com.hustunique.parsingplayer.parser.extractor.Extractor.extract(Extractor.java:67)
at com.hustunique.parsingplayer.parser.VideoParser.parse(VideoParser.java:94)
at com.hustunique.parsingplayer.ParsingTask.doInBackground(ParsingTask.java:43)
at com.hustunique.parsingplayer.ParsingTask.doInBackground(ParsingTask.java:31)
at android.os.AsyncTask$2.call(AsyncTask.java:295)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
at java.lang.Thread.run(Thread.java:818) 
Caused by: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 32 path $
at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1559)
at com.google.gson.stream.JsonReader.checkLenient(JsonReader.java:1401)
at com.google.gson.stream.JsonReader.doPeek(JsonReader.java:542)
at com.google.gson.stream.JsonReader.peek(JsonReader.java:425)
at com.google.gson.JsonParser.parse(JsonParser.java:60)
at com.google.gson.JsonParser.parse(JsonParser.java:45) 
at com.hustunique.parsingplayer.parser.extractor.YoukuExtractor.getData(YoukuExtractor.java:273) 
at com.hustunique.parsingplayer.parser.extractor.YoukuExtractor.createInfo(YoukuExtractor.java:115) 
at com.hustunique.parsingplayer.parser.extractor.Extractor.extract(Extractor.java:74) 
at com.hustunique.parsingplayer.parser.extractor.Extractor.extract(Extractor.java:67) 
at com.hustunique.parsingplayer.parser.VideoParser.parse(VideoParser.java:94) 
at com.hustunique.parsingplayer.ParsingTask.doInBackground(ParsingTask.java:43) 
at com.hustunique.parsingplayer.ParsingTask.doInBackground(ParsingTask.java:31) 
at android.os.AsyncTask$2.call(AsyncTask.java:295) 
at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
at java.lang.Thread.run(Thread.java:818) 

ParsingVideoView.onDestroy () crash

03-01 22:19:30.003 26457-26457/com.autov E/CrashReport: java.lang.RuntimeException: Unable to destroy activity {com.autov/com.autov.playvideo.PlayUrlVideoActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3704)
at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3722)
at android.app.ActivityThread.access$1400(ActivityThread.java:154)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1401)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:5318)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:838)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:654)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at java.util.concurrent.ConcurrentHashMap.containsKey(ConcurrentHashMap.java:911)
at com.hustunique.parsingplayer.player.media.ParsingMediaManager.destroyPlayerByURL(ParsingMediaManager.java:322)
at com.hustunique.parsingplayer.player.media.ParsingMediaManager.onDestroy(ParsingMediaManager.java:166)
at com.hustunique.parsingplayer.player.view.ParsingVideoView.onDestroy(ParsingVideoView.java:285)
at com.autov.playvideo.PlayUrlVideoActivity.onDestroy(PlayUrlVideoActivity.java:545)
at android.app.Activity.performDestroy(Activity.java:5526)
at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1119)
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3691)
at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3722) 
at android.app.ActivityThread.access$1400(ActivityThread.java:154) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1401) 
at android.os.Handler.dispatchMessage(Handler.java:110) 
at android.os.Looper.loop(Looper.java:193) 
at android.app.ActivityThread.main(ActivityThread.java:5318) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:515) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:838) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:654) 
at dalvik.system.NativeStart.main(Native Method) 

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.