├── gh-craft ├── src │ ├── page │ │ └── index.js │ ├── shared │ │ └── consts.js │ ├── github │ │ ├── graphql │ │ │ └── .gitkeep │ │ └── restful │ │ │ └── github.js │ ├── service │ │ └── worker │ │ │ └── worker.js │ └── craft │ │ ├── index.js │ │ ├── plugin │ │ ├── ControlPanel.js │ │ ├── DialogWebView.js │ │ └── Snapshot.js │ │ ├── texture │ │ ├── TextTexure.js │ │ └── hijackTexture.js │ │ ├── scene │ │ ├── GHScene.js │ │ └── BasicScene.js │ │ └── utils │ │ └── cube.js ├── .eslintignore ├── .gitignore ├── docs │ └── 使用与特性.md ├── service-worker.js ├── textures │ ├── 下.png │ ├── 月.png │ ├── 熊.png │ ├── 王.png │ ├── 邀.png │ ├── brick.png │ ├── fire.png │ ├── grass.png │ ├── player.png │ ├── skin.png │ ├── awesome-coder.png │ ├── awesome-links.png │ └── awesome-cheatsheet.png ├── app.webmanifest ├── index.js ├── .eslintrc ├── package.json ├── index.html ├── index.old.js └── main.js ├── homepage ├── .vscode │ ├── last.sql │ ├── temp.sql │ └── settings.json ├── src │ ├── search_index.tsx │ ├── libs │ │ └── react-gh-card │ │ │ ├── GHRepoCard.tsx │ │ │ ├── GHUserCard.tsx │ │ │ └── GHUserCard.scss │ ├── types │ │ ├── react-parallax.d.ts │ │ └── react-particles-js.d.ts │ ├── index.scss │ ├── components │ │ ├── home │ │ │ ├── lab │ │ │ │ ├── Lab.scss │ │ │ │ └── Lab.tsx │ │ │ ├── Home.scss │ │ │ ├── repos │ │ │ │ ├── Showcase.tsx │ │ │ │ ├── AI.tsx │ │ │ │ ├── SSA.tsx │ │ │ │ ├── Web.tsx │ │ │ │ ├── Infrastructure.tsx │ │ │ │ ├── KnowledgeManagement.tsx │ │ │ │ └── SoftwareEngineering.tsx │ │ │ ├── Home.tsx │ │ │ ├── perspective │ │ │ │ ├── Perspective.scss │ │ │ │ └── Perspective.tsx │ │ │ └── banner │ │ │ │ └── Banner.tsx │ │ ├── common │ │ │ ├── card │ │ │ │ ├── PerspectiveCard.scss │ │ │ │ └── PerspectiveCard.tsx │ │ │ ├── decorator │ │ │ │ └── HDivider.tsx │ │ │ └── Loading │ │ │ │ └── index.tsx │ │ ├── footer │ │ │ ├── IFooter.scss │ │ │ └── IFooter.tsx │ │ ├── retrieval │ │ │ ├── DocHit.tsx │ │ │ ├── LinkHit.tsx │ │ │ ├── Retrieval.scss │ │ │ └── Retrieval.tsx │ │ └── nav │ │ │ ├── Nav.scss │ │ │ └── Nav.tsx │ ├── services │ │ ├── utils.ts │ │ ├── create-worker.ts │ │ └── ts-worker.ts │ ├── stores │ │ └── index.ts │ ├── api │ │ └── nasa.ts │ ├── models │ │ └── IndexItem.ts │ ├── application │ │ ├── App.scss │ │ └── App.tsx │ ├── assets │ │ └── svgs │ │ │ ├── 文档.svg │ │ │ ├── 链接.svg │ │ │ ├── Web.svg │ │ │ ├── 集群.svg │ │ │ ├── 清单.svg │ │ │ └── 安全.svg │ └── index.tsx ├── .prettierignore ├── dev-config │ ├── mock │ │ ├── styleMock.js │ │ ├── fileMock.js │ │ └── db.json │ ├── webpack.config.dll.js │ ├── lib │ │ └── template.js │ └── webpack.config.dev.js ├── index.d.ts ├── public │ ├── favicon.ico │ ├── github-icon.png │ ├── manifest.json │ ├── index.html │ ├── search.html │ └── km.html ├── tsconfig.test.json ├── postcss.config.js ├── .editorconfig ├── .gitignore ├── preprocessor.js ├── jsconfig.json ├── README.md ├── LICENSE ├── tsconfig.json ├── tslint.json └── package.json ├── glossary-cards ├── .vscode │ └── temp.sql ├── src │ ├── asset │ │ └── mindmap.json │ ├── index.js │ └── index.css ├── .gitignore ├── package.json └── index.html ├── hexo ├── scaffolds │ ├── draft.md │ ├── page.md │ └── post.md ├── .gitignore ├── source │ ├── tags │ │ └── index.md │ ├── categories │ │ └── index.md │ └── _posts │ │ ├── DataScienceAI │ │ └── DataScienceAI-Reference.md │ │ └── Coder │ │ └── KnowledgeManagement │ │ └── Graph │ │ └── 2016-Knowledge-Graph.md ├── package.json ├── scripts │ ├── dir2categories.js │ └── crc32.js └── _config.yml ├── oreilly-generator ├── getstart.png ├── public │ ├── home_files │ │ ├── 04.png │ │ ├── camera.png │ │ ├── app.js │ │ ├── ngStorage.min.js │ │ └── dragbox.directive.js │ ├── src │ │ ├── css │ │ │ ├── images │ │ │ │ ├── logo.png │ │ │ │ ├── logo2.png │ │ │ │ ├── og │ │ │ │ │ ├── 01.png │ │ │ │ │ ├── 02.png │ │ │ │ │ ├── 03.png │ │ │ │ │ ├── 04.png │ │ │ │ │ ├── 05.png │ │ │ │ │ ├── 06.png │ │ │ │ │ ├── 07.png │ │ │ │ │ ├── 08.png │ │ │ │ │ ├── 09.png │ │ │ │ │ ├── 10.png │ │ │ │ │ ├── 11.png │ │ │ │ │ ├── 12.png │ │ │ │ │ ├── 13.png │ │ │ │ │ ├── 14.png │ │ │ │ │ ├── 15.png │ │ │ │ │ ├── 16.png │ │ │ │ │ ├── 17.png │ │ │ │ │ ├── 18.png │ │ │ │ │ ├── 19.png │ │ │ │ │ ├── 20.png │ │ │ │ │ ├── 21.png │ │ │ │ │ ├── 22.png │ │ │ │ │ ├── 23.png │ │ │ │ │ ├── 24.png │ │ │ │ │ ├── 25.png │ │ │ │ │ ├── 26.png │ │ │ │ │ ├── 27.png │ │ │ │ │ ├── 28.png │ │ │ │ │ ├── 29.png │ │ │ │ │ ├── 30.png │ │ │ │ │ ├── 31.png │ │ │ │ │ ├── 32.png │ │ │ │ │ ├── 33.png │ │ │ │ │ ├── 34.png │ │ │ │ │ ├── 35.png │ │ │ │ │ ├── 36.png │ │ │ │ │ ├── 37.png │ │ │ │ │ ├── 38.png │ │ │ │ │ ├── 39.png │ │ │ │ │ ├── 40.png │ │ │ │ │ ├── 30.png.1 │ │ │ │ │ ├── camera.png │ │ │ │ │ └── animal_sprites_1.png │ │ │ │ ├── logo-nav.png │ │ │ │ ├── AngularJS-large.png │ │ │ │ ├── AngularJS-small.png │ │ │ │ └── logo-code-school-ps.svg │ │ │ ├── fonts │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ └── glyphicons-halflings-regular.woff │ │ │ └── sass │ │ │ │ ├── main.scss │ │ │ │ ├── pages │ │ │ │ └── _login.scss │ │ │ │ ├── base │ │ │ │ └── _base.scss │ │ │ │ └── layout │ │ │ │ └── _header.scss │ │ └── js │ │ │ ├── app.js │ │ │ ├── filters.js │ │ │ ├── model │ │ │ ├── logger.js │ │ │ └── model.js │ │ │ ├── component │ │ │ ├── demo │ │ │ │ ├── demo14_tpl.html │ │ │ │ └── demo14.directive.js │ │ │ └── common │ │ │ │ └── directives.js │ │ │ ├── config.js │ │ │ ├── directive │ │ │ └── dragbox.directive.js │ │ │ └── controller │ │ │ └── login.controllers.js │ └── home.html ├── README.md └── .gitignore ├── .github └── ISSUE_TEMPLATE │ ├── custom.md │ ├── feature_request.md │ └── bug_report.md ├── LICENSE ├── ABOUT.md └── README.md /gh-craft/src/page/index.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /homepage/.vscode/last.sql: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /homepage/.vscode/temp.sql: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gh-craft/src/shared/consts.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /glossary-cards/.vscode/temp.sql: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /homepage/src/search_index.tsx: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gh-craft/src/github/graphql/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /homepage/.prettierignore: -------------------------------------------------------------------------------- 1 | *.ejs 2 | -------------------------------------------------------------------------------- /glossary-cards/src/asset/mindmap.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /homepage/src/libs/react-gh-card/GHRepoCard.tsx: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gh-craft/.eslintignore: -------------------------------------------------------------------------------- 1 | build/ 2 | *.ejs 3 | *worker.js -------------------------------------------------------------------------------- /gh-craft/.gitignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | .cache/ 3 | node_modules/ -------------------------------------------------------------------------------- /glossary-cards/.gitignore: -------------------------------------------------------------------------------- 1 | .cache 2 | node_modules 3 | dist -------------------------------------------------------------------------------- /homepage/dev-config/mock/styleMock.js: -------------------------------------------------------------------------------- 1 | module.exports = {}; 2 | -------------------------------------------------------------------------------- /homepage/index.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'react-instantsearch-dom'; 2 | -------------------------------------------------------------------------------- /gh-craft/docs/使用与特性.md: -------------------------------------------------------------------------------- 1 | # gh-craft, 方块世界的 Github 简历 2 | 3 | # PWA 4 | -------------------------------------------------------------------------------- /hexo/scaffolds/draft.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: {{ title }} 3 | tags: 4 | --- 5 | -------------------------------------------------------------------------------- /gh-craft/service-worker.js: -------------------------------------------------------------------------------- 1 | self.addEventListener('message', () => {}); 2 | -------------------------------------------------------------------------------- /homepage/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "git.ignoreLimitWarning": true 3 | } -------------------------------------------------------------------------------- /homepage/dev-config/mock/fileMock.js: -------------------------------------------------------------------------------- 1 | module.exports = 'test-file-stub'; 2 | -------------------------------------------------------------------------------- /homepage/src/types/react-parallax.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'react-parallax'; 2 | -------------------------------------------------------------------------------- /hexo/scaffolds/page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: {{ title }} 3 | date: {{ date }} 4 | --- 5 | -------------------------------------------------------------------------------- /homepage/src/types/react-particles-js.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'react-particles-js'; 2 | -------------------------------------------------------------------------------- /gh-craft/src/service/worker/worker.js: -------------------------------------------------------------------------------- 1 | self.addEventListener('message', () => {}); 2 | -------------------------------------------------------------------------------- /gh-craft/src/craft/index.js: -------------------------------------------------------------------------------- 1 | export function render() { 2 | // Render the page 3 | } 4 | -------------------------------------------------------------------------------- /hexo/scaffolds/post.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: {{ title }} 3 | date: {{ date }} 4 | tags: 5 | --- 6 | -------------------------------------------------------------------------------- /glossary-cards/src/index.js: -------------------------------------------------------------------------------- 1 | import { init, animate } from './render'; 2 | init(); 3 | animate(); 4 | -------------------------------------------------------------------------------- /hexo/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | Thumbs.db 3 | db.json 4 | *.log 5 | node_modules/ 6 | public/ 7 | .deploy*/ -------------------------------------------------------------------------------- /homepage/src/index.scss: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | padding: 0; 4 | font-family: sans-serif; 5 | } 6 | -------------------------------------------------------------------------------- /gh-craft/textures/下.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/gh-craft/textures/下.png -------------------------------------------------------------------------------- /gh-craft/textures/月.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/gh-craft/textures/月.png -------------------------------------------------------------------------------- /gh-craft/textures/熊.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/gh-craft/textures/熊.png -------------------------------------------------------------------------------- /gh-craft/textures/王.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/gh-craft/textures/王.png -------------------------------------------------------------------------------- /gh-craft/textures/邀.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/gh-craft/textures/邀.png -------------------------------------------------------------------------------- /gh-craft/app.webmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "manifest_version": 2, 3 | "name": "gh-craft", 4 | "version": "0.0.1" 5 | } 6 | -------------------------------------------------------------------------------- /gh-craft/textures/brick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/gh-craft/textures/brick.png -------------------------------------------------------------------------------- /gh-craft/textures/fire.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/gh-craft/textures/fire.png -------------------------------------------------------------------------------- /gh-craft/textures/grass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/gh-craft/textures/grass.png -------------------------------------------------------------------------------- /gh-craft/textures/player.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/gh-craft/textures/player.png -------------------------------------------------------------------------------- /gh-craft/textures/skin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/gh-craft/textures/skin.png -------------------------------------------------------------------------------- /homepage/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/homepage/public/favicon.ico -------------------------------------------------------------------------------- /homepage/src/components/home/lab/Lab.scss: -------------------------------------------------------------------------------- 1 | .lab { 2 | min-height: 400px; 3 | background-color: rgb(35, 39, 65); 4 | } 5 | -------------------------------------------------------------------------------- /oreilly-generator/getstart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/getstart.png -------------------------------------------------------------------------------- /homepage/public/github-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/homepage/public/github-icon.png -------------------------------------------------------------------------------- /homepage/src/services/utils.ts: -------------------------------------------------------------------------------- 1 | /** 通用辅助函数 */ 2 | export function sum(a: number, b: number): number { 3 | return a + b; 4 | } 5 | -------------------------------------------------------------------------------- /gh-craft/textures/awesome-coder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/gh-craft/textures/awesome-coder.png -------------------------------------------------------------------------------- /gh-craft/textures/awesome-links.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/gh-craft/textures/awesome-links.png -------------------------------------------------------------------------------- /homepage/src/stores/index.ts: -------------------------------------------------------------------------------- 1 | import { RouterStore } from 'mobx-react-router'; 2 | 3 | export const routerStore = new RouterStore(); 4 | -------------------------------------------------------------------------------- /homepage/tsconfig.test.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "module": "commonjs" 5 | } 6 | } -------------------------------------------------------------------------------- /gh-craft/textures/awesome-cheatsheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/gh-craft/textures/awesome-cheatsheet.png -------------------------------------------------------------------------------- /gh-craft/index.js: -------------------------------------------------------------------------------- 1 | navigator.serviceWorker.register('./service-worker.js', { scope: './' }); 2 | 3 | new Worker('./src/service/worker/worker.js'); 4 | -------------------------------------------------------------------------------- /oreilly-generator/public/home_files/04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/home_files/04.png -------------------------------------------------------------------------------- /hexo/source/tags/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: tags 3 | type: tags 4 | categories: [] 5 | tags: [] 6 | abbrlink: 6fbc9426 7 | date: 2017-02-24 11:28:42 8 | --- 9 | -------------------------------------------------------------------------------- /oreilly-generator/public/home_files/camera.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/home_files/camera.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/logo.png -------------------------------------------------------------------------------- /homepage/src/components/home/Home.scss: -------------------------------------------------------------------------------- 1 | #knowledge-management { 2 | iframe { 3 | width: 100vw; 4 | background: none; 5 | height: 800px; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/logo2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/logo2.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/01.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/02.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/03.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/04.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/05.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/06.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/07.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/08.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/09.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/10.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/11.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/12.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/13.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/14.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/15.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/16.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/17.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/18.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/19.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/20.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/21.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/22.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/23.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/24.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/25.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/26.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/27.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/28.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/29.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/30.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/31.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/32.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/33.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/34.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/34.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/35.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/35.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/36.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/37.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/37.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/38.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/39.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/39.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/40.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/logo-nav.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/logo-nav.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/30.png.1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/30.png.1 -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/camera.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/camera.png -------------------------------------------------------------------------------- /hexo/source/categories/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: categories 3 | type: categories 4 | categories: [] 5 | tags: [] 6 | abbrlink: 3af34668 7 | date: 2017-02-24 11:28:37 8 | --- 9 | -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/AngularJS-large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/AngularJS-large.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/AngularJS-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/AngularJS-small.png -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/og/animal_sprites_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/images/og/animal_sprites_1.png -------------------------------------------------------------------------------- /homepage/postcss.config.js: -------------------------------------------------------------------------------- 1 | const autoprefixer = require('autoprefixer'); 2 | 3 | module.exports = { 4 | plugins: [autoprefixer({ browsers: ['last 4 versions'], flexbox: 'no-2009' })] 5 | }; 6 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/custom.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Custom issue template 3 | about: Describe this issue template's purpose here. 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | 11 | -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wx-chevalier/zero-notes-website/HEAD/oreilly-generator/public/src/css/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /homepage/dev-config/mock/db.json: -------------------------------------------------------------------------------- 1 | { 2 | "posts": [{ "id": 1, "title": "json-server", "author": "typicode" }], 3 | "comments": [{ "id": 1, "body": "some comment", "postId": 1 }], 4 | "profile": { "name": "typicode" } 5 | } 6 | -------------------------------------------------------------------------------- /oreilly-generator/public/src/js/app.js: -------------------------------------------------------------------------------- 1 | 2 | (function() { 3 | 'use strict'; 4 | 5 | // Declare app level module which depends on filters, and services 6 | angular.module('websiteApp', ['ngStorage']); 7 | 8 | })(); 9 | -------------------------------------------------------------------------------- /oreilly-generator/public/home_files/app.js: -------------------------------------------------------------------------------- 1 | 2 | (function() { 3 | 'use strict'; 4 | 5 | // Declare app level module which depends on filters, and services 6 | angular.module('websiteApp', ['ngStorage']); 7 | 8 | })(); 9 | -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/sass/main.scss: -------------------------------------------------------------------------------- 1 | @import "compass/css3"; 2 | 3 | @import "base/_base"; 4 | @import "layout/_header"; 5 | @import "pages/_login"; 6 | @import "pages/_og"; 7 | 8 | 9 | 10 | .mainbox { 11 | width: 1300px; 12 | } 13 | -------------------------------------------------------------------------------- /homepage/src/services/create-worker.ts: -------------------------------------------------------------------------------- 1 | // create-worker.ts 2 | type WorkerType = T & Pick; 3 | export function createWorker(workerPath: T): WorkerType { 4 | return (workerPath as any)(); 5 | } 6 | export type createWorker = WorkerType; 7 | -------------------------------------------------------------------------------- /homepage/.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | 12 | [*.md] 13 | trim_trailing_whitespace = false -------------------------------------------------------------------------------- /homepage/src/services/ts-worker.ts: -------------------------------------------------------------------------------- 1 | // block for `time` ms, then return the number of loops we could run in that time: 2 | export async function expensive(time: number) { 3 | let start = Date.now(), 4 | count = 0; 5 | while (Date.now() - start < time) count++; 6 | return count; 7 | } 8 | -------------------------------------------------------------------------------- /homepage/src/components/common/card/PerspectiveCard.scss: -------------------------------------------------------------------------------- 1 | .perspective-card { 2 | width: 300px; 3 | padding: 16px; 4 | 5 | display: flex; 6 | justify-content: center; 7 | 8 | opacity: 0.7; 9 | color: white; 10 | background: rgba(0, 0, 0, 0.65); 11 | 12 | h2 { 13 | color: white; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /homepage/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Compiled assets 9 | build 10 | 11 | # Dependency directories 12 | node_modules/ 13 | 14 | # Optional npm cache directory 15 | .npm 16 | 17 | # Optional eslint cache 18 | .eslintcache 19 | 20 | ./stats.json 21 | -------------------------------------------------------------------------------- /homepage/src/api/nasa.ts: -------------------------------------------------------------------------------- 1 | /** 接口调用 */ 2 | import axios from 'axios'; 3 | 4 | const NASA_TOKEN = 'w6jzHY3BWbVrO74WT7ZztIGvH7SF83N8xvRBIfeq'; 5 | 6 | export async function getApod() { 7 | const resp = await axios.get( 8 | `https://api.nasa.gov/planetary/apod?api_key=${NASA_TOKEN}` 9 | ); 10 | 11 | console.log(resp); 12 | } 13 | -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/sass/pages/_login.scss: -------------------------------------------------------------------------------- 1 | .loginbox { 2 | width: 800px; 3 | 4 | h1 { 5 | text-align: left; 6 | margin: 30px 10px; 7 | } 8 | 9 | .signup_title { 10 | padding: 50px 0px 0px 0px; 11 | } 12 | 13 | .nopadding { 14 | padding-left: 0px; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /homepage/preprocessor.js: -------------------------------------------------------------------------------- 1 | const tsc = require('typescript'); 2 | const tsConfig = require('./tsconfig.test.json'); 3 | 4 | module.exports = { 5 | process(src, path) { 6 | if (path.endsWith('.ts') || path.endsWith('.tsx')) { 7 | return tsc.transpile(src, tsConfig.compilerOptions, path, []); 8 | } 9 | return src; 10 | } 11 | }; 12 | -------------------------------------------------------------------------------- /oreilly-generator/public/src/js/filters.js: -------------------------------------------------------------------------------- 1 | 2 | (function() { 3 | 'use strict'; 4 | 5 | 6 | 7 | /* Filters */ 8 | 9 | angular.module('websiteApp').filter('interpolate', ['version', function(version) { 10 | return function(text) { 11 | return String(text).replace(/\%VERSION\%/mg, version); 12 | }; 13 | }]); 14 | 15 | 16 | })(); 17 | -------------------------------------------------------------------------------- /gh-craft/src/github/restful/github.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @file 抓取用户 Github 公开数据 3 | * @description 详细说明 4 | * 5 | * @author 王下邀月熊 <384924552@qq.com> 6 | * 7 | * Created Date: Sun, 2018-05-13 21:22:53 8 | * 9 | * Last Modified: Sat, 2018-05-26 14:01:37 10 | * Last Modified By: 王下邀月熊 <384924552@qq.com> 11 | * 12 | * This code is licensed under the MIT License. 13 | */ 14 | -------------------------------------------------------------------------------- /gh-craft/src/craft/plugin/ControlPanel.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @file 控制面板 3 | * @description 为了便于在移动端的使用,添加控制面板 4 | * 5 | * @author 王下邀月熊 <384924552@qq.com> 6 | * 7 | * Created Date: Sun, 2018-05-13 22:07:11 8 | * 9 | * Last Modified: Sat, 2018-05-26 15:07:45 10 | * Last Modified By: 王下邀月熊 <384924552@qq.com> 11 | * 12 | * This code is licensed under the MIT License. 13 | */ 14 | -------------------------------------------------------------------------------- /homepage/src/components/home/lab/Lab.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import Particles from 'react-particles-js'; 3 | 4 | import './Lab.scss'; 5 | 6 | const prefix = 'lab'; 7 | 8 | export default class Lab extends React.Component { 9 | render() { 10 | return ( 11 |
12 | 13 |
14 | ); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /gh-craft/src/craft/texture/TextTexure.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @file 文本纹理 3 | * @description 修改了 voxel-texture 的部分表现,允许进行自定义文本渲染 4 | * 5 | * @author 王下邀月熊 <384924552@qq.com> 6 | * 7 | * Created Date: Sun, 2018-05-13 22:18:26 8 | * 9 | * Last Modified: Sat, 2018-05-26 15:12:08 10 | * Last Modified By: 王下邀月熊 <384924552@qq.com> 11 | * 12 | * This code is licensed under the MIT License. 13 | */ 14 | -------------------------------------------------------------------------------- /homepage/src/models/IndexItem.ts: -------------------------------------------------------------------------------- 1 | export default class IndexItem { 2 | objectId: string; 3 | 4 | content: string; 5 | desc: string; 6 | fileName: string; 7 | href: string; 8 | title: string; 9 | type: string; 10 | year: string; 11 | 12 | repo: string; 13 | categories: string[]; 14 | 15 | get parsedFileName() { 16 | return this.fileName.split('.')[0]; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /gh-craft/src/craft/texture/hijackTexture.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @file 劫持 voxel-texture 3 | * @description 添加自定义操作,如果是内置的图片则返回;否则使用 Canvas 绘制 4 | * 5 | * @author 王下邀月熊 <384924552@qq.com> 6 | * 7 | * Created Date: Sat, 2018-05-26 15:12:17 8 | * 9 | * Last Modified: Sat, 2018-05-26 15:13:15 10 | * Last Modified By: 王下邀月熊 <384924552@qq.com> 11 | * 12 | * This code is licensed under the MIT License. 13 | */ 14 | -------------------------------------------------------------------------------- /gh-craft/src/craft/scene/GHScene.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @file gh-craft 定制化场景 3 | * @description 个性化定制了 4 | * 5 | * @author 王下邀月熊 <384924552@qq.com> 6 | * 7 | * Created Date: Sat, 2018-05-26 15:06:21 8 | * 9 | * Last Modified: Sat, 2018-05-26 15:10:51 10 | * Last Modified By: 王下邀月熊 <384924552@qq.com> 11 | * 12 | * This code is licensed under the MIT License. 13 | */ 14 | 15 | export default class GHScene {} 16 | -------------------------------------------------------------------------------- /homepage/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "xCompass HomePage", 3 | "name": "xCompass HomePage & 王下邀月熊", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | } 10 | ], 11 | "start_url": "./index.html", 12 | "display": "standalone", 13 | "theme_color": "#000000", 14 | "background_color": "#ffffff" 15 | } 16 | -------------------------------------------------------------------------------- /homepage/src/components/common/decorator/HDivider.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import styled from 'styled-components'; 3 | 4 | const H1 = styled.h1` 5 | margin-top: 8px; 6 | 7 | color: white; 8 | font-size: 24px; 9 | letter-spacing: 8px; 10 | 11 | text-align: center; 12 | vertical-align: middle; 13 | background: transparent; 14 | `; 15 | 16 | export const HDivider = () =>

|||

; 17 | -------------------------------------------------------------------------------- /homepage/jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2017", 4 | "allowSyntheticDefaultImports": false, 5 | "baseUrl": "./", 6 | "paths": { 7 | "x-api/*": ["src/api/*"], 8 | "x-components/*": ["src/components/*"], 9 | "x-containers/*": ["src/containers/*"], 10 | "x-models/*": ["src/models/*"], 11 | "x-stores/*": ["src/stores/*"], 12 | "x-services/*": ["src/services/*"] 13 | } 14 | }, 15 | "exclude": ["node_modules", "dist"] 16 | } 17 | -------------------------------------------------------------------------------- /homepage/src/components/footer/IFooter.scss: -------------------------------------------------------------------------------- 1 | .footer { 2 | &-item { 3 | height: 40px; 4 | line-height: 40px; 5 | padding-left: 4vw; 6 | 7 | cursor: pointer; 8 | text-align: left; 9 | 10 | &--noimg { 11 | text-align: center; 12 | padding: 0; 13 | } 14 | 15 | img { 16 | height: 25px; 17 | margin-right: 8px; 18 | } 19 | 20 | a { 21 | color: white; 22 | &:visited { 23 | color: white; 24 | } 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /homepage/src/components/common/Loading/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | 3 | export default function Loading(props: any) { 4 | if (props.isLoading) { 5 | if (props.timedOut) { 6 | return
Loader timed out!
; 7 | } else if (props.pastDelay) { 8 | return
Loading...
; 9 | } else { 10 | return null; 11 | } 12 | } else if (props.error) { 13 | return
Error! Component failed to load
; 14 | } else { 15 | return null; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /glossary-cards/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "glossary-cards", 3 | "version": "0.0.1", 4 | "description": "Knowledge Terminology Gallery", 5 | "main": "index.js", 6 | "repository": "https://github.com/wxyyxc1992/xCompass", 7 | "author": "wxyyxc1992", 8 | "license": "MIT", 9 | "private": false, 10 | "devDependencies": { 11 | "parcel": "^1.9.7" 12 | }, 13 | "scripts": { 14 | "start": "parcel index.html --global THREE", 15 | "build": "parcel build index.html --global THREE" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /homepage/dev-config/webpack.config.dll.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | const pkg = require('../package.json'); 3 | const webpack = require('webpack'); 4 | 5 | const dllConfig = { 6 | name: 'vendor', 7 | entry: Object.keys(pkg.dependencies), 8 | output: { 9 | path: path.resolve(__dirname, '../build/dll'), 10 | filename: 'vendor.bundle.js', 11 | library: 'vendor_[hash]' 12 | }, 13 | plugins: [ 14 | new webpack.DllPlugin({ 15 | name: 'vendor_[hash]', 16 | path: path.resolve(__dirname, '../build/dll/manifest.json') 17 | }) 18 | ] 19 | }; 20 | 21 | module.exports = dllConfig; 22 | -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/sass/base/_base.scss: -------------------------------------------------------------------------------- 1 | 2 | $color_bg_body : #F6F8F8; 3 | $color_form_error : #a94442; 4 | 5 | 6 | 7 | // angular 8 | [ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak { 9 | display: none !important; 10 | } 11 | 12 | 13 | body { 14 | padding-top: 60px; 15 | font: 14px "Helvetica Neue", "Luxi Sans", "DejaVu Sans", Tahoma, "Hiragino Sans GB", "Microsoft Yahei", sans-serif; 16 | background-color: $color_bg_body; 17 | } 18 | 19 | 20 | .form-validation { 21 | padding: 5px 0px 0px 0px; 22 | font-size: 16px; 23 | color: $color_form_error; 24 | } 25 | -------------------------------------------------------------------------------- /oreilly-generator/README.md: -------------------------------------------------------------------------------- 1 | # O'reilly-generator 2 | 3 | ## How to use 4 | 5 | + Using mouse wheel zoom in/out pic 6 | + Snapshot pic base on html2canvas library. Note: put the static(public folder files) files in any webserver folder. Eg: http://localhost/index.html 7 | 8 | 9 | ## 使用指南 10 | 11 | + 可以通过鼠标滚动缩放图片, 12 | + 通过 html2canvas 库来生成图片(需要启动任意web服务器 把public静态文件放到某个域名下,例如localhost下面才可以显示截图的图片) 13 | 14 | ![pic](http://ww1.sinaimg.cn/large/5387eb23jw1f2qgrto0z7j21d0114akl.jpg) 15 | 16 | ## 欢迎补充更多的图书封面 17 | ## Welcome PR for more theme and cover 18 | 19 | 20 | ## License 21 | 22 | [MIT](http://opensource.org/licenses/MIT) 23 | 24 | -------------------------------------------------------------------------------- /homepage/src/components/common/card/PerspectiveCard.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | 3 | import './PerspectiveCard.scss'; 4 | 5 | interface PerspectiveCardProps { 6 | title: string; 7 | style?: object; 8 | } 9 | interface PerspectiveCardState {} 10 | 11 | const prefix = 'perspective-card'; 12 | 13 | export default class PerspectiveCard extends React.PureComponent< 14 | PerspectiveCardProps, 15 | PerspectiveCardState 16 | > { 17 | render() { 18 | const { title, style } = this.props; 19 | 20 | return ( 21 |
22 |

{title}

23 |
24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /hexo/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hexo-site", 3 | "version": "0.0.0", 4 | "private": true, 5 | "hexo": { 6 | "version": "3.2.2" 7 | }, 8 | "dependencies": { 9 | "hexo": "^3.2.0", 10 | "hexo-abbrlink": "^2.0.4", 11 | "hexo-deployer-sftp": "^0.1.0", 12 | "hexo-generator-archive": "^0.1.4", 13 | "hexo-generator-category": "^0.1.3", 14 | "hexo-generator-index": "^0.2.0", 15 | "hexo-generator-tag": "^0.2.0", 16 | "hexo-inject": "^1.0.0", 17 | "hexo-math": "^3.0.2", 18 | "hexo-renderer-ejs": "^0.2.0", 19 | "hexo-renderer-marked": "^0.2.10", 20 | "hexo-renderer-stylus": "^0.3.1", 21 | "hexo-server": "^0.2.0" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/sass/layout/_header.scss: -------------------------------------------------------------------------------- 1 | 2 | $color_bg_header : #FFF; 3 | 4 | $color_button_header : #8A8686; 5 | $color_button_header_hover : #393d40; 6 | 7 | 8 | 9 | 10 | .navbar { 11 | height: 60px; 12 | background-color : $color_bg_header; 13 | } 14 | 15 | .navbar-brand { 16 | padding-top: 10px; 17 | } 18 | 19 | .navbar-nav { 20 | margin-top: 6px; 21 | 22 | li { 23 | a { 24 | font-size: 16px; 25 | color : $color_button_header; 26 | 27 | &:active, &:focus, &:hover { 28 | color: $color_button_header_hover; 29 | background-color: $color_bg_header; 30 | } 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /oreilly-generator/public/src/js/model/logger.js: -------------------------------------------------------------------------------- 1 | 2 | (function() { 3 | 'use strict'; 4 | 5 | 6 | /* Services Model */ 7 | 8 | 9 | // Demonstrate how to register services 10 | // In this case it is a simple value service. 11 | 12 | angular.module('websiteApp').factory('Logger', loggerService); 13 | 14 | loggerService.$inject = ['$log']; 15 | 16 | function loggerService($log) { 17 | return { 18 | debug: debug, 19 | errorXHR: errorXHR 20 | }; 21 | 22 | function errorXHR(err) { 23 | $log.error('XHR Failed. ' ); 24 | $log.debug(err.data ); 25 | } 26 | 27 | function debug(info) { 28 | $log.debug('Debug Info : ' + info ); 29 | return info; 30 | } 31 | 32 | } 33 | })(); 34 | -------------------------------------------------------------------------------- /homepage/README.md: -------------------------------------------------------------------------------- 1 | # HomePage 2 | 3 | 个人主页,请前往[根目录](../)了解更多。 4 | 5 | # Credits & Motivation 6 | 7 | - [SToneX](https://www.sitixi.com/) 8 | 9 | ## Books Warehouse 10 | 11 | - [Turn.js #Project#](http://www.turnjs.com/#samples/magazine2/9): Turn.js is a JavaScript library that will make your content look like a real book or magazine using all the advantages of HTML5. 12 | 13 | ## RoadMap 14 | 15 | - [react-developer-roadmap](https://raw.githubusercontent.com/adam-golab/react-developer-roadmap/master/src/react-developer-roadmap.xml) 16 | 17 | - [Apple Whats New](https://help.apple.com/macOS/mojave/whats-new/) 18 | 19 | - [Canvas Parallax Mountains](https://codepen.io/wxyyxc1992/pen/xyKjox) 20 | 21 | - [Sharding JDBC](http://ww1.shardingjdbc.io/?subid1=035a3348-f263-11e8-a6ae-b8689fb909c5) 22 | -------------------------------------------------------------------------------- /gh-craft/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "parser": "babel-eslint", 3 | "extends": ["airbnb", "prettier"], 4 | "env": { 5 | "browser": true, 6 | "node": true, 7 | "jasmine": true, 8 | "jest": true, 9 | "es6": true, 10 | "worker": true 11 | }, 12 | "plugins": ["jest"], 13 | "rules": { 14 | "function-paren-newline": "off", 15 | "import/no-extraneous-dependencies": "off", 16 | "react/no-unused-state": "warn", 17 | "comma-dangle": "off", 18 | "react/forbid-prop-types": "warn", 19 | "react/no-unused-prop-types": "warn", 20 | "react/prop-types": "warn", 21 | "react/self-closing-comp": "warn", 22 | "class-methods-use-this": "off", 23 | "react/jsx-filename-extension": "off", 24 | "react/prefer-stateless-function": "off", 25 | "no-console": "off", 26 | "no-unused-vars": "warn" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /homepage/src/components/home/repos/Showcase.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | 3 | import { HDivider } from '../../common/decorator/HDivider'; 4 | 5 | import KnowledgeManagement from './KnowledgeManagement'; 6 | import SoftwareEngineering from './SoftwareEngineering'; 7 | import Web from './Web'; 8 | import SSA from './SSA'; 9 | import Infrastructure from './Infrastructure'; 10 | import AI from './AI'; 11 | 12 | export default class Showcase extends React.PureComponent { 13 | render() { 14 | return ( 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | ); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /homepage/src/components/home/repos/AI.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { Parallax } from 'react-parallax'; 3 | import PerspectiveCard from 'x-components/common/card/PerspectiveCard'; 4 | 5 | const bgImg = 6 | 'https://user-images.githubusercontent.com/5803001/44629093-c753d900-a97c-11e8-8c16-9d0e96b149aa.png'; 7 | 8 | export default class AI extends React.PureComponent { 9 | render() { 10 | return ( 11 | 12 |
13 | 22 |
23 |
24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /homepage/src/components/home/Home.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | 3 | import { HDivider } from '../common/decorator/HDivider'; 4 | import Lab from './lab/Lab'; 5 | import Banner from './banner/Banner'; 6 | import Perspective from './perspective/Perspective'; 7 | 8 | import './Home.scss'; 9 | 10 | export default class Home extends React.PureComponent { 11 | render() { 12 | return ( 13 |
14 | 15 | 16 |
17 | 18 |
19 | 20 |
21 | 22 |
23 | 24 |
25 | 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /oreilly-generator/public/home_files/ngStorage.min.js: -------------------------------------------------------------------------------- 1 | /*! ngstorage 0.3.10 | Copyright (c) 2016 Gias Kay Lee | MIT License */!function(a,b){"use strict";"function"==typeof define&&define.amd?define(["angular"],b):a.hasOwnProperty("angular")?b(a.angular):"object"==typeof exports&&(module.exports=b(require("angular")))}(this,function(a){"use strict";function b(a,b){var c;try{c=a[b]}catch(d){c=!1}if(c){var e="__"+Math.round(1e7*Math.random());try{a[b].setItem(e,e),a[b].removeItem(e,e)}catch(d){c=!1}}return c}function c(c){var d=b(window,c);return function(){var e="ngStorage-";this.setKeyPrefix=function(a){if("string"!=typeof a)throw new TypeError("[ngStorage] - "+c+"Provider.setKeyPrefix() expects a String.");e=a};var f=a.toJson,g=a.fromJson;this.setSerializer=function(a){if("function"!=typeof a)throw new TypeError("[ngStorage] - "+c+"Provider.setSerializer expects a function.");f=a},this.setDeserializer=function(a){if("function"!=typeof a)throw new TypeError("[ngStorage] - "+c+"Provider.setDeserializer expects a function.");g=a},this.supported=function(){return!!d},this.get=function(a){return d&&g(d.getItem(e+a))},this.set=function(a,b){return d&&d.setItem(e+a,f(b))},this.remove=function(a){d&&d.removeItem(e+a)},this.$get=["$rootScope","$window","$log","$timeout","$document",function(d,h,i,j,k){var l,m,n=e.length,o=b(h,c),p=o||(i.warn("This browser does not support Web Storage!"),{setItem:a.noop,getItem:a.noop,removeItem:a.noop}),q={$default:function(b){for(var c in b)a.isDefined(q[c])||(q[c]=a.copy(b[c]));return q.$sync(),q},$reset:function(a){for(var b in q)"$"===b[0]||delete q[b]&&p.removeItem(e+b);return q.$default(a)},$sync:function(){for(var a,b=0,c=p.length;c>b;b++)(a=p.key(b))&&e===a.slice(0,n)&&(q[a.slice(n)]=g(p.getItem(a)))},$apply:function(){var b;if(m=null,!a.equals(q,l)){b=a.copy(l),a.forEach(q,function(c,d){a.isDefined(c)&&"$"!==d[0]&&(p.setItem(e+d,f(c)),delete b[d])});for(var c in b)p.removeItem(e+c);l=a.copy(q)}},$supported:function(){return!!o}};return q.$sync(),l=a.copy(q),d.$watch(function(){m||(m=j(q.$apply,100,!1))}),h.addEventListener&&h.addEventListener("storage",function(b){if(b.key){var c=k[0];c.hasFocus&&c.hasFocus()||e!==b.key.slice(0,n)||(b.newValue?q[b.key.slice(n)]=g(b.newValue):delete q[b.key.slice(n)],l=a.copy(q),d.$apply())}}),h.addEventListener&&h.addEventListener("beforeunload",function(){q.$apply()}),q}]}}return a=a&&a.module?a:window.angular,a.module("ngStorage",[]).provider("$localStorage",c("localStorage")).provider("$sessionStorage",c("sessionStorage"))}); -------------------------------------------------------------------------------- /hexo/_config.yml: -------------------------------------------------------------------------------- 1 | # Hexo Configuration 2 | ## Docs: https://hexo.io/docs/configuration.html 3 | ## Source: https://github.com/hexojs/hexo/ 4 | 5 | # Site 6 | title: 王下邀月熊 7 | subtitle: 让知识在它该在的地方 8 | description: 我的技术之路 9 | author: 王下邀月熊 10 | language: zh-Hans 11 | timezone: 12 | avatar: 13 | 14 | # URL 15 | ## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/' 16 | url: http://wx-coder.cn 17 | root: / 18 | permalink: posts/:abbrlink/ 19 | 20 | # Directory 21 | source_dir: source 22 | public_dir: public 23 | tag_dir: tags 24 | archive_dir: archives 25 | category_dir: categories 26 | code_dir: downloads/code 27 | i18n_dir: :lang 28 | skip_render: 29 | 30 | # Writing 31 | new_post_name: :title.md # File name of new posts 32 | default_layout: post 33 | titlecase: false # Transform title into titlecase 34 | external_link: true # Open external links in new tab 35 | filename_case: 0 36 | render_drafts: false 37 | post_asset_folder: false 38 | relative_link: false 39 | future: true 40 | highlight: 41 | enable: true 42 | line_number: true 43 | auto_detect: false 44 | tab_replace: 45 | 46 | # Category & Tag 47 | default_category: dir2categories 48 | category_map: 49 | DataScienceAI: 数据科学与人工智能 50 | tag_map: 51 | 52 | # Date / Time format 53 | ## Hexo uses Moment.js to parse and display date 54 | ## You can customize the date format as defined in 55 | ## http://momentjs.com/docs/#/displaying/format/ 56 | date_format: YYYY-MM-DD 57 | time_format: HH:mm:ss 58 | 59 | # Pagination 60 | ## Set per_page to 0 to disable pagination 61 | per_page: 10 62 | pagination_dir: page 63 | 64 | # Extensions 65 | ## Plugins: https://hexo.io/plugins/ 66 | 67 | # abbrlink config 68 | abbrlink: 69 | alg: crc32 #support crc16(default) and crc32 70 | rep: hex #support dec(default) and hex 71 | 72 | math: 73 | engine: 'mathjax' # or 'katex' 74 | mathjax: 75 | src: https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-MML-AM_CHTML 76 | config: 77 | # MathJax config 78 | tex2jax: 79 | inlineMath: [ ['$','$'], ["\\(","\\)"] ] 80 | skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code'] 81 | processEscapes: true 82 | 83 | ## Themes: https://hexo.io/themes/ 84 | theme: next 85 | 86 | # Deployment 87 | 88 | ## Docs: https://hexo.io/docs/deployment.html 89 | deploy: 90 | type: sftp 91 | host: 121.40.160.240 92 | user: root 93 | pass: TureloreConfig1314 94 | remotePath: /opt/wx-coder/blog 95 | port: 22 96 | -------------------------------------------------------------------------------- /ABOUT.md: -------------------------------------------------------------------------------- 1 | # About 2 | 3 | # Motivation & Credits 4 | 5 | - [learn-anything #Project#](https://github.com/learn-anything/learn-anything): Search Interactive Maps to Learn Anything. 6 | 7 | - [Growth #Project#](https://github.com/phodal/growth): Growth 3.0 with React Native - an app to help you to be Awesome Developer 8 | 9 | - [hygen #Project#](https://github.com/jondot/hygen): The simple, fast, and scalable code generator that lives in your project. 10 | 11 | ## Application 12 | 13 | - [terkel.com-2016](https://github.com/terkelg/terkel.com-2016): My Personal website. Build with Vue and ThreeJS. 14 | 15 | - [Threejs-periodictable](https://mrdoob.com/lab/javascript/threejs/css3d/periodictable/) 16 | 17 | - [Phodal](https://www.phodal.com/) 18 | 19 | ## Voxel Series 20 | 21 | - [voxel-webview #Project#](https://github.com/voxel/voxel-webview/blob/master/webview.js): embed webpages in a voxel.js world using CSS 3D (voxel.js plugin) 22 | 23 | - [voxel-modal-dialog #Project#](https://github.com/voxel/voxel-modal-dialog): modal dialog element using voxel-modal (voxel.js addon). 24 | 25 | - [voxel-texture #Project#](https://github.com/shama/voxel-texture): Add textures to an atlas and set UV mapping on geometries. Used for texturing in voxel.js. 26 | 27 | ## Github 28 | 29 | - [GitHub Contributions Chart Generator #Project#](https://github-contributions.now.sh/): All your contributions in one image! 30 | 31 | - [My Github Resume #Project#](http://resume.github.io/): As a software startup owner I really enjoy when people send us their résumés and they include their github account so we can see tangible work they have done. 32 | 33 | - [GitHub Cards #Project#](http://lab.lepture.com/github-cards): Card for your GitHub profile, card for your GitHub repositories. 34 | 35 | ## Other 36 | 37 | - [3d-loaders #Project#](https://icons8.com/cssload/en/3d-loaders) 38 | - [AssemblyScript #Project#](https://github.com/AssemblyScript/assemblyscript): A TypeScript to WebAssembly compiler. 39 | 40 | # Roadmap 41 | 42 | ![minecraft-logo-39f2a1a778897d50-512x512](https://user-images.githubusercontent.com/5803001/42416088-18829ca0-8298-11e8-95b5-354a245d0b43.png) 43 | 44 | ## MileStone V1 45 | 46 | - [x] 完成基础场景的修改与构建,模拟 voxel.js 的官方场景,能够显示砖块与草坪 47 | - [ ] 支持渲染文字内容 48 | - [ ] 支持从 Github 抓取数据 49 | - [ ] 能够显示用户名、总的 Star 数目 50 | - [ ] 能够显示所有的仓库,并且能够打开链接 51 | - [ ] 支持导出为本地图片 52 | 53 | ## MileStone V2 54 | 55 | - [ ] 引入 Service Workers,能够缓存本地数据 56 | - [ ] 使用 Web Worker 执行 Contribution HeatMap 计算 57 | - [ ] 能够将热力图显示为 Cube 58 | - [ ] 添加控制面板,使其能够在移动端运行 59 | -------------------------------------------------------------------------------- /homepage/src/assets/svgs/清单.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /oreilly-generator/public/src/js/component/demo/demo14.directive.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | (function() { 4 | 'use strict'; 5 | 6 | 7 | /* Directives */ 8 | 9 | /* recommended */ 10 | /* demo14.directive.js */ 11 | 12 | /** 13 | * @desc order directive that is specific to the order module at a company named Acme 14 | * @example
15 | */ 16 | 17 | 18 | angular.module('websiteApp').directive('myNavBar', [myNavBarComponent]); 19 | 20 | 21 | function myNavBarComponent() { 22 | 23 | var directive = { 24 | restrict: 'EA', 25 | templateUrl: '/angulardemo/js/component/demo/demo14_tpl.html', 26 | scope: { 27 | menulist : '=' 28 | }, 29 | 30 | link: linkFunc 31 | }; 32 | 33 | return directive; 34 | 35 | 36 | function linkFunc (scope, element, attrs) { 37 | scope.css = { 38 | currentEditMenuIndex : -1, 39 | currentSelectMenuIndex : -1, 40 | currentHoverMenuIndex : -1, 41 | showAddNewMenuForm : false 42 | }; 43 | scope.data = { 44 | newMenu : { 45 | id : scope.menulist[scope.menulist.length-1].id + 1, 46 | name : '' 47 | } 48 | }; 49 | 50 | 51 | scope.addMenu = function(){ 52 | scope.css.showAddNewMenuForm = true; 53 | }; 54 | scope.saveNewMenu = function(){ 55 | scope.data.newMenu.id =scope.menulist[scope.menulist.length-1].id + 1; 56 | scope.menulist.push(angular.copy(scope.data.newMenu)); 57 | scope.css.showAddNewMenuForm = false; 58 | }; 59 | 60 | 61 | scope.editMenu = function(index){ 62 | scope.css.currentEditMenuIndex = index; 63 | 64 | }; 65 | scope.saveEditMenu = function(){ 66 | scope.css.currentEditMenuIndex = -1; 67 | }; 68 | 69 | 70 | scope.deleteMenu = function(index){ 71 | 72 | scope.menulist.splice(index, 1); 73 | scope.css.currentEditMenuIndex = -1; 74 | 75 | }; 76 | scope.deleteMenu2 = function(menu){ 77 | 78 | for(var i = scope.menulist.length-1; i >= 0; i--){ 79 | if (scope.menulist[i].id === menu.id) { 80 | scope.menulist.splice(i, 1); 81 | break; 82 | } 83 | } 84 | 85 | scope.css.currentEditMenuIndex = -1; 86 | }; 87 | 88 | } 89 | 90 | } 91 | 92 | 93 | 94 | })(); 95 | -------------------------------------------------------------------------------- /oreilly-generator/public/src/js/component/common/directives.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | (function() { 4 | 'use strict'; 5 | 6 | 7 | /* Directives */ 8 | 9 | 10 | angular.module('websiteApp').directive('editMenu', function () { 11 | return { 12 | restrict: 'EA', 13 | templateUrl: 'tpl_demo10_edit.html', 14 | scope: { 15 | menulist : '=datalistmodel', 16 | menu : '=datamodel', 17 | index : '=index' 18 | }, 19 | 20 | link: function (scope, element, attrs) { 21 | scope.cssshowmenu = true; 22 | scope.editMenuButton = function(){ 23 | scope.cssshowmenu = false; 24 | }; 25 | 26 | scope.saveEditMenuButton = function(){ 27 | scope.cssshowmenu = true; 28 | }; 29 | scope.deleteMenuButton = function(){ 30 | scope.cssshowmenu = true; 31 | 32 | for(var i = scope.menulist.length-1; i >= 0; i--){ 33 | if (scope.menulist[i].id == scope.menu.id) { 34 | // console.log(i, scope.menulist[i].id, scope.menu.id, scope.menulist); 35 | scope.menulist.splice(i, 1); 36 | element.remove(); 37 | break; 38 | } 39 | } 40 | }; 41 | 42 | 43 | } 44 | }; 45 | }); 46 | 47 | 48 | angular.module('angularDemoApp').directive('addMenu', function () { 49 | return { 50 | restrict: 'EA', 51 | templateUrl: 'tpl_demo10_add.html', 52 | scope: false, 53 | link: function (scope, elem, attrs) { 54 | scope.maxmenu = Number(attrs.maxmemu); 55 | console.log(Number(attrs.maxmemu)); 56 | scope.newmemu = {id:100, name:"" }; 57 | scope.cssshowmenu = true; 58 | scope.cssshowbox = true; 59 | 60 | if(scope.menulist.length >= scope.maxmenu){ 61 | scope.cssshowbox = false; 62 | } 63 | 64 | scope.addMenuButton = function(){ 65 | scope.cssshowmenu = false; 66 | }; 67 | 68 | scope.saveNewMenuButton = function(){ 69 | scope.cssshowmenu = true; 70 | scope.menulist.push(angular.copy(scope.newmemu)); 71 | if(scope.menulist.length >= scope.maxmenu){ 72 | scope.cssshowbox = false; 73 | } 74 | }; 75 | 76 | } 77 | }; 78 | }); 79 | 80 | })(); 81 | -------------------------------------------------------------------------------- /glossary-cards/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Arcane Cards 8 | 9 | 17 | 18 | 47 | 48 | 49 | 50 |
51 |

知识的宝库

52 | 「溫兩碗酒,要一碟茴香豆。」便排出九个知识点。 53 |
54 |
55 | 62 |
借鉴与改造自 threejs/css3d_periodictable
63 | 64 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /gh-craft/src/craft/plugin/Snapshot.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @file 快照 3 | * @description 将当前的摄像头快照输出为图像,并且允许下载 4 | * 5 | * @author 王下邀月熊 <384924552@qq.com> 6 | * 7 | * Created Date: Sat, 2018-05-26 14:35:04 8 | * 9 | * Last Modified: Sat, 2018-05-26 15:08:31 10 | * Last Modified By: 王下邀月熊 <384924552@qq.com> 11 | * 12 | * This code is licensed under the MIT License. 13 | */ 14 | 15 | function Share(opts) { 16 | if (!(this instanceof Share)) return new Share(opts || {}); 17 | if (opts.THREE) opts = { game: opts }; 18 | if (!opts.key) throw new Error('Get a key: http://api.imgur.com/'); 19 | this.key = opts.key; 20 | this.game = opts.game; 21 | this.hashtags = opts.hashtags || ''; 22 | this.message = opts.message || 'Greetings from voxel.js! @voxeljs'; 23 | this.type = opts.type || 'image/png'; 24 | this.quality = opts.quality || 0.75; 25 | this.opened = false; 26 | this.afterUpload = opts.afterUpload || this.tweet; 27 | } 28 | module.exports = Share; 29 | 30 | Share.prototype.open = function(append) { 31 | this.close(); 32 | this.element = this.createElement(); 33 | append = append || document.body; 34 | append.appendChild(this.element); 35 | this.opened = true; 36 | }; 37 | 38 | Share.prototype.close = function() { 39 | if (this.element != null) { 40 | this.element.parentNode.removeChild(this.element); 41 | } 42 | this.element = null; 43 | this.opened = false; 44 | }; 45 | 46 | Share.prototype.submit = function() { 47 | var self = this; 48 | var fd = new FormData(); 49 | fd.append('image', String(this.image.src).split(',')[1]); 50 | if (this.message) fd.append('description', this.message); 51 | var xhr = new XMLHttpRequest(); 52 | xhr.open('POST', 'https://api.imgur.com/3/upload'); 53 | var auth = 'Client-ID ' + this.key; 54 | xhr.setRequestHeader('Authorization', auth); 55 | xhr.onload = function() { 56 | // todo: error check 57 | var link = JSON.parse(xhr.responseText).data.link; 58 | self.afterUpload.call(self, link); 59 | }; 60 | xhr.send(fd); 61 | }; 62 | 63 | Share.prototype.createElement = function() { 64 | var self = this; 65 | var e = document.createElement('div'); 66 | e.className = 'voxel-share'; 67 | 68 | // create image 69 | this.image = new Image(); 70 | this.game.renderer.render(this.game.scene, this.game.camera); 71 | this.image.src = this.game.element.toDataURL(this.type, this.quality); 72 | e.appendChild(this.image); 73 | 74 | // create text input 75 | var msgBox = document.createElement('textarea'); 76 | msgBox.value = this.message; 77 | e.appendChild(msgBox); 78 | setTimeout(function() { 79 | msgBox.focus(); 80 | }, 500); 81 | 82 | // submit button 83 | var button = document.createElement('button'); 84 | button.innerHTML = 'Upload Image'; 85 | e.appendChild(button); 86 | button.onclick = function() { 87 | this.innerHTML = 'Uploading...'; 88 | self.submit(); 89 | }; 90 | 91 | return e; 92 | }; 93 | -------------------------------------------------------------------------------- /homepage/src/assets/svgs/安全.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /hexo/source/_posts/DataScienceAI/DataScienceAI-Reference.md: -------------------------------------------------------------------------------- 1 | --- 2 | abbrlink: c9942e5f 3 | categories: 4 | - DataScienceAI 5 | tags: 6 | - 数据科学与人工智能 7 | title: DataScienceAI-Reference 8 | --- 9 | > 本文[面向程序猿的数据科学与机器学习知识体系及资料合集](https://github.com/wxyyxc1992/DataScience-And-MachineLearning-Handbook-For-Coders/DataScience-Reference)从属于[程序猿的数据科学与机器学习实战手册](https://github.com/wxyyxc1992/DataScience-And-MachineLearning-Handbook-For-Coders)。本文很多内容来自于[hitvoice@github](https://github.com/hitvoice)的建议与收集,特此感谢。 10 | 11 | # DataScienceAI-Reference 12 | 13 | 本文是笔者在学习DataScience过程中所有资源的汇总,本文着眼于各个领域的入门介绍以及综述性质资源的汇总,并不会过多的深挖前沿,若有兴趣了解更多,可以关注笔者的[程序猿的数据科学与机器学习实战手册](https://github.com/wxyyxc1992/DataScience-And-MachineLearning-Handbook-For-Coders)。本文主线从对数据科学与机器学习入门概览开始,继而提供一系列的资源、书籍与教程,然后介绍各个具体的领域内的参考文章,最后介绍一系列的实用工具。笔者的数据科学与机器学习世界观图解如下,其从属于笔者的[编程世界观与方法论](https://github.com/wxyyxc1992/Coder-Knowledge-Graph/blob/master/when-you-want-to-learn.zh.md)系列: 14 | 15 | ![](https://coding.net/u/hoteam/p/Cache/git/raw/master/DataScience.png) 16 | 17 | 本文会随着笔者自身学习实践中格局与能力的提升而不断完善,笔者并非纯粹的机器学习与数据挖掘研究者,更多的是从工程的角度来寻找能够与工程相结合应用的方面。 18 | 19 | # Overview:概论 20 | - [数据科学与机器学习导论](https://segmentfault.com/a/1190000005801260) 21 | - [数据分析,数据挖掘,数据科学,机器学习与大数据之间的异同](https://www.quora.com/What-is-the-difference-between-Data-Analytics-Data-Analysis-Data-Mining-Data-Science-Machine-Learning-and-Big-Data-1) 22 | - [如何向非计算机科学与技术的人解释机器学习与数据挖掘](https://www.quora.com/How-do-you-explain-Machine-Learning-and-Data-Mining-to-non-Computer-Science-people) 23 | 24 | # Collection:资料索引 25 | - [人工智能从入门到进阶,机器之心高分技术文章全集](http://mp.weixin.qq.com/s/o6egF1_usHSXZCZJ1RTfhQ) 26 | 27 | # Case:案例 28 | - [深度学习带来的变革:深度学习的十个典型应用](https://segmentfault.com/a/1190000007391860) 29 | - [2015 年 Quora关于其机器学习具体应用的讲解](https://www.quora.com/How-does-Quora-use-machine-learning-in-2015) 30 | - [Using Deep Learning to Discover Drugs, Classify Pokémon, Save Zebras, Play Flappy Bird & More](https://medium.com/transmission-newsletter/using-deep-learning-to-discover-drugs-classify-pok%C3%A9mon-save-zebras-play-flappy-bird-more-a3a57fc98a15?source=reading_list---------1-2) 31 | 32 | 33 | # Engineering:工程化 34 | 35 | # Others:其他 36 | ## Competition:机器学习相关竞赛 37 | 38 | - [阿里天池 新人实战赛](https://tianchi.shuju.aliyun.com/getStart/index.htm?spm=5176.100065.111.3.jgYTrv&id=&_lang=zh_CN) 39 | - [Kaggle](https://www.kaggle.com/competitions):官方新人赛,不错的入门学习 40 | - [Kaggle Tutorial](https://www.dataquest.io/blog/kaggle-tutorial/):基于旅馆推荐比赛实例的完整Tutorial 41 | - [Driven Data](https://www.drivendata.org/competitions/) 42 | - [Innocentive](https://www.innocentive.com/ar/challenge/browse) 43 | - [Crowdanalytix](https://www.crowdanalytix.com/community) 44 | - [Tunedit](http://tunedit.org/challenges?type=student) 45 | - [DataFountain](http://www.wid.org.cn/data/science/player/home/;jsessionid=47D3236D25B0A85DE344BEFCBF1159F6-n1):DF,CCF指定中国专业的数据竞赛平台 46 | 47 | ## Career:职业 48 | 49 | - [Quora 关于机器学习的招聘启事](https://www.quora.com/careers/technical_lead_machine_learning) 50 | - [Google 关于机器学习与人工智能岗位的招聘启事](https://www.google.com/about/careers/search?_ga=1.89288795.153537653.1473158707#!t=jo&jid=28625001&) 51 | -------------------------------------------------------------------------------- /homepage/src/components/retrieval/Retrieval.scss: -------------------------------------------------------------------------------- 1 | .retrieval { 2 | &-header { 3 | display: flex; 4 | 5 | h2 { 6 | margin-right: 16px; 7 | } 8 | } 9 | 10 | &-search { 11 | display: flex; 12 | 13 | > .left { 14 | margin-right: 16px; 15 | min-width: 250px; 16 | } 17 | 18 | > .right { 19 | width: 690px; 20 | 21 | .ais-Hits-list { 22 | display: flex; 23 | flex-direction: column; 24 | } 25 | 26 | .ais-Hits-item { 27 | width: 690px; 28 | } 29 | 30 | .ais-Pagination { 31 | margin-top: 16px; 32 | } 33 | } 34 | } 35 | 36 | &-refinements { 37 | .refinement { 38 | height: auto; 39 | background: #fff; 40 | border-radius: 4px; 41 | box-shadow: 0 2px 4px 1px rgba(0, 0, 0, 0.4); 42 | margin-bottom: 16px; 43 | padding: 16px; 44 | } 45 | 46 | .ais-SearchBox-input { 47 | border: none; 48 | border-bottom: 1px solid #c4c8d8; 49 | padding-bottom: 5px; 50 | border-radius: 0px; 51 | font-size: 14px; 52 | } 53 | 54 | ul.ais-RefinementList-list { 55 | max-height: 300px; 56 | overflow: auto; 57 | } 58 | 59 | .ais-RefinementList-label { 60 | height: 20px; 61 | .ais-RefinementList-labelText { 62 | font-size: 14px; 63 | line-height: 1.5; 64 | } 65 | 66 | .ais-RefinementList-checkbox { 67 | margin-right: 16px; 68 | } 69 | .ais-RefinementList-count { 70 | background: none; 71 | padding: 0; 72 | font-size: 12px; 73 | line-height: 24px; 74 | color: #999; 75 | float: right; 76 | } 77 | } 78 | } 79 | 80 | &-search-box { 81 | .stats { 82 | height: 40px; 83 | 84 | display: flex; 85 | align-items: center; 86 | 87 | .ais-Stats { 88 | margin-right: 16px; 89 | } 90 | } 91 | } 92 | 93 | &-hit { 94 | display: flex; 95 | 96 | > .left { 97 | flex: 150px 0 0; 98 | padding: 0px 8px; 99 | height: 100%; 100 | 101 | .repo { 102 | margin: 8px 0px; 103 | } 104 | } 105 | 106 | > .right { 107 | flex: 1px 1 1; 108 | 109 | .title { 110 | display: flex; 111 | align-items: center; 112 | 113 | .ais-Highlight { 114 | width: 100px; 115 | margin-right: 16px; 116 | } 117 | 118 | .fileName { 119 | display: inline-block; 120 | 121 | flex: 150px 0 0; 122 | 123 | span.antd-pro-ellipsis-ellipsis { 124 | font-size: 16px; 125 | color: #1890ff; 126 | } 127 | } 128 | 129 | > span, 130 | .antd-pro-ellipsis-ellipsis { 131 | color: rgba(0, 0, 0, 0.65); 132 | font-size: 14px; 133 | } 134 | } 135 | 136 | .content { 137 | max-height: 130px; 138 | overflow: auto; 139 | color: rgba(0, 0, 0, 0.45); 140 | word-break: break-all; 141 | 142 | .ais-Highlight-nonHighlighted { 143 | font-size: 12px; 144 | } 145 | } 146 | } 147 | } 148 | } 149 | -------------------------------------------------------------------------------- /gh-craft/src/craft/scene/BasicScene.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @file 文件描述 3 | * @description 详细说明 4 | * 5 | * @author 王下邀月熊 <384924552@qq.com> 6 | * 7 | * Created Date: Sat, 2018-05-26 15:06:21 8 | * 9 | * Last Modified: Sat, 2018-05-26 15:10:11 10 | * Last Modified By: 王下邀月熊 <384924552@qq.com> 11 | * 12 | * This code is licensed under the MIT License. 13 | */ 14 | 15 | var createGame = require('voxel-engine'); 16 | var highlight = require('voxel-highlight'); 17 | var player = require('voxel-player'); 18 | var voxel = require('voxel'); 19 | var extend = require('extend'); 20 | var fly = require('voxel-fly'); 21 | var walk = require('voxel-walk'); 22 | 23 | export default class BasicScene {} 24 | 25 | module.exports = function(opts, setup) { 26 | setup = setup || defaultSetup; 27 | var defaults = { 28 | generate: voxel.generator['Valley'], 29 | chunkDistance: 2, 30 | materials: ['#fff', '#000'], 31 | materialFlatColor: true, 32 | worldOrigin: [0, 0, 0], 33 | controls: { discreteFire: true } 34 | }; 35 | opts = extend({}, defaults, opts || {}); 36 | 37 | // setup the game and add some trees 38 | var game = createGame(opts); 39 | var container = opts.container || document.body; 40 | window.game = game; // for debugging 41 | game.appendTo(container); 42 | if (game.notCapable()) return game; 43 | 44 | var createPlayer = player(game); 45 | 46 | // create the player from a minecraft skin file and tell the 47 | // game to use it as the main player 48 | var avatar = createPlayer(opts.playerSkin || 'player.png'); 49 | avatar.possess(); 50 | avatar.yaw.position.set(2, 14, 4); 51 | 52 | setup(game, avatar); 53 | 54 | return { game, player: avatar, walk }; 55 | }; 56 | 57 | function defaultSetup(game, avatar) { 58 | var makeFly = fly(game); 59 | var target = game.controls.target(); 60 | game.flyer = makeFly(target); 61 | 62 | // highlight blocks when you look at them, hold for block placement 63 | var blockPosPlace, blockPosErase; 64 | var hl = (game.highlighter = highlight(game, { color: 0xff0000 })); 65 | hl.on('highlight', function(voxelPos) { 66 | blockPosErase = voxelPos; 67 | }); 68 | hl.on('remove', function(voxelPos) { 69 | blockPosErase = null; 70 | }); 71 | hl.on('highlight-adjacent', function(voxelPos) { 72 | blockPosPlace = voxelPos; 73 | }); 74 | hl.on('remove-adjacent', function(voxelPos) { 75 | blockPosPlace = null; 76 | }); 77 | 78 | // toggle between first and third person modes 79 | window.addEventListener('keydown', function(ev) { 80 | if (ev.keyCode === 'R'.charCodeAt(0)) avatar.toggle(); 81 | }); 82 | 83 | // block interaction stuff, uses highlight data 84 | var currentMaterial = 1; 85 | 86 | game.on('fire', function(target, state) { 87 | var position = blockPosPlace; 88 | if (position) { 89 | game.createBlock(position, currentMaterial); 90 | } else { 91 | position = blockPosErase; 92 | if (position) game.setBlock(position, 0); 93 | } 94 | }); 95 | 96 | game.on('tick', function() { 97 | walk.render(target.playerSkin); 98 | var vx = Math.abs(target.velocity.x); 99 | var vz = Math.abs(target.velocity.z); 100 | if (vx > 0.001 || vz > 0.001) walk.stopWalking(); 101 | else walk.startWalking(); 102 | }); 103 | } 104 | -------------------------------------------------------------------------------- /oreilly-generator/public/home_files/dragbox.directive.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | (function() { 4 | 'use strict'; 5 | 6 | 7 | /* Directives */ 8 | 9 | /* recommended */ 10 | /* demo14.directive.js */ 11 | 12 | /** 13 | * @desc order directive that is specific to the order module at a company named Acme 14 | * @example
15 | */ 16 | 17 | 18 | angular.module('websiteApp').directive('dragbox', dragBox); 19 | dragBox.$inject = ['$document', '$interval']; 20 | 21 | function dragBox($document) { 22 | 23 | var directive = { 24 | restrict: 'A', 25 | 26 | link: linkFunc 27 | }; 28 | 29 | return directive; 30 | 31 | 32 | function linkFunc (scope, element, attr) { 33 | var startX = 0, startY = 0, x = 0, y = 0, limitleft = 0, limitright = 0; 34 | var width = 0, height = 0; 35 | 36 | x = Number(attr.left); 37 | y = Number(attr.top); 38 | limitleft = Number(attr.limitleft); 39 | limitright = Number(attr.limitright); 40 | 41 | width = Number(attr.maxwidth); 42 | 43 | element.css({ 44 | position: 'relative', 45 | // border: '1px solid red', 46 | // backgroundColor: 'lightgrey' 47 | }); 48 | 49 | 50 | 51 | element.on('mousedown', function(event) { 52 | // Prevent default dragging of selected content 53 | event.preventDefault(); 54 | console.log(event.pageX, event.pageY); 55 | // console.log(element.offset().left, element.offset().top, element.offset().bottom); 56 | // console.log(element.position().left, element.position().top, element.position().bottom); 57 | startX = event.pageX - x; 58 | startY = event.pageY - y; 59 | $document.on('mousemove', mousemove); 60 | $document.on('mouseup', mouseup); 61 | 62 | }); 63 | 64 | function mousemove(event) { 65 | y = event.pageY - startY; 66 | x = event.pageX - startX; 67 | 68 | console.log(event.pageX, event.pageY, x, y); 69 | if (x < limitleft) x = limitleft; 70 | if (x > limitright) x = limitright; 71 | 72 | element.css({ 73 | top: y + 'px', 74 | left: x + 'px' 75 | }); 76 | } 77 | 78 | function mouseup() { 79 | $document.off('mousemove', mousemove); 80 | $document.off('mouseup', mouseup); 81 | } 82 | 83 | 84 | element.on('mousewheel', mousescroll); 85 | function mousescroll(evt) { 86 | evt.preventDefault(); 87 | // console.log(evt.offsetX + ':' + evt.offsetY, evt.originalEvent.wheelDelta); 88 | 89 | if (evt.originalEvent.wheelDelta > 0) { 90 | width++; 91 | } else { 92 | width--; 93 | } 94 | 95 | element.find('img').css({ 96 | maxWidth: width + 'px' 97 | }); 98 | 99 | } 100 | } 101 | } 102 | 103 | 104 | })(); 105 | -------------------------------------------------------------------------------- /oreilly-generator/public/src/js/directive/dragbox.directive.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | (function() { 4 | 'use strict'; 5 | 6 | 7 | /* Directives */ 8 | 9 | /* recommended */ 10 | /* demo14.directive.js */ 11 | 12 | /** 13 | * @desc order directive that is specific to the order module at a company named Acme 14 | * @example
15 | */ 16 | 17 | 18 | angular.module('websiteApp').directive('dragbox', dragBox); 19 | dragBox.$inject = ['$document', '$interval']; 20 | 21 | function dragBox($document) { 22 | 23 | var directive = { 24 | restrict: 'A', 25 | 26 | link: linkFunc 27 | }; 28 | 29 | return directive; 30 | 31 | 32 | function linkFunc (scope, element, attr) { 33 | var startX = 0, startY = 0, x = 0, y = 0, limitleft = 0, limitright = 0; 34 | var width = 0, height = 0; 35 | 36 | x = Number(attr.left); 37 | y = Number(attr.top); 38 | limitleft = Number(attr.limitleft); 39 | limitright = Number(attr.limitright); 40 | 41 | width = Number(attr.maxwidth); 42 | 43 | element.css({ 44 | position: 'relative', 45 | // border: '1px solid red', 46 | // backgroundColor: 'lightgrey' 47 | }); 48 | 49 | 50 | 51 | element.on('mousedown', function(event) { 52 | // Prevent default dragging of selected content 53 | event.preventDefault(); 54 | console.log(event.pageX, event.pageY); 55 | // console.log(element.offset().left, element.offset().top, element.offset().bottom); 56 | // console.log(element.position().left, element.position().top, element.position().bottom); 57 | startX = event.pageX - x; 58 | startY = event.pageY - y; 59 | $document.on('mousemove', mousemove); 60 | $document.on('mouseup', mouseup); 61 | 62 | }); 63 | 64 | function mousemove(event) { 65 | y = event.pageY - startY; 66 | x = event.pageX - startX; 67 | 68 | console.log(event.pageX, event.pageY, x, y); 69 | if (x < limitleft) x = limitleft; 70 | if (x > limitright) x = limitright; 71 | 72 | element.css({ 73 | top: y + 'px', 74 | left: x + 'px' 75 | }); 76 | } 77 | 78 | function mouseup() { 79 | $document.off('mousemove', mousemove); 80 | $document.off('mouseup', mouseup); 81 | } 82 | 83 | 84 | element.on('mousewheel', mousescroll); 85 | function mousescroll(evt) { 86 | evt.preventDefault(); 87 | // console.log(evt.offsetX + ':' + evt.offsetY, evt.originalEvent.wheelDelta); 88 | 89 | if (evt.originalEvent.wheelDelta > 0) { 90 | width++; 91 | } else { 92 | width--; 93 | } 94 | 95 | element.find('img').css({ 96 | maxWidth: width + 'px' 97 | }); 98 | 99 | } 100 | } 101 | } 102 | 103 | 104 | })(); 105 | -------------------------------------------------------------------------------- /glossary-cards/src/index.css: -------------------------------------------------------------------------------- 1 | html, 2 | body { 3 | height: 100%; 4 | } 5 | 6 | body { 7 | background-color: #000000; 8 | margin: 0; 9 | font-family: Arial; 10 | overflow: hidden; 11 | } 12 | 13 | a { 14 | color: #ffffff; 15 | } 16 | 17 | body { 18 | position: absolute; 19 | height: 100%; 20 | width: 100%; 21 | background: -webkit-linear-gradient( 22 | 90deg, 23 | #c04848 10%, 24 | #480048 90% 25 | ); /* Chrome 10+, Saf5.1+ */ 26 | background: -moz-linear-gradient( 27 | 90deg, 28 | #c04848 10%, 29 | #480048 90% 30 | ); /* FF3.6+ */ 31 | background: -ms-linear-gradient(90deg, #c04848 10%, #480048 90%); /* IE10 */ 32 | background: -o-linear-gradient( 33 | 90deg, 34 | #c04848 10%, 35 | #480048 90% 36 | ); /* Opera 11.10+ */ 37 | background: linear-gradient(90deg, #c04848 10%, #480048 90%); /* W3C */ 38 | } 39 | 40 | #container { 41 | position: absolute; 42 | top: 0; 43 | left: 0; 44 | right: 0; 45 | bottom: 0; 46 | width: 100%; 47 | height: 100%; 48 | display: block; 49 | background: url(http://www.script-tutorials.com/demos/360/images/stars.png) 50 | repeat top center; 51 | z-index: 0; 52 | } 53 | 54 | #info { 55 | position: absolute; 56 | width: 100%; 57 | color: #ffffff; 58 | padding: 5px; 59 | font-family: Monospace; 60 | font-size: 13px; 61 | font-weight: bold; 62 | text-align: center; 63 | } 64 | 65 | #menu { 66 | position: absolute; 67 | bottom: 30px; 68 | width: 100%; 69 | text-align: center; 70 | } 71 | 72 | #credits { 73 | position: fixed; 74 | bottom: 5px; 75 | margin-left: calc(50vw - 110px); 76 | 77 | color: white; 78 | font-size: 12px; 79 | } 80 | 81 | .element { 82 | width: 500px; 83 | height: 180px; 84 | box-shadow: 0px 0px 20px rgba(0, 255, 255, 0.5); 85 | border: 1px solid rgba(127, 255, 255, 0.25); 86 | cursor: default; 87 | } 88 | 89 | .element:hover { 90 | box-shadow: 0px 0px 20px rgba(0, 255, 255, 0.75); 91 | border: 1px solid rgba(127, 255, 255, 0.75); 92 | } 93 | 94 | .element .number { 95 | position: absolute; 96 | top: 20px; 97 | right: 20px; 98 | font-size: 20px; 99 | color: rgba(127, 255, 255, 0.75); 100 | } 101 | 102 | .element .symbol { 103 | position: absolute; 104 | top: 40px; 105 | width: 100%; 106 | font-size: 70px; 107 | text-align: center; 108 | color: rgba(255, 255, 255, 0.75); 109 | font-weight: bold; 110 | 111 | -webkit-filter: drop-shadow(0px 0px 20px rgba(0, 255, 255, 0.95)); 112 | -moz-filter: drop-shadow(0px 0px 20px rgba(0, 255, 255, 0.95)); 113 | -o-filter: drop-shadow(0px 0px 20px rgba(0, 255, 255, 0.95)); 114 | -ms-filter: drop-shadow(0px 0px 20px rgba(0, 255, 255, 0.95)); 115 | filter: drop-shadow(0px 0px 20px rgba(0, 255, 255, 0.95)); 116 | } 117 | 118 | .element .details { 119 | position: absolute; 120 | top: 125px; 121 | width: 100%; 122 | font-size: 18px; 123 | text-align: center; 124 | color: rgba(127, 255, 255, 0.75); 125 | } 126 | 127 | button { 128 | color: rgba(127, 255, 255, 0.75); 129 | background: transparent; 130 | outline: 1px solid rgba(127, 255, 255, 0.75); 131 | border: 0px; 132 | padding: 5px 10px; 133 | cursor: pointer; 134 | } 135 | 136 | button:hover { 137 | background-color: rgba(0, 255, 255, 0.5); 138 | } 139 | 140 | button:active { 141 | color: #000000; 142 | background-color: rgba(0, 255, 255, 0.75); 143 | } 144 | -------------------------------------------------------------------------------- /gh-craft/index.old.js: -------------------------------------------------------------------------------- 1 | const WebView = require('./src/plugins/DialogWebView'); 2 | 3 | const urls = { 4 | 'awesome-links': 'https://github.com/wxyyxc1992/Awesome-Links', 5 | 'awesome-coder': 'https://github.com/wxyyxc1992/Awesome-Coder', 6 | 'awesome-cheatsheet': 'https://github.com/wxyyxc1992/Awesome-CheatSheet' 7 | }; 8 | 9 | const slides = Object.keys(urls); 10 | 11 | /** 初始化游戏 */ 12 | const { game, player, walk } = require('./src/world/BasicWorld')({ 13 | texturePath: './textures/', 14 | playerSkin: './textures/player.png', 15 | materials: [['grass', 'brick']] 16 | .concat(slides) 17 | .concat(['王', '下', '邀', '月', '熊', 'fire']), 18 | materialFlatColor: false, 19 | generateVoxelChunks: false, 20 | chunkDistance: 1 21 | }); 22 | 23 | player.toggle(); 24 | 25 | const webView = new WebView(game, { 26 | url: 'https://github.com/wxyyxc1992/xCompass/tree/master/x-home/gh-craft', 27 | contents: [document.querySelector('#ifr')] 28 | }); 29 | 30 | /** 初始化设置块 */ 31 | game.setBlock([-6, 10, -10], 'fire'); 32 | game.setBlock([-4, 10, -10], '王'); 33 | game.setBlock([-2, 10, -10], '下'); 34 | game.setBlock([-0, 10, -10], '邀'); 35 | game.setBlock([2, 10, -10], '月'); 36 | game.setBlock([4, 10, -10], '熊'); 37 | game.setBlock([6, 10, -10], 'fire'); 38 | 39 | let z = -2; 40 | let y = 3; 41 | 42 | slides.map(function(slide) { 43 | game.setBlock([z, y, -4], slide); 44 | z += 2; 45 | if (z > 5) { 46 | z = -5; 47 | y += 2; 48 | } 49 | }); 50 | 51 | /** 设置块的消除回调 */ 52 | game.on('setBlock', function(pos, val, old) { 53 | if (old === 1 || val === 1) return; 54 | var url = urls[slides[old - 2]]; 55 | // var win = window.open(url); 56 | // window.location.href = url; 57 | webView.open(); 58 | }); 59 | 60 | game.interact.on('release', function() { 61 | game.paused = true; 62 | }); 63 | game.interact.on('attain', function() { 64 | game.paused = false; 65 | }); 66 | 67 | //create image 68 | var bitmap = document.createElement('canvas'); 69 | var g = bitmap.getContext('2d'); 70 | bitmap.width = 512; 71 | bitmap.height = 512; 72 | g.font = 'Bold 20px Arial'; 73 | 74 | var text = '少时诵诗书所所所所所所所所'; 75 | 76 | // g.fillStyle = 'black'; 77 | // g.fillText(text, 0, 20); 78 | g.fillStyle = 'black'; 79 | g.fillText(text, bitmap.width / 2, bitmap.height / 2); 80 | 81 | // canvas contents will be used for a texture 82 | var texture = new game.THREE.Texture(bitmap); 83 | texture.needsUpdate = true; 84 | 85 | // immediately use the texture for material creation 86 | var material = new game.THREE.MeshFaceMaterial({ map: texture }); 87 | 88 | console.log(game.setBlock([6, 10, -11], material)); 89 | 90 | var mesh = new game.THREE.Mesh( 91 | new game.THREE.CubeGeometry(game.cubeSize, game.cubeSize, game.cubeSize), // width, height, depth 92 | [material, material, material, material, material, material] 93 | ); 94 | 95 | // move item to some location 96 | // mesh.translateX(87.5); 97 | // mesh.translateY(420); 98 | // mesh.translateZ(12.5); 99 | 100 | // if these item dimensions don't match the mesh's dimensions, 101 | // the object's physics will not operate correctly. 102 | var item = { 103 | mesh: mesh 104 | // width: 1, 105 | // height: 1, 106 | // depth: 1, 107 | // collisionRadius: 20, // padding around object dimensions box for collisions 108 | // velocity: { x: 0, y: 0, z: 0 } // initial velocity 109 | }; 110 | 111 | console.log(game.items.length); 112 | setTimeout(() => { 113 | game.addItem(item); 114 | }, 1000); 115 | // use `game.removeItem(item)` to remove 116 | game.items.length; // => 1 117 | 118 | var materialEngine = game.materials; 119 | 120 | createCube(0, [material]); 121 | 122 | window.game = game; 123 | -------------------------------------------------------------------------------- /homepage/src/components/footer/IFooter.tsx: -------------------------------------------------------------------------------- 1 | import { Row, Col, Divider } from 'antd'; 2 | import cn from 'classnames'; 3 | import * as React from 'react'; 4 | 5 | import './IFooter.scss'; 6 | 7 | const prefix = 'footer'; 8 | 9 | const Item = ({ imgSrc, href, label }: { imgSrc?: string; href: string; label: string }) => ( 10 |
16 | {imgSrc && alt} 17 | 18 | {label} 19 | 20 |
21 | ); 22 | 23 | export default class IFooter extends React.Component { 24 | render() { 25 | return ( 26 |
27 | 28 | 29 |

博客

30 | 35 | 40 | 45 | 50 | 51 | 52 |

代码

53 | 58 | 63 | 68 | 69 | 70 |

技术之路

71 | 75 | 79 | 83 | 87 | 88 | 89 |

工具

90 | 91 | 92 |

其他

93 | 94 |
95 | 96 | 某熊的技术视野 ©2018 王下邀月熊 97 |
98 | ); 99 | } 100 | } 101 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![default](https://user-images.githubusercontent.com/5803001/40462361-257cfd48-5f42-11e8-899a-d0077c37d931.png) 2 | 3 | # xCompass | 引航者 4 | 5 | xCompass 是自我知识管理能力的外化,对于笔者自我知识管理的理念可以参考 [Coder Roadmap-程序员的技术视野、知识管理与职业规划,提高个人与团队的研发效能](https://github.com/wxyyxc1992/Coder-Roadmap)。其检索能力由 [Soogle](https://github.com/wxyyxc1992/Soogle) 提供,其目前包含以下部分: 6 | 7 | - [homepage](./homepage): 个人主页,包含了技术视野、知识图谱、知识检索 8 | 9 | - [gh-cards](./gh-cards): Github 个人卡片 10 | 11 | - [gh-craft](./gh-craft): 仿 MineCraft 的 Github 个人介绍 12 | 13 | - [glossary-cards](./gh-cards): 基于 Three.js 的三维卡片 14 | 15 | 建议前往 [xCompass](http://wxyyxc1992.github.io/) 主页交互式浏览。 16 | 17 | # gh-craft 18 | 19 | 20 | 21 | # About 22 | 23 | ## Home & More | 延伸阅读 24 | 25 | ![](https://i.postimg.cc/59QVkFPq/image.png) 26 | 27 | 您可以通过以下导航来在 Gitbook 中阅读笔者的系列文章,涵盖了技术资料归纳、编程语言与理论、Web 与大前端、服务端开发与基础架构、云计算与大数据、数据科学与人工智能、产品设计等多个领域: 28 | 29 | - 知识体系:《[Awesome Lists](https://ngte-al.gitbook.io/i/)》、《[Awesome CheatSheets](https://ngte-ac.gitbook.io/i/)》、《[Awesome Interviews](https://github.com/wx-chevalier/Awesome-Interviews)》、《[Awesome RoadMaps](https://github.com/wx-chevalier/Awesome-RoadMaps)》、《[Awesome MindMaps](https://github.com/wx-chevalier/Awesome-MindMaps)》、《[Awesome-CS-Books-Warehouse](https://github.com/wx-chevalier/Awesome-CS-Books-Warehouse)》 30 | 31 | - 编程语言:《[编程语言理论](https://ngte-pl.gitbook.io/i/)》、《[Java 实战](https://ngte-pl.gitbook.io/i/java/java)》、《[JavaScript 实战](https://ngte-pl.gitbook.io/i/javascript/javascript)》、《[Go 实战](https://ngte-pl.gitbook.io/i/go/go)》、《[Python 实战](https://ngte-pl.gitbook.io/i/python/python)》、《[Rust 实战](https://ngte-pl.gitbook.io/i/rust/rust)》 32 | 33 | - 软件工程、模式与架构:《[编程范式与设计模式](https://ngte-se.gitbook.io/i/)》、《[数据结构与算法](https://ngte-se.gitbook.io/i/)》、《[软件架构设计](https://ngte-se.gitbook.io/i/)》、《[整洁与重构](https://ngte-se.gitbook.io/i/)》、《[协作与项目管理](https://ngte-se.gitbook.io/i/)》 34 | 35 | * Web 与大前端:《[现代 Web 开发基础与工程实践](https://ngte-web.gitbook.io/i/)》、《[数据可视化](https://ngte-fe.gitbook.io/i/)》、《[iOS](https://ngte-fe.gitbook.io/i/)》、《[Android](https://ngte-fe.gitbook.io/i/)》、《[混合开发与跨端应用](https://ngte-fe.gitbook.io/i/)》 36 | 37 | * 服务端开发实践与工程架构:《[服务端基础](https://ngte-be.gitbook.io/i/)》、《[微服务与云原生](https://ngte-be.gitbook.io/i/)》、《[测试与高可用保障](https://ngte-be.gitbook.io/i/)》、《[DevOps](https://ngte-be.gitbook.io/i/)》、《[Node](https://ngte-be.gitbook.io/i/)》、《[Spring](https://ngte-be.gitbook.io/i/)》、《[信息安全与渗透测试](https://ngte-be.gitbook.io/i/)》 38 | 39 | * 分布式基础架构:《[分布式系统](https://ngte-infras.gitbook.io/i/)》、《[分布式计算](https://ngte-infras.gitbook.io/i/)》、《[数据库](https://ngte-infras.gitbook.io/i/)》、《[网络](https://ngte-infras.gitbook.io/i/)》、《[虚拟化与编排](https://ngte-infras.gitbook.io/i/)》、《[云计算与大数据](https://ngte-infras.gitbook.io/i/)》、《[Linux 与操作系统](https://ngte-infras.gitbook.io/i/)》 40 | 41 | * 数据科学,人工智能与深度学习:《[数理统计](https://ngte-aidl.gitbook.io/i/)》、《[数据分析](https://ngte-aidl.gitbook.io/i/)》、《[机器学习](https://ngte-aidl.gitbook.io/i/)》、《[深度学习](https://ngte-aidl.gitbook.io/i/)》、《[自然语言处理](https://ngte-aidl.gitbook.io/i/)》、《[工具与工程化](https://ngte-aidl.gitbook.io/i/)》、《[行业应用](https://ngte-aidl.gitbook.io/i/)》 42 | 43 | * 产品设计与用户体验:《[产品设计](https://ngte-pd.gitbook.io/i/)》、《[交互体验](https://ngte-pd.gitbook.io/i/)》、《[项目管理](https://ngte-pd.gitbook.io/i/)》 44 | 45 | * 行业应用:《[行业迷思](https://github.com/wx-chevalier/Business-Series)》、《[功能域](https://github.com/wx-chevalier/Business-Series)》、《[电子商务](https://github.com/wx-chevalier/Business-Series)》、《[智能制造](https://github.com/wx-chevalier/Business-Series)》 46 | 47 | 此外,前往 [xCompass](https://wx-chevalier.github.io/home/#/search) 交互式地检索、查找需要的文章/链接/书籍/课程;或者在在 [MATRIX 文章与代码索引矩阵](https://github.com/wx-chevalier/Developer-Zero-To-Mastery)中查看文章与项目源代码等更详细的目录导航信息。最后,你也可以关注微信公众号:『**某熊的技术之路**』以获取最新资讯。 48 | -------------------------------------------------------------------------------- /homepage/public/km.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 知识管理 6 | 7 | 8 | 9 |
14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /hexo/scripts/crc32.js: -------------------------------------------------------------------------------- 1 | /* crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */ 2 | /* vim: set ts=2: */ 3 | /*exported CRC32 */ 4 | 'use strict'; 5 | var CRC32; 6 | (function (factory) { 7 | /*jshint ignore:start */ 8 | if(typeof DO_NOT_EXPORT_CRC === 'undefined') { 9 | if('object' === typeof exports) { 10 | factory(exports); 11 | } else if ('function' === typeof define && define.amd) { 12 | define(function () { 13 | var module = {}; 14 | factory(module); 15 | return module; 16 | }); 17 | } else { 18 | factory(CRC32 = {}); 19 | } 20 | } else { 21 | factory(CRC32 = {}); 22 | } 23 | /*jshint ignore:end */ 24 | }(function(CRC32) { 25 | CRC32.version = '0.4.1'; 26 | /* see perf/crc32table.js */ 27 | /*global Int32Array */ 28 | function signed_crc_table() { 29 | var c = 0, table = new Array(256); 30 | 31 | for(var n =0; n != 256; ++n){ 32 | c = n; 33 | c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); 34 | c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); 35 | c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); 36 | c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); 37 | c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); 38 | c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); 39 | c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); 40 | c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); 41 | table[n] = c; 42 | } 43 | 44 | return typeof Int32Array !== 'undefined' ? new Int32Array(table) : table; 45 | } 46 | 47 | var T = signed_crc_table(); 48 | /*global Buffer */ 49 | var use_buffer = typeof Buffer !== 'undefined'; 50 | function crc32_bstr(bstr) { 51 | if(bstr.length > 32768) if(use_buffer) return crc32_buf_8(new Buffer(bstr)); 52 | var C = -1, L = bstr.length - 1; 53 | for(var i = 0; i < L;) { 54 | C = (C>>>8) ^ T[(C^bstr.charCodeAt(i++))&0xFF]; 55 | C = (C>>>8) ^ T[(C^bstr.charCodeAt(i++))&0xFF]; 56 | } 57 | if(i === L) C = (C>>>8) ^ T[(C ^ bstr.charCodeAt(i))&0xFF]; 58 | return C ^ -1; 59 | } 60 | 61 | function crc32_buf(buf) { 62 | if(buf.length > 10000) return crc32_buf_8(buf); 63 | var C = -1, L = buf.length - 3; 64 | for(var i = 0; i < L;) { 65 | C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; 66 | C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; 67 | C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; 68 | C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; 69 | } 70 | while(i < L+3) C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; 71 | return C ^ -1; 72 | } 73 | 74 | function crc32_buf_8(buf) { 75 | var C = -1, L = buf.length - 7; 76 | for(var i = 0; i < L;) { 77 | C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; 78 | C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; 79 | C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; 80 | C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; 81 | C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; 82 | C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; 83 | C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; 84 | C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; 85 | } 86 | while(i < L+7) C = (C>>>8) ^ T[(C^buf[i++])&0xFF]; 87 | return C ^ -1; 88 | } 89 | 90 | function crc32_str(str) { 91 | var C = -1; 92 | for(var i = 0, L=str.length, c, d; i < L;) { 93 | c = str.charCodeAt(i++); 94 | if(c < 0x80) { 95 | C = (C>>>8) ^ T[(C ^ c)&0xFF]; 96 | } else if(c < 0x800) { 97 | C = (C>>>8) ^ T[(C ^ (192|((c>>6)&31)))&0xFF]; 98 | C = (C>>>8) ^ T[(C ^ (128|(c&63)))&0xFF]; 99 | } else if(c >= 0xD800 && c < 0xE000) { 100 | c = (c&1023)+64; d = str.charCodeAt(i++)&1023; 101 | C = (C>>>8) ^ T[(C ^ (240|((c>>8)&7)))&0xFF]; 102 | C = (C>>>8) ^ T[(C ^ (128|((c>>2)&63)))&0xFF]; 103 | C = (C>>>8) ^ T[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF]; 104 | C = (C>>>8) ^ T[(C ^ (128|(d&63)))&0xFF]; 105 | } else { 106 | C = (C>>>8) ^ T[(C ^ (224|((c>>12)&15)))&0xFF]; 107 | C = (C>>>8) ^ T[(C ^ (128|((c>>6)&63)))&0xFF]; 108 | C = (C>>>8) ^ T[(C ^ (128|(c&63)))&0xFF]; 109 | } 110 | } 111 | return C ^ -1; 112 | } 113 | CRC32.table = T; 114 | CRC32.bstr = crc32_bstr; 115 | CRC32.buf = crc32_buf; 116 | CRC32.str = crc32_str; 117 | })); -------------------------------------------------------------------------------- /gh-craft/main.js: -------------------------------------------------------------------------------- 1 | var tic = require('tic')(); 2 | var createGame = require('voxel-engine'); 3 | 4 | var game = createGame({ 5 | chunkDistance: 2, 6 | generate: function(x, y, z) { 7 | return Math.sqrt(x * x + y * y + z * z) > 20 || y * y > 10 8 | ? 0 9 | : Math.random() * 3 + 1; 10 | }, 11 | materials: ['brick', ['grass', 'dirt', 'grass_dirt'], 'dirt'], 12 | texturePath: 'textures/' 13 | }); 14 | var container = document.getElementById('container'); 15 | game.appendTo(container); 16 | 17 | game.addStats(); 18 | 19 | // Our texture builder 20 | var materialEngine = game.materials; 21 | 22 | function ext(name) { 23 | return String(name).indexOf('.') !== -1 ? name : name + '.png'; 24 | } 25 | 26 | var bitmap = document.createElement('canvas'); 27 | var g = bitmap.getContext('2d'); 28 | debugger; 29 | bitmap.width = 256; 30 | bitmap.height = 256; 31 | g.font = 'Bold 99px Arial'; 32 | 33 | var text = '少'; 34 | 35 | g.fillStyle = 'black'; 36 | g.fillText(text, bitmap.width / 2, bitmap.height / 2); 37 | 38 | materialEngine.pack = function(name, done) { 39 | var self = this; 40 | function pack(img) { 41 | var node = self.atlas.pack(img); 42 | if (node === false) { 43 | self.atlas = self.atlas.expand(img); 44 | self.atlas.tilepad = true; 45 | } 46 | done(); 47 | } 48 | if (typeof name === 'string') { 49 | var img = new Image(); 50 | img.id = name; 51 | img.crossOrigin = self.options.crossOrigin; 52 | // img.src = self.texturePath + ext(name); 53 | img.src = bitmap.toDataURL(); 54 | img.onload = function() { 55 | // if (isTransparent(img)) { 56 | // self.transparents.push(name); 57 | // } 58 | pack(img); 59 | }; 60 | img.onerror = function() { 61 | console.error("Couldn't load URL [" + img.src + ']'); 62 | done(); 63 | }; 64 | } else { 65 | pack(name); 66 | } 67 | return self; 68 | }; 69 | 70 | // Give console access to game 71 | window.game = game; 72 | 73 | // hold the cubes we create 74 | var cubes = []; 75 | 76 | // create a player 77 | var createPlayer = require('voxel-player')(game); 78 | var shama = createPlayer('textures/shama.png'); 79 | shama.yaw.position.set(0, 10, 0); 80 | shama.possess(); 81 | 82 | // explode voxel on click 83 | var explode = require('voxel-debris')(game, { power: 1.5 }); 84 | game.on('fire', function(pos) { 85 | var pos = game.raycast(game.cameraPosition(), game.cameraVector(), 100).voxel; 86 | if (erase) explode(pos); 87 | else game.createBlock(pos, 1); 88 | }); 89 | 90 | window.addEventListener('keydown', ctrlToggle); 91 | window.addEventListener('keyup', ctrlToggle); 92 | 93 | var erase = true; 94 | function ctrlToggle(ev) { 95 | erase = !ev.ctrlKey; 96 | } 97 | 98 | game.on('tick', function(dt) { 99 | materialEngine.tick(dt); 100 | tic.tick(dt); 101 | cubes.forEach(function(cube, i) { 102 | cube.rotation.y += Math.PI / 180; 103 | }); 104 | }); 105 | 106 | function createCube(i, materials) { 107 | // create a mesh 108 | var obj = new game.THREE.Object3D(); 109 | var mesh = new game.THREE.Mesh( 110 | new game.THREE.CubeGeometry(game.cubeSize, game.cubeSize, game.cubeSize), 111 | game.materials.material 112 | ); 113 | mesh.translateY(game.cubeSize / 2); 114 | obj.add(mesh); 115 | obj.position.set(3, 5, i * 2); 116 | 117 | // paint the mesh 118 | materialEngine.paint(mesh, materials); 119 | mesh.geometry.uvsNeedUpdate = true; 120 | 121 | // create a rotating jumping cube 122 | var cube = game.addItem({ 123 | mesh: obj, 124 | size: game.cubeSize, 125 | velocity: { x: 0, y: 0, z: 0 } 126 | }); 127 | 128 | tic.interval(function() { 129 | cube.velocity.y += 0.03; 130 | }, i * 200 + 2000); 131 | 132 | cubes.push(cube); 133 | return cube; 134 | } 135 | 136 | // load materials 137 | var materials = [ 138 | ['0'], 139 | ['0', '1'], 140 | ['0', '1', '2'], 141 | ['0', '1', '2', '3'], 142 | ['0', '1', '2', '3', '4', '5'], 143 | { 144 | top: 'grass', 145 | bottom: 'dirt', 146 | front: 'grass_dirt', 147 | back: 'grass_dirt', 148 | left: 'grass_dirt', 149 | right: 'grass_dirt' 150 | } 151 | ]; 152 | materialEngine.load(materials, function() { 153 | for (var i = 0; i < materials.length; i++) { 154 | createCube(i, materials[i]); 155 | } 156 | }); 157 | -------------------------------------------------------------------------------- /homepage/src/components/retrieval/Retrieval.tsx: -------------------------------------------------------------------------------- 1 | import { Divider } from 'antd'; 2 | import * as React from 'react'; 3 | import { 4 | InstantSearch, 5 | Hits, 6 | SearchBox, 7 | RefinementList, 8 | CurrentRefinements, 9 | ClearRefinements, 10 | Pagination, 11 | Configure, 12 | Stats 13 | } from 'react-instantsearch-dom'; 14 | import { Tabs } from 'antd'; 15 | import 'instantsearch.css/themes/reset.css'; 16 | import 'instantsearch.css/themes/algolia.css'; 17 | 18 | import { DocHit } from './DocHit'; 19 | import './Retrieval.scss'; 20 | import { LinkHit } from './LinkHit'; 21 | 22 | const { TabPane } = Tabs; 23 | const prefix = 'retrieval'; 24 | 25 | interface Props {} 26 | 27 | interface States { 28 | searchState: object; 29 | } 30 | 31 | export default class Retrieval extends React.PureComponent { 32 | constructor(props: Props) { 33 | super(props); 34 | 35 | // 解析路径参数 36 | const hash = location.hash; 37 | 38 | let query: string = ''; 39 | 40 | if (hash.indexOf('/search?') > -1) { 41 | const search = new URLSearchParams(hash.split('?')[1]); 42 | 43 | query = search.get('query') || ''; 44 | } 45 | 46 | this.state = { searchState: { query } }; 47 | } 48 | 49 | renderSearch(index: string, hitComponent: any) { 50 | return ( 51 | { 57 | this.setState({ 58 | searchState 59 | }); 60 | }} 61 | > 62 | 67 |
68 |
69 |
70 | {index === 'link' && ( 71 |
72 |

类型

73 | 74 | 75 |
76 | )} 77 |
78 |

技术点

79 | 80 | 81 |
82 |
83 |

仓库

84 | 85 | 86 |
87 |
88 |
89 |
90 |
91 | 92 |
93 | 94 | 95 | 96 |
97 |
98 |
99 | 100 | 101 |
102 |
103 |
104 |
105 | ); 106 | } 107 | 108 | render() { 109 | return ( 110 |
111 |
112 |

Knowledge Retrieval | 知识检索

113 | 117 |
118 | 119 | 120 | 121 | {this.renderSearch('link', LinkHit)} 122 | 123 | 124 | {this.renderSearch('doc', DocHit)} 125 | 126 | 127 | Content of Tab 3 128 | 129 | 130 | Content of Tab 4 131 | 132 | 133 |
134 | ); 135 | } 136 | } 137 | -------------------------------------------------------------------------------- /oreilly-generator/public/src/js/controller/login.controllers.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | (function() { 4 | 'use strict'; 5 | 6 | 7 | /* Controllers */ 8 | 9 | angular.module('websiteApp').controller('loginController', loginController); 10 | 11 | loginController.$inject = ['$window', '$interval', 'Logger', 'User']; 12 | 13 | function loginController($window, $interval, Logger, User) { 14 | 15 | /* jshint validthis: true */ 16 | var vm = this; 17 | 18 | /********** Data Binding For CSS style **********/ 19 | vm.css = { 20 | loginFormErrorMessage : 0, 21 | signupType : 'mobile', 22 | signupFirstTime : true, 23 | signupSMSCountDown : 60, 24 | signupSMSSendButton : true 25 | }; 26 | 27 | 28 | /********** Data Binding For ViewModel **********/ 29 | vm.data = { 30 | newUser : { 31 | username : '', 32 | password : '' 33 | }, 34 | 35 | signupUser : { 36 | email : '', 37 | mobile : '', 38 | smscode : '', 39 | username : '', 40 | password : '' 41 | } 42 | }; 43 | 44 | 45 | /********** Event Center **********/ 46 | vm.event = { 47 | login : login, 48 | logout : logout, 49 | changeSignupType : changeSignupType, 50 | getSignupSMS : getSignupSMS, 51 | signupSMS : signupSMS 52 | }; 53 | 54 | 55 | function login(form){ 56 | 57 | if (form.$invalid) { 58 | form.username.$setDirty(); 59 | form.password.$setDirty(); 60 | return ; 61 | } 62 | 63 | User.login(vm.data.newUser).then(function(data){ 64 | console.log(data); 65 | $window.location.href = '/'; 66 | }).catch(function(err){ 67 | if (err && err.data && err.data.code){ 68 | vm.css.loginFormErrorMessage = err.data.code; 69 | } 70 | Logger.errorXHR(err); 71 | }); 72 | } 73 | 74 | 75 | function logout(){ 76 | 77 | User.logout().then(function(data){ 78 | console.log(data); 79 | $window.location.href = '/'; 80 | }).catch(function(err){ 81 | Logger.errorXHR(err); 82 | }); 83 | 84 | } 85 | 86 | 87 | function changeSignupType(type){ 88 | vm.css.signupType = type ; 89 | } 90 | 91 | 92 | function getSignupSMS(form){ 93 | 94 | if (form.mobile.$invalid) { 95 | form.mobile.$setDirty(); 96 | return ; 97 | } 98 | 99 | vm.css.signupFirstTime = false; 100 | vm.css.signupSMSSendButton = false; 101 | 102 | var timer = $interval(function () { 103 | vm.css.signupSMSCountDown = vm.css.signupSMSCountDown - 1; 104 | if (vm.css.signupSMSCountDown <=0) { 105 | $interval.cancel(timer); 106 | vm.css.signupSMSCountDown = 60; 107 | vm.css.signupSMSSendButton = true; 108 | } 109 | }, 1000); 110 | 111 | User.getSMS(vm.data.signupUser.mobile, 'signup').then(function(data){ 112 | console.log(data.data); 113 | }).catch(function(err){ 114 | Logger.errorXHR(err); 115 | }); 116 | } 117 | 118 | 119 | function signupSMS(form){ 120 | 121 | if (form.$invalid) { 122 | form.smscode.$setDirty(); 123 | form.username.$setDirty(); 124 | form.password.$setDirty(); 125 | return ; 126 | } 127 | 128 | User.signup(vm.data.signupUser).then(function(data){ 129 | console.log(data); 130 | }).catch(function(err){ 131 | if (err && err.data && err.data.code){ 132 | vm.css.loginFormErrorMessage = err.data.code; 133 | } 134 | Logger.errorXHR(err); 135 | }); 136 | } 137 | 138 | 139 | 140 | /********** App Init **********/ 141 | 142 | function appInit (){ 143 | 144 | } 145 | 146 | function appReRun(){ 147 | 148 | } 149 | 150 | appInit(); 151 | 152 | } 153 | 154 | 155 | 156 | })(); 157 | -------------------------------------------------------------------------------- /oreilly-generator/public/src/css/images/logo-code-school-ps.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /homepage/src/libs/react-gh-card/GHUserCard.scss: -------------------------------------------------------------------------------- 1 | .fc-react-gh-card { 2 | width: 380px; 3 | height: 317px; 4 | padding: 0; 5 | margin: 0; 6 | 7 | border: 1px solid #eee; 8 | border-radius: 5px; 9 | border-color: #eee #ddd #bbb; 10 | box-shadow: rgba(0, 0, 0, 0.14) 0 1px 3px; 11 | 12 | font-size: 14px; 13 | font-family: 'Lucida Grande', 'Lucida Sans', Geneva, Verdana, sans-serif; 14 | overflow: hidden; 15 | 16 | &.ready { 17 | border: 1px solid #eee; 18 | border-radius: 5px; 19 | border-color: #eee #ddd #bbb; 20 | box-shadow: rgba(0, 0, 0, 0.14) 0 1px 3px; 21 | } 22 | 23 | .github-card { 24 | text-align: center; 25 | border-radius: 5px; 26 | background: #fff; 27 | color: #555; 28 | position: relative; 29 | } 30 | 31 | .github-card .header { 32 | position: relative; 33 | padding: 0; 34 | margin: 0; 35 | height: 148px; 36 | border-radius: 4px 4px 0 0; 37 | background-size: cover; 38 | background-position: center; 39 | background-color: #000; 40 | } 41 | 42 | .github-card .avatar { 43 | display: inline-block; 44 | overflow: hidden; 45 | background: #fff; 46 | border-radius: 100%; 47 | box-shadow: 0 1px 1px rgba(0, 0, 0, 0.3); 48 | text-decoration: none; 49 | -webkit-transition: -webkit-transform 0.2s ease-in-out; 50 | } 51 | 52 | .github-card .avatar:hover { 53 | -webkit-transform: rotate(45deg); 54 | } 55 | 56 | .github-card h1 { 57 | color: #111; 58 | font-size: 24px; 59 | font-weight: 500; 60 | text-decoration: none; 61 | -webkit-font-smoothing: antialiased; 62 | } 63 | 64 | .github-card ul { 65 | text-transform: uppercase; 66 | font-size: 12px; 67 | color: #707070; 68 | list-style-type: none; 69 | margin: 0; 70 | padding: 0; 71 | border-top: 1px solid #eee; 72 | border-bottom: 1px solid #eee; 73 | zoom: 1; 74 | } 75 | 76 | .github-card ul:after { 77 | display: block; 78 | content: ''; 79 | clear: both; 80 | } 81 | 82 | .github-card .status li { 83 | float: left; 84 | padding: 8px 0; 85 | box-shadow: 1px 0 0 #eee; 86 | } 87 | 88 | .github-card .status li:last-of-type { 89 | box-shadow: none; 90 | } 91 | 92 | .github-card .status strong { 93 | display: block; 94 | color: #292f33; 95 | font-size: 16px; 96 | line-height: 1.6; 97 | } 98 | 99 | .github-card .status a { 100 | color: #707070; 101 | text-decoration: none; 102 | } 103 | 104 | .github-card .status a:hover { 105 | color: #4183c4; 106 | } 107 | 108 | .user-card .header { 109 | background-image: url(https://user-images.githubusercontent.com/5803001/46874952-037bc400-ce6d-11e8-9db7-11b477ce4c7c.png); 110 | } 111 | 112 | .user-card .User { 113 | background-position: top left; 114 | } 115 | 116 | .user-card .Organization { 117 | background-position: top right; 118 | } 119 | 120 | .user-card .avatar { 121 | margin-top: -40px; 122 | border: 3px solid #fff; 123 | position: relative; 124 | } 125 | 126 | .user-card img { 127 | display: block; 128 | width: 80px; 129 | height: 80px; 130 | } 131 | 132 | .user-card h1 { 133 | letter-spacing: -0.06em; 134 | margin: 16px 0 20px; 135 | line-height: 1; 136 | } 137 | 138 | .user-card .status li { 139 | width: 25%; 140 | } 141 | 142 | .repo-card .avatar { 143 | position: absolute; 144 | top: 5px; 145 | left: 5px; 146 | border: 2px solid #fff; 147 | } 148 | 149 | .repo-card .avatar img { 150 | display: block; 151 | width: 48px; 152 | height: 48px; 153 | } 154 | 155 | .repo-card h1 { 156 | margin: 0; 157 | padding: 0; 158 | line-height: 148px; 159 | color: #fff; 160 | font-size: 36px; 161 | font-weight: 400; 162 | text-transform: uppercase; 163 | } 164 | 165 | .repo-card h1 a { 166 | color: #fff; 167 | text-decoration: none; 168 | } 169 | 170 | .repo-card h1 a:hover { 171 | opacity: 0.8; 172 | } 173 | 174 | .repo-card .content p { 175 | font-size: 16px; 176 | padding: 10px 20px; 177 | } 178 | 179 | .repo-card p a { 180 | text-decoration: none; 181 | color: #4183c4; 182 | outline: 0; 183 | } 184 | 185 | .repo-card .status li { 186 | width: 50%; 187 | } 188 | 189 | .repo-card .C { 190 | background: #555; 191 | } 192 | 193 | .repo-card .CSS { 194 | background: #563d7c; 195 | } 196 | 197 | .repo-card .HTML { 198 | background: #e44b23; 199 | } 200 | 201 | .repo-card .JavaScript { 202 | background: #f1e05a; 203 | } 204 | 205 | .repo-card .Python { 206 | background: #3581ba; 207 | } 208 | 209 | .repo-card .Ruby { 210 | background: #701516; 211 | } 212 | 213 | .repo-card .Rust { 214 | background: #dea584; 215 | } 216 | 217 | .repo-card .Go { 218 | background: #375eab; 219 | } 220 | 221 | .repo-card .Java { 222 | background: #b07219; 223 | } 224 | 225 | .repo-card .Objective-C { 226 | background: #438eff; 227 | } 228 | } 229 | -------------------------------------------------------------------------------- /homepage/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@wx/x-compass-homepage", 3 | "libraryName": "wx", 4 | "libraryEntry": "index.umd.js", 5 | "version": "0.0.1", 6 | "description": "Boilerplate for webpack & react, with typeScript", 7 | "main": "build/index.umd.js", 8 | "repository": { 9 | "type": "git", 10 | "url": "https://github.com/wxyyxc1992/fe-boilerplate" 11 | }, 12 | "license": "MIT", 13 | "keywords": [ 14 | "webpack", 15 | "react" 16 | ], 17 | "author": "wxyyxc1992@github", 18 | "prettier": { 19 | "printWidth": 100, 20 | "singleQuote": true 21 | }, 22 | "lint-staged": { 23 | "*.{ts,tsx,scss,less,md}": [ 24 | "prettier --write", 25 | "git add" 26 | ] 27 | }, 28 | "scripts": { 29 | "start": "webpack-dashboard -- npm run dev:node", 30 | "dev": "parallelshell \"npm run mock\" \"npm run dev\"", 31 | "dev:node": "webpack-dev-server --config ./dev-config/webpack.config.dev.js --hot", 32 | "build": "npm run clean && NODE_ENV=production webpack --config ./dev-config/webpack.config.prod.js --mode production", 33 | "build:dev": "npm run clean && webpack --config ./dev-config/webpack.config.prod.js --mode development", 34 | "build:lib": "npm run clean && NODE_ENV=production webpack --config ./dev-config/webpack.config.umd.js --mode production", 35 | "stats": "webpack --config ./dev-config/webpack.config.prod.js --mode production --profile --json > build/stats.json", 36 | "analyze": "npm run stats && webpack-bundle-analyzer build/stats.json", 37 | "clean": "rimraf build && mkdir build", 38 | "test": "jest", 39 | "update": "npm-check -u", 40 | "lint": "tslint -c tslint.json 'src/**/*.(ts|tsx)'", 41 | "mock": "json-server --watch dev-config/mock/db.json --port 9091", 42 | "storybook": "start-storybook -p 6006", 43 | "build-storybook": "build-storybook", 44 | "precommit": "lint-staged", 45 | "prettier-all": "prettier --write 'src/**/*' '!src/{assets,datas}/**'" 46 | }, 47 | "jest": { 48 | "moduleFileExtensions": [ 49 | "js", 50 | "ts", 51 | "tsx" 52 | ], 53 | "transform": { 54 | "^.+\\.(ts|tsx)$": "/preprocessor.js" 55 | }, 56 | "moduleDirectories": [ 57 | "node_modules", 58 | "bower_components", 59 | "shared" 60 | ], 61 | "moduleNameMapper": { 62 | "\\.(css|less|scss)$": "/dev-config/mock/styleMock.js", 63 | "\\.(gif|ttf|eot|svg)$": "/dev-config/mock/fileMock.js" 64 | }, 65 | "testMatch": [ 66 | "**/*.test.(ts|tsx|js)" 67 | ] 68 | }, 69 | "dependencies": { 70 | "@types/react-helmet": "^5.0.7", 71 | "ant-design-pro": "^2.0.0", 72 | "antd": "^3.5.2", 73 | "axios": "^0.18.0", 74 | "class-names": "^1.0.0", 75 | "classname": "^0.0.0", 76 | "classnames": "^2.2.6", 77 | "history": "^4.7.2", 78 | "instantsearch.css": "^7.1.0", 79 | "mobx": "5.1.2", 80 | "mobx-react": "^5.2.8", 81 | "mobx-react-router": "^4.0.5", 82 | "moment": "^2.22.1", 83 | "preact": "^8.4.2", 84 | "preact-compat": "^3.19.0", 85 | "prop-types": "^15.6.1", 86 | "react": "^16.3.2", 87 | "react-dom": "^16.3.2", 88 | "react-helmet": "^5.2.0", 89 | "react-instantsearch": "^5.3.1", 90 | "react-loadable": "^5.5.0", 91 | "react-parallax": "^2.0.0", 92 | "react-particles-js": "^2.3.0", 93 | "react-router": "^4.2.0", 94 | "react-router-dom": "^4.3.1", 95 | "react-svg-loader": "^2.1.0", 96 | "styled-components": "^3.4.9" 97 | }, 98 | "devDependencies": { 99 | "@storybook/addon-actions": "^3.4.5", 100 | "@storybook/addon-links": "^3.4.5", 101 | "@storybook/addons": "^3.4.5", 102 | "@storybook/react": "^3.4.5", 103 | "@types/classnames": "^2.2.6", 104 | "@types/enzyme": "^3.1.10", 105 | "@types/jest": "23.3.2", 106 | "@types/react": "^16.3.14", 107 | "@types/react-dom": "^16.0.5", 108 | "@types/react-loadable": "^5.5.1", 109 | "@types/react-router": "^4.0.32", 110 | "@types/react-router-dom": "^4.3.1", 111 | "autoprefixer": "9.1.5", 112 | "awesome-typescript-loader": "^5.0.0", 113 | "copy-webpack-plugin": "^4.5.2", 114 | "css-loader": "1.0.0", 115 | "enzyme": "^3.3.0", 116 | "file-loader": "2.0.0", 117 | "html-webpack-plugin": "^3.2.0", 118 | "html-webpack-template": "^6.2.0", 119 | "jest": "23.6.0", 120 | "jest-cli": "23.6.0", 121 | "json-server": "0.14.0", 122 | "less": "^3.0.4", 123 | "less-loader": "^4.1.0", 124 | "mini-css-extract-plugin": "^0.4.0", 125 | "mobx-react-devtools": "6.0.3", 126 | "node-sass": "^4.9.0", 127 | "npm-check": "^5.7.1", 128 | "offline-plugin": "^5.0.3", 129 | "optimize-css-assets-webpack-plugin": "5.0.1", 130 | "parallelshell": "3.0.1", 131 | "postcss-loader": "3.0.0", 132 | "react-hot-loader": "^4.2.0", 133 | "resolve-url-loader": "3.0.0", 134 | "rimraf": "^2.6.2", 135 | "sass-loader": "^7.0.1", 136 | "style-loader": "0.23.0", 137 | "ts-import-plugin": "^1.6.1", 138 | "ts-loader": "5.1.1", 139 | "tslint": "^5.10.0", 140 | "tslint-config-prettier": "^1.12.0", 141 | "tslint-react": "^3.6.0", 142 | "typescript": "3.0.3", 143 | "uglifyjs-webpack-plugin": "2.0.1", 144 | "url-loader": "^1.0.1", 145 | "wasm-loader": "^1.3.0", 146 | "webpack": "^4.8.3", 147 | "webpack-bundle-analyzer": "3.0.2", 148 | "webpack-cli": "3.1.0", 149 | "webpack-dashboard": "2.0.0", 150 | "webpack-dev-server": "^3.1.4", 151 | "workerize-loader": "^1.0.2" 152 | } 153 | } 154 | -------------------------------------------------------------------------------- /oreilly-generator/public/home.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | O'Relly Generator 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 29 | 38 | 39 | 40 | 41 |
42 |
43 |
44 |
45 |
46 |

47 | 某熊的技术之路 48 |

49 |
50 |
51 |

52 |
53 |

资料、笔记、代码、项目

56 |

某熊的技术之路

59 |
60 |

知识体系,编程语言,软件工程,大前端与 Web

服务端架构,分布式基础架构,算法,产品

65 |
66 |
67 | Cow 68 |
69 |
70 |
73 |

打造你的技术围栏

74 |

Just Coder, Travel in Galaxy

75 |
76 |
77 |

王下邀月熊 编著

78 |

79 | github/wx-chevalier 80 |

81 |
82 |
83 |
84 |
85 | 86 | 87 |
88 |
89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | -------------------------------------------------------------------------------- /hexo/source/_posts/Coder/KnowledgeManagement/Graph/2016-Knowledge-Graph.md: -------------------------------------------------------------------------------- 1 | --- 2 | abbrlink: f198db26 3 | categories: 4 | - Coder 5 | - KnowledgeManagement 6 | - Graph 7 | tags: 8 | - ! '' 9 | - ! '' 10 | - ! '' 11 | title: 技术纵览 12 | --- 13 | > [2016:我的技术体系结构图](https://zhuanlan.zhihu.com/p/24476917) 从属于笔者的[Coder Knowledge Graph](https://github.com/wxyyxc1992/Coder-Knowledge-Graph)。 14 | 15 | ![](https://camo.githubusercontent.com/1a7ddd081e0fcc80e7acf9ed04c5705f2028862c/68747470733a2f2f636f64696e672e6e65742f752f686f7465616d2f702f43616368652f6769742f7261772f6d61737465722f323031362f31302f332f312d6d44523069425643615f7a3750655a6864595a7859512e6a706567) 16 | 17 | 去年年底,笔者发表了一篇[我的编程之路——知识管理与知识体系](https://segmentfault.com/a/1190000004612590),是我那时对于技术体系的认知。在即将过去的2016年中我参与到了更多的实践当中,特别是在Web前端开发领域更深入了几分。触类旁通,举一反三,在整个软件编程体系内的各个知识都可以相互印证。技术分为术与道两者,术即是具体的做事的方法,而道则是做事的逻辑抽象的原则与原理。一味地追求术的人往往都是希望走捷径,不求甚解的。而道之所求也是符合一万小时原理,需要大量的付出与总结。不过平心而论,很多初学者是务必从道学起,笔者今年也带了很多的新人,发现绝大部分人还是学过的知识忘了,写过的代码没了,前行的速度抵不上时间的流逝。本文的立意还是希望以一家之言勾勒出灿烂星空,辅你打造知识海洋里的一叶扁舟。 18 | > 知识应该放在它应该在的地方 —— 王下邀月熊 19 | 20 | # 技术纵览 21 | 22 | 欲穷千里目,更上一层楼,首先我们需要高屋建瓴,先看下软件世界的版图是何样的,更多信息参阅[技术体系概览思维脑图](https://www.processon.com/view/link/58593ea3e4b0db9f2e1407bb)。 23 | 24 | ![](https://coding.net/u/hoteam/p/Cache/git/raw/master/2016/12/2/Coder.png) 25 | 26 | ## 延伸阅读 27 | - [如何成为一名优秀的软件工程师](https://github.com/wxyyxc1992/Coder-Knowledge-Graph/blob/master/how-to-be-a-successful-software-engineer.md) 28 | - [王下邀月熊的2016上半年博客精选](https://segmentfault.com/a/1190000006017467) 29 | 30 | # ProgrammingLanguage:编程语言 31 | 32 | 学习一门语言最痛苦的反而是大量的细节语法,譬如字符串截取、数组或者字典类型的索引之类的。下面要进行讨论的一些语法特性是目前流行的一些语言的总结,可能有些语言尚不支持部分特性,但是要么有些第三方库进行辅助,要么会在未来的版本中添加如下特性。更多信息参阅[编程语言知识要点思维脑涂](https://www.processon.com/view/link/5858d52ce4b0f767285df0b0)。 33 | 34 | ![](https://coding.net/u/hoteam/p/Cache/git/raw/master/2016/12/2/%25E7%25BC%2596%25E7%25A8%258B%25E8%25AF%25AD%25E8%25A8%2580.png) 35 | 36 | ## 延伸阅读 37 | - [我应该从哪一门编程语言上车?](https://segmentfault.com/a/1190000007398287) 38 | 39 | # CoderEssentials:编程基础 40 | 41 | 在学习完编程语言之后,我们需要了解编程基础知识。更多信息参阅[编程基础思维脑图](https://www.processon.com/view/link/5858f45be4b0db9f2e0e7ee4)。 42 | 43 | ![](https://coding.net/u/hoteam/p/Cache/git/raw/master/2016/12/2/CoderEssentials.png) 44 | 45 | ## 延伸阅读 46 | 47 | - [程序员必备编程基础](https://github.com/wxyyxc1992/Coder-Essentials) 48 | 49 | # Client:泛客户端开发要点 50 | 51 | 本部分是泛客户端开发要点,笔者对于之前iOS/Android/Web/ReactNative/Weex中通用知识点进行了归纳。更多信息参阅[泛客户端开发要点思维脑图](https://www.processon.com/view/link/5858fa8fe4b0db9f2e0f548e) 。 52 | 53 | ![](https://coding.net/u/hoteam/p/Cache/git/raw/master/2016/12/2/Client.png) 54 | 55 | ## 延伸阅读 56 | 57 | - [GUI应用程序架构的十年变迁:MVC,MVP,MVVM,Unidirectional,Clean](https://segmentfault.com/a/1190000006016817) 58 | - [iOS入门与工程实践](https://github.com/wxyyxc1992/iOS-Introduction-And-Best-Practices) 59 | - [Java入门与工程实践](https://github.com/wxyyxc1992/Java-Introduction-And-Best-Practices) 60 | 61 | # Web Frontend:Web前端 62 | 63 | 本部分是笔者的Web前端开发知识纲要总结,更多信息参阅[Web前端思维脑图](https://www.processon.com/view/link/5858cab0e4b04ce387a7cb53)。 64 | 65 | ![](https://coding.net/u/hoteam/p/Cache/git/raw/master/2016/12/2/Web.png) 66 | 67 | ## 延伸阅读 68 | 69 | - [Web前端从入门菜鸟到实践老司机所需要的资料与指南合集](https://segmentfault.com/a/1190000007611188) 70 | - [Web 前端入门与最佳实践](https://github.com/wxyyxc1992/Web-Frontend-Introduction-And-Best-Practices) 71 | - [2015-我的前端之路:数据流驱动的界面](https://segmentfault.com/a/1190000004292245) 72 | 73 | 74 | # ServerSideApplication:服务端应用程序架构 75 | 76 | 本部分是笔者的服务端应用程序架构知识纲要总结,更多信息参阅[服务端应用程序架构思维脑图](https://www.processon.com/view/link/5858fa40e4b0f767286314f3)。 77 | 78 | ![](https://coding.net/u/hoteam/p/Cache/git/raw/master/2016/12/2/ServerSideApplication.png) 79 | 80 | ## 延伸阅读 81 | 82 | - [服务端应用程序入门与实践](https://github.com/wxyyxc1992/ServerSideApplication-Introduction-And-Practices) 83 | - [SpringMVC入门与工程实践](https://github.com/wxyyxc1992/SpringMVC-Introduction-And-Best-Practices) 84 | - [基于对资源配置动态生成API并进行权限审查的平台](https://github.com/wxyyxc1992/ConfigurableAPIServer) 85 | 86 | # DataScience:数据科学与机器学习 87 | 88 | 笔者只是菜鸟一枚,本部分只是笔者暂时的总结,更多信息参阅[数据科学与机器学习思维脑图](https://www.processon.com/view/link/5858d6a1e4b0c1fa6c6ebdf8)。 89 | 90 | ![](https://coding.net/u/hoteam/p/Cache/git/raw/master/2016/12/2/DataScience.png) 91 | 92 | ## 延伸阅读 93 | - [程序猿的数据科学与机器学习实战手册](https://github.com/wxyyxc1992/DataScience-And-MachineLearning-Handbook-For-Coders) 94 | - [面向程序猿的数据科学与机器学习知识体系及资料合集](https://github.com/wxyyxc1992/DataScience-And-MachineLearning-Handbook-For-Coders/DataScience-Reference) 95 | 96 | - [数据科学与机器学习导论](https://segmentfault.com/a/1190000005801260) 97 | - [深度学习带来的变革:深度学习的十个典型应用](https://segmentfault.com/a/1190000007391860) 98 | - [基础深度学习概念备忘录](https://zhuanlan.zhihu.com/p/24436419) 99 | - [有趣的机器学习概念纵览:从多元拟合,神经网络到深度学习,给每个感兴趣的人](https://segmentfault.com/a/1190000005746236) 100 | 101 | # Infrastructure:基础架构 102 | 103 | 本部分关注服务端中的基础架构部分,更多信息参阅[基础架构思维脑图](https://www.processon.com/view/link/5858fb18e4b0f76728632fd4)。 104 | 105 | ![](https://coding.net/u/hoteam/p/Cache/git/raw/master/2016/12/2/Infrastructure.png) 106 | 107 | ## 延伸阅读 108 | 109 | - [Apache流计算框架详细对比](https://segmentfault.com/a/1190000004593949) 110 | 111 | # InformationSecurity:信息安全 112 | 113 | 本部分关注信息安全相关知识体系,更多信息参阅[信息安全思维脑图](https://www.processon.com/view/link/5858f77fe4b0f7672862b84f)。 114 | 115 | ![](https://coding.net/u/hoteam/p/Cache/git/raw/master/2016/12/2/InfoSecurity.png) 116 | 117 | ## 延伸阅读 118 | 119 | - [信息安全实战](https://github.com/wxyyxc1992/InfoSecurity-In-Action) 120 | - [Web应用安全基础](https://github.com/wxyyxc1992/InfoSecurity-In-Action/blob/master/Reinforce/WebSecurity/basics-of-web-application-security.md) 121 | - [Awesome-Hacking](https://github.com/Hack-with-Github/Awesome-Hacking#awesome-fuzzing):一系列对于Hack安全资料的搜集 122 | - [国外最佳互联网安全博客TOP 30](https://jaq.alibaba.com/community/art/show?articleid=601&f=tt&hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io) 123 | - [The Social-Engineer Toolkit ](https://github.com/trustedsec/social-engineer-toolkit):一系列仅用于测试用途的社会工程工具 124 | 125 | 126 | 127 | 128 | 129 | 130 | -------------------------------------------------------------------------------- /homepage/src/components/nav/Nav.tsx: -------------------------------------------------------------------------------- 1 | import { Menu, Anchor, Icon, Drawer } from 'antd'; 2 | import * as React from 'react'; 3 | import * as Loadable from 'react-loadable'; 4 | import { inject, observer } from 'mobx-react'; 5 | import { RouterStore } from 'mobx-react-router'; 6 | 7 | import './Nav.scss'; 8 | import Loading from 'x-components/common/Loading'; 9 | 10 | const { Link } = Anchor; 11 | 12 | const prefix = 'nav'; 13 | 14 | interface Props { 15 | routerStore?: RouterStore; 16 | } 17 | 18 | const LoadableRetrieval = Loadable({ 19 | loader: () => import('../retrieval/Retrieval'), 20 | loading: Loading 21 | }); 22 | 23 | @inject('routerStore') 24 | @observer 25 | export default class Nav extends React.Component { 26 | state = { 27 | isRetrievalDrawerVisible: false 28 | }; 29 | 30 | componentDidMount() { 31 | const { pathname } = this.props.routerStore!.location; 32 | 33 | if (pathname === '/search') { 34 | this.setState({ 35 | isRetrievalDrawerVisible: true 36 | }); 37 | } 38 | } 39 | 40 | renderLeft() { 41 | return ( 42 |
43 |
44 | 50 | 51 |
52 | xCompass 53 | 个人主页 54 |
55 |
56 | 57 |
58 | 61 | Perspective 62 | 技术视野 63 | 64 | } 65 | href="#perspective" 66 | /> 67 |
68 |
69 | 70 |
71 | 74 | Lab 75 | 实验室 76 | 77 | } 78 | href="#lab" 79 | /> 80 |
81 |
82 | 83 |
84 | 87 | Knowledge Management 88 | 知识管理 89 | 90 | } 91 | href="#knowledge-management" 92 | /> 93 |
94 |
95 |
96 |
97 | ); 98 | } 99 | 100 | renderToolbar() { 101 | const { isRetrievalDrawerVisible } = this.state; 102 | 103 | return ( 104 |
105 |
{ 108 | this.setState({ isRetrievalDrawerVisible: true }); 109 | }} 110 | > 111 | 知识检索 112 | 113 |
114 | { 118 | this.setState({ isRetrievalDrawerVisible: false }); 119 | }} 120 | > 121 | 122 | 123 |
124 | ); 125 | } 126 | render() { 127 | return ( 128 |
129 | 135 | 148 | 149 | {this.renderLeft()} 150 | 186 | {/* 浮动工具条 */} 187 | {this.renderToolbar()} 188 |
189 | ); 190 | } 191 | } 192 | --------------------------------------------------------------------------------