GithubHelp home page GithubHelp logo

microhello / lite Goto Github PK

View Code? Open in Web Editor NEW
0.0 0.0 0.0 27.82 MB

Automatically exported from code.google.com/p/lite

Shell 0.01% C 3.47% C++ 0.17% Java 35.23% JavaScript 44.25% PHP 1.86% Python 0.67% HTML 13.25% XSLT 0.01% CSS 1.07% ApacheConf 0.01%

lite's People

lite's Issues

准备支持c:static 标记

通过插件方式支持,插件名称为#static.
该功能用于生成静态内容,同时static 里面的 var 
可以生成跨线程共享的模板函数
和模板变量集合。

Original issue reported on code.google.com by [email protected] on 30 Jun 2009 at 3:54

一次和hax的讨论

其中模板的支持有点一丝,看看能不能在1.1中实现去

19:03 我现在的LiteXML模板语法中有一个<c:out value="${html}"/>
  他区别于 直接的 ${text}
 johnhax: escape?
19:04 我: <c:out 是不会编码的, ${text } 
是更具所在xml文件位置自动编码的。
  当时这么设计的目的是,让更多的代码自动编码,减少一些粗心导致的错误。
19:05 
现在我想提供一个更加简单的不编码输出语法,完全等价 
<c:out
  比如说 通过 $!{text}
19:06 
这个感叹号,提醒用户,这个事不编码的输出,你要谨慎。
  你觉得有这个必要吗?
要不要提供这种简便的不编码输出?
19:07 johnhax: 
编码确实麻烦。首先,我建议在c:out上加上属性参数,可以控
制按
照什么编码输出。
 我: 这个我觉得没有必要,要么就是不便吗,要么就是自动编码
 johnhax: 默认行为可以保持不编码,与现有的行为是兼容的。
19:08 编码可以不止一种。
 我: 自动编码比如在<![CDATA[里面不编码 TextNode 编码 <>&
  属性里面还要编码 ‘“
  这些可以更具出现的位置自动处理
 johnhax: 当然,编码本身只是经过一道函数而已,用一个属性只是提供了一个更抽
象的控制点。
19:09 我: 
更复杂的控制,也可以通过自定义函数,我就不想通过语法��
�搞了
  恩,是的
 johnhax: 如果要保持简单,那你现有的设计我觉得就ok乐。
19:10 我: 哦,你的建议是说 $!{text} 
这个语法没必要提供,是吗?
 johnhax: 与其他标签库比较一下,jstl我记得c:out是有额外的编码参数的
 我: 真要不编码输出就 <c:out
  恩,是的
  但是我不想搞那么复杂。
19:11 johnhax: 
这个,我觉得并非复杂,而是看大家是否有控制它的需求。
  举例来说
  grails下,${xxx}是否编码是由配置文件的参数决定的。
  参数可以指定按照什么方式编码。比如html或者base64
19:12 我: 哦,呵呵
  我有点动摇在c:out 上加参数了
  不过我还是觉得,意义不大,因为,加参数不如让 ${xxx}自动判断
 johnhax: 当然,对于${xxx}实际上参数指定的方式我觉得不见得好,还是你的自动
根据情况来编码比较妥当。
19:13 因为${xxx}依赖配置文件造成了自动测试可能失败。
  而自动判断,它的行为是确定的。
 我: 恩,那也导致了复杂性。
19:14 johnhax: 
所有我觉得你现有的设计就可以了。如果要增加控制,还是��
�c:out
上加参数
19:15 我: 恩,增加控制事 c:out 上好些,
 johnhax: 这样保持${xxx}是简单的。增加一个$!{xxx}只是增加了一个特例,只为c:
out的快捷方式。需要衡量它的价值。
  另外一种方式是filter或者叫什么来着?
 我: 我不是说要增加显示控制,只是想搞一个直接输出的简便写法。

就是不知道这个直接输出的真实需求如何,呵呵
 johnhax: 就是这样的: ${xxx | encode:xxx }
19:16 我: 我饭退这样
  这样吧表达式搞复杂了。
 johnhax: 但是既然你允许${}里面用函数,那就没有必要支持filter
  支持filter的模板,通常都是因为限制${}内不能用函数,或者只能用简单函数。
 我: 控制输出方式,还有其他逻辑控制都应该构建在表达式之上,不要侵入到表达式中。
19:17 
filter有它简便的一面,但是我觉得他导致的表达式的复杂化��
�
 johnhax: filter的目的是,增加一个抽象控制层。
 我: 用filter的地方都能用函数解决,一个支持函数的表达式。filter我觉得事很鸡肋的
19:18 johnhax: 这个抽象控制层对应于“格式化输出”
 我: 恩,但是他看起来是混杂在表达式中的语法
19:19 也就是他污染了表达式。
 johnhax: 这个东西么,见仁见智了。程序员多数会觉得filter是一个多余的东西。
但是从模板的角度考虑,filter是增加的一层控制点。如果你��
�模板本身不希望增加
这一层控制点,当然就不用为好。
 我: 恩,filter有它简单的一面,呵呵
19:20 一个被阉割了的函数,呵呵
 johnhax: 不能说是被阉割的函数
 我: 哦,为啥。。。
 johnhax: 你可以把它看做是管道。
19:21 也就说,它其实可以认为与函数是等价的。
 我: 恩,单个参数的有返回值的函数。
19:22 函数中的一个特例
 johnhax: 它在概念上是很清楚的,就是输出经过管道到下一个处理函数中处理再输
出。。。
19:23 
考虑到格式化的典型用法,它的语法比嵌套的函数()要更清晰
。
  当然,前提是,你认可模板中的所有函数调用都应该是管道式的。。。
19:24 我: 恩,呵呵
19:25 johnhax: 
考虑到你现在使用的表达式语言,看起来和filter不会很配,��
�是不
要考虑filter了。。。
19:26 我: 恩,这个我也感觉到了。呵呵
  仍外,函数定义和调用的方式,你觉得有什么问题吗?
19:27 
这里面有要回到开始那个话题了,是否要增加一个更加简单��
�输出表达式
 johnhax: 这个。。。这个函数似乎有点古怪
19:28 我: 
因为自定义函数生成的数据也是默认经过编码的,使用,输��
�函数返回之
后必须用无编码的<c:out 去的输出。
  这样又会有一堆人抱怨说,一堆<<<搞得很繁琐
  呵呵,咋个古怪发》
name里面带有括弧吗?
 johnhax: 概念上,函数会以编程语言去定义。在模板中提供定义函数的方式,似乎
不是很make sense
19:30 我: 
这里其实不是真正意义的函数,只是他可以封装一些常见的��
�符串处理方
法,这样,很多人会觉得这个比较方便
  比如很多赞freemarker的人,首先就会提到freemarker中的macro定义
 johnhax: 我理解你这个可以认为是一个便利的可重用的模板小碎片。。。既然其输
出总是文本,那就不太好认为是function。
19:31 叫macro也或许比较好。
 我: 宏定义?
  呵呵,标签叫def可以吗》
19:32 johnhax: 其实叫子模板比较make sense
19:33 它本身其实就是一个小模板
 我: 恩,概念命名难啊,呵呵
  恩,也可以这么说’
19:34 
只是函数知名度更搞一点,叫别的估计用户感觉更加生疏
19:36 johnhax: 
比较类似其他系统里的template,我在考虑有什么差别。。。差
别大
概是其他系统一般不允许在template里面定义子template,而是要�
��独定义。
19:37 例子:file:///D:/sjhe/doc/grails/grails-docs-
1.1/guide/single.html#6.2.3 Views and Templates
  。。。
  要换个url.
 我: 这二,我还真不清楚,velocity和freemarker好像都可以直接在源文件中吧
    10 分钟
19:47 我: 烤,一看书就想睡觉,看来真的事夏天到了,呵呵
19:51 johnhax: 掉线了。。。
  velocity本来长得就像编程语言而不像Tag。。。
  freemaker不清楚。。。
 我: 呵呵
 johnhax: velocity的叫macro,和function有点小区别
 我: 恩
19:52 freemarker也叫macro
19:53 johnhax: 
这样有助于区分由native的编程语言定义的function和由模板定义
的
macro。
19:54 实际上,lite定义的函数是什么呢?
  是native编程语言的函数?
 我: 最终回编程一种特殊的 native函数
19:55 johnhax: 作用域。。。是当前页面?
 我: lite就没有页面这个域
19:56 
就是整个模板,定义的函数,会编程整个模板中的默认变量��
�
  或者说默认函数集合,Lite中的函数就是一种特殊的变量
19:57 johnhax: 调用外部template的语法是。。。
 我: 没有这种语法了,include都是编译的时候才有的东西。
 johnhax: 好像没找到。。。
19:58 我: 编译完成后就变成一个整体
  再也分不清那些中间代码来自那个页面了
19:59 johnhax: 
在一个模板里调用另一个模板。。。我觉得这个需求大概还��
�会有的。
20:00 include的本身可以是模板吗?
 我: 不能动态调用,只能静态包含,因为,我觉得动态调用的成本太高了,呵呵,而
且这样一定会使得模板的编译环境和运行环境耦合在一起。
  恩,可以
20:01 johnhax: 发现include的path属性和xpath属性有点搞。。。
20:02 我: 
呵呵,通过xpah选取文档片段,path就是选择文档路径了,呵呵
 johnhax: 我知道,我是说属性名字太相近了。。。有点搞
 我: 开始事url后来支持xpath了,我就吧url改成了path,呵呵
  啊,我还是故意改成相近的呢,呵呵
20:03 johnhax: 不是吧。。。
  include是静态的,那就是直接包含进来啰
20:04 使用当前模板的所有环境变量。。。
 我: 恩,是的,编译器处理的。
  恩,是的
  当能,可以吧这个include放在一个def里面,这样,他就不能修改外部的变量了。
20:05 这样做很怪,算了,还是算了,呵呵
 johnhax: def的话,那就变成包含头文件了。。。
20:08 
include可以包含静态的文件,或者模板。但是不支持局域化,�
��支持参数。
 我: 恩,是的,呵呵
20:09 johnhax: 
这样的include似乎太局限了。支持局域化和参数,也仍然是静�
��
的,并不是动态的,应该不会影响性能。
20:10 就像jsp:include那样。。。
 我: 恩,印象应该不大,但是我希望能保持简单信,太复杂了,我不好跨平台,不好
翻译成最终代码
  恩,我明白那个意思,^_^
20:11 johnhax: 
假设,我们有支持局域化和参数的include,那就可以想办法和�
��数
定义统一起来。
20:12 我: 哦,吧include做的像函数调用一样?
 johnhax: 不过,include xpath和include一个模板,似乎在概念上有冲突。。。
20:13 找个grails的例子。
  grails可以单独定一个template
  比如
  <div class="book" id="${book?.id}">
<div>Title: ${book?.title}</div>
<div>Author: ${book?.author?.name}</div>
</div>
  它保存为_bookTemplate.gsp
20:14 然后在另一个template里可以这样调用
  <g:render template="bookTemplate" model="[book:myBook]" />
  或者有一个缩写法:
  <tmpl:bookTemplate book="${myBook}" />
20:15 
唯一的问题是,似乎没有办法在一个template里定义子template。
 我: 恩,这是一个办法,而且实现成本貌似并不高,呵呵
  可以啊,为什么不行呢?
  <c:template>......</template>
  include 进来,
20:16 johnhax: 
因为它的template是为了跨page复用,所以在单一个template里定义
template的用例是没有的。。。
 我: 通过编译其插件的机制
  运行
20:17 哦,单行变量冲突?
  不回的,和函数调用一样,往值栈中加一层就行了,呵呵
  其实这也就是一个特殊的函数
20:18 def定义的函数是 String fn(params...);
  template 定义的函数事 void tn(out)
  void tn(out,params)
20:19 你还别说,这两个真的可以统一起来
20:20 johnhax: 
是这样,我最初接触grails的template时,觉得有些糊涂。
 我: template的概念比 macro复杂
20:21 johnhax: 是的,但是两者其实非常类似。
20:22 我: 唯一的区别事,template 
不用生成大字符串中间值,垃圾收集器减轻点负
担,呵呵
 johnhax: 俺是说用户的概念上的。。。
  template中定义了macro,macro是为一个template内部复用准备的。
 我: 用户的概念上,macro就够了,template没啥优势呢,我感觉
20:23 
macro可以像一个普通函数一样调用,也可以想template那样渲染
 johnhax: 而template中调用的子template,子template是单独定义的,提供多个
template中功能复用。
 我: 源码的复用
20:24 johnhax: 
其实从概念上说,template的概念更简单,因为就只有一个概念
,
template,而macro和template,那是两个概念,hoho
20:26 template的概念可以更统一一致。
  template的name,就是template的uri
20:27 在template(a/b/c)中定义的子template d,其uri就是a/b/c#d。。。
20:28 我: 这个交给编译器去处理吧,呵呵
20:29 johnhax: 这样include或者任何其他call 
template的tag,都可以统一使用uri
来指定目标template了。
 我: 完全也可以的,当解析到一个 <c:apply 的时候,自动装载那个template,定义
为零时macro,能后这块做成运行时插件,找到函数,执行,呵
呵
 johnhax: 不过它不是函数,怎么在${xxx}中调用template呢?也许没有这个必要
了。。。
 我: 恩,是,好办法,
20:30 
我开始就没想到,我开始还想一定要像function一样,要有统一
的名字呢,呵呵
20:31 <c:apply name="fn" path="templatepath" xpath="????"/>....
 johnhax: 不需要name了,直接path(改成uri或许比较好)搞定了。。。
 我: 可以通过name指定函数名,也可以通过path和xpath指定文件,但是,必须事静
态的,这样我可以自动编译景区
20:32 恩,呵呵
 johnhax: <c:apply uri="#a"/>就是调用在当前template内定义的子template
  这样也允许其他template去调用子template
 我: 我是说,name 和 url可以二选1
20:33 johnhax: 
xpath实际的作用是截取输出结果的一部分。。。总觉得这个属
性放
在上面有点怪怪的。
 我: 恩,但是我们经常会包含一些文档片段,这样的话,xpath功能比较好
20:34 不然,破坏了xml结构,呵呵
 johnhax: 对,不过既然是c:apply,可能就不用支持这个xpath属性了
20:35 
如果你需要一个子集,不如直接调更小的template复用单位,呵
呵
 我: 我是说 c:apply 里面就不再需要#name这样的了,我都通过xpath自动生成零时模板
20:36 你不需要被执行的模板有任何定义,不需要一个 
《template name = ”sss“ 这
样的标签了
 johnhax: 没明白意思
  举例?
20:37 我: 就是说 ,我只管 <c:apply 
就行了,被apply的模板,不需要定义
<c:template 这样的节点
20:39 比如说 无需要包含某个子模板中的foot区域

我 <c:apply url ="inc.xhtml" xpath="//foot/*"

对方不需要定义一个 <c:template name="foot"
不需要
20:40 johnhax: <c:apply uri="templates/a.xhtml"... 
这个当然不需要,但是假设
你要支持在template内定义子template的话(因为你的初衷不是要�
��持内建的
macro/function嘛),那总还是需要一个<c:template 或者<c:def 
之类的标签嘛。
20:41 
我想到的是,就算是支持c:def来内建子template,也可以用uri来�
��问到,呵呵。
20:42 我: 哦,明白了,你的意思是说,通过 hash 
去直接去def的部分,而不用繁琐
的xpath,是吗?
 johnhax: 那个xpath,它应该是针对产生的结果,不是吗?
20:43 我: 恩,明白了,呵呵。
  不过实现过程还是靠xpath,^_^
 johnhax: 哦,你的xpath属性是针对模板的,不是针对模板的结果的。。。
20:44 我: 这是个好办法,xpath确实比较恶心,呵呵
  恩,是的编译期间的
 johnhax: 这样的话,xpath也可以去掉。
  有两个原因
  1. 支持#xxx,那多数情况下就满足90%的需求了
20:45 2. uri是可以兼容xpath的。
  就是xpointer规范加上xpath扩展。
 我: uri是可以兼容xpath的。?
这个是》
  哦,呵呵。
 johnhax: xpointer规范可以涵盖所有的形式,包括uri#xxx
20:46 我: 直接用xpointer
 johnhax: 如果一个用户都要写xpath了,那让他直接用xpointer好了。。。嘿嘿
 我: 但是目前xpointer支持的api没有
  编译器不好写
 johnhax: 找找看,应该有的。
20:47 我: jdk不支持我就不考虑了,呵呵
  太麻烦了
 johnhax: 就算没有,你不用支持完整了xpointer,只支持#xxx和xpath两种就好了,
反正你都已经实现了。。。
  只需要解析一下uri属性,然后调用调用就好了。
 我: xpointer好像有自己的语法,不是xpath完全兼容的
20:48 而却貌似比xpath更强大也更易用,呵呵
  以前的include还支持xslt
 johnhax: xpointer规范本身不包含xpath,但是xpointer是一个framework,有人写
了xpath1的scheme规范草案。
20:49 我: 是不是也可以删掉呢?呵呵
 johnhax: 删掉?
 我: xslt支持
 johnhax: 你要在一个uri里写xslt啊?疯了。。。
20:50 我: 烤,9点了,不聊了,明天有东西要交差
 johnhax: 呵呵
  我也有
 我: 不是,有一个xslt指定xslt文件
 johnhax: 88
 我: 恩,再见
20:51 johnhax: 
哦,我觉得,针对模板本身的transform意思不大,因为用户可��
�自
己先transform掉。。。如果是针对输出结果的transform可能比较��
�用。。。
 我: 呵呵,xslt 贼那个不爽

Original issue reported on code.google.com by [email protected] on 7 Jun 2009 at 5:02

能不能不要xml配置文件呢

今天看了一下,本来准备用lite做一个gae的小东西。发现lite需
要配置一个
decorators.xml文件。不知道能不能不配置这个东西,实在是不喜
欢配置,并且也没
找到配置文件的文档,不知道如何配置。如果能直接传递一��
�模板文件的相对url就可
以的话会更直观,省去很多配置。并且和一些约定代替配置��
�框架集成的时候会很方
便。因为这些框架会根据请求的url得到一个约定的模板路径��
�

Original issue reported on code.google.com by [email protected] on 3 May 2009 at 11:22

XML文本节点解析错误

这是1.0Alpha3重构ParseContext时发生的bug。
将XML文本节点解析成了直接的表达式输出节点。

已经补充了测试用例。
bug将在1.0Alpha4中修复。


Original issue reported on code.google.com by [email protected] on 17 Mar 2009 at 4:34

自定义函数返回值缺陷

    以一个表达式为例:
     "$.getBdcInfo()>1"  ---$.getBdcInfo() 函数是我自定义的
    如果$.getBdcInfo()写错了,那么他会返回"null",而不是抛出异常。那表达式赞同于"null > 1",结果为true.
    正常情况我想是要把异常给抛出来的。
     我看到代码是没有抛出来的。
     代码在org.xidea.el.impl.OperationStrategyImpl 402行
     如下
     private Object invoke(Map<String, Object> vs, Object arg1, Object[] arguments) {
        try {
            Object thiz;
            Invocable invocable = null;
            if (arg1 instanceof Reference) {
                Reference pv = (Reference) arg1;
                thiz = pv.getBase();
                Object name = pv.getName();
                invocable = getInvocable(thiz,String.valueOf(name), arguments);
                if(invocable == null){
                    arg1 = pv.getValue();
                }else{
                    return invocable.invoke(thiz, arguments);
                }
            }else{
                thiz = vs;
            }
            if(invocable == null){
                if (arg1 instanceof Invocable) {
                    invocable = (Invocable) arg1;
                } else if ((arg1 instanceof java.lang.reflect.Method)) {
                    invocable = ExpressionFactoryImpl
                            .createProxy((java.lang.reflect.Method) arg1);
                }else{
                    if (log.isInfoEnabled()) {
                        log.info("瀵硅薄涓嶆槸鏈夋晥鍑芥暟:" + arg1);
                    }
                }
            }
            return invocable.invoke(thiz, arguments);
        } catch (Exception e) {
            if (log.isInfoEnabled()) {
                log.info("鏂规硶璋冪敤澶辫触:" + arg1, e);
            }
            return null;
        }
    }

Original issue reported on code.google.com by [email protected] on 8 Jul 2013 at 8:43

数组类型检测bug

What steps will reproduce the problem?
1. 当模板数据是来自iframe中的时候
2.
3.

What is the expected output? What do you see instead?

建议解决方案:
Object.prototype.toString.call(source) == "[Object Array]";

Please use labels and text to provide additional information.


Original issue reported on code.google.com by [email protected] on 11 Jul 2011 at 11:04

表达式数组参数低级错误

import java.util.HashMap;
import org.xidea.el.Expression;
import org.xidea.el.ExpressionFactory;

public class JSELTest {
    private ExpressionFactory factory = ExpressionFactory.getInstance();

    /**
     * 表达式函数(与对象绑定时,可以不申明为 static)
     */
    public int testAdd(int i, int j) {
        return i + j;
    }

    public void testExpression() {
        Expression el = factory.create("12 * 60 + 100");
        Object result1 = el.evaluate();
        System.out.println("result1");
        System.out.println(result1);
    }

    public void testMapContext() {
        Expression el = factory.create(" var1 + 2 * var2 + obj.testAdd(1,2)");

        Object result21 = el.evaluate("var1", 123, "var2", 456, "obj", this);
        System.out.println("result21:");
        System.out.println(result21);

        // 通过方式传递变量
        HashMap<String, Object> context = new HashMap<String, Object>();
        context.put("var1", 111);
        context.put("var2", 222);a
        context.put("obj", this); // 设置对象

        Object result22 = el.evaluate(context);

        System.out.println("result22:");
        System.out.println(result22);
    }

    public void testFunction() {
        Expression el = factory.create("100 + testAdd(1,2)");
        Object result3 = el.evaluate(this);
        System.out.println("result3");
        System.out.println(result3);
    }

    public static void main(String[] args) {
        JSELTest test = new JSELTest();
        test.testExpression();
        test.testMapContext();
        test.testFunction();
    }
}

result:
result1
820
result21:
var1NaNnull
result22:
558
result3
103

what's wrong?
result21:
var1NaNnull
this code;
        Expression el = factory.create(" var1 + 2 * var2 + obj.testAdd(1,2)");

        Object result21 = el.evaluate("var1", 123, "var2", 456, "obj", this);
        System.out.println("result21:");
        System.out.println(result21);

Original issue reported on code.google.com by [email protected] on 9 Aug 2010 at 7:32

JSON 日期扩展

JSON标准中尚未提供日期类型的支持,然而程序开发过程中这�
��常见需求。

计划参考如下标准:
http://www.w3.org/TR/NOTE-datetime
http://www.iso.org/iso/date_and_time_format
http://en.wikipedia.org/wiki/ISO_8601
http://www.ietf.org/rfc/rfc3339.txt

Original issue reported on code.google.com by [email protected] on 12 Aug 2010 at 4:57

运算符重载

是否支持基本运算符(+-*/)重载?通过自定义运算符的方式�
��

Original issue reported on code.google.com by [email protected] on 23 Oct 2012 at 12:42

这是干什么的

非常不好意思,我看了前面的项目介绍依然不知道这个项目��
�干什么的,
我从javaeye的新闻中看到,然后到了这边。
我是一个初学者,我实在没明白您的项目。
能不能帮我解释一下。
万分感谢。

Original issue reported on code.google.com by [email protected] on 25 Mar 2010 at 7:07

我想要知道new ExpressionImpl后得到的具体的变量的名字

比如a == 
b,那么编译后的ExpressionImpl里应该提供获取操作数(a,b这2个)
的接
口,否则我要如何提供参数值;或者提供回调的方式,通知��
�些操作数被解析到也
行,这样我才能充分使用你的引擎的解析功能,而上下文获��
�值的方式有我来提供,
嘿嘿。不知道可以不?

Original issue reported on code.google.com by [email protected] on 24 Apr 2009 at 9:07

编译器接口同步

希望同步Java编译器和JS编译器的接口,并且做到js的编译扩展
能够直接迁移到Java
版本编译器的 js插件中去。


Original issue reported on code.google.com by [email protected] on 22 May 2009 at 12:49

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.