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

作者: 随风而行之青衫磊落险峰行 | 来源:发表于2017-03-26 18:52 被阅读473次

    (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 (中国标准时间)

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

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

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

    相关文章

      网友评论

      本文标题:开发周记(2017/3/26-2017/4/2)

      本文链接:https://www.haomeiwen.com/subject/znghottx.html