Giter Site home page Giter Site logo

toutiao's Introduction

精仿今日头条

精仿今日头条,数据是抓取今日头条App的数据。使用RxJava + Retrofit + MVP开发的开源项目,仅供学习用途。觉得对你有帮助的话请帮忙star一下,让更多人知道,多谢啦!

2022-11-09

  近期有个小伙伴向我反馈项目下下来后编译出错,愿意付费希望我解决下,今天抽空把问题解决了下,希望可以帮到他,当然也是无偿的,这个 项目从17年到现在已经5年了,很高兴还可以帮到一些刚入门的安卓朋友或者参考开发的朋友,由衷感谢大家支持和Star。

2019-12-02

  时间过得真快,不知不觉就过了一年,去年年底我更新了视频解析的逻辑,然后一直用到前段时间,有小伙伴issue上提出又不能解析了。由于前段时间比较忙,一直没能腾出时间来解决这个问题,上周末通过分析,发现以往解析视频的逻辑已经用不了了,所以重新找了个可以解析头条视频的网站,并分析到了他们的解析接口规则,修复了视频播放的问题,小伙伴们可以用作交流,讨论下,但不可用作商用,主要有以下两点原因:

  • 调用解析接口并未获得该网站的同意,属于非正常渠道获取,仅用于学习交流

  • 该网站可能变动接口规则,如果真的有解析视频方面的需求,可以和该网站联系和合作

2018-12-04 更新内容:

  项目已经发布很久了,最近看到有不少小伙伴帮我star,想想自己已经好久没有维护这个项目了,主要是因为忙,最近抽空把issue上提出的问题解决了,方便需要参考到其中某些功能的小伙伴使用,同时也希望这个项目可以成为我在github上首个star破k的项目,希望小伙伴们可以帮忙star一下,多谢了,项目的话我也会继续维护和更新。

  • 更改右滑关闭的依赖库,解决8.0以上系统不兼容右滑的问题;

  • 修改视频解析逻辑,之前通过加载详情页成功后延迟5秒获取html中的video标签内的视频地址,体验极差,故花了几天时间寻找解析头条视频地址的方法,经过多次实验终于成功;

  • 解决视频播放错乱的问题;更换了最新版的饺子播放器;

  • 整理项目结构,包的路径等

Apk下载地址

[点击下载体验]

扫码下载体验:

Blog

http://blog.csdn.net/chay_chan/article/details/75319452

演示截图

首页

视频

微头条

我的

gif图

新闻列表、视频列表

非视频新闻详情页面

查看和保存图片

视频播放、视频详情页面

使用到的第三方库

现有功能

1.获取各种频道的新闻列表,包括视频和非视频新闻;

2.查看新闻详情,包括视频和非视频新闻的详情;

3.查看新闻评论列表;

4.新闻数据本地存储,已经获取到的新闻数据保存在本地数据库中,上拉加载更多时可查看历史新闻;

5.底部页签点击下拉刷新;

6.视频列表播放中的视频不可见时停止播放。

7.查看和保存图片。

技术要点

1.新闻数据的抓取和分析,使用fidder抓取,具体使用可参考下面的网址:

http://www.tuicool.com/articles/BJjQZf

2.新闻列表多种Item布局的展示,使用的是我封装的MultipleItemRvAdapter,基于BaseRecyclerViewAdapterHelper封装,便于多布局条目的管理:

https://github.com/chaychan/MultipleItemRvAdapter

3.视频源地址的解析,请查看我写的博客 今日头条最新视频解析方法

声明

这个属于个人开发作品,仅做学习交流使用,如用到实际项目还需多考虑其他因素如并发等,请多多斟酌。诸位勿传播于非技术人员,拒绝用于商业用途,数据均属于非正常渠道获取,原作公司拥有所有权利。

toutiao's People

Contributors

chaychan avatar koma86 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

toutiao's Issues

8月11号修复因今日头条接口更改造成的BUG

1.今天发现拉取新闻列表的时候报错,排查后发现是json中某个属性由原本的int类型改成boolean类型;
2.接着发现视频播放不了,拉取视频数据报错,发现获取到的Json数据中没有视频的数据,经过抓包分析后发现今日头条的接口获取地址更新了,而且请求参数需要有iid这个请求参数才能获取到有视频数据的json,现在已经修复完毕。
3.如果再遇到获取新闻失败或者视频播放失败的原因,请不要灰心和失望,我会不断完善,希望大家可以相信和支持我。

崩溃

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.chaychan.news, PID: 1979
java.lang.RuntimeException: Unable to instantiate application com.chaychan.news.app.MyApp: java.lang.ClassNotFoundException: Didn't find class "com.chaychan.news.app.MyApp" on path: DexPathList[[zip file "/data/app/com.chaychan.news-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.chaychan.news-1, /system/lib]]
at android.app.LoadedApk.makeApplication(LoadedApk.java:516)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4319)
at android.app.ActivityThread.access$1500(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5019)
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:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.chaychan.news.app.MyApp" on path: DexPathList[[zip file "/data/app/com.chaychan.news-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.chaychan.news-1, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
at android.app.Instrumentation.newApplication(Instrumentation.java:992)
at android.app.LoadedApk.makeApplication(LoadedApk.java:511)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4319) 
at android.app.ActivityThread.access$1500(ActivityThread.java:135) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:136) 
at android.app.ActivityThread.main(ActivityThread.java:5019) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:515)

请教一个问题

我装上app后清了一次缓存,现在就浏览不到数据了,还有一个小bug就是点击下方的视频按钮(连续点击),首页按钮也会跟着颜色变化

视频播放问题

我觉得不能播放有可能需要更换下JCVideo为JZViedo
但我改了半天也不知道还有哪儿没改完

点击视频播放,随机出现闪退

多次点击不同视频列表后,该异常随机出现,异常信息如下:
05-29 16:44:07.831 E/AndroidRuntime( 4294): Process: com.chaychan.news, PID: 4294
05-29 16:44:07.831 E/AndroidRuntime( 4294): java.lang.NullPointerException: Attempt to read from field 'java.util.LinkedHashMap cn.jzvd.JZDataSource.urlsMap' on a null object reference
05-29 16:44:07.831 E/AndroidRuntime( 4294): at cn.jzvd.JzvdStd.onClick(JzvdStd.java:266)
05-29 16:44:07.831 E/AndroidRuntime( 4294): at com.chaychan.news.utils.MyJZVideoPlayerStandard.onClick(MyJZVideoPlayerStandard.java:59)
05-29 16:44:07.831 E/AndroidRuntime( 4294): at android.view.View.performClick(View.java:7192)
05-29 16:44:07.831 E/AndroidRuntime( 4294): at android.view.View.performClickInternal(View.java:7166)
05-29 16:44:07.831 E/AndroidRuntime( 4294): at android.view.View.access$3500(View.java:824)
05-29 16:44:07.831 E/AndroidRuntime( 4294): at android.view.View$PerformClick.run(View.java:27592)
05-29 16:44:07.831 E/AndroidRuntime( 4294): at android.os.Handler.handleCallback(Handler.java:888)
05-29 16:44:07.831 E/AndroidRuntime( 4294): at android.os.Handler.dispatchMessage(Handler.java:100)
05-29 16:44:07.831 E/AndroidRuntime( 4294): at android.os.Looper.loop(Looper.java:213)
05-29 16:44:07.831 E/AndroidRuntime( 4294): at android.app.ActivityThread.main(ActivityThread.java:8169)
05-29 16:44:07.831 E/AndroidRuntime( 4294): at java.lang.reflect.Method.invoke(Native Method)
05-29 16:44:07.831 E/AndroidRuntime( 4294): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
05-29 16:44:07.831 E/AndroidRuntime( 4294): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1101)

今日头条详情页的问题请教

最新的今日头条 非视频详情页 底部有评论和转发两个按钮,点击可切换列表,整个布局的滑动十分流畅,想请教一下, 怎么实现

接口调整,程序崩溃

NewsAdapter: data----------->[]

java.lang.NullPointerException: Attempt to read from field 'java.lang.String com.chaychan.news.model.entity.ImageEntity.url' on a null object reference at com.chaychan.news.ui.adapter.NewsAdapter$1.getItemType(NewsAdapter.java:89)
at com.chaychan.news.ui.adapter.NewsAdapter$1.getItemType(NewsAdapter.java:78)

网络不可用

提示错误
[ (NewsListPresenter.java:48)#onError ] java.lang.IllegalStateException:## Expected an int but was BOOLEAN at line 1 column 1010 path $.has_m3u8_video
实体类对象数据类型错误

视频第一帧

你好,视频的封面是获取的视频帧还是传的图片?

VIVO X9出现闪退现象

java.lang.IllegalArgumentException: No view found for id 0x7f09012f (com.chaychan.news:id/vp_content) for fragment NewsListFragment{9f3fe9 #1 id=0x7f09012f android:switcher:2131230892:1}
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1454)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852)
at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3269)
at android.support.v4.app.FragmentManagerImpl.dispatchStart(FragmentManager.java:3235)
at android.support.v4.app.Fragment.performStart(Fragment.java:2483)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1494)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852)
at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3269)
at android.support.v4.app.FragmentManagerImpl.dispatchStart(FragmentManager.java:3235)
at android.support.v4.app.FragmentController.dispatchStart(FragmentController.java:212)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:628)
at com.chaychan.news.ui.activity.MainActivity.onStart(HomeActivity.java:152)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1391)
at android.app.Activity.performStart(Activity.java:7271)
at android.app.Activity.performRestart(Activity.java:7382)
at android.app.ActivityThread.handleWindowVisibility(ActivityThread.java:4591)
at android.app.servertransaction.WindowVisibilityItem.execute(WindowVisibilityItem.java:38)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:113)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:71)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2074)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:224)
at android.app.ActivityThread.main(ActivityThread.java:7113)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:928)

com.chaychan.library这个package的导入方式

请教一下,com.chaychan.library这个package的源码在什么地方?为什么跟进去都是.class文件?查看了一下,既不是通过gradle引用远程库的方式导入也不是通过.jar的方式导入
toutiao

视频重复播放问题

从视频列表第一个依次往下播放,后面的视频会播放前面的视频,一直循环。

统一回复这段时间反馈安装包出现崩溃的问题

最近有不少朋友ISSUES我,说在安卓4.3或者4.4的模拟器或者真机运行,安装后一点就崩溃,我在真机和android7.0的模拟器上尝试后发现并没有这个问题,今天下午使用4.1.1的模拟器安装后发现出现了崩溃,重新clean项目编译后,可以运行了,现在重新更新了apk包,现在下载到的就不会出现那种崩溃的异常了,很感谢你们提出这个问题,谢谢。

找不到com.chaychan.library目录,是删了吗

TouTiao-master\app\src\main\res\common\layout\activity_main.xml
以下全爆红:
<com.chaychan.library.BottomBarItem
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
app:iconNormal="@mipmap/tab_home_normal"
app:iconSelected="@mipmap/tab_home_selected"
app:itemText="@string/tab_home"
app:itemTextSize="8sp"
app:textColorNormal="@color/color_515051"
app:textColorSelected="@color/color_D33D3C"
app:itemMarginTop="-5dp"
app:openTouchBg="true"
app:touchDrawable="@drawable/selector_bottom_tab"
/>

    <com.chaychan.library.BottomBarItem
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        app:iconNormal="@mipmap/tab_video_normal"
        app:iconSelected="@mipmap/tab_video_selected"
        app:itemText="@string/tab_video"
        app:itemTextSize="8sp"
        app:textColorNormal="@color/color_515051"
        app:textColorSelected="@color/color_D33D3C"
        app:itemMarginTop="-5dp"
        app:openTouchBg="true"
        app:touchDrawable="@drawable/selector_bottom_tab"
        />

10月5号修复视频无法播放的问题

主要是解析视频的接口改了规则,由于是使用别人的接口,所以只要他们接口改动,就获取不到视频解析地址,导致无法播放视频。最近由于比较忙,没能及时修复,现在利用假期时间,修复完成了。

视频点击崩溃

java.lang.IllegalStateException
at android.media.MediaPlayer.getCurrentPosition(Native Method)
at com.chaychan.news.ui.activity.NewsDetailBaseActivity.postVideoEvent(NewsDetailBaseActivity.java:217)
at com.chaychan.news.ui.activity.VideoDetailActivity.onBackPressed(VideoDetailActivity.java:110)
at android.app.Activity.onKeyUp(Activity.java:2494)
at android.view.KeyEvent.dispatch(KeyEvent.java:2667)
at android.app.Activity.dispatchKeyEvent(Activity.java:2751)
at android.support.v7.app.AppCompatActivity.dispatchKeyEvent(AppCompatActivity.java:541)
at android.support.v7.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:59)
at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.dispatchKeyEvent(AppCompatDelegateImplBase.java:319)
at com.android.internal.policy.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:2310)
at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:4164)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4126)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3674)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3727)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3693)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3819)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3701)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3876)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3674)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3727)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3693)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3701)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3674)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3727)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3693)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3852)
at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:4018)
at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2292)
at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:1913)
at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:1904)
at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:2269)
at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:323)
at android.os.Looper.loop(Looper.java:138)
at android.app.ActivityThread.main(ActivityThread.java:5528)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:740)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:630)

视频播放问题

Response:{"retCode":300,"retDesc":"页面停留时间过长,请强制刷新当前页. :)","data":null,"succ":false}
地址访问就405 大神什么时候修复啊

请教个关于侧滑关闭界面的问题

侧滑关闭界面时,style中添加 android:windowIsTranslucent = true 这个属性,就会导致关闭后出现1s的白屏,demo 中并没有这个问题,我也没有找到解决的方法,还请指点一下

谢谢分享

很好的UI和框架,学习了。期待后续的完善,赞一个!

move on

在公司里把你的apk拉下来看了看,不错啊,继续加油完成接下来的的模块

請教一下

01
02
關於上圖的SharedPreferences 裡面的資料, 是在哪個階段放進去的?

打开就崩溃 - -

7-31 15:28:41.671 25490-25490/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.chaychan.news, PID: 25490
java.lang.RuntimeException: Unable to instantiate application com.chaychan.news.app.MyApp: java.lang.ClassNotFoundException: Didn't find class "com.chaychan.news.app.MyApp" on path: DexPathList[[zip file "/data/app/com.chaychan.news-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.chaychan.news-1, /vendor/lib, /system/lib]]
at android.app.LoadedApk.makeApplication(LoadedApk.java:519)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4416)
at android.app.ActivityThread.access$1500(ActivityThread.java:143)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1269)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5120)
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:818)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:634)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.chaychan.news.app.MyApp" on path: DexPathList[[zip file "/data/app/com.chaychan.news-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.chaychan.news-1, /vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
at android.app.Instrumentation.newApplication(Instrumentation.java:975)
at android.app.LoadedApk.makeApplication(LoadedApk.java:514)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4416) 
at android.app.ActivityThread.access$1500(ActivityThread.java:143) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1269) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:136) 
at android.app.ActivityThread.main(ActivityThread.java:5120) 
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:818) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:634) 
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.