[TOC]
# https://github.com/blockchainfy
# 前端項目結構
同時筆者也開源了自己的rebirth項目供大家學習。它是一個利用Angular2開發的博客系統前端部分。它涉及到的Angular2知識點非常的全面,包括:組件化,自定義directive,路由,HTTP交互,Template drive form和Reactive form,異步路由,jwt token認證,資源權限控制,動態加載component,jQuery插件集成等常用知識點。
同時rebirth項目也集成了很多前端優秀的技術實踐:
~~~
Angular2 + rxjs
bootstrap-sass
codemirror + markdownit(online markdown文檔編輯器)
webpack2 + DashboardPlugin(代碼打包)
TypeScript2 + @types
stubby(數據mock框架)
tslint + codelyzer(ts代碼和Angular2組件靜態檢查)
angular2-template-loader(Angular2 component的html、css打包)
karma + phantomjs(TDD開發) //推薦 https://github.com/GoogleChrome/puppeteer
sass + postcss(css樣式組織)
typedoc(ts文檔)
fontgen-loader(icon font)
.......
~~~
[構建前端Mock Server的利器/Json-Server](https://www.jianshu.com/p/81373d90f9f0)
[json-server](https://github.com/typicode/json-server)
如果你使用的本地靜態服務并沒有提供代理的功能,那可以使用 阿里的開源工具 [anyproxy](http://anyproxy.io/cn/) ,同樣給力!
想在Mock的時候生成更多的隨機數據,這個時候就需要faker了 可以用來產生大量的模擬假數據,配合 json-server,我來給大家舉個栗
# 2018年計劃
還債
再買一個機械磁盤(怕聲音太大,哎?我可以買個我的筆記本的機械硬盤,不錯,我筆記本的機械聲音小~)。
mac讀寫NTFS軟件。
# 數據庫
# leveldb
LevelDB是一個功能上類 Redis 的 key/value 存儲引擎。Redis是一個基于純內存的存儲系統,而 LevelDB 是基于內存 + SSD的架構,內存存儲最新的修改和熱數據(可理解為緩存),SSD 作為全量數據的持久化存儲,所以 LevelDB 具備比 redis 更高的存儲量,且具備良好的寫入性能,讀性能就略差了,主要原因是由于冷數據需要進行磁盤 IO。Facebook 在 levelDB 的基礎上優化了 RocksDB。
# Redis
REmote DIctionary Server(*Redis*) 是一個由 Salvatore Sanfilippo 寫的key-value存儲系統。
# NoSQL
NoSQL(NoSQL = Not Only SQL ),意即"不僅僅是SQL"。
在現代的計算系統上每天網絡上都會產生龐大的數據量。
這些數據有很大一部分是由關系數據庫管理系統(RDBMS)來處理。 1970年 E.F.Codd's提出的關系模型的論文 "A relational model of data for large shared data banks",這使得數據建模和應用程序編程更加簡單。
## [MongoDB](https://www.mongodb.com/cn)
## MariaDB
https://mariadb.com/resources/books
## PouchDB
* [PouchDB 官網](https://pouchdb.com/)
* [PouchDB API 文檔](https://pouchdb.com/api.html).
* [PouchDB GitHub](https://github.com/pouchdb/pouchdb)
PouchDB是CouchDB的JavaScript實現。 旨在在瀏覽器中良好運行。幫助 web開發人員構建離線和在線同樣有效的應用程序。
默認情況下,PouchDB 附帶用于瀏覽器的 IndexedDB 適配器,用于 Node.js 的 LevelDB 適配器和用于遠程數據庫的CouchDB 適配器。
Apache CouchDB 是面向文檔(document-oriented)的開源 NoSQL 數據庫。 它以 Erlang 語言實現,并使用 JSON 存儲數據,使用JavaScript 作為查詢語言以及使用 API?? 的 HTTP。
它使應用程序能夠在脫機時本地存儲數據,然后在應用程序恢復網絡時將其與 CouchDB 和兼容服務器同步,從而使用戶的數據保持同步,無論用戶下一次在哪里登錄。
~~~
var db = new PouchDB('dbname');
db.put({
_id: 'dave@gmail.com',
name: 'David',
age: 69
});
db.changes().on('change', function() {
console.log('Ch-Ch-Changes');
});
db.replicate.to('http://example.com/mydb');
~~~
[https://docs.couchbase.com/home/index.html](https://docs.couchbase.com/home/index.html)
## CouchDB
Apache CouchDB? lets you access your data where you need it. The Couch Replication Protocol is implemented in a variety of projects and products that span every imaginable computing environment from globally distributed server-clusters, over mobile phones to web browsers.
Store your data safely, on your own servers, or with any leading cloud provider. Your web- and native applications love CouchDB, because it speaks JSON natively and supports binary data for all your data storage needs.
The Couch Replication Protocol lets your data flow seamlessly between server clusters to mobile phones and web browsers, enabling a compelling offline-first user-experience while maintaining high performance and strong reliability. CouchDB comes with a developer-friendly query language, and optionally MapReduce for simple, efficient, and comprehensive data retrieval.
~~~
$ curl -X PUT http://127.0.0.1:5984/my_database/001 -d
'{ Name : Raju , age : 23 , Designation : Designer }'
{ok:true,id:001,rev:1-1c2fae390fa5475d9b809301bbf3f25e}
~~~
* [CouchDB 官網](http://couchdb.apache.org/)
* [CouchDB 文檔](http://docs.couchdb.org/en/stable/).
* [CouchDB GitHub](https://github.com/pouchdb/pouchdb)
## gunDB
A realtime, decentralized, offline-first, mutable graph protocol to sync the web.[https://gun.eco/docs](https://gun.eco/docs)
~~~
COPY<script src=https://cdn.jsdelivr.net/npm/gun/gun.js></script>
<script>
// var Gun = require('gun'); // in NodeJS
// var Gun = require('gun/gun'); // in React
var gun = Gun();
gun.get('mark').put({
name: Mark,
email: mark@gunDB.io,
});
gun.get('mark').on(function(data, key){
console.log(update:, data);
});
</script>
~~~
[gun 官網](https://github.com/amark/gun)
## RxDB
? A realtime Database for JavaScript Applications
~~~
myCollection.insert({
name: 'foo',
lastname: 'bar'
});
const query = myCollection
.find()
.where('age')
.gt(18);
~~~
[RxDB 官網](https://rxdb.info/)
## Meteor
Meteor is a full-stack JavaScript platform for developing modern web and mobile applications. Meteor includes a key set of technologies for building connected-client reactive applications, a build tool, and a curated set of packages from the Node.js and general JavaScript community.
* Meteor allows you to develop in one language, JavaScript, in all environments: application server, web browser, and mobile device.
* Meteor uses data on the wire, meaning the server sends data, not HTML, and the client renders it.
* Meteor embraces the ecosystem, bringing the best parts of the extremely active JavaScript community to you in a careful and considered way.
* Meteor provides full stack reactivity, allowing your UI to seamlessly reflect the true state of the world with minimal development effort.
[Meteor 官網](https://www.meteor.com/)
~~~
import { Mongo } from 'meteor/mongo';
export const Tasks = new Mongo.Collection('tasks');
import { Tasks } from '../api/tasks.js';
db.tasks.insert({ text: Hello world!, createdAt: new Date() });
~~~
## Kinto
Kinto is a minimalist JSON storage service with synchronisation and sharing abilities. It is meant to be easy to use and easy to self-host.
Kinto is used at Mozilla and released under the Apache v2 licence.
~~~
http GET https://kinto.dev.mozaws.net/v1/buckets/default/collections/tasks/records \
-v --auth 'bob:s3cr3t'
~~~
[Kinto 文檔](https://kinto.readthedocs.io/en/stable/tutorials/first-steps.html)
[Kinto 官網](http://hood.ie/)
## Hoodie
Hoodie is a free and Open Source Software for building applications for the web and iOS. It is a complete backend for your apps, ready for you to get creative. It works immediately out-of-the-box: develop your frontend code, plug it into Hoodie’s frontend-friendly API and your app is ready.
When you develop it, your app runs locally first, you can then deploy and host it wherever you want to. And if you want to extend Hoodie’s core features, you can check our list of currently available plugins or build plugins yourself.
Hoodie is a noBackend technology — it\\'s there for making the lives of frontend developers easier by abstracting away the backend and keeping you from worrying about backends. It gives you Dreamcode: a simple, easy-to-learn-and-implement frontend API built into it. Hoodie is also Offline First, which means that your app users’ data is stored locally by default so your Hoodie-based apps are accessible and usable anytime, independent from your users’ internet connection.
~~~
hoodie.store.add({
type: 'todo-item',
content: 'Try out hoodie!',
done: false
})
~~~
## [RethinkDB](https://www.rethinkdb.com/)
the open-source database for the realtime web
## [lowdb](https://github.com/typicode/lowdb)
## PostgreSQL
https://www.postgresql.org/
[PostgreSQL即學即用之json操作](https://www.jianshu.com/p/ee8e76f170f4)
# WebGL
https://github.com/greggman/webgl-fundamentals
# [WebAssembly](http://webassembly.org/)
今年對web性能的最大改進是引入了WebAssembly。現在可以在Firefox和Chrome中運行,并且很快就會引入到Edge和WebKit中。
webassmbly允許在瀏覽器中以`assembly-like`級別執行代碼
> [HTML5 Canvas,WebGL,CSS Shaders,GLSL的曖昧關系](http://www.zhangxinxu.com/wordpress/2011/10/html5-canvas-webgl-css-shaders-glsl%E7%9A%84%E6%9A%A7%E6%98%A7%E5%85%B3%E7%B3%BB/)
# Chrome 插件
個人使用 擴展,書簽,markdown編輯支持等
# 其他
代碼里出現了該模式的行就會被辨識為 todo 行:

~~~
1. // TODO 需要處理的任務
2. // FIXME 表示優先級別比較高,需要處理的缺陷問題的任務
3. // XXX 表示雖然任務已經完成但是還需要優化處理的任務
4. // DONE 表示這個任務已經處理完了,其實可以刪除這個標簽了
~~~
其實在一些支持自定義關鍵字的todo功能中:
~~~
1. // Refactor
2. // NOTE
~~~
## 前端實戰
Node.js 8.x 核心API
Express 5.x 框架實戰
socket.io 實戰
Mongoose 實戰 GIT/ GITHUB 實戰
Gulp 實戰
Webpack 實戰
Jasmine+karma 實戰
PhoneGap 實戰
React-native 實戰
微信小程序開發實戰
Electron 桌面程序開發實戰
Laravel
# Python 與 Go
Django
PEP 8編程習慣
https://www.python.org/dev/peps/pep-0008/
urllib2
socket
requests
Scrapy
thread/threading
multiprocessing
gevent
pip
https://pypi.python.org/pypi
https://tour.go-zh.org/list
# Lisp
[Structure and Interpretation of Computer Programs](http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/)
[Common lisp 學習筆記](http://blog.chinaunix.net/uid-9068675-id-2968173.html)
http://racket-lang.org/
http://acl.readthedocs.io/en/latest/zhCN/
# Nim
[https://nim-lang-cn.org/](https://nim-lang-cn.org/)
# [Kotlin](http://kotlinlang.org/)
Kotlin 是一個基于 JVM 的新的編程語言,由 JetBrains 開發。Kotlin可以編譯成Java字節碼,也可以編譯成JavaScript,方便在沒有JVM的設備上運行。
# 學習
全美經典學習指導系列
- 序
- 開發自己的博客
- 面試集合
- 基礎
- 1、JavaScript
- js技巧
- 2、CSS
- position之absolute
- em與rem
- inline-block
- background
- 圓角、透明度、漸變
- 關于css中的0和none
- css display:none小結
- z-index小結
- 理解滾動條
- 有關@font-face的問題
- 3、HTML
- URI中依賴協議的URL
- 4、MySQL
- limit使用
- 5、jQuery
- 6、移動Web開發
- 設計稿與分辨率
- 字體
- 圖片的自適應
- 7、前端布局bug問題(!<=IE8)
- SEO與頁面結構
- seo
- vsphere 虛擬服務器
- 代碼里的彩蛋(神注釋)
- 玩轉HTML5移動頁面
- 知識梳理
- JS 鍵盤碼
- 其他資源記錄
- temp
- TODO
- 簡單有趣的庫??
- xx