Hexo博客常用命令

  • 新建md格式的博文(create a new post):hexo new 标题
  • 启动node http服务,实时预览:hexo server
  • 生成静态网页:hexo generate, Generating static files
  • 增量生成静态网页:hexo generate --watch, Hexo can watch for file changes and regenerate files immediately. Hexo will compare the SHA1 checksum of your files and only write if file changes are detected.
  • 浏览静态网页:hexo server -s, In static mode, only files in the public folder will be served and file watching is disabled.
  • hexo version
  • Cleans the cache file (db.json) and generated files (public) : hexo clean
  • upgrade: npm install hexo-cli -g
  • theme: git clone --depth 1 https://github.com/hexojs/hexo-theme-landscape themes/landscape

独立博客文摘

谢益辉

https://yihui.name

微信

即时通信工具的问题:容易成瘾、对话难以深入、消息组织杂乱无章、表面消息都在那儿而实际上是信息不知道在哪儿。

我觉得还是邮件更靠谱一些。

我倾向的做法是:如果是组织上的机密事务,就少数几个核心成员邮件讨论;如果是可以组织内部全体公开的,就开个论坛私密版块讨论,这样后来的人可以看见前面说了什么,知识和经验都可以积累。不像即时通信工具,就算你想认真讨论,还没说两三个回合,别的事情又涌进来给打断了。即时通信有即时回复的压力,这个压力会让思考变浅,适合日常生活对话,但不适合讨论事情,你可以回想一下,你在一个微信群中有没有过一次讨论哪怕只是两天前没得出结论的问题,在群里是不是总是在被别人推着走?非即时通信让参与者有自由度,任何时刻都可以去任何历史讨论中继续发表观点,这样才能把事情想得更成熟。

年初的时候我说了我不太喜欢微信。大约在去年九月我关掉了朋友圈功能,主要是我觉得值得一读的东西太少,我懒得费劲每天去淘。所以这大半年来,山外诸位发生了些什么事,谁晚饭吃了什么,谁结婚了,谁去哪儿旅游了,谁发明了什么新技术,等等,我一概不知,应该是错过了几亿条情报。现在我只在晚上离开电脑去睡觉前打开微信看一眼,白天基本都关闭它。有嘛重要的事,麻烦请给我发邮件或打电话。

我只喜欢微信的一点,就是手机支付,这个很便民。除此之外,我看哪哪不顺心。

我过去是个邮件狂。我倾向于一边写一边想,思考以及修改地有一定完整性了再发出去,而不是想一句说一句。我不擅长处理混沌态的碎片信息,一件事情还没想好,另一件事情又来了,频繁失去焦点。再加上微信群是一个个孤岛,彼此不知道对方群里有什么信息,就算是同一个群,后来的人不知道前面说了什么,人为割裂了信息,我觉得非常不适合组织使用。

一个用即时通讯工具的组织,如果不能做即时的决策,那我觉得对“即时”的需求其实是假的。换句话说,我们要求信息流动更快,但面对更快的信息,我们的决策速度无法跟上,那不如退回慢的通讯方式,比如邮件;只在即时工具上发送真正需要即时处理的信息。

微信最可恶的地方在于它倾向于把人锁在手机上,我看不出有任何技术性的理由(硬件?软件?)要把人硬锁在手机上,只能揣测手机端是微信的招财猫,只有在手机端才有暴利可图。不然为什么那么多功能在电脑端都没有?历史消息不同步,查找也麻烦得要死,给公众号文章留个言,非得在手机上戳戳戳戳半天(当然,可以在电脑键盘上打好了复制到手机,再从手机复制过去,就问你香不香菇)。

手机是现代人面对的最大的时间窃贼,我自己也砍不掉它,也是蛮烦的。手机很有用,但问题是对多数人来说,不管本来想做什么,一旦打开,时间就会不知不觉哗哗流走

这几年微信微博让人以更高频率发信息,但人脑并没有在这几年突然大幅提升处理信息的能力,我觉得这就是技术带来的社会病。这个病的后果就是,我们的注意力被无节制地分散。信息是如此之多,我们来不及深度处理一下,新的信息就又来了。我们自己说的话也是越来越短,因为短话表达不清楚,所以又招来种种误解,然后打来打去,没人肯下功夫就辩论的话题深入研究,然后滋生戾气。表面上社交媒体红红火火,实际上恍恍惚惚。

微信的手机支付很厉害,它也带来了一样本来我觉得很有意思但后来也渐渐摒弃了了东西:群红包。我现在已经不发也不抢红包了,要发也不发随机红包,而是直接给某个特定的人发,仅供表达欣赏或感谢之意。红包是活跃群的利器,但我一直没太想明白一件事,现实生活中即使在地上捡十块钱我们通常也不会觉得乐上天,为什么抢微信红包的时候抢了 2.07 块钱都觉得好像赚大了?

大约是手机仿佛是摇钱树的感觉吧,摇一摇就有钱掉出来,一方面是随机性带来的新鲜感(人为什么会迷恋赌博以及一些本质是随机数发生器的游戏的重要原因),不知道一指头戳下去会冒出多少钱来,另一方面是操作太简单了,都不用弯腰就能捡到钱,而且还没有旁人看着。内心深处是不是有种不劳而获的想法在作祟?

另一个我不再戳红包的原因说出来会被暴打:我感觉抠门的红包占多数,好无聊。国内的群跟国外的群相比,国外的群真是有够穷的,当然也有可能是海外人士都没有绑定国内的银行卡,只能靠平时抢到的三毛五分钱来发红包,那已经是全部家当了。一块钱发五十个人,很有趣咩。有钱认真一点发嘛,没钱还是憋费那劲吧。

微信公众号这个封闭的系统我暂时就不吐槽了,好麻烦。

我们似乎真的是在朝娱乐至死的方向前进,包括我自己。

开源

如今再来看开源,我觉得问题已经不在说教上,而是在趋势上。

开源的含义已经不是开放源代码,而是开放态度。

开放态度也包括使用开放的工具,包括版本控制工具和交流工具,而变化总是让人感到痛苦。指望 R 搬到 GIT 世界可能希望不大,习惯 SVN 的人似乎总是与 GIT 势不两立(从此可以看出 LyX 团队的开放精神),其实 GIT 要是没有 Github 撑腰,可能也火不起来,好东西要火起来除了确实是好东西之外,还需要合适的介质,就如同 LyX 之于 LaTeX,RStudio 之于 R,Markdown 之于可重复研究——尽管后者是实质,前者是表象,用户天生就是外貌协会的,再好的东西只要不好看就没戏。再说交流工具,邮件列表是传统工具,我认为它应该退出历史舞台了,弊病太多,作为吐嘈达人,我又忍不住吐了邮件列表一脸。

总而言之,我觉得开源世界的大致势头就是:老一辈倾向于系统控制狂,什么邮件系统版本控制系统 bug 报告系统,统统自己配置,但现在的系统越来越先进和复杂,想要控制整个系统需要花费越来越多的精力,这些杂碎的事情将耗尽主力队员的精力,而且越来越落后;新一辈摩拳擦掌,虽然经验不足,但解决局部区域的问题还是可以的,而且能有效利用更现代化的工具提高生产力和影响力。未来自由软件的竞争,将不仅是专业实力的竞争,更是综合素质的竞争。在你尽情鄙视社交网络和各种酷炫网站并坚守 “一切皆纯文本文件” 的时候,你也会被时代浪潮淹没。不公平?确实不公平,但事情就是这样。

张志强

https://zhiqiang.org 张君宝的阅微堂

比特币

bitcoin的技术原理

bitcoin的协议是可靠的

要想了解bitcoin的技术原理,首先需要了解两个重要的密码技术:

  • HASH码:将一个长字符串转换成固定长度的字符串,并且其转换不可逆,即不太可能从HASH码猜出原字符串。bitcoin协议里使用的主要是SHA256
  • 公钥体系:对应一个公钥和私钥,在应用中自己保留私钥,并公开公钥。当甲向乙传递信息时,可使用甲的私钥加密信息,乙可用甲的公钥进行解密,这样可确保第三方无法冒充甲发送信息;同时,甲向乙传递信息时,用乙的公钥加密后发给乙,乙再用自己的私钥进行解密,这样可确保第三者无法偷听两人之间的通信。最常见的公钥体系为RSA,但bitcoin协议里使用的是Elliptic Curve Digital Signature Algorithm

bitcoin货币发行速度并不由网络节点中任何单个节点所控制,其协议使得货币的存量是事先已知的,并且最高存量只有2100万BTC(目前每周增加约5万BTC)

bitcoin的技术和金融缺陷

使用bitcoin交易有很多好处,可以轻易列出一大堆:

  • 交易方便:电脑上操作,不用安装银行控件插件,任何时候都可以交易,交易几乎即时到帐(平均10分钟以内)。
  • 无交易费用:再没有异地付款和本地付款的区别
  • 很难会被追踪、无法被冻结:可以避税、用作灰色交易等

根据上面的特性,可以想象,它很容易被一些geeks接受,可能成为网络上某些特殊商品的主流支付方式之一。但bitcoin要成为真正的可流通、被广泛接受的货币,还有一些关键的问题需要被解决。

  1. bitcoin的技术缺陷

1.1 缺乏可扩充性

如果你目前使用bitcoin,需要在本地获取全部的交易记录。这些交易记录目前将占用约350M的空间,保存了约13万个block的信息。这些block里面保存了所有之前发生过的交易信息,大部分block在10K到50K之间。

但这是建立在交易量极少的基础上,目前平均每个block只有50笔左右的交易。这里估算了当bitcoin的交易活动达到VISA同等水平(每秒2000笔交易)时发生的事情:一个block将达到1G,生产block变成一项要大型计算机才能完成的任务,为了发布此block还需要60G的网络传输量。

如果说技术的进步使得上面可能并不会成为瓶颈,但还有两个事情:个人不可能保存所有的block,你能想象每个人电脑都保存了一个银行的数据库吗?这使得只可能将blocks分布式存储,集中在某几个中央数据库,但这就破坏了bitcoin的P2P属性。另一个更严重的问题为:为了获得地址的账面余额,每笔交易都需要查询所有的历史交易记录。这需要遍历所有的blocks,目前为13万个,每十分钟增加1个,每个1G,而且这个遍历必须在本地机器上进行。

1.2 bitcoin并不是那么安全

一个系统的安全性决定于它最弱的地方。bitcoin的协议本身可能安全,但它有一个致命的缺点:一旦被盗,将无从申诉。国内木马横行,盗号猖獗,更不用说操作系统本身也可能有漏洞了,这些都给bitcoin的使用带来威胁。

协议所依赖的密码学协议本身也并不一定可靠。虽然要完全破解SHA256的可能性比较低,但发明一种比枚举更快的方法不是没有可能的,比如王小云曾将160位SHA-1的碰撞破解速度提升了2^11倍。某些机构或个人完全有可能掌握比别人快成千上万倍的生产block的方法,这使得攻击bitcoin成为可能。

1.3 bitcoin并不完全是匿名的

每个人的bitcoin无法被冻结,但并不代表它是匿名的。bitcoin协议可以理解为一个公开账目的银行,大家可以看到里面的每一笔交易信息,而且这个银行可以匿名开户。由于账目公开,很容易查到每个账户的交易信息,甚至画出货币流向图,这比查银行更方便。只要抓住交易网络中的一个节点,然后审问该节点,便能将相关节点一个一个找出来。这对于政府机构而言,难度并不是特别的大。

补充:BitCoin用户是匿名的吗?

  1. Bitcion的金融缺陷

在bitcoin的官方文档里,bitcoin被描述为反通胀的货币,因为它的发行量是已知的,并且增长很慢。但反通胀,亦即通缩,并不是一件好事情。央行维持通货膨胀水平也从来不是固定住货币总量,而是将货币总量与经济活动挂钩(虽然在执行过程中往往会有较大的偏差)。而更严重地是,bitcoin的这种特性将使得它成为一种投机商品,而不是货币

费雪方程是最容易理解的描述物价和货币量的方程:

P×Q=M×V

其中M表示一定时期流通中货币的平均数量;V表示一定时期单位货币的平均周转次数即货币流通速度;P表示商品和劳务价格的加权平均数;Q表示商品和劳务的交易数量。那么当V和M保持不变或固定增长速度时,劳务和商品的价格将与使用该货币的劳务商品的交易量成反比,也即,该货币的价值与该货币的流行程度成正比。

当bitcoin流行程度不变时,该货币的价值基本保持稳定(以当前货币的发行速度贬值,即很低)。但目前bitcion支持的交易量太少,当它越来越被接受的时候,通过它提供的商品和劳务数量会越来越大,根据上面的方程,商品开始贬值,货币的价值也就越来越大(注意物价和货币价值成反比)。事实上,在过去的14个月,bitcoin的价值(以美元记)增长了1000倍。

如果我们将bitcoin也视为一种商品(和黄金类似),它的价值将随着流行程度而变高,使得越来越多的投资者选择持有bitcoin,而不是用它来交易。而当投资者选择持有bitcoin时,也就降低了市场上流通的bitcoin的数量,亦即降低上述费雪方程中的M,从而继续降低P,亦即bitcoin的价值继续升高。

这便是一个典型的泡沫形成过程。bitcoin的价值不会无限上涨,等到了某个阶段,泡沫便会破灭,货币价值暴跌,直到下一轮的泡沫形成。这使得bitcoin的价格将非常不稳定。你愿意接受一个今天价值10美元,但明天可能价值为20美元,也可能价值为5美元的物品作为你劳动的报酬吗?

比特币的内在价值

比特币是一种天然的投机商品,拥有作为投机标的的诸多属性:

  • 交易简便,任何人都可以在网上交易。
  • 交易成本低。
  • 没有任何监管
  • 存量受限,不会因为价格上涨增加供给。这点非常重要。
  • 存量太少,并且集中度较高,使得价格波动极大。

与比特币类似的是黄金。但连黄金都没有这么好的投机属性。黄金并不是限量供给的,并且市场容量足够大,一部分人的行为对市场影响有限。而在比特币市场中,更多人的关注会导致价格上涨,而价格上涨又会带来更多人的关注,更多的人关注在有限的资产上,使得价格继续上涨。一部分的惜售更压缩了市场上比特币的存量。这样,比特币的价格和参与人情绪交替上升,终于让比特币价格超过200美元。

上面这些价格是交易出来的。如果认真地考虑比特币作为一种支付手段,它的合理价值到底是多少呢?这取决与你认为比特币作为一种「货币」所能到达的高度。

如果你认为比特币和黄金差不多,全球央行的黄金储备总价值大约12万亿美元,换算下来一枚比特币大约价值57万多美元。
如果你认为比特币能完全替代美元钞票,美元的M0大约9000亿美元,如果用2100万比特币代替的话,一枚比特币大约价值4.5万美元。
如果你认为比特币能够替代全球隐藏的「黑钱」,由于「黑钱」不好定义,我们用「消失不见」的美元钞票来代替。全球的黑钱大约有1万亿美元。假设都用比特币来持有,一枚比特币的价值大约为4.8万美元。
即使比特币只能达到上述三种情况中的10%,对应的比特币价值也有5000到5万美元,远远高于现在比特币的价格。

所以对比特币非常坚定的人们,不用管我在bitcoin的技术和金融缺陷里怎么写,坚定地持有它们,等到兑换价为5万美元甚至50万美元的那一天。

P vs NP

反驳王垠

素数判定问题在2002年才被找出多项式算法,它的复杂性并未高的离谱

王垠介绍P和NP问题为确定型图灵机和非确定型图灵机可在多项式时间内解决的问题,这只是一种形式上的定义。更本质以及更容易理解的定义应该是下面这个:

  • P是指普通计算机可以快速求解的问题(的集合),这里快速求解指多项式时间内。
  • NP问题指普通计算机可以快速验证解的正确性的问题。

举个例子,比如说大数分解问题,即要将一个很大的数分解为质因子的乘积。这个问题目前还没找到多项式算法,所以无法确定是否属于P。

但如果你一旦知道大数分解的结果,然后判断这个结果是否正确,则是一件非常简单的事情,只需要把质因子乘起来看看是否等于大数即可。所以大数分解就是一个NP问题。

从这个角度看,NP的思想已经不限于算法领域,它有更深层次的哲学含义。比如我们平时读论文时,验证别人证明方法往往比较容易,那么是否有一种思考的方法,能快速求解全天下所有问题呢?

Karp

Karp认为,博士生的方向,有发展潜力的目前有两个。如果有足够雄心的话,可以去试图 P vs NP 问题——我想不太可能真有人把这个当成博士生的方向吧。另外一个方向是网络计算,一种不同于传统turing机的计算模型。

有意思的是,Yao接着Karp的话说,他认为目前有潜力的还是量子计算和量子信息这一块,无论从计算机,物理,工程上来看

有同学问到(在以前对Karp的一个采访报告A Day in the Life of Richard Karp中也提到),Karp的两个大学同学,后来一个拿了Nobel奖,一个拿了Fields奖,Karp觉得很有压力,于是决定不搞数学,避开他们,最后拿了Turing奖。这个事实充分说明,牛人都是一蜂窝一蜂窝的。不过Karp也提到,当时还有一个更聪明的同学,不过not heard of him again

王小波

他的杂文读起来很有趣,没有说教的意味。我个人认为他的杂文比小说要好,因为他的小说我读过就忘,没留下什么印象,也许是我没怎么读懂吧,比如他的寻找无双,看得我稀里糊涂的。

小波多次强调他的理科出身背景,最早学化学,后来还学过物理,数学等,就没提到他念得什么专业。到网上一查,竟然是人民大学的贸易经济商品学专业,这个专业需要学这么多理科东西么?

还有一个很有趣的现象是,王小波言必提大贤罗素,并自称为罗素先生的热烈的拥护者。其实罗素在哲学,伦理上的成就大多是总结性的,独创性并不强,可能王小波没时间读别的哲学家的著作,只好看些罗素先生的综述文章吧。另外一个可能的原因是,罗素以一个数学家,逻辑学家的身份最后获得诺贝尔文学奖,联系到王小波屡次强调的理科背景,他大概把罗素当成自己的目标了。

资本主义人民共和国

People’s republic of capitalism,是Discovery在2008奥运前出品的关于中国的纪录片。

我很喜欢「资本主义人民共和国」这个名字。从小学开始,我们就被教育我们是社会主义国家,和万恶的资本主义的区别在于公有制和私有制。但现代社会发展迅速,目前中国虽然拥有庞大的国有经济,但我等普通P民似乎没得到什么好处,还要忍受其垄断的剥削和庞大而不知去向的税负。反而是西方资本主义国家逐步转化为福利国家,某种意义上更接近社会主义的定义。所以资本主义人民共和国很符合目前我对于这个国家的定义。

这部纪录片主要是在说中国的经济增长压倒一切的政策。在这样的政策下,社会矛盾、贫富差异、社会道德、腐败、环境污染被忽视,同时低廉的劳力成本对世界工业产生巨大的影响

微信公众号

微信公众号之类的移动内容,相比起访问惨淡的独立博客网页,有更多流量和变现的空间。但我并不喜欢微信公众号之类的封闭系统。流量虽大,却无任何沉淀而言。封闭的公众号上的内容的有效期只有几天。而网页内容在搜索引擎的加持下,能活得更长久一点。

webmark

Git

CS Visualized: Useful Git Commands

Learn git concepts, not commands

了解 Git 的工作方式,而不仅仅是了解命令

Learn the workings of Git, not just the commands

开源分布式版本控制工具 —— Git 之旅

Git 改变了分布式 Web 开发规则

Git 分支管理最佳实践

面向 Subversion 用户的 Git,第 2 部分: 实施控制

java

Java 9 新特性概述
https://www.ibm.com/developerworks/cn/java/the-new-features-of-Java-9/index.html

Java 10
https://www.ibm.com/developerworks/cn/java/j-5things17/index.html

局部变量类型推断是一个充满争议的热门话题,但 Java 10 为 JVM 中的垃圾收集和容器感知带来了一些受欢迎的改变。

Creating DSLs in Java, Part 1: What is a domain-specific language?
Learn DSL concepts and where they’re used in real-world programming
https://www.javaworld.com/article/2077865/core-java/core-java-creating-dsls-in-java-part-1-what-is-a-domain-specific-language.html

Apple Push Notification with Java Spring Framework

Why Kotlin is my next programming language

ElasticSearch
https://www.elastic.co/cn/

Spring

Spring Framework 5 中的新特性

Exploring Micro-frameworks: Spring Boot
https://www.infoq.com/articles/microframeworks1-spring-boot

Spring Boot with Docker

Running Spring Boot in a Docker Container

Rod Johnson Discusses Spring 3.0

DL

TensorFlow 的主要优势在于分类和推理。
例如,Google 在 TensorFlow 中实现了 RankBrain,
这是对 Google 搜索结果进行排序的引擎。

了解您的深度学习框架,第 1 部分
Keras 入门
探究此基于 Python 的深度学习库
https://www.ibm.com/developerworks/cn/cognitive/library/cc-get-started-keras/index.html

了解您的深度学习框架,第 2 部分
PyTorch 入门
了解这个原生 Python 包如何在 Python 中重新设计和实现 Torch
https://www.ibm.com/developerworks/cn/cognitive/library/cc-get-started-pytorch/index.html

了解您的深度学习框架,第 3 部分
Deeplearning4j 入门
探究此基于 Python 的深度学习库
https://www.ibm.com/developerworks/cn/cognitive/library/cc-get-started-deeplearning4j/index.html

了解您的深度学习框架,第 4 部分
TensorFlow 入门
探索这个用于机器学习的开源库
https://www.ibm.com/developerworks/cn/cognitive/library/cc-get-started-tensorflow/index.html

CSS

Bulma

https://bulma.io/

Bulma is a free and open source CSS framework based on Flexbox.

比Bootstrap更轻量化、更易用的框架

其他

理解OAuth 2.0
http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html

Practical MQTT with Paho
https://www.infoq.com/articles/practical-mqtt-with-paho

Authentication Strategies in Microservices Systems

七牛CEO许式伟:服务端开发那些事儿

http://todomvc.com

电商网站的初期技术选型

架构其实是妥协的结果,受投入、团队技术水平多方面影响的,够用就好。

人是最重要的,有个靠谱的CTO其实已经成功了一大半,CTO的经验决定了未来产品的技术栈啊。

http://linphone.org

Linphone is an open source Voice Over IP phone (or SIP phone) that makes possible to communicate freely with people over the internet, with voice, video, and text instant messaging.

The steady rise of GraphQL

GitHub is moving to GraphQL for v4 of our API because it offers significantly more flexibility for our integrators.

RESTful API Design Tips from Experience

Force Expiring of JWTs with Refresh Tokens

https://learn-anything.xyz/

An open source search engine that will help you learn pretty much anything

The Future of App Development: Beyond Prototypes

“Why do I have to spend all this time doing the same thing over and over again?”

Why waste a bunch of time and money to get a product developed when you can produce something that “feels” real and get feedback on it with a prototype?

For example, we spend a lot of time on prototypes to get user feedback, but they still don’t allow teams to use them as the basis for development.

加密

Elliptic curve cryptography,缩写为ECC

ECC的主要优势是在某些情况下它比其他的方法使用更小的密钥——比如RSA加密算法——提供相当的或更高等级的安全。ECC的另一个优势是可以定义群之间的双线性映射,基于Weil对或是Tate对;双线性映射已经在密码学中发现了大量的应用,例如基于身份的加密。不过一个缺点是加密和解密操作的实现比其他机制花费的时间长。

hexo

Deploy HEXO to Github

When Hexo static site meets GitHub pages and Travis CI

Hexo 是台灣人寫的、速度比 Octopress 快、default 支援 GitHub Flavored Markdown
Hexo 是一個 static site generator

Hexo is a fast, simple and powerful blog framework. You write posts in Markdown (or other languages) and Hexo generates static files with a beautiful theme in seconds.

Hexo, Github Pages, CloudFlare, SSL : Holy Shit

Hexo Tutorial — How to have a nice static files blog and drop wordpress

web

iScroll

Smooth scrolling for the web
https://github.com/cubiq/iscroll

iScroll, smooth scrolling for the web
http://iscrolljs.com/

Matteo Spinelli’s Cubiq.org
http://cubiq.org/iscroll-5

RH

Riemann Zeta Function
https://github.com/math-io/riemann-zeta

riemann.js
https://github.com/chroniton/riemann.js
An implementation of the Riemann Zeta function and a colorwheel graph generator.

An electro-mechanical investigation of the Riemann zeta function in the critical strip
http://projecteuclid.org/euclid.bams/1183511148

Java-Riemann-Zeta-Function
https://github.com/md100play/Java-Riemann-Zeta-Function

Java utility for calculating the Riemann Zeta function for arbitrary values

Calculations of Riemann zeta function
https://github.com/anotherstickman/riemann-zeta-fast-calc

RiemannZetaEstimation
https://github.com/hhartwell/RiemannZetaEstimation

small toy program to estimate the Riemann-Zeta function

ZetaBeta
https://github.com/dhrushilbadani/ZetaBeta
A novel algorithm that calculates the value of the Riemann Zeta function (if the input is even) or the Dirichlet Beta function (if the input is even). Designed in Java.

Riemann Zeta
https://github.com/Orangalo/RiemannZeta
Riemann Zeta Function Calculator

FFmpeg

Download FFmpeg for Windows
http://ffmpeg.zeranoe.com/builds/win64/static/
http://ffmpeg.zeranoe.com/builds/

Basic commands to FFmpeg

  • $ ffmpeg -h
  • $ ffmpeg -h long
  • $ ffmpeg -h full
  • $ ffmpeg -formats
  • $ ffmpeg -codecs

Using ffmpeg to get video informations

To get information about a file (say video.mp4), run the following command. Remember you have to specify an ouput file, but in this case we only want to get some information about the input file.

$ ffmpeg -i movie.mp4 -hide_banner

Great Software: FFmpeg

Fabrice Bellard is one of the modern computer science greats. He created FFmpeg, an indispensable tool for audio and video conversion.

memo1st

mysql

Generate random string in MySQL

1
2
SELECT SUBSTRING(MD5(RAND()) FROM 1 FOR 6) AS password
SELECT LEFT(UUID(), 8);

mysql忽略主键冲突、避免重复插入的几种方式

方案一:使用 ignore 关键字
方案二:使用 replace into
方案三:ON DUPLICATE KEY UPDATE
方案一:使用 ignore 关键字

Linux

查看版本信息

1
2
3
cat /proc/version
lsb_release -a
cat /etc/issue

Java

Spring

Dynamic DataSource Routing
https://spring.io/blog/2007/01/23/dynamic-datasource-routing/

web

Web 是一个巨大的技术堆栈。实际上,您访问的每个网站都是库、语言与 Web 框架的一种独特组合。

跨域

同源策略

同源策略是浏览器上为安全性考虑实施的非常重要的安全策略

URL由协议、域名、端口和路径组成,如果两个URL的协议、域名和端口相同,则表示他们同源

浏览器的同源策略,限制了来自不同源的”document”或脚本,对当前”document”读取或设置某些属性。从一个域上加载的脚本不允许访问另外一个域的文档属性。在浏览器中,<script>、<img>、<iframe>、<link>等标签都可以加载跨域资源,而不受同源限制,但浏览器限制了JavaScript的权限使其不能读、写加载的内容。

Ajax跨域

Ajax (XMLHttpRequest)请求受到同源策略的限制。
如果我们又想利用XMLHTTP的无刷新异步交互能力,又不愿意公然突破Javascript的安全策略,可以选择的方案就是给XMLHTTP加上严格的同源限制。XMLHTTP则根本上限制了跨域请求的提交。

JSONP

JSONP就是利用<script>标签的跨域能力实现跨域数据的访问,请求动态生成的JavaScript脚本同时带一个callback函数名作为参数。其中callback函数本地文档的JavaScript函数,服务器端动态生成的脚本会产生数据,并在代码中以产生的数据为参数调用callback函数。当这段脚本加载到本地文档时,callback函数就被调用。

JSON

JSON.stringify() 方法

可以将任意的 JavaScript 值序列化成 JSON 字符串

JSON.parse()

解析JSON字符串, 可以选择改变前面解析后的值及其属性,然后返回解析的值。

工具

Fiddler

一个http调试代理,可用于手机app开发的真机抓包
Tools -> Fiddler Options…-> Connections页签,选中Allowremote computers to connect

LLVM

LLVM编译环境是一个集合项目,为面向C或基于C的语言提供新一代高效易用的虚拟机环境。LLVM起源于2000年伊利诺伊大学发起的开源项目,起先主要在学术研究领域中有所应用。在2005年,Apple为LLVM提供了支持以帮助其发展,并保持LLVM与Xcode良好的兼容性,使其成为一个开发者易于使用的编译器。相比较传统的GCC,LLVM的设计更为现代化和模块化。LLVM为开发者提供了中间代码和编译基础设施,并且LLVM能够与IDE紧密地交互和集成,作为IDE的底层支撑基础,为代码补全、重构等功能提供辅助,同时在程序编译、连接、运行环境执行过程中实现全新的编译优化策略。值得一提的是,LLVM还提供了很多编译器以外的辅助工具,如对代码进行静态检查并生成HTML格式的分析报告等。

LLVM将编译器的许多优秀机制模块化,人们可以根据自己的语言、处理器、运行平台等需要,为自身应用定制编译器,在恰当的时机,快速地获得高性能的编译结果(Bitcode),然后链接其他编译结果或库,获得性能、资源使用效率、兼容性兼备的可执行代码。

工作流引擎

Flowable runs on a JDK higher than or equal to version 7.

The Java BPM Engine
http://www.flowable.org

https://github.com/flowable
当年JBMP的主创Tom已经离开Alfresco多年,后辈们也开始步前人后尘。Tijs Rademakers、Joram Barrez等Activiti的原班核心人马,由于与Alfresco公司在项目的未来发展方向上出现分歧,于是选择集体出走,创建了Flowable,并且将第一个版本定义为5.22,而且在两周前发布了6.0版本!要知道,Activiti当前版本依然还是5.22,6.0处于Beta阶段。

flowable是activiti的原班核心人员从activiti分离出来的一套工作流引擎(这和activiti的诞生如出一辙),其核心是超快速、稳定的BPMN2流程引擎,易于与 Spring集成使用。简单一句话:Flowable是activiti的升级版.

规则引擎

Why should I use Drools?

A system that needs a rules engine will have complex business logic.

How do I program using Drools?

Drools Rule Engine 初探

faq pearls

miscellaneous

excel简单统计

  • excel重复列统计:COUNTIF(B$2:B2,B2)
  • 统计大于等于5的单元格个数:countif(A1:A10,”>=5”)

Windows命令

查看文件的MD5/SHA1/SHA256

  • certutil -hashfile yourfilenameaddress MD5
  • certutil -hashfile yourfilenameaddress SHA1
  • certutil -hashfile yourfilenameaddress SHA256

Verifying the MD5 Checksum

  • shell> md5sum mysql-standard-5.7.11-linux-i686.tar.gz
  • shell> md5.exe mysql-installer-community-5.7.11.msi

网络

查看端口占用

  1. netstat -aon|findstr “port”
  2. tasklist|findstr “pid”

netsh

  1. netsh interface show interface 显示接口

iOS

APNs

如果收不到 Apple 推送通知

  • TCP 端口 5223,用于与 APNs 通信。
  • TCP 端口 2195,用于向 APNs 发送通知。
  • TCP 端口 2196,用于 APNs 反馈服务。
  • TCP 端口 443,需要在设备激活过程中使用,以及之后当设备无法通过端口 5223 连接 APNs 时用于回退(只能通过 Wi-Fi)。

请与您的网络管理员核实,确保可以访问这些端口。
APNs 服务器使用负载平衡,因此您的设备不会始终连接到用于通知的同一公共 IP 地址。最好允许您的设备在整个 17.0.0.0/8 地址块(已分配给 Apple)范围内访问这些端口。

Apple 软件产品所使用的 TCP 和 UDP 端口

  • 2195 TCP Apple 推送通知服务 (APNS) — — 推送通知
  • 2196 TCP Apple 推送通知服务 (APNS) — — 反馈服务
  • 5223 TCP Apple 推送通知服务 — — iCloud DAV 服务(通讯录、日历、书签)、APNS、FaceTime、Game Center、照片流、回到我的 Mac

database

mysql

add user

1
2
3
4
CREATE USER 'usr'@'localhost' IDENTIFIED BY 'pwd';
flush privileges;
grant select,insert,update,delete,create,drop on tang_poetry.* to usr@localhost identified by 'pwd';
flush privileges;

load data

  • LOAD DATA INFILE Syntax: load data local infile ‘D:\data.txt’ into table exceltomysql fields terminated by ‘\t’;
  • LOAD XML Syntax: LOAD XML LOCAL INFILE ‘C:/data.xml’ INTO TABLE tb ROWS IDENTIFIED BY ‘‘;

npm

  • 升级你的 npm 到最新版本:npm install npm -g
  • npm install packge-name –save:会修改package.json
  • npm install参数的区别
    • save 会在package.json的dependencies属性下添加
    • save-dev 会在package.json的devDependencies属性下添加
    • 运行时需要用到的包使用save,否则使用save-dev

正则表达式

  • 用于匹配数字之间的空格: {1}(?=\d+)
  • \r\n 匹配空行

Java

Eclipse选择JDK

在eclipse.ini中加入

1
2
-vm
C:\Program Files (x86)\Java\jdk1.6.0_45\bin\javaw.exe