分享我的发现、想法与心得

0%

b

早上上班看到阮老师这个微博和评论后对Quickjs提起了兴趣。当我点进网站看到Features时,感觉作者是真的牛逼。

Quickjs干了什么?

它能把js构建为二进制可执行文件,能运行至任何地方,也可以基于WASM运行在浏览器上。这是大大地扩展了js的可移植性,在我看来牛逼得不行!

阅读全文 »

Photo by Adeolu Eletu on Unsplash

调查时间为2019年05月上旬进行

目前开发小程序可选方案有以下几种方式:

  • 基于小程序开发工具进行原生开发(简称:原生开发)
  • 基于构建环境进行开发,并转换为小程序原生代码(简称:构建式开发)

原生开发由于设计问题需要管理大量文件导致开发过程不流畅(如创建一个组件需要新建三份文件编写代码);更多的问题是JS新特性不支持、css样式不支持Less/Sass,也不能灵活运用npm包管理(尽管新版本提供了支持);细说就是上面那些问题,对于日常开发的前端工程师来说却是需要重视的,这类问题得不到解决,开发及维护成本是高昂的!现代的前端工程师日常开发场景已经常常使用ES6/7的新特性(甚至有些习惯使用TypeScript),然后要让这些人回头使用老旧的方法写代码,只能说工作成本太高了。结论:不推荐用原生开发,除非你的程序足够简单

阅读全文 »

在Web上使用Cross-Site Request Forgery进行劳作之后,我们终于有了一个合适的解决方案。 没有网站所有者的技术负担,没有困难的实施,部署简单,它是Same-Site Cookies。

与Web本身一样古老

跨站请求伪造,也称为CSRF或XSRF,基本上永远存在。 它源于网站必须向另一个站点发出请求的简单功能。 假设我在此页面中嵌入了以下表单。

阅读全文 »

这事断断续续折腾我大概两周时间,这就把我经历的事分享给大家。

为了实现在本地提交这个blog项目能不用手动到线上更新而努力着,刚开始在找解决办法时以为就那么简单,结果却折腾在docker、linux权限和如何写shell的几个关键知识里面。

阅读全文 »

“人们如何真正使用我们的产品?” 是每个产品创建者必须回答的基本问题。为了回答这个问题,产品设计师需要从用户的角度理解整个体验的本质。用户旅程地图是一个很好的练习,可以阐明它。

什么是用户旅程地图?

用户旅程地图是个人与产品/品牌在不同渠道中随时间的关系的可视化。
虽然用户旅程地图有各种形状和格式,但通常它表示为用户和产品之间所有点击的时间线。此时间轴包含有关用户用于与产品交互的所有渠道的信息。

阅读全文 »

git flow 普片认为最早是由荷兰独立软件工程师Vincent Driessen在2010年发表的一个成功的Git分支模型(A successful Git branching model)这篇文章提出的。文章中提到文森特早在一些项目中使用git flow,并证明它是成功的。文中提及使用git flow的根据分支策略解决自动构建和部署问题。文森特后来制作了nvie/gitflow工具用于扩展git实现git flow功能,gitflow思想也推广了出去。

阅读全文 »

关于持续集成工具对比

持续集成工具:

三方对比

Jenkins GoCD drone
Github Stats 12K 4.6K beta 16.9K
(正式版本不开源)
优点(top5) 内部托管
免费开源
非常适合构建,部署或启动任何异步
大量的集成
丰富的插件和良好的文档
开源
管道依赖性
管道结构
可以并行运行作业
非常灵活
开源
建在docker上
免费开源
GitHub集成
灵活的脚本
缺点 缺少插件文档
声明性管道的能力有限
缺少插件
可怕的UI

对比内容参照: drone-io-vs-go-cd-vs-jenkins

Jenkins作为人尽皆知的持续部署工具,由于其庞大的插件和生态支持使它无所不能,规模较大的团队更喜欢使用Jenkins。GoCD是ThoughtWorks在做咨询和交付交付项目时自己开发的一款开源的持续集成工具,满足更复杂的部署实现,但是入门门槛却比其他两款CI高得不少。GoCD贯彻管道(pipeline)概念使其可以组合串行、并行执行任务,实现复杂的、精细的工作流。相比Jenkins也能在官网和社区的插件支持下实现类似效果,可是对比下来Jenkins中的管道只是相当于GoCD中一个单独的任务,如果不是存在复杂的部署需求不建议使用GoCD

最后能看出drone受关注程度比其余两者都高,是因为drone简单的UI和灵活的设计导致备受关注。对比Jenkins和GoCD在通道方面没有提供更多的支持,但是正由于其简单的设计容易理解之余扩展也十分简单。值得一提的是drone虽然插件没有Jenkins多,但是提供的插件文档和插件例子能作为自制插件提供很好的参考。可惜的是正式版本(1.0之后的版本)不再开源,如果是在小团队中使用还是非常值得考虑的。

参考:

记一次翻译站经历

做这个记录之前,刚完成使用drone作为公司前端项目的持续交付工具的实践,打算写的教程前先把官方文档扒下来做个翻译站。在实践一番后,卡在不能频密调取google翻译这块上,项目无法进行下去。最后觉得经历的过程涉及的内容挺多的所以记录一下同时分享给大家。

这次经历涉及以下知识:

  • wget抓取网站
  • 使用基于python的翻译工具
  • 使用nodejs调取命令行
  • 使用nodejs读写文件
  • express添加jwt
  • 基于express实现上传文件
  • nodejs环境下读取并编辑html文件

我们一点点来说。

阅读全文 »

目前见到存在三种思路:

  • 使用本地服务解析md,并输出json,前端加载显示
  • 使用本地服务解析md,并输出html直接使用
  • 以SPA方式,异步加载并解析md文件,实现显示

相关的工具:

安装坑

在安装一些扩展时会出现下面这种错误:

1
2
3
4
5
go get -u -t -v github.com/golang/lint/golint
github.com/golang/lint (download)
Fetching https://golang.org/x/tools/go/gcexportdata?go-get=1
https fetch failed: Get https://golang.org/x/tools/go/gcexportdata?go-get=1: dial tcp 172.217.10.241:443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
package golang.org/x/tools/go/gcexportdata: unrecognized import path "golang.org/x/tools/go/gcexportdata" (https fetch: Get https://golang.org/x/tools/go/gcexportdata?go-get=1: dial tcp 172.217.10.241:443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.)

由于国内环境被墙了导致下载失败,此时可以用以下方式解决:

1
2
3
4
5
6
7
8
# 创建目录
mkdir -p $GOPATH/src/golang.org/x
# 进入
cd $GOPATH/src/golang.org/x
# 从github拉取备份下来,具体可以在这里找到golang的源码备份:https://github.com/golang
git clone https://github.com/golang/tools.git
# 再安装一次
go get golang.org/x/tools
阅读全文 »