摘要:安装nodejs和yarn的命令: 安装pm2 配置package.json 后台静默启动的快捷命令: pm2的日志文件:/root/.pm2/logs下面 查看服务器上运行的NODE服务,执行:pm2 list 删除一个服务,执行pm2 delete [appName] 阅读全文
posted @ 2019-09-17 09:42 liulun 阅读 (2) 评论 (0) 编辑
摘要:安装nginx的命令 让nginx随系统启动而启动 常用命令 配置路径:/etc/nginx/ 日志路径:/var/log/nginx 打开配置文件 在HTTP节点下配置两个server节点,其他不变 your-domain.com替换成你自己的域名 your-domain.crt和your-dom 阅读全文
posted @ 2019-09-14 07:47 liulun 阅读 (10) 评论 (0) 编辑
摘要:输出: async函数总是返回promise实例 无论是return了Promise, 还是内部调用了await, 就算什么也没做,它也返回promise; 一个函数,只要被标记了async,那么它就返回Promise对象 所以上面的handler函数返回的是一个promise实例 如果一个 asy 阅读全文
posted @ 2019-09-13 08:46 liulun 阅读 (15) 评论 (0) 编辑
摘要:旋转动画 第一个样式: 第二个样式: HTML代码 linear是匀速运动,还可以设置为: ease 默认。动画以低速开始,然后加快,在结束前变慢。 ease-in 动画以低速开始。 测试 ease-out 动画以低速结束。 测试 ease-in-out 动画以低速开始和结束。 测试 cubic-b 阅读全文
posted @ 2019-09-11 14:09 liulun 阅读 (7) 评论 (0) 编辑
摘要:我想,我最大的优点应该就是努力坚持做好一件事; 做这个事情可能会遇到这样、那样的诱惑、阻力、困难、甚至走了弯路, 都不会轻易改变方向; 我在上家公司持续做了7年, 从一个小兵做到研发中心的技术负责人,子公司的技术总监, 见证了一家企业从20来个人做到上市; 另外,你看到我这篇文章,就看到了我的博客; 阅读全文
posted @ 2019-09-10 10:59 liulun 阅读 (12) 评论 (0) 编辑
摘要:代码如上↑ 阅读全文
posted @ 2019-09-06 09:17 liulun 阅读 (17) 评论 (0) 编辑
摘要:以上是监控代码; 删除图片的代码没有包含在内,自己控制 阅读全文
posted @ 2019-09-06 07:31 liulun 阅读 (18) 评论 (0) 编辑
摘要:大型的政务应用或企业应用,最关键的问题是业务复杂; 我举几个简单的例子: 比如说一个政府机构,有很多部门,每个部门都有很多审批流程, 报销、请假、结算.... 每个部门和每个部门的流程审批环节还不一样, 有些部门某流程要填录这些内容,有的部门要填录那些内容, 有的部门某个审批流程需要3个领导审批,另 阅读全文
posted @ 2019-08-24 20:17 liulun 阅读 (30) 评论 (0) 编辑
摘要:闭包: 闭包可以理解为定义在一个函数内部的函数, 函数A内部定义了函数B, 函数B有访问函数A内部变量的权力; 闭包是函数和子函数之间的桥梁; 举个例子: 输出:hello allen-Liu 如果父函数已经退出(返回),那么闭包效用也还是在的 接着看这个例子: 输出: 可见,js的执行引擎不但记住 阅读全文
posted @ 2019-08-08 14:10 liulun 阅读 (19) 评论 (0) 编辑
摘要:用户与角色是多对多的关系, 一个角色可以被赋予给多个用户,一个用户也可以拥有多个角色; 查询不拥有某角色的所有用户, 如果用leftjoin查询,会造成重复的记录: 举例错误的做法: 这个查询虽然用到了(or `system_user_role`.`role_id` is null )防止结果缺失, 阅读全文
posted @ 2019-07-18 11:31 liulun 阅读 (62) 评论 (0) 编辑
摘要:如果我要遍历一个数组, 我只要给forEach传一个匿名函数即可,很简单; 如果我已经把匿名函数抽象出来,做成了一个公共的方法 (可能其他地方也会用的到) 那么,这个遍历会是这样的; 注意:只要把方法对象传给forEach就可以喽,参数什么的,根本就不用关心; 如果这个方法在一个对象里,那也没什么问 阅读全文
posted @ 2019-07-11 20:12 liulun 阅读 (93) 评论 (0) 编辑
摘要:安装mongodb 先在本地用记事本做一个这样的文件(命名为:mongodb-org-4.0.repo): 上传到服务器这个目录下: 执行如下命令安装mongodb: 禁用自动升级,修改/etc/yum.conf文件,加入如下信息 启动服务: 配置开机自启动 配置用户 进入mongodb shell 阅读全文
posted @ 2019-06-22 08:47 liulun 阅读 (469) 评论 (0) 编辑
摘要:第一篇: vscode源码分析【一】从源码运行vscode 第二篇:vscode源码分析【二】程序的启动逻辑,第一个窗口是如何创建的 第三篇:vscode源码分析【三】程序的启动逻辑,性能问题的追踪 第四篇:vscode源码分析【四】程序启动的逻辑,最初创建的服务 第五篇:vscode源码分析【五】 阅读全文
posted @ 2019-06-21 11:55 liulun 阅读 (242) 评论 (0) 编辑
摘要:第一篇: vscode源码分析【一】从源码运行vscode 第二篇:vscode源码分析【二】程序的启动逻辑,第一个窗口是如何创建的 第三篇:vscode源码分析【三】程序的启动逻辑,性能问题的追踪 第四篇:vscode源码分析【四】程序启动的逻辑,最初创建的服务 第五篇:vscode源码分析【五】 阅读全文
posted @ 2019-06-20 13:58 liulun 阅读 (334) 评论 (0) 编辑
摘要:第一篇: vscode源码分析【一】从源码运行vscode 第二篇:vscode源码分析【二】程序的启动逻辑,第一个窗口是如何创建的 第三篇:vscode源码分析【三】程序的启动逻辑,性能问题的追踪 第四篇:vscode源码分析【四】程序启动的逻辑,最初创建的服务 第五篇:vscode源码分析【五】 阅读全文
posted @ 2019-06-19 13:24 liulun 阅读 (227) 评论 (0) 编辑
摘要:第一篇: vscode源码分析【一】从源码运行vscode 第二篇:vscode源码分析【二】程序的启动逻辑,第一个窗口是如何创建的 第三篇:vscode源码分析【三】程序的启动逻辑,性能问题的追踪 第四篇:vscode源码分析【四】程序启动的逻辑,最初创建的服务 第五篇:vscode源码分析【五】 阅读全文
posted @ 2019-06-19 10:38 liulun 阅读 (69) 评论 (0) 编辑
摘要:通常,在Node.js里导入是通过 require函数调用进行的。 Node.js会根据 require的是相对路径还是非相对路径做出不同的行为。 相对路径 相对路径很简单。 例如,假设有一个文件路径为 /root/src/moduleA.js,包含了一个导入 Node.js以下面的顺序解析这个导入 阅读全文
posted @ 2019-06-19 09:22 liulun 阅读 (332) 评论 (0) 编辑
摘要:以下代码均来自于我开发的开源软件:想学吗 窗口A的渲染进程发消息给主进程 主进程收到消息后,再发消息给窗口B的渲染进程 窗口B渲染进程接收主进程消息的代码: 阅读全文
posted @ 2019-06-19 09:15 liulun 阅读 (321) 评论 (0) 编辑
摘要:第一篇: vscode源码分析【一】从源码运行vscode 第二篇:vscode源码分析【二】程序的启动逻辑,第一个窗口是如何创建的 第三篇:vscode源码分析【三】程序的启动逻辑,性能问题的追踪 第四篇:vscode源码分析【四】程序启动的逻辑,最初创建的服务 在上一篇中,我们看到lifecyc 阅读全文
posted @ 2019-06-18 20:05 liulun 阅读 (291) 评论 (0) 编辑
摘要:第一篇: vscode源码分析【一】从源码运行vscode 第二篇:vscode源码分析【二】程序的启动逻辑,第一个窗口是如何创建的 第三篇:vscode源码分析【三】程序的启动逻辑,性能问题的追踪 在第一节中提到的startup函数里(src\vs\code\electron-main\main. 阅读全文
posted @ 2019-06-18 16:16 liulun 阅读 (105) 评论 (0) 编辑
摘要:第一篇: vscode源码分析【一】从源码运行vscode 第二篇:vscode源码分析【二】程序的启动逻辑,第一个窗口是如何创建的 启动追踪 代码文件:src\main.js 如果指定了特定的启动参数:trace vscode会在启动之初,执行下面的代码: 这段代码的主要目的是:从Chromium 阅读全文
posted @ 2019-06-18 13:41 liulun 阅读 (389) 评论 (0) 编辑
摘要:联合类型 在原生的JS里,null和undefined经常会导致BUG的产生, 在ts里,你又想用null,又担心出错的时候 你可以考虑用联合类型,当某值可能为 number或null,你可以声明它的类型为number | null 类型兼容 实现接口时,只要包含了接口要求的数据结构即可兼容这个接口 阅读全文
posted @ 2019-06-18 11:52 liulun 阅读 (76) 评论 (0) 编辑
摘要:上一篇文章:https://www.cnblogs.com/liulun/ (小广告:我做的开源免费的,个人知识管理及自媒体营销工具“想学吗”:https://github.com/xland/xiangxuema) 我们在package.json里能找到他的入口文件; electron是分主进程和 阅读全文
posted @ 2019-06-17 00:07 liulun 阅读 (482) 评论 (0) 编辑
摘要:安装git,nodejs和yarn 安装Python27,3.x版本的不行,确保它在你的环境变量里; 安装gulp 安装windows build tools: 安装node-gyp 上面安装的一大堆东西,看似没无关,其实他们大都是用来编译原生nodejs插件的, nodejs的原生插件不是基于2进 阅读全文
posted @ 2019-06-17 00:03 liulun 阅读 (697) 评论 (5) 编辑
摘要:你应该是一个真正的“甲方” 你如果是个二道贩子, 或者你要做的项目是为了应付投资人, 那么这篇文章里谈的很多事情,你都大可不必在意, 甚至现在就离开这个页面,亦无不可。 你的项目应该是一个真正的“项目” 你如果想搞个互联网平台自己运营, 那么建议你还是找个技术合伙人, 或者招聘个技术主管, 因为这类 阅读全文
posted @ 2019-04-11 02:41 liulun 阅读 (807) 评论 (1) 编辑
摘要:第一节 我在2015年4月份开始做这个开源软件之前, 已经研究了很长一段时间的浏览器开发技术了 那个时候我还只是打算为博客园写个文章发布工具而已, 觉得技术上可行, 也能为常年写博客的人乃至博客平台提供一些帮助 于是就动手做了 做了之后,发布出来,一直自己用, 也没管别人的想法, 那个时候,工作和生 阅读全文
posted @ 2019-03-06 14:43 liulun 阅读 (1459) 评论 (8) 编辑
摘要:窗口间通信的问题 electron窗口通信比nwjs要麻烦的多 electron分主进程和渲染进程,渲染进程又分主窗口的渲染进程和子窗口的渲染进程 主窗口的渲染进程给子窗口的渲染进程发消息 子窗口的渲染进程接收消息的代码 注意,应该dom-ready了之后再发,要不然你的子窗口进程有可能接收不到消息 阅读全文
posted @ 2019-02-22 08:54 liulun 阅读 (1439) 评论 (2) 编辑
摘要:回顾 在上一篇文章中, 咱们聊了我开发的这个程序是什么样子、为什么要开发这个程序 electron的工程结构,他是怎么启动和退出的 以及我们怎么用electron的技术,登录博客园,拿到会话信息; 这篇文章,我们主要讲怎么拿博客园的数据,以及怎么提交数据给博客园; 上几张新图: 宿主画面与webvi 阅读全文
posted @ 2019-01-21 07:16 liulun 阅读 (2702) 评论 (11) 编辑
摘要:缘起 之前我用nwjs做过一个博客园文章编辑器的客户端 发了好几个版本,最后一个版本到5.0.0了 其实第一个版本已经很好了,不知足,后来自己又做了兼容markdown的,结果用来用去,发现不是自己想要的 也一直没动手做新的,写博客的频率也降下去了。 最近搞了个APP(还没上线),打算把心得写到博客 阅读全文
posted @ 2018-12-13 16:16 liulun 阅读 (2511) 评论 (20) 编辑
摘要:最近这几日在搞一个小网站:教你啊 ;(感兴趣的朋友可以来捧场,在这个网站上有任何消费我都可以退还) 由于更新频繁,手动更新特别麻烦,于是开发了这个小工具 用了一段时间,还是挺顺手的,同时.NET CoreQQ群(225982985)的群友 @亡我之心不死 也推荐我分享出来 这就把代码公布在这里,有什 阅读全文
posted @ 2018-05-21 12:38 liulun 阅读 (1091) 评论 (4) 编辑