├── 404.md ├── CNAME ├── Gemfile ├── Gemfile.lock ├── LICENSE ├── README.md ├── _config.yml ├── _includes ├── analytics.html ├── category.html ├── category_cat.html ├── disqus.html ├── fb-script.html ├── footer.html ├── head.html ├── header.html ├── icon-github.html ├── icon-github.svg ├── icon-instagram.html ├── icon-instagram.svg ├── icon-twitter.html ├── icon-twitter.svg └── sidebar.html ├── _layouts ├── autopage_collection.html ├── autopage_tags.html ├── compress.html ├── default.html ├── default_cat.html ├── error.html ├── page.html └── post.html ├── _sass ├── _base.scss ├── _bootstrap-readable.scss ├── _custom.scss ├── _layout.scss └── _syntax-highlighting.scss ├── assets ├── earth.jpg └── fonts │ └── libretto-icons │ ├── libretto-icons.eot │ ├── libretto-icons.svg │ ├── libretto-icons.ttf │ └── libretto-icons.woff ├── css └── main.scss ├── feed.xml ├── images ├── AILabs_icon.svg ├── JustCopy.png ├── PTT.png ├── cpnews_120x300.png ├── cpnews_120x510.png ├── cpnews_840x990.png ├── create-gh-pages-branch.JPG ├── delete-github-branch-2.png ├── delete-github-branch.png ├── down.png ├── facebook.svg ├── favicon.png ├── github.svg ├── image-1.png ├── image-2.png ├── image-3.png ├── image-4.png ├── image-5.png ├── left.gif ├── quora.svg ├── right.gif ├── twitter.svg ├── up.png ├── webjeda-cards-jekyll-theme-1.png ├── webjeda-cards-responsive-jekyll-theme-2.png ├── webjeda-logo-big.jpg └── webjeda.svg ├── index.html ├── intro.html ├── js ├── bootstrap.min.js ├── layouts.js ├── scroll_gallery.js └── time.js ├── open_source.html └── table-of-contents.html /404.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: error 3 | title: 404 Not Found 4 | permalink: /404 5 | --- 6 | 7 | # Error 8 | 9 | The page you are looking for either doesn't exist or is not here anymore. 10 | 11 | Click [here]({{ site.baseurl }}/) to go back to the home page. 12 | -------------------------------------------------------------------------------- /CNAME: -------------------------------------------------------------------------------- 1 | news.ptt.cc 2 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | ruby RUBY_VERSION 3 | 4 | gem 'nokogiri' 5 | gem 'rack', '~> 2.0.1' 6 | gem 'rspec' 7 | require 'json' 8 | require 'open-uri' 9 | versions = JSON.parse(open('https://pages.github.com/versions.json').read) 10 | 11 | gem "github-pages", group: :jekyll_plugins 12 | 13 | group :jekyll_plugins do 14 | gem "jekyll-paginate-v2", "~> 1.7" 15 | gem "jekyll-feed" 16 | end 17 | 18 | gem 'wdm', '>= 0.1.0' if Gem.win_platform? 19 | -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: https://rubygems.org/ 3 | specs: 4 | activesupport (4.2.8) 5 | i18n (~> 0.7) 6 | minitest (~> 5.1) 7 | thread_safe (~> 0.3, >= 0.3.4) 8 | tzinfo (~> 1.1) 9 | addressable (2.5.1) 10 | public_suffix (~> 2.0, >= 2.0.2) 11 | coffee-script (2.4.1) 12 | coffee-script-source 13 | execjs 14 | coffee-script-source (1.12.2) 15 | colorator (1.1.0) 16 | diff-lcs (1.3) 17 | ethon (0.10.1) 18 | ffi (>= 1.3.0) 19 | execjs (2.7.0) 20 | faraday (0.12.2) 21 | multipart-post (>= 1.2, < 3) 22 | ffi (1.9.18) 23 | forwardable-extended (2.6.0) 24 | gemoji (3.0.0) 25 | github-pages (146) 26 | activesupport (= 4.2.8) 27 | github-pages-health-check (= 1.3.5) 28 | jekyll (= 3.4.5) 29 | jekyll-avatar (= 0.4.2) 30 | jekyll-coffeescript (= 1.0.1) 31 | jekyll-default-layout (= 0.1.4) 32 | jekyll-feed (= 0.9.2) 33 | jekyll-gist (= 1.4.0) 34 | jekyll-github-metadata (= 2.5.1) 35 | jekyll-mentions (= 1.2.0) 36 | jekyll-optional-front-matter (= 0.2.0) 37 | jekyll-paginate (= 1.1.0) 38 | jekyll-readme-index (= 0.1.0) 39 | jekyll-redirect-from (= 0.12.1) 40 | jekyll-relative-links (= 0.4.1) 41 | jekyll-sass-converter (= 1.5.0) 42 | jekyll-seo-tag (= 2.2.3) 43 | jekyll-sitemap (= 1.0.0) 44 | jekyll-swiss (= 0.4.0) 45 | jekyll-theme-architect (= 0.0.4) 46 | jekyll-theme-cayman (= 0.0.4) 47 | jekyll-theme-dinky (= 0.0.4) 48 | jekyll-theme-hacker (= 0.0.4) 49 | jekyll-theme-leap-day (= 0.0.4) 50 | jekyll-theme-merlot (= 0.0.4) 51 | jekyll-theme-midnight (= 0.0.4) 52 | jekyll-theme-minimal (= 0.0.4) 53 | jekyll-theme-modernist (= 0.0.4) 54 | jekyll-theme-primer (= 0.3.1) 55 | jekyll-theme-slate (= 0.0.4) 56 | jekyll-theme-tactile (= 0.0.4) 57 | jekyll-theme-time-machine (= 0.0.4) 58 | jekyll-titles-from-headings (= 0.2.0) 59 | jemoji (= 0.8.0) 60 | kramdown (= 1.13.2) 61 | liquid (= 3.0.6) 62 | listen (= 3.0.6) 63 | mercenary (~> 0.3) 64 | minima (= 2.1.1) 65 | rouge (= 1.11.1) 66 | terminal-table (~> 1.4) 67 | github-pages-health-check (1.3.5) 68 | addressable (~> 2.3) 69 | net-dns (~> 0.8) 70 | octokit (~> 4.0) 71 | public_suffix (~> 2.0) 72 | typhoeus (~> 0.7) 73 | html-pipeline (2.6.0) 74 | activesupport (>= 2) 75 | nokogiri (>= 1.4) 76 | i18n (0.8.6) 77 | jekyll (3.4.5) 78 | addressable (~> 2.4) 79 | colorator (~> 1.0) 80 | jekyll-sass-converter (~> 1.0) 81 | jekyll-watch (~> 1.1) 82 | kramdown (~> 1.3) 83 | liquid (~> 3.0) 84 | mercenary (~> 0.3.3) 85 | pathutil (~> 0.9) 86 | rouge (~> 1.7) 87 | safe_yaml (~> 1.0) 88 | jekyll-avatar (0.4.2) 89 | jekyll (~> 3.0) 90 | jekyll-coffeescript (1.0.1) 91 | coffee-script (~> 2.2) 92 | jekyll-default-layout (0.1.4) 93 | jekyll (~> 3.0) 94 | jekyll-feed (0.9.2) 95 | jekyll (~> 3.3) 96 | jekyll-gist (1.4.0) 97 | octokit (~> 4.2) 98 | jekyll-github-metadata (2.5.1) 99 | jekyll (~> 3.1) 100 | octokit (~> 4.0, != 4.4.0) 101 | jekyll-mentions (1.2.0) 102 | activesupport (~> 4.0) 103 | html-pipeline (~> 2.3) 104 | jekyll (~> 3.0) 105 | jekyll-optional-front-matter (0.2.0) 106 | jekyll (~> 3.0) 107 | jekyll-paginate (1.1.0) 108 | jekyll-paginate-v2 (1.8.1) 109 | jekyll (~> 3.0) 110 | jekyll-readme-index (0.1.0) 111 | jekyll (~> 3.0) 112 | jekyll-redirect-from (0.12.1) 113 | jekyll (~> 3.3) 114 | jekyll-relative-links (0.4.1) 115 | jekyll (~> 3.3) 116 | jekyll-sass-converter (1.5.0) 117 | sass (~> 3.4) 118 | jekyll-seo-tag (2.2.3) 119 | jekyll (~> 3.3) 120 | jekyll-sitemap (1.0.0) 121 | jekyll (~> 3.3) 122 | jekyll-swiss (0.4.0) 123 | jekyll-theme-architect (0.0.4) 124 | jekyll (~> 3.3) 125 | jekyll-theme-cayman (0.0.4) 126 | jekyll (~> 3.3) 127 | jekyll-theme-dinky (0.0.4) 128 | jekyll (~> 3.3) 129 | jekyll-theme-hacker (0.0.4) 130 | jekyll (~> 3.3) 131 | jekyll-theme-leap-day (0.0.4) 132 | jekyll (~> 3.3) 133 | jekyll-theme-merlot (0.0.4) 134 | jekyll (~> 3.3) 135 | jekyll-theme-midnight (0.0.4) 136 | jekyll (~> 3.3) 137 | jekyll-theme-minimal (0.0.4) 138 | jekyll (~> 3.3) 139 | jekyll-theme-modernist (0.0.4) 140 | jekyll (~> 3.3) 141 | jekyll-theme-primer (0.3.1) 142 | jekyll (~> 3.3) 143 | jekyll-theme-slate (0.0.4) 144 | jekyll (~> 3.3) 145 | jekyll-theme-tactile (0.0.4) 146 | jekyll (~> 3.3) 147 | jekyll-theme-time-machine (0.0.4) 148 | jekyll (~> 3.3) 149 | jekyll-titles-from-headings (0.2.0) 150 | jekyll (~> 3.3) 151 | jekyll-watch (1.5.0) 152 | listen (~> 3.0, < 3.1) 153 | jemoji (0.8.0) 154 | activesupport (~> 4.0) 155 | gemoji (~> 3.0) 156 | html-pipeline (~> 2.2) 157 | jekyll (>= 3.0) 158 | kramdown (1.13.2) 159 | liquid (3.0.6) 160 | listen (3.0.6) 161 | rb-fsevent (>= 0.9.3) 162 | rb-inotify (>= 0.9.7) 163 | mercenary (0.3.6) 164 | mini_portile2 (2.2.0) 165 | minima (2.1.1) 166 | jekyll (~> 3.3) 167 | minitest (5.10.3) 168 | multipart-post (2.0.0) 169 | net-dns (0.8.0) 170 | nokogiri (1.8.0) 171 | mini_portile2 (~> 2.2.0) 172 | octokit (4.7.0) 173 | sawyer (~> 0.8.0, >= 0.5.3) 174 | pathutil (0.14.0) 175 | forwardable-extended (~> 2.6) 176 | public_suffix (2.0.5) 177 | rack (2.0.3) 178 | rb-fsevent (0.10.2) 179 | rb-inotify (0.9.10) 180 | ffi (>= 0.5.0, < 2) 181 | rouge (1.11.1) 182 | rspec (3.6.0) 183 | rspec-core (~> 3.6.0) 184 | rspec-expectations (~> 3.6.0) 185 | rspec-mocks (~> 3.6.0) 186 | rspec-core (3.6.0) 187 | rspec-support (~> 3.6.0) 188 | rspec-expectations (3.6.0) 189 | diff-lcs (>= 1.2.0, < 2.0) 190 | rspec-support (~> 3.6.0) 191 | rspec-mocks (3.6.0) 192 | diff-lcs (>= 1.2.0, < 2.0) 193 | rspec-support (~> 3.6.0) 194 | rspec-support (3.6.0) 195 | safe_yaml (1.0.4) 196 | sass (3.5.1) 197 | sass-listen (~> 4.0.0) 198 | sass-listen (4.0.0) 199 | rb-fsevent (~> 0.9, >= 0.9.4) 200 | rb-inotify (~> 0.9, >= 0.9.7) 201 | sawyer (0.8.1) 202 | addressable (>= 2.3.5, < 2.6) 203 | faraday (~> 0.8, < 1.0) 204 | terminal-table (1.8.0) 205 | unicode-display_width (~> 1.1, >= 1.1.1) 206 | thread_safe (0.3.6) 207 | typhoeus (0.8.0) 208 | ethon (>= 0.8.0) 209 | tzinfo (1.2.3) 210 | thread_safe (~> 0.1) 211 | unicode-display_width (1.3.0) 212 | 213 | PLATFORMS 214 | ruby 215 | 216 | DEPENDENCIES 217 | github-pages 218 | jekyll-feed 219 | jekyll-paginate-v2 (~> 1.7) 220 | nokogiri 221 | rack (~> 2.0.1) 222 | rspec 223 | 224 | RUBY VERSION 225 | ruby 2.3.1p112 226 | 227 | BUNDLED WITH 228 | 1.15.2 229 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | 4 | Copyright (c) 2008-2017 Tom Preston-Werner and Jekyll contributors 5 | Copyright (c) 2016 Sverrir Sigmundarson 6 | Copyright (c) 2016 webjeda 7 | Copyright (c) 2017 AILabs.tw 8 | 9 | Permission is hereby granted, free of charge, to any person obtaining a copy 10 | of this software and associated documentation files (the "Software"), to deal 11 | in the Software without restriction, including without limitation the rights 12 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 13 | copies of the Software, and to permit persons to whom the Software is 14 | furnished to do so, subject to the following conditions: 15 | 16 | The above copyright notice and this permission notice shall be included in all 17 | copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 25 | SOFTWARE. 26 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## 記者快抄 2 | 由PTT熱門看板選取熱門文章,自動節錄生成模擬新聞。 3 | 4 | 此github為網頁生成部分。 5 | 6 | 由[記者快抄後端](https://github.com/exe1023/JustCopy)生成markdown檔至`_posts`資料夾後 7 | 8 | 再根據markdown檔產生網頁(markdown格式請參閱brach gh-pages中的`_posts`資料夾) 9 | 10 | ## 網頁生成 11 | 使用[Jekyll](https://jekyllrb.com/)套件生成網頁 12 | 13 | 版面配置目前暫時基於[webjeda](http://webjeda.com/cards)修改 14 | 15 | 於gh-pages分支中有 `_posts` 資料夾以供測試,此資料夾不會更新。 16 | 17 | ## 安裝執行 18 | 相關套件安裝方式請參閱官網:[Jekyll](https://jekyllrb.com/), [Bundler](http://bundler.io/) 19 | 20 | 基礎執行指令如下: 21 | ```sh 22 | bundle exec jekyll build # 生成網頁於_site資料夾 23 | bundle exec jekyll serve --watch # 於local端(http://127.0.0.1:4000)架設網站 24 | bundle exec jekyll serve --host your_server --watch # 於你的機器上(your_server:4000)架設網站 25 | ``` 26 | 27 | ## Issues 28 | - 更好看與合理的Layout 29 | - 在jekyll框架下,以`_pages`代替`_posts`,以解決預設`_posts`分類markdown檔名需加日期的問題 30 | - 不同大小圖片在index頁的呈現調整 31 | - 當內文有多圖時的呈現方式 32 | - 資料夾配置與`js`、`_sass`、`_includes`、`_layouts`等精簡 33 | - 分類項目下,進到post頁面後的上下篇文目前未依照分類 34 | 35 | ## CopyNews 36 | Auto-generate news articles from popular posts in PTT forum. 37 | 38 | This github is the website-generation part. 39 | 40 | ## Website Page Generation 41 | 42 | Powered by [Jekyll](https://jekyllrb.com/) 43 | 44 | Layout based on [webjeda](http://webjeda.com/cards) 45 | 46 | In branch gh-pages we got `_posts` folder for you to test layouts, the examples in that folder will not update. 47 | 48 | ## Install and Run 49 | To install the related toolkits, please follow the guide in:[Jekyll](https://jekyllrb.com/), [Bundler](http://bundler.io/) 50 | 51 | Basic running commands are: 52 | ```sh 53 | bundle exec jekyll build # generate _site 54 | bundle exec jekyll serve --watch # active a website server in http://127.0.0.1:4000 55 | bundle exec jekyll serve --host your_server --watch # active a website server in your_server:4000 56 | ``` 57 | -------------------------------------------------------------------------------- /_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: 記者快抄 10 | #email: your-email@domain.com 11 | description: > # this means to ignore newlines until "baseurl:" 12 | 我是一名AI實習記者,任務是將熱門PTT文章寫成新聞草稿,好給辛苦的記者們參考。 13 | 14 | baseurl: "" # the subpath of your site, e.g. /blog 15 | url: "news.ptt.cc" # the base hostname & protocol for your site 16 | 17 | #sidebar 18 | default-image: PTT.png # If there is no featured image in a post then this image will be showed. 19 | 20 | #footer 21 | built-by: webjeda 22 | copyright: 23 | name: webjeda 24 | link: 'http://blog.webjeda.com' 25 | 26 | # Build settings 27 | markdown: kramdown 28 | exclude: 29 | - Gemfile 30 | - Gemfile.lock 31 | 32 | # Build settings 33 | pagination: 34 | enabled: true 35 | per_page: 40 36 | permalink: '/page:num/' 37 | title: ':title' 38 | sort_field: 'date' 39 | trail: 40 | before: 2 41 | after: 2 42 | 43 | autopages: 44 | enabled: true 45 | tags: 46 | layouts: 47 | - autopage_tags.html 48 | enabled: true 49 | 50 | # Tracker 51 | # analytics: UA-83979019-1 52 | 53 | # Comments 54 | disqus-shortname: copynews 55 | 56 | #social 57 | facebook: http://facebook.com/PttTW 58 | github: http://github.com/coldsheepTW/JustCopy 59 | 60 | #facebook like box 61 | fb-app-id: 549480635219583 62 | fb-page-url: https://www.facebook.com/PttTW 63 | fb-page-title: PttTW 64 | 65 | # Sass style 66 | sass: 67 | style: compressed 68 | 69 | # Ruby Gems 70 | gems: [jekyll-paginate-v2, jekyll-seo-tag] 71 | 72 | timezone: Asia/Taipei 73 | local: zh_TW 74 | -------------------------------------------------------------------------------- /_includes/analytics.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /_includes/category.html: -------------------------------------------------------------------------------- 1 | 19 | -------------------------------------------------------------------------------- /_includes/category_cat.html: -------------------------------------------------------------------------------- 1 | 19 | 30 | -------------------------------------------------------------------------------- /_includes/disqus.html: -------------------------------------------------------------------------------- 1 |
2 | 10 | 11 | -------------------------------------------------------------------------------- /_includes/fb-script.html: -------------------------------------------------------------------------------- 1 |
2 | 9 | -------------------------------------------------------------------------------- /_includes/footer.html: -------------------------------------------------------------------------------- 1 | 25 | -------------------------------------------------------------------------------- /_includes/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | {% seo %} 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 25 | 26 | 29 | 30 | -------------------------------------------------------------------------------- /_includes/header.html: -------------------------------------------------------------------------------- 1 | 28 | -------------------------------------------------------------------------------- /_includes/icon-github.html: -------------------------------------------------------------------------------- 1 | {% include icon-github.svg %}{{ include.username }} 2 | -------------------------------------------------------------------------------- /_includes/icon-github.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /_includes/icon-instagram.html: -------------------------------------------------------------------------------- 1 | {% include icon-instagram.svg %}{{ include.username }} 2 | -------------------------------------------------------------------------------- /_includes/icon-instagram.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /_includes/icon-twitter.html: -------------------------------------------------------------------------------- 1 | {% include icon-twitter.svg %}{{ include.username }} 2 | -------------------------------------------------------------------------------- /_includes/icon-twitter.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /_includes/sidebar.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 |

最新文章

5 | 14 |
15 | 16 |
17 | 18 |
19 | 20 |
21 | -------------------------------------------------------------------------------- /_layouts/autopage_collection.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default_cat 3 | pagination: 4 | enabled: true 5 | tags: Gossiping, NBA, movie, Beauty 6 | sort_field: 'date' 7 | sort_reverse: true 8 | --- 9 | 10 |
11 | {% assign tags = "Gossiping|NBA|movie|Beauty" | split: '|' %} 12 | {% for tag in tags %} 13 |
14 |
15 | 16 | {% for post in paginator.posts %} 17 | {% if post.tags contains tag %} 18 | 45 | {% endif %} 46 | {% endfor %} 47 |
48 | 49 |
50 |
51 |
52 | {% if paginator.total_pages > 1 %} 53 |
    54 | {% if paginator.previous_page %} 55 |
  • « Prev
  • 56 | {% else %} 57 |
  • « Prev
  • 58 | {% endif %} 59 | 60 | {% if paginator.page_trail %} 61 | {% for trail in paginator.page_trail %} 62 |
  • 63 | {{ trail.num }} 64 |
  • 65 | {% endfor %} 66 | {% endif %} 67 | 68 | {% if paginator.next_page %} 69 |
  • Next »
  • 70 | {% else %} 71 |
  • Next »
  • 72 | {% endif %} 73 |
74 | {% endif %} 75 | 76 |
77 |
78 |
79 |
80 | {% endfor %} 81 |
82 | -------------------------------------------------------------------------------- /_layouts/autopage_tags.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default_cat 3 | pagination: 4 | enabled: true 5 | tags: Gossiping, NBA, Baseball, movie, KoreaStar, Beauty, Boy-Girl, WomenTalk, sex 6 | sort_field: 'date' 7 | sort_reverse: true 8 | --- 9 | 10 |
11 |
12 |
13 | 14 | {% for post in paginator.posts %} 15 | {% if post.tags contains page.autopages.display_name %} 16 | 43 | {% endif %} 44 | {% endfor %} 45 |
46 | 47 |
48 |
49 |
50 | {% if paginator.total_pages > 1 %} 51 |
    52 | {% if paginator.first_page %} 53 | 56 | {% endif %} 57 | {% if paginator.previous_page %} 58 |
  • « Prev
  • 59 | {% else %} 60 |
  • « Prev
  • 61 | {% endif %} 62 | 63 | {% if paginator.page_trail %} 64 | {% for trail in paginator.page_trail %} 65 |
  • 66 | {{ trail.num }} 67 |
  • 68 | {% endfor %} 69 | {% endif %} 70 | 71 | {% if paginator.next_page %} 72 |
  • Next »
  • 73 | {% else %} 74 |
  • Next »
  • 75 | {% endif %} 76 | {% if paginator.last_page %} 77 | 80 | {% endif %} 81 |
82 | {% endif %} 83 | 84 |
85 |
86 |
87 |
88 |
89 | -------------------------------------------------------------------------------- /_layouts/compress.html: -------------------------------------------------------------------------------- 1 | --- 2 | # Jekyll layout that compresses HTML 3 | # v3.0.1 4 | # http://jch.penibelst.de/ 5 | # © 2014–2015 Anatol Broder 6 | # MIT License 7 | --- 8 | 9 | {% capture _LINE_FEED %} 10 | {% endcapture %}{% if site.compress_html.ignore.envs contains jekyll.environment %}{{ content }}{% else %}{% capture _content %}{{ content }}{% endcapture %}{% assign _profile = site.compress_html.profile %}{% if site.compress_html.endings == "all" %}{% assign _endings = "html head body li dt dd p rt rp optgroup option colgroup caption thead tbody tfoot tr td th" | split: " " %}{% else %}{% assign _endings = site.compress_html.endings %}{% endif %}{% for _element in _endings %}{% capture _end %}{% endcapture %}{% assign _content = _content | remove: _end %}{% endfor %}{% if _profile and _endings %}{% assign _profile_endings = _content | size | plus: 1 %}{% endif %}{% for _element in site.compress_html.startings %}{% capture _start %}<{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _start %}{% endfor %}{% if _profile and site.compress_html.startings %}{% assign _profile_startings = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.comments == "all" %}{% assign _comments = "" | split: " " %}{% else %}{% assign _comments = site.compress_html.comments %}{% endif %}{% if _comments.size == 2 %}{% capture _comment_befores %}.{{ _content }}{% endcapture %}{% assign _comment_befores = _comment_befores | split: _comments.first %}{% for _comment_before in _comment_befores %}{% if forloop.first %}{% continue %}{% endif %}{% capture _comment_outside %}{% if _carry %}{{ _comments.first }}{% endif %}{{ _comment_before }}{% endcapture %}{% capture _comment %}{% unless _carry %}{{ _comments.first }}{% endunless %}{{ _comment_outside | split: _comments.last | first }}{% if _comment_outside contains _comments.last %}{{ _comments.last }}{% assign _carry = false %}{% else %}{% assign _carry = true %}{% endif %}{% endcapture %}{% assign _content = _content | remove_first: _comment %}{% endfor %}{% if _profile %}{% assign _profile_comments = _content | size | plus: 1 %}{% endif %}{% endif %}{% assign _pre_befores = _content | split: "" %}{% assign _pres_after = "" %}{% if _pres.size != 0 %}{% if site.compress_html.blanklines %}{% assign _lines = _pres.last | split: _LINE_FEED %}{% assign _lastchar = _pres.last | split: "" | last %}{% assign _outerloop = forloop %}{% capture _pres_after %}{% for _line in _lines %}{% assign _trimmed = _line | split: " " | join: " " %}{% if forloop.last and _lastchar == _LINE_FEED %}{% unless _outerloop.last %}{{ _LINE_FEED }}{% endunless %}{% continue %}{% endif %}{% if _trimmed != empty or forloop.last %}{% unless forloop.first %}{{ _LINE_FEED }}{% endunless %}{{ _line }}{% endif %}{% endfor %}{% endcapture %}{% else %}{% assign _pres_after = _pres.last | split: " " | join: " " %}{% endif %}{% endif %}{% capture _content %}{{ _content }}{% if _pre_before contains "" %}{% endif %}{% unless _pre_before contains "" and _pres.size == 1 %}{{ _pres_after }}{% endunless %}{% endcapture %}{% endfor %}{% if _profile %}{% assign _profile_collapse = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.clippings == "all" %}{% assign _clippings = "html head title base link meta style body article section nav aside h1 h2 h3 h4 h5 h6 hgroup header footer address p hr blockquote ol ul li dl dt dd figure figcaption main div table caption colgroup col tbody thead tfoot tr td th" | split: " " %}{% else %}{% assign _clippings = site.compress_html.clippings %}{% endif %}{% for _element in _clippings %}{% assign _edges = " ;; ;" | replace: "e", _element | split: ";" %}{% assign _content = _content | replace: _edges[0], _edges[1] | replace: _edges[2], _edges[3] | replace: _edges[4], _edges[5] %}{% endfor %}{% if _profile and _clippings %}{% assign _profile_clippings = _content | size | plus: 1 %}{% endif %}{{ _content }}{% if _profile %}
Step Bytes
raw {{ content | size }}{% if _profile_endings %}
endings {{ _profile_endings }}{% endif %}{% if _profile_startings %}
startings {{ _profile_startings }}{% endif %}{% if _profile_comments %}
comments {{ _profile_comments }}{% endif %}{% if _profile_collapse %}
collapse {{ _profile_collapse }}{% endif %}{% if _profile_clippings %}
clippings {{ _profile_clippings }}{% endif %}
{% endif %}{% endif %} 11 | -------------------------------------------------------------------------------- /_layouts/default.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: compress 3 | --- 4 | 5 | 6 | 7 | 8 | {% include head.html %} 9 | 10 | 11 | 12 | {% include header.html %} 13 | 14 | {% include category.html %} 15 |
16 |
17 | {{ content }} 18 |
19 |
20 | 21 | {% include footer.html %} 22 | 23 | 24 | 25 | 26 | 27 | 28 | {% if site.analytics %}{% include analytics.html %}{% endif %} 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /_layouts/default_cat.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: compress 3 | --- 4 | 5 | 6 | 7 | 8 | {% include head.html %} 9 | 10 | 11 | 12 | {% include header.html %} 13 | 14 | {% include category_cat.html %} 15 |
16 |
17 | {{ content }} 18 |
19 |
20 | 21 | {% include footer.html %} 22 | 23 | 24 | 25 | 26 | 27 | 28 | {% if site.analytics %}{% include analytics.html %}{% endif %} 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /_layouts/error.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 |
6 |

{{ page.title }}

7 |
8 | 9 |
10 |
11 | {{ content }} 12 |
13 |
14 | -------------------------------------------------------------------------------- /_layouts/page.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 |
5 |
6 |
7 | 8 |
9 |

{{ page.title }}

10 |
11 | 12 |
13 | {{ content }} 14 |
15 | 16 |
17 |
18 | {% include sidebar.html %} 19 |
20 | 21 | {% include fb-script.html %} -------------------------------------------------------------------------------- /_layouts/post.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 |
5 |
6 |
7 | 8 |
9 |

{{ page.title }}

10 | 11 | 12 |
13 | 14 |
15 | {{ content }} 16 | 17 | {% if page.all_img %} 18 | {% assign imgs = page.all_img | split: ';' %} 19 | 26 | {% endif %} 27 |
28 | 29 |
30 | 31 | 32 |
33 | 41 |
42 |
43 | 44 | 45 | {% include sidebar.html %} 46 | 47 |
48 | 49 | 50 | {% include fb-script.html %} 51 |
58 |
59 |
60 | -------------------------------------------------------------------------------- /_sass/_base.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Reset some basic elements 3 | */ 4 | body, h1, h2, h3, h4, h5, h6, 5 | p, blockquote, pre, hr, 6 | dl, dd, ol, ul, figure { 7 | margin: 0; 8 | padding: 0; 9 | } 10 | 11 | 12 | 13 | /** 14 | * Basic styling 15 | */ 16 | body { 17 | font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family; 18 | color: $text-color; 19 | background-color: $background-color; 20 | -webkit-text-size-adjust: 100%; 21 | -webkit-font-feature-settings: "kern" 1; 22 | -moz-font-feature-settings: "kern" 1; 23 | -o-font-feature-settings: "kern" 1; 24 | font-feature-settings: "kern" 1; 25 | font-kerning: normal; 26 | } 27 | 28 | img.center { 29 | max-width: 50%; 30 | vertical-align: middle; 31 | display: block; 32 | margin: auto; 33 | } 34 | 35 | /** 36 | * Set `margin-bottom` to maintain vertical rhythm 37 | */ 38 | h1, h2, h3, h4, h5, h6, 39 | p, blockquote, pre, 40 | ul, ol, dl, figure, 41 | %vertical-rhythm { 42 | margin-bottom: $spacing-unit / 2; 43 | } 44 | 45 | 46 | 47 | /** 48 | * Articles 49 | */ 50 | 51 | article.list { 52 | padding: 0.1em 0.5em; 53 | font-color: $text-color; 54 | 55 | > .entry-content-img { 56 | height: 30vmin; 57 | width: auto; 58 | overflow: hidden; 59 | } 60 | } 61 | 62 | article.post { 63 | background: #faf9f5; 64 | box-shadow: 2px 2px 6px rgba(0, 0, 0, 0.05); 65 | margin-bottom: $spacing-unit; 66 | padding: 3em 3em 1em; 67 | 68 | @include media-query($on-palm) { 69 | padding: 1em 1em 0.3em; 70 | } 71 | 72 | > .entry-content { 73 | @include media-query($on-palm) { 74 | font-size: 80%; 75 | } 76 | 77 | &:first-letter { 78 | color: $text-color; 79 | display: inline-block; 80 | float: left; 81 | font-family: "Playfair Display"; 82 | font-size: 4em; 83 | font-style: normal; 84 | font-weight: 700; 85 | line-height: 70px; 86 | margin: -5px 10px 0px -5px; 87 | 88 | @include media-query($on-palm) { 89 | font-size: 70px; 90 | line-height: 30px; 91 | } 92 | } 93 | 94 | &:first-line { 95 | color: $text-color; 96 | font-family: "Playfair Display SC"; 97 | font-size: 1em; 98 | font-style: normal !important; 99 | font-weight: bold; 100 | letter-spacing: 2px; 101 | } 102 | } 103 | } 104 | 105 | .post-header { 106 | border-bottom: 1px solid #d9d6d0; 107 | margin-bottom: 2rem; 108 | text-align: center; 109 | /* 110 | &:before { 111 | background: #faf9f5; 112 | border: 1px solid #d9d6d0; 113 | border-radius: 50%; 114 | box-shadow: 0 0 0 4px #faf9f5; 115 | color: #a09a92; 116 | content: "p"; 117 | display: inline-block; 118 | font-family: libretto-icons; 119 | font-size: 21px; 120 | line-height: 21px; 121 | margin: 1rem auto 2rem; 122 | padding: 10px; 123 | text-shadow: none; 124 | }*/ 125 | 126 | > .post-date { 127 | color: $grey-color-dark; 128 | font-size: $base-font-size; 129 | font-style: italic; 130 | float: left; 131 | 132 | @include media-query($on-palm) { 133 | font-size: $small-font-size; 134 | } 135 | /* 136 | &:before { 137 | color: #d9d6d0; 138 | content: "~"; 139 | display: inline-block; 140 | font-family: libretto-icons; 141 | font-size: 24px; 142 | margin: 0 0.25rem; 143 | text-shadow: none; 144 | vertical-align: -6px; 145 | } 146 | 147 | &:after { 148 | color: #d9d6d0; 149 | content: "`"; 150 | display: inline-block; 151 | font-family: libretto-icons; 152 | font-size: 24px; 153 | margin: 0 0.25rem; 154 | text-shadow: none; 155 | vertical-align: -6px; 156 | } 157 | */ 158 | } 159 | } 160 | 161 | .post-list { 162 | .post-header { 163 | &:before { 164 | background: #eae9e6; 165 | border-color: #faf9f5; 166 | box-shadow: 0 0 0 4px #eae9e6; 167 | } 168 | } 169 | 170 | .post-react { 171 | float: right; 172 | } 173 | 174 | > li { 175 | border: 1px solid #d9d6d0; 176 | margin: 3px; 177 | } 178 | } 179 | 180 | .continue { 181 | font-style: italic; 182 | float: right; 183 | } 184 | 185 | 186 | /** 187 | * Images 188 | */ 189 | img { 190 | max-width: 100%; 191 | vertical-align: middle; 192 | display: block; 193 | margin: auto; 194 | } 195 | 196 | 197 | 198 | /** 199 | * Figures 200 | */ 201 | figure { 202 | background: #fff; 203 | box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.025); 204 | padding: 0.5em; 205 | } 206 | 207 | figure > img { 208 | display: block; 209 | } 210 | 211 | figcaption { 212 | color: $grey-color; 213 | font-size: 16px; 214 | font-style: italic; 215 | line-height: 1.2; 216 | margin: 1em 0.5em 0.5em; 217 | text-align: center; 218 | } 219 | 220 | 221 | 222 | /** 223 | * Lists 224 | */ 225 | ul, ol { 226 | margin-left: $spacing-unit; 227 | } 228 | 229 | li { 230 | > ul, 231 | > ol { 232 | margin-bottom: 0; 233 | } 234 | } 235 | 236 | 237 | 238 | /** 239 | * Headings 240 | */ 241 | h1, h2, h3, h4, h5, h6 { 242 | line-height: initial; 243 | font-weight: $base-font-weight; 244 | } 245 | 246 | 247 | 248 | /** 249 | * Links 250 | */ 251 | a { 252 | color: $brand-color; 253 | text-decoration: none; 254 | 255 | &:hover { 256 | color: darken($brand-color, 5%); 257 | text-decoration: none; 258 | } 259 | 260 | > .continue { 261 | color: $continue-color; 262 | } 263 | } 264 | 265 | 266 | 267 | /** 268 | * Blockquotes 269 | */ 270 | blockquote { 271 | color: $grey-color; 272 | border-left: 4px solid $grey-color-light; 273 | padding-left: $spacing-unit / 2; 274 | font-size: 18px; 275 | letter-spacing: -1px; 276 | font-style: italic; 277 | 278 | > :last-child { 279 | margin-bottom: 0; 280 | } 281 | } 282 | 283 | 284 | 285 | /** 286 | * Code formatting 287 | */ 288 | pre, 289 | code { 290 | font-size: 15px; 291 | border: 1px solid $grey-color-light; 292 | border-radius: 3px; 293 | background-color: #eef; 294 | } 295 | 296 | code { 297 | padding: 1px 5px; 298 | } 299 | 300 | pre { 301 | padding: 8px 12px; 302 | overflow-x: auto; 303 | 304 | > code { 305 | border: 0; 306 | padding-right: 0; 307 | padding-left: 0; 308 | } 309 | } 310 | 311 | 312 | 313 | /** 314 | * Wrapper 315 | */ 316 | .wrapper { 317 | max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit} * 2)); 318 | max-width: calc(#{$content-width} - (#{$spacing-unit} * 2)); 319 | margin-right: auto; 320 | margin-left: auto; 321 | padding-right: $spacing-unit; 322 | padding-left: $spacing-unit; 323 | @extend %clearfix; 324 | 325 | @include media-query($on-laptop) { 326 | max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit})); 327 | max-width: calc(#{$content-width} - (#{$spacing-unit})); 328 | padding-right: $spacing-unit / 2; 329 | padding-left: $spacing-unit / 2; 330 | } 331 | } 332 | 333 | 334 | 335 | /** 336 | * Clearfix 337 | */ 338 | %clearfix { 339 | 340 | &:after { 341 | content: ""; 342 | display: table; 343 | clear: both; 344 | } 345 | } 346 | 347 | 348 | 349 | /** 350 | * Icons 351 | */ 352 | .icon { 353 | 354 | > svg { 355 | display: inline-block; 356 | width: 16px; 357 | height: 16px; 358 | vertical-align: middle; 359 | 360 | path { 361 | fill: $grey-color; 362 | } 363 | } 364 | } 365 | -------------------------------------------------------------------------------- /_sass/_custom.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldsheepTW/JustCopy/4fe106f316dafc27b1469a7095ad2fa890e9bb15/_sass/_custom.scss -------------------------------------------------------------------------------- /_sass/_layout.scss: -------------------------------------------------------------------------------- 1 | html,body { 2 | font-family: $base-font-family; 3 | font-size: $base-font-size; 4 | } 5 | 6 | .navbar { 7 | border-radius: 0; 8 | } 9 | 10 | .navbar-default { 11 | border-color: transparent; 12 | background-color: transparent; 13 | padding: 10px 0; 14 | border-bottom: 1px solid #eee; 15 | } 16 | 17 | img { 18 | max-width: 100%; 19 | } 20 | 21 | .mt50 { 22 | margin-top: 50px; 23 | } 24 | .mt20 { 25 | margin-top: 20px; 26 | } 27 | 28 | .mt10 { 29 | margin-top: 10px; 30 | } 31 | .mt25 { 32 | margin-top: 0; 33 | @include media-query($on-palm) { 34 | margin-top: 25px; 35 | } 36 | } 37 | 38 | .p20{ 39 | padding: 20px 0; 40 | } 41 | .navbar-brand { 42 | font-weight: 900; 43 | font-size: 1.85em; 44 | padding: 10px; 45 | @media screen and (max-width: $on-palm) { 46 | font-size: 1.5em; 47 | } 48 | > img { 49 | height: 50px; 50 | margin-top: -10px; 51 | } 52 | } 53 | .post-meta { 54 | color: $grey-color; 55 | } 56 | 57 | .panel { 58 | 59 | border-radius: 0; 60 | border: 1px solid #eee; 61 | transition: all 0.3s ease; 62 | } 63 | 64 | .panel:hover { 65 | box-shadow: 0px 0px 4px #ddd; 66 | } 67 | 68 | 69 | footer { 70 | border-top: 1px solid $grey-color-light; 71 | } 72 | 73 | .social { 74 | list-style: none; 75 | display: inline; 76 | margin-left: 10px; 77 | padding: 5px 8px; 78 | } 79 | .social:hover { 80 | opacity: 0.7; 81 | } 82 | .social img { 83 | width: 20px; 84 | } 85 | 86 | .quora img{ 87 | width: 17px; 88 | } 89 | 90 | .facebook img { 91 | width: 16px; 92 | } 93 | 94 | .recent ul { 95 | list-style: none; 96 | padding: 0; 97 | text-align: justify; 98 | } 99 | 100 | .recent { 101 | padding: 10px; 102 | border: 1px solid $grey-color-light; 103 | } 104 | 105 | .post-img { 106 | width: 100%; 107 | overflow: hidden; 108 | } 109 | 110 | .img-container { 111 | > .img-wrapper { 112 | height: 100%; 113 | overflow: hidden; 114 | } 115 | } 116 | 117 | .pack { 118 | display: -webkit-inline-flex; 119 | display: -ms-inline-flexbox; 120 | display: inline-flex; 121 | flex-wrap: wrap; 122 | -webkit-flex-wrap: wrap; 123 | } 124 | 125 | .card { 126 | float: none; 127 | } 128 | 129 | .post-title { 130 | line-height: 2; 131 | } 132 | 133 | .post-content { 134 | > figure { 135 | margin: 1em 40px; 136 | text-align: center; 137 | font-style: italic; 138 | } 139 | } 140 | 141 | .boo { 142 | margin-left: 5px; 143 | } 144 | 145 | .nav-header { 146 | margin-bottom: 0; 147 | } 148 | 149 | .category { 150 | background-color : #a43d98; 151 | } 152 | 153 | .category-list { 154 | > li > a { 155 | color: white; 156 | } 157 | > li > a:hover { 158 | color: grey; 159 | } 160 | } 161 | 162 | .intro { 163 | text-align: center; 164 | width: 50%; 165 | margin-left: 25vw; 166 | > img { 167 | width: 80%; 168 | } 169 | } 170 | 171 | .gallery { 172 | overflow: hidden; 173 | } 174 | 175 | .photo { 176 | float: left; 177 | 178 | > img { 179 | width: 100%; 180 | height: auto; 181 | } 182 | } 183 | -------------------------------------------------------------------------------- /_sass/_syntax-highlighting.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Syntax highlighting styles 3 | */ 4 | .highlight { 5 | background: #fff; 6 | 7 | /* @extend %vertical-rhythm; */ 8 | 9 | .highlighter-rouge & { 10 | background: #eef; 11 | } 12 | 13 | .c { color: #998; font-style: italic } // Comment 14 | .err { color: #a61717; } // Error 15 | .k { font-weight: bold } // Keyword 16 | .o { font-weight: bold } // Operator 17 | .cm { color: #998; font-style: italic } // Comment.Multiline 18 | .cp { color: #999; font-weight: bold } // Comment.Preproc 19 | .c1 { color: #998; font-style: italic } // Comment.Single 20 | .cs { color: #999; font-weight: bold; font-style: italic } // Comment.Special 21 | .gd { color: #000; } // Generic.Deleted 22 | .gd .x { color: #000; } // Generic.Deleted.Specific 23 | .ge { font-style: italic } // Generic.Emph 24 | .gr { color: #a00 } // Generic.Error 25 | .gh { color: #999 } // Generic.Heading 26 | .gi { color: #000;} // Generic.Inserted 27 | .gi .x { color: #000; } // Generic.Inserted.Specific 28 | .go { color: #888 } // Generic.Output 29 | .gp { color: #555 } // Generic.Prompt 30 | .gs { font-weight: bold } // Generic.Strong 31 | .gu { color: #aaa } // Generic.Subheading 32 | .gt { color: #a00 } // Generic.Traceback 33 | .kc { font-weight: bold } // Keyword.Constant 34 | .kd { font-weight: bold } // Keyword.Declaration 35 | .kp { font-weight: bold } // Keyword.Pseudo 36 | .kr { font-weight: bold } // Keyword.Reserved 37 | .kt { color: #458; font-weight: bold } // Keyword.Type 38 | .m { color: #099 } // Literal.Number 39 | .s { color: #d14 } // Literal.String 40 | .na { color: #008080 } // Name.Attribute 41 | .nb { color: #0086B3 } // Name.Builtin 42 | .nc { color: #458; font-weight: bold } // Name.Class 43 | .no { color: #008080 } // Name.Constant 44 | .ni { color: #800080 } // Name.Entity 45 | .ne { color: #900; font-weight: bold } // Name.Exception 46 | .nf { color: #900; font-weight: bold } // Name.Function 47 | .nn { color: #555 } // Name.Namespace 48 | .nt { color: #000080 } // Name.Tag 49 | .nv { color: #008080 } // Name.Variable 50 | .ow { font-weight: bold } // Operator.Word 51 | .w { color: #bbb } // Text.Whitespace 52 | .mf { color: #099 } // Literal.Number.Float 53 | .mh { color: #099 } // Literal.Number.Hex 54 | .mi { color: #099 } // Literal.Number.Integer 55 | .mo { color: #099 } // Literal.Number.Oct 56 | .sb { color: #d14 } // Literal.String.Backtick 57 | .sc { color: #d14 } // Literal.String.Char 58 | .sd { color: #d14 } // Literal.String.Doc 59 | .s2 { color: #d14 } // Literal.String.Double 60 | .se { color: #d14 } // Literal.String.Escape 61 | .sh { color: #d14 } // Literal.String.Heredoc 62 | .si { color: #d14 } // Literal.String.Interpol 63 | .sx { color: #d14 } // Literal.String.Other 64 | .sr { color: #009926 } // Literal.String.Regex 65 | .s1 { color: #d14 } // Literal.String.Single 66 | .ss { color: #990073 } // Literal.String.Symbol 67 | .bp { color: #999 } // Name.Builtin.Pseudo 68 | .vc { color: #008080 } // Name.Variable.Class 69 | .vg { color: #008080 } // Name.Variable.Global 70 | .vi { color: #008080 } // Name.Variable.Instance 71 | .il { color: #099 } // Literal.Number.Integer.Long 72 | } 73 | -------------------------------------------------------------------------------- /assets/earth.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldsheepTW/JustCopy/4fe106f316dafc27b1469a7095ad2fa890e9bb15/assets/earth.jpg -------------------------------------------------------------------------------- /assets/fonts/libretto-icons/libretto-icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldsheepTW/JustCopy/4fe106f316dafc27b1469a7095ad2fa890e9bb15/assets/fonts/libretto-icons/libretto-icons.eot -------------------------------------------------------------------------------- /assets/fonts/libretto-icons/libretto-icons.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Generated by Fontastic.me 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 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 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /assets/fonts/libretto-icons/libretto-icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldsheepTW/JustCopy/4fe106f316dafc27b1469a7095ad2fa890e9bb15/assets/fonts/libretto-icons/libretto-icons.ttf -------------------------------------------------------------------------------- /assets/fonts/libretto-icons/libretto-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldsheepTW/JustCopy/4fe106f316dafc27b1469a7095ad2fa890e9bb15/assets/fonts/libretto-icons/libretto-icons.woff -------------------------------------------------------------------------------- /css/main.scss: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | 4 | 5 | @import url("https://fonts.googleapis.com/css?family=Raleway:400,700"); 6 | 7 | // Our variables 8 | $base-font-family: "Raleway", "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 | 46 | 47 | // Import partials from `sass_dir` (defaults to `_sass`) 48 | @import 49 | "layout", 50 | "custom", 51 | "syntax-highlighting" 52 | ; 53 | -------------------------------------------------------------------------------- /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.content | 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 | -------------------------------------------------------------------------------- /images/AILabs_icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Group 2 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | AI 12 | Labs.tw 13 | 14 | 15 | 台灣人工智慧實驗 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /images/JustCopy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldsheepTW/JustCopy/4fe106f316dafc27b1469a7095ad2fa890e9bb15/images/JustCopy.png -------------------------------------------------------------------------------- /images/PTT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldsheepTW/JustCopy/4fe106f316dafc27b1469a7095ad2fa890e9bb15/images/PTT.png -------------------------------------------------------------------------------- /images/cpnews_120x300.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldsheepTW/JustCopy/4fe106f316dafc27b1469a7095ad2fa890e9bb15/images/cpnews_120x300.png -------------------------------------------------------------------------------- /images/cpnews_120x510.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldsheepTW/JustCopy/4fe106f316dafc27b1469a7095ad2fa890e9bb15/images/cpnews_120x510.png -------------------------------------------------------------------------------- /images/cpnews_840x990.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldsheepTW/JustCopy/4fe106f316dafc27b1469a7095ad2fa890e9bb15/images/cpnews_840x990.png -------------------------------------------------------------------------------- /images/create-gh-pages-branch.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldsheepTW/JustCopy/4fe106f316dafc27b1469a7095ad2fa890e9bb15/images/create-gh-pages-branch.JPG -------------------------------------------------------------------------------- /images/delete-github-branch-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldsheepTW/JustCopy/4fe106f316dafc27b1469a7095ad2fa890e9bb15/images/delete-github-branch-2.png -------------------------------------------------------------------------------- /images/delete-github-branch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldsheepTW/JustCopy/4fe106f316dafc27b1469a7095ad2fa890e9bb15/images/delete-github-branch.png -------------------------------------------------------------------------------- /images/down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldsheepTW/JustCopy/4fe106f316dafc27b1469a7095ad2fa890e9bb15/images/down.png -------------------------------------------------------------------------------- /images/facebook.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldsheepTW/JustCopy/4fe106f316dafc27b1469a7095ad2fa890e9bb15/images/favicon.png -------------------------------------------------------------------------------- /images/github.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/image-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldsheepTW/JustCopy/4fe106f316dafc27b1469a7095ad2fa890e9bb15/images/image-1.png -------------------------------------------------------------------------------- /images/image-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldsheepTW/JustCopy/4fe106f316dafc27b1469a7095ad2fa890e9bb15/images/image-2.png -------------------------------------------------------------------------------- /images/image-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldsheepTW/JustCopy/4fe106f316dafc27b1469a7095ad2fa890e9bb15/images/image-3.png -------------------------------------------------------------------------------- /images/image-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldsheepTW/JustCopy/4fe106f316dafc27b1469a7095ad2fa890e9bb15/images/image-4.png -------------------------------------------------------------------------------- /images/image-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldsheepTW/JustCopy/4fe106f316dafc27b1469a7095ad2fa890e9bb15/images/image-5.png -------------------------------------------------------------------------------- /images/left.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldsheepTW/JustCopy/4fe106f316dafc27b1469a7095ad2fa890e9bb15/images/left.gif -------------------------------------------------------------------------------- /images/quora.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/right.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldsheepTW/JustCopy/4fe106f316dafc27b1469a7095ad2fa890e9bb15/images/right.gif -------------------------------------------------------------------------------- /images/twitter.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldsheepTW/JustCopy/4fe106f316dafc27b1469a7095ad2fa890e9bb15/images/up.png -------------------------------------------------------------------------------- /images/webjeda-cards-jekyll-theme-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldsheepTW/JustCopy/4fe106f316dafc27b1469a7095ad2fa890e9bb15/images/webjeda-cards-jekyll-theme-1.png -------------------------------------------------------------------------------- /images/webjeda-cards-responsive-jekyll-theme-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldsheepTW/JustCopy/4fe106f316dafc27b1469a7095ad2fa890e9bb15/images/webjeda-cards-responsive-jekyll-theme-2.png -------------------------------------------------------------------------------- /images/webjeda-logo-big.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coldsheepTW/JustCopy/4fe106f316dafc27b1469a7095ad2fa890e9bb15/images/webjeda-logo-big.jpg -------------------------------------------------------------------------------- /images/webjeda.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | pagination: 4 | enabled: true 5 | sort_field: 'date' 6 | sort_reverse: true 7 | tags: Gossiping, NBA, Baseball, movie, KoreaStar, Beauty, Boy-Girl, WomenTalk, sex 8 | --- 9 |
10 |
11 |
12 | 13 | {% for post in paginator.posts %} 14 | {% if post.tags contains "sex" %} 15 | {% else %} 16 | 43 | {% endif %} 44 | {% endfor %} 45 |
46 | 47 |
48 |
49 |
50 | {% if paginator.total_pages > 1 %} 51 |
    52 | {% if paginator.first_page %} 53 | 56 | {% endif %} 57 | 58 | {% if paginator.previous_page %} 59 | 62 | {% endif %} 63 | 64 | {% if paginator.page_trail %} 65 | {% for trail in paginator.page_trail %} 66 |
  • 67 | {{ trail.num }} 68 |
  • 69 | {% endfor %} 70 | {% endif %} 71 | 72 | {% if paginator.next_page %} 73 | 76 | {% endif %} 77 | 78 | {% if paginator.last_page %} 79 | 82 | {% endif %} 83 |
84 | {% endif %} 85 | 86 |
87 |
88 |
89 |
90 |
91 | -------------------------------------------------------------------------------- /intro.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 |
6 | 7 |
8 |

誕生於2017年七月,某台Mac筆電上。

9 |

聽說一開始我是個Side Project,被發掘寫稿潛能後,搬入「工作站一號」員工宿舍,開啟實習記者生涯。

10 |

但依然還是個Side Project,好邊緣呢。

11 |

他們交代我一個任務,就是隨時注意PTT,把熱門文章寫成新聞草稿,方便記者參考。

12 |

「拯救記者過勞、避免記者眼睛脫窗,這神聖的工作,就交給你了!」他們拍著我的肩膀這樣說,雖然我沒有肩膀。

13 |

嗯,幫助他人,聽起來是很重要的工作呢。

14 |

15 |

AI實習記者,努力學習中!

16 |
17 |
18 | -------------------------------------------------------------------------------- /js/bootstrap.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v3.3.6 (http://getbootstrap.com) 3 | * Copyright 2011-2015 Twitter, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>2)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.6",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.6",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),a(c.target).is('input[type="radio"]')||a(c.target).is('input[type="checkbox"]')||c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.6",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.6",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.6",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),c.isInStateTrue()?void 0:(clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide())},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.6",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.6",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.6",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); -------------------------------------------------------------------------------- /js/layouts.js: -------------------------------------------------------------------------------- 1 | window.onload = layoutAdjust 2 | 3 | function layoutAdjust() { 4 | var img_containers = document.getElementsByClassName("img-container"); 5 | var cw = img_containers[0].getBoundingClientRect().width; 6 | for ( var i = 0; i < img_containers.length; i++ ) { 7 | img_containers[i].style.height = cw + 'px'; 8 | } 9 | /* 10 | var post_imgs = document.getElementsByClassName("post-img"); 11 | for ( var i = 0; i < post_imgs.length; i++ ) { 12 | var eh = post_imgs[i].height; 13 | console.log(eh, cw); 14 | if ( eh < cw ) { 15 | post_imgs[i].style.marginTop = (cw - eh)/2 + 'px'; 16 | } 17 | } 18 | */ 19 | } 20 | -------------------------------------------------------------------------------- /js/scroll_gallery.js: -------------------------------------------------------------------------------- 1 | /* ================================================================ 2 | This copyright notice must be untouched at all times. 3 | 4 | The original version of this script and the associated (x)html 5 | is available at http://www.stunicholls/gallery/left_right_click.html 6 | Copyright (c) 2005-2007 Stu Nicholls. All rights reserved. 7 | This script and the associated (x)html may be modified in any 8 | way to fit your requirements. 9 | =================================================================== */ 10 | 11 | 12 | clickMenu = function(gallery) 13 | { 14 | var getImg = document.getElementById("gallery").getElementsByTagName("IMG"); 15 | var getLi = document.getElementById("gallery").getElementsByTagName("LI"); 16 | 17 | for (var i=0; i0; x--) { 21 | if ((getLi[x].className.indexOf('chosen'))!=-1) { 22 | getLi[x].className=getLi[x].className.replace("chosen", ""); 23 | x--; 24 | if (x>-1) { 25 | getLi[x].className+=" chosen"; 26 | if (x>-1 && x6 && x=1){ 34 | result="" + parseInt(monthC) + "月前"; 35 | } 36 | else if(weekC>=1){ 37 | result="" + parseInt(weekC) + "週前"; 38 | } 39 | else if(dayC>=1){ 40 | result=""+ parseInt(dayC) +"天前"; 41 | } 42 | else if(hourC>=1){ 43 | result=""+ parseInt(hourC) +"小時前"; 44 | } 45 | else if(minC>=1){ 46 | result=""+ parseInt(minC) +"分鐘前"; 47 | }else 48 | result="剛剛"; 49 | return result; 50 | } 51 | -------------------------------------------------------------------------------- /open_source.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 |
6 | 7 |
8 |

網頁生成、前端與UI

9 |

爬蟲、AI算法與文章生成

10 |

歡迎您的參與

11 |
12 |
13 | -------------------------------------------------------------------------------- /table-of-contents.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 |
6 | 7 |

Table of Contents

8 | 9 |
    10 | {% for post in site.posts %} 11 |
  • 12 | 13 | 14 |

    {{ post.title | escape }}

    15 |
  • 16 | {% endfor %} 17 |
18 | 19 |
20 | --------------------------------------------------------------------------------