web 动画与动量守恒

在系统不受外力下,物体的质量(m)与它速度(v)的乘积就是动量,用字母 p 来表示。

$$ p=m·v $$

动量是矢量,有大小,有方向。

还有一个动能公式:

$$ KE = { {1 \over 2} mv^2 }$$

通过上面两个公式,我们可以推导出两个物体相撞后的速度,以此来实现封闭空间的碰撞动画。

继续阅读“web 动画与动量守恒”

父子页面的 iframe 如何通信?

写这篇文章的原因是跟同事讨论了这个问题,我们持有不同的看法,他坚持在一个 iframe 里调用另一个 iframe 的方法,也可能触及 dom 操作;我认为简单传数据过去就好,隔离一下运行环境。跨 iframe 执行代码会有一些坑,比如使用 instanceof 操作符的时候,数组不是一个数组的实例,用 Array.isArray 不会有这个问题。

demo

See the Pen frame-out by zeng (@zengxiaoluan) on CodePen.

继续阅读“父子页面的 iframe 如何通信?”

vs code 怎么使用 .editorconfig

项目文件夹里包含一个 .editorconfig 文件解决了我很久的一些困扰,比如删除行末的空格、缩进使用 tab、tab 的宽度是 2 个空格、文件最后新增空白行。这是一个很棒的创意,推荐大家使用这个。

先再 vs code 安装一个插件,地址在这里

再新建一个 .editorconfig 文件,写上一些规则,如:

# 针对所有文件
[*]
# 使用类 unix 的换行符
end_of_line = lf
# 新增最后的空白行
insert_final_newline = true

就这么简单,可以使用了。如果大家有代码洁癖,估计就能理解我上述的规则以及为什么要这么做。

参考链接

segfault

今天上班遇到了一个问题,就是php的一个错误:segmentation fault。我是第一次遇到,面对这个单词的时候,还陌生,总是发音完全——“segmentation”,但是有经验的人会简称为“segfault”。 比如这个链接描述的:https://github.com/ezyang/htmlpurifier/issues/79 。 那就分享一个库:htmlpurifier。 我在github上问了这个作者为什么会造成segfault,结果是因为php版本的原因,php语言本身的bug,也是第一次意识到了php版本低所造成的问题。在github上第一次有开源作者答复我的issue,开心。介绍一下htmlpurifier的基本用法:

  1. 基本用法:/** * 过滤掉html里的class属性,没有协议的href属性 * @param string $html 输入的html * @return string 输出的html */ public function checkMore($html) { include_once ‘htmlpurifier/HTMLPurifier.auto.php’; $config = HTMLPurifier_Config::createDefault();$config->set(‘Attr.AllowedClasses’,’someClassesNotExists’); $config->set(‘AutoFormat.Linkify’,true);$purifier = new HTMLPurifier($config);$html = $purifier->purify($html);return $html; }
  2. 其中的‘.’是什么意思:

$config->set(‘HTML.Allowed’, $value);和$config->set(‘HTML’, ‘Allowed’, $value);是一个意思。 具体细节自己去看。

四点记录

没看过什么书,没什么工作经验,浅谈。 我想团队协作的基本原则是沟通顺利和互不影响各方的工作,如此一来就会面对工作同步或者滞后的问题。

刚刚开始没有经验的团队,一般流程是出设计稿、编码、测试,甚至是出设计稿、编码、出设计稿、改码、出设计稿……,永远不知道什么时候是测试时间,有一天老板心血来潮要体验产品,结果一堆bug,产品实现人员被骂得狗血淋头。 好像一开始就扯远了文不对题了,好,开始数点。 1.前后端如何配合 前后端的配合主要是数据获取和操作的问题。一般的做法的是各方自己写自己的,前端需求有了问题或者API调用不对头,后端改一下。很明显,这样并不好,会导致沟通成本增加(不要太简单的理解沟通成本)。 既然这样有问题,你可能会问那前后端在工作开始就确定API的调用接口不就好了?这样其实是没有什么用的,因为你还没有进行编码工作,你对这个产品并不了解或者细节了解的不深,双方的沟通是没有深度和不清晰的,即使一开始沟通了,后来还是再次沟通。

前端其实一开始不需要数据,可以自己模拟一些数据来实现界面设计的实现,这个时候后端编码人员也在同步进行API设计。

界面快要完成了,前端和后端编码人员进行API的核对和商讨,这个时候,编码人员对整体的架构都有清晰的认识,沟通就比较高效。

工作上也谁都不耽搁。 我这么说不是否定沟通,而是如何进行高效沟通。

2.面向对象编程如何设计你的类 在数据驱动的产品中,用户的所有的操作都是操作他的数据,一个类的设计也应该围绕数据操作来进行,如果有一个user表,那你的代码肯定也有一个user模型,围绕增删改查来组织你的代码,无论你的c层的逻辑如何,m层的代码实现也不会受影响。 这样的好处是m层和c层的代码耦合度很低,以后改起来很方便。以前写代码没有经验,写了很多难维护的代码,也不优雅。 3.作为一个编码人员的基本素养是什么 在目前,我只能简单的理解为你要对你的代码负责,负责包括写好注释,测试代码的功能和使用流程。

当然,我也问过很多人这个问题,他们都说不知道,这个问题了太难了。反过来想,有答案不见得是好事,追求答案的状态才是重要的。

一个编码人员在不同阶段对素养的理解和追求应该也是变化的。

只能说,我要做一个有职业素养的人。 4.2015的总结 上了半年班,可能是人生最后的寒暑假没有了,我心里很不情愿,我还没有做好心理准备,lol还没有上大师,心有不甘。

但是我是适应能力很强的人,所以没有上的大师以后再上。 说到最后都是感谢。如果有两个关键字的话,我想一个是拒绝一个是迎合,无论我得到的是拒绝还是迎合,我都学到很多东西,特别是那些我去实现和追求某些东西能开导我的道理,感谢你们。