跨域访问

cros的定义

很多web程序员不够深入了解跨域访问, 上个月Zoom(就是那个刚上市的zoom)爆出本地zoomserver 跨域访问漏洞的问题暴露了程序员的无知.

有篇很有意思的文章,推荐阅读

进入阅读→

Reagent文档: Batching and Timing

https://github.com/reagent-project/reagent/blob/master/doc/BatchingAndTiming.md

state变化 -> UI变化

react会尽可能批量处理render, 批量render是react高性能的重要原因. 多次对程序状态的修改, 可能会体现为一次页面的更新. 页面(Dom)重绘的时机是浏览器自己控制的, 在'适当时机'更新. 这种行为有诸多好处

进入阅读→

lisp 代码编辑

编辑lisp代码是个享受, 是的, 是个享受. 有Paredit伴你左右, 编辑代码树会成为你最重要的编程习惯.

括号会变成你最好的朋友, 像空气, 虽一无所觉, 但无所不在, 生死相托.

OH: "If you think paredit is not for you then you need to become the kind of person that paredit is for."

进入阅读→

camel-snake-kebab

命名方法

  • camel: 驼峰, helloWorld
  • snake: 蛇形, hello_world
  • kebab: 烤肉串, hello-world

kebab读音[kɪˈbɑːb], 是clojrue的默认命名方式

进入阅读→

Reagent 深入学习第四部分

  1. 在第一部分中, 我们了解了如何定义组件并响应变化.
  2. 在第二部分中, 我们观察了组件的生命周期.
  3. 在第三部分中, 我们探讨了组件序列的细微差别.

最后, 我们构建一个涂鸦应用程序. 涂鸦应用程序允许用户使用鼠标创建线条绘图. 本章并不会介绍任何新特性.

在过程中我们会共同发现一些原则. 掌握这些原则, 会让我们对应用中可能遇到的问题有更好的准备.

进入阅读→

Reagent(React)深入学习第三部分

欢迎来到第三部分!

第一部分我们看到了如何生成一个reagent组件, 组件如何挂载属性, 响应事件, 在数据的驱动下的状态变化.

第二部分我们学会了为什么要以及怎么使用生命周期函数, 以及怎么避免使用Form3...

进入阅读→

Reagent(React)深入学习第二部分

欢迎来到第二部分!

第一部分我们看到了如何生成一个reagent组件, 组件如何挂载属性, 响应事件, 在数据的驱动下的状态变化. 接下来的更有挑战:

进入阅读→

Reagent(React)深入学习第一部分

Clojurescript(cljs) 交互式执行环境

Reagent是React在cljs上的一个封装库, 诞生于React还是Class Component的时代.

在使用函数来组织组件这件事情上, 它走的比于Function Component更远, 使用方法也更加直观清晰.

进入阅读→

Clojure,你成功引起了我的注意

应该是在2012年,我还是个Haskell的粉丝,看过一些lisp的入门(因为使用emacs,得写些elisp配置文件),对lisp有这个语言括号很多而且性能很差的认知。当时在YouTube上看一个clojure的视频

视频里的人说:

如果你已经会编程了,这不是你的优势,而只会是障碍,你需要改掉一些坏毛病

进入阅读→

面向对象的设计模式和Clojure

转载自 BlindingDark在简书的翻译

我们所使用的语言本身已经完犊子了. 所以我们搞出来一个叫设计模式的东西.

  • 尼古拉斯・赵四

这里有两位谦逊的程序猿 - Pedro Veel 和 Eve Dopler 正在运用设计模式, 来着手解决一些通用而常见的软件工程问题.

进入阅读→