文章列表
clojure destructing
destructing表示通过数据结果常量来模式匹配参数
vector可以匹配接口sequential实现, map常量可以匹配接口associative的实现
vector通过顺序匹配,可以匹配支持nth的任意类, 可选的& 表示匹配剩余的选项 , :as表示匹配整个参数
(let [[a b & c :as d] [1 2 3 4 5 6]]
[a b c d])
==>[1 2 (3 4 5 6) [1 2 3 4 5 6]
Map通过键来匹配相对应得, 可选的 :as表示匹配整个对象,r 表示匹配的默认值(如果匹配 ...
七个习惯成就自我
或许你看过这篇文章,但我还是选择把它再贴出来让更多的人看,来领悟。
习惯一:别指望谁能推着你走
如果你不向前走,谁又会推你走呢?因此,积极主动的态度,是实现个人愿景的原则。 我们常说:“我不会……,因为遗传……”、“我迟到,因为……”、“我的计划没完成,因为……”我们总是在找借口或是抱怨,在不满中消耗自己的生命。而人类与动物的区别正是人能主动积极地创造、实现梦想,来提升我们的生命品质。所以,有效能的人士为自己的行为及一生所做的选择负责,自主选择应对外界环境的态度和应对方法;他们致力于实现有能力控制的事情,而不是被动地忧虑那些没法控制或难以控制的事情;他们通过努力提升效能, ...
Enlive教程
Enlive是应用基于clojure的转换到html文档的类库,基本过程就是定义一个具有一些规则的模板, 每个规则有一个选择符从要分析的
html文档中选择一些节点 和 应用到选择节点转换为新输出文档的转换指令。
这个教程使用repl会话介绍Enlive的主要特性
先看一个简单的例子,假设有文件 t1.html包含下面内容
<html>
<body>
<h1></h1>
</body>
</html>
首先确认类路径中包括clojure.jar clojure-contrib.ja ...
Enlive是基于css选择符的clojure语言的模板库。
一个Enlive模板有2部分,一个html文件和定义在clj文件中的deftemplate形式。
Enlive中的新内容:
片段选择符允许选择临近的节点,通过包含2个节点选择符的map (例如: {[:h1] [:p]}), 包括边界并且选择最小的匹配片段。
转换时普通的旧闭包,这些函数带选择的节点作为参数返回Nil,或 另外的节点 或 任意嵌套的节点集合。
规则是自上向下应用,首先是转换整个树,结果树被转化到下一个规则。
节点转换是深度优先的,也就是如果一个选择符选择几点节点, ...
来北京2个星期,郁闷的事工作不好找,水平太菜,越混越差......
依此标记一下,努力学习………………………………………………
1: js中的for循环中的闭包只能使用最后的循环变量, 解决办法就是把for循环下的Body抽取为函数调用就可以了
Here are my most memorable lessons so far.
Set a duration of how long you think it should take to solve a problem - C'mon, admit it! I'm just as guilty as the next programmer. I've seen programmers sit in front of a monitor for eight hours at a time trying to solve a particular problem. Set a time t ...
GWT POST request doesn't include parameters
Keywords:
GWT POST request parameters HTTP HTML RequestBuilder AJAX
Problem:
Following the GWT documentation for making a http-post but it's not clear what the post data should look like if you want it to include form parameters. The newer documentation fo ...
clojure并发学习
1: ref 抽象协调的、同步的可变状态, 利用STM来实现
创建一个ref
(def r (ref {}))
用引ref的值 @f 或 (deref f)
改变ref的值
alter, commute, ref-set ensure
2: agent抽象协调的,异步的单个可表状态
send, send-off
3: atom表示共享的、同步的独立的状态,不需要协调
swap!, compare-and-set
4:var抽象单个线程下的可变,所有线程共享同一个根的状态
创建一个var
(def v ...
- 2009-11-07 12:33
- 浏览 942
- 评论(0)
当同样的操作连续操作n次时,在命令式语言里是通过循环来控制连续操作的次数的,
譬如
List data = new ArrayList();
for(String s : {"aa", "b", ...} ){
data.add(s)
}
同类型的操作共享一个模型,都是重复墨重操作,在clojure里能把这些共同的模型抽象为macro,
在编译期进行宏扩展,从来形成一种公共模式,减少代码量。
其实现都是:
一个基本情况,通常是一次调用, 进行简单处理
多次调用, 对自己进行递归调用。
在core中这种宏有4个,
1: .. 连续调用方法,像jQ ...
1: excel导出时中文名乱码 (String. (.getBytes "文件名" "GBK") "iso8859-1"),需要把中文名编码转化成iso8859-1编码的
---------转别人的
使用servlet来下载文件,其原理非常简单,只要得到文件的输入流(或相应字节),然后写输出流即可。现就其中的几个细节问题展开:
1. MIME类型的设置:
Web 浏览器使用 MIME 类型来识别非 HTML 文档,并决定如何显示该文档内的数据。
例如EXCEL文件的 MIME 类型是 "application/v ...
- 2009-10-29 11:17
- 浏览 834
- 评论(0)