emacs中macro的使用

把js的函数改为sql配置文件

把js中散落在代码中的sql集中放到一个配置文件中, 需要修改:

  1. 把函数改为sql snippet的名字
  2. 把函数声明改为sql注释
  3. 调整缩进
  4. 去除最后的函数返回部分
  5. done
进入阅读→

core.async在前端的应用场景

本文会分为两部分, 第一部分是理论分析和代码, 第二部分是一些例子

前端处理并发编程的方法

进入阅读→

爬取wwdc全部视频链接(基本完成)

假期跟进了一下iOS开发的新进展, 主要是swift和spritekit.

当前5.1版本的swift据说可以保证ABI的稳定性, API/语法稳定性依旧不保证, 就是说以前的代码肯定跑不起来, 现在的代码, 以后也不保证能用.

这是一开始没想明白还是故意整大家, 我不清楚, 很佩服苹果的勇气.

进入阅读→

java-jar jar包带环境变量(参数)启动

需求

java工程我们可以编译成jar也可以翻译成war,一般地,war包我会丢到tomcat容器里,启动tomcat来访问服务,端口、SSL证书、日志等等,都托给tomcat。

如果打的是jar包,我通常会用nohup启动,比如生产环境的一些db、redis、第三方secret等不会配置到项目里,今天要记录的便是用nohup java -jar 启动jar包时如何加载环境变量配置的问题。

进入阅读→

Google Closure Libary的使用

介绍

花点时间在cljs上, 很快就知道cljs的编译({:optimizations :advanced }的时候), 有两步

  1. cljs->js(JVM完成)
  2. js->js优化编译(Google Closure)
进入阅读→

平面星系模拟

内容

参考Bob大叔2014年的演讲

演讲的主旨是c的历史在将在clojure上重演, 从不接受到成为业界标准.

进入阅读→

LISP和它的REPL(修改中)

主题

推行Lisp大概是件困难的事情吧, 毕竟62年都过去了, Clojure(最流行的lisp)还在语言排行榜20名以外徘徊.

Lisp有两大谜团, 一是从来不主流但是有旺盛的生命力, 二是有旺盛的生命力但是从来不主流.

进入阅读→

core.async使用队列解决异步逻辑的例子

core.async是一个库, 解决了代码块(jvm上可以不在同一个线程里) 异步通讯的问题.

管道或者说队列是非常优秀的解耦工具. 可以用来解决比较复杂的逻辑.

下面是一个例子. 首先是js的一个版本

进入阅读→

emacs的字体工具cnfonts

推荐一个好看的字体

JetBrains Mono 是JetBrains专门为程序员出的一套西语字体(不支持中文).

中文支持我用微软雅黑.

进入阅读→

goog.object/getValueByKeys和aget更简便的取出#js的值

在clojure中我们经常会取到js类型的返回值,根据以往的经验,我们一般会选择用js->clj进行转换,然后get-in我们想要的值。我以为这个方法是万能的,但事实上并不是,下面让我们看看哪几种情况可以使用转化方法:

class myObject  {
  constructor(name) {
    this.name = name;
  }
}
window.myObj = new myObject("hello");

window.myMap = {"key": "value"};

window.myArray = ["Saab", "Volvo", "BMW"];

js map可以用js->clj进行转换

进入阅读→