熊立丁

中国浙江宁波
熊立丁

Nginx

通过 Nginx 实现类似RAID0的效果

这几天做了一个停车场的项目,出入口的相机会拍照并保存在前端的机器里,也就是收费岗亭里的那台电脑。当一个收费站有两个出入口时,照片分布在AB两台机器中。当你需要调取照片时,有可能在A机器中,也可能在B机器中。 为了能够统一的调取照片,利用 nginx 的反向代理把两台电脑的目录整合成了一个整体,对外使用一个入口。如果把电脑看成硬盘,那就是实现类似 RAID 0 的读取效果。 基本配置 两台电脑分别安装 nginx ,并配置目录,主要是修改 nginx 的配置文件,将 location / { root html; index index.htm index.html; } 改成 location / { root ../BackupPhoto; } 这个是出入口照片保存的目录,因为收费机的系统是 windows ,不太清楚绝对路径怎么写,就用了对应 nginx.exe 文件的相对路径。 D: BackupPhoto nginx-1.15.

By 熊立丁

Org-Mode

Org-Mode导出html模版设置

用 Org-mode 写了一篇接口说明,要发给合作单位,所以得先导出成一个通用的文档格式。内置的几种格式看下来,只有 html 的模版最好看,但是内容上与设想的有所出入,主要在于以下几点: * 没有标题 * 目录的标题是英文 * 底部的签名是个人的 解法 没有标题 在文档头部添加 #+TITLE: 文章标题,文章标题会出现在 Table Of Contents 之前,居中显示。 目录的标题是英文 在文档头部设置语言 #+LANGUAGE: zh-CN,“Table of Contents”会变成中文的“目录”。 底部的签名 默认情况下,底部会有文档创建时间、作者和w3c校验链接,通过设置 #+OPTIONS: html-postamble:nil 加以隐藏 其他 Org-mode 默认没有导出 PDF 的选项,需要配合 Latex

By 熊立丁

Node.JS

集成 Express、Parcel 和 Vue

最近终于动手整理项目的框架,总体思路和去年基本一致,“无状态”和“按功能模块分目录而不是按前后端”仍然是核心的思想,不过具体的工具发生了变化。 * 数据存取这边用 GraphQL 取代 PouchDB ,在灵活性和可预测间做一个平衡; * 前端用 Vue 替换 Riot ,主要还是出于生态方面的考虑,虽然复杂度提升了一点,但是可用的第三方库丰富很多; * 最后用 Parcel 替换 Webpack 和 dev.js,Webpack4 据说简洁了不少,但还是有阴影,Vue 如果自己写 dev.js 也要比 Riot 的难一点,先用 Parcel 偷个懒把。 当然首要目标还是简化日常开发,于是花了两个小时把 Express、Parcel 和 Vue 集成到一起。做到每次启动后端进程的时候,Parcel 也会同时开始工作,不需要执行另外的命令,

By 熊立丁

阅读

读《Modern Vim》

上半年技术书看得比较少,也比较慢,这本百来页的书断断续续看了一个月。 毫不夸张的说,Vim 是我用的时间最多的软件,工作以来至少90%的代码是用 Vim 写的,不过相关的技能差不多一直停留在两三年前的水平,毕竟是一个快三十岁的编辑器,本身已趋于成熟稳定,很难再有大惊喜,插件也尝试过很多,留下的也都是精挑细选过,能最大程度地提高我的效率。 不过看到有 Vim 的新书出来,还是要看看,毕竟天天在用,可能还要再用三四十年,一个个小技巧节约下来的时间,累计起来也是非常可观的。 先说个总体评价:有用。 虽然部分章节的知识目前用不上,但也带给我很多新思路。 再说个附加评价:我遇到的第二本附录对我超级有帮助的书,花一本书的钱,只买两页附录也值得。另一本是《jQuery in Action》,用一页附录让我弄懂了闭包的概念。 Morden Vim 下面按章节顺序概述一些本书内容,章节标题就用原文了。 1. Get Morden Vim 一句话概括:为了更好的用户体验,请选择使用最新的 Vim

By 熊立丁

使weinre支持https

在远程调试手机网页的工具中,weinre算是元老级的了,但是作为一个独立工具已经很久没有更新(现在成了Cordova的一个子项目),易用性落后于Chrome内置的调试工具,也比不上微信web开发者工具。 但是纯粹在“远程”这一点上,还是无可替代的,不需要连接USB,不需要在同一个局域网,weinre可以调试任何一台连接到你服务器的手机。 weinre通过将一个JavaScript文件引入目标网页达到远程调试的目的,但是在https加密的网站上,会遇到浏览器

By 熊立丁

SSE 与 LiveReload

之前实现了自己的编译工具 dev.js ,用了快三个月,感觉良好,可以彻底把 gulp 甩掉了。不过上次也留下一个小尾巴,整合自动重载功能。 最初的打算是用 live.js 这个方案,因为无需改动自己的代码,只要把 live.js 加载到网页中就可以。不过实际用起来,发现还是有点问题。live.js 本身功能是正常的,但其机制是轮询,会在 network 里留下很多请求记录,调试时看起来很乱。 备选方案考虑了 WebSocket ,不过看起来不如 SSE 简单,如果想要用起来简单,就得上 socket.io 这样的库。不过既然 sse 已经够用,省下一个库自然更好。 SSE SSE 的全称是 Server-sent events,也就是服务器推送事件,SSE

By 熊立丁

Nginx

Simple NginScript

某客户有定时关闭网站的需求,每天晚上10点后关闭,第二天6点开启,节假日全天关闭。 想到通过 nginx 的配置文件实现,但是自己对 nginx 的掌握一直停留在“够用”阶段,涉及逻辑判断的功能从来没用过,只是知道 nginx 一定具备这样的功能。 网上一搜,马上发现一篇关于通过 lua 控制服务器开关的文章,与我的需求非常类似,只是其基于 lua 模块,而我服务器上用的是官方源,不带 lua 模块,而且跑了好多个网站,自己编译或者换用 openresty 有一定风险搞挂掉,慎重起见又是一番搜索,决定用 nginScript 来实现这个功能。 安装 如果你像我一样用了 nginx 的官方源,安装就比较简单了,nginx 官方以动态库的形式提供了 nginScript 模块,在 CentOS 中只要执行 yum install

By 熊立丁

Node.JS

dev.js

写完这篇关于 npm scripts 的博客后,我又陆续花了两个半天,将这个定制脚本做到了能让自己满意的程度。功能和性能全面超越了原来的 gulp 脚本,投入的时间也很合理,因为之前无论 gulp 还是 webpack ,都至少花掉我一天时间用在配置上,却达不到理想的效果。 从功能上看,现在的脚本能监视目录、优化代码(主要痛点,市面上没有现成的方案)、检查代码、编译 riot 标签、打包文件,并为自动重载做好了准备。从性能上看,由于充分利用了内存来加速,每次文件变更后触发的流程(优化、检查、编译和打包)提速在十倍以上,从原来的平均超过 1000 ms 到现在的平均不到 100 ms。只是启动仍然需要 2 秒左右,但也比原来稍胜一筹,加上优化难度大、提升空间有限,且一般而言一天也就执行一次,就不强求了。 当前版本的完整代码如下: // 依赖引入

By 熊立丁

前端

用 Prettier 处理 Pug 文件

Prettier 是一个新兴的代码格式化程序,但目前支持的语言相对有限,特别对于混合文件的处理仍在比较初级的阶段。 因此,针对 Riot 这种 HTML/Pug 中混合了 JavaScript 和 CSS 的文件,要对其中的代码进行格式化,必须先将文件分解,分别用 Prettier 处理后,再重新合并。 相比 HTML,处理 Pug 这种由缩进决定包含关系的文件倒是更简单,很容易通过一些简单粗暴的方法进行分解。 Prettier 本身也是一种广受欢迎的粗暴解决方案。它的主要动机就是通过将一种固定格式强加给代码,消灭不同风格间的优劣之辫,节约程序员在争辩中浪费的时间,集中精力办实事。因为大多数时候,主流风格间并没有明显的好坏,只是个人喜好不同。 文件分解 const split = (tag) => { var pug, script, style; [pug, script] = tag.split(/\n

By 熊立丁

人生小事——我的故事

快过年了,才突然发现,即将过去的一年是个有趣的年份:工作八年,学编程十六年,虚岁三十二。前者各占后者一半。 人生充满了巧合。 都说“人生大事”,回忆往昔,对我有重大影响的,却偏偏是一些小事。 在这个寒冷的冬夜,躲在被窝里码字,给大家讲讲——我的故事。 初中时的一个夜晚,在自习课的间隙,沈达超拿着文曲星跑来给我看,“你看,能画圆,画方”,他把程序给我演示了一下。我一直记得他高兴和兴奋的模样,却想不起来自己当时的感受。有一点很明确,这大概是我见过最神奇的东西了。 几分钟的时间,却影响了我的人生,现在回想起来也很奇妙,他为什么要来给我看这个呢…… 也许是因为之前上过一学期的电脑课,其中有一节课,老师让我们用一个叫 QBASIC 的软件,做了一些奇怪的事。老师给我们一张纸,上面有一些字,让我们照着输进去,内容我还记得一部分,其中一段大概是这样: 10 A = 4 20 PRINT A 30

By 熊立丁
编程熟手入门Go语言

图书

编程熟手入门Go语言

2018年看完的第一本书,《Introducing Go》是一本介绍 Go 语言的书,针对人群是已经有编程经验的读者。全书,算上封面、目录、附录、索引,总共才 124 页,实际阅读时间(包括手打一遍示例代码并完成每章后面的习题),不到15个小时。我是一次一小时左右断断续续看完的,但是需要的话,完全可以在一个周末看完。 总体评价是短小精悍,有编程经验的读者入门 Go 语言的理想书籍。

By 熊立丁

Node.JS

Npm Scripts

代码两周前就完成了,但是上周工作忙,这周又小小沉迷了泰拉瑞亚,现在才来进行总结。 这次主要讲讲返璞归真,用 npm 取代 Gulp 对前端项目进行一些处理。 这篇文章涉及内容过多,似乎应该拆成多个主题 原由 当我刚学着用 Gulp 的时候,就搜过一些文章,看看它有什么优缺点,那时 Gulp 正热,大有取代 Grunt 的趋势。在搜索的过程中,也看到了几篇文章,主旨是使用 npm 来取代 Gulp 和 Grunt,那些文章绝非彼时主流,虽然似乎也有些道理,却没有抓到我的痛点。毕竟用 Gulp 的插件还是比自己从头写方便。 转眼快三年了,Prettier 的出现打乱了我平静的生活~笑~。一个梦寐以求的功能出现在我的面前—— Prettier 的功能是对代码进行格式化,所有人写的代码都会被统一成相同的风格,相较我正在使用的“eslint检查后手动修改”的方案,更加彻底。

By 熊立丁

Npm Scripts

Npm Scripts

代码两周前就完成了,但是上周工作忙,这周又小小沉迷了泰拉瑞亚,现在才来进行总结。 这次主要讲讲返璞归真,用 npm 取代 Gulp 对前端项目进行一些处理。 这篇文章涉及内容过多,似乎应该拆成多个主题 原由 当我刚学着用 Gulp 的时候,就搜过一些文章,看看它有什么优缺点,那时 Gulp 正热,大有取代 Grunt 的趋势。在搜索的过程中,也看到了几篇文章,主旨是使用 npm 来取代 Gulp 和 Grunt,那些文章绝非彼时主流,虽然似乎也有些道理,却没有抓到我的痛点。毕竟用 Gulp 的插件还是比自己从头写方便。 转眼快三年了,Prettier 的出现打乱了我平静的生活~笑~。一个梦寐以求的功能出现在我的面前—— Prettier 的功能是对代码进行格式化,所有人写的代码都会被统一成相同的风格,相较我正在使用的“eslint检查后手动修改”的方案,更加彻底。

By 熊立丁
加密货币

区块链

加密货币

很久以前就知道加密货币这回事,但一直停留在听闻的阶段,虽然也从技术角度对其基本原理进行了了解,但从没真正尝试通过挖矿或购买去拥有一枚。 但是最近加密货币实在太火了,开车听个广播也都是相关的新闻,以至于你根本没办法不去注意它。所以,上个周末,我尝试着进一步了解了一下,发现围绕着加密货币,已经产生了一系列有意思的新事物和商业模式,无论加密货币是不是泡沫,这些商业模式却有真实的参考价值。 加密货币有许多种,我选了最具娱乐性的一种 dogecoin ,音译“多吉币”,直译“狗币”。在一定程度上也是受了我某个天天发狗图,用狗头像的亲戚的影响。 介绍加密货币的文章已经很多了,所以对货币本身我只是简单介绍一下,着重介绍加密货币的各种用途和相关的商业模式。你也可以直接跳到网页挖矿那节开始看,有意思的从那里开始。 钱包 每个人都可以拥有一个或多个钱包地址,就像银行账户,只要安装一个钱包软件,就可以得到一个余额为 0 的账户,其他人向这个地址汇款,钱就是你的了。你也可以向别人的地址汇钱,钱会从你的钱包扣除。 加密货币没有中央银行这样的机构,也就没有一个像现实世界中的银行一样的组织

By 熊立丁

阅读

2017读书总结

2017年比较完整的看了二十几本书。 其他看得不深入或看不下去的没有放到这个列表中。 下面的归类和评述纯属个人观点。 标杆 * 《如何阅读一本书》 * 《SQL反模式》 * 《中国哲学简史》 * 《极简欧洲史》 * 《斯坦福极简经济学》 * 《Drawing for the Absolute Beginner》 * 《别让猴子跳回背上》 个人认为这些书在各自领域已经到达一定高度,短时间内不会出现能与之匹敌者。 如何阅读一本书 以阅读的四个层次为序,教你如何阅读一本书。先从略读开始,初步判断书的类别并决定是否有必要继续深入阅读;再到具体理解、分析和评价一本书,并针对各类书籍特点给出相应建议;最后介绍主题阅读——如何就同一主题,相互参照着同时阅读多本书,并从中总结有用的观点和信息。 个人认为,所有观点中最核心的

By 熊立丁

聚沙成塔

今天初步把以前的博客从时光机搬了回来。勉强能用RSS文件导回一些,更多是靠手动搬运,部分文章的排版仍是混乱的,有空再慢慢整理吧。 没有这些博客,我都忘记自己是怎么过来的了,早期的文章记录的都是些细碎的东西,解决的都是一个个非常具体的问题。虽然,好多解决方法现在看来都不完善,同样的问题其实也可能是其他原因导致的,那时却根本无法看到,只知道某个方法奏效了,那就记录下来。 因为简单,产量就很高,最多的时候半个月能写5篇,简直难以想象。光光解决各种乱码问题就能写上3篇,毕竟,写第一篇的时候想不到还会需要另两种方法来解决一个看似相同的问题。 但正是这些细小的沙子慢慢往上垒,我今天才有机会从更高的视角来俯视曾经的稚嫩吧。

By 熊立丁
浙ICP备15043004号-1