├── .gitignore ├── .DS_Store ├── Hotpot项目时间表.xmind ├── _site ├── Hotpot项目时间表.xmind ├── assets │ └── images │ │ ├── favicon.ico │ │ ├── hotpot.png │ │ ├── hotpot-sss.png │ │ └── timeline.png ├── js │ ├── search.js │ ├── main.js │ ├── content.js │ ├── smooth-scroll.min.js │ ├── pageContent.js │ ├── jekyll-search.min.js │ └── waterfall.js ├── LICENSE ├── feed.xml ├── README.md ├── search_data.json └── tag │ └── index.html ├── assets └── images │ ├── .DS_Store │ ├── hotpot.png │ ├── favicon.ico │ ├── timeline.png │ └── hotpot-sss.png ├── utils └── csv2md │ ├── .DS_Store │ ├── csv2md.sh │ └── csv2md.py ├── _posts ├── Hotpot建站 │ ├── .DS_Store │ └── 2019-04-10-hellohotpot.md └── Hotpot 建站 │ └── 2019-04-13-howtoshare.md ├── _includes ├── backToTop.html ├── previousAndNext.html ├── cloud-music.html ├── tag.html ├── sidebar-search.html ├── category.html ├── banner.html ├── header.html ├── comments.html ├── topPost.html ├── head.html └── footer.html ├── .sass-cache ├── 689eaba8df4072da24220500c3adb6b4746320d9 │ ├── _demo.scssc │ ├── _page.scssc │ ├── _post.scssc │ ├── _footer.scssc │ ├── _header.scssc │ ├── _index.scssc │ ├── _reset.scssc │ ├── _backToTop.scssc │ ├── _scrollbar.scssc │ └── _syntax-highlighting.scssc ├── 87326e8712155d0c401c4ef40167a5110ff40039 │ ├── _demo.scssc │ ├── _page.scssc │ ├── _post.scssc │ ├── _footer.scssc │ ├── _header.scssc │ ├── _index.scssc │ ├── _reset.scssc │ ├── _backToTop.scssc │ ├── _scrollbar.scssc │ └── _syntax-highlighting.scssc ├── 96d916ed8fdd0c9d475506a387a9e0979a85d4c8 │ ├── _demo.scssc │ ├── _page.scssc │ ├── _post.scssc │ ├── _footer.scssc │ ├── _header.scssc │ ├── _index.scssc │ ├── _reset.scssc │ ├── _backToTop.scssc │ ├── _scrollbar.scssc │ └── _syntax-highlighting.scssc └── f8fbff40c9b8f59159d2f6422dd20b37cf0e2160 │ ├── _demo.scssc │ ├── _page.scssc │ ├── _post.scssc │ ├── _footer.scssc │ ├── _header.scssc │ ├── _index.scssc │ ├── _reset.scssc │ ├── _backToTop.scssc │ ├── _scrollbar.scssc │ └── _syntax-highlighting.scssc ├── _drafts ├── WebSocket.md ├── toDoList.md ├── threeJS-light-shadow.md └── ES2015-note.md ├── _layouts ├── collections.html ├── page.html ├── default.html └── post.html ├── search_data.json ├── js ├── search.js ├── main.js ├── content.js ├── smooth-scroll.min.js ├── pageContent.js ├── jekyll-search.min.js └── waterfall.js ├── _sass ├── _scrollbar.scss ├── _backToTop.scss ├── _footer.scss ├── _post.scss ├── _demo.scss ├── _reset.scss ├── _post-old.scss ├── _syntax-highlighting.scss ├── _layout.scss ├── _header.scss ├── _index.scss └── _page.scss ├── LICENSE ├── feed.xml ├── page ├── 4about.md ├── 2tags.html ├── 1category.html ├── 3collections.md ├── 5links.md └── 0archives.html ├── css └── main.scss ├── _config.yml ├── README.md └── index.html /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | _posts/.DS_Store 3 | -------------------------------------------------------------------------------- /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.DS_Store -------------------------------------------------------------------------------- /Hotpot项目时间表.xmind: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/Hotpot项目时间表.xmind -------------------------------------------------------------------------------- /_site/Hotpot项目时间表.xmind: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/_site/Hotpot项目时间表.xmind -------------------------------------------------------------------------------- /assets/images/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/assets/images/.DS_Store -------------------------------------------------------------------------------- /assets/images/hotpot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/assets/images/hotpot.png -------------------------------------------------------------------------------- /utils/csv2md/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/utils/csv2md/.DS_Store -------------------------------------------------------------------------------- /_posts/Hotpot建站/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/_posts/Hotpot建站/.DS_Store -------------------------------------------------------------------------------- /assets/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/assets/images/favicon.ico -------------------------------------------------------------------------------- /assets/images/timeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/assets/images/timeline.png -------------------------------------------------------------------------------- /assets/images/hotpot-sss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/assets/images/hotpot-sss.png -------------------------------------------------------------------------------- /_site/assets/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/_site/assets/images/favicon.ico -------------------------------------------------------------------------------- /_site/assets/images/hotpot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/_site/assets/images/hotpot.png -------------------------------------------------------------------------------- /_site/assets/images/hotpot-sss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/_site/assets/images/hotpot-sss.png -------------------------------------------------------------------------------- /_site/assets/images/timeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/_site/assets/images/timeline.png -------------------------------------------------------------------------------- /_includes/backToTop.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 |
6 | -------------------------------------------------------------------------------- /.sass-cache/689eaba8df4072da24220500c3adb6b4746320d9/_demo.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/689eaba8df4072da24220500c3adb6b4746320d9/_demo.scssc -------------------------------------------------------------------------------- /.sass-cache/689eaba8df4072da24220500c3adb6b4746320d9/_page.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/689eaba8df4072da24220500c3adb6b4746320d9/_page.scssc -------------------------------------------------------------------------------- /.sass-cache/689eaba8df4072da24220500c3adb6b4746320d9/_post.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/689eaba8df4072da24220500c3adb6b4746320d9/_post.scssc -------------------------------------------------------------------------------- /.sass-cache/87326e8712155d0c401c4ef40167a5110ff40039/_demo.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/87326e8712155d0c401c4ef40167a5110ff40039/_demo.scssc -------------------------------------------------------------------------------- /.sass-cache/87326e8712155d0c401c4ef40167a5110ff40039/_page.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/87326e8712155d0c401c4ef40167a5110ff40039/_page.scssc -------------------------------------------------------------------------------- /.sass-cache/87326e8712155d0c401c4ef40167a5110ff40039/_post.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/87326e8712155d0c401c4ef40167a5110ff40039/_post.scssc -------------------------------------------------------------------------------- /.sass-cache/96d916ed8fdd0c9d475506a387a9e0979a85d4c8/_demo.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/96d916ed8fdd0c9d475506a387a9e0979a85d4c8/_demo.scssc -------------------------------------------------------------------------------- /.sass-cache/96d916ed8fdd0c9d475506a387a9e0979a85d4c8/_page.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/96d916ed8fdd0c9d475506a387a9e0979a85d4c8/_page.scssc -------------------------------------------------------------------------------- /.sass-cache/96d916ed8fdd0c9d475506a387a9e0979a85d4c8/_post.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/96d916ed8fdd0c9d475506a387a9e0979a85d4c8/_post.scssc -------------------------------------------------------------------------------- /.sass-cache/f8fbff40c9b8f59159d2f6422dd20b37cf0e2160/_demo.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/f8fbff40c9b8f59159d2f6422dd20b37cf0e2160/_demo.scssc -------------------------------------------------------------------------------- /.sass-cache/f8fbff40c9b8f59159d2f6422dd20b37cf0e2160/_page.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/f8fbff40c9b8f59159d2f6422dd20b37cf0e2160/_page.scssc -------------------------------------------------------------------------------- /.sass-cache/f8fbff40c9b8f59159d2f6422dd20b37cf0e2160/_post.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/f8fbff40c9b8f59159d2f6422dd20b37cf0e2160/_post.scssc -------------------------------------------------------------------------------- /.sass-cache/689eaba8df4072da24220500c3adb6b4746320d9/_footer.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/689eaba8df4072da24220500c3adb6b4746320d9/_footer.scssc -------------------------------------------------------------------------------- /.sass-cache/689eaba8df4072da24220500c3adb6b4746320d9/_header.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/689eaba8df4072da24220500c3adb6b4746320d9/_header.scssc -------------------------------------------------------------------------------- /.sass-cache/689eaba8df4072da24220500c3adb6b4746320d9/_index.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/689eaba8df4072da24220500c3adb6b4746320d9/_index.scssc -------------------------------------------------------------------------------- /.sass-cache/689eaba8df4072da24220500c3adb6b4746320d9/_reset.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/689eaba8df4072da24220500c3adb6b4746320d9/_reset.scssc -------------------------------------------------------------------------------- /.sass-cache/87326e8712155d0c401c4ef40167a5110ff40039/_footer.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/87326e8712155d0c401c4ef40167a5110ff40039/_footer.scssc -------------------------------------------------------------------------------- /.sass-cache/87326e8712155d0c401c4ef40167a5110ff40039/_header.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/87326e8712155d0c401c4ef40167a5110ff40039/_header.scssc -------------------------------------------------------------------------------- /.sass-cache/87326e8712155d0c401c4ef40167a5110ff40039/_index.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/87326e8712155d0c401c4ef40167a5110ff40039/_index.scssc -------------------------------------------------------------------------------- /.sass-cache/87326e8712155d0c401c4ef40167a5110ff40039/_reset.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/87326e8712155d0c401c4ef40167a5110ff40039/_reset.scssc -------------------------------------------------------------------------------- /.sass-cache/96d916ed8fdd0c9d475506a387a9e0979a85d4c8/_footer.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/96d916ed8fdd0c9d475506a387a9e0979a85d4c8/_footer.scssc -------------------------------------------------------------------------------- /.sass-cache/96d916ed8fdd0c9d475506a387a9e0979a85d4c8/_header.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/96d916ed8fdd0c9d475506a387a9e0979a85d4c8/_header.scssc -------------------------------------------------------------------------------- /.sass-cache/96d916ed8fdd0c9d475506a387a9e0979a85d4c8/_index.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/96d916ed8fdd0c9d475506a387a9e0979a85d4c8/_index.scssc -------------------------------------------------------------------------------- /.sass-cache/96d916ed8fdd0c9d475506a387a9e0979a85d4c8/_reset.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/96d916ed8fdd0c9d475506a387a9e0979a85d4c8/_reset.scssc -------------------------------------------------------------------------------- /.sass-cache/f8fbff40c9b8f59159d2f6422dd20b37cf0e2160/_footer.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/f8fbff40c9b8f59159d2f6422dd20b37cf0e2160/_footer.scssc -------------------------------------------------------------------------------- /.sass-cache/f8fbff40c9b8f59159d2f6422dd20b37cf0e2160/_header.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/f8fbff40c9b8f59159d2f6422dd20b37cf0e2160/_header.scssc -------------------------------------------------------------------------------- /.sass-cache/f8fbff40c9b8f59159d2f6422dd20b37cf0e2160/_index.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/f8fbff40c9b8f59159d2f6422dd20b37cf0e2160/_index.scssc -------------------------------------------------------------------------------- /.sass-cache/f8fbff40c9b8f59159d2f6422dd20b37cf0e2160/_reset.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/f8fbff40c9b8f59159d2f6422dd20b37cf0e2160/_reset.scssc -------------------------------------------------------------------------------- /.sass-cache/689eaba8df4072da24220500c3adb6b4746320d9/_backToTop.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/689eaba8df4072da24220500c3adb6b4746320d9/_backToTop.scssc -------------------------------------------------------------------------------- /.sass-cache/689eaba8df4072da24220500c3adb6b4746320d9/_scrollbar.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/689eaba8df4072da24220500c3adb6b4746320d9/_scrollbar.scssc -------------------------------------------------------------------------------- /.sass-cache/87326e8712155d0c401c4ef40167a5110ff40039/_backToTop.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/87326e8712155d0c401c4ef40167a5110ff40039/_backToTop.scssc -------------------------------------------------------------------------------- /.sass-cache/87326e8712155d0c401c4ef40167a5110ff40039/_scrollbar.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/87326e8712155d0c401c4ef40167a5110ff40039/_scrollbar.scssc -------------------------------------------------------------------------------- /.sass-cache/96d916ed8fdd0c9d475506a387a9e0979a85d4c8/_backToTop.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/96d916ed8fdd0c9d475506a387a9e0979a85d4c8/_backToTop.scssc -------------------------------------------------------------------------------- /.sass-cache/96d916ed8fdd0c9d475506a387a9e0979a85d4c8/_scrollbar.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/96d916ed8fdd0c9d475506a387a9e0979a85d4c8/_scrollbar.scssc -------------------------------------------------------------------------------- /.sass-cache/f8fbff40c9b8f59159d2f6422dd20b37cf0e2160/_backToTop.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/f8fbff40c9b8f59159d2f6422dd20b37cf0e2160/_backToTop.scssc -------------------------------------------------------------------------------- /.sass-cache/f8fbff40c9b8f59159d2f6422dd20b37cf0e2160/_scrollbar.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/f8fbff40c9b8f59159d2f6422dd20b37cf0e2160/_scrollbar.scssc -------------------------------------------------------------------------------- /.sass-cache/689eaba8df4072da24220500c3adb6b4746320d9/_syntax-highlighting.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/689eaba8df4072da24220500c3adb6b4746320d9/_syntax-highlighting.scssc -------------------------------------------------------------------------------- /.sass-cache/87326e8712155d0c401c4ef40167a5110ff40039/_syntax-highlighting.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/87326e8712155d0c401c4ef40167a5110ff40039/_syntax-highlighting.scssc -------------------------------------------------------------------------------- /.sass-cache/96d916ed8fdd0c9d475506a387a9e0979a85d4c8/_syntax-highlighting.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/96d916ed8fdd0c9d475506a387a9e0979a85d4c8/_syntax-highlighting.scssc -------------------------------------------------------------------------------- /.sass-cache/f8fbff40c9b8f59159d2f6422dd20b37cf0e2160/_syntax-highlighting.scssc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/HEAD/.sass-cache/f8fbff40c9b8f59159d2f6422dd20b37cf0e2160/_syntax-highlighting.scssc -------------------------------------------------------------------------------- /utils/csv2md/csv2md.sh: -------------------------------------------------------------------------------- 1 | pip3 install csvtomd 2 | 3 | python csv2md.py $1 4 | csvtomd sample.csv > $2 5 | 6 | #
7 | #
8 | # style='font-size:77%' -------------------------------------------------------------------------------- /_drafts/WebSocket.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "WebSocket探究与应用" 4 | categories: JavaScript 5 | tags: WebSocket 通信 协议 6 | --- 7 | 8 | * content 9 | {:toc} 10 | 11 | ## WebSocket 适用场景 12 | 13 | ## WebSocket 原理 14 | 15 | ## WebSocket 浏览器兼容性 16 | -------------------------------------------------------------------------------- /_layouts/collections.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 |
5 |
6 |

{{page.title}}

7 |
8 |
9 |
10 | {{content}} 11 |
12 |
13 |
14 |
15 | -------------------------------------------------------------------------------- /_includes/previousAndNext.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | {% if page.previous %} 4 |

上一篇 {{ page.previous.title }}

5 | {% endif %} 6 |
7 |
8 | 9 | {% if page.next %} 10 |

下一篇 {{ page.next.title }}

11 | {% endif %} 12 |
13 |
14 | -------------------------------------------------------------------------------- /search_data.json: -------------------------------------------------------------------------------- 1 | --- 2 | layout: null 3 | --- 4 | [ 5 | {% for post in site.posts %} 6 | { 7 | "title" : "{{ post.title | escape }}", 8 | "category" : "{{ post.categories | join: ', ' }}", 9 | "tags" : "{{ post.tags | join: ', ' }}", 10 | "content": {{ post.content | strip_html | strip_newlines | jsonify }}, 11 | "url" : "{{ site.baseurl }}{{ post.url }}", 12 | "date" : "{{ post.date }}" 13 | } {% unless forloop.last %},{% endunless %} 14 | {% endfor %} 15 | ] 16 | -------------------------------------------------------------------------------- /js/search.js: -------------------------------------------------------------------------------- 1 | jQuery(function() { 2 | function adjust_search_box_width() { 3 | if ($(".post-directory").length) { 4 | if ($(".post-directory").is(":visible")) { 5 | $("#site_search").width(300); 6 | } 7 | } 8 | var searchbar_width = $("#site_search").width(); 9 | $("#search_box").width(searchbar_width-15); 10 | } 11 | 12 | adjust_search_box_width(); 13 | 14 | $(window).on("resize", function() { 15 | adjust_search_box_width(); 16 | }); 17 | }); 18 | -------------------------------------------------------------------------------- /_site/js/search.js: -------------------------------------------------------------------------------- 1 | jQuery(function() { 2 | function adjust_search_box_width() { 3 | if ($(".post-directory").length) { 4 | if ($(".post-directory").is(":visible")) { 5 | $("#site_search").width(300); 6 | } 7 | } 8 | var searchbar_width = $("#site_search").width(); 9 | $("#search_box").width(searchbar_width-15); 10 | } 11 | 12 | adjust_search_box_width(); 13 | 14 | $(window).on("resize", function() { 15 | adjust_search_box_width(); 16 | }); 17 | }); 18 | -------------------------------------------------------------------------------- /_drafts/toDoList.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "建站ToDo List" 4 | excerpt: 建站伊始,百废待兴,诸君努力! 5 | categories: ToDo 6 | tags: 建站 7 | author: cooks 8 | --- 9 | 10 | * content 11 | {:toc} 12 | 13 | ## 写在前面 14 | 15 | 在“美利坚做饭交流群”中的一次集体吐槽我🥚graduate school申请方面的信息匮乏时,大家一致达成了想要做这样一个专属于复旦CSer & DSer们的信息整合平台,希望能给学弟学妹们带来一些指导,也希望多年以后学弟学妹们能够凭借本站,完全摆脱留学中介们的束缚。 16 | 17 | ## ToDo List 18 | 19 | 建站伊始,百废待兴,诸君努力! 20 | 21 | ### For now 22 | 23 | - [x] 本站实施方案确定 24 | - [ ] 内容结构制定 25 | - [ ] 内容类别(category)以及标签(tags)大体制定 26 | - [ ] 发帖流程、发帖规则制定 27 | - [ ] 本站内容保密原则制定 28 | 29 | ### For future 30 | 31 | - [ ] 复旦CS/DS课程资料/心得/吐槽分享 -------------------------------------------------------------------------------- /_includes/cloud-music.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 13 | 14 | -------------------------------------------------------------------------------- /_layouts/page.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 |
6 |
7 |

{{page.title}}

8 |
9 | {{content}} 10 |
11 | 12 |
13 |
14 | 15 | 16 |
17 |
18 | Content 19 |
20 |
    21 |
22 |
23 | 24 | 25 |
26 |
27 |
28 | 29 | -------------------------------------------------------------------------------- /_includes/tag.html: -------------------------------------------------------------------------------- 1 | {% capture tags %} 2 | {% if post %} 3 | {% for tag in post.tags %} 4 | {% unless forloop.last %} {% endunless %} 5 | {% endfor %} 6 | {% else %} 7 | {% for tag in page.tags %} 8 | 9 | {% unless forloop.last %} {% endunless %} 10 | {% endfor %} 11 | {% endif %} 12 | {% endcapture %} 13 | 14 | 15 | {{ tags }} 16 | 17 | -------------------------------------------------------------------------------- /_layouts/default.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {% include head.html %} 5 | 6 | 7 | 8 | {% include header.html %} 9 | 10 | {{ content }} 11 | 12 | {% include footer.html %} 13 | {% include backToTop.html %} 14 | 15 | 16 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /_sass/_scrollbar.scss: -------------------------------------------------------------------------------- 1 | .content-ul { 2 | &::-webkit-scrollbar { 3 | width: 7px; 4 | height: 6px; 5 | } 6 | &::-webkit-scrollbar-button { 7 | width: 0; 8 | height: 0; 9 | } 10 | &::-webkit-scrollbar-thumb { 11 | background: #D3D3D3; 12 | border: 0 none #ffffff; 13 | border-radius: 50px; 14 | } 15 | &::-webkit-scrollbar-thumb:hover { 16 | background: #a8a8a8; 17 | } 18 | &::-webkit-scrollbar-thumb:active { 19 | background: #787878; 20 | } 21 | &::-webkit-scrollbar-track { 22 | background: #F1F1F1; 23 | // border: 1 solid #ffffff; 24 | border-radius: 50px; 25 | } 26 | &::-webkit-scrollbar-track:hover { 27 | background: #e2e2e2; 28 | } 29 | &::-webkit-scrollbar-track:active { 30 | background: #cccccc; 31 | } 32 | &::-webkit-scrollbar-corner { 33 | background: transparent; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /_includes/sidebar-search.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | Search 4 |
5 | 6 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 29 | -------------------------------------------------------------------------------- /_includes/category.html: -------------------------------------------------------------------------------- 1 | {% capture categories %} 2 | {% if post %} 3 | {% for category in post.categories %} 4 | {{ category | join: "/" }}{% unless forloop.last %} {% endunless %} 5 | {% endfor %} 6 | {% else %} 7 | {% for category in page.categories %} 8 | {{ category | join: "/" }}{% unless forloop.last %} {% endunless %} 9 | {% endfor %} 10 | {% endif %} 11 | {% endcapture %} 12 | {% capture category_size %}{{ categories | strip_newlines | replace: ' ', '' | size }}{% endcapture %} 13 | {% unless category_size == '0' %} 14 | 15 | 16 | {{ categories }} 17 | 18 | 19 | {% endunless %} 20 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 fdu-cooks 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /_site/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 fdu-cooks 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /_sass/_backToTop.scss: -------------------------------------------------------------------------------- 1 | .back-to-top { 2 | position: fixed; 3 | left: 50%; 4 | margin-left: 580px; 5 | bottom: 37px; 6 | background-color: #f8f8fd; 7 | visibility: hidden; 8 | opacity: 0; 9 | transition: 0.4s ease; 10 | box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.3), 0 0 30px rgba(10, 10, 0, 0.1) inset; 11 | a { 12 | display: block; 13 | background-color: #eee; 14 | width: 38px; 15 | height: 38px; 16 | line-height: 38px; 17 | text-align: center; 18 | font-size: 20px; 19 | color: #b4b4b4; 20 | } 21 | } 22 | .back-to-top-show{ 23 | visibility: visible; 24 | opacity: 0.7; 25 | &:hover{ 26 | opacity: 1 27 | } 28 | } 29 | @media screen and (max-width:1200px) and (min-width: 770px) { 30 | .back-to-top { 31 | left: 50%; 32 | margin-left: 45.5%; 33 | } 34 | } 35 | @media screen and (max-width: 770px) { 36 | .back-to-top { 37 | right:2.5%; 38 | left: auto; 39 | // left: 50%; 40 | margin-left: 0px; 41 | a { 42 | width: 33px; 43 | height: 33px; 44 | line-height: 33px; 45 | text-align: center; 46 | font-size: 18px; 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /_includes/banner.html: -------------------------------------------------------------------------------- 1 | 2 | 图片轮播代码 3 | 4 | 5 | 6 | 7 | 12 | 13 | 14 |
15 | 20 |
21 | 34 | 35 | -------------------------------------------------------------------------------- /feed.xml: -------------------------------------------------------------------------------- 1 | --- 2 | layout: null 3 | --- 4 | 5 | 6 | 7 | {{ site.title | xml_escape }} 8 | {{ site.description | xml_escape }} 9 | {{ site.url }}{{ site.baseurl }}/ 10 | 11 | {{ site.time | date_to_rfc822 }} 12 | {{ site.time | date_to_rfc822 }} 13 | Jekyll v{{ jekyll.version }} 14 | {% for post in site.posts limit:10 %} 15 | 16 | {{ post.title | xml_escape }} 17 | {{ post.excerpt | remove: '

' | remove: '

' | xml_escape }}
18 | {{ post.date | date_to_rfc822 }} 19 | {{ post.url | prepend: site.baseurl | prepend: site.url }} 20 | {{ post.url | prepend: site.baseurl | prepend: site.url }} 21 | {% for tag in post.tags %} 22 | {{ tag | xml_escape }} 23 | {% endfor %} 24 | {% for cat in post.categories %} 25 | {{ cat | xml_escape }} 26 | {% endfor %} 27 |
28 | {% endfor %} 29 |
30 |
31 | -------------------------------------------------------------------------------- /_includes/header.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | {{ site.title }} 4 | {{site.brief-intro}} 5 | 6 | 33 |
34 |
35 | -------------------------------------------------------------------------------- /page/4about.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: page 3 | title: About 4 | permalink: /about/ 5 | icon: heart 6 | type: page 7 | --- 8 | 9 | * content 10 | {:toc} 11 | 12 | ## 关于我们 13 | 14 | 我们是来自复旦大学大数据学院的CSer & DSer! 15 | 16 | ## 联系我们 17 | 18 | * [RshCaroline](https://rshcaroline.github.io/) 19 | * [AaronHeee](https://aaronheee.github.io/) 20 | * [Sean Zhang](https://zhangshun97.github.io/) 21 | * [Jiancong Gao](https://github.com/jianconggao) 22 | * [Guigui](https://github.com/Lidonghao1996) 23 | 24 | ## 关于本站 25 | 26 | 本站是专属于复旦CSer & DSer们的信息整合平台,这里有着学长学姐们无偿提供的血泪经验和肺腑之言。 27 | 28 | 欢迎大家提一些对本站内容/排版的建议,可以直接在下面留言或者新建一个 [Issue](https://github.com/Gaohaoyang/gaohaoyang.github.io/issues)。 29 | 30 | ### 免责声明 31 | 32 | 本站所展示信息均经过主体个人授权,为个人意愿、仅代表个人,与复旦大学无直接关系。 33 | 34 | ## **本站的唯一红线!!!** 35 | 36 | > **禁止**将站内任何内容泄露给>>>**留学中介**<<<等校外机构,更加禁止将本站内容>>>**私自出售**<<<等。 37 | 38 | ## Update Log 39 | 40 | 2019.4.11 41 | 42 | - backToTop fix 43 | - timeStamp 44 | 45 | 2019.4.10 46 | 47 | - search 48 | 49 | 2019.4.2 50 | 51 | - add UserMap 52 | 53 | *2019.3.24* 54 | 55 | - 初代开发成员们约了一顿好吃的羊肉火锅 56 | - 网页模板debug,基本框架完成 57 | - 邀请问卷确立(但Guigui忘记保存了 ヽ(`Д´)ノ 58 | - collection表格建立 59 | 60 | *2019.3.16* 61 | 62 | - 本站建立 63 | 64 | ## 友情链接 65 | 66 | * [复旦大学计算机学院](http://www.cs.fudan.edu.cn/) 67 | * [复旦大学数学科学学院](http:math.fudan.edu.cn/) 68 | * [复旦大学大数据学院](http://www.sds.fudan.edu.cn/) 69 | * [一亩三分地](https://www.1point3acres.com/bbs/) 70 | * [Grad Cafe](https://www.thegradcafe.com/) 71 | ## Comments 72 | 73 | {% include comments.html %} 74 | -------------------------------------------------------------------------------- /css/main.scss: -------------------------------------------------------------------------------- 1 | --- 2 | # Only the main Sass file needs front matter (the dashes are enough) 3 | --- 4 | @charset "utf-8"; // 5 | // 6 | // 7 | // // Our variables 8 | // $base-font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 9 | // $base-font-size: 16px; 10 | // $base-font-weight: 400; 11 | // $small-font-size: $base-font-size * 0.875; 12 | // $base-line-height: 1.5; 13 | // 14 | // $spacing-unit: 30px; 15 | // 16 | // $text-color: #111; 17 | // $background-color: #fdfdfd; 18 | // $brand-color: #2a7ae2; 19 | // 20 | // $grey-color: #828282; 21 | // $grey-color-light: lighten($grey-color, 40%); 22 | // $grey-color-dark: darken($grey-color, 25%); 23 | // 24 | // // Width of the content area 25 | // $content-width: 800px; 26 | // 27 | // $on-palm: 600px; 28 | // $on-laptop: 800px; 29 | // 30 | // 31 | // 32 | // // Use media queries like this: 33 | // // @include media-query($on-palm) { 34 | // // .wrapper { 35 | // // padding-right: $spacing-unit / 2; 36 | // // padding-left: $spacing-unit / 2; 37 | // // } 38 | // // } 39 | // @mixin media-query($device) { 40 | // @media screen and (max-width: $device) { 41 | // @content; 42 | // } 43 | // } 44 | /* 45 | * variables 46 | */ 47 | // Import partials from `sass_dir` (defaults to `_sass`) 48 | @import "reset", "header", "post", "page", "syntax-highlighting", "index", "demo", "footer", "scrollbar", "backToTop"; 49 | 50 | table{ 51 | // word-break: break-all; 52 | width: 100%; 53 | thead { 54 | background-color: #777; 55 | } 56 | } 57 | 58 | // td{width:100px;} -------------------------------------------------------------------------------- /_sass/_footer.scss: -------------------------------------------------------------------------------- 1 | .site-footer { 2 | position: absolute; 3 | right: 0; 4 | bottom: 0; 5 | left: 0; 6 | 7 | text-align: center; 8 | // margin-top: 50px; 9 | background-color: #2b2b3c; 10 | box-shadow: 0 -2px 4px 1px rgba(0,0,0,0.5); 11 | color: #bbb; 12 | .wrapper { 13 | width: 1140px; 14 | margin: 0 auto; 15 | padding: 15px 0; 16 | text-align: center; 17 | font-size: 14px; 18 | p { 19 | margin: 0; 20 | line-height: 1.6; 21 | } 22 | .contact { 23 | display: inline-block; 24 | a { 25 | color: #ccc; 26 | transition: 0.3s ease; 27 | &:hover { 28 | color: #fff; 29 | } 30 | i { 31 | margin: 0 5px; 32 | font-size: 20px; 33 | } 34 | } 35 | } 36 | .description { 37 | display: inline-block; 38 | } 39 | .power { 40 | a { 41 | color: #8F90C5; 42 | transition: 0.3s ease; 43 | &:hover { 44 | color: #fff; 45 | } 46 | } 47 | } 48 | } 49 | } 50 | @media screen and (max-width:1200px) and (min-width: 770px) { 51 | .site-footer { 52 | .wrapper { 53 | width: 90%; 54 | } 55 | } 56 | } 57 | @media screen and (max-width: 770px) { 58 | .site-footer { 59 | .wrapper { 60 | width: 90%; 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /_site/feed.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | FDU-gradhotpot 5 | 6 | http://localhost:4000/fdu-gradhotpot/ 7 | 8 | Mon, 15 Apr 2019 19:09:26 +0800 9 | Mon, 15 Apr 2019 19:09:26 +0800 10 | Jekyll v3.8.5 11 | 12 | 13 | Hotpot分享者指南 14 | 本文写给Hotpot计划的分享者,包括如何贡献自己的选校和录取信息(不透露个人联系方式)、如何给学弟学妹分享交流、暑研、申请心得…… 15 | Sat, 13 Apr 2019 00:00:00 +0800 16 | http://localhost:4000/fdu-gradhotpot/2019/04/13/howtoshare/ 17 | http://localhost:4000/fdu-gradhotpot/2019/04/13/howtoshare/ 18 | 19 | 建站 20 | 21 | 22 | Hotpot建站 23 | 24 | 25 | 26 | 27 | Hotpot卷首语 28 | Hotpot计划是复旦留学申请数据开源计划的代称,旨在为复旦学弟学妹无偿分享留学申请经验、暑研动态等一切相关信息。不一定能给出最优的策略,但我们诚挚希望为学弟学妹的留学规划提供一些参考和建议。 29 | Wed, 10 Apr 2019 00:00:00 +0800 30 | http://localhost:4000/fdu-gradhotpot/2019/04/10/hellohotpot/ 31 | http://localhost:4000/fdu-gradhotpot/2019/04/10/hellohotpot/ 32 | 33 | 建站 34 | 35 | 36 | Hotpot建站 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /js/main.js: -------------------------------------------------------------------------------- 1 | /** 2 | * some JavaScript code for this blog theme 3 | */ 4 | /* jshint asi:true */ 5 | 6 | /////////////////////////header//////////////////////////// 7 | /** 8 | * clickMenu 9 | */ 10 | (function() { 11 | if (window.innerWidth <= 770) { 12 | var menuBtn = document.querySelector('#headerMenu') 13 | var nav = document.querySelector('#headerNav') 14 | menuBtn.onclick = function(e) { 15 | e.stopPropagation() 16 | if (menuBtn.classList.contains('active')) { 17 | menuBtn.classList.remove('active') 18 | nav.classList.remove('nav-show') 19 | } else { 20 | nav.classList.add('nav-show') 21 | menuBtn.classList.add('active') 22 | } 23 | } 24 | document.querySelector('body').addEventListener('click', function() { 25 | nav.classList.remove('nav-show') 26 | menuBtn.classList.remove('active') 27 | }) 28 | } 29 | }()); 30 | 31 | //////////////////////////back to top//////////////////////////// 32 | (function() { 33 | var backToTop = document.querySelector('.back-to-top') 34 | var backToTopA = document.querySelector('.back-to-top a') 35 | // console.log(backToTop); 36 | window.addEventListener('scroll', function() { 37 | 38 | // 页面顶部滚进去的距离 39 | var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop) 40 | 41 | if (scrollTop > 200) { 42 | backToTop.classList.add('back-to-top-show') 43 | } else { 44 | backToTop.classList.remove('back-to-top-show') 45 | } 46 | }) 47 | 48 | // backToTopA.addEventListener('click',function (e) { 49 | // e.preventDefault() 50 | // window.scrollTo(0,0) 51 | // }) 52 | }()); 53 | 54 | //////////////////////////hover on demo////////////////////////////// 55 | (function() { 56 | var demoItems = document.querySelectorAll('.grid-item') 57 | }()); 58 | -------------------------------------------------------------------------------- /_site/js/main.js: -------------------------------------------------------------------------------- 1 | /** 2 | * some JavaScript code for this blog theme 3 | */ 4 | /* jshint asi:true */ 5 | 6 | /////////////////////////header//////////////////////////// 7 | /** 8 | * clickMenu 9 | */ 10 | (function() { 11 | if (window.innerWidth <= 770) { 12 | var menuBtn = document.querySelector('#headerMenu') 13 | var nav = document.querySelector('#headerNav') 14 | menuBtn.onclick = function(e) { 15 | e.stopPropagation() 16 | if (menuBtn.classList.contains('active')) { 17 | menuBtn.classList.remove('active') 18 | nav.classList.remove('nav-show') 19 | } else { 20 | nav.classList.add('nav-show') 21 | menuBtn.classList.add('active') 22 | } 23 | } 24 | document.querySelector('body').addEventListener('click', function() { 25 | nav.classList.remove('nav-show') 26 | menuBtn.classList.remove('active') 27 | }) 28 | } 29 | }()); 30 | 31 | //////////////////////////back to top//////////////////////////// 32 | (function() { 33 | var backToTop = document.querySelector('.back-to-top') 34 | var backToTopA = document.querySelector('.back-to-top a') 35 | // console.log(backToTop); 36 | window.addEventListener('scroll', function() { 37 | 38 | // 页面顶部滚进去的距离 39 | var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop) 40 | 41 | if (scrollTop > 200) { 42 | backToTop.classList.add('back-to-top-show') 43 | } else { 44 | backToTop.classList.remove('back-to-top-show') 45 | } 46 | }) 47 | 48 | // backToTopA.addEventListener('click',function (e) { 49 | // e.preventDefault() 50 | // window.scrollTo(0,0) 51 | // }) 52 | }()); 53 | 54 | //////////////////////////hover on demo////////////////////////////// 55 | (function() { 56 | var demoItems = document.querySelectorAll('.grid-item') 57 | }()); 58 | -------------------------------------------------------------------------------- /utils/csv2md/csv2md.py: -------------------------------------------------------------------------------- 1 | import re 2 | import sys 3 | import pandas as pd 4 | 5 | SETS = ["A.", "B.", "C.", "D.", "E."] 6 | def no_option(ans): 7 | if ans[:2] in SETS: 8 | return ans[2:] 9 | return ans 10 | 11 | # 文件读取 12 | if len(sys.argv) > 1: 13 | path = sys.argv[1] 14 | else: 15 | print("Please use \'python csv2md.py xxx.csv\'") 16 | 17 | df = pd.read_csv(path) 18 | 19 | # 列名改变 20 | col_now = list(df) 21 | col_names = ["编号","开始时间","结束时间","自定义字段","申请年份","申请年份填空","昵称","本科专业","申请方向:CS","申请方向:DS","申请方向:Stat/Biostat","申请方向:MFE/Fin/FinMath","申请方向:其他","申请方向:其他填空","申请类型","最终决定","录取","拒绝","未出","绩点","排名","TOEFL/IELTS","GRE","实习经历","研究经历","论文发表","海外交流","重要奖项","邮箱","微信","分享", "NAN"] 22 | df = df.rename(index=str, columns={key:val for key, val in zip(col_now, col_names)}) 23 | df.fillna("无", inplace=True) 24 | 25 | # 昵称和本科专业 26 | df_md = df.loc[:, ["昵称", "本科专业"]] 27 | 28 | # 申请年份 29 | df_md = pd.concat([df["申请年份"].apply(no_option), df_md], axis=1) 30 | 31 | # 申请专业 32 | def concat(major_list): 33 | majors = [] 34 | for i in major_list: 35 | if i == "无": 36 | continue 37 | else: 38 | i = no_option(i) 39 | majors.append(i) 40 | if len(majors) == 0: 41 | return "无" 42 | else: 43 | return "; ".join(majors) 44 | 45 | majors = [] 46 | for i, row in df.loc[:, ["申请方向:CS","申请方向:DS","申请方向:Stat/Biostat","申请方向:MFE/Fin/FinMath","申请方向:其他填空"]].iterrows(): 47 | majors.append(concat(list(row))) 48 | df["申请方向"] = majors 49 | df_md = pd.concat([df_md, df["申请方向"]], axis=1) 50 | 51 | # 申请类型 52 | df_md = pd.concat([df_md, df["申请类型"].apply(no_option)], axis=1) 53 | 54 | # 除联系方式之外的其他 55 | for col in ["最终决定","录取","拒绝","未出","绩点","排名","TOEFL/IELTS","GRE","实习经历","研究经历","论文发表","海外交流","重要奖项"]: 56 | df_md = pd.concat([df_md, df[col]], axis=1) 57 | 58 | df_md.to_csv("sample.csv", index=None) 59 | 60 | 61 | 62 | 63 | 64 | -------------------------------------------------------------------------------- /page/2tags.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Tags 4 | permalink: /tag/ 5 | icon: tags 6 | type: page 7 | --- 8 | 9 |
10 |
11 |

{{page.title}}

12 |
13 | {% capture tags %} 14 | {% for tag in site.tags %} 15 | {{ tag[0] }} 16 | {% endfor %} 17 | {% endcapture %} 18 | {% assign sortedtags = tags | split:' ' | sort %} 19 | 20 | 36 | 37 |
38 | 39 |
40 |
41 | 42 | 43 |
44 |
45 | Content 46 |
47 | 57 |
58 | 59 | 60 |
61 |
62 |
63 | 64 | -------------------------------------------------------------------------------- /_includes/comments.html: -------------------------------------------------------------------------------- 1 | {% if site.duoshuo_shortname %} 2 | 3 |
4 | 5 | 6 | 19 | 20 | {% endif %} 21 | 22 | {% if site.disqus_shortname %} 23 |
24 | 45 | 46 | {% endif %} 47 | -------------------------------------------------------------------------------- /_site/README.md: -------------------------------------------------------------------------------- 1 | # FDU-Hotpot计划 2 | 3 | *Hotpot计划*是[复旦留学申请数据开源计划](https://fdu-cooks.github.io/fdu-gradhotpot/)的代称,旨在为复旦学弟学妹无偿分享留学申请经验、暑研动态等一切相关信息。不一定能给出最优的策略,但我们诚挚希望为学弟学妹的留学规划提供一些参考和建议。 4 | 5 | ## 项目缘起 6 | 7 | 项目缘起于一次火锅聚餐,几位刚经历了留学申请的大数据学院学长学姐对于走过的留学申请弯路颇为感慨。同时有感于*上交海外申请自助小组GAU*、*浙大留学申请飞跃手册* 等组织或资料,而我旦在这方面给予学弟学妹的帮助甚少,于是计划建立一个通畅且非盈利的复旦留学信息渠道,在火锅店就地取名为*Hotpot计划*。 8 | 9 | ## 项目内容 10 | 11 | 根据与学弟学妹的初步交流,以及自己的申请经验,我们认为比较珍贵而独特的分享信息有: 12 | 13 | #### 选校定位 14 | 15 | - 提供学长学姐的选校信息和最终录取/拒绝的结果,方便学弟学妹们进行选校参考。 16 | - 其他论坛也有定位帖,但是来自复旦的录取/拒绝信息对于本校的同学来说,有更直接的参考意义。 17 | 18 | #### 申请心得 19 | 20 | - 邀请一部分学长学姐分享他们认为重要的申请经验,同学们可以各取所需。 21 | - 可能内容有:选校策略、暑研、陶瓷和面试技巧、转专业申请注意事项。 22 | 23 | #### 申请时间线 24 | 25 | - 各位学长学姐将分享各自的申请时间线,为同学们规划准备提供参考。 26 | - 可能内容为:重要的时间节点,如英语达标、文书撰写、开始申请、收到面试、决定去向等, 27 | 28 | #### 联系方式 29 | 30 | - 促进跨年级的经验交流,方便学弟学妹进行个性化联系。 31 | - 我们采用**校名邮件**的方式提供学长学姐的联系方式,只有用`fudan.edu.cn`后缀发送的邮件能够获得我们的回信,我们会在回信中附上你想要交流的学长学姐的联系方式。 32 | 33 | ## 项目事项 34 | 35 | #### 致分享者(详见[分享指南](https://fdu-cooks.github.io/fdu-gradhotpot/2019/04/13/howtoshare/)) 36 | 37 | - **分享自由:** 期待分享者能够尽可能填写完整的资料,为学弟学妹们提供全面完善的信息。我们以及学弟学妹对此表示**真诚的感谢(×100)** 同时,分享者可以隐藏不想透露的信息。 38 | - **隐私保护:** 分享者的真实姓名、联系方式等隐私信息将被保护。并且只有在分享者允许的情况下,学弟学妹们才能通过学号邮件请求到分享者的个人联系方式。 39 | - **公益性质:** 该项目依靠我旦学长学姐的善意分享而建立,希望分享者不要填写虚假信息,同时也不要出现广告等商业信息,感谢! 40 | 41 | #### 致学弟学妹(详见[使用指南]()) 42 | 43 | - **尽情玩耍:** 请在*Hotpot*的网站里尽情玩耍,获取你们需要的信息,各个板块的详细说明在上文中有详细的讲解,希望你们能获得帮助。 44 | - **欢迎加入:** 我们期待*Hotpot*能够延续、帮助更多同学,也希望受益者能成为将来的分享者。如果对于网站建设、信息收集感兴趣的同学,欢迎加入我们,一起打造通畅且非盈利的复旦留学信息渠道。 45 | - **公益性质:** 我们不希望受益者将内容泄露给商业机构,切记,望理解! 46 | 47 | ## 项目维护 48 | 49 | #### 项目仓库 50 | 51 | - Github: 52 | - 欢迎在Issue中提出意见和建议,同时可以将反馈直接发送到Hotpot公共邮箱: 53 | 54 | #### 项目时间表 55 | 56 | ![timeline](https://ws4.sinaimg.cn/large/006tNc79gy1g1ypoii7hcj317v0svk10.jpg) 57 | 58 | #### 联系我们 59 | 60 | - [RshCaroline](https://rshcaroline.github.io/) 61 | - [AaronHeee](https://aaronheee.github.io/) 62 | - [Sean Zhang](https://zhangshun97.github.io/) 63 | - [Jiancong Gao](https://github.com/jianconggao) 64 | - [Guigui](https://github.com/Lidonghao1996) 65 | 66 | 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /page/1category.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Categories 4 | permalink: /category/ 5 | icon: th-list 6 | type: page 7 | --- 8 | 9 | 10 |
11 |
12 |

{{page.title}}

13 |
14 |
    15 | {% for category in site.categories %} 16 |

    {{category | first}}

    17 | {% for posts in category %} 18 | {% for post in posts %} 19 | {% if post.url %} 20 |
  • 21 | 24 | {{ post.title }} 25 | 26 | {% include category.html %} 27 | {% include tag.html %} 28 |
  • 29 | {% endif %} 30 | {% endfor %} 31 | {% endfor %} 32 | {% endfor %} 33 |
34 |
35 | 36 |
37 |
38 | 39 | 40 |
41 |
42 | Content 43 |
44 | 53 |
54 | 55 | 56 |
57 |
58 |
59 | 60 | -------------------------------------------------------------------------------- /_sass/_post.scss: -------------------------------------------------------------------------------- 1 | #markdown-toc { 2 | display: none; 3 | } 4 | .page[post] { 5 | .label { 6 | margin-top: 16px; 7 | overflow: hidden; 8 | .label-card { 9 | float: left; 10 | margin-right: 15px; 11 | .point { 12 | padding: 0 10px; 13 | color: #9d9d9d; 14 | } 15 | i { 16 | padding-right: 5px; 17 | color: #6b6a6a; 18 | } 19 | } 20 | } 21 | a { 22 | color: #4d6dad; 23 | transition: 0.5s ease; 24 | &:hover { 25 | color: #223253; 26 | background-color: #f4efeb; 27 | } 28 | } 29 | .left { 30 | ul { 31 | >h2 { 32 | color: #333; 33 | } 34 | li { 35 | color: #333; 36 | margin: 0; 37 | } 38 | } 39 | // .post-recent { 40 | // width: 100%; 41 | // overflow: hidden; 42 | // padding: 4px; 43 | // .pre{ 44 | // width: 49%; 45 | // float: left; 46 | // } 47 | // .nex{ 48 | // width: 49%; 49 | // float: right; 50 | // text-align: right; 51 | // } 52 | // p { 53 | // min-height: 70px; 54 | // box-sizing: border-box; 55 | // padding: 10px; 56 | // background-color: #fff; 57 | // box-shadow: 0 0 4px 0px rgba(0,0,0,0.15); 58 | // } 59 | // } 60 | } 61 | } 62 | @media screen and (max-width: 770px) { 63 | .page[post] { 64 | .left { 65 | font-size: 15px; 66 | h2 { 67 | font-size: 24px; 68 | } 69 | h3 { 70 | font-size: 20px; 71 | } 72 | h4 { 73 | font-size: 18px; 74 | } 75 | h5 { 76 | font-size: 16px; 77 | } 78 | h6 { 79 | font-size: 15px; 80 | } 81 | } 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /page/3collections.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: collections 3 | title: Collections 4 | permalink: /collections/ 5 | icon: bookmark 6 | type: page 7 | --- 8 | 9 | | 申请年份 | 昵称 | 本科专业 | 申请方向 | 申请类型 | 最终决定 | 录取 | 拒信 | 未出 | GPA | 排名 | TOEFL/IELTS | GRE | 实习经历 | 科研经历 | 论文 | 交流经历 | 重要奖项 | 10 | | -------- | ---- | -------- | ----- | ------ | ------------ | ---------------------------------------- | ---------------------------------------- | -------------------- | ----- | ---- | ----------- | ------------------ | ---------------------------------------- | ---------------------------------------- | ---------------------------------- | ------- | ------ | 11 | | 2019Fall | 杰尼杰尼 | DS(CS) | CS | PhD+MS | CS MSCS@UCSD | CS PhD@Wisc; CS PhD@NUS; MITS@CMU; CIS@UPenn; MEng@Cornell Tech; MSCS@UCSD | MIIS/MSAII/MCDS@CMU; DS@Harvard; MCS@UIUC; MEng@UCB; MSCS@Toronto; MSCS@UCLA; MSCS@UMich; | SE-SV@CMU; MSCS@USC | 3.6+ | 10% | 103(S23) | 154+170+3.0(拼分4.0) | SDE@XY Investments, 2 months; SDE@DataYes, 2 months; | 复旦实验室,NLP;南加州大学暑研,DM+NLP,半年 | 无 | 无 | 无 | 12 | | 2019Fall | 妙蛙种子 | DS(MATH) | CS/DS | MS | CS MITS@CMU | MITS@CMU; MCS@UCI; CS37@USC; MSDS@Columbia | MSDS@USC; CSDA@Dartmouth; MEng@Cornell Tech; MCDS/MSAII/MLT@CMU; CSE@UCSD | | 3.51 | 前30% | 106(S23) | 152+169+3.0 | Machine Learning Intern@Baidu,CV,4 months; AI Intern@ByteDance,CV,doing | 复旦付彦伟老师实验室;Rutgers CBIM实验室暑研 | 无 | 无 | 无 | 13 | | 2019Fall | 小火龙 | DS(CS) | CS | PhD+MS | CS PhD@UCSD | CS MEng@UCB; MSCV@CMU; CS PhD@UIUC; CS PhD@UCSD; CS PhD@Wisc; CS PhD@NUS | CS MSE@Harvard; CS MSE@UPenn; MIIS/MCDS/MITS@CMU; CS PhD@USC; MSCS@UofT; MSCS@UCLA | MSCS@UMich; MSCS@USC | 3.65+ | 5% | 101(S22) | 155+170+3.5 | Algorithm Intern@CitroyTech, CV, 4months; AI Intern@Nvidia, CV&NLP, 6 months | 复旦计算机视觉实验室; 学期交流NUS数据挖掘实验室; 暑研UIUC数据挖掘实验室 | AAAI 共同一作一篇; SIGIR 二作一篇; TKDE 二作一篇 | NUS交换半年 | 上海市奖学金 | 14 | -------------------------------------------------------------------------------- /page/5links.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: page 3 | title: Links 4 | permalink: /links/ 5 | icon: bookmark 6 | type: page 7 | --- 8 | 9 | * content 10 | {:toc} 11 | 【pending】 12 | 13 | ## 工具 14 | 15 | 16 | 17 | ## 编程语言 18 | 19 | 20 | 21 | ## other articles 22 | 23 | 24 | 25 | ## 编辑器 26 | 27 | ### Atom 中常用插件 28 | 29 | * auto-beautify 30 | * autoprefixer 31 | * block-comment 32 | * color-picker 33 | * docblockr 34 | * emmet 35 | * jquery-snippets 36 | * jshint 37 | * linter 38 | * linter-csslint 39 | * linter-htmlhint 40 | * minimap 41 | * minimap-git-diff 42 | * minimap-codeglance 滑过 minimap 显示代码 43 | * minimap-find-and-replace 在 minimap 中显示 `ctrl+D` 选中的内容 44 | * open-in-browser 45 | * uglify 46 | * active-power-mode 47 | * atom-terminal-panel 48 | * linter-scss-linter 49 | * atom-ternjs 50 | * file-icons 将图标变成彩色 51 | * autocomplete-paths 自动补充路径 52 | * symbols-tree-view A symbol treeview like taglist 53 | 54 | 常用的主题: 55 | 56 | UI Theme: One Dark 57 | 58 | Syntax Theme: Atom Dark or One Dark 59 | 60 | ## Other blogs 61 | 62 | - [COLORFUL xiaoa](http://www.xiaoa.name/) 63 | 64 | * [进击的马斯特 http://pinkyjie.com/](http://pinkyjie.com/) 65 | 66 | 马斯特,87年生人,爱溜冰的码农。技术: Javascript、Python、Mac、iOS 67 | 68 | * [Jerry Qu](https://imququ.com/) 69 | 70 | JerryQu,奇虎 360,前端开发,前百度前端。 71 | 72 | * [码志 https://mazhuang.org/](https://mazhuang.org/) 73 | 74 | 我是马壮,码而生,码而立。就职sogou。 75 | 76 | * [小胡子哥 http://www.barretlee.com/](http://www.barretlee.com/) 77 | 78 | 李靖,阿里巴巴。 79 | 80 | * [Xcat Liu http://blog.xcatliu.com/](http://blog.xcatliu.com/) 81 | 82 | Microsoft Software Engineer II, Meituan Senior Front-End Engineer 83 | 84 | * [极限前端 http://ouvens.github.io/](http://ouvens.github.io/) 85 | 86 | Ouvenzhang, 前端工程师,对前端领域的技术知识具有较高的职业能力和探究精神。对响应式页面设计、工程构建组件化、mv*设计实现、前端优化、ES6开发体系等有深入的研究与项目实践。来自腾讯科技。 87 | 88 | * [凳子_Joinery 邓智容 http://www.dengzhr.com/](http://www.dengzhr.com/) 89 | 90 | * [赵达的个人网站 腾讯高级前端开发工程师](http://zhaoda.net/) 91 | 92 | * [Randy](http://djyde.github.io/) 93 | 94 | 95年出生的全栈。卢涛南,英文名 Randy,用 djyde 这个ID混迹于网络。 95 | 96 | * [JS前端开发群月报 -豪情等人维护](http://www.kancloud.cn/jsfront/month/82796) 97 | 98 | ## Comments 99 | 100 | {% include comments.html %} 101 | 102 | 103 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | # Welcome to Jekyll! 2 | # 3 | # This config file is meant for settings that affect your whole blog, values 4 | # which you are expected to set up once and rarely need to edit after that. 5 | # For technical reasons, this file is *NOT* reloaded automatically when you use 6 | # 'jekyll serve'. If you change this file, please restart the server process. 7 | 8 | # Site settings 9 | title: FDU-gradhotpot 10 | brief-intro: Anything related in graduate program admission! 11 | baseurl: "/fdu-gradhotpot" # the subpath of your site, e.g. /blog 12 | url: "https://fdu-cooks.github.io" # the base hostname & protocol for your site 13 | 14 | permalink: /:year/:month/:day/:title/ 15 | 16 | # other links 17 | twitter_username: 18 | facebook_username: 19 | github_username: fdu-cooks/fdu-gradhotpot 20 | weibo_username: 21 | zhihu_username: 22 | linkedIn_username: 23 | dribbble_username: 24 | email: fdu-hotpot@outlook.com 25 | 26 | description_footer: 本站记录每一届复旦申请MS/PhD的资料! 27 | 28 | # comments 29 | # two ways to comment, only choose one, and use your own short name 30 | # 两种评论插件,选一个就好了,使用自己的 short_name 31 | duoshuo_shortname: #hygblog 32 | disqus_shortname: fdu-hotpot 33 | 34 | # statistic analysis 统计代码 35 | # 百度统计 id,将统计代码替换为自己的百度统计id,即 36 | # hm.src = "//hm.baidu.com/hm.js?xxxxxxxxxxxx"; 37 | # xxxxx字符串 38 | baidu_tongji_id: 66b97f63670e7488b8493321c91f6c93 # shun 39 | google_analytics_id: # google 分析追踪id 40 | 41 | # Build settings 42 | markdown: kramdown 43 | 44 | kramdown: 45 | input: GFM 46 | enable_coderay: true 47 | auto_ids: true 48 | footnote_nr: 1 49 | entity_output: as_char 50 | toc_levels: 1..6 51 | smart_quotes: lsquo,rsquo,ldquo,rdquo 52 | hard_wrap: true 53 | syntax_highlighter: rouge 54 | transliterated_header_ids: true 55 | footnote_backlink: "↩︎" 56 | 57 | # port 58 | # port: 1234 59 | 60 | # url 61 | category_dir: category/ 62 | tag_dir: tag/ 63 | 64 | # excerpt 65 | excerpt_separator: "\n\n\n\n" 66 | 67 | # paginate 68 | gems: [jekyll-paginate] 69 | paginate: 6 70 | 71 | # search engine with algolia 72 | algolia: 73 | application_id: 'KRITZR1P9L' 74 | index_name: 'KRITZR1P9L' 75 | search_only_api_key: '5fdcf330fc6ad3f56dff2fdf3a3f874d' 76 | -------------------------------------------------------------------------------- /js/content.js: -------------------------------------------------------------------------------- 1 | /* jshint asi:true */ 2 | /////////////////////////content//////////////////////////// 3 | generateContent() 4 | 5 | /** 6 | * [generateContent description] 7 | */ 8 | function generateContent() { 9 | var contentToc = document.querySelector('#markdown-toc') 10 | 11 | 12 | if (contentToc === null) { 13 | document.querySelector('#content').style.display = 'none' 14 | } else { 15 | //为了平滑滚动,使用了第三方库scroll.js 16 | //要给每个a标签添加class=scroll 17 | var aTags = contentToc.querySelectorAll('a') 18 | for (var i = 0; i < aTags.length; i++) { 19 | aTags[i].setAttribute('class', 'scroll') 20 | } 21 | 22 | // 将内容转移 23 | var contentHtml = contentToc.innerHTML 24 | var sideContentUl = document.querySelector('#content-side') 25 | sideContentUl.innerHTML = contentHtml 26 | } 27 | 28 | // 若无相似文章,隐藏这部分 29 | var relatedPost = document.querySelector('.related-post'); 30 | if (relatedPost.innerHTML.trim() === '') { 31 | relatedPost.style.display = 'none' 32 | } 33 | } 34 | 35 | fixSidebar() 36 | 37 | /** 38 | * [fixSidebar description] 39 | * 滚轮滚到一定位置时,将 sidebar-wrap 添加 fixed 样式 40 | * 反之,取消样式 41 | */ 42 | function fixSidebar() { 43 | var sidebarWrap = document.querySelector('.sidebar-wrap') 44 | window.onscroll = function() { 45 | var sidebarWrapTop = sidebarWrap.getBoundingClientRect().top 46 | if (sidebarWrapTop < 21) { 47 | sidebarWrap.classList.add('fixed') 48 | } 49 | var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop) 50 | if (scrollTop < 78) { 51 | sidebarWrap.classList.remove('fixed') 52 | } 53 | } 54 | } 55 | 56 | controlHeight() 57 | 58 | /** 59 | * [controlHeight description] 60 | * 控制 sidebar 的高度 61 | */ 62 | function controlHeight() { 63 | //先获取similar posts 的高度 64 | //和用户浏览器窗口的高度 65 | //给content设置最大高度 66 | var similarDiv = document.querySelector('.related-post') 67 | var contentUl = document.querySelector('.content-ul') 68 | var similarDivHeight = similarDiv.offsetHeight 69 | var windowHeight = window.innerHeight 70 | var contentMaxHeight = windowHeight - similarDivHeight - 77 - 60 71 | 72 | contentUl.style.maxHeight = contentMaxHeight + 'px' 73 | } 74 | -------------------------------------------------------------------------------- /_site/js/content.js: -------------------------------------------------------------------------------- 1 | /* jshint asi:true */ 2 | /////////////////////////content//////////////////////////// 3 | generateContent() 4 | 5 | /** 6 | * [generateContent description] 7 | */ 8 | function generateContent() { 9 | var contentToc = document.querySelector('#markdown-toc') 10 | 11 | 12 | if (contentToc === null) { 13 | document.querySelector('#content').style.display = 'none' 14 | } else { 15 | //为了平滑滚动,使用了第三方库scroll.js 16 | //要给每个a标签添加class=scroll 17 | var aTags = contentToc.querySelectorAll('a') 18 | for (var i = 0; i < aTags.length; i++) { 19 | aTags[i].setAttribute('class', 'scroll') 20 | } 21 | 22 | // 将内容转移 23 | var contentHtml = contentToc.innerHTML 24 | var sideContentUl = document.querySelector('#content-side') 25 | sideContentUl.innerHTML = contentHtml 26 | } 27 | 28 | // 若无相似文章,隐藏这部分 29 | var relatedPost = document.querySelector('.related-post'); 30 | if (relatedPost.innerHTML.trim() === '') { 31 | relatedPost.style.display = 'none' 32 | } 33 | } 34 | 35 | fixSidebar() 36 | 37 | /** 38 | * [fixSidebar description] 39 | * 滚轮滚到一定位置时,将 sidebar-wrap 添加 fixed 样式 40 | * 反之,取消样式 41 | */ 42 | function fixSidebar() { 43 | var sidebarWrap = document.querySelector('.sidebar-wrap') 44 | window.onscroll = function() { 45 | var sidebarWrapTop = sidebarWrap.getBoundingClientRect().top 46 | if (sidebarWrapTop < 21) { 47 | sidebarWrap.classList.add('fixed') 48 | } 49 | var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop) 50 | if (scrollTop < 78) { 51 | sidebarWrap.classList.remove('fixed') 52 | } 53 | } 54 | } 55 | 56 | controlHeight() 57 | 58 | /** 59 | * [controlHeight description] 60 | * 控制 sidebar 的高度 61 | */ 62 | function controlHeight() { 63 | //先获取similar posts 的高度 64 | //和用户浏览器窗口的高度 65 | //给content设置最大高度 66 | var similarDiv = document.querySelector('.related-post') 67 | var contentUl = document.querySelector('.content-ul') 68 | var similarDivHeight = similarDiv.offsetHeight 69 | var windowHeight = window.innerHeight 70 | var contentMaxHeight = windowHeight - similarDivHeight - 77 - 60 71 | 72 | contentUl.style.maxHeight = contentMaxHeight + 'px' 73 | } 74 | -------------------------------------------------------------------------------- /_sass/_demo.scss: -------------------------------------------------------------------------------- 1 | .page[demo] { 2 | .left { 3 | width: 100%; 4 | a { 5 | color: #4d6dad; 6 | transition: 0.5s ease; 7 | &:hover { 8 | color: #223253; 9 | background-color: #f4efeb; 10 | } 11 | } 12 | .grid { 13 | margin: 0 auto; 14 | /* clearfix */ 15 | &:after { 16 | content: ''; 17 | display: block; 18 | clear: both; 19 | } 20 | .grid-item { 21 | width: 250px; 22 | background-color: #fff; 23 | margin-bottom: 20px; 24 | padding-bottom: 10px; 25 | float: left; 26 | transition: 0.5s ease; 27 | -webkit-transition: 0.5s ease; 28 | -moz-transition: 0.5s ease; 29 | -o-transition: 0.5s ease; 30 | -webkit-box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.3); 31 | -moz-box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.3); 32 | box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.3); 33 | &:hover { 34 | -webkit-box-shadow: 0 2px 30px -1px rgba(0, 0, 0, 0.6), inset 0 0 87px 0 rgba(184, 184, 184, 0.13); 35 | -moz-box-shadow: 0 2px 30px -1px rgba(0, 0, 0, 0.6), inset 0 0 87px 0 rgba(184, 184, 184, 0.13); 36 | box-shadow: 0 2px 30px -1px rgba(0, 0, 0, 0.6), inset 0 0 87px 0 rgba(184, 184, 184, 0.13); 37 | 38 | } 39 | .a-img { 40 | color: #fff; 41 | // transition: 0.5s ease; 42 | &:hover { 43 | color: #fff; 44 | background-color: #fff; 45 | } 46 | } 47 | .demo-title { 48 | font-size: 18px; 49 | font-weight: bold; 50 | margin: 0 8px; 51 | } 52 | p { 53 | margin: 0; 54 | padding: 0 8px; 55 | font-size: 14px; 56 | } 57 | } 58 | } 59 | } 60 | } 61 | .deep{ 62 | transition: .32s cubic-bezier(0.46, 0.03, 0.52, 0.96); 63 | transform-style: preserve-3d; 64 | transform: perspective(1600px) rotateX(14deg) translateZ(-200px); 65 | } 66 | -------------------------------------------------------------------------------- /_posts/Hotpot建站/2019-04-10-hellohotpot.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Hotpot卷首语" 4 | excerpt: "Hotpot计划是复旦留学申请数据开源计划的代称,旨在为复旦学弟学妹无偿分享留学申请经验、暑研动态等一切相关信息。不一定能给出最优的策略,但我们诚挚希望为学弟学妹的留学规划提供一些参考和建议。" 5 | 6 | categories: Hotpot建站 7 | tags: 建站 8 | author: cooks 9 | top: true 10 | typora-copy-images-to: ipic 11 | --- 12 | 13 | * content 14 | {:toc} 15 | *Hotpot计划*是[复旦留学申请数据开源计划](https://fdu-cooks.github.io/fdu-gradhotpot/)的代称,旨在为复旦学弟学妹无偿分享留学申请经验、暑研动态等一切相关信息。不一定能给出最优的策略,但我们诚挚希望为学弟学妹的留学规划提供一些参考和建议。 16 | 17 | ## 项目缘起 18 | 19 | 项目缘起于一次火锅聚餐,几位刚经历了留学申请的大数据学院学长学姐对于走过的留学申请弯路颇为感慨。同时有感于*上交海外申请自助小组GAU*、*浙大留学申请飞跃手册* 等组织或资料,而我旦在这方面给予学弟学妹的帮助甚少,于是计划建立一个通畅且非盈利的复旦留学信息渠道,在火锅店就地取名为*Hotpot计划*。 20 | 21 | ## 项目内容 22 | 23 | 根据与学弟学妹的初步交流,以及自己的申请经验,我们认为比较珍贵而独特的分享信息有: 24 | 25 | #### 选校定位 26 | 27 | - 提供学长学姐的选校信息和最终录取/拒绝的结果,方便学弟学妹们进行选校参考。 28 | 29 | - 其他论坛也有定位帖,但是来自复旦的录取/拒绝信息对于本校的同学来说,有更直接的参考意义。 30 | 31 | 32 | #### 申请心得 33 | 34 | - 邀请一部分学长学姐分享他们认为重要的申请经验,同学们可以各取所需。 35 | - 可能内容有:选校策略、暑研、陶瓷和面试技巧、转专业申请注意事项。 36 | 37 | #### 申请时间线 38 | 39 | - 各位学长学姐将分享各自的申请时间线,为同学们规划准备提供参考。 40 | - 可能内容为:重要的时间节点,如英语达标、文书撰写、开始申请、收到面试、决定去向等, 41 | 42 | #### 联系方式 43 | 44 | - 促进跨年级的经验交流,方便学弟学妹进行个性化联系。 45 | - 我们采用**校名邮件**的方式提供学长学姐的联系方式,只有用`fudan.edu.cn`后缀发送的邮件能够获得我们的回信,我们会在回信中附上你想要交流的学长学姐的联系方式。 46 | 47 | ## 项目事项 48 | 49 | #### 致分享者(详见[分享指南](https://fdu-cooks.github.io/fdu-gradhotpot/2019/04/13/howtoshare/)) 50 | 51 | - **分享自由:** 期待分享者能够尽可能填写完整的资料,为学弟学妹们提供全面完善的信息。我们以及学弟学妹对此表示**真诚的感谢(×100)!**同时,分享者可以隐藏不想透露的信息。 52 | - **隐私保护:** 分享者的真实姓名、联系方式等隐私信息将被保护。并且只有在分享者允许的情况下,学弟学妹们才能通过学号邮件请求到分享者的个人联系方式。 53 | - **公益性质:** 该项目依靠我旦学长学姐的善意分享而建立,希望分享者不要填写虚假信息,同时也不要出现广告等商业信息,感谢! 54 | 55 | #### 致学弟学妹(详见[使用指南]()) 56 | 57 | - **尽情玩耍:** 请在*Hotpot*的网站里尽情玩耍,获取你们需要的信息,各个板块的详细说明在上文中有详细的讲解,希望你们能获得帮助。 58 | - **欢迎加入:** 我们期待*Hotpot*能够延续、帮助更多同学,也希望受益者能成为将来的分享者。如果对于网站建设、信息收集感兴趣的同学,欢迎加入我们,一起打造通畅且非盈利的复旦留学信息渠道。 59 | - **公益性质:** 我们不希望受益者将内容泄露给商业机构,切记,望理解! 60 | 61 | ## 项目维护 62 | 63 | #### 项目仓库 64 | 65 | - Github: 66 | - 欢迎在Issue中提出意见和建议,同时可以将反馈直接发送到Hotpot公共邮箱: 67 | 68 | #### 项目时间表 69 | 70 | ![timeline](https://ws2.sinaimg.cn/large/006tNc79gy1g1yqr84d45j31hc0u0gvy.jpg) 71 | 72 | #### 联系我们 73 | 74 | - [RshCaroline](https://rshcaroline.github.io/) 75 | - [AaronHeee](https://aaronheee.github.io/) 76 | - [Sean Zhang](https://zhangshun97.github.io/) 77 | - [Jiancong Gao](https://github.com/jianconggao) 78 | - [Guigui](https://github.com/Lidonghao1996) 79 | 80 | 81 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /_sass/_reset.scss: -------------------------------------------------------------------------------- 1 | body, 2 | html, 3 | div, 4 | header, 5 | footer, 6 | nav, 7 | li, 8 | h1, 9 | h2, 10 | h3, 11 | h4, 12 | h5, 13 | h6 { 14 | padding: 0; 15 | margin: 0; 16 | box-sizing: border-box; 17 | } 18 | h1, 19 | h2, 20 | h3, 21 | h4, 22 | h5, 23 | h6 { 24 | font-weight: 400; 25 | } 26 | html { 27 | height: 100%; 28 | } 29 | body { 30 | font-family: 'Helvetica Neue',Helvetica,Arial,'Microsoft YaHei',sans-serif; 31 | color: #333; 32 | background-image: url(https://gw.alicdn.com/tfs/TB1xzbUumBYBeNjy0FeXXbnmFXa-125-121.png); 33 | position: relative; 34 | min-height: 100%; 35 | padding-bottom: 190px; 36 | } 37 | a { 38 | text-decoration: none; 39 | } 40 | button { 41 | border: none; 42 | outline: none; 43 | } 44 | hr { 45 | border: 0; 46 | border-top: 1px solid #eee; 47 | margin: 20px 0; 48 | } 49 | 50 | /////////// 51 | h1 { 52 | font-size: 30px; 53 | } 54 | h2 { 55 | font-size: 26px; 56 | border-bottom: 1px solid #eee; 57 | margin: 50px 0 25px; 58 | } 59 | h3 { 60 | font-size: 23px; 61 | margin: 50px 0 20px; 62 | } 63 | h4 { 64 | font-size: 19px; 65 | margin: 30px 0 10px; 66 | } 67 | h5 { 68 | font-size: 17px; 69 | margin: 20px 0 10px; 70 | } 71 | h6 { 72 | font-size: 16px; 73 | margin: 10px 0 5px; 74 | } 75 | blockquote { 76 | color: #444; 77 | border-left: 5px solid #D6DBDF; 78 | padding-left: 15px; 79 | background: rgba(112,138,153,.1); 80 | padding: 10px 20px; 81 | margin: 0 0 20px; 82 | p:last-of-type{ 83 | margin: 0; 84 | } 85 | } 86 | table { 87 | border-top: 2px solid #777; 88 | border-bottom: 2px solid #777; 89 | margin: 8px 0; 90 | border-collapse: collapse; 91 | thead { 92 | border-bottom: 1px solid #777; 93 | background-color: #aaa; 94 | color: #fff; 95 | } 96 | th { 97 | padding: 2px 10px; 98 | text-align: left; 99 | } 100 | tbody { 101 | tr { 102 | &:nth-of-type(2n+1) { 103 | background-color: #f8f8fd; 104 | } 105 | &:nth-of-type(2n) { 106 | background-color: #e5eaed; 107 | } 108 | } 109 | } 110 | td { 111 | padding: 2px 10px; 112 | } 113 | } 114 | p { 115 | margin: 0 0 14px; 116 | } 117 | img { 118 | max-width: 100%; 119 | } 120 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # FDU-Hotpot计划 2 | 3 | 本站已迁移至新的地址: [FDU-Hotpot](http://fdu-hotpot.top) 4 | 5 | 为了安全与隐私保护,目前仅针对复旦学子开放 [注册](http://fdu-hotpot.top/?page_id=112) 6 | 7 | ## 写在前面 8 | 9 | *Hotpot计划*是[复旦留学申请数据开源计划](http://fdu-hotpot.top)的代称,旨在为复旦学弟学妹无偿分享留学申请经验、暑研动态等一切相关信息。不一定能给出最优的策略,但我们诚挚希望为学弟学妹的留学规划提供一些参考和建议。 10 | 11 | ## 项目缘起 12 | 13 | 项目缘起于一次火锅聚餐,几位刚经历了留学申请的大数据学院学长学姐对于走过的留学申请弯路颇为感慨。同时有感于*上交海外申请自助小组GAU*、*浙大留学申请飞跃手册* 等组织或资料,而我旦在这方面给予学弟学妹的帮助甚少,于是计划建立一个通畅且非盈利的复旦留学信息渠道,在火锅店就地取名为*Hotpot计划*。 14 | 15 | ## 项目内容 16 | 17 | 根据与学弟学妹的初步交流,以及自己的申请经验,我们认为比较珍贵而独特的分享信息有: 18 | 19 | #### 选校定位(详见[申请结果一览](https://fdu-hotpot.top/?page_id=70)) 20 | 21 | - 提供学长学姐的选校信息和最终录取/拒绝的结果,方便学弟学妹们进行选校参考。 22 | - 其他论坛也有定位帖,但是来自复旦的录取/拒绝信息对于本校的同学来说,有更直接的参考意义。 23 | 24 | #### 申请心得(详见[经验分享](https://fdu-hotpot.top)) 25 | 26 | - 邀请一部分学长学姐分享他们认为重要的申请经验,同学们可以各取所需。 27 | - 可能内容有:选校策略、暑研、陶瓷和面试技巧、转专业申请注意事项。 28 | 29 | #### 申请时间线 30 | 31 | - 各位学长学姐将分享各自的申请时间线,为同学们规划准备提供参考。 32 | - 可能内容为:重要的时间节点,如英语达标、文书撰写、开始申请、收到面试、决定去向等, 33 | 34 | #### 联系方式 35 | 36 | - 促进跨年级的经验交流,方便学弟学妹进行个性化联系。 37 | - 我们采用**校名邮件**的方式提供学长学姐的联系方式,只有用`fudan.edu.cn`后缀发送的邮件能够获得我们的回信,我们会在回信中附上你想要交流的学长学姐的联系方式。 38 | 39 | ## 项目事项 40 | 41 | #### 致学弟学妹(详见[使用指南](https://fdu-hotpot.top/?p=297)) 42 | 43 | - **尽情玩耍:** 请在*Hotpot*的网站里尽情玩耍,获取你们需要的信息,各个板块的详细说明在上文中有详细的讲解,希望你们能获得帮助。 44 | - **欢迎加入:** 我们期待*Hotpot*能够延续、帮助更多同学,也希望受益者能成为将来的分享者。如果对于网站建设、信息收集感兴趣的同学,欢迎加入我们,一起打造通畅且非盈利的复旦留学信息渠道。 45 | - **公益性质:** 我们不希望受益者将内容泄露给商业机构,切记,望理解!同时,因为是公益性质,请学弟学妹们不要当 “伸手党”,而是一起参与进来,让交流更加充分~ 46 | 47 | #### 致分享者(详见[分享指南](http://fdu-hotpot.top/?p=98)) 48 | 49 | - **分享自由:** 期待分享者能够尽可能填写完整的资料,为学弟学妹们提供全面完善的信息。我们以及学弟学妹对此表示**真诚的感谢(×100)** 同时,分享者可以隐藏不想透露的信息。 50 | - **隐私保护:** 分享者的真实姓名、联系方式等隐私信息将被保护。并且只有在分享者允许的情况下,学弟学妹们才能通过学号邮件请求到分享者的个人联系方式。 51 | - **公益性质:** 该项目依靠我旦学长学姐的善意分享而建立,希望分享者不要填写虚假信息,同时也不要出现广告等商业信息,感谢! 52 | 53 | ## 项目维护 54 | 55 | #### 项目仓库 56 | 57 | - Github: 58 | - 欢迎在Issue中提出意见和建议,同时可以将反馈直接发送到Hotpot公共邮箱: 59 | 60 | #### 项目时间表 61 | 62 |

63 | schedule 64 |

65 | 66 | #### 联系我们 67 | 68 | - [RshCaroline](https://rshcaroline.github.io/) 69 | - [AaronHeee](https://aaronheee.github.io/) 70 | - [Sean Zhang](https://zhangshun97.github.io/) 71 | - [Jiancong Gao](https://github.com/jianconggao) 72 | - [Guigui](https://github.com/Lidonghao1996) 73 | - [RetroCirce](https://github.com/RetroCirce) 74 | 75 | 76 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /_includes/topPost.html: -------------------------------------------------------------------------------- 1 | 2 | {% for post in paginator.posts %} 3 | {% if post.top %} 4 |
  • 5 |

    6 | {{ post.title }} 7 |

    8 |
    9 |
    10 | {{ post.date | date: "%F" }} 11 |
    12 |
    13 | {% if post.author %}{{ post.author }} 14 | {% endif %} 15 |
    16 |
    17 | {% if page.meta %}{{ page.meta }} {% endif %} 18 |
    19 | 20 |
    21 | {% include category.html %} 22 |
    23 | 24 |
    25 | {% include tag.html %} 26 |
    27 | 28 |
    29 | 30 | 置顶 31 |
    32 | 33 |
    34 |
    35 | {{post.excerpt}} 36 |
    37 |
    38 | Read All 39 |
    40 |
    41 |
  • 42 | {% endif %} 43 | {% endfor %} 44 | 45 | {% for post in paginator.posts %} 46 | {% if post.top %}{% else %} 47 |
  • 48 |

    49 | {{ post.title }} 50 |

    51 |
    52 |
    53 | {{ post.date | date: "%F" }} 54 |
    55 |
    56 | {% if post.author %}{{ post.author }} 57 | {% endif %} 58 |
    59 |
    60 | {% if page.meta %}{{ page.meta }} {% endif %} 61 |
    62 | 63 |
    64 | {% include category.html %} 65 |
    66 | 67 |
    68 | {% include tag.html %} 69 |
    70 |
    71 |
    72 | {{post.excerpt}} 73 |
    74 |
    75 | Read All 76 |
    77 |
    78 |
  • 79 | {% endif %} 80 | {% endfor %} -------------------------------------------------------------------------------- /page/0archives.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Archives 4 | permalink: /archive/ 5 | icon: archive 6 | type: page 7 | --- 8 | 9 | 10 | 11 | 12 |
    13 |
    14 |

    {{page.title}}

    15 |
    16 |
      17 | {% for post in site.posts %} 18 | 19 | {% unless post.next %} 20 |

      {{ post.date | date: '%Y' }}

      21 | {% else %} 22 | {% capture year %}{{ post.date | date: '%Y' }}{% endcapture %} 23 | {% capture nyear %}{{ post.next.date | date: '%Y' }}{% endcapture %} 24 | {% if year != nyear %} 25 |

      {{ post.date | date: '%Y' }}

      26 | {% endif %} 27 | {% endunless %} 28 | 29 |
    • 30 | 33 | {{ post.title }} 34 | 35 | {% include category.html %} 36 | {% include tag.html %} 37 |
    • 38 | 39 | {% endfor %} 40 |
    41 |
    42 | 43 |
    44 |
    45 | 46 | 47 |
    48 |
    49 | Content 50 |
    51 |
      52 | {% assign counter = 0 %} 53 | {% for post in site.posts %} 54 | {% assign thisyear = post.date | date: "%Y" %} 55 | {% assign prevyear = post.previous.date | date: "%Y" %} 56 | {% assign counter = counter | plus: 1 %} 57 | {% if thisyear != prevyear %} 58 |
    • {{ thisyear }} ({{ counter }})
    • 59 | {% assign counter = 0 %} 60 | {% endif %} 61 | {% endfor %} 62 |
    63 |
    64 | 65 | 66 |
    67 |
    68 |
    69 | 70 | -------------------------------------------------------------------------------- /_includes/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {% if page.title %}{{ page.title | escape }}{% else %}{{ site.title | escape }}{% endif %} 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | {% if site.baidu_tongji_id %} 22 | 32 | {% endif %} 33 | {% if site.google_analytics_id %} 34 | 45 | {% endif %} 46 | 47 | {% if page.mathjax %} 48 | 56 | 59 | {% endif %} 60 | 61 | -------------------------------------------------------------------------------- /_drafts/threeJS-light-shadow.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "three.js 中的光与影" 4 | categories: JavaScript 5 | tags: threeJS webGL 6 | --- 7 | 8 | * content 9 | {:toc} 10 | 11 | 在了解了 three.js 中渲染器、场景、相机、几何体等基本知识后,我们来研究一下 three.js 中的光与影。 12 | 13 | 14 | 本文是根据百度前端学院的任务安排进行探索和研究的。算是 [WebGL No. 2 - 光与影](http://ife.baidu.com/course/detail/id/28) 的学习笔记吧。 15 | 16 | - 任务描述 17 | - 学习《Three.js 入门指南》第 8 章光与影; 18 | - 理解不同类型灯光的区别和适用场景; 19 | - 学会为场景添加合适的灯光; 20 | - 思考灯光的位置对哪些类型的灯光是无所谓的,以及为什么; 21 | - 思考为什么有些灯光无法形成阴影; 22 | - 在第 1 题场景的基础上,增加光照效果; 23 | - 如果你没做第 1 题,也可以随便在场景中创建一些物体; 24 | - 为物体设置合适的材质(预习第 4 章),使得物体的亮度根据光照有所区别 25 | - 创建一个地板平面,并将小车投影到地板上 26 | - 尝试并思考,一个物体(比如甜甜圈)如何将阴影投射到自身(Self-Shadow,自阴影); 27 | - 实现软阴影的效果(即阴影的边缘有明暗的渐变)。 28 | 29 | ## 光 30 | 31 | 构造函数: 32 | 33 | ```js 34 | Light(color, intensity) 35 | ``` 36 | 37 | - 颜色 color - (optional) hexadecimal color of the light. Default is 0xffffff (white). 38 | - 强度 intensity - (optional) numeric value of the light's strength/intensity. Default is 1. 39 | 40 | 光的基类,被其他光类所继承。 41 | 42 | ### 环境光 43 | 44 | AmbientLight ['æmbɪənt] 平均照亮场景中的所有物体。 45 | 46 | 无方向,不产生影子。 47 | 48 | ```js 49 | var light = new THREE.AmbientLight(0x404040); // soft white light 50 | scene.add(light); 51 | ``` 52 | 53 | ### 点光源 54 | 55 | PointLight 从一个孤立的点向各个方向发射。没有遮盖的灯泡就是一个典型的例子。 56 | 57 | 可以产生影子。 58 | 59 | ```js 60 | var light = new THREE.PointLight(0xff0000, 1, 100); 61 | light.position.set(50, 50, 50); 62 | scene.add(light); 63 | ``` 64 | 65 | ### 平行光 66 | 67 | DirectionalLight 有特定方向的光。光线平行,无限远。用于模拟日光。太阳足够远,可以认为是无限远的,并且发射的光线是平行的。 68 | 69 | 可以产生影子。[平行光的影子 DirectionalLightShadow](https://threejs.org/docs/index.html#Reference/Lights.Shadows/DirectionalLightShadow)。 70 | 71 | ```js 72 | // White directional light at half intensity shining from the top. 73 | var directionalLight = new THREE.DirectionalLight(0xffffff, 0.5); 74 | scene.add(directionalLight); 75 | ``` 76 | 77 | - 属性 78 | 79 | - `.position` 80 | 81 | This is set equal to Object3D.DefaultUp (0, 1, 0), so that the light shines from the top down. 82 | 83 | 光线从平面 (0, 1, 0) 的法向射出。 84 | 85 | 86 | ### 聚光灯 87 | 88 | SpotLight 光从孤立点射出,沿着一个椎体向远处延伸。 89 | 90 | 可以产生影子。 91 | 92 | ```js 93 | // white spotlight shining from the side, casting a shadow 94 | 95 | var spotLight = new THREE.SpotLight(0xffffff); 96 | spotLight.position.set(100, 1000, 100); 97 | 98 | spotLight.castShadow = true; 99 | 100 | spotLight.shadow.mapSize.width = 1024; 101 | spotLight.shadow.mapSize.height = 1024; 102 | 103 | spotLight.shadow.camera.near = 500; 104 | spotLight.shadow.camera.far = 4000; 105 | spotLight.shadow.camera.fov = 30; 106 | 107 | scene.add(spotLight); 108 | ``` 109 | 110 | ### 半球光 111 | 112 | HemisphereLight 光源位于场景上方,光线颜色从天空过度到地面。 113 | 114 | 不能产生影子。 115 | 116 | ```js 117 | var light = new THREE.HemisphereLight(0xffffbb, 0x080820, 1); 118 | scene.add(light); 119 | ``` 120 | 121 | ### 矩形光 122 | 123 | RectAreaLight 从一个矩形面均匀发射的光。常被用于明亮的窗户, 124 | 125 | ## 影子 126 | -------------------------------------------------------------------------------- /_sass/_post-old.scss: -------------------------------------------------------------------------------- 1 | .post-page { 2 | width: 1140px; 3 | margin: 0 auto; 4 | overflow: hidden; 5 | padding: 5px; 6 | .post { 7 | width: 836px; 8 | float: left; 9 | padding: 20px 30px; 10 | margin-right: 20px; 11 | line-height: 1.6; 12 | font-size: 16px; 13 | background-color: #f8f8fd; 14 | box-shadow: 0 1px 2px rgba(0,0,0,0.4),0 0 30px rgba(10,10,0,0.1) inset; 15 | >h1 { 16 | margin-bottom: 0; 17 | } 18 | .label { 19 | // max-width: 500px; 20 | overflow: hidden; 21 | .label-card { 22 | float: left; 23 | .point { 24 | padding: 0 10px; 25 | color: #9d9d9d; 26 | } 27 | i { 28 | padding-right: 5px; 29 | color: #6b6a6a; 30 | } 31 | } 32 | } 33 | a { 34 | color: #4d6dad; 35 | transition: 0.5s ease; 36 | &:hover { 37 | color: #223253; 38 | } 39 | } 40 | } 41 | .sidebar-wrap{ 42 | overflow: hidden; 43 | width: 273px; 44 | padding:2px; 45 | } 46 | .fixed{ 47 | position: fixed; 48 | right: 266px; 49 | top:20px; 50 | } 51 | .sidebar { 52 | // margin-left: 20px; 53 | // padding-right: 10px; 54 | padding-bottom: 1px; 55 | background-color: #f8f8fd; 56 | box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.3), 0 0 30px rgba(10, 10, 0, 0.1) inset; 57 | 58 | -ms-word-break: break-all; 59 | word-break: break-all; 60 | /* Non standard for webkit */ 61 | word-break: break-word; 62 | -webkit-hyphens: auto; 63 | -moz-hyphens: auto; 64 | -ms-hyphens: auto; 65 | hyphens: auto; 66 | >div { 67 | padding: 12px 15px; 68 | margin-right: -10px; 69 | border-bottom: 1px solid #c0c0c0; 70 | font-size: 16px; 71 | font-weight: bold; 72 | } 73 | ul { 74 | font-size: 14px; 75 | line-height: 1.5; 76 | padding-left: 30px; 77 | code{ 78 | font-size: 80%; 79 | padding: 0 3px; 80 | } 81 | } 82 | } 83 | .content { 84 | margin-bottom: 20px; 85 | a { 86 | color: #4d6dad; 87 | transition: 0.5s ease; 88 | &:hover { 89 | color: #223253; 90 | } 91 | } 92 | .content-ul{ 93 | overflow-y: auto; 94 | } 95 | } 96 | .related-post { 97 | a { 98 | color: #4d6dad; 99 | transition: 0.5s ease; 100 | &:hover { 101 | color: #223253; 102 | } 103 | } 104 | } 105 | } 106 | 107 | #markdown-toc{ 108 | display: none 109 | } 110 | -------------------------------------------------------------------------------- /_layouts/post.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 |
    6 |
    7 |

    {{page.title}}

    8 |
    9 | 10 |
    11 | {{ page.date | date: "%F" }} 12 |
    13 | 14 |
    15 | {% if page.author %}{{ page.author }} 16 | {% endif %} 17 |
    18 | 19 |
    20 | {% if page.meta %}{{ page.meta }} {% endif %} 21 |
    22 | 23 |
    24 | {% include category.html %} 25 |
    26 | 27 |
    28 | {% include tag.html %} 29 |
    30 | 31 |
    32 |
    33 |
    34 | {{content}} 35 |
    36 |
    37 | 38 | {% assign hasSimilar = '' %} 39 | {% for post in site.related_posts %} 40 | {% assign postHasSimilar = false %} 41 | {% for tag in post.tags %} 42 | {% for thisTag in page.tags %} 43 | {% if postHasSimilar == false and hasSimilar.size < 6 and post != page and tag == thisTag %} 44 | {% if hasSimilar.size == 0 %} 45 |

    Similar Posts

    46 | 63 | {% endif %} 64 | 65 | {% include previousAndNext.html %} 66 | 67 |

    Comments (需要科学上网)

    68 | {% include comments.html %} 69 | 70 | 71 |
    72 | 73 |
    74 |
    75 | 76 | 77 |
    78 |
    79 | Content 80 |
    81 | 87 |
    88 | 89 | 90 |
    91 |
    92 |
    93 | 104 | 105 | -------------------------------------------------------------------------------- /_posts/Hotpot 建站/2019-04-13-howtoshare.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Hotpot分享者指南" 4 | excerpt: "本文写给Hotpot计划的分享者,包括如何贡献自己的选校和录取信息(不透露个人联系方式)、如何给学弟学妹分享交流、暑研、申请心得……" 5 | categories: Hotpot建站 6 | tags: 建站 7 | author: cooks 8 | typora-copy-images-to: ipic 9 | --- 10 | 11 | * content 12 | {:toc} 13 | > 注:这是一份简明的使用指南,我们预设您懂得如何使用[Markdown](http://support.typora.io/Markdown-Reference/)和[Github](https://guides.github.com/activities/hello-world/),如果需要学习相关知识,可以进入我们提供的超链接。 14 | 15 | 本文写给*Hotpot计划* 的分享者,包括如何贡献自己的选校和录取信息(不透露个人联系方式)、如何上传自己的交流、暑研、申请心得,希望我们能够促进跨年级信息交流,一起帮助学弟学妹们在申请时少走弯路。 16 | 17 | ## 分享动机与原则 18 | 19 | 可参见建站的[卷首语](https://fdu-cooks.github.io/fdu-gradhotpot/2019/04/10/hellohotpot/#%E8%87%B4%E5%88%86%E4%BA%AB%E8%80%85)中提到的公益动机和分享原则: 20 | 21 | > - **分享自由:** 期待分享者能够尽可能填写完整的资料,为学弟学妹们提供全面完善的信息。我们以及学弟学妹对此表示**真诚的感谢(×100)!**同时,分享者可以隐藏不想透露的信息。 22 | > - **隐私保护:** 分享者的真实姓名、联系方式等隐私信息将被保护。并且只有在分享者允许的情况下,学弟学妹们才能通过学号邮件请求到分享者的个人联系方式。 23 | > - **公益性质:** 该项目依靠我旦学长学姐的善意分享而建立,希望分享者不要填写虚假信息,同时也不要出现广告等商业信息,感谢! 24 | 25 | ## 分享的具体流程 26 | 27 | #### 选校定位(信息发布在[Collections](https://fdu-cooks.github.io/fdu-gradhotpot/collections/)) 28 | 29 | - 我旦的学长学姐的选校与录取,能够为学弟学妹提供直接的定位和比较,信息分享包括两大块:**录取情况**和**个人背景**,两者兼备才能给学弟学妹提供参考。 30 | - **完成该问卷即可添加您的选校定位信息: (注:电脑端填写更方便)** 31 | - 问卷中有一道题询问联系方式,联系方式不会直接暴露在网上,学弟学妹需要通过学号邮箱进行请求才能获得联系方式,避免网络其他信息对您生活的干扰。 32 | 33 | #### 申请心得(信息发布在[Categories](https://fdu-cooks.github.io/fdu-gradhotpot/category/)) 34 | 35 | > **注:目前本站是完全公开的,即您所写的心得是对全网公开的,所以如果您对个人隐私比较关注,请尽量在文中保护自己的个人信息,例如[这一篇](https://fdu-cooks.github.io/fdu-gradhotpot/2019/04/12/%E7%94%B3%E8%AF%B7%E5%89%8D%E5%87%86%E5%A4%87-%E8%BD%AC%E7%A0%81%E5%90%91/)。或者您也可以放弃分享,我们完全尊重您的个人隐私和您的个人意愿。** 36 | 37 | ##### 写作前 38 | 39 | - 您可以将自己在申请过程中的心得、教训、建议在这里分享,您可以写申请全程回顾、详细而全面(如[这一篇](https://fdu-cooks.github.io/fdu-gradhotpot/2019/04/11/%E6%9D%B0%E5%B0%BC%E9%BE%9F%E7%9A%84%E7%94%B3%E8%AF%B7%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/)),您也可以有所侧重、精简干练(如[这一篇](https://fdu-cooks.github.io/fdu-gradhotpot/2019/04/12/%E7%94%B3%E8%AF%B7%E5%89%8D%E5%87%86%E5%A4%87-%E8%BD%AC%E7%A0%81%E5%90%91/)),只要您认为能够帮助他人即可。 40 | - 我们需要您将文章写成Markdown格式,相信 CS / DS 的你能够很快搞定这些,我们的文章存放在[此处](https://github.com/fdu-cooks/fdu-gradhotpot/tree/master/_posts/%E7%94%B3%E8%AF%B7%E7%BB%8F%E9%AA%8C),可作为您写作前的参考。 41 | 42 | ##### 写作时 43 | 44 | - 您需要注意两点要求,以便文章顺利地显示在Hotpot网站上: 45 | 46 | 1. **Markdown文件名:**` YYYY-MM-DD-TITLE.md` 格式。 47 | 48 | > 例:2019-04-11-杰尼龟的申请经验分享.md 49 | 50 | 2. **Markdown文件抬头:** 其中`toc`部分是为了能够在网站上加载目录内容,完成抬头后就可以在Markdown中自由地写作啦。 51 | 52 | ```markdown 53 | --- 54 | layout: post 55 | title: "请输入标题" 56 | excerpt: "请输入摘要" 57 | categories: 申请经验 58 | tags: 您打算输入的标签,请用空格隔开 59 | author: 请输入您的昵称 60 | --- 61 | * content 62 | {:toc} 63 | ``` 64 | 65 | > 例:[2019-04-12-申请前准备-转码向.md](https://raw.githubusercontent.com/fdu-cooks/fdu-gradhotpot/master/_posts/%E7%94%B3%E8%AF%B7%E7%BB%8F%E9%AA%8C/2019-04-12-%E7%94%B3%E8%AF%B7%E5%89%8D%E5%87%86%E5%A4%87-%E8%BD%AC%E7%A0%81%E5%90%91.md) 的抬头: 66 | > 67 | > ```markdown 68 | > --- 69 | > layout: post 70 | > title: "转码之路,道阻且长" 71 | > excerpt: "这是来自妙蛙种子的申请经验分享~ 我主要讲讲申请前准备(GT、实习、科研、简历)几个方面说一说自己的看法" 72 | > categories: 申请经验 73 | > tags: 申请准备 74 | > author: 妙蛙种子 75 | > --- 76 | > * content 77 | > {:toc} 78 | > ``` 79 | 80 | 81 | ##### 写作后 82 | 83 | 84 | - 当您完成写作之后,您可以选择其中一种方式上传: 85 | - 创建Pull Request推送到我们的代码仓库中,这种方式能够使您纳入到我们的Github贡献者名单中,如果您不担心真实姓名被透露,我们推荐您采取这种方法(文章存放位置:[代码仓库](https://github.com/fdu-cooks/fdu-gradhotpot)的 `fdu-gradhotpot/_posts/申请经验/`)。 86 | - 将您的Markdown文件发送至Hotpot公邮,我们将尽快帮您上传。 87 | - 注:如果您需要插入图片,我们推荐您使用在线图床。 88 | 89 | ## 写在最后 90 | 91 | 感谢您的无私分享,让我们一起打造通畅且非盈利的复旦留学信息渠道,希望您在我们的[代码仓库](https://github.com/fdu-cooks/fdu-gradhotpot)中提交意见和建议,以及如果有可能的话,欢迎加入我们!诚挚感谢! 92 | 93 | -------------------------------------------------------------------------------- /_site/search_data.json: -------------------------------------------------------------------------------- 1 | [ 2 | 3 | { 4 | "title" : "Hotpot分享者指南", 5 | "category" : "Hotpot建站", 6 | "tags" : "建站", 7 | "content": " 分享动机与原则 分享的具体流程 选校定位(信息发布在Collections) 申请心得(信息发布在Categories) 写作前 写作时 写作后 写在最后 注:这是一份简明的使用指南,我们预设您懂得如何使用Markdown和Github,如果需要学习相关知识,可以进入我们提供的超链接。本文写给Hotpot计划 的分享者,包括如何贡献自己的选校和录取信息(不透露个人联系方式)、如何上传自己的交流、暑研、申请心得,希望我们能够促进跨年级信息交流,一起帮助学弟学妹们在申请时少走弯路。分享动机与原则可参见建站的卷首语中提到的公益动机和分享原则: 分享自由: 期待分享者能够尽可能填写完整的资料,为学弟学妹们提供全面完善的信息。我们以及学弟学妹对此表示真诚的感谢(×100)!同时,分享者可以隐藏不想透露的信息。 隐私保护: 分享者的真实姓名、联系方式等隐私信息将被保护。并且只有在分享者允许的情况下,学弟学妹们才能通过学号邮件请求到分享者的个人联系方式。 公益性质: 该项目依靠我旦学长学姐的善意分享而建立,希望分享者不要填写虚假信息,同时也不要出现广告等商业信息,感谢! 分享的具体流程选校定位(信息发布在Collections) 我旦的学长学姐的选校与录取,能够为学弟学妹提供直接的定位和比较,信息分享包括两大块:录取情况和个人背景,两者兼备才能给学弟学妹提供参考。 完成该问卷即可添加您的选校定位信息:https://wj.qq.com/s2/3492415/6902/ (注:电脑端填写更方便) 问卷中有一道题询问联系方式,联系方式不会直接暴露在网上,学弟学妹需要通过学号邮箱进行请求才能获得联系方式,避免网络其他信息对您生活的干扰。申请心得(信息发布在Categories) 注:目前本站是完全公开的,即您所写的心得是对全网公开的,所以如果您对个人隐私比较关注,请尽量在文中保护自己的个人信息,例如这一篇。或者您也可以放弃分享,我们完全尊重您的个人隐私和您的个人意愿。写作前 您可以将自己在申请过程中的心得、教训、建议在这里分享,您可以写申请全程回顾、详细而全面(如这一篇),您也可以有所侧重、精简干练(如这一篇),只要您认为能够帮助他人即可。 我们需要您将文章写成Markdown格式,相信 CS / DS 的你能够很快搞定这些,我们的文章存放在此处,可作为您写作前的参考。写作时 您需要注意两点要求,以便文章顺利地显示在Hotpot网站上: Markdown文件名: YYYY-MM-DD - TITLE.md 格式。 例:2019-04-11 - 杰尼龟的申请经验分享.md Markdown文件抬头: 其中toc部分是为了能够在网站上加载目录内容,完成抬头后就可以在Markdown中自由地写作啦。 --- layout: post title: \"请输入标题\" excerpt: \"请输入摘要\" categories: 申请经验 tags: 您打算输入的标签,请用空格隔开 author: 请输入您的昵称 --- * content {:toc} 例:2019-04-12 - 申请前准备 - 转码向.md 的抬头: --- layout: post title: \"转码之路,道阻且长\" excerpt: \"这是来自妙蛙种子的申请经验分享~ 我主要讲讲申请前准备(GT、实习、科研、简历)几个方面说一说自己的看法\" categories: 申请经验 tags: 申请准备 author: 妙蛙种子 --- * content {:toc} 写作后 当您完成写作之后,您可以选择其中一种方式上传: 创建Pull Request推送到我们的代码仓库中,这种方式能够使您纳入到我们的Github贡献者名单中,如果您不担心真实姓名被透露,我们推荐您采取这种方法(文章存放位置:代码仓库的 fdu-gradhotpot/_posts/申请经验/)。 将您的Markdown文件发送至Hotpot公邮fdu-hotpot@outlook.com,我们将尽快帮您上传。 注:如果您需要插入图片,我们推荐您使用在线图床。写在最后感谢您的无私分享,让我们一起打造通畅且非盈利的复旦留学信息渠道,希望您在我们的代码仓库中提交意见和建议,以及如果有可能的话,欢迎加入我们!诚挚感谢!", 8 | "url" : "/fdu-gradhotpot/2019/04/13/howtoshare/", 9 | "date" : "2019-04-13 00:00:00 +0800" 10 | } , 11 | 12 | { 13 | "title" : "Hotpot卷首语", 14 | "category" : "Hotpot建站", 15 | "tags" : "建站", 16 | "content": " 项目缘起 项目内容 选校定位 申请心得 申请时间线 联系方式 项目事项 致分享者(详见分享指南) 致学弟学妹(详见使用指南) 项目维护 项目仓库 项目时间表 联系我们 Hotpot计划是复旦留学申请数据开源计划的代称,旨在为复旦学弟学妹无偿分享留学申请经验、暑研动态等一切相关信息。不一定能给出最优的策略,但我们诚挚希望为学弟学妹的留学规划提供一些参考和建议。项目缘起项目缘起于一次火锅聚餐,几位刚经历了留学申请的大数据学院学长学姐对于走过的留学申请弯路颇为感慨。同时有感于上交海外申请自助小组GAU、浙大留学申请飞跃手册 等组织或资料,而我旦在这方面给予学弟学妹的帮助甚少,于是计划建立一个通畅且非盈利的复旦留学信息渠道,在火锅店就地取名为Hotpot计划。项目内容根据与学弟学妹的初步交流,以及自己的申请经验,我们认为比较珍贵而独特的分享信息有:选校定位 提供学长学姐的选校信息和最终录取/拒绝的结果,方便学弟学妹们进行选校参考。 其他论坛也有定位帖,但是来自复旦的录取/拒绝信息对于本校的同学来说,有更直接的参考意义。 申请心得 邀请一部分学长学姐分享他们认为重要的申请经验,同学们可以各取所需。 可能内容有:选校策略、暑研、陶瓷和面试技巧、转专业申请注意事项。申请时间线 各位学长学姐将分享各自的申请时间线,为同学们规划准备提供参考。 可能内容为:重要的时间节点,如英语达标、文书撰写、开始申请、收到面试、决定去向等,联系方式 促进跨年级的经验交流,方便学弟学妹进行个性化联系。 我们采用校名邮件的方式提供学长学姐的联系方式,只有用fudan.edu.cn后缀发送的邮件能够获得我们的回信,我们会在回信中附上你想要交流的学长学姐的联系方式。项目事项致分享者(详见分享指南) 分享自由: 期待分享者能够尽可能填写完整的资料,为学弟学妹们提供全面完善的信息。我们以及学弟学妹对此表示真诚的感谢(×100)!同时,分享者可以隐藏不想透露的信息。 隐私保护: 分享者的真实姓名、联系方式等隐私信息将被保护。并且只有在分享者允许的情况下,学弟学妹们才能通过学号邮件请求到分享者的个人联系方式。 公益性质: 该项目依靠我旦学长学姐的善意分享而建立,希望分享者不要填写虚假信息,同时也不要出现广告等商业信息,感谢!致学弟学妹(详见使用指南) 尽情玩耍: 请在Hotpot的网站里尽情玩耍,获取你们需要的信息,各个板块的详细说明在上文中有详细的讲解,希望你们能获得帮助。 欢迎加入: 我们期待Hotpot能够延续、帮助更多同学,也希望受益者能成为将来的分享者。如果对于网站建设、信息收集感兴趣的同学,欢迎加入我们,一起打造通畅且非盈利的复旦留学信息渠道。 公益性质: 我们不希望受益者将内容泄露给商业机构,切记,望理解!项目维护项目仓库 Github: https://github.com/fdu-cooks/fdu-gradhotpot 欢迎在Issue中提出意见和建议,同时可以将反馈直接发送到Hotpot公共邮箱: fdu-hotpot@outlook.com项目时间表联系我们 RshCaroline AaronHeee Sean Zhang Jiancong Gao Guigui", 17 | "url" : "/fdu-gradhotpot/2019/04/10/hellohotpot/", 18 | "date" : "2019-04-10 00:00:00 +0800" 19 | } 20 | 21 | ] 22 | -------------------------------------------------------------------------------- /_sass/_syntax-highlighting.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Syntax highlighting styles 3 | */ 4 | code{ 5 | padding: 1px 4px; 6 | margin: 0 2px; 7 | font-size: 90%; 8 | border-radius: 3px; 9 | color: #000; 10 | background-color: rgba(0, 0, 0, 0.06); 11 | border: 1px solid #d7d0d2; 12 | font-family: Monaco,Menlo,"Microsoft YaHei Mono",Consolas,"Courier New",monospace,sans-serif; 13 | } 14 | 15 | pre { 16 | margin: 12px 0; 17 | padding: 8px 12px; 18 | // overflow-x: auto; 19 | word-wrap: break-word; /* IE 5.5-7 */ 20 | white-space: -moz-pre-wrap; /* Firefox 1.0-2.0 */ 21 | white-space: pre-wrap; /* current browsers */ 22 | > code { 23 | margin: 0; 24 | padding: 0; 25 | font-size: 13px; 26 | color:#d1d1c9; 27 | border: none; 28 | background-color: #272822 29 | } 30 | } 31 | 32 | .highlight { 33 | border-radius: 3px; 34 | 35 | background: #272822; 36 | .hll { background-color: #272822; } 37 | .c { color: #75715e } /* Comment */ 38 | .err { color: #960050; background-color: #1e0010 } /* Error */ 39 | .k { color: #66d9ef } /* Keyword */ 40 | .l { color: #ae81ff } /* Literal */ 41 | .n { color: #f8f8f2 } /* Name */ 42 | .o { color: #f92672 } /* Operator */ 43 | .p { color: #f8f8f2 } /* Punctuation */ 44 | .cm { color: #75715e } /* Comment.Multiline */ 45 | .cp { color: #75715e } /* Comment.Preproc */ 46 | .c1 { color: #75715e } /* Comment.Single */ 47 | .cs { color: #75715e } /* Comment.Special */ 48 | .ge { font-style: italic } /* Generic.Emph */ 49 | .gs { font-weight: bold } /* Generic.Strong */ 50 | .kc { color: #66d9ef } /* Keyword.Constant */ 51 | .kd { color: #66d9ef } /* Keyword.Declaration */ 52 | .kn { color: #f92672 } /* Keyword.Namespace */ 53 | .kp { color: #66d9ef } /* Keyword.Pseudo */ 54 | .kr { color: #66d9ef } /* Keyword.Reserved */ 55 | .kt { color: #66d9ef } /* Keyword.Type */ 56 | .ld { color: #e6db74 } /* Literal.Date */ 57 | .m { color: #ae81ff } /* Literal.Number */ 58 | .s { color: #e6db74 } /* Literal.String */ 59 | .na { color: #a6e22e } /* Name.Attribute */ 60 | .nb { color: #f8f8f2 } /* Name.Builtin */ 61 | .nc { color: #a6e22e } /* Name.Class */ 62 | .no { color: #66d9ef } /* Name.Constant */ 63 | .nd { color: #a6e22e } /* Name.Decorator */ 64 | .ni { color: #f8f8f2 } /* Name.Entity */ 65 | .ne { color: #a6e22e } /* Name.Exception */ 66 | .nf { color: #a6e22e } /* Name.Function */ 67 | .nl { color: #f8f8f2 } /* Name.Label */ 68 | .nn { color: #f8f8f2 } /* Name.Namespace */ 69 | .nx { color: #a6e22e } /* Name.Other */ 70 | .py { color: #f8f8f2 } /* Name.Property */ 71 | .nt { color: #f92672 } /* Name.Tag */ 72 | .nv { color: #f8f8f2 } /* Name.Variable */ 73 | .ow { color: #f92672 } /* Operator.Word */ 74 | .w { color: #f8f8f2 } /* Text.Whitespace */ 75 | .mf { color: #ae81ff } /* Literal.Number.Float */ 76 | .mh { color: #ae81ff } /* Literal.Number.Hex */ 77 | .mi { color: #ae81ff } /* Literal.Number.Integer */ 78 | .mo { color: #ae81ff } /* Literal.Number.Oct */ 79 | .sb { color: #e6db74 } /* Literal.String.Backtick */ 80 | .sc { color: #e6db74 } /* Literal.String.Char */ 81 | .sd { color: #e6db74 } /* Literal.String.Doc */ 82 | .s2 { color: #e6db74 } /* Literal.String.Double */ 83 | .se { color: #ae81ff } /* Literal.String.Escape */ 84 | .sh { color: #e6db74 } /* Literal.String.Heredoc */ 85 | .si { color: #e6db74 } /* Literal.String.Interpol */ 86 | .sx { color: #e6db74 } /* Literal.String.Other */ 87 | .sr { color: #e6db74 } /* Literal.String.Regex */ 88 | .s1 { color: #e6db74 } /* Literal.String.Single */ 89 | .ss { color: #e6db74 } /* Literal.String.Symbol */ 90 | .bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */ 91 | .vc { color: #f8f8f2 } /* Name.Variable.Class */ 92 | .vg { color: #f8f8f2 } /* Name.Variable.Global */ 93 | .vi { color: #f8f8f2 } /* Name.Variable.Instance */ 94 | .il { color: #ae81ff } /* Literal.Number.Integer.Long */ 95 | .gh { } /* Generic Heading & Diff Header */ 96 | .gu { color: #75715e; } /* Generic.Subheading & Diff Unified/Comment? */ 97 | .gd { color: #f92672; } /* Generic.Deleted & Diff Deleted */ 98 | .gi { color: #a6e22e; } /* Generic.Inserted & Diff Inserted */ 99 | } 100 | -------------------------------------------------------------------------------- /_includes/footer.html: -------------------------------------------------------------------------------- 1 |
    2 | 3 | 4 |
    5 | 6 |

    7 | {% if site.description_footer %} {{site.description_footer}} {% endif %} 8 |

    9 |

    10 | Contact us at: {% if site.github_username %} 11 | {% endif %} {% if site.email %} 12 | {% endif %} {% if site.weibo_username %} 13 | {% endif %} {% if site.zhihu_username %} 14 | {% endif %} {% if site.twitter_username %} 15 | {% endif %} {% if site.facebook_username %} 16 | {% endif %} {% if site.linkedIn_username %} 17 | {% endif %} {% if site.dribbble_username %} 18 | {% endif %} 19 |

    20 |
    21 | 22 | 56 | 57 | 58 | 68 | 69 | 70 | 71 | 72 |

    73 | 本站总访问量次 | 本页面总阅读量次 74 | 75 |

    76 |

    77 | 78 | Site powered by Jekyll & Github Pages. 79 | 80 | 81 | Theme designed by HyG & Fleeming. 82 | 83 |

    84 |
    85 |
    86 | 87 | 88 | 89 | -------------------------------------------------------------------------------- /js/smooth-scroll.min.js: -------------------------------------------------------------------------------- 1 | /*! smooth-scroll v10.2.1 | (c) 2016 Chris Ferdinandi | MIT License | http://github.com/cferdinandi/smooth-scroll */ 2 | !(function(e,t){"function"==typeof define&&define.amd?define([],t(e)):"object"==typeof exports?module.exports=t(e):e.smoothScroll=t(e)})("undefined"!=typeof global?global:this.window||this.global,(function(e){"use strict";var t,n,o,r,a,c,l,i={},u="querySelector"in document&&"addEventListener"in e,s={selector:"[data-scroll]",selectorHeader:null,speed:500,easing:"easeInOutCubic",offset:0,callback:function(){}},d=function(){var e={},t=!1,n=0,o=arguments.length;"[object Boolean]"===Object.prototype.toString.call(arguments[0])&&(t=arguments[0],n++);for(var r=function(n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(t&&"[object Object]"===Object.prototype.toString.call(n[o])?e[o]=d(!0,e[o],n[o]):e[o]=n[o])};n=0&&t.item(n)!==this;);return n>-1});e&&e!==document;e=e.parentNode)if(e.matches(t))return e;return null},m=function(e){"#"===e.charAt(0)&&(e=e.substr(1));for(var t,n=String(e),o=n.length,r=-1,a="",c=n.charCodeAt(0);++r=1&&t<=31||127==t||0===r&&t>=48&&t<=57||1===r&&t>=48&&t<=57&&45===c?"\\"+t.toString(16)+" ":t>=128||45===t||95===t||t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122?n.charAt(r):"\\"+n.charAt(r)}return"#"+a},p=function(e,t){var n;return"easeInQuad"===e&&(n=t*t),"easeOutQuad"===e&&(n=t*(2-t)),"easeInOutQuad"===e&&(n=t<.5?2*t*t:-1+(4-2*t)*t),"easeInCubic"===e&&(n=t*t*t),"easeOutCubic"===e&&(n=--t*t*t+1),"easeInOutCubic"===e&&(n=t<.5?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1),"easeInQuart"===e&&(n=t*t*t*t),"easeOutQuart"===e&&(n=1- --t*t*t*t),"easeInOutQuart"===e&&(n=t<.5?8*t*t*t*t:1-8*--t*t*t*t),"easeInQuint"===e&&(n=t*t*t*t*t),"easeOutQuint"===e&&(n=1+--t*t*t*t*t),"easeInOutQuint"===e&&(n=t<.5?16*t*t*t*t*t:1+16*--t*t*t*t*t),n||t},g=function(e,t,n){var o=0;if(e.offsetParent)do o+=e.offsetTop,e=e.offsetParent;while(e);return o=Math.max(o-t-n,0),Math.min(o,v()-b())},b=function(){return Math.max(document.documentElement.clientHeight,e.innerHeight||0)},v=function(){return Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight)},y=function(e){return e&&"object"==typeof JSON&&"function"==typeof JSON.parse?JSON.parse(e):{}},O=function(e){return e?f(e)+e.offsetTop:0},S=function(t,n,o){o||(t.focus(),document.activeElement.id!==t.id&&(t.setAttribute("tabindex","-1"),t.focus(),t.style.outline="none"),e.scrollTo(0,n))};i.animateScroll=function(n,o,c){var i=y(o?o.getAttribute("data-options"):null),u=d(t||s,c||{},i),f="[object Number]"===Object.prototype.toString.call(n),h=f||!n.tagName?null:n;if(f||h){var m=e.pageYOffset;u.selectorHeader&&!r&&(r=document.querySelector(u.selectorHeader)),a||(a=O(r));var b,E,I=f?n:g(h,a,parseInt(u.offset,10)),H=I-m,A=v(),j=0,C=function(t,r,a){var c=e.pageYOffset;(t==r||c==r||e.innerHeight+c>=A)&&(clearInterval(a),S(n,r,f),u.callback(n,o))},M=function(){j+=16,b=j/parseInt(u.speed,10),b=b>1?1:b,E=m+H*p(u.easing,b),e.scrollTo(0,Math.floor(E)),C(E,I,l)},w=function(){clearInterval(l),l=setInterval(M,16)};0===e.pageYOffset&&e.scrollTo(0,0),w()}};var E=function(t){var r;try{r=m(decodeURIComponent(e.location.hash))}catch(t){r=m(e.location.hash)}n&&(n.id=n.getAttribute("data-scroll-id"),i.animateScroll(n,o),n=null,o=null)},I=function(r){if(0===r.button&&!r.metaKey&&!r.ctrlKey&&(o=h(r.target,t.selector),o&&"a"===o.tagName.toLowerCase()&&o.hostname===e.location.hostname&&o.pathname===e.location.pathname&&/#/.test(o.href))){var a;try{a=m(decodeURIComponent(o.hash))}catch(e){a=m(o.hash)}if("#"===a){r.preventDefault(),n=document.body;var c=n.id?n.id:"smooth-scroll-top";return n.setAttribute("data-scroll-id",c),n.id="",void(e.location.hash.substring(1)===c?E():e.location.hash=c)}n=document.querySelector(a),n&&(n.setAttribute("data-scroll-id",n.id),n.id="",o.hash===e.location.hash&&(r.preventDefault(),E()))}},H=function(e){c||(c=setTimeout((function(){c=null,a=O(r)}),66))};return i.destroy=function(){t&&(document.removeEventListener("click",I,!1),e.removeEventListener("resize",H,!1),t=null,n=null,o=null,r=null,a=null,c=null,l=null)},i.init=function(n){u&&(i.destroy(),t=d(s,n||{}),r=t.selectorHeader?document.querySelector(t.selectorHeader):null,a=O(r),document.addEventListener("click",I,!1),e.addEventListener("hashchange",E,!1),r&&e.addEventListener("resize",H,!1))},i})); 3 | -------------------------------------------------------------------------------- /_site/js/smooth-scroll.min.js: -------------------------------------------------------------------------------- 1 | /*! smooth-scroll v10.2.1 | (c) 2016 Chris Ferdinandi | MIT License | http://github.com/cferdinandi/smooth-scroll */ 2 | !(function(e,t){"function"==typeof define&&define.amd?define([],t(e)):"object"==typeof exports?module.exports=t(e):e.smoothScroll=t(e)})("undefined"!=typeof global?global:this.window||this.global,(function(e){"use strict";var t,n,o,r,a,c,l,i={},u="querySelector"in document&&"addEventListener"in e,s={selector:"[data-scroll]",selectorHeader:null,speed:500,easing:"easeInOutCubic",offset:0,callback:function(){}},d=function(){var e={},t=!1,n=0,o=arguments.length;"[object Boolean]"===Object.prototype.toString.call(arguments[0])&&(t=arguments[0],n++);for(var r=function(n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(t&&"[object Object]"===Object.prototype.toString.call(n[o])?e[o]=d(!0,e[o],n[o]):e[o]=n[o])};n=0&&t.item(n)!==this;);return n>-1});e&&e!==document;e=e.parentNode)if(e.matches(t))return e;return null},m=function(e){"#"===e.charAt(0)&&(e=e.substr(1));for(var t,n=String(e),o=n.length,r=-1,a="",c=n.charCodeAt(0);++r=1&&t<=31||127==t||0===r&&t>=48&&t<=57||1===r&&t>=48&&t<=57&&45===c?"\\"+t.toString(16)+" ":t>=128||45===t||95===t||t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122?n.charAt(r):"\\"+n.charAt(r)}return"#"+a},p=function(e,t){var n;return"easeInQuad"===e&&(n=t*t),"easeOutQuad"===e&&(n=t*(2-t)),"easeInOutQuad"===e&&(n=t<.5?2*t*t:-1+(4-2*t)*t),"easeInCubic"===e&&(n=t*t*t),"easeOutCubic"===e&&(n=--t*t*t+1),"easeInOutCubic"===e&&(n=t<.5?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1),"easeInQuart"===e&&(n=t*t*t*t),"easeOutQuart"===e&&(n=1- --t*t*t*t),"easeInOutQuart"===e&&(n=t<.5?8*t*t*t*t:1-8*--t*t*t*t),"easeInQuint"===e&&(n=t*t*t*t*t),"easeOutQuint"===e&&(n=1+--t*t*t*t*t),"easeInOutQuint"===e&&(n=t<.5?16*t*t*t*t*t:1+16*--t*t*t*t*t),n||t},g=function(e,t,n){var o=0;if(e.offsetParent)do o+=e.offsetTop,e=e.offsetParent;while(e);return o=Math.max(o-t-n,0),Math.min(o,v()-b())},b=function(){return Math.max(document.documentElement.clientHeight,e.innerHeight||0)},v=function(){return Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight)},y=function(e){return e&&"object"==typeof JSON&&"function"==typeof JSON.parse?JSON.parse(e):{}},O=function(e){return e?f(e)+e.offsetTop:0},S=function(t,n,o){o||(t.focus(),document.activeElement.id!==t.id&&(t.setAttribute("tabindex","-1"),t.focus(),t.style.outline="none"),e.scrollTo(0,n))};i.animateScroll=function(n,o,c){var i=y(o?o.getAttribute("data-options"):null),u=d(t||s,c||{},i),f="[object Number]"===Object.prototype.toString.call(n),h=f||!n.tagName?null:n;if(f||h){var m=e.pageYOffset;u.selectorHeader&&!r&&(r=document.querySelector(u.selectorHeader)),a||(a=O(r));var b,E,I=f?n:g(h,a,parseInt(u.offset,10)),H=I-m,A=v(),j=0,C=function(t,r,a){var c=e.pageYOffset;(t==r||c==r||e.innerHeight+c>=A)&&(clearInterval(a),S(n,r,f),u.callback(n,o))},M=function(){j+=16,b=j/parseInt(u.speed,10),b=b>1?1:b,E=m+H*p(u.easing,b),e.scrollTo(0,Math.floor(E)),C(E,I,l)},w=function(){clearInterval(l),l=setInterval(M,16)};0===e.pageYOffset&&e.scrollTo(0,0),w()}};var E=function(t){var r;try{r=m(decodeURIComponent(e.location.hash))}catch(t){r=m(e.location.hash)}n&&(n.id=n.getAttribute("data-scroll-id"),i.animateScroll(n,o),n=null,o=null)},I=function(r){if(0===r.button&&!r.metaKey&&!r.ctrlKey&&(o=h(r.target,t.selector),o&&"a"===o.tagName.toLowerCase()&&o.hostname===e.location.hostname&&o.pathname===e.location.pathname&&/#/.test(o.href))){var a;try{a=m(decodeURIComponent(o.hash))}catch(e){a=m(o.hash)}if("#"===a){r.preventDefault(),n=document.body;var c=n.id?n.id:"smooth-scroll-top";return n.setAttribute("data-scroll-id",c),n.id="",void(e.location.hash.substring(1)===c?E():e.location.hash=c)}n=document.querySelector(a),n&&(n.setAttribute("data-scroll-id",n.id),n.id="",o.hash===e.location.hash&&(r.preventDefault(),E()))}},H=function(e){c||(c=setTimeout((function(){c=null,a=O(r)}),66))};return i.destroy=function(){t&&(document.removeEventListener("click",I,!1),e.removeEventListener("resize",H,!1),t=null,n=null,o=null,r=null,a=null,c=null,l=null)},i.init=function(n){u&&(i.destroy(),t=d(s,n||{}),r=t.selectorHeader?document.querySelector(t.selectorHeader):null,a=O(r),document.addEventListener("click",I,!1),e.addEventListener("hashchange",E,!1),r&&e.addEventListener("resize",H,!1))},i})); 3 | -------------------------------------------------------------------------------- /_sass/_layout.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Site header 3 | */ 4 | .site-header { 5 | border-top: 5px solid $grey-color-dark; 6 | border-bottom: 1px solid $grey-color-light; 7 | min-height: 56px; 8 | 9 | // Positioning context for the mobile navigation icon 10 | position: relative; 11 | } 12 | 13 | .site-title { 14 | font-size: 26px; 15 | font-weight: 300; 16 | line-height: 56px; 17 | letter-spacing: -1px; 18 | margin-bottom: 0; 19 | float: left; 20 | 21 | &, 22 | &:visited { 23 | color: $grey-color-dark; 24 | } 25 | } 26 | 27 | .site-nav { 28 | float: right; 29 | line-height: 56px; 30 | 31 | .menu-icon { 32 | display: none; 33 | } 34 | 35 | .page-link { 36 | color: $text-color; 37 | line-height: $base-line-height; 38 | 39 | // Gaps between nav items, but not on the last one 40 | &:not(:last-child) { 41 | margin-right: 20px; 42 | } 43 | } 44 | 45 | @include media-query($on-palm) { 46 | position: absolute; 47 | top: 9px; 48 | right: $spacing-unit / 2; 49 | background-color: $background-color; 50 | border: 1px solid $grey-color-light; 51 | border-radius: 5px; 52 | text-align: right; 53 | 54 | .menu-icon { 55 | display: block; 56 | float: right; 57 | width: 36px; 58 | height: 26px; 59 | line-height: 0; 60 | padding-top: 10px; 61 | text-align: center; 62 | 63 | > svg { 64 | width: 18px; 65 | height: 15px; 66 | 67 | path { 68 | fill: $grey-color-dark; 69 | } 70 | } 71 | } 72 | 73 | .trigger { 74 | clear: both; 75 | display: none; 76 | } 77 | 78 | &:hover .trigger { 79 | display: block; 80 | padding-bottom: 5px; 81 | } 82 | 83 | .page-link { 84 | display: block; 85 | padding: 5px 10px; 86 | 87 | &:not(:last-child) { 88 | margin-right: 0; 89 | } 90 | margin-left: 20px; 91 | } 92 | } 93 | } 94 | 95 | 96 | 97 | /** 98 | * Site footer 99 | */ 100 | .site-footer { 101 | border-top: 1px solid $grey-color-light; 102 | padding: $spacing-unit 0; 103 | } 104 | 105 | .footer-heading { 106 | font-size: 18px; 107 | margin-bottom: $spacing-unit / 2; 108 | } 109 | 110 | .contact-list, 111 | .social-media-list { 112 | list-style: none; 113 | margin-left: 0; 114 | } 115 | 116 | .footer-col-wrapper { 117 | font-size: 15px; 118 | color: $grey-color; 119 | margin-left: -$spacing-unit / 2; 120 | @extend %clearfix; 121 | } 122 | 123 | .footer-col { 124 | float: left; 125 | margin-bottom: $spacing-unit / 2; 126 | padding-left: $spacing-unit / 2; 127 | } 128 | 129 | .footer-col-1 { 130 | width: -webkit-calc(35% - (#{$spacing-unit} / 2)); 131 | width: calc(35% - (#{$spacing-unit} / 2)); 132 | } 133 | 134 | .footer-col-2 { 135 | width: -webkit-calc(20% - (#{$spacing-unit} / 2)); 136 | width: calc(20% - (#{$spacing-unit} / 2)); 137 | } 138 | 139 | .footer-col-3 { 140 | width: -webkit-calc(45% - (#{$spacing-unit} / 2)); 141 | width: calc(45% - (#{$spacing-unit} / 2)); 142 | } 143 | 144 | @include media-query($on-laptop) { 145 | .footer-col-1, 146 | .footer-col-2 { 147 | width: -webkit-calc(50% - (#{$spacing-unit} / 2)); 148 | width: calc(50% - (#{$spacing-unit} / 2)); 149 | } 150 | 151 | .footer-col-3 { 152 | width: -webkit-calc(100% - (#{$spacing-unit} / 2)); 153 | width: calc(100% - (#{$spacing-unit} / 2)); 154 | } 155 | } 156 | 157 | @include media-query($on-palm) { 158 | .footer-col { 159 | float: none; 160 | width: -webkit-calc(100% - (#{$spacing-unit} / 2)); 161 | width: calc(100% - (#{$spacing-unit} / 2)); 162 | } 163 | } 164 | 165 | 166 | 167 | /** 168 | * Page content 169 | */ 170 | .page-content { 171 | padding: $spacing-unit 0; 172 | } 173 | 174 | .page-heading { 175 | font-size: 20px; 176 | } 177 | 178 | .post-list { 179 | margin-left: 0; 180 | list-style: none; 181 | 182 | > li { 183 | margin-bottom: $spacing-unit; 184 | } 185 | } 186 | 187 | .post-meta { 188 | font-size: $small-font-size; 189 | color: $grey-color; 190 | } 191 | 192 | .post-link { 193 | display: block; 194 | font-size: 24px; 195 | } 196 | 197 | 198 | 199 | /** 200 | * Posts 201 | */ 202 | .post-header { 203 | margin-bottom: $spacing-unit; 204 | } 205 | 206 | .post-title { 207 | font-size: 42px; 208 | letter-spacing: -1px; 209 | line-height: 1; 210 | 211 | @include media-query($on-laptop) { 212 | font-size: 36px; 213 | } 214 | } 215 | 216 | .post-content { 217 | margin-bottom: $spacing-unit; 218 | 219 | h2 { 220 | font-size: 32px; 221 | 222 | @include media-query($on-laptop) { 223 | font-size: 28px; 224 | } 225 | } 226 | 227 | h3 { 228 | font-size: 26px; 229 | 230 | @include media-query($on-laptop) { 231 | font-size: 22px; 232 | } 233 | } 234 | 235 | h4 { 236 | font-size: 20px; 237 | 238 | @include media-query($on-laptop) { 239 | font-size: 18px; 240 | } 241 | } 242 | } 243 | -------------------------------------------------------------------------------- /_sass/_header.scss: -------------------------------------------------------------------------------- 1 | header { 2 | background: #222; 3 | height: 52px; 4 | color: #9d9d9d; 5 | box-shadow: 0 2px 4px 1px rgba(0,0,0,0.5); 6 | margin-bottom: 20px; 7 | a { 8 | color: #9d9d9d; 9 | -webkit-transition: 0.2s ease; 10 | transition: 0.2s ease; 11 | &:hover { 12 | color: #fff; 13 | } 14 | } 15 | .wrapper { 16 | width: 1140px; 17 | margin: 0 auto; 18 | line-height: 52px; 19 | .brand { 20 | font-size: 18px; 21 | } 22 | small { 23 | margin-left: 26px; 24 | font-size: 14px; 25 | } 26 | .menu{ 27 | display: none; 28 | } 29 | nav { 30 | float: right; 31 | ul { 32 | font-size: 0; 33 | margin: 0; 34 | padding: 0; 35 | li { 36 | list-style: none; 37 | font-size: 14px; 38 | display: inline-block; 39 | -webkit-transition: 0.2s ease; 40 | transition: 0.2s ease; 41 | a { 42 | display: inline-block; 43 | padding: 0 10px; 44 | height: 52px; 45 | &:hover { 46 | background-color: #000; 47 | } 48 | i { 49 | margin-right: 5px; 50 | } 51 | } 52 | >.active { 53 | color: #fff; 54 | background-color: #000; 55 | box-shadow: 0 25px 25px -15px rgba(255,255,255,0.93); 56 | } 57 | } 58 | } 59 | } 60 | } 61 | } 62 | @media screen and (max-width:1200px) and (min-width: 770px) { 63 | header { 64 | height: 50px; 65 | .wrapper { 66 | width: 90%; 67 | line-height: 50px; 68 | .brand { 69 | font-size: 16px; 70 | } 71 | small { 72 | margin-left: 15px; 73 | font-size: 12px; 74 | } 75 | .menu{ 76 | display: none; 77 | } 78 | nav { 79 | ul { 80 | li { 81 | a { 82 | padding: 0 8px; 83 | height: 50px; 84 | i { 85 | margin-right: 4px; 86 | } 87 | } 88 | } 89 | } 90 | } 91 | } 92 | } 93 | } 94 | @media screen and (max-width: 770px) { 95 | header { 96 | height: 48px; 97 | margin-bottom: 15px; 98 | .wrapper { 99 | width: 95%; 100 | margin: 0 auto; 101 | line-height: 48px; 102 | position: relative; 103 | z-index: 101; 104 | .brand { 105 | font-size: 16px; 106 | } 107 | small { 108 | margin-left: 10px; 109 | font-size: 12px; 110 | } 111 | .menu{ 112 | display: inline-block; 113 | position: absolute; 114 | z-index: -102; 115 | right: 0; 116 | top:10px; 117 | padding: 5px 10px; 118 | background: #333; 119 | border: 1px solid #333; 120 | border-radius: 4px; 121 | color: #c9c9c9; 122 | font-size: 17px; 123 | -webkit-transition: 0.4s ease; 124 | transition: 0.4s ease; 125 | } 126 | >.active{ 127 | background: #000; 128 | color: #fff; 129 | } 130 | .nav-show{ 131 | visibility: visible; 132 | transform: scale(1); 133 | opacity: 1; 134 | } 135 | nav { 136 | position: absolute; 137 | z-index: 100; 138 | right:0; 139 | top:47px; 140 | text-align: center; 141 | 142 | visibility: hidden; 143 | transform-origin: 100% 0%; 144 | transform: scale(0.1); 145 | opacity: 0; 146 | transition: 0.2s cubic-bezier(0.5, 0.1, 0.51, 1.38); 147 | ul { 148 | background: #222; 149 | border-radius: 0 0 4px 4px; 150 | box-shadow: 0px 3px 4px 1px rgba(0,0,0,0.5); 151 | li { 152 | font-size: 14px; 153 | display: block; 154 | border-bottom: 1px solid #333; 155 | a { 156 | display: block; 157 | padding: 0 10px; 158 | height: 40px; 159 | line-height: 40px; 160 | } 161 | &:last-of-type{ 162 | border: none; 163 | } 164 | >.active { 165 | color: #fff; 166 | background-color: #000; 167 | box-shadow: none; 168 | } 169 | } 170 | } 171 | } 172 | } 173 | } 174 | } 175 | -------------------------------------------------------------------------------- /js/pageContent.js: -------------------------------------------------------------------------------- 1 | /* jshint asi:true */ 2 | 3 | /** 4 | * [fixSidebar description] 5 | * 滚轮滚到一定位置时,将 sidebar-wrap 添加 fixed 样式 6 | * 反之,取消样式 7 | */ 8 | (function() { 9 | if (window.innerWidth > 770) { 10 | 11 | var sidebarWrap = document.querySelector('.right>.wrap') 12 | 13 | //fix 之后百分比宽度会失效,这里用js赋予宽度 14 | sidebarWrap.style.width = sidebarWrap.offsetWidth + "px" 15 | window.onscroll = function() { 16 | 17 | // 页面顶部滚进去的距离 18 | var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop) 19 | 20 | 21 | // 页面底部滚进去的距离 22 | var htmlHeight = Math.max(document.body.clientHeight, document.documentElement.clientHeight) 23 | // console.log(htmlHeight); 24 | var scrollBottom = htmlHeight - window.innerHeight - scrollTop 25 | 26 | if (scrollTop < 53) { 27 | sidebarWrap.classList.remove('fixed') 28 | sidebarWrap.classList.remove('scroll-bottom') 29 | } else if (scrollBottom >= (190 - 38)) { 30 | sidebarWrap.classList.remove('scroll-bottom') 31 | sidebarWrap.classList.add('fixed') 32 | } else if (isMaxHeight()) { //content 达到maxHeight 33 | sidebarWrap.classList.remove('fixed') 34 | sidebarWrap.classList.add('scroll-bottom') 35 | } 36 | } 37 | setContentMaxHeightInPC() //设置目录最大高度(PC端) 38 | } 39 | moveTOC() //将Content内容转移 40 | }()); 41 | 42 | /** 43 | * 设置目录最大高度 44 | */ 45 | function setContentMaxHeightInPC() { 46 | var windowHeight = window.innerHeight 47 | var contentUl = document.querySelector('.content-ul') 48 | var contentMaxHeight = windowHeight - 77 - 60 49 | contentUl.style.maxHeight = contentMaxHeight + 'px' 50 | } 51 | 52 | /** 53 | * 达到最大高度 54 | * @return {Boolean} [description] 55 | */ 56 | function isMaxHeight() { 57 | var windowHeight = window.innerHeight 58 | var contentUl = document.querySelector('.content-ul') 59 | var contentMaxHeight = windowHeight - 77 - 60 60 | var contentHeight = contentUl.offsetHeight 61 | return contentMaxHeight === contentHeight 62 | // console.log(contentMaxHeight); 63 | // console.log(contentHeight); 64 | } 65 | 66 | 67 | //-------------mobile-------------- 68 | /** 69 | * 屏幕宽度小于770px时,点击锚点按钮,弹出目录框 70 | * @param {[type]} function( [description] 71 | * @return {[type]} [description] 72 | */ 73 | (function() { 74 | if (window.innerWidth <= 770) { 75 | var anchorBtn = document.querySelector('.anchor') 76 | var rightDiv = document.querySelector('.right') 77 | 78 | /** 79 | * 监听锚点按钮 80 | */ 81 | anchorBtn.onclick = function(e) { 82 | e.stopPropagation() 83 | rightDiv.classList.add('right-show') 84 | anchorBtn.classList.add('anchor-hide') 85 | } 86 | 87 | //监听body,点击body,隐藏Content 88 | document.querySelector('body').addEventListener('click', function() { 89 | rightDiv.classList.remove('right-show') 90 | anchorBtn.classList.remove('anchor-hide') 91 | }) 92 | 93 | ancherPostion(anchorBtn, rightDiv) //目录锚的位置固定 94 | setContentMaxHeight() //设置目录最大高度 95 | } 96 | }()); 97 | 98 | /** 99 | * 目录锚的位置固定 100 | */ 101 | function ancherPostion(anchorBtn, rightDiv) { 102 | window.addEventListener('scroll', function() { 103 | // console.log('scroll'); 104 | var top = anchorBtn.getBoundingClientRect().top 105 | // console.log(top); 106 | var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop) 107 | if (scrollTop > 50) { 108 | anchorBtn.style.top = '20px' 109 | rightDiv.style.top = '20px' 110 | } else { 111 | anchorBtn.style.top = '76px' 112 | rightDiv.style.top = '76px' 113 | } 114 | }) 115 | } 116 | 117 | /** 118 | * 设置目录最大高度 119 | */ 120 | function setContentMaxHeight() { 121 | var windowHeight = window.innerHeight 122 | var contentUl = document.querySelector('.content-ul') 123 | var contentMaxHeight = windowHeight - 180 124 | contentUl.style.maxHeight = contentMaxHeight + 'px' 125 | } 126 | 127 | //-------------post Content---------------------- 128 | //将Content内容转移 129 | function moveTOC() { 130 | if (document.querySelector('#markdown-toc') !== null) { 131 | var TOCString = document.querySelector('#markdown-toc').innerHTML 132 | var contentUl = document.querySelector('#content-side') 133 | contentUl.insertAdjacentHTML('afterbegin', TOCString) //插入字符串 134 | 135 | // if (!isAndroidWechatBrowser()) { 136 | 137 | //添加scroll样式,为了平滑滚动 138 | //add class "scroll", for smooth scroll 139 | var aTags = document.querySelectorAll('#content-side a') 140 | 141 | //add class for everyone 142 | // aTags.forEach(function () { 143 | // console.log(this); 144 | // }) 145 | for (var i = 0; i < aTags.length; i++) { 146 | // if (!aTags[i].classList.contains('scroll')) { 147 | // aTags[i].classList.add('scroll') 148 | // } 149 | if (!aTags[i].hasAttribute('data-scroll')) { 150 | aTags[i].setAttribute('data-scroll',''); 151 | } 152 | 153 | } 154 | // } 155 | 156 | } 157 | } 158 | 159 | /** 160 | * 判断安卓版微信浏览器 161 | * @return {Boolean} [description] 162 | */ 163 | function isAndroidWechatBrowser() { 164 | var ua = navigator.userAgent.toLowerCase() 165 | return /micromessenger/.test(ua) && /android/.test(ua2) 166 | } 167 | -------------------------------------------------------------------------------- /_site/js/pageContent.js: -------------------------------------------------------------------------------- 1 | /* jshint asi:true */ 2 | 3 | /** 4 | * [fixSidebar description] 5 | * 滚轮滚到一定位置时,将 sidebar-wrap 添加 fixed 样式 6 | * 反之,取消样式 7 | */ 8 | (function() { 9 | if (window.innerWidth > 770) { 10 | 11 | var sidebarWrap = document.querySelector('.right>.wrap') 12 | 13 | //fix 之后百分比宽度会失效,这里用js赋予宽度 14 | sidebarWrap.style.width = sidebarWrap.offsetWidth + "px" 15 | window.onscroll = function() { 16 | 17 | // 页面顶部滚进去的距离 18 | var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop) 19 | 20 | 21 | // 页面底部滚进去的距离 22 | var htmlHeight = Math.max(document.body.clientHeight, document.documentElement.clientHeight) 23 | // console.log(htmlHeight); 24 | var scrollBottom = htmlHeight - window.innerHeight - scrollTop 25 | 26 | if (scrollTop < 53) { 27 | sidebarWrap.classList.remove('fixed') 28 | sidebarWrap.classList.remove('scroll-bottom') 29 | } else if (scrollBottom >= (190 - 38)) { 30 | sidebarWrap.classList.remove('scroll-bottom') 31 | sidebarWrap.classList.add('fixed') 32 | } else if (isMaxHeight()) { //content 达到maxHeight 33 | sidebarWrap.classList.remove('fixed') 34 | sidebarWrap.classList.add('scroll-bottom') 35 | } 36 | } 37 | setContentMaxHeightInPC() //设置目录最大高度(PC端) 38 | } 39 | moveTOC() //将Content内容转移 40 | }()); 41 | 42 | /** 43 | * 设置目录最大高度 44 | */ 45 | function setContentMaxHeightInPC() { 46 | var windowHeight = window.innerHeight 47 | var contentUl = document.querySelector('.content-ul') 48 | var contentMaxHeight = windowHeight - 77 - 60 49 | contentUl.style.maxHeight = contentMaxHeight + 'px' 50 | } 51 | 52 | /** 53 | * 达到最大高度 54 | * @return {Boolean} [description] 55 | */ 56 | function isMaxHeight() { 57 | var windowHeight = window.innerHeight 58 | var contentUl = document.querySelector('.content-ul') 59 | var contentMaxHeight = windowHeight - 77 - 60 60 | var contentHeight = contentUl.offsetHeight 61 | return contentMaxHeight === contentHeight 62 | // console.log(contentMaxHeight); 63 | // console.log(contentHeight); 64 | } 65 | 66 | 67 | //-------------mobile-------------- 68 | /** 69 | * 屏幕宽度小于770px时,点击锚点按钮,弹出目录框 70 | * @param {[type]} function( [description] 71 | * @return {[type]} [description] 72 | */ 73 | (function() { 74 | if (window.innerWidth <= 770) { 75 | var anchorBtn = document.querySelector('.anchor') 76 | var rightDiv = document.querySelector('.right') 77 | 78 | /** 79 | * 监听锚点按钮 80 | */ 81 | anchorBtn.onclick = function(e) { 82 | e.stopPropagation() 83 | rightDiv.classList.add('right-show') 84 | anchorBtn.classList.add('anchor-hide') 85 | } 86 | 87 | //监听body,点击body,隐藏Content 88 | document.querySelector('body').addEventListener('click', function() { 89 | rightDiv.classList.remove('right-show') 90 | anchorBtn.classList.remove('anchor-hide') 91 | }) 92 | 93 | ancherPostion(anchorBtn, rightDiv) //目录锚的位置固定 94 | setContentMaxHeight() //设置目录最大高度 95 | } 96 | }()); 97 | 98 | /** 99 | * 目录锚的位置固定 100 | */ 101 | function ancherPostion(anchorBtn, rightDiv) { 102 | window.addEventListener('scroll', function() { 103 | // console.log('scroll'); 104 | var top = anchorBtn.getBoundingClientRect().top 105 | // console.log(top); 106 | var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop) 107 | if (scrollTop > 50) { 108 | anchorBtn.style.top = '20px' 109 | rightDiv.style.top = '20px' 110 | } else { 111 | anchorBtn.style.top = '76px' 112 | rightDiv.style.top = '76px' 113 | } 114 | }) 115 | } 116 | 117 | /** 118 | * 设置目录最大高度 119 | */ 120 | function setContentMaxHeight() { 121 | var windowHeight = window.innerHeight 122 | var contentUl = document.querySelector('.content-ul') 123 | var contentMaxHeight = windowHeight - 180 124 | contentUl.style.maxHeight = contentMaxHeight + 'px' 125 | } 126 | 127 | //-------------post Content---------------------- 128 | //将Content内容转移 129 | function moveTOC() { 130 | if (document.querySelector('#markdown-toc') !== null) { 131 | var TOCString = document.querySelector('#markdown-toc').innerHTML 132 | var contentUl = document.querySelector('#content-side') 133 | contentUl.insertAdjacentHTML('afterbegin', TOCString) //插入字符串 134 | 135 | // if (!isAndroidWechatBrowser()) { 136 | 137 | //添加scroll样式,为了平滑滚动 138 | //add class "scroll", for smooth scroll 139 | var aTags = document.querySelectorAll('#content-side a') 140 | 141 | //add class for everyone 142 | // aTags.forEach(function () { 143 | // console.log(this); 144 | // }) 145 | for (var i = 0; i < aTags.length; i++) { 146 | // if (!aTags[i].classList.contains('scroll')) { 147 | // aTags[i].classList.add('scroll') 148 | // } 149 | if (!aTags[i].hasAttribute('data-scroll')) { 150 | aTags[i].setAttribute('data-scroll',''); 151 | } 152 | 153 | } 154 | // } 155 | 156 | } 157 | } 158 | 159 | /** 160 | * 判断安卓版微信浏览器 161 | * @return {Boolean} [description] 162 | */ 163 | function isAndroidWechatBrowser() { 164 | var ua = navigator.userAgent.toLowerCase() 165 | return /micromessenger/.test(ua) && /android/.test(ua2) 166 | } 167 | -------------------------------------------------------------------------------- /_sass/_index.scss: -------------------------------------------------------------------------------- 1 | .page[index] { 2 | a { 3 | color: #4d6dad; 4 | transition: 0.5s ease; 5 | &:hover { 6 | color: #223253; 7 | } 8 | } 9 | .left { 10 | >ul { 11 | padding: 0; 12 | >li { 13 | list-style: none; 14 | } 15 | li { 16 | color: #333; 17 | h2 { 18 | border: none; 19 | font-size: 27px; 20 | margin: 0; 21 | } 22 | .label { 23 | margin-bottom: 15px; 24 | overflow: hidden; 25 | .label-card { 26 | float: left; 27 | margin-right: 15px; 28 | i { 29 | padding-right: 0; 30 | margin-right: 3px; 31 | color: #6b6a6a; 32 | } 33 | } 34 | .categories { 35 | padding: 0; 36 | } 37 | } 38 | .excerpt { 39 | h2 { 40 | font-size: 24px; 41 | } 42 | h3 { 43 | font-size: 22px; 44 | } 45 | h4 { 46 | font-size: 20px; 47 | } 48 | } 49 | .read-all { 50 | text-align: right; 51 | font-size: 14px; 52 | a { 53 | color: #778ab0; 54 | transition: 0.2s ease; 55 | &:hover { 56 | color: #5872a7; 57 | } 58 | i { 59 | padding-right: 3px; 60 | } 61 | } 62 | } 63 | } 64 | } 65 | .pagination { 66 | text-align: center; 67 | .previous, 68 | .next { 69 | font-size: 20px; 70 | padding: 0 5px; 71 | } 72 | .page_number { 73 | padding: 0 5px; 74 | } 75 | .disable { 76 | color: #cbcbcb; 77 | } 78 | } 79 | } 80 | .right { 81 | .wrap { 82 | .side { 83 | margin-bottom: 20px; 84 | padding-bottom: 0; 85 | i { 86 | margin-right: 3px; 87 | } 88 | .content-ul[cate] { 89 | overflow: hidden; 90 | list-style: none; 91 | margin: 0; 92 | padding: 0; 93 | li { 94 | font-size: 14px; 95 | a { 96 | display: block; 97 | width: 100%; 98 | padding: 2px 0; 99 | border-bottom: 1px solid #eee; 100 | &:hover { 101 | background-color: #dbdfee; 102 | .badge { 103 | background-color: #dbdfee; 104 | transform: scale(1.2) rotate(360deg); 105 | } 106 | } 107 | .name { 108 | padding-left: 15px; 109 | } 110 | .badge { 111 | display: block; 112 | 113 | // width: 20px; 114 | float: right; 115 | text-align: center; 116 | margin-right: 15px; 117 | margin-top: 3px; 118 | padding: 0 10px; 119 | font-size: 12px; 120 | color: #fff; 121 | background-color: #bbb; 122 | border-radius: 50%; 123 | transition: 0.5s ease-in-out; 124 | } 125 | } 126 | &:last-of-type a { 127 | border: none; 128 | } 129 | } 130 | } 131 | .content-ul[recent]{ 132 | padding-bottom: 16px; 133 | li{ 134 | color:#aaa; 135 | font-size: 14px; 136 | } 137 | } 138 | .tags-cloud { 139 | font-weight: normal; 140 | a { 141 | padding: 0 3px; 142 | border-radius: 5px; 143 | &:hover { 144 | background-color: #f0e7ce; 145 | } 146 | } 147 | } 148 | } 149 | } 150 | } 151 | } 152 | @media screen and (max-width: 770px) { 153 | .page[index] { 154 | .left>ul li { 155 | h2 { 156 | font-size: 22px; 157 | } 158 | .excerpt { 159 | h2 { 160 | font-size: 20px; 161 | } 162 | h3 { 163 | font-size: 18px; 164 | } 165 | h4 { 166 | font-size: 16px; 167 | } 168 | li{ 169 | margin: 0; 170 | } 171 | } 172 | } 173 | } 174 | } 175 | -------------------------------------------------------------------------------- /js/jekyll-search.min.js: -------------------------------------------------------------------------------- 1 | !function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a="function"==typeof require&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o=0}this.matches=function(string,crit){return"string"!=typeof string?!1:(string=string.trim(),matchesString(string,crit))}}module.exports=new LiteralSearchStrategy},{}],6:[function(require,module,exports){"use strict";function setOptions(_options){options.pattern=_options.pattern||options.pattern,options.template=_options.template||options.template,"function"==typeof _options.middleware&&(options.middleware=_options.middleware)}function compile(data){return options.template.replace(options.pattern,function(match,prop){var value=options.middleware(prop,data[prop],options.template);return void 0!==value?value:data[prop]||match})}module.exports={compile:compile,setOptions:setOptions};var options={};options.pattern=/\{(.*?)\}/g,options.template="",options.middleware=function(){}},{}],7:[function(require,module,exports){!function(window,document,undefined){"use strict";function initWithJSON(json){repository.put(json),registerInput()}function initWithURL(url){jsonLoader.load(url,function(err,json){err&&throwError("failed to get JSON ("+url+")"),initWithJSON(json)})}function emptyResultsContainer(){options.resultsContainer.innerHTML=""}function appendToResultsContainer(text){options.resultsContainer.innerHTML+=text}function registerInput(){options.searchInput.addEventListener("keyup",function(e){emptyResultsContainer(),e.target.value.length>0&&render(repository.search(e.target.value))})}function render(results){if(0===results.length)return appendToResultsContainer(options.noResultsText);for(var i=0;i{title}',templateMiddleware:function(){},noResultsText:"No results found",limit:10,fuzzy:!1,exclude:[]},requiredOptions=["searchInput","resultsContainer","json"],templater=require("./Templater"),repository=require("./Repository"),jsonLoader=require("./JSONLoader"),optionsValidator=require("./OptionsValidator")({required:requiredOptions}),utils=require("./utils");window.SimpleJekyllSearch=function(_options){var errors=optionsValidator.validate(_options);errors.length>0&&throwError("You must specify the following required options: "+requiredOptions),options=utils.merge(options,_options),templater.setOptions({template:options.searchResultTemplate,middleware:options.templateMiddleware}),repository.setOptions({fuzzy:options.fuzzy,limit:options.limit}),utils.isJSON(options.json)?initWithJSON(options.json):initWithURL(options.json)},window.SimpleJekyllSearch.init=window.SimpleJekyllSearch}(window,document)},{"./JSONLoader":1,"./OptionsValidator":2,"./Repository":3,"./Templater":6,"./utils":8}],8:[function(require,module,exports){"use strict";function merge(defaultParams,mergeParams){var mergedOptions={};for(var option in defaultParams)mergedOptions[option]=defaultParams[option],void 0!==mergeParams[option]&&(mergedOptions[option]=mergeParams[option]);return mergedOptions}function isJSON(json){try{return json instanceof Object&&JSON.parse(JSON.stringify(json))?!0:!1}catch(e){return!1}}module.exports={merge:merge,isJSON:isJSON}},{}]},{},[7]); 2 | -------------------------------------------------------------------------------- /_site/js/jekyll-search.min.js: -------------------------------------------------------------------------------- 1 | !function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a="function"==typeof require&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o=0}this.matches=function(string,crit){return"string"!=typeof string?!1:(string=string.trim(),matchesString(string,crit))}}module.exports=new LiteralSearchStrategy},{}],6:[function(require,module,exports){"use strict";function setOptions(_options){options.pattern=_options.pattern||options.pattern,options.template=_options.template||options.template,"function"==typeof _options.middleware&&(options.middleware=_options.middleware)}function compile(data){return options.template.replace(options.pattern,function(match,prop){var value=options.middleware(prop,data[prop],options.template);return void 0!==value?value:data[prop]||match})}module.exports={compile:compile,setOptions:setOptions};var options={};options.pattern=/\{(.*?)\}/g,options.template="",options.middleware=function(){}},{}],7:[function(require,module,exports){!function(window,document,undefined){"use strict";function initWithJSON(json){repository.put(json),registerInput()}function initWithURL(url){jsonLoader.load(url,function(err,json){err&&throwError("failed to get JSON ("+url+")"),initWithJSON(json)})}function emptyResultsContainer(){options.resultsContainer.innerHTML=""}function appendToResultsContainer(text){options.resultsContainer.innerHTML+=text}function registerInput(){options.searchInput.addEventListener("keyup",function(e){emptyResultsContainer(),e.target.value.length>0&&render(repository.search(e.target.value))})}function render(results){if(0===results.length)return appendToResultsContainer(options.noResultsText);for(var i=0;i{title}',templateMiddleware:function(){},noResultsText:"No results found",limit:10,fuzzy:!1,exclude:[]},requiredOptions=["searchInput","resultsContainer","json"],templater=require("./Templater"),repository=require("./Repository"),jsonLoader=require("./JSONLoader"),optionsValidator=require("./OptionsValidator")({required:requiredOptions}),utils=require("./utils");window.SimpleJekyllSearch=function(_options){var errors=optionsValidator.validate(_options);errors.length>0&&throwError("You must specify the following required options: "+requiredOptions),options=utils.merge(options,_options),templater.setOptions({template:options.searchResultTemplate,middleware:options.templateMiddleware}),repository.setOptions({fuzzy:options.fuzzy,limit:options.limit}),utils.isJSON(options.json)?initWithJSON(options.json):initWithURL(options.json)},window.SimpleJekyllSearch.init=window.SimpleJekyllSearch}(window,document)},{"./JSONLoader":1,"./OptionsValidator":2,"./Repository":3,"./Templater":6,"./utils":8}],8:[function(require,module,exports){"use strict";function merge(defaultParams,mergeParams){var mergedOptions={};for(var option in defaultParams)mergedOptions[option]=defaultParams[option],void 0!==mergeParams[option]&&(mergedOptions[option]=mergeParams[option]);return mergedOptions}function isJSON(json){try{return json instanceof Object&&JSON.parse(JSON.stringify(json))?!0:!1}catch(e){return!1}}module.exports={merge:merge,isJSON:isJSON}},{}]},{},[7]); 2 | -------------------------------------------------------------------------------- /_drafts/ES2015-note.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "ES2015学习笔记1-let和const、变量解构赋值、字符串、正则、数值" 4 | categories: JavaScript 5 | tags: ES2015 6 | --- 7 | 8 | * content 9 | {:toc} 10 | 11 | 新的框架都支持 ES2015 了,虽然浏览器不支持部分语法,但是有 Babel 这个神器,ES2015 的普及大势所趋。更优雅地写代码,对技术的追求是一件很有意思的事情! 12 | 13 | 14 | 15 | 16 | ![bloggbild_david_JS.jpg](https://ooo.0o0.ooo/2016/06/15/576125e78370d.jpg) 17 | 18 | 本文主要以 [ECMAScript 6 入门 -阮一峰](http://es6.ruanyifeng.com/) 作为参考资料。 19 | 20 | ## `let` 和 `const` 21 | 22 | ### `let` 23 | 24 | #### 基本用法 25 | 26 | 用于声明变量,用法类似于`var`,但声明的变量只在`let`所在的代码块内有效。 27 | 28 | ```js 29 | { 30 | let a = 10; 31 | var b = 1; 32 | } 33 | console.log(a) // ReferenceError: a is not defined. 34 | console.log(b) // 1 35 | ``` 36 | 37 | `for`循环计数器,就很适合`let`命令。 38 | 39 | ```js 40 | for (let i = 0; i < array.length; i++) { 41 | //... 42 | } 43 | console.log(i) //ReferenceError: i is not defined. 44 | ``` 45 | 46 | #### 不存在变量提升 47 | 48 | `let`不像`var`那样会发生“变量提升”现象。所以,变量一定要在声明后使用,否则报错。 49 | 50 | ```js 51 | console.log(a) //undefined 52 | console.log(b) //VM248:2 Uncaught ReferenceError: b is not defined(…) 53 | 54 | var a = 1 55 | let b = 2 56 | ``` 57 | 58 | 声明`b`之前,变量`b`是不存在的,这时如果用到它,就会抛出一个错误。 59 | 60 | #### 暂时性死区 61 | 62 | ```js 63 | if (true) { 64 | // TDZ开始 65 | tmp = 'abc'; // ReferenceError 66 | console.log(tmp); // ReferenceError 67 | 68 | let tmp; // TDZ结束 69 | console.log(tmp); // undefined 70 | 71 | tmp = 123; 72 | console.log(tmp); // 123 73 | } 74 | ``` 75 | 76 | ES6 明确规定,如果区块中存在`let`和`const`命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。 77 | 78 | 总之,在代码块内,使用`let`命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”(temporal dead zone,简称TDZ)。 79 | 80 | #### 不允许重复声明 81 | 82 | `let`不允许在相同作用域内,重复声明同一个变量。 83 | 84 | ```js 85 | // 报错 86 | function a() { 87 | let a = 10; 88 | var a = 1; 89 | } 90 | 91 | // 报错 92 | function b() { 93 | let a = 10; 94 | let a = 1; 95 | } 96 | ``` 97 | 98 | ### 块级作用域 99 | 100 | 没有块级作用域时会出现的两个问题: 101 | 102 | 1. 内层变量可能会覆盖外层变量。 103 | 2. 用来计数的循环变量泄露为全局变量。 104 | 105 | `let`实际上为 JavaScript 新增了块级作用域。 106 | 107 | * 外层作用域无法读取内层作用域的变量。 108 | * 内层作用域可以定义外层作用域的同名变量。 109 | * 块级作用域的出现,实际上使得获得广泛应用的立即执行匿名函数(IIFE)不再必要了。 110 | * 函数本身的作用域,在其所在的块级作用域之内。 111 | 112 | ### `const` 113 | 114 | `const`声明一个只读的常量。一旦声明,常量的值就不能改变。 115 | 116 | ```js 117 | const PI = 3.1415; 118 | PI = 3; // 常规模式时,重新赋值无效,但不报错 119 | //但是我在Chrome下运行报错了,错误如下 120 | //Uncaught TypeError: Assignment to constant variable. 121 | console.log(PI); // 3.1415 122 | ``` 123 | 124 | `const`声明的变量不得改变值,这意味着,`const`一旦声明变量,就必须立即初始化,不能留到以后赋值。 125 | 126 | `const`的作用域与`let`命令相同:只在声明所在的块级作用域内有效。 127 | 128 | `const`命令声明的常量也是不提升,同样存在暂时性死区,只能在声明的位置后面使用。 129 | 130 | 对于复合类型的变量,变量名不指向数据,而是指向数据所在的地址。`const`命令只是保证变量名指向的地址不变,并不保证该地址的数据不变,所以将一个对象声明为常量必须非常小心。 131 | 132 | ```js 133 | const foo = {}; 134 | foo.prop = 123; 135 | 136 | console.log(foo.prop) // 123 137 | 138 | foo = {}; // TypeError: "foo" is read-only 139 | ``` 140 | 141 | 上面代码中,常量`foo`储存的是一个地址,这个地址指向一个对象。不可变的只是这个地址,即不能把`foo`指向另一个地址,但对象本身是可变的,所以依然可以为其添加新属性。 142 | 143 | 如果真的想将对象冻结,应该使用`Object.freeze`方法。 144 | 145 | ES5 只有两种声明变量的方法:`var`命令和`function`命令。ES6 除了添加`let`和`const`命令,后面章节还会提到,另外两种声明变量的方法:`import`命令和`class`命令。所以,ES6 一共有6种声明变量的方法。 146 | 147 | ### 全局对象属性 148 | 149 | `var`命令和`function`命令声明的全局变量,依旧是全局对象的属性;另一方面规定,`let`命令、`const`命令、`class`命令声明的全局变量,不属于全局对象的属性。也就是说,从 ES6 开始,全局变量将逐步与全局对象的属性脱钩。 150 | 151 | ```js 152 | var a = 1; 153 | // 如果在Node的REPL环境,可以写成global.a 154 | // 或者采用通用方法,写成this.a 155 | window.a // 1 156 | 157 | let b = 1; 158 | window.b // undefined 159 | ``` 160 | 161 | ## 变量的解构赋值 162 | 163 | ### 数组的解构赋值 164 | 165 | #### 基本用法 166 | 167 | ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。 168 | 169 | ```js 170 | var a = 1 171 | var b = 2 172 | var c = 3 173 | 174 | //ES6 中允许写成下面这样 175 | var [a,b,c] = [1,2,3] 176 | ``` 177 | 178 | 如果解构不成功,变量的值就等于`undefined`。 179 | 180 | ```js 181 | let [a, b] = [1] 182 | console.log(a); //1 183 | console.log(b); //undefined 184 | ``` 185 | 186 | 另一种情况是不完全解构,即等号左边的模式,只匹配一部分的等号右边的数组。这种情况下,解构依然可以成功。如下: 187 | 188 | ```js 189 | let [a, b] = [1] 190 | console.log(a); //1 191 | console.log(b); //undefined 192 | 193 | let [c, [d]] = [4, [5, 6], 7] 194 | console.log(c); //4 195 | console.log(d); //5 196 | ``` 197 | 198 | 如果等号的右边不是数组(或者严格地说,不是可遍历的结构,参见《Iterator》一章),那么将会报错。 199 | 200 | 解构赋值不仅适用于var命令,也适用于let和const命令。 201 | 202 | #### 默认值 203 | 204 | 解构赋值允许指定默认值。 205 | 206 | ```js 207 | let [foo = true] = []; 208 | console.log(foo); //true 209 | 210 | let [x, y = 'b'] = ['a']; // x='a', y='b' 211 | let [x2, y2 = 'b'] = ['a', undefined]; // x2='a', y2='b' 212 | ``` 213 | 214 | 注意,ES6 内部使用严格相等运算符(`===`),判断一个位置是否有值。所以,如果一个数组成员不严格等于`undefined`,默认值是不会生效的。 215 | 216 | 如果默认值是一个表达式,那么这个表达式是惰性求值的,即只有在用到的时候,才会求值。 217 | 218 | ```js 219 | function f() { 220 | console.log('aaa'); 221 | } 222 | 223 | let [x = f()] = [1]; 224 | // x = 1 225 | ``` 226 | 227 | 上述代码的`f()`根本不会执行。因为`x`能取到值。 228 | 229 | 默认值可以引用解构赋值的其他变量,但该变量必须已经声明。 230 | 231 | ### 对象的解构赋值 232 | 233 | 解构不仅可以用于数组,还可以用于对象。 234 | 235 | ```js 236 | let { foo, bar } = { foo: "aaa", bar: "bbb" } 237 | foo // "aaa" 238 | bar // "bbb" 239 | ``` 240 | 241 | 对象的解构与数组有一个重要的不同。数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值。 242 | 243 | ```js 244 | let { bar, foo } = { foo: "aaa", bar: "bbb" }; 245 | foo // "aaa" 246 | bar // "bbb" 247 | 248 | let { baz } = { foo: "aaa", bar: "bbb" }; 249 | baz // undefined 250 | ``` 251 | 252 | 如果变量名与属性名不一致,必须写成下面这样。 253 | 254 | ```js 255 | var { foo: baz } = { foo: "aaa", bar: "bbb" }; 256 | baz // "aaa" 257 | 258 | //转化为如下代码: 259 | var _foo$bar2 = { foo: "aaa", bar: "bbb" }; 260 | var baz = _foo$bar2.foo; 261 | 262 | 263 | let obj = { first: 'hello', last: 'world' }; 264 | let { first: f, last: l } = obj; 265 | f // 'hello' 266 | l // 'world' 267 | ``` 268 | 269 | 也就是说,对象的解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变量。真正被赋值的是后者,而不是前者。 270 | 271 | ```js 272 | var { foo: baz } = { foo: "aaa", bar: "bbb" }; 273 | baz // "aaa" 274 | foo // error: foo is not defined 275 | ``` 276 | 277 | 对于 let 和 const 来说,变量不能重新声明,所以一旦赋值的变量以前声明过,就会报错。 278 | 279 | 和数组一样,解构也可以用于嵌套结构的对象。 280 | 281 | 对象的解构也可以指定默认值。默认值生效的条件是,对象的属性值严格等于`undefined`。 282 | 283 | ```js 284 | var {x = 3} = {x: undefined}; 285 | x // 3 286 | 287 | var {x = 3} = {x: null}; 288 | x // null 289 | ``` 290 | 291 | 如果解构失败,变量的值等于`undefined`。 292 | 293 | ```js 294 | var {foo} = {bar: 'baz'}; 295 | foo // undefined 296 | ``` 297 | 298 | ### 字符串的解构赋值 299 | 300 | 字符串也可以解构赋值。字符串被转换为一个类似数组的对象。 301 | 302 | ```js 303 | const [a, b, c, d, e] = 'hello'; 304 | a // "h" 305 | b // "e" 306 | c // "l" 307 | d // "l" 308 | e // "o" 309 | ``` 310 | 311 | ### 数值和布尔值的解构赋值 312 | 313 | 解构赋值时,如果等号右边是数值和布尔值,则会先转为对象。 314 | 315 | ### 函数参数的解构赋值 316 | 317 | 函数的参数也可以使用解构赋值。 318 | 319 | ```js 320 | function add([x, y]){ 321 | return x + y; 322 | } 323 | 324 | add([1, 2]); // 3 325 | ``` 326 | 327 | ### 圆括号问题 328 | 329 | ### 用途 330 | 331 | ## 字符串 332 | 333 | ## 正则 334 | 335 | ## 数值 336 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 |
    6 |
    7 |

    Welcome to FDU-Hotpot !

    8 | 这里记录着 FDUer 们的求学之路 9 |

    10 |

    !!!本站已迁移至新的地址: FDU-Hotpot

    11 |

    !!!目前仅针对复旦学子开放 注册

    12 |
    13 | 14 |
    15 |
      16 | {% include topPost.html %} 17 |
    18 | 19 | 20 | 21 | 22 | 39 |
    40 | 41 |
    42 |
    43 | 44 |
    45 | {% include sidebar-search.html %} 46 |
    47 | 48 |
    49 |
    50 | 51 | Recent Posts 52 |
    53 |
      54 | {% for post in site.posts offset: 0 limit: 10 %} 55 |
    • {{ post.title }}
    • 56 | {% endfor %} 57 |
    58 |
    59 | 60 | 61 |
    62 |
    63 | 64 | Categories 65 |
    66 | 78 |
    79 | 80 |
    81 |
    82 | 83 | Tags 84 |
    85 |
    86 | {% assign first = site.tags.first %} 87 | {% assign max = first[1].size %} 88 | {% assign min = max %} 89 | {% for tag in site.tags offset:1 %} 90 | {% if tag[1].size > max %} 91 | {% assign max = tag[1].size %} 92 | {% elsif tag[1].size < min %} 93 | {% assign min = tag[1].size %} 94 | {% endif %} 95 | {% endfor %} 96 | 97 | {% if max == min %} 98 | {% assign diff = 1 %} 99 | {% else %} 100 | {% assign diff = max | minus: min %} 101 | {% endif %} 102 | 103 | {% for tag in site.tags %} 104 | {% assign temp = tag[1].size | minus: min | times: 36 | divided_by: diff %} 105 | {% assign base = temp | divided_by: 4 %} 106 | {% assign remain = temp | modulo: 4 %} 107 | {% if remain == 0 %} 108 | {% assign size = base | plus: 9 %} 109 | {% elsif remain == 1 or remain == 2 %} 110 | {% assign size = base | plus: 9 | append: '.5' %} 111 | {% else %} 112 | {% assign size = base | plus: 10 %} 113 | {% endif %} 114 | {% if remain == 0 or remain == 1 %} 115 | {% assign color = 9 | minus: base %} 116 | {% else %} 117 | {% assign color = 8 | minus: base %} 118 | {% endif %} 119 | {{ tag[0] }} 120 | {% endfor %} 121 |
    122 |
    123 | 124 | 125 |
    126 |
    127 | 128 | User Map 129 |
    130 | 131 |
    132 | 133 | 142 |
    143 |
    144 |
    145 | 146 | 147 | -------------------------------------------------------------------------------- /_sass/_page.scss: -------------------------------------------------------------------------------- 1 | .clearfix:after { 2 | content: "\200B"; 3 | display: block; 4 | height: 0; 5 | clear: both; 6 | } 7 | .clearfix { 8 | *zoom: 1; 9 | } 10 | .page { 11 | width: 1140px; 12 | box-sizing: border-box; 13 | margin: 0 auto; 14 | // word-break: break-all; 15 | .left { 16 | width: 75%; 17 | float: left; 18 | padding: 20px 30px; 19 | line-height: 1.6; 20 | font-size: 16px; 21 | background-color: #f8f8fd; 22 | box-shadow: 0 1px 2px rgba(0,0,0,0.4),0 0 30px rgba(10,10,0,0.1) inset; 23 | >h1 { 24 | margin-bottom: -10px; 25 | } 26 | a:not([title]){ 27 | word-break: break-all; 28 | } 29 | ul { 30 | >h2 { 31 | margin-left: -40px; 32 | color: #6a6b6b; 33 | } 34 | li { 35 | line-height: 1.8; 36 | color: #888888; 37 | time { 38 | display: inline-block; 39 | width: 135px; 40 | } 41 | .title { 42 | font-weight: bold; 43 | color: #223253; 44 | transition: 0.3s ease; 45 | &:hover { 46 | color: #4d6dad; 47 | } 48 | } 49 | i { 50 | margin-right: 5px; 51 | } 52 | .categories { 53 | padding: 0 15px; 54 | i { 55 | color: #9e9d9d; 56 | } 57 | a { 58 | padding: 0 5px; 59 | background-color: #9e9d9d; 60 | color: #fff; 61 | font-size: 90%; 62 | transition: 0.3s ease; 63 | &:hover { 64 | background-color: #b6b6b9; 65 | } 66 | } 67 | } 68 | .pageTag { 69 | i { 70 | color: #c6cbe9; 71 | } 72 | a { 73 | 74 | // border: 1px solid #aaa; 75 | padding: 0 5px; 76 | background-color: #c6cbe9; 77 | border-radius: 4px; 78 | color: #fff; 79 | font-size: 90%; 80 | transition: 0.3s ease; 81 | &:hover { 82 | background-color: #c0ddc7; 83 | } 84 | } 85 | } 86 | } 87 | } 88 | } 89 | .anchor { 90 | display: none; 91 | } 92 | .right { 93 | float: left; 94 | width: 25%; 95 | padding-left: 20px; 96 | top: 0; 97 | .fixed { 98 | position: fixed; 99 | top: 20px; 100 | } 101 | .scroll-bottom { 102 | position: absolute; 103 | bottom: 190px; 104 | } 105 | .side { 106 | box-sizing: border-box; 107 | background-color: #f8f8fd; 108 | box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.3), 0 0 30px rgba(10, 10, 0, 0.1) inset; 109 | padding-bottom: 1px; 110 | -ms-word-break: break-all; 111 | word-break: break-all; 112 | /* Non standard for webkit */ 113 | // word-break: break-word; 114 | -webkit-hyphens: auto; 115 | -moz-hyphens: auto; 116 | -ms-hyphens: auto; 117 | hyphens: auto; 118 | >div { 119 | padding: 12px 15px; 120 | 121 | // margin-right: -10px; 122 | border-bottom: 1px solid #c0c0c0; 123 | font-size: 16px; 124 | font-weight: bold; 125 | } 126 | a { 127 | color: #4d6dad; 128 | transition: 0.5s ease; 129 | &:hover { 130 | color: #223253; 131 | } 132 | } 133 | } 134 | .content-ul { 135 | overflow-y: auto; 136 | padding-right: 10px; 137 | line-height: 1.8; 138 | padding-left: 35px; 139 | ul { 140 | padding-left: 20px; 141 | } 142 | } 143 | } 144 | } 145 | @media screen and (max-width:1200px) and (min-width: 770px) { 146 | .page { 147 | width: 90%; 148 | } 149 | } 150 | @media screen and (max-width: 770px) { 151 | .page { 152 | width: 95%; 153 | .left { 154 | width: 100%; 155 | float: left; 156 | padding: 10px 14px; 157 | font-size: 14px; 158 | >h1 { 159 | font-size: 25px; 160 | margin-bottom: -10px; 161 | } 162 | ul { 163 | padding-left: 20px; 164 | >h2 { 165 | font-size: 20px; 166 | 167 | // margin: 0; 168 | margin-left: -20px; 169 | } 170 | li { 171 | margin: 20px 0; 172 | time { 173 | display: block; 174 | width: auto; 175 | } 176 | .title { 177 | display: block; 178 | font-size: 16px; 179 | } 180 | .categories { 181 | font-size: 12px; 182 | padding-left: 0; 183 | padding-right: 10px; 184 | } 185 | } 186 | } 187 | } 188 | .anchor { 189 | display: block; 190 | visibility: visible; 191 | position: fixed; 192 | top: 76px; 193 | right: 2.5%; 194 | padding: 5px 10px; 195 | color: #333; 196 | font-size: 15px; 197 | background-color: #f8f8fd; 198 | box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.3), 0 0 30px rgba(10, 10, 0, 0.1) inset; 199 | opacity: 0.7; 200 | transition: 0.2s cubic-bezier(0.5, 0.1, 0.51, 1.38); 201 | } 202 | .anchor-hide { 203 | opacity: 0; 204 | visibility: hidden; 205 | } 206 | .right { 207 | visibility: hidden; 208 | 209 | // display: none; 210 | position: fixed; 211 | 212 | // z-index: 190; 213 | float: none; 214 | width: auto; 215 | max-width: 95%; 216 | padding: 0; 217 | top: 76px; 218 | right: 2.5%; 219 | opacity: 0; 220 | transform-origin: 100% 0; 221 | transform: scale(0.1); 222 | transition: 0.2s cubic-bezier(0.5, 0.1, 0.51, 1.38); 223 | } 224 | .right-show { 225 | z-index: 999; 226 | visibility: visible; 227 | opacity: 1; 228 | transform: scale(1); 229 | .content-ul{ 230 | margin-bottom: 0; 231 | >li:last-of-type{ 232 | margin-bottom: 16px; 233 | } 234 | } 235 | } 236 | } 237 | } 238 | -------------------------------------------------------------------------------- /js/waterfall.js: -------------------------------------------------------------------------------- 1 | /* jshint asi:true */ 2 | //先等图片都加载完成 3 | //再执行布局函数 4 | 5 | /** 6 | * 执行主函数 7 | * @param {[type]} function( [description] 8 | * @return {[type]} [description] 9 | */ 10 | (function() { 11 | 12 | /** 13 | * 内容JSON 14 | */ 15 | var demoContent = [ 16 | { 17 | demo_link: 'https://codepen.io/haoyang/pen/jrvrQq', 18 | img_link: 'https://ooo.0o0.ooo/2016/11/24/5836d81f48cd2.png', 19 | code_link: 'https://codepen.io/haoyang/pen/jrvrQq', 20 | title: 'Fisher-Yates 洗牌算法动画', 21 | core_tech: 'JavaScript', 22 | description: 'Fisher-Yates 洗牌算法动画。算法详情见 这里。' 23 | }, { 24 | demo_link: 'http://gaohaoyang.github.io/test/headerTransition/', 25 | img_link: 'https://ooo.0o0.ooo/2016/06/20/5768c1597d1fe.png', 26 | code_link: 'https://github.com/Gaohaoyang/test/tree/master/headerTransition', 27 | title: 'Header Transition 渐变动画', 28 | core_tech: 'jQuery BootStrap CSS3', 29 | description: '花费不到半小时帮师兄做了一个简单的 CSS3 动画效果,当页面滚动到指定距离时,header 区的背景色由透明变为蓝色。仿照了网站 https://quorrajs.org/ 的 Header 区动画效果。' 30 | }, { 31 | demo_link: 'http://gaohaoyang.github.io/mask-fade-out/', 32 | img_link: 'http://7q5cdt.com1.z0.glb.clouddn.com/demo-fade-out.png', 33 | code_link: 'https://github.com/Gaohaoyang/mask-fade-out', 34 | title: '遮罩层按指定路径缩小消失', 35 | core_tech: 'jQuery CSS', 36 | description: '使用 animate 方法,做到兼容 IE8。曾在联想服务官网上线3个月。' 37 | }, { 38 | demo_link: 'http://gaohaoyang.github.io/ToDo-WebApp/', 39 | img_link: 'http://7q5cdt.com1.z0.glb.clouddn.com/blog-todoWebApp.png', 40 | code_link: 'https://github.com/Gaohaoyang/ToDo-WebApp', 41 | title: '百度前端学院 task0004 ToDo 应用(移动端)', 42 | core_tech: 'JavaScript LocalStorage requireJS Sass Gulp XSS', 43 | description: '在任务三中,做了一个 PC 端的 ToDo 应用。任务四是将它优化,以适应移动端设备。' 44 | }, { 45 | demo_link: 'http://gaohaoyang.github.io/baidu-ife-practice/task0003/', 46 | img_link: 'http://7q5cdt.com1.z0.glb.clouddn.com/demo-todo.png', 47 | code_link: 'https://github.com/Gaohaoyang/baidu-ife-practice/tree/master/task0003', 48 | title: '百度前端学院 task0003 ToDo 应用', 49 | core_tech: 'JavaScript LocalStorage', 50 | description: '任务三,ToDo 单页应用,主要使用了 LocalStorage 存储数据,使用 JSON 模拟了 3 张数据表。' 51 | }, { 52 | demo_link: 'http://gaohaoyang.github.io/ife/task/task0002/work/Gaohaoyang/task0002_5.html', 53 | img_link: 'http://7q5cdt.com1.z0.glb.clouddn.com/demo-drag.png', 54 | code_link: 'https://github.com/Gaohaoyang/ife/tree/master/task/task0002/work/Gaohaoyang', 55 | title: '拖拽交互', 56 | core_tech: 'JavaScript', 57 | description: '对鼠标事件应用,以及判断定位的方法等。' 58 | }, { 59 | demo_link: 'http://gaohaoyang.github.io/ife/task/task0002/work/Gaohaoyang/task0002_4.html', 60 | img_link: 'http://ww2.sinaimg.cn/large/7011d6cfjw1f3ba2krzs0j207005y0sv.jpg', 61 | code_link: 'https://github.com/Gaohaoyang/ife/tree/master/task/task0002/work/Gaohaoyang', 62 | title: '输入框即时提示', 63 | core_tech: 'JavaScript', 64 | description: '对input监听,使用正在表达式高亮匹配,实现输入联想效果。' 65 | }, { 66 | demo_link: 'http://gaohaoyang.github.io/ife/task/task0002/work/Gaohaoyang/task0002_3.html', 67 | img_link: 'http://ww2.sinaimg.cn/large/7011d6cfjw1f3ba04okoqj20eq093wh1.jpg', 68 | code_link: 'https://github.com/Gaohaoyang/ife/tree/master/task/task0002/work/Gaohaoyang', 69 | title: '轮播图', 70 | core_tech: 'JavaScript', 71 | description: '变速运动,运动终止条件的应用。' 72 | }, { 73 | demo_link: 'http://gaohaoyang.github.io/ife/task/task0002/work/Gaohaoyang/task0002_2.html', 74 | img_link: 'http://ww4.sinaimg.cn/large/7011d6cfjw1f3b9w6xpz5j20ae02pgm3.jpg', 75 | code_link: 'https://github.com/Gaohaoyang/ife/tree/master/task/task0002/work/Gaohaoyang', 76 | title: '倒计时', 77 | core_tech: 'JavaScript', 78 | description: 'setInterval(),Date 对象的学习和使用。' 79 | }, { 80 | demo_link: 'http://gaohaoyang.github.io/ife/task/task0002/work/Gaohaoyang/task0002_1.html', 81 | img_link: 'http://ww3.sinaimg.cn/large/7011d6cfjw1f3b9tmyuh2j20au0aaaar.jpg', 82 | code_link: 'https://github.com/Gaohaoyang/ife/tree/master/task/task0002/work/Gaohaoyang', 83 | title: '处理兴趣爱好列表', 84 | core_tech: 'JavaScript', 85 | description: '对JavaScript正则表达式和字符串的练习。' 86 | }, { 87 | demo_link: 'http://gaohaoyang.github.io/ife/task/task0002/work/Gaohaoyang/index.html', 88 | img_link: 'http://7q5cdt.com1.z0.glb.clouddn.com/demo-demo-index.png', 89 | code_link: 'https://github.com/Gaohaoyang/ife/tree/master/task/task0002/work/Gaohaoyang', 90 | title: '百度前端学院 task0002 展示主页', 91 | core_tech: 'HTML CSS', 92 | description: '任务二的展示主页,里面包含五个小 demo。还有一篇相关的日志。' 93 | }, { 94 | demo_link: 'http://gaohaoyang.github.io/ife/task/task0001/work/Gaohaoyang/index.html', 95 | img_link: 'http://7q5cdt.com1.z0.glb.clouddn.com/Demo-blog-ife.jpg', 96 | code_link: 'https://github.com/Gaohaoyang/ife/tree/master/task/task0001/work/Gaohaoyang', 97 | title: '百度前端学院 task0001 个人博客', 98 | core_tech: 'HTML CSS', 99 | description: '完成百度前端学院的任务。深刻的理解了BFC、浮动、inline-block间距,多列布局等技术。还有一篇相关的日志。' 100 | }, { 101 | demo_link: 'http://gaohaoyang.github.io/ghost-button-css3/', 102 | img_link: 'http://7q5cdt.com1.z0.glb.clouddn.com/DemoGhost-Button.png', 103 | code_link: 'https://github.com/Gaohaoyang/ghost-button-css3', 104 | title: 'Ghost Button 幽灵按钮', 105 | core_tech: 'CSS3', 106 | description: '使用 CSS3 中的旋转、缩放、过渡、动画等效果,制作出很酷的按钮效果。' 107 | }, { 108 | demo_link: 'http://gaohaoyang.github.io/shadow-demo-css3', 109 | img_link: 'http://7q5cdt.com1.z0.glb.clouddn.com/Demoshadow.png', 110 | code_link: 'https://github.com/Gaohaoyang/shadow-demo-css3', 111 | title: 'CSS3 阴影特效', 112 | core_tech: 'CSS3', 113 | description: 'CSS3 中的阴影、旋转等效果,制作出曲边阴影和翘边阴影。' 114 | }, { 115 | demo_link: 'http://gaohaoyang.github.io/learning-AngularJS/2-3-bookstore-add-sth-by-myself/', 116 | img_link: 'http://7q5cdt.com1.z0.glb.clouddn.com/DemoAngularJS.png', 117 | code_link: 'https://github.com/Gaohaoyang/learning-AngularJS/tree/master/2-3-bookstore-add-sth-by-myself', 118 | title: 'AngularJS 结合动画效果', 119 | core_tech: 'AngularJS CSS3', 120 | description: '使用 AngularJS 中的 ngAnimate 加 CSS3里面的一些旋转效果,做出页面切换的效果。' 121 | }, { 122 | demo_link: 'http://gaohaoyang.github.io/learning-AngularJS/2-4-UiRouterPractice', 123 | img_link: 'http://ww2.sinaimg.cn/large/7011d6cfjw1f3b8zumfqij20q40nh76x.jpg', 124 | code_link: 'https://github.com/Gaohaoyang/learning-AngularJS/tree/master/2-4-UiRouterPractice', 125 | title: 'AngularJS UI-router 练习', 126 | core_tech: 'AngularJS UI-router', 127 | description: 'UI-router 作为 AngularJS 中路由的扩充,实现了多级路由的效果。使得前端界面跳转更加方便。' 128 | }, { 129 | demo_link: 'http://gaohaoyang.github.io/test/bootstrap-zhihu/', 130 | img_link: 'http://7q5cdt.com1.z0.glb.clouddn.com/teach-girlfriend-html-CopyZhihu.jpg', 131 | code_link: 'https://github.com/Gaohaoyang/test/tree/master/bootstrap-zhihu', 132 | title: '仿知乎页面', 133 | core_tech: 'HTML BootStrap', 134 | description: '使用BootStrap仿照知乎做了一个静态页面。' 135 | } 136 | ]; 137 | 138 | contentInit(demoContent) //内容初始化 139 | waitImgsLoad() //等待图片加载,并执行布局初始化 140 | }()); 141 | 142 | /** 143 | * 内容初始化 144 | * @return {[type]} [description] 145 | */ 146 | function contentInit(content) { 147 | // var htmlArr = []; 148 | // for (var i = 0; i < content.length; i++) { 149 | // htmlArr.push('
    ') 150 | // htmlArr.push('') 151 | // htmlArr.push('') 152 | // htmlArr.push('') 153 | // htmlArr.push('

    ') 154 | // htmlArr.push(''+content[i].title+'') 155 | // htmlArr.push('

    ') 156 | // htmlArr.push('

    主要技术:'+content[i].core_tech+'

    ') 157 | // htmlArr.push('

    '+content[i].description) 158 | // htmlArr.push('源代码 ') 159 | // htmlArr.push('

    ') 160 | // htmlArr.push('
    ') 161 | // } 162 | // var htmlStr = htmlArr.join('') 163 | var htmlStr = '' 164 | for (var i = 0; i < content.length; i++) { 165 | htmlStr += '
    ' + ' ' + ' ' + ' ' + '

    ' + ' ' + content[i].title + '' + '

    ' + '

    主要技术:' + content[i].core_tech + '

    ' + '

    ' + content[i].description + ' 源代码 ' + '

    ' + '
    ' 166 | } 167 | var grid = document.querySelector('.grid') 168 | grid.insertAdjacentHTML('afterbegin', htmlStr) 169 | } 170 | 171 | /** 172 | * 等待图片加载 173 | * @return {[type]} [description] 174 | */ 175 | function waitImgsLoad() { 176 | var imgs = document.querySelectorAll('.grid img') 177 | var totalImgs = imgs.length 178 | var count = 0 179 | //console.log(imgs) 180 | for (var i = 0; i < totalImgs; i++) { 181 | if (imgs[i].complete) { 182 | //console.log('complete'); 183 | count++ 184 | } else { 185 | imgs[i].onload = function() { 186 | // alert('onload') 187 | count++ 188 | //console.log('onload' + count) 189 | if (count == totalImgs) { 190 | //console.log('onload---bbbbbbbb') 191 | initGrid() 192 | } 193 | } 194 | } 195 | } 196 | if (count == totalImgs) { 197 | //console.log('---bbbbbbbb') 198 | initGrid() 199 | } 200 | } 201 | 202 | /** 203 | * 初始化栅格布局 204 | * @return {[type]} [description] 205 | */ 206 | function initGrid() { 207 | var msnry = new Masonry('.grid', { 208 | // options 209 | itemSelector: '.grid-item', 210 | columnWidth: 250, 211 | isFitWidth: true, 212 | gutter: 20 213 | }) 214 | } 215 | -------------------------------------------------------------------------------- /_site/js/waterfall.js: -------------------------------------------------------------------------------- 1 | /* jshint asi:true */ 2 | //先等图片都加载完成 3 | //再执行布局函数 4 | 5 | /** 6 | * 执行主函数 7 | * @param {[type]} function( [description] 8 | * @return {[type]} [description] 9 | */ 10 | (function() { 11 | 12 | /** 13 | * 内容JSON 14 | */ 15 | var demoContent = [ 16 | { 17 | demo_link: 'https://codepen.io/haoyang/pen/jrvrQq', 18 | img_link: 'https://ooo.0o0.ooo/2016/11/24/5836d81f48cd2.png', 19 | code_link: 'https://codepen.io/haoyang/pen/jrvrQq', 20 | title: 'Fisher-Yates 洗牌算法动画', 21 | core_tech: 'JavaScript', 22 | description: 'Fisher-Yates 洗牌算法动画。算法详情见 这里。' 23 | }, { 24 | demo_link: 'http://gaohaoyang.github.io/test/headerTransition/', 25 | img_link: 'https://ooo.0o0.ooo/2016/06/20/5768c1597d1fe.png', 26 | code_link: 'https://github.com/Gaohaoyang/test/tree/master/headerTransition', 27 | title: 'Header Transition 渐变动画', 28 | core_tech: 'jQuery BootStrap CSS3', 29 | description: '花费不到半小时帮师兄做了一个简单的 CSS3 动画效果,当页面滚动到指定距离时,header 区的背景色由透明变为蓝色。仿照了网站 https://quorrajs.org/ 的 Header 区动画效果。' 30 | }, { 31 | demo_link: 'http://gaohaoyang.github.io/mask-fade-out/', 32 | img_link: 'http://7q5cdt.com1.z0.glb.clouddn.com/demo-fade-out.png', 33 | code_link: 'https://github.com/Gaohaoyang/mask-fade-out', 34 | title: '遮罩层按指定路径缩小消失', 35 | core_tech: 'jQuery CSS', 36 | description: '使用 animate 方法,做到兼容 IE8。曾在联想服务官网上线3个月。' 37 | }, { 38 | demo_link: 'http://gaohaoyang.github.io/ToDo-WebApp/', 39 | img_link: 'http://7q5cdt.com1.z0.glb.clouddn.com/blog-todoWebApp.png', 40 | code_link: 'https://github.com/Gaohaoyang/ToDo-WebApp', 41 | title: '百度前端学院 task0004 ToDo 应用(移动端)', 42 | core_tech: 'JavaScript LocalStorage requireJS Sass Gulp XSS', 43 | description: '在任务三中,做了一个 PC 端的 ToDo 应用。任务四是将它优化,以适应移动端设备。' 44 | }, { 45 | demo_link: 'http://gaohaoyang.github.io/baidu-ife-practice/task0003/', 46 | img_link: 'http://7q5cdt.com1.z0.glb.clouddn.com/demo-todo.png', 47 | code_link: 'https://github.com/Gaohaoyang/baidu-ife-practice/tree/master/task0003', 48 | title: '百度前端学院 task0003 ToDo 应用', 49 | core_tech: 'JavaScript LocalStorage', 50 | description: '任务三,ToDo 单页应用,主要使用了 LocalStorage 存储数据,使用 JSON 模拟了 3 张数据表。' 51 | }, { 52 | demo_link: 'http://gaohaoyang.github.io/ife/task/task0002/work/Gaohaoyang/task0002_5.html', 53 | img_link: 'http://7q5cdt.com1.z0.glb.clouddn.com/demo-drag.png', 54 | code_link: 'https://github.com/Gaohaoyang/ife/tree/master/task/task0002/work/Gaohaoyang', 55 | title: '拖拽交互', 56 | core_tech: 'JavaScript', 57 | description: '对鼠标事件应用,以及判断定位的方法等。' 58 | }, { 59 | demo_link: 'http://gaohaoyang.github.io/ife/task/task0002/work/Gaohaoyang/task0002_4.html', 60 | img_link: 'http://ww2.sinaimg.cn/large/7011d6cfjw1f3ba2krzs0j207005y0sv.jpg', 61 | code_link: 'https://github.com/Gaohaoyang/ife/tree/master/task/task0002/work/Gaohaoyang', 62 | title: '输入框即时提示', 63 | core_tech: 'JavaScript', 64 | description: '对input监听,使用正在表达式高亮匹配,实现输入联想效果。' 65 | }, { 66 | demo_link: 'http://gaohaoyang.github.io/ife/task/task0002/work/Gaohaoyang/task0002_3.html', 67 | img_link: 'http://ww2.sinaimg.cn/large/7011d6cfjw1f3ba04okoqj20eq093wh1.jpg', 68 | code_link: 'https://github.com/Gaohaoyang/ife/tree/master/task/task0002/work/Gaohaoyang', 69 | title: '轮播图', 70 | core_tech: 'JavaScript', 71 | description: '变速运动,运动终止条件的应用。' 72 | }, { 73 | demo_link: 'http://gaohaoyang.github.io/ife/task/task0002/work/Gaohaoyang/task0002_2.html', 74 | img_link: 'http://ww4.sinaimg.cn/large/7011d6cfjw1f3b9w6xpz5j20ae02pgm3.jpg', 75 | code_link: 'https://github.com/Gaohaoyang/ife/tree/master/task/task0002/work/Gaohaoyang', 76 | title: '倒计时', 77 | core_tech: 'JavaScript', 78 | description: 'setInterval(),Date 对象的学习和使用。' 79 | }, { 80 | demo_link: 'http://gaohaoyang.github.io/ife/task/task0002/work/Gaohaoyang/task0002_1.html', 81 | img_link: 'http://ww3.sinaimg.cn/large/7011d6cfjw1f3b9tmyuh2j20au0aaaar.jpg', 82 | code_link: 'https://github.com/Gaohaoyang/ife/tree/master/task/task0002/work/Gaohaoyang', 83 | title: '处理兴趣爱好列表', 84 | core_tech: 'JavaScript', 85 | description: '对JavaScript正则表达式和字符串的练习。' 86 | }, { 87 | demo_link: 'http://gaohaoyang.github.io/ife/task/task0002/work/Gaohaoyang/index.html', 88 | img_link: 'http://7q5cdt.com1.z0.glb.clouddn.com/demo-demo-index.png', 89 | code_link: 'https://github.com/Gaohaoyang/ife/tree/master/task/task0002/work/Gaohaoyang', 90 | title: '百度前端学院 task0002 展示主页', 91 | core_tech: 'HTML CSS', 92 | description: '任务二的展示主页,里面包含五个小 demo。还有一篇相关的日志。' 93 | }, { 94 | demo_link: 'http://gaohaoyang.github.io/ife/task/task0001/work/Gaohaoyang/index.html', 95 | img_link: 'http://7q5cdt.com1.z0.glb.clouddn.com/Demo-blog-ife.jpg', 96 | code_link: 'https://github.com/Gaohaoyang/ife/tree/master/task/task0001/work/Gaohaoyang', 97 | title: '百度前端学院 task0001 个人博客', 98 | core_tech: 'HTML CSS', 99 | description: '完成百度前端学院的任务。深刻的理解了BFC、浮动、inline-block间距,多列布局等技术。还有一篇相关的日志。' 100 | }, { 101 | demo_link: 'http://gaohaoyang.github.io/ghost-button-css3/', 102 | img_link: 'http://7q5cdt.com1.z0.glb.clouddn.com/DemoGhost-Button.png', 103 | code_link: 'https://github.com/Gaohaoyang/ghost-button-css3', 104 | title: 'Ghost Button 幽灵按钮', 105 | core_tech: 'CSS3', 106 | description: '使用 CSS3 中的旋转、缩放、过渡、动画等效果,制作出很酷的按钮效果。' 107 | }, { 108 | demo_link: 'http://gaohaoyang.github.io/shadow-demo-css3', 109 | img_link: 'http://7q5cdt.com1.z0.glb.clouddn.com/Demoshadow.png', 110 | code_link: 'https://github.com/Gaohaoyang/shadow-demo-css3', 111 | title: 'CSS3 阴影特效', 112 | core_tech: 'CSS3', 113 | description: 'CSS3 中的阴影、旋转等效果,制作出曲边阴影和翘边阴影。' 114 | }, { 115 | demo_link: 'http://gaohaoyang.github.io/learning-AngularJS/2-3-bookstore-add-sth-by-myself/', 116 | img_link: 'http://7q5cdt.com1.z0.glb.clouddn.com/DemoAngularJS.png', 117 | code_link: 'https://github.com/Gaohaoyang/learning-AngularJS/tree/master/2-3-bookstore-add-sth-by-myself', 118 | title: 'AngularJS 结合动画效果', 119 | core_tech: 'AngularJS CSS3', 120 | description: '使用 AngularJS 中的 ngAnimate 加 CSS3里面的一些旋转效果,做出页面切换的效果。' 121 | }, { 122 | demo_link: 'http://gaohaoyang.github.io/learning-AngularJS/2-4-UiRouterPractice', 123 | img_link: 'http://ww2.sinaimg.cn/large/7011d6cfjw1f3b8zumfqij20q40nh76x.jpg', 124 | code_link: 'https://github.com/Gaohaoyang/learning-AngularJS/tree/master/2-4-UiRouterPractice', 125 | title: 'AngularJS UI-router 练习', 126 | core_tech: 'AngularJS UI-router', 127 | description: 'UI-router 作为 AngularJS 中路由的扩充,实现了多级路由的效果。使得前端界面跳转更加方便。' 128 | }, { 129 | demo_link: 'http://gaohaoyang.github.io/test/bootstrap-zhihu/', 130 | img_link: 'http://7q5cdt.com1.z0.glb.clouddn.com/teach-girlfriend-html-CopyZhihu.jpg', 131 | code_link: 'https://github.com/Gaohaoyang/test/tree/master/bootstrap-zhihu', 132 | title: '仿知乎页面', 133 | core_tech: 'HTML BootStrap', 134 | description: '使用BootStrap仿照知乎做了一个静态页面。' 135 | } 136 | ]; 137 | 138 | contentInit(demoContent) //内容初始化 139 | waitImgsLoad() //等待图片加载,并执行布局初始化 140 | }()); 141 | 142 | /** 143 | * 内容初始化 144 | * @return {[type]} [description] 145 | */ 146 | function contentInit(content) { 147 | // var htmlArr = []; 148 | // for (var i = 0; i < content.length; i++) { 149 | // htmlArr.push('
    ') 150 | // htmlArr.push('') 151 | // htmlArr.push('') 152 | // htmlArr.push('') 153 | // htmlArr.push('

    ') 154 | // htmlArr.push(''+content[i].title+'') 155 | // htmlArr.push('

    ') 156 | // htmlArr.push('

    主要技术:'+content[i].core_tech+'

    ') 157 | // htmlArr.push('

    '+content[i].description) 158 | // htmlArr.push('源代码 ') 159 | // htmlArr.push('

    ') 160 | // htmlArr.push('
    ') 161 | // } 162 | // var htmlStr = htmlArr.join('') 163 | var htmlStr = '' 164 | for (var i = 0; i < content.length; i++) { 165 | htmlStr += '
    ' + ' ' + ' ' + ' ' + '

    ' + ' ' + content[i].title + '' + '

    ' + '

    主要技术:' + content[i].core_tech + '

    ' + '

    ' + content[i].description + ' 源代码 ' + '

    ' + '
    ' 166 | } 167 | var grid = document.querySelector('.grid') 168 | grid.insertAdjacentHTML('afterbegin', htmlStr) 169 | } 170 | 171 | /** 172 | * 等待图片加载 173 | * @return {[type]} [description] 174 | */ 175 | function waitImgsLoad() { 176 | var imgs = document.querySelectorAll('.grid img') 177 | var totalImgs = imgs.length 178 | var count = 0 179 | //console.log(imgs) 180 | for (var i = 0; i < totalImgs; i++) { 181 | if (imgs[i].complete) { 182 | //console.log('complete'); 183 | count++ 184 | } else { 185 | imgs[i].onload = function() { 186 | // alert('onload') 187 | count++ 188 | //console.log('onload' + count) 189 | if (count == totalImgs) { 190 | //console.log('onload---bbbbbbbb') 191 | initGrid() 192 | } 193 | } 194 | } 195 | } 196 | if (count == totalImgs) { 197 | //console.log('---bbbbbbbb') 198 | initGrid() 199 | } 200 | } 201 | 202 | /** 203 | * 初始化栅格布局 204 | * @return {[type]} [description] 205 | */ 206 | function initGrid() { 207 | var msnry = new Masonry('.grid', { 208 | // options 209 | itemSelector: '.grid-item', 210 | columnWidth: 250, 211 | isFitWidth: true, 212 | gutter: 20 213 | }) 214 | } 215 | -------------------------------------------------------------------------------- /_site/tag/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Tags 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 |
    45 |
    46 | FDU-gradhotpot 47 | Anything related in graduate program admission! 48 | 49 | 130 |
    131 |
    132 | 133 | 134 |
    135 |
    136 |

    Tags

    137 |
    138 | 139 | 140 | 141 |
      142 | 143 |

      建站

      144 | 145 |
    • 146 | 149 | Hotpot分享者指南 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | Hotpot建站 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 |
    • 180 | 181 |
    • 182 | 185 | Hotpot卷首语 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | Hotpot建站 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 |
    • 216 | 217 | 218 |
    219 | 220 |
    221 | 222 |
    223 |
    224 | 225 | 226 |
    227 |
    228 | Content 229 |
    230 | 240 |
    241 | 242 | 243 |
    244 |
    245 |
    246 | 247 | 248 | 249 |
    250 | 251 | 252 |
    253 | 254 |

    255 | 本站记录每一届复旦申请MS/PhD的资料! 256 |

    257 |

    258 | Contact us at: 259 | 260 | 261 |

    262 |
    263 | 264 | 298 | 299 | 300 | 310 | 311 | 312 | 313 | 314 |

    315 | 本站总访问量次 | 本页面总阅读量次 316 | 317 |

    318 |

    319 | 320 | Site powered by Jekyll & Github Pages. 321 | 322 | 323 | Theme designed by HyG & Fleeming. 324 | 325 |

    326 |
    327 |
    328 | 329 | 330 | 331 | 332 |
    333 | 334 | 335 | 336 |
    337 | 338 | 339 | 340 | 347 | 348 | 349 | 350 | 351 | --------------------------------------------------------------------------------