开发周记(2017/3/26-2017/4/2)

(2017年3月26日)

进行技术分享的同时,决定自己做一个基础项目,先进行技术可行性研究。

以每周为单位,如实的记录每天做的事情,遇到的问题以及解题思路。

如果有项目,也可以和我联系哦。

如果有好的合作,也可以找我哦。

简书目前已经成为我记录生活点滴的平台了,就目前markdown体验来说,简书的确是做的最好的。

2017/3/26(周日):

更新nodejs相关全局库到最新版:
  • nodejs
  • typescript
  • typings
  • angularjs-cli
  • loopback-cli
  • node-gyp
  • bower
  • cordova
安装nodejs相关全局库:
  • nodemon
  • vue-cli
初始化一个Typescript项目:
  1. npm init 生成package.json

  2. tsc --init 生成tsconfig.json

  3. bower init 生成bower.json

  4. typescript 2 已经可以不用typings 了,直接用npm install @types/xxx 来安装typescript 版的 node 模块

  5. 例如:ctrl + shift + c在当前路径下打开cmd:
    npm install @types/gl-matrix --save

  6. bower貌似无法像npm一样安装typescript的定义文件?

  7. ctrl + shift + p 输入task runner 选择一个监控编译任务,每次.ts文件ctrl+s后,就会自动生成 .js文件

  8. 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好像

ChakraCore JSRT参考文档

原本想截图演示,发现实在比较麻烦,还是上视频吧!

包括编译和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 有什么区别?

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.png

2. 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++互调的角度来选择引擎:

  1. ms的chakra无文档说明如何进行C++互调。如果微软的chakra能够解决与C++的互调,就完美了!(2017-8-15更新:chakra core和c/c++协调还是蛮方便的)

  2. google的v8和C++互调很方便,但是目前我还没法生成动态链接库。目前的静态库达到1.8G,太可怕了!!

  3. 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服务器上去
这个还是需要花点时间研究研究!

当前时间为:Sun Apr 02 2017 20:15:53 GMT+0800 (中国标准时间)

本周记录结束,很充实的一个礼拜。

想做的事情越来越清晰了。

并且我会继续进行周记,蛮不错的方式。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,198评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,663评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,985评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,673评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,994评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,399评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,717评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,407评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,112评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,371评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,891评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,255评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,881评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,010评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,764评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,412评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,299评论 2 260

推荐阅读更多精彩内容