(2017年3月26日)
进行技术分享的同时,决定自己做一个基础项目,先进行技术可行性研究。
以每周为单位,如实的记录每天做的事情,遇到的问题以及解题思路。
如果有项目,也可以和我联系哦。
如果有好的合作,也可以找我哦。
简书目前已经成为我记录生活点滴的平台了,就目前markdown体验来说,简书的确是做的最好的。
2017/3/26(周日):
更新nodejs相关全局库到最新版:
- nodejs
- typescript
- typings
- angularjs-cli
- loopback-cli
- node-gyp
- bower
- cordova
安装nodejs相关全局库:
- nodemon
- vue-cli
初始化一个Typescript项目:
-
npm init 生成package.json
-
tsc --init 生成tsconfig.json
-
bower init 生成bower.json
-
typescript 2 已经可以不用typings 了,直接用npm install @types/xxx 来安装typescript 版的 node 模块
-
例如:ctrl + shift + c在当前路径下打开cmd:
npm install @types/gl-matrix --save -
bower貌似无法像npm一样安装typescript的定义文件?
-
ctrl + shift + p 输入task runner 选择一个监控编译任务,每次.ts文件ctrl+s后,就会自动生成 .js文件
-
vscode貌似无法实现这种需求:按ctrl+shift+b时,根据当前的文件后缀,调用不同的command,例如当前文件为.html,则调用chrome,如果当前为.ts,就调用tsc。我不确定是否能实现上述需求?
计划做个仿饿了吗早餐预定的前后端Demo
以前做个一个页面,修正一下
用来作为nodejs rest 服务器开发和客户端开发教程的例子
计划本开发周完成这个Demo
具体内容,会逐步求精,提炼出来
(2017/3/29注:目前看来希望不大,先搞定服务端吧)
终于备份完另外一台笔记本的数据,recovery后,
开始下载宇宙无敌的伟大的vs2017社区版
2017/3/27(周一)
很遗憾,vs2017没有完全下载下来,半夜断网了!!
今天的计划:
一直想了解一下JS引擎方面的东西,想做个项目:
前端使用JS
后端使用C++
因此先考察一下各个JS引擎与C++的互相调用流程
然后下午整理nodejs loopback库以及仿饿了吗订餐页面的数据
因为以前用过一些spidermonkey,因此先从spidermonkey起
上午:
开始编译mozila spidermonkey javascript引擎
mozila spidermonkey 的编译还是有点技巧的,具体的编译我会拍一段5分钟左右的视频。
测试运行编译后的js引擎,研究spidermonkey的用法
突然发现微软的ChakraCore JS引擎,感觉真是好棒的东西啊。
编译方便,微软的项目都提供VS解决方案,编译无警告。
编译后尺寸还是蛮小的,才5m大小。
这两天每天抽点时间来研究一下这个JS引擎的用法以及
与C++的相互调用。记录下研究结果,形成分享教程。
我蛮喜欢微软技术的,并且现在的微软越来越开放了,
JS现在以及未来肯定会占主导地位。
下午:
研究ChakraCore的文档以及写几个测试Demo,发现的确是干净利落啊!应该是值得研究的好东西!!
接孩子,监督功课,这段时间也是我的主要工作之一
构造looback开发环境,npm相关开发包,为服务器开发做准备
调试html网页,数据来自服务器
QQ图片20170327202825.png
饿了吗早餐只能预定明天开始的早餐,且周六周日节假日等也不接受预定
晚上开始学习vue2一直到半夜,vue2还是非常好的东西
上面的页面完全是jquery编写的,大量操作DOM,我希望能使用vue等组件方式改写原来的页面。
把整个vue2的开发环境安装完毕,并运行简单demo
QQ图片20170328093247.png参考文档 Vue2.0 新手完全填坑攻略——从环境搭建到发布
2017/3/28(周二):
- google v8引擎的编译,把目前三大引擎编译后,了解一下各自的用法以及与C++的互调。
- loopback服务端user登陆系统实现
- 仿饿了吗页面jquery版的修正
上午:
编译V8 javascript引擎
原本想编译v8,通过那个啥,下载速度还是比较慢的。不通过那个啥,则无法下载数据!
还是放到晚上下载吧,睡一觉,应该都能下好。
研究ChakraCore的使用。
微软的库的特点就是封装的好,简单明了,方便使用。
整个ChakraCore的调用可以使用C风格的JSRT(JavaScript Runtime),也没多少个API,和spidermonkey的API好像
原本想截图演示,发现实在比较麻烦,还是上视频吧!
包括编译和SDK包
发现Chakra运行JS还是很流畅,但是如何和C++交互,
JSRT貌似没有相关API.
stackoverflow提问,欢迎大家回答
how to call C++ function or method via ms chakracore JavaScript engine?
关于视频制作,我正准备一台格式化后的电脑
发现视频是很好东西,把你所学到的记录下来
慢慢的,只要坚持,就会越来越多
安装所有的要用到的软件以及SDK包,好庞大的工程啊
今天早上将VS2017安装好,还没来得及试用呢!!
下午:
oauth2.0授权对于刚进行微信服务器开发的人来说具有很大的难度。
由于我现在没有微信公众号的开发环境,
因此决定自己实现一个oauth2.0服务器。
用于演示loopback-component-passport的强大功能。
通过google后,发现node-oauth2-server这个库很不错,git小星星蛮多的,而且使用起来蛮简单的。
研究node-oauth2-server的用法
晚上:
调试restful api比较好的工具是postman chrome插件,
可以从google应用商店下载
使用postman测试oauth2服务器
2017/3/29(周三):
上午:
昨天的postman请求,只是了解了user和client的创建,
但是授权,token等不知道如何使用,
具体参数是什么,也不清楚。
node-oauth2-server的文档很缺乏,
决定花点时间研究一下源码,看看如何使用。‘
有些库还是值得花时间研究的。
完成node-oauth2-server的token-handler的源码阅读和注释,
感觉受益非浅啊。
可以学习到bluebird/promisify-any这些优秀的库的用法。
还有就是深入的了解oatuh2.0的具体流程。
对源码进行心得注释,做成文档分享
QQ图片20170329105537.png
token-handler源码阅读难度不大,
authorize-handler难度要大很多。
但是抱着"红军不怕远征难,万水千山若等闲"之精神,
一定可以克服困难,勇往直前!!
QQ图片20170329111719.png
QQ图片20170329111831.png
从7:30 -- 11:30,一直研究和注释源码,吃饭时间到了,吃饭,休息,然后运动,下午继续作战。今天的计划是将这个库的源码注释出来,并且掌握使用。
下午:
完成authorize-handler.js的注释,
包括相关联的其他辅助类以及流程
这个是很关键核心的类,代码量还是有点大
/*根据源码进行authorize的request参数总结:*/
{
allowed : boolean,
client_id : string,
client_secret : string
redirect_uri : string, //如果client有该参数,允许request中不设置
scope : string,
state : string, //allowEmptyState 为true,允许request中不设置
response_type : string, //具体值:"code" / "token"
grant_type : string, //具体值:"authorization_code"
code : string
}
/*根据源码进行Authenticate的request参数:*/
{
access_token : string,
}
/*根据源码进行token的request参数总结:*/
{
client_id : string,
client_secret : string,
grant_type : string
}
从应用的角度,上述参数足够了,花这么多时间得到的关键应用数据
但是在无文档的情况下,不从源码了解,不花这点时间,也无法使用,所以相辅相成啊
2017/4/2备注:上面的描述可能不正确,在解决验证问题后,我会重新核实,形成正确的版本
**
现在是下午17:15分,我碰到一个问题
原来oauth2.0仅仅是授权服务器
还需要做登陆认证,貌似需要使用openid方式
研究研究,到底是怎么回事,认证和授权还是蛮难的,有点搞晕了。
**
OpenID关注的是证明,即:“用户是谁”
OAuth关注的是授权, 即:“用户能做什么”
晚上:
餐后一小时,去健身房慢跑/快走3km。
每天午餐/晚餐后慢跑/快走3km,一天6公里
坚持了4个多月了,体重从80公斤减到65公斤
效果倍好,现在已经成为一种习惯了!
2017/3/30(周四):
现在是上午7.48分,出发去浙江老家。全程2小时左右
多年没回去了,走走亲戚会会朋友,不亦乐乎。
和多年不见的朋友一起,还是蛮开心的
2017/3/31(周五):
今天去祭祖并且处理一些老宅相关事宜
2017/4/1(周六):
很久没去母校看看了,现在变化真的巨大:
小学:
小学1.jpg 小学2.jpg 小学3.jpg初中:
初中1.jpg 初中2.jpg 初中3.jpg高中:
高中1.jpg 高中2.jpg 高中3.jpg还缺个大学,找个时间拍几张照去 哈哈!
2017/4/2(周日):
上午:
编译世界三大JavaScript引擎,得到SDK包
这三个引擎的编译,需要将近2小时。
并且产生的中间文件,超过10个G。
现在的软件,动不动就是以G来衡量的!!
心得:
1. 微软的Chakra js引擎编译最容易,提供vs sln文件,得到的结果干净利落
ms_chakra_js_engine_sdk.png2. google v8 js引擎,下载是个很大问题,最方便编译v8引擎的方式是从nodejs源码进行编译
google_v8_js_engine_sdk.png但是只能编译出静态链接库,好庞大,8个lib总计1.8G,太可怕了。如何编译成DLL库,还是需要研究研究啊!
3. mozila spidermonkey js引擎的编译,请从gecko-dev项目中进行编译,这是最简单明了的方式。如果从mozjs进行编译,你会发现要解决很多问题!其编译方式是经典的linux流程.
mozila_spidermonkey_js_engine_sdk.png最后,js和c++互调的角度来选择引擎:
-
ms的chakra无文档说明如何进行C++互调。如果微软的chakra能够解决与C++的互调,就完美了!(2017-8-15更新:chakra core和c/c++协调还是蛮方便的)
-
google的v8和C++互调很方便,但是目前我还没法生成动态链接库。目前的静态库达到1.8G,太可怕了!!
-
mozila的spidermonkey目前来说,是我最佳的选择。其库大小小于10兆,并且js/c++互调非常方便。而且基于runtime/context架构,很容易运行多个context并行编译运行。
下午:
午餐后,出去锻炼一下。目前减肥中。
午餐后3公里。晚餐后3-4公里。
效果还是蛮不错的,坚持将近5个月了。体重从160斤下降到132斤,健身房效果还不错,继续努力!
下午看看是否能搞定服务器认证问题。
fb_oauth2授权.jpg
通过fb账号登陆local服务器.jpg
不容易啊,注册facebook账号,成为开发者。
配置应用数据,碰到问题,查阅资料。
终于成功通过facebook账号授权登陆本地服务器
之所以用facebook是因为简单。
如果用微信的话,审批,80端口问题,
localhost调试等等,让人崩溃。
但是facebook对国人来说用的并不多
并且不那个啥的话,是无法拿到数据的。
因此需要适配到我自己实现的oauth2.0服务器上去
这个还是需要花点时间研究研究!
网友评论