postgresql快速上手

快速安装 a. 通过图形界面安装(适合 windows, macOS); b. 通过命令行包管理工具安装(适合 windows, macOS, linux); 快速配置 a. 端口配置,默认 5432; b. 启动服务,图形界面或命令行启动服务; c. 用户配置,默认当前系统用户以及一个默认的 postgre 用户,可自己新增用户; d. 密码设置,密码需要专门设置; f. 链接工具,可以设置系统变量添加工具,比如 psql 或者 pg_restore 之类的,也可直接使用可执行文件路径使用; g. 数据库配置,有默认的数据库和用户数据库,可以删除和创建; 快速使用 a. 链接数据库,可指定用户,数据库,还有端口; b. 使用数据库,链接上以后有个类似命令行的工具,支持 SQL 语句进行查询,同时也支持数据库管理命令,比如删除数据库,切换用户,导数备份等等; c. 作为服务,链接程序配置端口、用户、密码、数据库连上之后通过orm 等链接库使用即可;

December 12, 2023 · 1 min

RSS 订阅功能上线了

最近两周在进行自我信息管理的优化,其中的一个内容就是要屏蔽推荐算法投喂的垃圾信息,也可以叫做噪音。 我们身处一个信息爆炸的时代,有的人来着不拒,有的人自我封闭,我自己就在这两个极端自己往复了很多年。 就拿微博来说吧,它在提供了很多自己专业视角及生活环境外的新鲜信息的同时,也提供了很多噪音,比如不需要的广告,一些低劣的创作内容,还有谣言。 以前我提到过屏蔽掉微博和朋友圈,然后通过几个信息大节点作为信息来源。其中一个节点就是连岳,后来连叔发生了奇妙的变化。 当然最大的问题倒不是这个,重要的是兼听则明。我们需要听不同的人对一个事件的不同看法,特别是那些有独立观点的人。 这就有一个问题,不同的人有不同的表达偏好,比如这个喜欢写博客,那个喜欢写微信公众号,另一个喜欢写微博问答,还有一些喜欢发推特。 为了看不同人的观点,打开不同的平台,那就是不同的推荐算法给你推荐噪音了。 解决办法就是主动订阅,跨平台的订阅。而 RSS 这个上古的东西就是解决这个问题的。 我自己的 RSS 订阅设置还在研究阶段,但是既然我有一个博客,那么我自己就需要考虑先从做为一个站点的角度去提供 RSS 订阅。 这就是为什么我升级了这个功能。 说句多余的话,公众号正是 博客 + RSS 私有化形式,不一样的是我们受到了平台的限制。

December 19, 2021 · 1 min

评论功能上线了

最近开始注意主动休息之后,冥想就成了一个日常习惯。 休息之外的一个好处是,很多原来没意识到的事情也变得清晰了起来。 其中一个就是对于我这样的只是单纯的写点文字表达想法的人来说,微信公众号其实是个限制。 一天只能群发一次,一定要有题图,还必须去调一下格式,甚至发文章还要登录扫码。 专业写手为了流量可以将就平台,但对于我们这类纯属爱好的人来说,让一件原本轻松随意的事情变得麻烦了起来。 可以说公众号平台限制了自由,当然我们也有跳出平台的自由。 回到自己的博客之后,在博客爱怎么写就怎么写,一天想写几篇就几篇,不用题图,再套上 markdown 的标准样式。free style,是自由的感觉。 而公众号,只用文字消息转发一下文章链接就好了。看的人自然会打开链接,不看的人给他看还浪费他的时间。 改成转发文字消息之后,公众号消息下面的评论也不开了,内容和评论分离是比较奇怪的事情。 但是,既然我公开表达想法,那么还是愿意听听别人的看法,所以时隔两年之后,终于把博客的评论完善了。 搭建博客用的是 hexo ,使用对应的 plugin 就可以了。评论的存储使用的也是 github , 和博客内容储存同源。 这样就能看文章的人就能评论,能评论的人就能看文章,一样的配方,一样的缘分。 这么一来,先是就把公众号里的水份读者过滤掉了,在之后 github 评论又把评论欲望不够充分的读者过滤掉了。 要是最后没有读者了呢?那就没有了嘛,毕竟我只是处于爱好写着完,顺道给人看看。 这样也能避免一个问题,那就是为了阅读量而写作,为谋生而写作。这类人不是在表达自己,也不是在科普观念,他们本质上只是在搞服务业。客户想看什么他们写什么,平台不让写什么就不写什么。 所以说,真正自由的人不应该把写作作为职业,顶多作为副业。除非,你有为自由饿死自己的觉悟。

October 23, 2021 · 1 min

ARTS第二周

Algorithm:2. Add Two Numbers /** * Definition for singly-linked list. * function ListNode(val) { * this.val = val; * this.next = null; * } */ /** * @param {ListNode} l1 * @param {ListNode} l2 * @return {ListNode} */ let addTwoNumbers = function(l1, l2) { let result; let currentNode; let temp = 0; do { if (!result) result = currentNode = new ListNode(0); else currentNode = currentNode.next = new ListNode(0); temp = (l1?l1.val:0) + (l2?l2.val:0) + temp; currentNode.val = temp % 10; temp = (temp - temp % 10) / 10; l1 = l1 && l1.next; l2 = l2 && l2.next; } while(l1 || l2 || temp); return result; }; Review:Simplify your JavaScript – Use .map(), .reduce(), and .filter() ...

July 28, 2019 · 1 min

await探究

这周在js群里讨论了一道今日头条的面试题,这题考察的是对microtask(微任务)和micratask(宏任务)的理解。题目和输出如下: async function async1() { console.log('async1 start'); await async2(); console.log('async1 end'); } async function async2() { console.log('async2'); } console.log('script start'); setTimeout(function() { console.log('setTimeout'); }, 0); async1(); new Promise(function(resolve) { console.log('promise1'); resolve(); }).then(function() { console.log('promise2'); }); console.log('script end'); // output: // script start // async1 start // async2 // promise1 // script end // async1 end // promise2 // setTimeout 这里就不对微任务和宏任务进行深入探究了,这里我们来探讨一个有意思的小问题(假设你已经掌握了微任务和宏任务)。 很多人对于async1 end出现在script end之后,而不是出现在async2之后感到有所疑惑。 出现这个疑惑是因为对await的工作原理不够了解,下面我们来解释一下。 先说说为什么有的人会认为async1 end出现在script end之后。这是因为,在代码的书写上,由于使用了await关键字,所以可以使得我们用同步的代码去写异步的代码。 await async2(); console.log('async1 end'); 很多人会觉得是js引擎在执行第一句的时候会暂停,等异步函数执行完了再去执行第二句,这就是误区所在。async/await的作用只是让我们像写同步代码一样写异步代码,而不是把异步代码变成同步代码。 这段代码还是异步的。 ...

July 28, 2019 · 1 min

如何快速搭建一个博客

昨天的文章发出后有朋友问我有没有搭建教程,我当时回答他说是跟着hexo官网搭出来的。事后想想,仅靠官网上的文档是不足以搭出像我这样一个博客的,虽然并不是很复杂,但我自己在使用hexo之前其实还做了些其他工作。昨天复盘了搭博客的经历,今天就来复盘一下搭博客的步骤吧。 我的博客最终使用的是 hexo + Github Pages 搭建的。前者提供一个搭建模板,用于生成博客的静态网页。后者用来部署同时提供了类似 Nginx、IIS 等 http 代理服务。 准备工作 一台安装了 NodeJs 的个人电脑,用来进行文章编辑和发布用,同时也提供文章本地保存,也可以使用Github对项目及文章数据进行保存 一个Github的账号,免费的就可以,需要给电脑和账号间配置好ssh,详见github官网。 一个域名,由于目前主流浏览器对 http 协议都会进行安全提示,所以最好配个 ssl 证书,证书目前有收费的和免费的,免费的就可以 开始搭建 本地系统搭建,按照官网操作即可,命令如下: npm install hexo-cli -g hexo init blog cd blog npm install hexo server 运行完命令后,本地预览项目就跑起来了。可以通过浏览器打开 http://localhost:4000/ 预览效果。此时可以在项目文件夹内的source/_post下新建文章了,使用的是markdown格式,而且文章的开头需要按照示例的模板填写文章相关信息,详见官网。 在 Github上新建一个仓库,在项目的_config.yml中配置该项目的地址,以及指定推送的分支。之后会把 生成的静态博客页面发送到这个分支上,用来给 Github Pages 发布用。注意,免费账号只能通过 master 分支发布。 做完上述工作后,就可以在本地运行如下两行命令生成静态网页,并推送到我们先前指定的项目分支中了。 hexo clean && hexo deploy 上述命令是重新生成我们的静态网页,希望增量更新可以使用下面的命令 hexo generate --deploy 发布到对应的分支后,在项目的 setting 中的 Github Pages 的下,设置一下 source 选项就可以了,选择你要之前配置的发布的那个分支,免费账户目前只能是master。配置好,就能看到 Github 给你分配的项目地址了,一般是 https://你的账户名.github.io/你的项目名/ 这样的形式,过一会就你打开了。之后,你每次添加完文章后,都需要执行第三步来提交网站更新。 补充一下,这里的项目只是用来发布的,如果需要进行项目管理的话,可以用其他分支来保存项目数据,比如edit。也可以另外起一个github项目来保存,我就是使用的这一种方式。 ...

July 24, 2019 · 1 min

我的博客终于正式上线啦!

搭建个人博客的想法最早出现在2017年初,那会还在学习ruby on rails,想着有空自己搭建一个个人博客网站出来。在此之前,都是在各个平台零零散散写东西,qq空间、校内网、新浪博客、网易loft、部落格、微信公众号。 可以看到,由于网龄较长感觉各大平台都淌了个遍。也见证了各个阶段发布平台随着时间的变迁,微信的出现qq空间没落了,微博的出现新浪博客和校内没落了,网易loft和部落格也是小众,现在也就还有微信公众号还在浪潮上,这也是我目前公开写作的主要地方。但,谁又说的清楚下一个浪潮何时再来呢? 一开始只是写着玩玩又或者宣泄情绪,更新频率也是变来变去。但时间久了以后,发现自己已经写了不少东西。17年初是写的最频繁的时候,那会天天写ORID,于是萌生了把所有文章统一汇总到一个地方的想法,考虑到平台变迁的规律,加之在学技术,自然而然萌生了搭建个人博客的想法。 万万没想到的是,这一搭就是两年多… 一开始想着学ror的话,就用它搭一个,搭出来丢到heroku上,网速慢的不行,就想着自己搞台服务器部署一下,好不容易部署了,就差域名和UI优化了,结果转去学js了…再然后,学express的时候,把服务器重置了…然后,想着既然学js,那就改用express + vue在搭一个吧。等一切准备就绪,服务器也续费了,域名也买了十年,工信部那边也备案了,就等部署的时候,js的学习进入了单页面应用阶段,于是开始重构博客项目,要写成前后分离的形式。这一步完成以后,就过年了…等过完年,我就开始找工作了,之后就开始了996的快乐生活。而搭建博客的事情也就没有在想过了。 终于,前段时间我结束了一年的996生活,搭建个人博客的事情再次提上了日程,然而尴尬的是我的阿里云服务器过期给注销了…在和阿里云沟通过后,考虑价格因素(双十一至少打对折)我决定等到今年双十一再买云服务器,博客的事情也就推到双十一以后了。 当然事情再一次没有按照我的预料发生,上周我报名参加了左耳朵陈皓的ARTS打卡活动,每周要写一篇技术文章,同时还有写一个汇总贴。考虑到我的微信公众号里90%以上的人没啥技术背景(其实他们也不怎么看…),总觉得在微信公众号上面长期更新技术类文章总是不太靠谱,于是乎又开始想着搭建个人博客了。鉴于之前的项目都没有做什么UI优化,就想先了解个博客模板系统来搭建,之后再买个服务器来部署。 先了解了几个朋友在用的模板,一了解发现服务器都可以省了,技术朋友们之前好像和我说过,但那会没有那么强烈的需求(需求果然是前进的动力啊!)也就没过脑子。于是上周末用小半天的时间,初步上线了(用第三方的东西就快啊)!这两天零零散散给配了域名和证书,还有就是把一部分的数据从之前的平台迁移过来,看起来算是有模有样了。后面有时间的话会把以前在各平台写过的文章都汇总过来,再看看情况考虑一下完善SE0、评论、RSS等功能,但这些都是次要的,发布功能才是最重要的。有一个自己的发布平台感觉还是不太一样的,哈哈哈! 虽然拖了很久,也还有很多不完善,但不管怎么说, 我的博客正式上线啦!

July 23, 2019 · 1 min

ARTS第一周

Algorithm:1. Two Sum /** * @param {number[]} nums * @param {number} target * @return {number[]} */ var twoSum = function(nums, target) { let map = {} for (i = 0; i < nums.length; i++) { if (map[nums[i]] !== undefined) return [map[nums[i]], i]; map[target - nums[i]] = i; } }; Review:WebAssembly — Is It As Scary As It Sounds? 作者通过实作一个简单的项目介绍了WebAssembly,里面还应用了几个介绍资源,看完后能对WebAssembly有个大致的了解。 Tip:如何快速搭建一个博客 通过Hexo搭建个人博客非常方便,不到半天就能搭好。 Share:Typescript未来会如何?

July 21, 2019 · 1 min

typescript未来会如何?

日前,阮一峰老师公开发表了对typescript(后简称TS)未来的不看好的观点。 阮一峰老师的核心逻辑是这样的:1,未来任何语言都可以写前端;2,在此前提下,为了解决js类型问题的ts本身作为js的超集并不具备天生的类型优势;由此两条得出一个结论,既然能用诸如java等强类型语言来写,为何还要用ts呢? 那阮一峰老师的观点如何呢?我们来分析一下。 未来任何语言都能写前端?其实准备的说,是未来会有更多的语言至此WebAssembly(后简称WA)。浏览器目前的主流工作方式是,通过V8引擎将js代码进行编译,之后交由浏览器更底层的内核来执行。而WA,则是由多种语言转换成字节码交由WA虚拟机执行,而WA虚拟机则对接浏览器底层,其工作原理类似JAVA。从性能上,WA的执行比JS快很多。就像在服务端的JAVA的执行优于JS。 这么说来,好像JS会被淘汰一样。但事实是,就目前来说,WA还不能直接操作DOM。现有的方法都是通过间接调用JS实现,就使用和性能上说,还不如直接使用呢。WA与其看做是JS的颠覆者,倒不如看成是JS的补充者。在强计算的场景下,利用各语言的特长来对客户端的能力进行进一步的扩展。 这么看来,即使很多语言能参与到浏览器中来,但核心地位的JS短期还是不会变化的,而且就目前的实现方案来看。现阶段的.wasm文件还是需要通过JS引入执行就很好的说明了问题。 即便你通过JAVA写了WA,你还是得使用JS。而有JS的地方,自然也就还有TS。 从另一个角度讲,微软背书的TS未来是否也会成为支撑WA的语言呢?如果可以,那也不是一种选择? 另一方面,JAVA的类型系统更加全面,但也更加复杂。就类型而言,很多人认为JS是自由的,在写代码的时候,不用考虑那么多东西,专注在业务逻辑上,某种角度来说,动态弱类型反而是JS的优良特性。而TS的出现,可以认为正好在JAVA和JS的中间建立了一个桥梁。一方面我们可以用any类型享受到JS的自由,另一方面我们又可以通过明确的类型在编译阶段扫除掉弱类型带来的潜在问题。阮一峰老师认为TS的类型系统不如JAVA就不如写JAVA这一点显然是不对的,因为若如此JS就不会有今天的发展。 JAVA的发展和JS的发展源于他们在不同领域的特长发挥,脱离场景谈语言优劣是没意义的。 typescript未来会如何? 我觉得就类型系统和WA的发展来判断是不足以得出具体结论的。我更倾向于详细人类群体的惯性。我不认为未来会有很多后端会转职成前端,特别是使用它们现有的技术语言写前端。我更倾向于认为,未来写前端的还是前端。而要它们放弃现有的语言去学习新的语言来写前端也是不太可能的。所以,JS在前端领域依旧会是霸主,而WA的支持语言也并不会把JS、TS排除在外。而在前端项目复杂度越来越高的前提下,TS无疑是前端同学应对复杂工程最优的选择。

July 21, 2019 · 1 min

纸上得来终觉浅,绝知此事要躬行——半年工作总结,一年学习总结

转行工作差不多半年了,而学习js的时间,则是一年多。一年的时间里,真的学习了很多东西,在这里要感谢一下徐高阳老师和JavaScript社区的各位小伙伴。 学习知识的总结 2017.08-2018.03:脱产阶段学习 学习编程先导课-JavaScript编程入门(在花了超值的199买了入门课程后,开课前补看的) 学习JavaScript编程入门(认真的完成了每节课的作业,上完课后获赠了《Head First HTML5 programming》) JavaScript编程入门结课后按徐帅的推荐开始看犀牛书 参加了JavaScript社区的十月每日一学,连学三十天活动 学习编程幼儿园—快速攻破编程学习障碍课程 学习Web与网络基础先导课 学习JavaScript进阶先导课 学习Web与网络基础课 学习JavaScript进阶课 向徐帅请教找工作建议,徐帅建议从前端入手 学习HTML5和CSS3(以前学过一次html和css但没有学5部分还有3部分) 学习bootstrapUI框架 学习VUE课程 学习vue文档基础部分 准备简历,重点梳理自己学过的知识和完成的作业及项目写到简历上 2018.03-2018.09:工作阶段学习 学习使用原生接口写页面交互,重点学习了DOM知识及相关API 学习小程序开发,结合徐帅在JavaScript社区里关于小程序的描述及vue的思想来学习小程序开发文档 学习Chrom插件开发,重点看了几篇网上的Chrome开发指南 学习用原生CSS写样式,边用边学,但一开始重点学习了CSS布局相关知识 学习使用Postman测试后端提供的接口 学习跨域相关知识 学习http请求相关知识、axois库及辅助库qs 学习使用chrome开发工具排查接口及样式问题 学习自适应布局,小程序中通过rpx 了解mpvue, wepy 学习使用图形界面给后端搭好的服务器放静态页面 学习jquery 学习vue文档router部分和vuex部分 学习给站点js嵌入广告 学习给站点检查sdk及排查木马植入 学习如何防御DDOS 学习如何防御http劫持攻击,了解IIS的配置方法 学习防盗链相关知识,顺道学习了NoSQL和了解redis 学习svn操作 学习小游戏开发文档,公司后来取消了开发需求 学习小程序打包编译及埋点原理 实践使用vue-cli起项目,并拆分可复用组件 学习elementUI 学习UEdit 学习Ramda 深入学习promise 实践封装API 学习eslint,后来开发任务重就一直没打开检测 学习async/await 学习webpack相关知识 了解微信第三方开发平台 了解grunt、gulp、npm等前端自动化手段 学习写windows的cmd自动化脚本 此外工作过程遇到的很多问题也在微信群还有JavaScript社区找到了答案。比如大师兄的模仿网易云音乐转碟的css文章;于鑫关于import/export的文章;大师姐的风格的要素等几篇文章;学习JavaScript社区家树的箭头函数的几篇文章;至于徐帅的就太多不列举了~有时间的话,每一篇都值得看^o^。 学习心得 先援引陆游的一句诗:“纸上得来终觉浅,绝知此事要躬行。” 在实战中进步 从去年开始就一起学习的同学应该可以看得出来,在工作阶段里我学习的很多东西其实在先前的课上很多是已经学习过的,比如postman,再比如vue组件抽离。 编程有其知识的属性,但更多的是技术。而技术是需要实践的,未经实践的技术很难说被我们真正掌握了。这里可以从两个角度来说,一个是未经过充分的实践,编程的知识并没有在大脑里形成足够鲜活的有效的记忆链接。另一个则是,没有形成肌肉记忆,不能形成一种条件反射式的应用直觉。所以,要想真正掌握一个东西就要把它用起来。 要用就需要给自己找需求,找那种需要技术去解决问题的需求。尽管跟着例子、跟着demo敲这个也是一种提高熟练度的方法,但这种方法对大多数人大多数时候并不能形成其应用技术的思维习惯。换言之,这不是最有效的技术应用场景。 在我看来,最有效的场景是工作!你永远不知道会有什么新需求新挑战在等着你。没有工作条件的朋友,最好能把尽快找到工作,并在工作中实践为目标。这里的工作不单只给别人打工,创业、解决社会一些问题也是。总之,就是能用技术解决问题的需求。 找不到这类需求的同学也不用急,没有新需求的话,我们找别人实现过的需求来自己做也是差不多的,只是这类需求可能少一些刺激与挑战,毕竟没有时限以及属于明确可以实现了的需求。 先举几个例子,比如为了练习vue全家桶(vue-cli,vue-router,vue-vux),可以使用cnode提供的接口,来自己模仿写一个cnode社区出来。比如为了练习小程序,可以使用豆瓣电影提供的接口,自己写一个小程序的电影资讯小程序出来。还比如,可以自己起一个express及mogodb,模拟豆瓣接口提供的数据,自己把数据拔到自己的接口上,在实现一样的接口逻辑。 值得一提的是,经过这种方式的学习,你最终收获的不仅仅是技能,还有简历上多出的项目也就是你的作品哦。 在路径上努力 路径通往目标,弄清楚自己的发展方向很重要。我并不认为什么都学一些不好,但人的时间确实是有限的,特别是当你有某个有期限的目标时。学习要有主次,而主次权重是和你的具体目标相关的。这就好比打牌,大家手里的牌数是一样的,但是出牌顺序的不同牌局的结果自然也不同,时间也是一样的。 举个转行的小例子吧,如果某个同学是想转行成为一名工程师,想在这条道路上取得一定成就。而且刚好认同我上面提到的在工作中积累是最快的(上面不是这么表达,但意思是一样的),那么他就会以尽快找到工作为目标,如果他想找前端他应该开始收集html、css、vue、elementUI等就业市场,或者说大多数用人公司希望能应聘者具备的技能,而不是将时间一半分给vue一半分给node。 ...

September 14, 2018 · 1 min