不用注册账号,不用验证手机号码,9.9一步到位了!1分钟搞定
一个可以购买 OpenAI API Key 的服务:https://openaikey.xyz,还聚合了许多能够使用 API Key 的工具
直接购买了一个9.9,购买流程很顺畅,付款后直接发邮件,通过邮件中的 license key 在网站中转换出新注册的 openai的账号和 API Key,可以通过邮件直接找回账号信息和密码
API 调用的官方域名是这样的:https://api.openai.com/v1/chat/completions ,国内调用会超时的,所以要用其他方法优化下
该方案的主要思路是使用 Cloudflare 的 Workers 来代理 OpenAI 的 API 地址,配合自己的域名即可在境内实现访问。因为 Cloudflare Workers 有每天免费 10 万次的请求额度,也有可以免费注册的域名,所以几乎可以说是零成本。而且该方法理论上支持所有被认证的网站,而不只是 OpenAI
正好自己 blog 部署到了 Cloudflare 上了,直接按教程配置了一个专门的域名openai.a.com 作为 api 的代理,在苹果手机上 配置 chatGPT-Siri 项目时候使用了这个域名,证明可用
有了 API Key 和代理域名 openai.a.com 就可以极速入手使用下面的的开源项目了,总共分两步
Chaty – 一站式chatGPT百宝箱 chaty/README.zh-CN.md at main · cosin2077/chaty · GitHub
Chaty可以让您:
- 拥有一个chatGPT命令行机器人;
- 部署ChatGPT Web服务;
- 部署基于ChatGPT的NodeJS API 服务;
- 部署微信ChatGPT机器人;
- 部署Telegram ChatGPT机器人;
- 部署Discord ChatGPT机器人;
- 更多服务正在不断开发中!
让Chaty助力您探索ChatGPT的世界。
对前端很友好,会npm就可以了
设置自动的代理域名无效,后续再看下
ChatGPT-Siri/README-zh_CN.md at main · Yue-Yang/ChatGPT-Siri · GitHub
苹果手机上通过捷径 来使用 chatGPT,编辑这个捷径
1. 配置 API Key 2. 修改api.openai.com 改成自己申请的代理 openai.a.com
保存后点击捷径就会弹出 输入框了
后续:语音调起还没学会
电脑硬件配置:MacBook Pro (Retina 显示屏 13 英寸, 2015 年初) - 技术规格 (中国) (apple.com)
【DIY】2013 - 2015 MacBook Pro NVMe SSD 升级详细教程_哔哩哔哩_bilibili 推荐
晚上开电脑看下配置,买个 SSD 来试试
【DIY】如何把丐版 MacBook Pro 变高配_哔哩哔哩_bilibili
这个要买主板更换了,感觉不合适还是买 SSD 硬盘更换吧
选硬盘:2020 之 Macbook Pro DIY 升级 SSD 及 Time Machine 数据恢复 - 知乎 (zhihu.com)
选的电池: 京歌宝 苹果笔记本电池 MacBook Pro A1502 电脑电池 A1493A1582 电池 13.3 英寸【图片 价格 品牌 报价】-京东 (jd.com) 328
09 号开始上班了,前面三天在家开始收到了快递来的电池,SSD 固态硬盘,硬盘盒子。没有固态硬盘转接卡,所以只能先换电池了,结果换好电池后,触摸板和键盘失灵了,咨询了电池商家的客服,说是触摸板的排线因为换电池时候弯折过度失灵了,重新淘宝下单了触摸板排线,只能等硬盘接口转接卡和触摸板排线了。中间看买的固态硬盘价格降价了,没法保价就退了。重新思考了下,选了 512G 的固态和 2T 的机械硬盘,机械硬盘用来 TimeMachine 备份系统,这样不用重装系统了,直接用 TimeMachine 恢复就可以了。
周五把 Mac Pro 也带回家了,可以备份系统,直接把这边高版本的系统恢复到 MacBook Pro 上去
周六先收到了触摸板排线,就开始折腾替换排线,按电池的客服指导断开电池连接后更换了排线,电源链接那块扣的太紧,要通过卡片插入到缝隙中把三面往上撬开才容易扣出来,直接扣很费劲。更换排线后,重新安装电池链接,开机重试后键盘还不起作用,电池的客服小哥又指导重新安装下键盘排线的连接,就可以了,这时候就剩硬盘接口转接卡和两个硬盘了
周日上午来硬盘先送到了,所以就先备份了 Mac Pro 和 MacBook Pro 两台机器上的系统,机械硬盘格式化分区后,选择一个分区为 TimeMachine 的备份分区,开始备份就好了,就是时间挺长的,MacBook Pro 的 110G 系统备份 2-3 个小时,Mac Pro 系统 220G 吧也备份了三个多小时(估计不准,经历了第一个时间备份后就没有在意了玩游戏去了)
下午硬盘接口转接卡来了,谨慎起见还是先断开了电源链接,通过转接卡把新固态硬盘安装上去了,重新链接电源接口,开机启动都 OK,安装好后盖。插上备份系统的硬盘,按着 option 键 + 开机键,就进入恢复系统界面,可以选择从硬盘恢复系统,不过这时候找不到安装好的固态硬盘,是因为硬盘系统是没有格式化的,差点就重新拆机拿出来装到硬盘盒里去 Mac Pro 那边格式化去,还好恢复系统里面有硬盘管理工具,直接格式化加分区就好了,然后通过恢复到固态硬盘就好了。恢复时间也挺长的,不过恢复好了就是原来的环境设置了,不用重新安装需要的 APP 了
从 06.04 看视频后,开始动心动念了,后续折腾了一周 到 06.12 才大体安装好,谢谢 买来电池的那家客服小哥,提供了后续的技术咨询服务!
最终的更换配件列表
总计花费:1149 ,硬盘盒子原来是想替换下来的 SSD 按装进去当随身硬盘用的,发现接口不能用,看来还得买个转接卡才行了,弄完了月底使用来看没什么大问题,才开始感觉有点卡顿,后面就挺流畅的了
]]>uTools Alfred 替代品,跨系统,Linux Mac Windows 都可以,中国人写的,插件也很实用
软件免费,插件免费,跨平台同步配置是首付的,很良心了
常用的 插件
vscode :查找 vscode 项目历史,直接通过 vscode 打开 项目
Tinypng: 直接压缩图片并可以替换原有的文件
开发 50%以上的时间和终端打交道的,弄个高颜值好用的终端还是第一需求的
下载 iTerm 软件安装,配置 oh-my-zsh ,设置 iterm 软件的 sh 默认为 zsh,设置 zsh 的 theme 皮肤,和 iTerm 中 字符集
安装 Homebrew,这样安装软件时候直接 命令行 brew install
Git 的配置
ssh-keygen
生产公钥秘钥,配置公钥到 git 线上服务上(github,gitee,gitlab)
不同 git 服务器下载自动设置不同的用户名和邮箱 : 利用 Git-hook 自动配置不同仓库的用户信息
直接下载安装了,安装插件 Settings Sync 添加 Gist 同步不同电脑上的 vscode 配置
nvm nodejs 版本管理工具,前端开发离不开的
安装起那么开发环境 brew install nvm
npm 配置下载源 registry npm config set registry https://registry.npm.taobao.org
Spectacle 的出现让调整窗口,分屏变得与 windows 一样简单
多窗口管理工具,常用 commond + option + 左右方向键,让当前窗口占据屏幕的左右一半屏幕
MAC Command 键与 Control 键调换方案 推荐
试了半天,我很特殊电脑上是 command 的 option 进行了互调,笔记本电脑上用习惯了,现在调成一样的
以前从 windows 系统转过来的是很不习惯,外接键盘鼠标分别进行了设置,触摸板和鼠标又区别进行设置
window 上使用的一套罗技的鼠标和键盘,之间把 usb 发射器插入 Mac 来切换输入设备,Mac 下的默认键盘映射有点 Mac 笔记本自带的布局不一样的。通过如下设置:
- 键盘 “系统偏好设置”—“键盘”—“修饰键” 将键盘上的 Windows 映射成 option 键,alt 键映射成苹果键
- 鼠标 “系统偏好设置”—“鼠标”—“滚动方向:自然” 勾选取掉,这样就和 window 下一样自然使用鼠标了
鼠标设置优点烦恼:用 Mac 笔记本的时候触摸板的上下方向又反了,用外交设备的时候只能用外接设备,用笔记本的时候用要再改变回来,
2017.12.12
更新: SCROLL REVERSER 解决了这个问题
Typora Markdown 写作工具
以前用过马克飞象觉得快捷键挺好用的,不过这款 App 直接所见即所得模式,一会查询下相关的快捷键,更喜欢的还有 theme 的选择,默认竟然是 GitHub 的
Hide menu bar icons on your Mac
Mac 工具栏 icons 管理工具,可以选择那些软件 icon 隐藏和展示
坚果云 不同机器间同步文件用的,免费用户有流量限制,平时同步文档用,已经保存软件安装包用
Itsycal 好用的通知栏日历软件
fliqlo 屏保工具
RescueTime 时间记录工具
记录每个软件上使用时间,早在 Mac 系统的屏幕使用时间功能,并且可以 web 查看统计表格
番茄土豆 时间管理工具
wakatime 有 vscode 插件,可以统计每个项目上的使用时间
macbootstrap A bootstrap script for new Mac
对新 mac 设置脚步,不用在搜索教程一步步的设置啦,一行命令搞定,并且详细讲解了设置的细节
Itsycal 好用的通知栏日历软件
PDF Expert PDF 工具
fliqlo 屏保工具
ScreenToLayers 屏幕截图保存为 PSD
iPack 解压缩软件,不用压缩 mac 特有的文件
Hammerspoon lua 脚步定制自动化工具
可以自己看找自己需要的软件
收到自己的二手顶配 Mac Pro 了 128G 内存,1T M2 硬盘,双 D7 6G 显卡
处理器查了下 : 英特尔 ® 至强 ® 处理器 E5-2697 v2
疑惑的是内存明明是 1866Mhz 的 32G 内存条,系统要降到 1066Mhz 区使用,网上说是为了散热设置的,回去拆下两个内存条来看下 能不能提升 到 1866Mzh,看文章:DDR3 内存带宽计算 这样读写速度带宽就能提升 ,不过 CPU 中限制了 最大内存带宽59.7 GB/s
测试了拆下 2 个 32G 内存条,标准的 1066mHz,没法升高到 1866 Hz,感觉还是 128 内存安装在上面吧
硬盘感觉也要高了,现在监测的 写 1400M,读 1800M,当时让卖家加的:三星(SAMSUNG)1TB SSD 固态硬盘 M.2 接口(NVMe 协议) 970 EVO Plus(MZ-V7S1T0B) ,R 3500M,W 3300M。感觉也就一半的性能用到了,后面其他机器用到了,可以换下来!
替换: 雷克沙(Lexar)NM610 1TB M.2 NVMe SSD 固态硬盘 PCle3.0 四通道(NM610-1TB) 599 价格
多花了 1 倍的价格
哈哈,讨论了一周,还是看数据性能,感觉 还是 m1 芯片的 mac mini 性能高,比较各种硬件的标准 7 年提审了很多,5 纳米的制造工艺也是很有优势的
一直想学,就一直,一直,一直想,并没学!双十一耗的掘金小册的羊毛,买了本关于Typescript的小册: 深入浅出TypeScript:从基础知识到类型编程 ,想着学起来吧,希望不是资料收集癖犯了!
开始的工作资料看吧,微信出品被各种热捧,没正式发布前就各种小程序的资料了,不过还是要看各种官方资料啊
大神对小程序的理念的解读,能更好的列举小程序的应用场景!
官方教程 简易教程 · 小程序
官方
支持热更新,可以生成二维码到手机上预览,作者的本意是:
因为 WEPT 只是调试 UI 用的,而不是组件库
做 UI 的调试工作
还不成熟吧,支持代码提示,预览功能 vscode-wechat, 希望以后能有更多功能!
对复杂项目的支持 ES7
]]>
git remote set-url git:your-url;
‘git remote show origin’
|
/\.js$/
看到了 webpack resolve 模块了,添加了alias, extensions 感觉编译速度并不明显, 从7s多到5s多的样子,只是基本的模块,并没有添加逻辑代码。可是在loaders 中.js 的解析中添加了 exclude: path.resolve(__dirname, 'node_modules')
之后编译速度进入1s 内982ms
Uncaught ReferenceError: require is not defined
搜索相关的保存信息Uncaught ReferenceError: require is not defined
得到的相关 参考文章: webpack打包react-dom后,浏览器报require is not defined错误?
问题解决,是我将react-dom加入到webpack的noparse 中了,删掉即可!
同样删掉后,并不能解决问题,只好一步步注释回退到原来的状态,检测出错的模块,最后还是检测到是 webpack noParse的问题,不过webpack-dev-server 命令前要先webpack 下打包文件到build目录下,前面一直掉到这个坑里了!
Webpack基础: 7.解析样式文件,还没有实现热更新功能,所以修改less文件需要重新webpack才能看到结果
|
注释掉 webpack 中的resolve 的alias 模块 这样就可以解析react & react-dom 模块 通过react-hot。webpack 编译通过,可以运行npm run dev
,浏览器打开后报错:
|
修改 webpack-dev-server 的port 为3000后解决,端口号要一致。 不过并没有实现热更新功能(编辑器修改,浏览器预览效果)
使用Webpack搭建开发环境工作流 关于自动刷新, 和 HMR 的配置 关于 WEBPACK DEV SERVER 关于webpack-dev-server 的说明挺详细的,提到了关于热更新不起作用的 原因 The following modules couldn’t be hot updated: (They would need a full reload!)
- webpack dev server 中提到了前后端配合的相关配置
- troubleshooting.md 各种配置报错的解决办法!
webpack 中devSever 配置中把,publicPath 去掉就OK,就可以了,
loader 中关于js 的loader配置改成了loaders 后面是数组,如果loader 通过! 链接的话也可以
入门挺不错的!
有点高深的内容,可以完全没读懂啊!
用到了mixin
github-note-taker 中使用了firebase ,直接写代码并没有运行,查看了 firebase官网,已经 ReactFire Guild
最终没有使用 firebase 通过 state 中的notes mock了相应的数据
明天coding 下
作者并没写完,只是给提纲!
|
看了redux 入门,进入公司项目
继续吧!期望这个星期,这个月底能完成 hackathon-blog 项目,现在先把redux熟悉
redux 入门的todo demo 调试完成,next: Middleware
参加活动 : 博客系统实践周末Hackathon
express不是内部或外部命令
最新express4.0版本中将命令工具分家出来了(项目地址:https://github.com/expressjs/generator)所以我们还需要安装一个命令工具,命令如下:
npm install -g express-generator
passport doc 官方文档,先看了几个例子,看完官方文档,豁然开朗了,使用了不同的方法去通过认证
install phantomjs error
当时没遇到这个问题,当时的网络自带翻墙功能,回来再次安装的时候报错,无法安装,参考 ,就可以解决了
两天的 hackathon 活动,感觉到自己的不足,要恶补下自己的基础知识了,首先完成这个blog 的认为
The Little MongoDB Book 中文版 - v1.0 【介绍的很全面,很适合入门!】
在hackathon-blog 活动中 推荐使用的postman 并且@hain 演示推荐了 raw 的方式提交数据,回来自己再弄,可是怎么也体检不成功了!一直怀疑自己 body-parse 模块配置有问题,看了下面的文章才豁然开朗
总结下:
Content-Type: application/x-www-form-urlencoded
Content-Type: multipart/form-data
Content-type
的类型;端午前接口按规划的弄好了,按计划改实现react & redux 登录注册页面了,
【译】展望2016,React.js 最佳实践 (中英对照版)
很概况全面的介绍了下 react 中用到的相关技术
怎样学习 react 系列
redux 通过管理state 树来管理 react 组件熟的更新
上面是关于react 资料的搜集,内容太多,后面参照hackathon-blog 中给出的关于react的资料: React课程学习, 整个资料循序渐进,挺易懂的!关于学习过程中的问题单开一章: React课程学习
]]>影厅座位预览效果(css3) 通过 transform-style: preserve-3d
属性实现:选座后的视角变化! Github
>`<input id="file" type="file" directory mozDirectory webkitDirectory />` [Demo](http://jsbin.com/retoxesoya/1/edit?html,js,output)
>深入理解Node.js:核心思想与源码分析
Nginx 内配置 Google Analytics 指南 【自己的网站可以配置实践下】
文字龙卷风 【很赞的效果】
跨域 cors
gzip 压缩 compression
安全设置 helmet
分布式多进程处理 cluster
生产日志 morgan
https SSL
21 天学会 Emacs 【LearnEmacs系列教材】
涉及很多方面,很值得看看
总共11 个 exercise 想每天做一个呢,结果一下午 complete all。总结:
|
在kick-off-koa基础上,深入的讲解了下, 其中讲到了两张代码模式:
1. Express-style,用法来自于express框架,它能够开启app.get, app.put, app.post, app.delete等功能
2. Middleware-style,此时将 实例化 一个 koa-route 对象,在这个对象中配置路由规则,然后作为一个中间件塞入到app.use方法中。
主要是 [co-ejs](https://github.com/nswbmw/co-ejs) 的各种报错问题,都提交到 [wiki](https://github.com/nswbmw/co-ejs/issues/2) 中,最后通过 项目中的 demo 中的文件找到的 解决方法!看了下 [co-ejs setting](https://github.com/nswbmw/co-ejs#settings), 有点被自己蠢哭了,答案都在这里啊!> root: view root directory. layout: global layout file, default is layout, set false to disable layout. viewExt: view file extension (default html). cache: cache compiled templates (default true). debug: debug flag (default false). locals: global locals, can be function type, this in the function is koa's ctx. filters: ejs custom filters. open: open sequence (default <%). close: close sequence (default %>).
window下安装koa-frouter一直报错,看到 [koa-frouter](https://github.com/nswbmw/koa-frouter) 官网的issus 有这个问题,原因是:`出现这个问题是因为windows的文件命名不能带有通配符*` 所以 @作者修改了该问题发布了 koa-frouter@0.3.3版本修复这个安装时候的问题相关 issuse[npm i koa-frouter --save 报错](https://github.com/nswbmw/koa-frouter/issues/4)话说koa-frouter, co-ejs 都是这个教程的作者写的啊!
koa-scheme 用于输入输出(this.request, this.response) 数据格式的校验,代码编写后要写测试用例,先看后面的
koa-router-cache 匹配路径 请求的cache,业务逻辑层之前的缓存
co-cache 业务逻辑之后,数据层之前,把写经常用的查询数据,缓存起来! 需要用到mongodb ,后面测试
config-lite 配置文件的区分调用plugin
主要用到的npm co-mocha 与 co-supertest
describe // 一直写错了,
参考了 测试框架 Mocha 实例教程 和 初识 mocha in NodeJS
带你入门带你飞Ⅱ 使用Mocha + Chai + SuperTest测试Restful API in node.js
.send(obj) post 的请求的时候,发送请求参数
Anything you can do with superagent, you can do with supertest - for example multipart file uploads!
测试上传图片的请求
request(app)
.post('/')
.field('name', 'my awesome avatar')
.attach('avatar', 'test/fixtures/homeboy.jpg')
...
继续测试
it('post /signup', function *(done) {
yield agent.post('/signup')
.send(param)
.end(function(err, res){
return done(err);
});
});
// 报错信息,感觉是因为 生成器函数中,不能使用 done 参数
Error: timeout of 2000ms exceeded. Ensure the done() callback is being call
ed in this test.
经过前面的铺垫,开始根据第七章构建一个完整的论坛demo
做完7.5 可以开始初步的调试
吃了路径没有写对的亏,一直启动不成功,以后要注意
|
重点错误信息:
TypeError: Undefined type `C` at `0`
Did you try nesting Schemas? You can only nest using refs or arrays.
at Function.Schema.interpretAsType (f:\Users\dev\bbs\node_modules\mongoose\l
ib\schema.js:556:11)
和 at Object.<anonymous> (f:\Users\dev\bbs\models\comment.js:18:18)
定位代码错误的位置
百度 错误 得到的是 Mongoose error: nesting Schemas 没看懂,感觉是mongodb 的使用出问题了,直接去 mongoose 官网issuse
发现错误 module.exports = Schema('Comment', CommontSchema);
写错了,应该是module.exports = mongoose.model('Comment', CommontSchema);
继续昨天的调试
7.1. 基础项目搭建 中default.js
关于 routerCacheConf 的配置是以前旧版本的koa-router-cache的使用方法,运行会报错:
|
新的配置方法请参考 koa-router-cache
然后就可以启动了 简单的node app.js
看到没报错启动成功了,可以直接 http://localhost:3000
页面报错,cli里面不报错,想了半天原因,后面才想去没有index.html 页面,只有signup页面,直接访问 http://localhost:3000/signup
就OK了!
5章节就OK啦!继续下一节了!
7.8 章节点code 了,next code 7.9 章节
昨天调试了几个bug,都是代码单词拼写错误或者分号缺少造成的语法错误,node app.js
已经可以运行,但是首页打不开,今天继续调试!
感觉进步啊,不知道为啥,路由的不起作用,
next:
1. vscode debug 功能学习下2. router/topic/_id 不进入
/index 不响应,后台不报错, 浏览器无响应,不知道从何入手啊!
翻了下 N-club issuse, 感觉是自己没起redis 服务,在 co-cache这个模块用到了redis 中作者明确说 需要同时开启mongoDB和redis的
, 参考 Windows下安装并设置Redis 安装开启redis 服务
在windows上部署使用Redis 设置redis 为系统服务
debug 到 userCard.ejs
中 <% var userInfo = yield $User.getUserByName(name) %>
这行出错了!,再具体的不知道bug 的原因
参考: 【视频教程】使用vscode调试koa2-example
先开始发现mongodb 中存入的密码是明文,然后登陆的时候是 比对的 是md5的值,发现注册的时候,schema中 md5(password) 的值没有赋值给body, 而是赋值给了this,所以body 中的还是明文的密码
然后登陆 post /signin 是报错了!
错误提示
koa-generic-session set error: Cannot read property 'maxAge' of undefined
at MongoStore.set$ (f:\Users\dev\bbs\node_modules\koa-generic-session-mongo\dist\store.js:195:33)
at tryCatch (f:\Users\dev\bbs\node_modules\babel-runtime\regenerator\runtime.js:72:40)
at GeneratorFunctionPrototype.invoke [as _invoke] (f:\Users\dev\bbs\node_modules\babel-runtime\regenerator\runtime.js:334:22)
at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (f:\Users\dev\bbs\node_modules\babel-runtime\regenerator\runtime.js:105:21)
at onFulfilled (f:\Users\dev\bbs\node_modules\co\index.js:65:19)
at f:\Users\dev\bbs\node_modules\co\index.js:54:5
at Object.co (f:\Users\dev\bbs\node_modules\co\index.js:50:10)
at Object.toPromise (f:\Users\dev\bbs\node_modules\co\index.js:118:63)
at next (f:\Users\dev\bbs\node_modules\co\index.js:99:29)
at onFulfilled (f:\Users\dev\bbs\node_modules\co\index.js:69:7)
at f:\Users\dev\bbs\node_modules\co\index.js:54:5
at Object.co (f:\Users\dev\bbs\node_modules\co\index.js:50:10)
at Object.toPromise (f:\Users\dev\bbs\node_modules\co\index.js:118:63)
at next (f:\Users\dev\bbs\node_modules\co\index.js:99:29)
at onFulfilled (f:\Users\dev\bbs\node_modules\co\index.js:69:7)
at f:\Users\dev\bbs\node_modules\co\index.js:54:5
|
** fix ** : koa-frouter 在Windows中的配置问题
routerConf: {
root: './routes',
wildcard: '_'
}
post /signup
时候的 bug暂时解决办法:app.js
|
通过koa-generic-session
中的method beforeSave
直接添加cookie 的相关设置
|
fixed : post/signin 时候的 session 中添加user 属性 topic schema 定义的user 是对象! 代码敲错了!
整个代码可以跑起来了,下面 写 test
npm i mocha co-mocha supertest co-supertest --save-dev
依赖的模块
test/signup.js 测试注册功能!
test/signin.js 登录功能
test/create.js 发帖功能
test/comment.js 回帖功能
部署到coding 演示平台上
>npm 安装,cli 交互模式学习。应该深入学习 [NodeSchool](http://nodeschool.io/zh-cn/) 下各个课程。
基于 koa 开发论坛系统 【进行……】
和我一起实战react 【未完成】
-webkit-touch-callout
当你触摸并按住触摸目标时候,禁止或显示系统默认菜单
-webkit-tap-highlight-color
当用户点击iOS的Safari浏览器中的链接或JavaScript的可点击的元素时,覆盖显示的高亮颜色。
参考下重写下 generator-kmapp, 以前将就这用,今天更新了下就莫名其妙的报错了!感觉是 task : wiredep-include
遍历html文件时候,有的文件没有引人 公用的 bower 文件引人引起的,抽时间解决下!
如何在全职工作同时做一个自由职业者 发现个好网站,一早一晚【未读】
Promise 进阶核心【未读】
一个全局安装的命令行工具
一个包含了基本依赖(Babel + webpack + 基本 loader)和预配置的 webpack
一个配置和依赖都能通过插件扩展的构建工具
Javascript Object.keys()用法 obj.attrs 转换成 array
互联网服务端技术——如何学(下B) 很通俗易懂,说明白了某个技术出现的需求原因!
Chocolatey软件包管理系统 ‘choco install’ 安装软件
有demo 很详尽
Error starting daemon: open /var/run/docker.pid: permission denie
运行任何docker 相关的命令都提示:
FATA[0000] Cannot connect to the Docker daemon. Is 'docker -d' running on this host?
,按提示输入docker -d'后不 提示
Error starting daemon: open /var/run/docker.pid: permission denie`。
** 解决办法 **
boot2docker stop & boot2docker start
重新进入后恢复正常,
docker pull redis:2.8.19
是一直报错:
8c37ff647cf2: Error pulling image (2.8.19) from redis, Untar re-exec error: exit status 1: output: unexpected EOF Error pulling image (2.8.19) from redis, Untar re-exec error: exit status 1: output: unexpected EOF
昨天系统莫名其妙的升级到Windows10 回退到Windows 7 后又各种问题,直接重置了一天系统,今天总算能用了(白白浪费一天时间)
由于重装系统的缘故,docker也升级到了 1.9 直接使用Docker Toolbox, 使用上和boot2docker 是有差别的的,通过docker terminal快捷进入,就可以直接docker images 查看了,操作了
** 疑问 ** docker-machine ssh default
是做什么的?管理主机?
docker 参数 -d
docker run指定的命令如果不是那些一直挂起的命令(比如运行top,不断echo),就是会自动退出的。-d命令是设置detach为true,根据官方的文档,意思是让这个命令在后台运行,但并不是一直运行(我们在一个正常的Linux Terminal中运行/bin/bash,运行完了也就完了,不会一直挂着等待响应的,所以确实没办法用daemon方式来跑/bin/bash)。
docker quick terminal 进入的是MINGW64 所以window 盘符转换 D: -> /d
配置Docker加速器
配置docker toolbox 的--registry-mirror
,速度瞬间上去了
测试chrome 浏览器,和iOS9.3 中可以(微信)【解决了canvas.toBlob()不支持问题】, 代码如下:
|
|
结合第一段代码可以发现,window.atob(b64Data.split(‘,’)[1]), 要去掉url的头,而且代码看起来更健壮!
without jQuery, 很强大的,API很清楚
>Emmet支持的简写规则: E 代表HTML标签。
E#id 代表id属性。
E.class 代表class属性。
E[attr=foo] 代表某一个特定属性。
E{foo} 代表标签包含的内容是foo。
E>N 代表N是E的子元素。
E+N 代表N是E的同级元素。
E^N 代表N是E的上级元素。
测试chrome 浏览器,和iOS9.3 中可以(微信)【解决了canvas.toBlob()不支持问题】, 代码如下:
|
|
结合第一段代码可以发现,window.atob(b64Data.split(‘,’)[1]), 要去掉url的头,而且代码看起来更健壮!
1. _
_
build System _
_
【可以自己构建node 一键运行】
> 在sublime text中依次打开Tools -> Build System -> New Build System...
粘贴以下代码后保存(如Node.sublime-build)
, 然后把Build System设成Automatic
{ "cmd": ["node", "--use-strict", "--harmony", "$file"], "selector": "source.js"}
2. _
_
WakaTime – 记录你的Code时间 _
_
> WakaTime可以做到精确地统计到你花在某个项目上的时间;WakaTime针对不同的IDE,拥有不同的插件,在Sublime上安装着插件,就能统计到我使用Sublime进行的所有项目的行为。可以高效管理和知晓自己code时间 sublime & vsCode 都安装了WakaTime 插件了!3. _
_
定制属于自己的快捷键 _
_
> 设置快捷键。在SublimeText里,打开Preferences -> Key Bindings - User,设置的快捷键。 这样结合1 就可以 快捷运行当前的node 文件了4. _
_
编写自己的Sublime Text2 插件 _
_
【很简单的实例】
Sublime 是迄今为止用的使用的最好用的编辑器了,大部分时间工作时间都在使用,以前了解过其相关的 snipper, hotkey机制,实现了一些自己的定制,现在了解了build System , new Plugin 机制可以更深入的定制了,’一直想写个直接输入当前时间的 plugin’。
_
_
刚发现了编辑Markdown 文件时sublime 中Ctrl + P输入 @ 会出现目录,真是神器啊! _
_
从上面文章中看到了的,感觉对自己很有用,最近拖延症晚期了,改变下,正使用Pomotodo 改正中……
修复了input 父类元素 postion: abusolut or fixed 软键盘弹出覆盖 input 元素的问题通过 transform: translate3D(0,y,0) 整体向上滚动键盘的高度实现主要通过window resize() 事件监听触发的键盘弹起事件,这个事件在iOS 中无法监听,只有通过android 可以监听到,而且iOS下没有问题,所以只处理 Android 的resize 的事件就可以了知乎的相关讨论 [移动web页面,input获取焦点弹出系统虚拟键盘时,挡住input,求解决方案?](https://www.zhihu.com/question/32746176?sort=created)
Sublime Date plugin: F5 输入date+hour; Shift + F5 输入hour
昨天确定的swipe 初始化的时候会崩溃
]]>Yeoman提供了generator-generator方便快速编写自己的生成器。
安装: npm install -g generator-generator
运行: yo generator
|
name属性必须要有generator-前缀;keywords属性必须包含yeoman-generator,务必确保是最新的,可运行命令npm install –save yeoman-generator完成更新/安装
如果文件结构如下,则该生成器暴露yo name和yo name:router两个命令
|
如果你不想把所有代码都放在根目录下,Yeoman提供了另外的一种方式:可以放在generators/目录下
|
结构写好了,需要开始写实际的逻辑代码。Yeoman提供了基础生成器供你继承,这些基础生成器提供了很多方便的方法供你调用。基本写法:
|
如果你的生成器需要name参数(比如yo name:router foo中的foo),想将它赋给this.name的话:
|
上面两种方式都能用于创建app生成器或者子生成器,Base多用于app生成器,NamedBase多用于需要指定文件名的子生成器
有些方法只能在constructor方法中调用,常用于状态控制;可以传入构造函数重写默认的构造函数:
|
一般给原型添加的方法是按顺序执行的,不过后面我们会看到一些特殊的方法会触发不同的执行顺序:
|
到了这一步,你已经拥有一个可以运行的生成器了。下一步就是检验生成器是否按自己的逻辑运行。由于是在本地开发生成器,在全局npm模块中并不存在,需要手动链接。进入generator-name/文件夹,运行:
|
这将自动安装工程依赖包,同时将本地文件链接进全局模块;运行完毕之后,你就可以调用yo name并看到之前定义的console.log信息。
至此,恭喜你完成了简单的生成器!
当运行一个生成器,Yeoman将计算当前的文件目录信息。最为关键的是,Yeoman将.yo-rc.json所在的目录作为工程的根目录,之后Yeoman将当前文件目录跳转到根目录下运行请求的生成器。这个.yo-rc.json文件是由Storage模块创建的,在生成器内部调用this.config.save()方法就会创建它。所以,如果你发现你的生成器不是在你当前工作目录下运行,请确保。yo-rc.json不存在你目录的其他层级中
如果一个函数直接作为生成器的原型(prototype)的属性,则会当做action自动(按顺序)执行。如何声明不会自动执行的辅助函数以及私有函数呢?有三种方法:
|
|
依次执行的方法名称为:
Yeoman默认是跑在终端的,但不限于终端。因此记住,不要使用console.log()或者process.stdout.write()向用户反馈信息,应当使用generator.log方法。
Yeoman中最为主要的UI交互就是提示框,由Inquirer.js组件提供。使用下列方式调用:
|
这里我们使用promoting的优先层级 。由于咨询用户是一个异步的过程,会卡住命令逻辑的运行,所以需要调用yo的异步方法:
var cb = this.async();
当用户运行你的生成器时,很多时候会输入相同的答案;Yeoman扩展了Inquirer.js的API,额外增加了store的属性表示用户可以将之前填写过的答案作为后续的默认答案:
|
提供默认答案时,程序会强制用户输入
可以直接像在命令中传入参数:
|
在这里,my-project作为第一个参数。为了提示系统我们期望用户传入参数,需要调用generator.argument()方法,该方法接受name作为参数,以及额外的限制条件。
该argument方法必须在构造器中调用。这些条件是(key/value型):
|
示例代码:
|
选项看上去像参数,不过它前面多了两短横杠(flags):
|
使用generator.option()方法获取选项值,该方法也有可选的限制属性(key/value型):
|
举例:
|
在运行生成器时,经常会伴随着npm和bower命令去安装依赖文件,Yeoman已经将这些功能抽离出来方便用户使用
使用generator.npmInstall()运行npm安装命令,无论你调用多少次,Yeoman会确保该命令只执行一次
|
上面的代码等价于命令行:
|
使用generator.bowerInstall()运行bower安装命令,无论你调用多少次,Yeoman会确保该命令只执行一次
|
记得在end队列中调用spawnCommand命令,否则用户没有耐心等那么久的。
方便文件流的输入输出,Yeoman使用两种位置环境: destination context 和 template context
destination context 目标位置上下文,这里的“目标”是指你想架构应用的位置。这个位置要么是当前文件夹,要么就是文件.yo-rc.json所在的父文件夹位置;
该.yo-rc.json文件确保所有的终端用户都以同样的方式方法生成器所在的子文件(夹)
使用generator.destinationRoot()
获取目标位置上下文;也可以手动传参重新设置,当然没有人愿意那么做的;用generator.destinationPath('sub/path')
拼接所需要的路径字符串。示例:
|
template context 模板位置上下文 :就是你模板文件所在的文件夹位置,这个文件夹基本上是你读取并拷贝文件的地方。默认的template context是./templates/
,你可以通过generator.sourceRoot('new/template/path')
指定新的模板文件夹位置;与上面类似,可使用generator.sourceRoot()
获取模板位置,使用generator.templatePath('app/index.js')
拼接路径。示例:
|
Yeoman把所有的文件方法都放在this.fs中了,它是mem-fs-editor的一个示例对象,可自行查看API接口。
示例:拷贝模板文件
假如。、templates/index.html文件内容为:
|
我们使用copyTpl方法拷贝模板:(更多参看Lodash template syntax)
|
一旦生成器运行完成,我们就会获得public/index.html
|
Yeoman仍保留了旧的文件API,可参看 API documentation 。旧的文件API总是假设文件来自template context,写文件总是在destination context中,所以它们不要求你传入文件路径信息,程序会自动处理
建议:尽可能使用新的fs
API,它的使用起来比较清晰
常常需要存储用户的设置项并在子生成器中使用,比如用户使用什么编程语言(比如使用CoffeeScript?)等这些配置项都存储在.yo-rc.json中(使用 Yeoman Storage API.),可以通过generator.config
对象获取API方法。
generator.config.save()
保存配置项到文件.yo-rc.json文件中(若文件不存在将自动 创建),由于该文件决定工程的根目录,因而一个最佳实践就是:就算什么也没有也应当调用save方法。
每次设置配置项都会自动调用save方法,因此你可以不用显示调用
generator.config.set(key,val)
|
generator.config.get()
根据键获得配置项
generator.config.getAll()
获取可用的所有配置信息;主要返回值不是按引用返回的,所以要更改里面的配置项还是需要调用set方法。
generator.config.delete()
删除某个键值(及其值)
generator.config.defaults()
将对象作为默认的配置信息,采用不覆盖原则
该文件可存储多个生成器的信息,每个生成器依据名字划分命名空间防止冲突,这也意味着每个生成器的配置项只能被子生成器读取到,不同生成器间的配置信息不能通过 Yeoman Storage API.访问。(使用命令行参数或者选项在不同构造器间传递参数。
文件样本:
|
原文的2个链接失效了,不放上来了
duplicate {Boolean} [可选] [默认值:undefined] 去重, 根据文件名字、文件大小和最后修改时间来生成hash Key.
默认情况下是选取相同文件的时候不会触发 ‘fileQueued’ 事件 只有设置 ‘为非零’ 时候才会触发 ‘fileQueued’ 一直以为要设置为 ‘true’ or ‘false’, 很坑的参数!翻了好久的 issues
_
_
上面解决了无法选取同一文件的问题 _
_
早上在几个前端同事的桌子上翻到的 HTML5高级程序设计 相关的基础知识看第9章补充的。然后搜索下网络知识:
>不同浏览器无法共享localStorage或sessionStorage中的信息。相同浏览器的不同页面间可以共享相同的localStorage(页面属于相同域名和端口),但是不同页面或标签页间无法共享sessionStorage的信息。这里需要注意的是,页面及标签页仅指顶级窗口,如果一个标签页包含多个iframe标签且他们属于同源页面,那么他们之间是可以共享sessionStorage的。
参考 上面的文章 5 对 所有的js 和 css 进行localStorage 缓存,每个缓存文件的链接可以通过v=new Date().getTime() 进行细化的版本控制,需要更新的添加 参数,不需要的不更新
不像localStorage 多数资料给出明确的大小是 5M, 查询的资料中很少提及 application cache 的大小,目前找到的文章中形成了两张说法:
网站的缓存数据量不得超过 5 MB。不过,如果您要编写的是针对 Chrome 网上应用店的应用,可使用 unlimitedStorage 取消该限制
[HTML5]Application Cache使用中需要注意的事项
Safari桌面浏览器(Mac以及 Windows)没有限制
Mobile Safari限制为10MB
Chrome限制为5MB
Android浏览器对应用程序缓存大小没有限制
Firefox桌面版有无限的应用程序缓存大小
Opera的应用程序缓存大小可以由用户管理,但有一个默认大小50MB
各种浏览器的的 数据量的大小是不一样的。查看 html5 [Application cache API 官方的文件](https://www.w3.org/TR/2011/WD-html5-20110405/offline.html#disk-space),也是支持各个浏览器自己定义的 允许的disk space 大小,甚至允许用户管理。
_
_
最终的方案 :通用的application cache disk space 限制在5M _
_
_
_
tip: _
_
chrome://appcache-internals/ 可以查看chorme 中 application cache 的使用大小,亲自证实不止 5M
参考:应用缓存初级使用指南
// Check if a new cache is available on page load.
window.addEventListener('load', function(e) {
window.applicationCache.addEventListener('updateready', function(e) {
if (window.applicationCache.status == window.applicationCache.UPDATEREADY) {
// Browser downloaded a new app cache.
// Swap it in and reload the page to get the new hotness.
window.applicationCache.swapCache();
if (confirm('A new version of this site is available. Load it?')) {
window.location.reload();
}
} else {
// Manifest didn't changed. Nothing new to server.
}
}, false);
}, false);
- 站点离线存储的容量限制是5M
- 如果manifest文件,或者内部列举的某一个文件不能正常下载,整个更新过程将视为失败,浏览器继续全部使用老的缓存
- 引用manifest的html必须与manifest文件同源,在同一个域下
- 在manifest中使用的相对路径,相对参照物为manifest文件
- CACHE MANIFEST字符串应在第一行,且必不可少
- 系统会自动缓存引用清单文件的 HTML 文件
- manifest文件中CACHE则与NETWORK,FALLBACK的位置顺序没有关系,如果是隐式声明需要在最前面
- FALLBACK中的资源必须和manifest文件同源
- 当一个资源被缓存后,该浏览器直接请求这个绝对路径也会访问缓存中的资源。
- 站点中的其他页面即使没有设置manifest属性,请求的资源如果在缓存中也从缓存中访问
- 当manifest文件发生改变时,资源请求本身也会触发更新
- 备用项如果发生命中,则也会被缓存.
- 明示项和备用项优先级高于白名单.
- 白名单使用通配符”_
“. 则会进入白名单的open状态. 这种状态下.所有不在相关Cache区域出现的url都默认使用HTTP相关缓存头策略.
- 白名单使用具体的前缀匹配或更具体的URL,则都属于blocking状态.这种状态下,白名单所匹配的,非Cache区域出现的URL,与open的_
匹配的结果一致,但是不在白名单中,又不在整个manifest的资源,会block.也就是访问,加载不能.
使用的gulp 的项目构建工具,有时间可以试下直接npm 构建。webpack 中可以使用npm 管理js 包依赖管理
微博上的相关讨论: 入口
新年第一天上班,正好看到 hexo 可以借助 github.com 构建自己的静态博客,正好可以折腾下!
(懒癌发作!)都是做开发的不一步步讲解了,直接上参考链接吧:
搜索参考网上的说是端口占用了 把 ip 地址改为常用的 127.0.0.1:4000 就 OK 了
修改方法:直接找到node_modules/ hexo-serve/index.js
|
参考了 hexo-server, 本地服务的 IP ,和 port 可以在启动参数中配置的
还可以直接写到站点的 配置文件中_config.yml
|
喜欢的主题 hexo-theme-next ,使用文档很详细:文档地址 ,不废话了!
喜欢的主题列表
多说 服务停掉了,想法使用 gittalk 或者 gitment
百度统计 ,现在换掉了,改成了 Google analyst
Swiftype 并没使用上
|
上面都是配置问题,本地没有问题的,终究要部署到github.com
上的,那么问题来了
部署上去 无法访问,我是在 git 的根目录下有新建了个 blog 目录,因为原来的 git 下有东西了
怀疑是自己的 git root 下面已经有东西了,在子目录 blog 下影响的,把 git remote 改为新的地址:git@github.com:sumaolin/hexo.git
可是 hexo deploy 还是报错
查官方文档,发现需要插件 hexo-deployer-git 安装后 hexo deploy 报错
|
搜索相关的 git Permission denied
的问题
首先想到的是重新生产公钥和密钥,重新配置 github 账号中的公钥,结果行不通
参考链接 1 中,修改了 IdentityFile 的值,还是没有起作用
通过参考链接 2 中
|
查看使用到的秘钥,可以看到有 id_rsa,可是不起作用,为什么?
|
只有 knowe_hosts
可是我查看的 username/.ssh/ 目录下面有 id_rsa 并且公钥已经加入到 github 中了,百思不得其解啊,突然想到 /.ssh/ 不是 username/.ssh/ 应该是 ssh 单独配置的,通过where ssh
命令查看,当前 ssh 使用的 git 安装的 ssh, 到 git 安装目录 :C:\Program Files (x86)\Git
果然找到了.ssh/
目录,里面有新生产的公钥和密钥,添加到 github 中就可以了
|
hexo 你的博客 推荐
博客的主题也挺喜欢的
关于 webhook 的自动部署 说的很明白
hexo 干货系列:(四)将 hexo 博客同时托管到 github 和 coding
关于 deplay github & coding.net 的写法 ,国内国外区分访问
迁移到 coding.net 后,对与国内的的线路一直无法访问,一直以为修改 DNS 服务商后 没有生效,所以等 48 小时后的今天访问,还是不生效,感觉是自己配置的问题了,由于先参考了在 Coding 上搭建 Hexo 个人博客!, 潜意识的 以为只能通过 coding.net 的 演示功能部署呢,今天找问题时候发现,coding.net 的 pages 功能,还可以免费绑定域名(演示平台需要会员才可以绑定域名),所以新建了个个人博客的项目,改_config.yml 直接部署到该项目,把 cname 解析到 sumaolin.coding.me 而不是 sumaolin.coding.io (演示功能用到的域名),几秒后可以访问了!
其实 hexo 干货系列:(四)将 hexo 博客同时托管到 github 和 coding 提到过 coding.net 两种部署方式的:
部署博客方式有两种,第一种就是 pages 服务的方式,也推荐这种方式,因为可以绑定域名,而第二种演示的方式必须升级会员才能绑定自定义域名。pages 方式也很简单就是在 source/需要创建一个空白文件,至于原因,是因为 coding.net 需要这个文件来作为以静态文件部署的标志。就是说看到这个 Staticfile 就知道按照静态文件来发布。
以后看资料要仔细了,自己的坑自己踩啊!另外 pages 部署的时候不用 创建空白文件 Staticfile 也可以!
本地存储图片,将图片放在 source/images 目录下,然后
text](/img/QQ截图20160403180630.jpg "测试,本地图片")
从上文中找到了 相关的插件 hexo-qiniu-sync, 插件已经更新完善了,所以直接使用该插件了,参考了该插件的文档
因为本域名没有备案,还要设置 dns 等
Sublime Text 2 中怎样查找 scope 的名称
使用过 sublime plugin “MarkdownEditing” 快捷键 mdi, mdl, mdh1 挺方便的,不过不喜欢在预览模式下写,所以通过 sublime-snippet 直接 定义相应的快捷键,操作方法,参考 使用 Sublime-snippet 来快速做前端页面, 遇到的问题是设置 scole 时候一直无法 trigger ,原谅写错了,一直以为是这个 scope 对应的 sublime Syntax 中的一样就可以了,查找了上面的链接,才发现 too yong too simple 了,mardown 对应的 scope 是 text.html.mardown
|
一直报错,全部是从 hexo-qiniu-sync 中复制粘贴过来的,只是把七牛的秘钥文件单独出来了,没有找到原因
继续前天的工作,想到了先把秘钥配置写到 _config.xml 中测试了下是 OK 的,那么就是单独读取秘钥文件的时候不成功,可能的原因:
./sec/qn.json
插件的配置 OK 了,看下插件的使用了,官网的使用方式:
|
文件保存到根目录下的 static/img 目录下,同步成功了
页面上不显示:
urlPrefix
属性设置为自定义的域名每次都贴一次很麻烦啊,直接定义 sublime text snippet: qnimg:
|
这样就完美了 每次 qnimg Tab 下就可以了
发现个美中不足的地方: qiniu 中开启了防盗链白名单功能,所以本地 hexo s 时无法实时预览图片? 期望有解决方法
根据作者的介绍使用 offline:true
配置可以开启 本地调用功能的,并且更新到 V 1.4.5 版本解决了软连的问题
更新的时候 hexo v3.2.2 更新后 没有了 hexo server 选项了,这也没法开启 offline:true 验证了,hexo 官方确认是个 windows 下的 bug
有时间了,再折腾下上次遗留的问题: hexo-qiniu-sync插件配置好后 hexo server 无法启动了
上次冲洗 hexo init 个 blog 是有 hexo server 命令的,所以肯定了这个是插件引起的问题
在配置_config.yml 中去掉了关于 hexo-qiniu-sync 的配置
|
看来是安装了 hexo-qiniu-sync 插件的问题
搜索了下相关问题,找到了条有价值的信息: Hexo 七牛云同步插件的使用
基本的安装、配置在插件主页也有过说明,按照配置即可,这里记录下遇到的坑。注意在_config.yml 中不要配置插件栏如下,否则会报错找不到 hexo server 的命令,可参考问题: https://github.com/gyk001/hexo-qiniu-sync/issues/41
原来官方已经解决了,按照提示注释掉 插件就可以了,再来个测试 OK
发现刚才测试的 考辛斯的图片并没有同步到七牛 ,并且 deploy 后连接还是原来的域名下的
终于完成了这个 hexo-qiniu-sync 插件的调试,可以痛快的使用了
下面在弄个自己的hexo-theme
hexo init
个新项目的话 是有 hexo server
命令并且能够运行的,看来是 hexo-qiniu-sync 插件出问题了。有时间修复下七牛的服务停掉了,算是弃坑七牛了,自动部署时候一直报错!
新开了篇新文章,整理 hexo-theme
]]>持续集成的概念讲的很通透,讲起因,讲落地的困难,到 hexo 的 TravisCI
虽然流量很少,不过也少了互动,不知道来的用户的想法,少了反馈
适用于hexo的评论组件挺多的,如:多说 ,畅言 等依赖服务端的评论服务,也有无服务端依赖的如: Valine ,Gitalk ,Gitment ,Vssue 。
多说
服务停掉了
畅言
- 需要填入备案号且审核通过
- 用户发表评论要绑定手机号
- 有广告
Reference: 为 Hexo 的 Indigo 主题添加畅言评论系统
上面列出几条,有一条都要 pass 掉了
Valine 一款快速、简洁且高效的无后端评论系统
Valine 诞生于2017年8月7日,是一款基于LeanCloud的快速、简洁且高效的无后端评论系统
Gitalk is a modern comment component based on Github Issue and Preact
Reference:Gitment:使用 GitHub Issues 搭建评论系统 ,中文的使用说明
Vssue Vue 驱动的、基于 Issue 的评论插件
- Vssue 支持 Github、Gitlab 和 Bitbucket,并且很容易扩展到其它平台。Gitment 和 Gitalk 仅支持 Github。
- Vssue 可以发表、编辑、删除评论。Gitment 和 Gitalk 仅能发表评论。
- Vssue 是基于 Vue.js 开发的,可以集成到 Vue 项目中,并且提供了一个 Vuepress 插件。 Gitment基于原生JS,而 Gitalk 基于 Preact。
选择了Gittalk,在 hexo-theme-material-indigo 的 wiki 中有gittalk 的 配置,本来是想改主题代码呢,看代码有相关的配置,就修改了 主题下_config.yml
下面的评论配置就可以了,”集成了 disqus、友言、gitment 和 valine,开启其一即可”
使用 hexo-theme-indigo-plus 主题时候,配置了baidu_url_submitter
但是一直报错,今天也解决掉了,是对YML 语法的不了解导致的,其中的数组是用 -
开头的,所以一直报错,得看下 YAML 语言教程 的提高下
还有个不影响运行,但是一直提示的错误:Error: Cannot find module './build/Release/DTraceProviderBindings'
,重新安装了hexo npm install hexo --no-optional
解决了,搜索到的参考:Hexo常见问题解决方案
折腾了好久,感觉blog 也没啥有营养的资料,现在整体想要的功能都有了,主要是评论,后面暂时放弃 PWA 的优化,和主题定制(也没头绪想要定制成什么样子),暂时放一放 hexo 的折腾,专注下blog 内容了
渐进式应用(Progressive Web Apps,PWA)是Google提出的新一代Web应用概念,其目的是提供可靠、快速、接近Native应用的服务方案。
Github page 支持 https,自己还么升级呢,同时 PWA 也算 速度上的优化!
想自己写一套呢,不过现在看中一套 Meterial 风格的theme : hexo-theme-material-indigo 和它的进化版本: hexo-theme-indigo-plus ,试着改写下吧
Hexo 主题制作指南 很详细的 五星推荐
不错的文档,其实是搭建hexo的整个过程,主题风格也喜欢