specter的简单使用

为什么要使用 specter

为了说明为什么要推荐大家使用 specter,先举个实际用到的例子🌰

(def db {:custom {:choices {:current-id "1002"
                            :datas [{:category_id "1002"
                                     :sample [{:id "4"
                                               :name "不需要试穿"
                                               :default_flag "1"}
                                              {:id "5"
                                               :name "半成品试穿"
                                               :default_flag "0"}]}]}}})
进入阅读→

json和edn的在线转化工具

(require '[reagent.core :as r])
(require '[cljs.reader :as reader])

json格式化

将不规范的json(key不用引号引起来)的形式转化为规范化形式

进入阅读→

理解Clojure的LazySeq

"懒"是clojure的重要特性, 简洁表达意图的同时可以避免付出性能代价.

而且我们可以借助它实现无限序列, 做到按需求值.

进入阅读→

函数编程的一个小例子

问题

下面的map, 只保留每个key的数组中, 对应的:required下的数组为true的元素:

(def x {:title ["名称" "编码" "排序" "最小值" "最大值" "图片"]
        :show-in-list [true true true true false false]
        :key [:part_name :part_code :show_order :min_size :max_size :part_image]
        :input-type [:txt :txt :num :num :num :img]
        :value [nil nil nil nil nil nil]
        :required [true true false false false false]})
进入阅读→

emacs的clj/cljs环境(持续更新)

模式

为了让emacs更好用, 需要进行些扩展, 包括emacs的package和外部命令 我们在Purcell 配置的基础上进行扩展: 需要增加的扩展, 都可以用M-x package-install在线安装

  • undo-tree
  • clj-refactor
  • page-break-lines
  • cnfonts
进入阅读→

excel导出和下载demo

本篇demo常用的excel导出功能的服务端生成文件,以及前端下载 后端给response写入stream。 前端用<a>标签模拟点击下载,是clojurescript和javascript交互的一个实例场景。

后端生成文件

使用的第三方库:dk.ative/docjure,创建一个excel还是很简单的。 贴个db查询后对数据处理,并利用该库生成一个excel的代码。(使用模板导出的情况后面再补)。

进入阅读→

websocket前后端通信

服务端

服务端配置websocket相对来说挺简单,因为我们项目当初new的时候没有加websocket,现在是参考luminusweb websocket往里增加关键代码

    1. 创建ws-route 创建如下route,并跟普通http api route一样加入handler序列中。
进入阅读→

emacs上使用px转换vw插件

因为emacs缺少一个插件已经影响了前端同学对emacs的兴趣了,这有点尴尬,其实emacs很强大的。 对标vs code的px2vw插件,实现了一个简易的相似功能的emacs插件。 需求被大神知道后重写了一个可以支持对选中区域转换的,使用方式如下。

配置

~/emcas.d/lisp/自件一个名为px2vw.el文件,将以下代码复制进去,保存。

进入阅读→

Macro第一部分-入门

Macro介绍

Lisp语言的一个特性是code is data,Macro是这一特性的终极体现,它允许程序员简洁方便的扩展自己的语言,是一种meta-programming的技巧。

hand

进入阅读→

程序员的最大噩梦

这是很早之前在Quora(美国的知乎)上看到的文章,被我收藏到Pocket,应该是15年的一篇文章,原文已经打不开了。

翻译了一下,算是对1024迟到的庆祝。

我受雇于一个心理学家来修复一个有‘奇怪输出’的程序,这个程序是心理学家以前的一个研究生写的。该程序读入一个数据文件,输出50个问题,然后根据这50个问题的答案给出一个评分。程序运行在大学机房的一台3B2工作站上。程序跑起来后,在切换问题的时候确实有些奇怪的文字闪来闪去,让人心烦。貌似个简单bug,我们决定先花点时间定位问题(按小时付费),再确定一个最终的费用。

进入阅读→