《社会契约论》和《金融的逻辑1》

高三读卢梭的《社会契约论》,有一种非常理性的体验让我印象深刻至今,在目前依然是一部让我觉得至关重要的人文学科著作,让我自认为我从本质上理解一些社会的现象和属性。简单来说,我为什么选择做一个好人(关于我是一个好人这点,你们不要笑),不是因为我畏惧做坏人带来的惩罚,而是我知道我们相约一起做一个好人我们的利益才能最大化,再加上“好”事不出门的“好”,“坏”事不出门的“坏”,做人任何瑕疵都有被无限放大的可能,足以让你身败名裂。所以说,很多好人并不是从道德的高度出发,而是现实生活中利益权衡的结果。所谓懂得“做人”,是懂得做一个好人。 但是我们看到这个世界依然有很多坏人,为什么有这么多的坏人?在我看来第一个原因就是没有读一读卢梭的《社会契约论》,也就是说受教育的层次太低了。注意,我这里说的受教育是理解事物的一种本质,同时,我用的词汇是“一种”,事物的本质严格来说是你认为的事物的本质。但是,真理只有一个。坏人如果知道做一个好人,他的利益才会最大化时,坏人就会少去很多,我们才会看到这个社会的各个岗位的人员尽心尽职,公平的追求自己幸福。 为了解决因为社会各个群体所受的教育层次不一样所带来的社会治安和发展问题,所以社会逐渐演进出了法律等社会公共契约,用强制性的力量去促使大众利益最大化。

你可能会问,为什么有那么多受了教育的社会败类坐在高位翻手云覆手雨?很简单,这是因为这些人觉得他做一个坏人他的利益就最大化了,但是我们要明白的是这种人的利益不会长久(影响了其它大众的利益),扰乱了整个系统的平衡的人会被法律制裁。法律的作用和目的凸显在这里。 法律不是条款,而是一种大众利益最大化的象征,掌握在大众手里。这是我读《社会契约论》的所得。 在一个智能系统里,任何规章制度不是一蹴而就的也不是天生就有的而是不断自我修正的结果,金融也是一样。在原始社会肯定是没有金融一说,直到近代,金融一词才被某日本人翻译出来。

我们看原始社会发生的借贷情况不是借钱而是借物,发生借物的关系不是在部落之外而在部落之内,份额不会太多,根据陈志武先生的看法是更多的是发生在血缘关系之内。在血缘关系之内发生的借贷,风险性更小,到封建社会,血缘关系也一直保证借贷关系正常化的保障之一。 儒家的孝道文化是维系血缘交易的文化和道德保障。我最深刻的体会是,在我们农村,人十年一季的大寿是要办酒席的,特别是老人。酒席吃完不能抹了嘴就走,你还要送礼金,你过五十大寿的时候,别人送你300礼金,下次对方做寿的时候,你可能会送400。礼金数的增加,一面可能是通货膨胀,另一方面就是给对方传递一种不好直接说明的消息:下次我办酒席的时候你要超越这个数。 但是现在就行不通了,对我而言,你现在做酒席我可能去都不会去了,因为我可能未来不会办什么酒席,我不会依赖你的那点礼金。对于打着亲情的晃子办酒的人,不仅没有赶上时代的浪潮,也会因为过度消费亲情造成亲戚之间的隔阂。 这一切的变化是依赖于金融的发展,证券、保险等等理财产品的丰富和完善,逐渐让这种依托血缘关系的借贷关系走向现代化。

现在别人向我借钱,我可以明确快速的拒绝;你如果要买房向朋友亲戚借钱一次性付清,那更是很难的事情,因为现在的理财产品足以让你有更多的选择按期付款,最重要的是,我以后还打算按期付款呢,你为什么要一次性付清呢!如果你是一个一年没有和朋友联系的人,突然在qq上跟别人说借钱,这种事情想都不要想,免得尴尬。因为金融业的发展,我不用担心这次我不借钱给你,下次我找你借钱的时候你不借给我,我的钱财可以换一种方式去投资。

可以说,现代社会了解金融合理理财才能活得更自在。

那么在现代金融体系,为了活的更好更有“好人”范,应该注意什么。对,就是你的信用。传统的金融已经发展到科技金融时代,你的网上购物数据、你借给别人的钱有没有还,在大数据时代,通过金融科技的手段可以被全面快速甄别,不要因为一时的口说无凭没有实现诺言而失去在现代征信体系的立足之地。

imagesLoaded.js

这个是一个检测网页图片加载状况的js库,因为毕业设计的场景图片比较多,所以顺便用到了这个库,了解到这个作者还写了很多有意思的框架。

作者说,JavaScript is all like “You images done yet or what?”这是什么梗?望知道答案的同学分享一下。

为什么要用这个库,估计理由和上面的那个梗有很大关系。我为什么要用这个库,主要是为了让图片加载的过程中有一个有意思的loading,让等待的体验更好一点。

第七章—分支

如果你想给你的项目创建多个版本怎么办呢,虽然创建多个版本的原因可能是因为你的项目突然产生了一个非常严重的bug、你参加的开源项目不能满足你的意愿、甚至你就想留一些早期的代码作为后期的怀念。

使用git里面的branch概念就可以做到这一点。 最重要的一点是,你在开发一个非常牛逼的项目。

但是一个牛逼的程序员是不能满足现有的牛逼的,所以开一个2.0分支去远征,让稳定的1.0版本继续使用。所以怎么能不去使用分支!

我们经常使用git pull origin master命令,作为新手可能没有去想这个master是什么意思,其实master就是主分支的意思,这就导致了你不能再创建一个叫master的分支除非你删除主分支。同时,这个命令也可以使用git pull 命令来替代,因为会默认获取master分支的代码。 程序员一定要懒,只有懒才能写出更好的代码。

如果你对一个程序员说,你真是太勤奋了,我想这不是最好的赞词。 推荐的命名法则是使用层级式的,比如bug/pr-1023,这样的好处是,git像shell脚本一样支持通配符查找。你可以使用git show-branch ‘bug/*’找到和bug相关的分支。 创建分支 git branch branch_name命令可以创建一个分支,处在最新的commit。

这个命令的完整形式是git branch branch_name [starting-commit],这意味着你可以从过往的位置开创新的分支。

关于印象笔记SDK的问题

我们知道在笔记行业有两大巨头,一个是印象笔记(Evernote),一个是OK记(OKMEMO)。

如果你不知道我所提到的两个产品,可以先去必应一下。

最近我所在的OK记团队在做印象笔记的同步,就是用户授权将ok记的笔记写入印象笔记,你可能会问,作为笔记行业的两个巨头,OK记为何服软将自己的数据转移到印象笔记?这样OK记还能和印象笔记并列吗?坦率地说这个问题很尖锐,你可能希望我回答出当OK记做不下去的时候,为了体现对用户的负责,再将用户的数据转移到印象笔记的答案。

这个有点尴尬。

闲话少说,还是说印象笔记的sdk。 在印象笔记的sdk里,有这样一些代码:

curl_setopt_array($handle, array(     CURLOPT_POST => true,     CURLOPT_URL => $this->getBaseUrl(‘oauth’),     CURLOPT_HTTPHEADER => $this->formatHeaders($headers),     CURLOPT_POSTFIELDS => http_build_query($arguments, ”, ‘&’),     CURLOPT_HEADER => true,     CURLOPT_RETURNTRANSFER => true ));

因为我本地是不支持SSL的,所以这个SDK从上周开始,断断续续的弄了好长时间都没有调试通过。一度认为印象笔记将要倒闭,SDK无人维护。

最后由鼎哥大神,加了一行代码:

CURLOPT_SSL_VERIFYPEER=> false

解决。

其实要解决这个问题,需要了解cURL的知识,及OAuth1.0和OAuth2.0的规范。

更重要的是不要怕看别人写的代码,明确编程方向。

Parallax.js

简介

比较粗俗地讲,parallax.js是根据你的鼠标或者是移动设备的摇晃让元素做出反应的视差库。可以查看demo

简单使用

<ul id="scene"> 
<li class="layer" data-depth="0.00"><img src="layer1.png"></li>
<li class="layer" data-depth="0.20"><img src="layer2.png"></li>
<li class="layer" data-depth="0.40"><img src="layer3.png"></li>
<li class="layer" data-depth="0.60"><img src="layer4.png"></li>
<li class="layer" data-depth="0.80"><img src="layer5.png"></li>
<li class="layer" data-depth="1.00"><img src="layer6.png"></li>
</ul>

简单使用的代码的结构大概是这个样子,记得加名为layer的class,data-depth的推荐值为0至1,不过你要填入100或者-100,也没有什么关系,只是会动得特别快,像幽灵一样。

然后加上这样的js代码:

var scene = document.getElementById('scene'); 
var parallax = new Parallax(scene);

移动的速度是怎样确定的

有个公式:

xMotion = parentElement.width * (scalarX / 100) * layerDepth 
yMotion = parentElement.height * (scalarY / 100) * layerDepth

parentElement.width就是父元素的宽度,也就是id为scene的宽度,layerDepth就是设置的data-depth的值,scalarX和scalarY就是可以设置的参数,给你移动的距离有了可以设置的灵活性,数值越大,移动范围越大,默认值都是10.

其它配置

<ul id="scene"
  data-calibrate-x="false"
  data-calibrate-y="true"
  data-invert-x="false"
  data-invert-y="true"
  data-limit-x="false"
  data-limit-y="10"
  data-scalar-x="2"
  data-scalar-y="8"
  data-friction-x="0.2"
  data-friction-y="0.8"
  data-origin-x="0.0"
  data-origin-y="1.0">
  <li class="layer" data-depth="0.00"><img src="graphics/layer1.png"></li>
  <li class="layer" data-depth="0.20"><img src="graphics/layer2.png"></li>
  <li class="layer" data-depth="0.40"><img src="graphics/layer3.png"></li>
  <li class="layer" data-depth="0.60"><img src="graphics/layer4.png"></li>
  <li class="layer" data-depth="0.80"><img src="graphics/layer5.png"></li>
  <li class="layer" data-depth="1.00"><img src="graphics/layer6.png"></li>
</ul>

limit-x:限制x轴的移动距离。

friction-x:如果想模仿卡顿的效果,把这个值设置大一点。

origin-x:这个值一般设置为0.5就好,以鼠标为中心进行移动。

scalar-x:如果想要在x轴移动的快一点,将这个数值变大。

https://github.com/wagerfield/parallax

http://bs.zengxiaoluan.com/

低价租售阿里云备案幕布

这几天一直在弄分库,所以之前写的代码要修改一下。以前一直觉得分库是个很牛逼的东西,至少有一定的数据量才应该去分库,跟人吹牛皮的时候,可以说我是“二八”定律里的“二”,意思就是说只有百分之二十的程序员做过分表分库,而我在还没有毕业的时候,就走到了这个“二”的行列里了。

等一下,这话说的有点不对味。

我问在中南读书的某同学,“你作为一个资深系统架构师,你搞过分表分库,那你们是怎么搞这个东西的?”。

他曾经自诩系统架构师,统管多端,曾经成功欺骗一个天真老板,搞垮了几个创业公司。而他的答案也无二致,无非就是根据用户id取模,再逐一进库出库。

另外,想到四月将至,我也应该回学校去做什么鸟什子毕业设计,我一个学工业设计的,按照规划好的套路,应该是建个什么模型,渲染搞一下,然后敷衍几句这个设计如何符合人机工程学,毕业了事。但是很可惜的是,这些我不愿意搞,没什么意思,虽然主要原因不是我不想搞,而是我不会搞。所以,我还是搞代码,美其名曰,交互设计。也算不偏离工业设计太远。

所以我买的域名要备案了,现在我在阿里云购买了一块高价拍照幕布,十五元人民币,现在低价租售给身边要备案的朋友,你们不要的话,我就拿着洗脸了。

怕老婆,你站哪边?

今天遇到两个问题,一个问题是用户的验证问题,在同一个函数里用户的唯一标识居然换了,个人觉得是 session 的问题,但是也不一定,代码调试了之后,这个问题居然奇迹般的不见了,我并不知道问题出在哪里;另一个问题是印象笔记同步的问题,下班后又调试了一个多小时,终于将流程打通了。

继续阅读“怕老婆,你站哪边?”

如何“面试”一家公司

相信好工作你一定会找得到,只是有点波折。

传统的形式是公司面试求职者,求职者会相对弱势和被动,但是对于有竞争力的求职者而言,公司面试求职者,求职者也在面试公司。那么一个求职者应该怎么去面试一个公司呢?从我的个人经验来看,可以从以下几个细节入手。 继续阅读“如何“面试”一家公司”