(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 --savebower貌似無法像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網頁,數據來自服務器
餓了嗎早餐只能預定明天開始的早餐,且周六周日節假日等也不接受預定
晚上開始學習vue2一直到半夜,vue2還是非常好的東西
上面的頁面完全是jquery編寫的,大量操作DOM,我希望能使用vue等組件方式改寫原來的頁面。
把整個vue2的開發環境安裝完畢,并運行簡單demo
參考文檔 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的具體流程。
對源碼進行心得注釋,做成文檔分享
token-handler源碼閱讀難度不大,
authorize-handler難度要大很多。
但是抱著"紅軍不怕遠征難,萬水千山若等閑"之精神,
一定可以克服困難,勇往直前!!
從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(周六):
很久沒去母校看看了,現在變化真的巨大:
小學:
初中:
高中:
還缺個大學,找個時間拍幾張照去 哈哈!
2017/4/2(周日):
上午:
編譯世界三大JavaScript引擎,得到SDK包
這三個引擎的編譯,需要將近2小時。
并且產生的中間文件,超過10個G。
現在的軟件,動不動就是以G來衡量的!!
心得:
1. 微軟的Chakra js引擎編譯最容易,提供vs sln文件,得到的結果干凈利落
2. google v8 js引擎,下載是個很大問題,最方便編譯v8引擎的方式是從nodejs源碼進行編譯
但是只能編譯出靜態鏈接庫,好龐大,8個lib總計1.8G,太可怕了。如何編譯成DLL庫,還是需要研究研究啊!
3. mozila spidermonkey js引擎的編譯,請從gecko-dev項目中進行編譯,這是最簡單明了的方式。如果從mozjs進行編譯,你會發現要解決很多問題!其編譯方式是經典的linux流程.
最后,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斤,健身房效果還不錯,繼續努力!
下午看看是否能搞定服務器認證問題。
不容易啊,注冊facebook賬號,成為開發者。
配置應用數據,碰到問題,查閱資料。
終于成功通過facebook賬號授權登陸本地服務器
之所以用facebook是因為簡單。
如果用微信的話,審批,80端口問題,
localhost調試等等,讓人崩潰。
但是facebook對國人來說用的并不多
并且不那個啥的話,是無法拿到數據的。
因此需要適配到我自己實現的oauth2.0服務器上去
這個還是需要花點時間研究研究!