commit b36e7f99572ed80088eff898bc465fa586231a6b
Author: Yufan Sheng
Date: Fri Jun 14 02:15:18 2024 +0800
Archive the old blog
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..8ec6866
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,9 @@
+.DS_Store
+Thumbs.db
+db.json
+*.log
+node_modules/
+public/
+.deploy*/
+package-lock.json
+yarn.lock
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..c6be99d
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,32 @@
+language: node_js
+
+node_js: stable
+
+env:
+ global:
+ - secure: "Mnfxu43BKbMVJn+PLdQkiT+g+pMUcMw4eRO0UaGftCFYRIvUcuoTmW9VkHTI/JJey09xNZ3IWlGwrPHz3dnDYQyWdy+TgzyzO2Us5ujZXLdHQJezLqNPNY2/mCeEpGedFsqtMfsfI2q6b3Ra0GepC1HrY3WgejoWoc4ZHEEGTvvJAWxpcFuK69Cif33xz/4uM3Ef36mfaHKwVp7WRzxpH5087XYqxF2WEdvHqOLniu2x4ETttJ8LwUcbJaow3m2AP2hzb81zVcIu5lfOPm3ayjOPp/v9pIrTuKtBeeRL8tDxxUOjMSZKZ0BAPo06hOnvYuoAFGXAHU40XM9stL+5t8TSnTxGsyrjlIJvzqQ+E1O9qqBwpfCB4nbxs8QdJZr0ssEdkuNrAyh1iYvnjelY1Jnhbkb7uQhbmdmhe2WyJuhhK6A7dsFiAKL+Et2NjhwYsr+HULvLlNEu/a50LyNUkLsZ+6+hB//fsifzAyo07gsN2kn3eiMnU9aZjmubPH1FsalyIgCiV4W0D4I7wmlK1y+XYlqqXFOAvkHlMuz+cT7o7QRRs13cO34CZ8FRofvcKJE6lfV/t/NfIzbnDInurIgW6eWO3md2lvafvMwc8qwvDcBlxjeauBJ00STpUYGRP2Ku5aLM4xAKlI/XO8Qtjbf7dWi+WHjGCa54CV99weU="
+
+cache:
+ apt: true
+ directories:
+ - node_modules
+
+branches:
+ only:
+ - master
+
+before_install:
+ - npm install hexo-cli -g
+
+install:
+ - npm install
+ - shell/util/set-up-ssh.sh --key "$encrypted_b9b50c5e0ab8_key" --iv "$encrypted_b9b50c5e0ab8_iv" --path-encrypted-key "id_rsa.enc"
+
+before_script:
+ - git config --global user.name ${GH_USER_NAME}
+ - git config --global user.email ${GH_USER_EMAIL}
+
+script:
+ - hexo algolia --chunk-size=5000 # The HEXO_ALGOLIA_INDEXING_KEY should be encrypted
+ - hexo generate
+ - hexo deploy
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..190c0c0
--- /dev/null
+++ b/README.md
@@ -0,0 +1,9 @@
+## Yufan.Me source code
+
+**This is a legacy project for in favor of the Astro based new blog.**
+
+This is the source code of [my weblog](https://yufan.me) based on [hexo](https://hexo.io).
+
+You can make your own static weblog like me.
+
+The theme was [spectre](themes/spectre), a forked theme from [hexo-theme-spectre](https://github.com/neoFelhz/hexo-theme-spectre).
diff --git a/_config.preview.yml b/_config.preview.yml
new file mode 100644
index 0000000..f067b1d
--- /dev/null
+++ b/_config.preview.yml
@@ -0,0 +1,144 @@
+# Hexo Configuration
+## Docs: https://hexo.io/docs/configuration.html
+## Source: https://github.com/hexojs/hexo/
+
+# Site
+title: 且听书吟
+subtitle: 我思 我说 我写
+description: 中国在住で、日本語勉強中なんです。
+author: 雨帆
+language: zh-Hans
+timezone:
+
+# URL
+## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/'
+url: https://yufan.me
+root: /
+permalink: :title/
+permalink_defaults:
+
+# Directory
+source_dir: source
+public_dir: public
+tag_dir: tags
+archive_dir: archives
+category_dir: categories
+code_dir:
+ - 'downloads/code'
+i18n_dir: :lang
+skip_render:
+ - README.md
+ - 404.html
+
+# Writing
+new_post_name: :year-:month-:day.md # File name of new posts
+default_layout: post
+titlecase: false # Transform title into titlecase
+external_link: true # Open external links in new tab
+filename_case: 1
+render_drafts: true
+post_asset_folder: false
+relative_link: false
+future: true
+highlight:
+ enable: false
+ line_number: false
+ auto_detect: false
+ tab_replace: false
+
+prism_plugin:
+ mode: 'preprocess'
+ theme: 'solarizedlight'
+ line_number: true
+
+# Category & Tag
+default_category: 文章
+category_map: categories
+tag_map: tags
+
+# Date / Time format
+## Hexo uses Moment.js to parse and display date
+## You can customize the date format as defined in
+## http://momentjs.com/docs/#/displaying/format/
+date_format: YYYY-MM-DD
+time_format: HH:mm:ss
+
+# Pagination
+## Set per_page to 0 to disable pagination
+per_page: 5
+pagination_dir: page
+
+# Extensions
+## Plugins: https://hexo.io/plugins/
+## Themes: https://hexo.io/themes/
+theme: spectre
+
+# Feed
+feed:
+ type: rss2
+ path: rss.xml
+ limit: 0
+ hub:
+ content: true
+
+# Search
+algolia:
+ applicationID: 'P7AW0XU2U9'
+ apiKey: 'f8c0b1b00e71ad9276f28a477a789759'
+ indexName: 'Hexo'
+
+# Number of index
+category_generator:
+ per_page: 15
+
+archive_generator:
+ per_page: 300
+ yearly: true
+ monthly: true
+ daily: false
+
+tag_generator:
+ per_page: 15
+
+# Minify the generated file
+hfc_useref:
+ enable: false
+
+hfc_html:
+ enable: false
+
+hfc_css:
+ enable: false
+
+hfc_js:
+ enable: false
+
+hfc_img:
+ enable: false
+
+hfc_favicons:
+ enable: false
+
+# No SEO Link
+nofollow:
+ enable: true
+# exclude:
+# - exclude1.com
+
+aplayer:
+ meting: false
+ cdn: https://cat.yufan.me/asserts/spectre/scripts/APlayer.min.js
+ style_cdn: https://cat.yufan.me/asserts/spectre/styles/APlayer.min.css
+
+# Deployment
+## Docs: https://hexo.io/docs/deployment.html
+deploy:
+ type: git
+ repo:
+ github: git@github.com:syhily/yufan.me.git,gh-pages
+
+# Sitemap
+sitemap:
+ path: sitemap.xml
+ tag: false
+ category: false
diff --git a/_config.yml b/_config.yml
new file mode 100644
index 0000000..a9e9b00
--- /dev/null
+++ b/_config.yml
@@ -0,0 +1,166 @@
+# Hexo Configuration
+## Docs: https://hexo.io/docs/configuration.html
+## Source: https://github.com/hexojs/hexo/
+
+# Site
+title: 且听书吟
+subtitle: 我思 我说 我写
+description: 中国在住で、日本語勉強中なんです。
+author: 雨帆
+language: zh-Hans
+timezone:
+
+# URL
+## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/'
+url: https://yufan.me
+root: /
+permalink: :title/
+permalink_defaults:
+
+# Directory
+source_dir: source
+public_dir: public
+tag_dir: tags
+archive_dir: archives
+category_dir: categories
+code_dir:
+ - 'downloads/code'
+i18n_dir: :lang
+skip_render:
+ - README.md
+ - 404.html
+
+# Writing
+new_post_name: :year-:month-:day.md # File name of new posts
+default_layout: post
+titlecase: false # Transform title into titlecase
+external_link: true # Open external links in new tab
+filename_case: 1
+render_drafts: false
+post_asset_folder: false
+relative_link: false
+future: true
+highlight:
+ enable: false
+ line_number: false
+ auto_detect: false
+ tab_replace: false
+
+prism_plugin:
+ mode: 'preprocess'
+ theme: 'solarizedlight'
+ line_number: true
+
+# Category & Tag
+default_category: 文章
+category_map: categories
+tag_map: tags
+
+# Date / Time format
+## Hexo uses Moment.js to parse and display date
+## You can customize the date format as defined in
+## http://momentjs.com/docs/#/displaying/format/
+date_format: YYYY-MM-DD
+time_format: HH:mm:ss
+
+# Pagination
+## Set per_page to 0 to disable pagination
+per_page: 5
+pagination_dir: page
+
+# Extensions
+## Plugins: https://hexo.io/plugins/
+## Themes: https://hexo.io/themes/
+theme: spectre
+
+# Feed
+feed:
+ type: rss2
+ path: rss.xml
+ limit: 0
+ hub:
+ content: true
+
+# Search
+algolia:
+ applicationID: 'P7AW0XU2U9'
+ apiKey: 'f8c0b1b00e71ad9276f28a477a789759'
+ indexName: 'Hexo'
+
+# Number of index
+category_generator:
+ per_page: 15
+
+archive_generator:
+ per_page: 300
+ yearly: true
+ monthly: true
+ daily: false
+
+tag_generator:
+ per_page: 15
+
+# Minify the generated file
+hfc_useref:
+ enable: true
+ concat: true
+ exclude:
+
+hfc_html:
+ enable: true
+
+hfc_css:
+ enable: true
+ exclude:
+ - '*.min.css'
+
+hfc_js:
+ enable: true
+ mangle: true
+ output:
+ compress:
+ exclude:
+ - '*.min.js'
+
+hfc_img:
+ enable: true
+ interlaced: false
+ multipass: false
+ optimizationLevel: 2
+ pngquant: false
+ progressive: false
+ webp: true
+ webpQuality: 75
+ gifslice: true
+ jpegtran: true
+ jpegrecompress: false
+ jpegrecompressQuality: 'medium'
+ optipng: true
+ svgo: true
+
+hfc_favicons:
+ enable: false
+
+# No SEO Link
+nofollow:
+ enable: true
+# exclude:
+# - exclude1.com
+
+aplayer:
+ meting: false
+ cdn: https://cat.yufan.me/asserts/spectre/scripts/APlayer.min.js
+ style_cdn: https://cat.yufan.me/asserts/spectre/styles/APlayer.min.css
+
+# Deployment
+## Docs: https://hexo.io/docs/deployment.html
+deploy:
+ type: git
+ repo:
+ github: git@github.com:syhily/yufan.me.git,gh-pages
+
+# Sitemap
+sitemap:
+ path: sitemap.xml
+ tag: false
+ category: false
diff --git a/id_rsa.enc b/id_rsa.enc
new file mode 100644
index 0000000..6cb04bd
Binary files /dev/null and b/id_rsa.enc differ
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..b2fc644
--- /dev/null
+++ b/package.json
@@ -0,0 +1,36 @@
+{
+ "name": "Yufan.Me",
+ "version": "1.0.0",
+ "private": true,
+ "hexo": {
+ "version": "3.7.1"
+ },
+ "scripts": {
+ "preview": "hexo clean; hexo server -o --config _config.preview.yml -l"
+ },
+ "dependencies": {
+ "hexo": "^3.8.0",
+ "hexo-admin": "^2.3.0",
+ "hexo-algolia": "^1.3.1",
+ "hexo-autonofollow": "^1.0.1",
+ "hexo-browsersync": "^0.3.0",
+ "hexo-deployer-git": "^0.3.1",
+ "hexo-filter-auto-spacing": "^0.2.1",
+ "hexo-filter-cleanup": "^1.1.0",
+ "hexo-generator-archive": "^0.1.5",
+ "hexo-generator-category": "^0.1.3",
+ "hexo-generator-feed": "^1.2.2",
+ "hexo-generator-index": "^0.2.0",
+ "hexo-generator-seo-friendly-sitemap": "0.0.22",
+ "hexo-generator-tag": "^0.2.0",
+ "hexo-helper-qrcode": "^1.0.2",
+ "hexo-prism-plugin": "^2.3.0",
+ "hexo-renderer-ejs": "^0.3.1",
+ "hexo-renderer-jade": "^0.4.1",
+ "hexo-renderer-marked": "^0.3.2",
+ "hexo-renderer-stylus": "^0.3.3",
+ "hexo-server": "^0.3.3",
+ "hexo-tag-aplayer": "^3.0.4",
+ "hexo-wordcount": "^6.0.1"
+ }
+}
diff --git a/scaffolds/draft.md b/scaffolds/draft.md
new file mode 100644
index 0000000..498e95b
--- /dev/null
+++ b/scaffolds/draft.md
@@ -0,0 +1,4 @@
+---
+title: {{ title }}
+tags:
+---
diff --git a/scaffolds/page.md b/scaffolds/page.md
new file mode 100644
index 0000000..f01ba3c
--- /dev/null
+++ b/scaffolds/page.md
@@ -0,0 +1,4 @@
+---
+title: {{ title }}
+date: {{ date }}
+---
diff --git a/scaffolds/post.md b/scaffolds/post.md
new file mode 100644
index 0000000..1f9b9a4
--- /dev/null
+++ b/scaffolds/post.md
@@ -0,0 +1,5 @@
+---
+title: {{ title }}
+date: {{ date }}
+tags:
+---
diff --git a/shell/commit-changes.sh b/shell/commit-changes.sh
new file mode 100755
index 0000000..58c4ff3
--- /dev/null
+++ b/shell/commit-changes.sh
@@ -0,0 +1,154 @@
+#!/bin/bash
+
+# Load helper functions
+source "$(
+
+ # The following is done because:
+ #
+ # * `readlink` on OS X outputs a relative path
+ # * `misc.sh` is not publicly exposed
+ #
+
+ cd "$(dirname "${BASH_SOURCE[0]}")";
+ cd "$(dirname "$(readlink "${BASH_SOURCE[0]}")")";
+ pwd
+
+)/util/misc.sh"
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+commit_and_push_changes() {
+
+ # Check if there are unstaged changes, and
+ # if there are, commit and push them upstream
+
+ if [ "$(git status --porcelain)" != "" ]; then
+ git config --global user.email "$GH_USER_EMAIL" \
+ && git config --global user.name "$GH_USER_NAME" \
+ && git checkout --quiet "$1" \
+ && git add -A \
+ && git commit --message "$2" \
+ && git push --quiet "$(get_repository_url)" "$1"
+ fi
+
+}
+
+print_help_message() {
+
+ cat <
+
+ Specifies the name of the branch on which the changes are made.
+
+
+ -c, --commands
+
+ Specifies the commands that will be executed before everything else.
+
+
+ -m, --commit-message
+
+ Specifies the commit message.
+
+EOF
+
+}
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+main() {
+
+ local branch=""
+ local commands=""
+ local commitMessage=""
+
+ # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+ while :; do
+ case $1 in
+
+ -h|--help)
+ print_help_message
+ exit
+ ;;
+
+ -b|--branch)
+ if [ -n "$2" ]; then
+ branch="$2"
+ shift 2
+ continue
+ else
+ print_error "ERROR: A non-empty \"-b/--branch \" argument needs to be specified"
+ exit 1
+ fi
+ ;;
+
+ -c|--commands)
+ if [ -n "$2" ]; then
+ commands="$2"
+ shift 2
+ continue
+ else
+ print_error "ERROR: A non-empty \"-c/--commands \" argument needs to be specified"
+ exit 1
+ fi
+ ;;
+
+ -m|--commit-message)
+ if [ -n "$2" ]; then
+ commitMessage="$2"
+ shift 2
+ continue
+
+ else
+ print_error "ERROR: A non-empty \"-m/--commit-message \" argument needs to be specified"
+ exit 1
+ fi
+ ;;
+
+ -?*) printf "WARNING: Unknown option (ignored): %s\n" "$1" >&2;;
+ *) break
+ esac
+
+ shift
+ done
+
+ # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+ # Check if all the required options are provided
+
+ (
+ check_if_arg_is_provided "$branch" "-b/--branch "
+ check_if_arg_is_provided "$commands" "-c/--commands "
+ check_if_arg_is_provided "$commitMessage" "-m/--commit-message "
+ ) \
+ || exit 1
+
+ # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+ # Only execute the following if the
+ # commit was made to the specified branch
+
+ if [ "$TRAVIS_BRANCH" == "$branch" ] && \
+ [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
+
+ execute "$commands" \
+ &> >(print_error_stream) \
+ 1> /dev/null
+ print_result $? "Update content" \
+ || exit 1
+
+ commit_and_push_changes "$branch" "$commitMessage" \
+ &> >(print_error_stream) \
+ 1> /dev/null
+ print_result $? "Commit and push changes (if necessary)"
+
+ fi
+
+}
+
+main "$@" \
+ &> >(remove_sensitive_information "$GH_USER_EMAIL" "$GH_USER_NAME")
diff --git a/shell/update-branch.sh b/shell/update-branch.sh
new file mode 100755
index 0000000..25a7f02
--- /dev/null
+++ b/shell/update-branch.sh
@@ -0,0 +1,240 @@
+#!/bin/bash
+
+# Load helper functions
+source "$(
+
+ # The following is done because:
+ #
+ # * `readlink` on OS X outputs a relative path
+ # * `misc.sh` is not publicly exposed
+ #
+
+ cd "$(dirname "${BASH_SOURCE[0]}")";
+ cd "$(dirname "$(readlink "${BASH_SOURCE[0]}")")";
+ pwd
+
+)/util/misc.sh"
+
+declare repository_url=""
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+commit_and_push_changes() {
+
+ # Commit and push changes upstream, and
+ # overwrite the content from the specified branch
+
+ git config --global user.email "$GH_USER_EMAIL" \
+ && git config --global user.name "$GH_USER_NAME" \
+ && git init \
+ && git add -A \
+ && git commit --message "$2" \
+ && (
+
+ # If the distribution branch is `master`,
+ # there is no need to switch as that is the default
+
+ if [ "$1" != "master" ]; then
+ git checkout --quiet -b "$1"
+ fi
+
+ ) \
+ && git push --quiet --force "$repository_url" "$1"
+
+}
+
+print_help_message() {
+
+ cat <
+
+ Specifies the commands that will be executed before everything else.
+
+
+ -d, --directory
+
+ Specifies the name of the distribution/build directory.
+
+
+ --distribution-branch
+
+ Specifies the name of the branch on which the content resulting from running the commands will be moved on.
+
+
+ -m, --commit-message
+
+ Specifies the commit message.
+
+
+ --source-branch
+
+ Specifies the name of the branch on which the commands are run on.
+
+EOF
+
+}
+
+remove_unneeded_files() {
+
+ local tmpDir=""
+
+ # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+ # If a directory was not specified, move to the next steps
+
+ [ -z "$1" ] \
+ && return 0
+
+ # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+ # If something other than a directory was specified, print an error
+
+ if [ ! -d "$1" ]; then
+ print_error "\"$1\" is not a directory"
+ return 1
+ fi
+
+ # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+ # Otherwise, remove the unneeded files and move the content
+ # from within the specified directory in the root of the project
+
+ tmpDir="$(mktemp -u /tmp/XXXXX)" \
+ && cp -r "$1" "$tmpDir" \
+ && find . -delete \
+ && shopt -s dotglob \
+ && cp -r "$tmpDir"/* . \
+ && shopt -u dotglob
+
+}
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+main() {
+
+ local commands=""
+ local commitMessage=""
+ local directory=""
+ local distributionBranch=""
+ local sourceBranch=""
+
+ # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+ while :; do
+ case $1 in
+
+ -h|--help)
+ print_help_message
+ exit
+ ;;
+
+ -c|--commands)
+ if [ "$2" ]; then
+ commands="$2"
+ shift 2
+ continue
+ else
+ print_error "ERROR: A non-empty \"-c/--commands \" argument needs to be specified"
+ exit 1
+ fi
+ ;;
+
+ -d|--directory)
+ if [ "$2" ]; then
+ directory="$2"
+ shift 2
+ continue
+ else
+ print_error "ERROR: A non-empty \"-d/--directory \" argument needs to be specified"
+ exit 1
+ fi
+ ;;
+
+ --distribution-branch)
+ if [ "$2" ]; then
+ distributionBranch="$2"
+ shift 2
+ continue
+ else
+ print_error "ERROR: A non-empty \"-db/--distribution-branch \" argument needs to be specified"
+ exit 1
+ fi
+ ;;
+
+ -m|--commit-message)
+ if [ "$2" ]; then
+ commitMessage="$2"
+ shift 2
+ continue
+ else
+ echo "ERROR: A non-empty \"-m/--commit-message \" argument needs to be specified" >&2
+ exit 1
+ fi
+ ;;
+
+ --source-branch)
+ if [ "$2" ]; then
+ sourceBranch="$2"
+ shift 2
+ continue
+ else
+ echo "ERROR: A non-empty \"-sb/--source-branch \" argument needs to be specified" >&2
+ exit 1
+ fi
+ ;;
+
+ -?*) printf "WARNING: Unknown option (ignored): %s\n" "$1" >&2;;
+ *) break
+ esac
+
+ shift
+ done
+
+ # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+ # Check if all the required options are provided
+
+ (
+ check_if_arg_is_provided "$commands" "-c/--commands "
+ check_if_arg_is_provided "$commitMessage" "-m/--commit-message "
+ check_if_arg_is_provided "$distributionBranch" "--distribution-branch "
+ check_if_arg_is_provided "$sourceBranch" "--source-branch "
+ ) \
+ || exit 1
+
+ # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+ # Only execute the following if the commit
+ # was made to the specified source branch
+
+ if [ "$TRAVIS_BRANCH" == "$sourceBranch" ] && \
+ [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
+
+ repository_url="$(get_repository_url)"
+
+ execute "$commands" \
+ &> >(print_error_stream) \
+ 1> /dev/null
+ print_result $? "Update content" \
+ || exit 1
+
+ remove_unneeded_files "$directory" \
+ &> >(print_error_stream) \
+ 1> /dev/null
+ print_result $? "Remove unneeded content" \
+ || exit 1
+
+ commit_and_push_changes "$distributionBranch" "$commitMessage" \
+ &> >(print_error_stream) \
+ 1> /dev/null
+ print_result $? "Commit and push changes"
+
+ fi
+
+}
+
+main "$@" \
+ &> >(remove_sensitive_information "$GH_USER_EMAIL" "$GH_USER_NAME")
diff --git a/shell/util/misc.sh b/shell/util/misc.sh
new file mode 100755
index 0000000..974c4a1
--- /dev/null
+++ b/shell/util/misc.sh
@@ -0,0 +1,79 @@
+#!/bin/bash
+
+declare -r LOG_PREFIX="[travis-scripts → $(basename "$0")]"
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+check_if_arg_is_provided() {
+
+ if [ -z "$1" ]; then
+ print_error "ERROR: option \"$2\" not given (see --help)."
+ return 1
+ fi
+
+}
+
+execute() {
+ eval "${1}"
+}
+
+get_repository_url() {
+ printf "%s" "git@github.com:$TRAVIS_REPO_SLUG.git"
+}
+
+print() {
+ printf "%b%s%b\n" \
+ "$1" \
+ "${2//$'\r'//}" \
+ "\e[0m"
+}
+
+print_error() {
+ print_in_red "$LOG_PREFIX [✖] $1"
+}
+
+print_error_stream() {
+ while read -r line; do
+ print_in_red "$LOG_PREFIX [✖] $line"
+ done
+}
+
+print_in_green() {
+ print "\e[0;32m" "$1"
+}
+
+print_in_red() {
+ print "\e[0;31m" "$1"
+}
+
+print_result() {
+
+ if [ "$1" -eq 0 ]; then
+ print_success "$2"
+ else
+ print_error "$2"
+ fi
+
+ return "$1"
+
+}
+
+print_success() {
+ print_in_green "$LOG_PREFIX [✔] $1"
+}
+
+remove_sensitive_information() {
+
+ declare -r CENSOR_TEXT="[secure]";
+
+ while IFS="" read -r line; do
+
+ for text in "$@"; do
+ line="${line//${text}/$CENSOR_TEXT}"
+ done
+
+ printf "%s\n" "$line"
+
+ done
+
+}
diff --git a/shell/util/set-up-ssh.sh b/shell/util/set-up-ssh.sh
new file mode 100755
index 0000000..fbd863a
--- /dev/null
+++ b/shell/util/set-up-ssh.sh
@@ -0,0 +1,164 @@
+#!/bin/bash
+
+# Load helper functions
+source "$(
+
+ # The following is done because:
+ #
+ # * `readlink` on OS X outputs a relative path
+ # * `misc.sh` is not publicly exposed
+ #
+
+ cd "$(dirname "${BASH_SOURCE[0]}")";
+ cd "$(dirname "$(readlink "${BASH_SOURCE[0]}")")";
+ pwd
+
+)/misc.sh"
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+add_ssh_configs() {
+ chmod 600 "$1" \
+ && printf "%s\n" \
+ "Host github.com" \
+ " IdentityFile $1" \
+ " LogLevel ERROR" \
+ "Host gitee.com" \
+ " IdentityFile $1" \
+ " LogLevel ERROR" \
+ "Host dns.yufan.me" \
+ " IdentityFile $1" \
+ " LogLevel ERROR" \
+ "Host git.coding.net" \
+ " IdentityFile $1" \
+ " LogLevel ERROR" >> ~/.ssh/config
+ ssh-keyscan git.coding.net >> ~/.ssh/known_hosts
+ ssh-keyscan gitee.com >> ~/.ssh/known_hosts
+ ssh-keyscan dns.yufan.me >> ~/.ssh/known_hosts
+}
+
+decrypt_private_ssh_key() {
+ openssl aes-256-cbc \
+ -K "$1" \
+ -iv "$2" \
+ -in "$(pwd)/$3" \
+ -out "$4" -d
+}
+
+print_help_message() {
+
+ cat <
+
+ Specifies the value of the key stored in the "encrypted_XXXXXXXXXXXX_key" envirorment variable.
+
+
+ -i, --iv
+
+ Specifies the value of the IV stored in the "encrypted_XXXXXXXXXXXX_iv" envirorment variable.
+
+
+ -p, --path-encrypted-key
+
+ Specifies the location of the encrypted private key file relative to where the script is executed from.
+
+EOF
+
+}
+
+# ----------------------------------------------------------------------
+
+main() {
+
+ local iv=""
+ local key=""
+ local pathEncryptedKey=""
+ local sshFileName=""
+
+ # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+ while :; do
+ case $1 in
+
+ -h|--help)
+ print_help_message
+ exit
+ ;;
+
+ -i|--iv)
+ if [ -n "$2" ]; then
+ iv="$2"
+ shift 2
+ continue
+
+ else
+ print_error "ERROR: A non-empty \"-i/--iv \" argument needs to be specified"
+ exit 1
+ fi
+ ;;
+
+ -k|--key)
+ if [ -n "$2" ]; then
+ key="$2"
+ shift 2
+ continue
+ else
+ print_error "ERROR: A non-empty \"-k/--key \" argument needs to be specified"
+ exit 1
+ fi
+ ;;
+
+ -p|--path-encrypted-key)
+ if [ -n "$2" ]; then
+ pathEncryptedKey="$2"
+ shift 2
+ continue
+ else
+ print_error "ERROR: A non-empty \"-p/--path-encrypted-key \" argument needs to be specified"
+ exit 1
+ fi
+ ;;
+
+ -?*) printf "WARNING: Unknown option (ignored): %s\n" "$1" >&2;;
+ *) break
+ esac
+
+ shift
+ done
+
+ # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+ # Check if all the required options are provided
+
+ (
+ check_if_arg_is_provided "$iv" "-i/--iv "
+ check_if_arg_is_provided "$key" "-k/--key "
+ check_if_arg_is_provided "$pathEncryptedKey" "-p/--path-encrypted-key "
+ ) \
+ || exit 1
+
+ # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+ sshFileName="$(mktemp -u "$HOME/.ssh/XXXXX")"
+
+ decrypt_private_ssh_key "$key" "$iv" "$pathEncryptedKey" "$sshFileName" \
+ &> >(print_error_stream) \
+ 1> /dev/null
+ print_result $? "Decrypt the file containing the private key" \
+ || exit 1
+
+ add_ssh_configs "$sshFileName" \
+ &> >(print_error_stream) \
+ 1> /dev/null
+ print_result $? "Add configs to enable SSH authentication" \
+ || exit 1
+
+ return 0
+
+}
+
+main "$@" \
+ &> >(remove_sensitive_information "$GH_USER_EMAIL" "$GH_USER_NAME")
diff --git a/source/404.html b/source/404.html
new file mode 100644
index 0000000..8d79a82
--- /dev/null
+++ b/source/404.html
@@ -0,0 +1,60 @@
+
+
+
+
+
+ 404 - Not Found | neoFelhz
+
+
+
+
+
+
+
+
+
+
404 Not Found
+
The requested resources is not available
+
您访问的页面不存在
+
+
+
+
+
+
+
+
+
+
diff --git a/source/CNAME b/source/CNAME
new file mode 100644
index 0000000..97a69be
--- /dev/null
+++ b/source/CNAME
@@ -0,0 +1 @@
+yufan.me
\ No newline at end of file
diff --git a/source/_data/gallery.yml b/source/_data/gallery.yml
new file mode 100644
index 0000000..a09c591
--- /dev/null
+++ b/source/_data/gallery.yml
@@ -0,0 +1,260 @@
+单翼飞翔:
+ full_link: https://i.loli.net/2017/09/24/59c72e8a0aa2c.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c72c93edab6.jpg
+ descr: "单翼地飞翔,需要双倍的坚强"
+
+Deemo & Girl:
+ full_link: https://i.loli.net/2017/09/24/59c72ed2a4473.png
+ thumb_link: https://i.loli.net/2017/09/24/59c72eab715b7.png
+ descr: "Deemo and girl"
+
+绿岛 & 深渊:
+ full_link: https://i.loli.net/2017/09/24/59c72efccd3d9.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c72f17074d3.jpg
+ descr:
+
+大雨让城市颠倒:
+ full_link: https://i.loli.net/2017/09/24/59c72f3f73daa.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c72f5784192.jpg
+ descr: 把图片倒过来试试?
+
+无题 I:
+ full_link: https://i.loli.net/2017/09/24/59c72f735f2f1.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c72f8f242d9.jpg
+ descr:
+
+過ぎ去る3月の中を歩く君へ:
+ full_link: https://i.loli.net/2017/09/24/59c72fb3666cc.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c72fc893870.jpg
+ descr:
+
+秒速五厘米:
+ full_link: https://i.loli.net/2017/09/24/59c72fe14f3a6.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c72ff529cbd.jpg
+ descr:
+
+火树银花雨:
+ full_link: https://i.loli.net/2017/09/24/59c7303977af2.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c7305bc9434.jpg
+ descr:
+
+静守时光,以待来年:
+ full_link: https://i.loli.net/2017/09/24/59c730794dbd6.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c73094e5f79.jpg
+ descr:
+
+Stop The Moment:
+ full_link: https://i.loli.net/2017/09/24/59c730c253b79.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c730ecb55ba.jpg
+ descr:
+
+无题 II:
+ full_link: https://i.loli.net/2017/09/24/59c7310d71446.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c7312518bc3.jpg
+ descr:
+
+无题 III:
+ full_link: https://i.loli.net/2017/09/24/59c73171cbf4f.png
+ thumb_link: https://i.loli.net/2017/09/24/59c7319309dc6.png
+ descr:
+
+空の門:
+ full_link: https://i.loli.net/2017/09/24/59c731dc1ccc0.png
+ thumb_link: https://i.loli.net/2017/09/24/59c731f767180.png
+ descr:
+
+星空中的极光:
+ full_link: https://i.loli.net/2017/09/24/59c7321dc8804.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c732388f1dc.jpg
+ descr:
+
+寒江雪钓:
+ full_link: https://i.loli.net/2017/09/24/59c73348d3546.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c7335bbd4de.jpg
+ descr:
+
+木有晓寂寂:
+ full_link: https://i.loli.net/2017/09/24/59c7338650bba.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c73daa1e4a8.jpg
+ descr:
+
+伏案天体方:
+ full_link: https://i.loli.net/2017/09/24/59c73f58190fd.png
+ thumb_link: https://i.loli.net/2017/09/24/59c73eeec4c95.png
+ descr:
+
+梦境:
+ full_link: https://i.loli.net/2017/09/24/59c73f8acb06a.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c73fa778e58.jpg
+ descr:
+
+届かない歌:
+ full_link: https://i.loli.net/2017/09/24/59c7411961ee7.png
+ thumb_link: https://i.loli.net/2017/09/24/59c7412e4b160.png
+ descr:
+
+大鱼海棠:
+ full_link: https://i.loli.net/2017/09/24/59c7420ce67bd.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c74222597a1.jpg
+ descr:
+
+云深不知处:
+ full_link: https://i.loli.net/2017/09/24/59c7429975807.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c742ea0a746.jpg
+ descr:
+
+Tower:
+ full_link: https://i.loli.net/2017/09/24/59c743144b82a.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c7432415c96.jpg
+ descr:
+
+萧色:
+ full_link: https://i.loli.net/2017/09/24/59c74377dc03e.png
+ thumb_link: https://i.loli.net/2017/09/24/59c74385cd011.png
+ descr:
+
+星空に。:
+ full_link: https://i.loli.net/2017/09/24/59c743c40d815.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c743ae60cbb.jpg
+ descr:
+
+小桥流水:
+ full_link: https://i.loli.net/2017/09/24/59c743e7c612e.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c743fe30dbb.jpg
+ descr:
+
+
+サイトー:
+ full_link: https://i.loli.net/2017/09/24/59c74415b106f.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c74415b106f.jpg
+ descr: pixiv.net/i/52224585
+
+なつ:
+ full_link: https://i.loli.net/2017/09/24/59c744321dc75.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c744321dc75.jpg
+ descr: pixiv.net/i/57033321
+
+悠里:
+ full_link: https://i.loli.net/2017/09/24/59c7455f2f44e.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c74570f2749.jpg
+ descr: pixiv.net/i/60212301
+
+ふいゆ:
+ full_link: https://i.loli.net/2017/09/24/59c745dbe32fa.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c745fde1c7d.jpg
+ descr: pixiv.net/i/41224751
+
+ASK:
+ full_link: https://i.loli.net/2017/09/24/59c7461bdf48e.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c74633842b9.jpg
+ descr: pixiv.net/i/43120580
+
+Domik:
+ full_link: https://i.loli.net/2017/09/24/59c7464e47a1d.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c74673e41bb.jpg
+ descr: pixiv.net/i/50967778
+
+NEKO:
+ full_link: https://i.loli.net/2017/09/24/59c7468a68815.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c7469c9823a.jpg
+ descr: pixiv.net/i/30413138
+
+はんにゃじ:
+ full_link: https://i.loli.net/2017/09/24/59c746f8a9546.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c747118107f.jpg)
+ descr: pixiv.net/i/30076658
+
+Spencer_sais:
+ full_link: https://i.loli.net/2017/09/24/59c7472718a03.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c7472718a03.jpg
+ descr: pixiv.net/i/51208812
+
+_LM7_:
+ full_link: https://i.loli.net/2017/09/24/59c7473f7574e.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c7475347283.jpg
+ descr: pixiv.net/i/51873173
+
+enj!:
+ full_link: https://i.loli.net/2017/09/24/59c74769520fe.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c7477b9e1d8.jpg
+ descr: pixiv.net/i/58149654
+
+CH/靑:
+ full_link: https://i.loli.net/2017/09/24/59c7479021aa9.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c747a01319b.jpg
+ descr: pixiv.net/i/60065851
+
+假青蛙:
+ full_link: https://i.loli.net/2017/09/24/59c747b770f7d.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c747cb7e00f.jpg
+ descr: pixiv.net/i/58643564
+
+D☆Lange:
+ full_link: https://i.loli.net/2017/09/24/59c747ec5e9c9.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c747fd15879.jpg
+ descr: pixiv.net/i/62127403
+
+よー清水:
+ full_link: https://i.loli.net/2017/09/24/59c7481cedbcf.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c7481cedbcf.jpg
+ descr: pixiv.net/i/58984559
+
+_LM7_2:
+ full_link: https://i.loli.net/2017/09/24/59c7483605c0e.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c7484ad5f1d.jpg
+ descr: pixiv.net/i/42899075
+
+のみや:
+ full_link: https://i.loli.net/2017/09/24/59c7485e985f3.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c7487039988.jpg
+ descr: pixiv.net/i/58466854
+
+ArseniXC:
+ full_link: https://i.loli.net/2017/09/24/59c7488649c62.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c7488649c62.jpg
+ descr: pixiv.net/i/59411146
+
+ArseniXC2:
+ full_link: https://i.loli.net/2017/09/24/59c748a02bff9.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c74960eb9ce.jpg
+ descr: pixiv.net/i/62462796
+
+A舎長:
+ full_link: https://i.loli.net/2017/09/24/59c74976e0247.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c749874ded6.jpg
+ descr: pixiv.net/i/50440239
+
+Gendo0032:
+ full_link: https://i.loli.net/2017/09/24/59c7499db07d2.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c749ae53191.jpg
+ descr: pixiv.net/i/51217652
+
+あさひ:
+ full_link: https://i.loli.net/2017/09/24/59c74a0fb5301.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c74a0fb5301.jpg
+ descr: pixiv.net/i/60141148
+
+ke-ta:
+ full_link: https://i.loli.net/2017/09/24/59c74a4a2c9df.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c74a4a2c9df.jpg
+ descr: pixiv.net/i/60566361
+
+hitsu:
+ full_link: https://i.loli.net/2017/09/24/59c74a5fb9835.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c74a5fb9835.jpg
+ descr: pixiv.net/i/56736520
+
+望月椎那:
+ full_link: https://i.loli.net/2017/09/24/59c74a925d313.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c74aa17618b.jpg
+ descr: pixiv.net/i/61995825
+
+瘋狐:
+ full_link: https://i.loli.net/2017/09/24/59c74abb9af26.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c74ace3729d.jpg
+ descr: pixiv.net/i/61164950
+
+gocoli:
+ full_link: https://i.loli.net/2017/09/24/59c74ae183b45.jpg
+ thumb_link: https://i.loli.net/2017/09/24/59c74af21dc6e.jpg
+ descr: pixiv.net/i/61511158
diff --git a/source/_data/links.yml b/source/_data/links.yml
new file mode 100644
index 0000000..8abbbe8
--- /dev/null
+++ b/source/_data/links.yml
@@ -0,0 +1,110 @@
+Apply for Links:
+ link: https://yufan.me/review-my-blog-story/
+ avatar: https://cat.yufan.me/asserts/spectre/images/plus.png
+ descr: "にゃ~来和 雨帆 签订契约吧~"
+
+Blessing Studio:
+ link: https://blessing.studio/
+ avatar: https://cat.yufan.me/asserts/spectre/images/links/blessing.jpg
+ descr: "半吊子全栈开发者的日常"
+
+咚门:
+ link: http://www.dearzd.com/
+ avatar: https://cat.yufan.me/asserts/spectre/images/links/dearzd.jpg
+ descr: "喜欢栀子花的男生"
+
+南浦月:
+ link: https://blog.nanpuyue.com/
+ avatar: https://cat.yufan.me/asserts/spectre/images/links/nanpuyue.png
+ descr: "望天外云卷云舒"
+
+ddddxxx:
+ link: https://ddddxxx.github.io/
+ avatar: https://cat.yufan.me/asserts/spectre/images/links/ddddxxx.jpg
+ descr: "So, what are you looking for?"
+
+RUO DOJO:
+ link: https://blog.jamespan.me/
+ avatar: https://cat.yufan.me/asserts/spectre/images/links/jamespan.jpg
+ descr: "自称潘小鶸,实为Java菊苣"
+
+ScienJus:
+ link: http://www.scienjus.com/
+ avatar: https://cat.yufan.me/asserts/spectre/images/links/scienjus.jpg
+ descr: "二次元同好,编程菊苣"
+
+行者自若:
+ link: https://alexinea.com/
+ avatar: https://cat.yufan.me/asserts/spectre/images/links/alexinea.png
+ descr: "曾经叫下午茶,CSharp菊苣"
+
+夜月七境:
+ link: https://saier.me/
+ avatar: https://cat.yufan.me/asserts/spectre/images/links/saier.jpg
+ descr: "日系绘图软件汉化劳模"
+
+80后向前冲:
+ link: http://www.80-go.com/
+ avatar: https://cat.yufan.me/asserts/spectre/images/links/80-go.png
+ descr: "松树哥哥"
+
+kn007:
+ link: https://kn007.net/
+ avatar: https://cat.yufan.me/asserts/spectre/images/links/kn007.jpg
+ descr: "多看认识的 Kindle 菊苣"
+
+Layer:
+ link: http://www.leyar.me/
+ avatar: https://cat.yufan.me/asserts/spectre/images/links/layer.jpg
+ descr: "当年的 Layer 姑娘"
+
+周良博客:
+ link: https://www.aips.me/
+ avatar: https://cat.yufan.me/asserts/spectre/images/links/aips.jpg
+ descr: "当年那个爱摄影的家伙"
+
+DIYGod:
+ link: https://diygod.me/
+ avatar: https://cat.yufan.me/asserts/spectre/images/links/DIYgod.jpg
+ descr: "前端菊苣,APlayer 作者"
+
+egoist:
+ link: https://egoist.moe/
+ avatar: https://cat.yufan.me/asserts/spectre/images/links/egoist.jpg
+ descr: "The king FE weel maker"
+
+宅谈:
+ link: https://otakism.com/
+ avatar: https://cat.yufan.me/asserts/spectre/images/links/otakism.png
+ descr: "当年超喜欢用他的主题"
+
+牧风:
+ link: https://mufeng.me/
+ avatar: https://cat.yufan.me/asserts/spectre/images/links/mufeng.png
+ descr: "大学才毕业时请教过诸多 JS 问题"
+
+西门:
+ link: http://ons.me/
+ avatar: https://cat.yufan.me/asserts/spectre/images/links/ons.jpg
+ descr: "我的博客导师、引路者"
+
+Minagi:
+ link: http://minagi.me/
+ avatar: https://cat.yufan.me/asserts/spectre/images/links/minagi.jpg
+ descr: "二次元同好"
+
+亲爱的罗伊:
+ link: https://dearroy.com/
+ avatar: https://cat.yufan.me/asserts/spectre/images/links/dearroy.jpg
+ descr: "曾经喜欢他的文字"
+
+贾顺名:
+ link: https://blog.jiasm.org/
+ avatar: https://cat.yufan.me/asserts/spectre/images/links/jiasm.jpg
+ descr: "前端大佬"
+
+霞幻之屋:
+ link: http://kasumi.club/
+ avatar: https://cat.yufan.me/asserts/spectre/images/links/xiahuan.jpg
+ descr: "一个喜欢画画的小姑娘"
+
diff --git a/source/_drafts/10月买房记.md b/source/_drafts/10月买房记.md
new file mode 100644
index 0000000..6658e80
--- /dev/null
+++ b/source/_drafts/10月买房记.md
@@ -0,0 +1,7 @@
+---
+title: 10月买房记
+permalink: 10yue-mai-fang-ji
+id: 160
+updated: '2016-11-20 22:58:16'
+tags:
+---
diff --git a/source/_drafts/2017-05-24.md b/source/_drafts/2017-05-24.md
new file mode 100644
index 0000000..cad4b03
--- /dev/null
+++ b/source/_drafts/2017-05-24.md
@@ -0,0 +1,16 @@
+---
+title: 红袖添香夜读书
+author: 雨帆
+tags:
+ - 童年记忆
+ - 读书
+categories: Article
+permalink: the-memory-of-the-childhook-reading
+date: 2017-05-24 10:55:52
+---
+
+因为即将搬新家,最近常和爸妈视屏聊天。视屏那头房子里的东西一天天地减少,地上渐渐堆满箱子。老妈在那絮絮叨叨地指挥着老爸打包这个,打包那个,还不忘回头冲着视屏里的我喊一句:“儿呀,你那套格林童话我给打包卖废纸啦。”
+
+“格林童话?我啥时有了这么一本书?哦,你说我10岁那年老爸买的那套是吧。”
+
+等想结婚了,我会娶一个有长发的女生,她会有一些小脾气,她会煮饭,还喜欢追星,喜欢看肥皂剧,苦恼的时候会皱起鼻子,她不需要绝世倾城的容貌,不需要魔鬼身材,冬季的夜晚会抱着我,还喜欢让我唱歌给她听,喜欢吃零食,她还喜欢给我做模特让我画,还会捏着我的脸问娶到她高兴吗
\ No newline at end of file
diff --git a/source/_drafts/2018-04-28.md b/source/_drafts/2018-04-28.md
new file mode 100644
index 0000000..5ea21e5
--- /dev/null
+++ b/source/_drafts/2018-04-28.md
@@ -0,0 +1,547 @@
+---
+title: 当我还是新手程序员时犯过的错误
+author: 雨帆
+tags:
+ - 编程
+categories: Study
+permalink: the-mistakes-i-made-as-a-beginner-programmer
+featureImage: https://cat.yufan.me/cats/2018050601.png
+date: 2018-04-28 14:34:25
+---
+
+> 认知这些问题,避免犯同样的错误。
+
+首先,写此文的并不想让编程新手对于可能犯的错误感到紧张。我只想让诸位知道有哪些错误,如何识别,以便在未来少走弯路。
+
+我曾经犯了下面说的全部错误,并从每个错误中总结学习。现在的我已经习惯规避这些错误,希望大家也能和我一样。
+
+
+
+下述错误排名不分前后。
+
+## 1、没有规划好就开始编码
+
+写出高质量的代码并不容易,它需要我们先仔细思考和研究,以期写出没有毛病的代码。
+
+一般我们按照如下方式编码:
+
+**思考** -> **研究** -> **计划** -> **编码** -> **校验** -> **修改**
+
+不巧的是,并没有标准规定该如何执行。你需要自行斟酌每个过程的投入量,来养成正确的编码习惯。
+
+我曾犯过的最大错误就是不加思索就开始写代码,如果是开发一些小型独立系统,这种方法可能还行。一旦要开发一个大型系统,这种方式会引入一些潜在的问题。
+
+对于不恰当的话语我们一般要三思当讲不当讲,编码亦然,编码的过程就像是和另一个自己交流。
+
+> 生气时,倒数10。如果还是很生气,倒数 100。
+> — Thomas Jefferson
+
+我把它改成程序员版本:
+
+> 审阅代码,想重构时请先倒数 10。如果改动的代码没有测试,倒数 100。
+> — Samer Buna
+
+大多数情况下,编程就是回顾旧代码,研究需要变更什么来适配当前的系统,然后设计少量、可测试的变更来实现新需求。最终的编码在整个开发周期里只占 10% 的时间。
+
+不要认为编程就是写代码,编程是逻辑创造力的成长过程。
+
+## 2、写代码前规划太多
+
+上手写代码前规划好方案很棒,但是这样的“好行为”做过了也不好,就像是水喝多了也会中毒。
+
+编程世界不存在完美的方案,你应该习惯去设计还不错的方案。事实上,再好的方案也会随需求改变,保持代码结构清晰易维护反而更有用。事无巨细地规划方案纯属浪费时间。
+
+我所讨论的规划是指小功能迭代开发,避免一次性规划好所有功能点。我们将其称之为**瀑布流**,它是一种线性系统开发计划,由不同的步骤组成,需要逐个完成。
+这种开发方式需要的前期规划简直海量,我并不想在这里讨论它。因为瀑布流并不适用于大部分软件系统,敏捷开发才是实现复杂系统的唯一方式。
+
+编程需要麻溜点,你可能会增加一些规划时没有考虑到的功能,也可能会因为一些一开始没想到的缘由移除一些功能。你必须敏捷地修复缺陷并实现变更。
+
+然而,还是要提前规划一些未来要做的功能。过多或者过少的规划都可会影响到你的代码质量,而代码质量是我们永远不能妥协的事情。
+
+## 3、理解代码质量的重要性
+
+如果只能顾忌代码的一个方面,那一定是 **可读性**。不清晰的代码就是垃圾,它甚至不能被重用。
+
+永远不要低估代码质量的重要性,把编码当作与“实现”连接方式,码农的首要工作是理清解决方案的实现。
+
+我最喜欢的编码格言是:
+
+> 编码时永远要假想,未来接手的人可能知晓你的住处并因为维护你的代码变成暴力狂。
+>
+> — John Woods
+
+**明智的建议,John!**
+
+即使是看似无关紧要的小事,也可能影响深远。例如,如果不注意代码的缩进和大小写,你可能会直接失去工作。
+
+这些细节比你的编码思考**更加重要**。
+
+另一个小细节就是过长的代码,任何一行超过80个字符的代码都会变得难以阅读。你可能会忍不住地将一些判断逻辑放于同一行来减少 if 的声明。请不要这么做,一行代码不要超过 80 个字符。
+
+许多简单的问题可以使用 **静态检查** 和 **格式化** 工具轻松修正。在 JavaScript 编程中,我们常结合 **ESLint** 和 **Prettier** 两个很棒的工具来纠正问题。试着使用它们,并坚持使用。
+
+下面列举一些和代码质量有关的问题:
+
+— 一个文件或者一个方法内代码行数过多。你需要将大的代码块分解为小的模块,并保证每一部分可以单独测试和管理。我个人认为超过 10 行的方法已经过场,但这不是一个强制的标准。
+
+— 使用负浮点数 (double negatives),请不要这么做。
+
+>
+
+— Using double negatives. Please do not not not do that.
+
+> _Using double negatives is just very not not wrong_
+
+— Using short, generic, or type-based variable names. Give your variables descriptive and non-ambiguous names.
+
+> _There are only two hard things in Computer Science: cache invalidation and naming things.
+>
+> — Phil Karlton_
+
+— Hard-coding primitive strings and numbers without descriptions. If you want to write logic that depends on a fixed primitive string or number value, put that value in a constant and give it a good name.
+
+const **answerToLifeTheUniverseAndEverything** = 42;
+
+— Using sloppy shortcuts and workarounds to avoid spending more time around simple problems. Do not dance around problems. Face your realities.
+
+— Thinking that longer code is better. Shorter code is better in most cases. Only write longer versions if they make the code more readable. For example, do not use clever one-liners and nested ternary expressions just to keep the code shorter, but also do not intentionally make the code longer when it does not need to be. Deleting unnecessary code is the best thing you can do in any program.
+
+> _Measuring programming progress by lines of code is like measuring aircraft building progress by weight.
+>
+> — Bill Gates_
+
+— The excessive use of conditional logic. Most of what you think needs conditional logic can be accomplished without it. Consider all the alternatives and pick exclusively based on readability. Do not optimize for performance unless you can measure. Related: avoid [**Yoda conditions**](https://en.wikipedia.org/wiki/Yoda_conditions)and assignments within conditionals.
+
+### **4) Picking the First Solution**
+
+When I was starting to program, I remember that when I got presented with a problem, I would find a solution and just immediately run with it. I would rush the implementation right away before thinking about the complexities and potential failures of my first identified solution.
+
+While the first solution might be tempting, the good solutions are usually discovered once you start questioning all the solutions that you find. If you cannot think of multiple solutions to a problem, that is probably a sign that you do not completely understand the problem.
+
+Your job as a professional programmer is not to find _a solution_ to the problem. It is to find the **simplest** solution to the problem. By “simple” I mean the solution has to work correctly and perform adequately but still be simple enough to read, understand, and maintain.
+
+> _There are two ways of constructing a software design. One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies._
+
+> _— C.A.R. Hoare_
+
+### **5) Not Quitting**
+
+Another mistake that I have made more often than I cared to admit is sticking with the first solution even after I identify that it might not be the simplest approach. This is probably psychologically related to the “**not-quitting**” mentality. This is a good mentality to have in most activities, but it should not apply to programming. In fact, when it comes to writing programs, the right mentality is **fail early and fail often**.
+
+The minute you begin doubting a solution, you should consider throwing it away and re-thinking the problem. This is true no matter how much you were invested in that solution. Source control tools like GIT can help you branch off and experiment with many different solutions. Leverage that.
+
+> _Do not be attached to code because of how much effort you put into it. Bad code needs to be discarded._
+
+### **6) Not Googling**
+
+There has been many instances where I wasted precious time trying to solve a problem when I should have just researched it first.
+
+Unless you are using a bleeding-edge technology, when you run into a problem, chances are someone else ran into the same problem and found a solution for it. Save yourself some time and **Google It First**.
+
+Sometimes, Googling will reveal that what you think is a problem is really not, and what you need to do is not fix it but rather embrace it. Do not assume that you know everything needed to pick a solution to a problem. Google will surprise you.
+
+However, be careful what you Google for. Another sign of a newbie is copying and using others code as is without understanding it. While that code might correctly solve your problem, you should never use any line of code that you do not fully understand.
+
+If you want to be a creative coder, never think that you know what you’re doing.
+
+> _The most dangerous thought that you can have as a creative person is to think that you know what you’re doing._
+
+> _— Bret Victor_
+
+### **7) Not Using Encapsulation**
+
+This point is not about using the object-oriented paradigm. The use of the encapsulation concept is always useful. Not using encapsulation often leads to harder-to-maintain systems.
+
+In an application, a feature should have only one place that handles it. That is usually the responsibility of a single object. That object should only reveal what is absolutely necessary for other objects of the application to use it. This is not about secrecy but rather about the concept of reducing dependencies between the different parts of an application. Sticking with these rules allows you to safely make changes in the internals of your classes, objects, and functions without worrying about breaking things on a bigger scale.
+
+Conceptual units of logic and state should get their own **classes**. By class, I mean a blueprint template. This can be an actual **Class** object or a **Function** object. You might also identify it as a **Module** or a **Package**.
+
+Within a class of logic, self-contained pieces of tasks should get their own methods. Methods should do one thing and do that thing well. Similar classes should use the same method names.
+
+As a beginner programmer, I did not always have the instinct to start a new class for a conceptual unit and I often failed to identify what can be self-contained. If you see a “`Util`” class that has been used as a dumping ground for many things that do not belong together, that is a sign of newbie code. If you make a simple change and then discover that the change has a cascading effect and you need to do many changes elsewhere, that is another sign of newbie code.
+
+Before adding a method to a class or adding more responsibilities to a method, think and question your instincts. You need time here. Do not skip or think that you will **refactor that later**. Just do it right the first time.
+
+The big idea here is that you want your code to have **High Cohesion** and **Low Coupling**, which is just a fancy term that means keep related code together (in a class) and reduce the dependencies between different classes.
+
+### **8) Planning for the Unknown**
+
+It is often tempting to think beyond the solution that you are writing. All sort of what-ifs will pop into your head with every line of code that you write. This is a good thing for testing edge cases, but it is just wrong to use as a driver for **potential needs**.
+
+You need to identify which of these two main categories your what-ifs belong to. Do not write code that you do not need today. Do not plan for the unknown future.
+
+Writing a feature because you think that you might need it in the future is simply wrong. Do not do it.
+
+Always write the minimum amount of code that you need today for the solution that you are implementing. Handle edge-cases, sure, but do not add _edge-features_.
+
+> _Growth for the sake of growth is the ideology of the cancer cell._
+
+> _— Edward Abbey_
+
+### **9) Not Using the Right Data Structures**
+
+When preparing for interviews, beginner programmers usually put too much focus on algorithms. It is good to identify good algorithms and use them when needed, but memorizing them will probably never attribute to your programming genius.
+
+However, memorizing the strengths and weaknesses of the various data structures that you can use in your language will certainly make you a better developer.
+
+Using the wrong data structure is a big and strongly-lit billboard sign that screams newbie code here.
+
+This article is not meant to teach you about data structures but let me mention a couple of quick examples:
+
+**— Using lists (arrays) instead of maps (objects) to manage records**
+
+The most common data structure mistake is probably the use of lists instead of maps to manage a list of records. Yes, to manage a LIST of records you should use a MAP.
+
+Note that I am talking about a list of records here where each record has an identifier that’s to be used to lookup that record. Using lists for scalar values is okay and often the better choice specially if the focus of the usage is “pushing” values to the list.
+
+In JavaScript, the most common list structure is an array and the most common map structure is an object (there is also a map structure in modern JavaScript).
+
+Using lists over maps for managing records is often wrong. While this point is really only true for large collections, I would say just stick with it all the time. The main reason this is important is because when looking up records using their identifiers, maps are a lot faster than lists.
+
+**— Not Using Stacks**
+
+When writing any code that requires some form of recursion, it is always tempting to use simple recursive functions. However, it is usually hard to optimize recursive code, especially in single-threaded environments.
+
+Optimizing recursive code depends on what recursive functions return. For example, optimizing a recursive function that returns two or more calls to itself is a lot harder than optimizing a recursive function that simply returns a single call to itself.
+
+What we tend to overlook as beginners is that there is an alternative to using recursive functions. You can just use a _Stack_ structure. Push function calls to a Stack yourself and start popping them out when you are ready to traverse the calls back.
+
+### **10) Making Existing Code Worse**
+
+Imagine that you were given a messy room like this:
+
+![](https://cdn-images-1.medium.com/max/1600/1*T6gU2PGfqll9h1zT6ApTUA.png)
+
+You were then asked to add an item to that room. Since it is a big mess already, you might be tempted to put that item anywhere. You can be done with your task in a few seconds.
+
+Do not do that with messy code. Do not make it worse! Always leave the code a bit cleaner than when you started to work with it.
+
+The right thing to do to the room above is to clean what is needed in order to place the new item in the right place. For example, if the item is a piece of clothing that needs to be placed in a closet, you need to clear a path to that closet. That is part of doing your task correctly.
+
+Here are a few wrong practices that usually make the code a bigger mess than what it was (not a complete list):
+
+* **Duplicating code**. If you copy/paste a code section to only change a line after that, you are simply duplicating code and making a bigger mess. In the context of the messy room example above, this would be like introducing another chair with a lower base instead of investing in a new chair that is height-adjustable. Always keep the concept of abstraction in your mind and use it when you can.
+* **Not using configuration files**. If you need to use a value that could potentially be different in different environments or at different times, that value belongs in a configuration file. If you need to use a value in multiple places in your code, that value belongs in a configuration file. Just ask yourself this question all the time when you introduce a new value to the code: does this value belong in a configuration file? The answer will most likely be yes.
+* **Using unnecessary conditional statements and temporary variables**. Every if-statement is a logic branch that needs to be at-least double tested. When you can avoid conditionals without sacrificing readability, you should. The major problem with this is extending a function with a branch logic instead of introducing another function. Every time you think you need an if-statement or a new function variable you should ask yourself: am I changing the code at the right level or should I go think about the problem at a higher level?
+
+On the topic of unnecessary if-statements, think about this code:
+
+function isOdd(number) {
+ if (number % 2 === 1) {
+ return true;
+ } else {
+ return false;
+ }
+}
+
+The `isOdd` function above has a few problems but can you see the most obvious one?
+
+It uses an unnecessary if-statement. Here is an equivalent code:
+
+function isOdd(number) {
+ return (number % 2 === 1);
+};
+
+### **11) Writing Comments About the Obvious Things**
+
+I have learned the hard way to avoid writing comments when I can. Most comments can be replaced with better-named elements in your code.
+
+For example, instead of the following code:
+
+**// This function sums only odd numbers in an array**
+const sum = (val) => {
+ return val.reduce((a, b) => {
+ if (b % 2 === 1) { **// If the current number is even**
+ a+=b; **// Add current number to accumulator**
+ }
+
+ return a; **// The accumulator**
+ }, 0);
+};
+
+The same code can be written without comments like this:
+
+const **sumOddValues** = (**array**) => {
+ return array.reduce((**accumulator**, **currentNumber**) => {
+ if (**isOdd**(currentNumber)) {
+ return accumulator + currentNumber;
+ }
+
+ return accumulator;
+ }, 0);
+};
+
+Just using better names for functions and arguments simply makes most comments unnecessary. Keep that in mind before writing any comment.
+
+However, sometimes you are forced into situations where the only clarity you can add to the code is via comments. This is when you should structure your comments to answer the question of _WHY this code_ rather than the question of _WHAT is this code doing_.
+
+If you are strongly tempted to write a WHAT comment to clarify the code, please do not point out the obvious. Here is an example of some useless comments that only add noise to the code:
+
+**// create a variable and initialize it to 0**
+let sum = 0;
+
+**// Loop over array**
+array.forEach(
+ **// For each number in the array**
+ (number) => {
+ **// Add the current number to the sum variable**
+ sum += number;
+ }
+);
+
+Do not be that programmer. Do not accept that code. Remove these comments if you have to deal with them. If you happen to be employing programmers who write comments like the above, go fire them, right now.
+
+### **12) Not Writing Tests**
+
+I am going to keep this point simple. If you think you are an expert programmer and that thinking gives you the confidence to write code without tests, you are a newbie in my book.
+
+If you are not writing tests in code, you are most likely testing your program some other way, manually. If you are building a web application, you will be refreshing and interacting with the application after every few lines of code. I do that too. There is nothing wrong with manually testing your code. However, you should manually test your code to figure out how to automatically test it. If you successfully test an interaction with your application, you should go back to your code editor and write code to automatically perform the exact same interaction the next time you add more code to the project.
+
+You are a human being. You are going to forget to test all previously successful validations after each code change. Make the computer do that for you!
+
+If you can, start by guessing or designing your validations even before you write the code to satisfy them. Testing-driven development (TDD) is not just some fancy hype. It positively affects the way you think about your features and how to come up with a better design for them.
+
+TDD is not for everyone and it does not work well for every project, but if you can utilize it (even in part) you should totally do so.
+
+### **13) Assuming That If Things are Working then Things are Right**
+
+Take a look at this function that implements the `sumOddValues` feature. Is there anything wrong with it?
+
+const sumOddValues = (array) => {
+ return array.reduce((accumulator, currentNumber) => {
+ if (currentNumber % 2 === 1) {
+ return accumulator + currentNumber;
+ }
+
+ return accumulator;
+ });
+};
+
+**console.assert(
+ sumOddValues([1, 2, 3, 4, 5]) === 9
+);**
+
+The assertion passes. Life is good. Right, RIGHT?
+
+The problem with the code above is that it not complete. It correctly handles a few cases (and the assertion used happens to be one of these cases) but it has many problems beyond that. Let me go through a few of them:
+
+**— Problem #1:** There is no handling for empty input. What should happen when the function is called without any arguments? Right now you get an error revealing the function’s implementation when that happens:
+
+TypeError: Cannot read property 'reduce' of undefined.
+
+
+
+
+
+
![](https://cdn-images-1.medium.com/freeze/max/60/1*DBFKfU-dhTK7xrTI8Ye-iQ.png?q=20)
+
+
+
+![](https://cdn-images-1.medium.com/max/1600/1*DBFKfU-dhTK7xrTI8Ye-iQ.png)
+
+![](https://cdn-images-1.medium.com/max/1600/1*DBFKfU-dhTK7xrTI8Ye-iQ.png)
+
+
+
+
+
+
+
+That is usually a sign of bad code for two main reasons.
+
+* Users of your function should not encounter implementation details about it.
+* The error is not helpful for the user. Your function just did not work for them. However, if the error was more clear about the usage problem, they would know that they used the function incorrectly. For example, you can opt to have the function throw a user-defined exception like this:
+
+TypeError: Cannot execute function for empty list.
+
+Maybe instead of throwing an error, you need to design your function to just ignore empty input and return a sum of `0`. Regardless, something has to be done for this case.
+
+**— Problem #2:** There is no handling of invalid input. What should happen if the function is called with a string, an integer, or an object value instead of an array?
+
+Here is what the function would throw now:
+
+sumOddValues(42);
+
+TypeError: array.reduce is not a function
+
+Well, that is unfortunate because `array.reduce` is definitely a function!
+
+Since we named the function’s argument `array`, anything you call the function with (`42` in the example above) is labeled as `array` within the function. The error is basically saying that `42.reduce` is not a function.
+
+You see how that error is confusing, right? Maybe a more helpful error would have been:
+
+TypeError: `42 is not an array, dude.`
+
+Problems #1 and #2 are sometimes referred to as edge-cases. These are some common edge-cases to plan for, but there are usually less obvious edge-cases that you need to think about as well. For example, what happens if we use negative numbers?
+
+sumOddValues([1, 2, 3, 4, 5, -13]) // => still 9
+
+Well, `-13` is an odd number. Is this the behavior that you want this function to have? Should it throw an error? Should it include the negative numbers in the sum? Or should it simply just ignore negative numbers like it is doing now? Maybe you will realize that the function should have been named `sumPositiveOddNumbers`.
+
+Making a decision on this case is easy. The more important point is, if you do not write a test case to document your decision, future maintainers of your function will have no clue if your ignoring of negative numbers was intentional or buggy.
+
+> It’s not a bug. It’s a feature.
+
+> — Someone who forgot a test case
+
+**— Problem #3:** Not all valid cases are tested. Forget edge-cases, this function has a legitimate and very simple case that it does not handle correctly:
+
+sumOddValues([2, 1, 3, 4, 5]) // => 11
+
+The `2` above was included in sum when it should not have been.
+
+The solution is simple, `reduce` accepts a second argument to be used as the initial value for the `accumulator`. If that argument is not provided (like in the code above), `reduce` will just use the _first_ value in the collection as the initial value for the `accumulator`. This is why the first even value in the test case above was included in the sum.
+
+While you might have spotted this problem right away or when the code was written, this test case that revealed it should have been included in the tests, in the first place, along with many other test cases, like all-even numbers, a list that has `0` in it, and an empty list.
+
+If you see minimal tests that do not handle many cases or ignore edge-cases, that is another sign of newbie code.
+
+### **14) Not Questioning Existing Code**
+
+Unless you are a super coder who always works solo, there is no doubt that you will encounter some kind of stupid code in your life. Beginners will not recognize it and they usually assume that it is good code since it seems to be working and it has been part of the codebase for a long time.
+
+What is worse is that if the bad code uses bad practices, the beginner might be tempted to repeat that bad practice elsewhere in the codebase because they learned it from what they thought was good code.
+
+Some code looks bad but it might have a special condition around it that forced the developer to write it that way. This is a good place for a detailed comment that teaches beginners about that condition and why the code is written that way.
+
+As a beginner, you should just assume that any undocumented code that you do not understand is a candidate for being bad. Question it. Ask about it. `git blame` it!
+
+If the author of that code is long gone or cannot remember it, research that code and try to understand everything about it. Only when you completely understand the code you get to form an opinion whether it is bad or good. Do not assume anything before that.
+
+### **15) Obsessing About Best Practices**
+
+I think the term “best practices” is actually harmful. It implies that no further research is needed. Here is the BEST practice ever. Do not question it!
+
+There are no best practices. There are probably _good_ practices _today_ and _for this programming language_.
+
+Some of what we previously identified as best practices in programming are labeled today as bad practices.
+
+You can always find better practices if you invest enough time. Stop worrying about best practices and focus on what you can do best.
+
+Do not do something because of a quote you read somewhere, or because you saw someone else do it, or because someone said this is a best practice. This includes all the advice that I am giving in this article! question everything, challenge all the theories, know all your options, and make only educated decisions.
+
+### **16) Obsessing About Performance**
+
+> _Premature optimization is the root of all evil (or at least most of it) in programming_
+
+> _— Donald Knuth (1974)_
+
+While programming has significantly changed since Donald Knuth wrote the above statement, I think it still holds valuable advice today.
+
+The good rule to remember about this is: if you cannot measure the suspected performance problem with the code, do not attempt to optimize it.
+
+If you are optimizing before executing the code, chances are you are doing it prematurely. There is also a big chance that the optimization you are investing your time in is completely unnecessary.
+
+Of course there are some obvious optimizations that you should always consider before introducing new code. For example, in Node.js, it is extremely important that you do not flood the event loop or block the call stack. This an example of an early optimization that you should always keep in mind. Ask yourself: Will the code I am thinking about block the call stack?
+
+Any non-obvious optimization that is carried out on any existing code without measurements is considered harmful and should be avoided. What you think could be a performance gain, if done, might turn out to be a source of new, unexpected bugs.
+
+Do not waste your time optimizing unmeasured performance problems.
+
+### **17) Not Targeting the End-user Experience**
+
+What is the easiest way to add a feature to an application? Look at it from the point of view of yourself, or how it fits in the current User Interface. Right? If the feature is to capture some kind of input from the user, then append it to that form that you already have. If that feature is to add a link to a page, then add it to that nested menu of links that you already have.
+
+**Do not be that developer.** Be one of the professional ones who put themselves in their end-users’ shoes. They imagine what the users of this particular feature need and how they might behave. They think about the ways to make the feature easy for the users to find and use, not about the easy way to make the feature exist in the application somehow without any thoughts about that feature’s discoverability and usability.
+
+### **18) Not Picking the Right Tool for the Job**
+
+Everyone has their list of favorite tools to assist them in their programming-related activates. Some tools are great and some are bad but most tools are great for one particular thing and not so great for many others.
+
+A hammer is a great tool to drive a nail into a wall but it is the worst tool to use with a screw. Do not use a hammer on a screw just because you “love” that hammer. Do not use a hammer on a screw just because that is the most popular hammer on Amazon with 5.0 user reviews.
+
+Relying on a tool’s popularity rather than how much it fits the problem is a sign of a true newbie.
+
+One problem about this point is that you will probably not know the “better” tools for a certain job. Within your current knowledge, a tool might be the best tool that you know of. However, when compared to other options, it would not make the top list. You need to familiarize yourself with the tools available to you and keep an open mind about the new tools that you can start using.
+
+Some coders refuse to use new tools. They are comfortable with their existing tools and they probably do not want to learn any new ones. I understand that and I can relate to it, but it is simply wrong.
+
+You can build a house with primitive tools and take your sweet time or you can invest some time and money in good tools and build a better house much faster. Tools are continually improving and you need to get comfortable learning about them and using them.
+
+### **19) Not Understanding that Code Problems Will Cause Data Problems**
+
+An important aspect of a program is often the management of some form of data. The program will be the interface to add new records, delete old ones, and modify others.
+
+Even the smallest bugs in a program’s code will result in an unpredictable state for the data it manages. This is especially true if all validations on the data are done entirely through the same buggy program.
+
+Beginners might not immediately connect the dots when it comes to code-data relationship. They might feel okay continuing to use some buggy code in production because feature X that is not working is not super important. The problem is that buggy code might be continually introducing data integrity problems that are not obvious at first.
+
+What is worse is that shipping code that fixed the bugs without fixing the subtle data problems that were caused by these bugs will just accumulate more data problems that take the case into the “unrecoverable-level” label.
+
+How do you protect yourself from problems like these? You can simply use multiple layers of data integrity validations. Do not rely on the single user interface. Create validations on front-ends, back-ends, network communications, and databases. If that is not an option, then you have to at-least use database-level constraints.
+
+Familiarize yourself with database constraints and use all of them when you add columns and tables to your database:
+
+* A **NOT NULL** constraint on a column means that null values will be rejected for that column. If your application assumes the existence of a value for that field, its source should be defined as not null in your database.
+* A **UNIQUE** constraint on a column means that the column cannot have duplicate values across the whole table. For example, this is great for a username or email field on a Users table.
+* A **CHECK** constraint is a custom expression that has to evaluate to true for the data to be accepted. For example, if you have a normal percentage column whose values have to be between 0 and 100, you can use a check constraint to enforce that.
+* A **PRIMARY KEY** constraint means that the column’s values are both not-null and unique as well. You are probably using this one. Each table in the database should have a primary key to identify its records.
+* A **FOREIGN KEY** constraint means that the column’s values have to match values in another table column, which is usually a primary key.
+
+Another newbie problem that is related to data integrity is the lack of thinking in terms of transactions. If multiple operations need to change the same data source and they depend on each other, they HAVE to be wrapped in a transaction that can be rolled back when one of these operations fail.
+
+### **20) Reinventing the Wheel**
+
+This is a tricky point. In programming, some wheels are simply worth reinventing. Programming is not a well-defined domain. So many things change so fast and new requirements are introduced faster than any team can handle.
+
+For example, if you need a wheel that spins at different speeds based on the time of the day, instead of customizing the wheel we all know and love, maybe we need to rethink it. However, unless you actually need a wheel that is not used in its typical design, do not reinvent it. Just use the damn wheel.
+
+It is sometimes challenging to pick the brand of the needed wheel among the many available options. Do some research and try before you buy! The cool thing about software “wheels” is that most of them are free and open for you to see their internal design. You can easily judge coding wheels by their internal design quality. Use open-source wheels if you can. Open-source packages can be debugged and fixed easily. They can also be replaced easily. In addition, it is easier to support them in-house.
+
+However, if you need a wheel, do not buy a whole new car and put the car that you are maintaining on top of that new car. Do not include a whole library just to use a function or two out of it. The best example about this is the **lodash** library in JavaScript. If you just need to shuffle an array, just import the `shuffle` method. Do not import the whole freaking lodash library.
+
+### **21) Having the Wrong Attitude Towards Code Reviews**
+
+One sign of coding newbies is that they often look at code reviews as criticism. They do not like them. They do not appreciate them. They even fear them.
+
+This is just wrong. If you feel that way, you need to change this attitude right away. Look at every code review as a learning opportunity. Welcome them and appreciate them. Learn from them. And most importantly, thank your reviewers when they teach you something.
+
+You are a forever code learner. You need to accept that. Most code reviews will teach you something you did not know. Categorize them as a learning resource.
+
+Sometimes, the reviewer will be wrong and it will be your turn to teach them something. However, if that something was not obvious from just your code, then maybe your code needs to be modified in that case. And if you need to teach your reviewer something anyway, just know that teaching is one of the most rewarding activities that you can do as a programmer.
+
+### **22) Not Using Source Control**
+
+Newbies sometimes underestimate the power of a good source/revision control system, and by good I mean **Git**.
+
+Source control is not about just pushing your changes for others to have and build on. It is a lot bigger than that. Source control is about clear history. Code will be questioned and the history of the progress of that code will help answer some of the tough questions. This is why we care about commit messages. They are yet another channel to communicate your implementations and using them with small commits help future maintainers of your code figure out how the code reached the state that it is in right now.
+
+Commit often and commit early and for the love of consistency use present tense verbs in your commit subject line. Be detailed with your messages but keep in mind that they should be summaries. If you need more than a few lines in them, that is probably a sign that your commit is simply too long. Rebase!
+
+Do not include anything unnecessary in your commit messages. For example, do not list the files that were added, modified, or deleted in your commit summaries. That list exists in the commit object itself and can be easily displayed with some Git command arguments. It would simply be noise in the summary message. Some teams like to have different summaries per file changed and I see that as another sign of a commit that is too big.
+
+Source control is also about discoverability. If you encounter a function and you start questioning its need or design, you can find the commit that introduced it and see the context of that function. Commits can even help you identify what code introduced a bug into the program. Git even offers a binary search within commits (the `bisect` command) to locate the single guilty commit that introduced a bug.
+
+Source control can also be leveraged in wonderful ways even before the changes become official commits. The use of features like staging changes, patching selectively, resetting, stashing, amending, applying, diffing, reversing and many others add some rich tools to your coding flow. Understand them, learn them, use them, and appreciate them.
+
+The fewer Git features you know, the more of a newbie you are in my book.
+
+### **23) Over-Using Shared State**
+
+This, again, will not be a point about functional programming versus other paradigms. That is a topic for another article.
+
+This is just about the fact that shared state is a source of problems and should be avoided, if possible. If that is not possible, the use of shared state should be kept to an absolute minimum.
+
+What I did not realize as a beginner programmer is that every variable we define represents a shared state. It holds data that can be changed by all elements in the same scope as that variable. The more global the scope is, the worse the span of this shared state. Try to keep new states contained in small scopes and make sure they do not leak upward.
+
+The big problem with shared state starts to happen when multiple resources need to change that state together in the same tick of the event loop (in event-loop-based environments). Race conditions will happen.
+
+Here is the thing: a newbie might be tempted to use a timer as a workaround for this shared state race condition problem, especially if they have to deal with a data lock issue. That is a big red flag. Do not do it. Watch for it, point it out in code reviews, and never accept it.
+
+### **24) Having the Wrong Attitude About Errors**
+
+Errors are a good thing. They mean you are making progress. They mean you have an easy follow-up change to make more progress.
+
+Expert programmers love errors. Newbies hate them.
+
+If seeing these wonderful little red error messages bother you, you need to change that attitude. You need to look at them as helpers. You need to deal with them. You need to leverage them to make progress.
+
+Some errors need to be upgraded to exceptions. Exceptions are user-defined errors that you need to plan for. Some errors need to be left alone. They need to crash the application and make it exit.
+
+### **25) Not Taking Breaks**
+
+You are a human and your brain needs breaks. Your body needs breaks. You will often be in the zone and forget to take breaks. I look at that as another sign of newbies. This is not something you can compromise. Integrate something in your workflow to force you to take breaks. Take a lot of short breaks. Leave your chair and take a short walk and use it to think about what you need to do next. Come back to the code with fresh eyes.
+
+This has been a long post. You deserve a break.
+
+Thanks for reading
\ No newline at end of file
diff --git a/source/_drafts/Webpack-介绍:第二部分.md b/source/_drafts/Webpack-介绍:第二部分.md
new file mode 100644
index 0000000..17cab0d
--- /dev/null
+++ b/source/_drafts/Webpack-介绍:第二部分.md
@@ -0,0 +1,7 @@
+---
+title: Webpack 介绍:第二部分
+permalink: introduction-to-webpack-part-2
+id: 153
+updated: '2016-06-03 10:23:43'
+tags:
+---
diff --git a/source/_drafts/哟,那个多愁善感的孩子.md b/source/_drafts/哟,那个多愁善感的孩子.md
new file mode 100644
index 0000000..c7e1fa8
--- /dev/null
+++ b/source/_drafts/哟,那个多愁善感的孩子.md
@@ -0,0 +1,7 @@
+---
+title: 哟,那个多愁善感的孩子
+permalink: yo-na-ge-duo-chou-shan-gan-de-hai-zi
+id: 162
+updated: '2017-01-31 00:26:10'
+tags:
+---
diff --git a/source/_drafts/有意思的验证码生成策略.md b/source/_drafts/有意思的验证码生成策略.md
new file mode 100644
index 0000000..e219756
--- /dev/null
+++ b/source/_drafts/有意思的验证码生成策略.md
@@ -0,0 +1,8 @@
+title: 有意思的验证码生成策略
+permalink: you-yi-si-de-yan-zheng-ma-sheng-cheng-ce-lue
+id: 147
+updated: '2016-01-11 02:26:19'
+tags: []
+categories: []
+date: 2017-05-03 17:50:00
+---
diff --git a/source/_drafts/漫漫求学路.md b/source/_drafts/漫漫求学路.md
new file mode 100644
index 0000000..9ddc86b
--- /dev/null
+++ b/source/_drafts/漫漫求学路.md
@@ -0,0 +1,19 @@
+title: 漫漫求学路
+permalink: the-road-to-learn
+id: 146
+updated: '2017-01-21 21:48:39'
+tags: []
+categories: []
+date: 2017-05-03 17:50:00
+---
+
+掐指一算,我已经大学毕业3年了,但校园生活的故事,似乎就发生在昨天。
+
+有时早上会突然惊醒,回想着现在几点,是不是上午的课将要迟到。又有时,会想起那些音容笑貌,那些活生生的人儿。虽然有些人已经不在人世,可是我,却还记得他们,还能想起那时候的点点滴滴。
+
+是时候将我这长达十六年的学习记忆写下来,记录在我的生命中有过重要意义的七个学校,和那些令我心动的点点滴滴。
+
+——题记
+
+
+
diff --git a/source/_posts/2009-10-29.md b/source/_posts/2009-10-29.md
new file mode 100644
index 0000000..8f63c95
--- /dev/null
+++ b/source/_posts/2009-10-29.md
@@ -0,0 +1,37 @@
+---
+title: 凤凰花开
+tags:
+ - 凤凰花
+ - 厦门
+ - 成功
+ - 高考
+categories: 文章
+permalink: phoenix-flowers
+id: 2
+featureImage: https://cat.yufan.me/cats/071328rBD.jpg
+updated: '2016-07-24 01:37:42'
+date: 2009-10-29 20:56:30
+---
+
+凤凰木,被誉为厦门的市树。当你漫步于厦门街头时,除了亚热带常见的棕榈,看得最多的树,怕就是它了。人行道上,放眼望去,一行行的都是凤凰树。虽已是金秋十月,对于亚热带的厦门,只算是夏至未至。
+
+故那原本在盛夏开得烂漫的凤凰花儿,此刻依旧开了大半。火红的花儿挤着、簇拥着,占了大半个树儿,远远望去像薄雾一般看不真切,只感觉似火在树丛中跃动。只有走到近处,眯起眼睛时,才可以看到那点点的花瓣、细蕊。比起故乡的枫叶,这凤凰花儿多了一番迷人,少了一番萧瑟。
+
+
+
+穿行于漫天的火红之中,忽地心里一紧,抬头 视这凤凰木,这情境似在哪见过。有时觉得自己像《麦田里的守望者》中的那只羔羊一样。一次次地向前走,却总是逃不出命运安排的怪圈,总是一次次地回到起点。
+
+哦,对了。这相似的情形曾发生在三年前……
+
+那时该还是盛夏时节,知了依旧在树上不知疲倦的鸣唱。午后的阳光,照的人发倦,一切事物倍感朦胧。也就在那个午后,在那火红的凤凰花的簇拥底下,我同其他同学一起对着主席台的老师进行中考百日誓师。一切都是那么不真切,那么朦胧。时光的流逝到了这里,仿佛静止了一般。而记忆之中的画面,也似乎定格在了这一瞬间。只记得宣誓的最后,语文老师动情的说道:“你们看那凤凰花儿都盛开了,那我们离成功还会远吗?”
+
+是啊!花开象征着收获,象征着挥洒汗水之后的成功,亦如人生之中拼搏的种种。起初,在最开始的几年里,凤凰树是不开花的。就像一棵普普通通的树,你天天从它下面走过,却从未抬头驻足,甚至探寻它的来历,只当它是一棵普普通通的树。但是,在饱尝了几载的风风雨雨之后。终有一天,如同这个午后,凤凰树会对着阳光,绽开最美、最火红的花朵。也就是在这时,你才会驻足,才会惊讶:这究竟是一棵怎样的树?
+
+也还记得在那一年,经过无数个日日夜夜的苦读。最终,在凤凰花的映衬下进入考场。也最终在这花的映衬下拿到了重点中学的录取通知书。毕业联欢晚会上,我是最闪亮的那一个。青春中最美丽的花朵也由此绽放在那个夏季……
+
+静心回想,其实人生就是这样一棵树:一开始就是不断的积累与拼搏,并不显眼、并不出众。只有披荆斩棘,闯过生命中种种关卡之后。你才能橡树一样开放出人生中动人的一枝奇葩!
+
+抬头看这凤凰花,三年前的情境依旧让我感动。凤凰花开,生命经过默默拼搏后创造的最动人之景。而现在,身处高三的我,不也同样经受着人生中的又一次蜕变吗?想到这,我的脚步不觉在这火红的花海中加快了……
+
+写于:2009-10-29 13:12:06
+
diff --git a/source/_posts/2010-03-25.md b/source/_posts/2010-03-25.md
new file mode 100644
index 0000000..4f83a0c
--- /dev/null
+++ b/source/_posts/2010-03-25.md
@@ -0,0 +1,18 @@
+---
+title: 思想的天鹅
+tags:
+ - 天鹅
+ - 思想
+ - 文字
+ - 时间
+categories: 文章
+permalink: swan-of-thought
+featureImage: https://cat.yufan.me/cats/071256ZMq.jpg
+id: 57
+updated: '2015-04-16 04:33:46'
+date: 2010-03-25 18:20:11
+---
+
+天行健君子以自强不息。而对于思想,我则将它比做天鹅。不为其它,只因这思想太轻盈,有着一种如同天鹅翱翔般柔美。看似很近,却又是很远,是那么的不可触及。
+
+思想如同天鹅般轻舞、飞翔,最终融汇于字里行间。文字、书本只是它的承载体,只是将它收集归纳。时光的流逝也许会将那一本本日记本刻上道道伤痕,让这白皙的纸张变黄变碎。但承载于其中的思想却不朽。它们将始终像天鹅般洁白,在我心头飞翔。
diff --git a/source/_posts/2010-09-18.md b/source/_posts/2010-09-18.md
new file mode 100644
index 0000000..17a3605
--- /dev/null
+++ b/source/_posts/2010-09-18.md
@@ -0,0 +1,37 @@
+---
+title: 樱花谢了
+tags:
+ - 小四
+ - 樱花
+ - 结束
+ - 美丽
+ - 花谢
+ - 青春
+ - 高考
+categories: 文章
+permalink: cherry-blossoms-withered
+featureImage: https://cat.yufan.me/cats/071234e7a.jpg
+id: 9
+updated: '2015-04-16 09:01:42'
+date: 2010-09-18 02:50:41
+---
+
+三月,该是樱花开放的季节。而三月之际开放的鲜花,却不止樱花一种。但凭心而论,真正能触动心弦的词,该是樱花。
+
+第一次接触樱花,是从小学的音乐课本中得来的。那首极具日本风格的歌曲也由此铭记于心。真正见到樱花时,应该是初一了。初春的午后,和同学们一同去大明湖看樱花。远远望去,湖边树上全是粉红的一片,似淡纱,似粉彩,似迷雾。走进了才发现,它们全是由一朵朵的樱花构成的。低头拾起一朵樱花,它是多么细小、纤弱、惹人怜爱。一阵风吹过,下起一阵花雨。无数朵樱花随着风纷纷扬扬地撒下,空中的世界分明变成了花的海洋,也许神话中的天女散花不过如此吧!樱花点点,缀在行人的头上,肩上,夹在了我怀中的笔记本里,也落在我的心头……
+
+
+
+遐想相隔不远处的岛国,是否也发生着这相似的一幕呢?
+
+不由得想起了《悠久之翼》里的那个午后,男女主人公在樱花雨下的漫步。粉红的基调配上朦胧的爱情、小心的试探和交织的羁绊,让一切变的美好,似不褪色的童话般动人。又想起川端康成,他是否依旧步行在伊豆泥泞的路上,踩着碎花,去追寻自己的舞女呢?
+
+总觉得樱花很美,美到极致,美到忧伤。似乎生来就有为悲剧做配角的资质。不因其他,只因为它的柔弱于易逝。查阅了《大英百科全书》,上面说它的花期只有3~5天。可是真正挺过的又有多少?它们中的绝大多数,都在开的最美最艳时离开枝头,恣意地在空中飞舞,旋转,飞散。以自己的一生,来完成这最美的场景。故说:樱花之美,是死亡之美,是充满激情并令人哀伤的美。一如《恋空》中的男女主角,在樱花下相爱,又在樱花下生死分离。
+
+而人生是否也曾有过一场这样的美丽呢?我想,我们每个人都曾有过,那便是青春。也许如小四所言:“青春是一道明媚的忧伤。”但这忧伤的来源便是它的消逝。青春的我们、朝气、阳光、充满活力。如花的笑靥、粉面、丹唇、桃膝是我们的标志。我们笑过、哭过、努力过、奋斗过、贪玩过,一起走过青春,绽放出这一生一次的最动人的光彩。一如这三月的樱花的绽放。
+
+但,这忧伤终究要来,青春终究要结束。高考完的那一刻,也许就是青春旋律的休止符。我们终究要长大,跨向社会,迎来另一个开始。
+
+而此时,樱花谢了。
+
+写于:2010-09-17 21:10:20
diff --git a/source/_posts/2011-01-04.md b/source/_posts/2011-01-04.md
new file mode 100644
index 0000000..8333158
--- /dev/null
+++ b/source/_posts/2011-01-04.md
@@ -0,0 +1,41 @@
+---
+title: 旧月台
+tags:
+ - 月台
+ - 相逢
+ - 离别
+ - 记忆
+ - 重聚
+categories: 文章
+permalink: old-train-site
+featureImage: https://cat.yufan.me/cats/2014051701.jpg
+id: 121
+updated: '2015-04-15 23:16:40'
+date: 2011-01-04 21:22:43
+---
+
+夏日傍晚的太阳已收敛了它一天的炎热,仅洒下点点余辉,投射在路面上。在这个略觉清爽的午后,我沿着屋后早已废弃的铁轨开始了随意的散步。
+
+也许是因为将之废弃不用,更或许是时间的漫长,棕红色的铁锈将其覆盖,斑驳的马齿苋、狗尾巴草将之团团包围。它,快被人忘记了吧。
+
+双脚踏在其中一根旧铁轨上,玩起了儿时最喜欢的Stand-by-Me(注:出自1986年的一部美国电影)。哎,就是在铁路上走啦。张开双手尝试着向前走,一次次地滑下来,又一次次地重新站起……
+
+不觉临近了了这座老月台。其那早已被青苔覆包裹的站牌上的站名早已被时间磨洗干净,无从辨认。白瓷砖拼成的安全警示线不知从何时起已被来来往往的行人踩得支离破碎。斑驳的地面不知经历了几代的风风雨雨,记述着多少时光中的点点滴滴。曾经谁的谁在这里离别,又是谁的谁在这里等待、遇见……
+
+远处的铁路闸道口又响起了叮咚叮咚的警笛声。在呜咽的汽笛声与铿锵的车轮撞击声中,一辆列车呼啸而过,驶向远方……
+
+![旧月台(1)](https://cat.yufan.me/cats/071904yGl.jpg)
+
+声音渐远渐消,思绪不觉恍惚起来。对于列车,我总有一种特殊的情怀。小时候的学校旁边就是火车道,每天不知何时,就会有一辆列车从上呼啸而过,驶向未知的尽头。也曾想过去探寻那遥远的未知之地,可每每走了许久,便放弃追寻。在儿时的联想中,铁轨永远是无穷无尽的,而其上的列车也是终究不会停的。
+
+然而,列车终会停留,鸟儿终会停歇,马儿总会停下。对于火车而言,这停留之地便是月台。
+
+![旧月台(2)](https://cat.yufan.me/cats/071904q4A.jpg)
+
+是起点也是终点,是开始也是结束;是欢聚也是离散,是出发也是归宿。
+
+有多少次,我也曾被卸在月台,又有多少次,我也曾从月台离去,我不知道自己终究要去往何方?回想近些年来的生活,别离总多于团聚,失望总多于获得。寂寞、惆怅,和一份深沉的苍凉,常是我密切的旅伴。离去不是离去,心仍萦留于亲情,归来不是归来,浮土又焉能扎根?
+
+静心想想,其实人生的聚散往往并不像徐志摩写的那样:轻轻的我走了,正如我轻轻的来,挥一挥衣袖,不带走一片云彩。就像这古老的月台曾经上演过多少聚散离合?它记载过多少悲欢离合、喜怒哀乐,又承载了多少依依惜别、迎来送往?聚也依依,散也依依,聚散两相依!不知古老的月台是否会为人们伤感的离别动容?是否为人们流露的真情打动?月台上的人流不断地更换着,送走一批又迎来一批,最后只归于寂寥,唯一仅存的是依然矗立在那的旧月台,记录下那些曾经的喜悦与哀愁。而那些真挚情谊与真情实感依旧会在新的月台上继续记录着……续写着……
+
+原写于:2011-01-04 13:00:28
diff --git a/source/_posts/2011-07-10.md b/source/_posts/2011-07-10.md
new file mode 100644
index 0000000..7022548
--- /dev/null
+++ b/source/_posts/2011-07-10.md
@@ -0,0 +1,70 @@
+---
+title: 19岁的“雨季”
+tags:
+ - 思考
+ - 花季
+ - 雨季
+ - 青春期
+categories: 文章
+permalink: 19-year-old
+featureImage: https://cat.yufan.me/cats/20130129175122.jpg
+id: 3
+updated: '2015-04-16 00:43:51'
+date: 2011-07-10 05:01:20
+---
+
+这样的雨,实在是让人烦恼,接连数日,没有停的时候。
+
+这样的雨里,想做的事情实在很少。天空,灰蒙蒙的心情,也是灰尘,整个世界都是变得忧郁而烦闷。
+
+对于雨天,从小就是心怀不平的。
+
+
+
+只那么一夜,树叶洒落一地,不由得惊叹秋雨竟如此冰冷无情,想起曾经读过的许多雨天的文章,总是不了解作家的心境,不了解他们怎么会有那样美妙、美好的感觉,自己始终无法体味。
+
+就在深秋的一个黄昏,那拍落了叶的街头树与自己相对而立默默无语地看着一如既往的街景和匆匆的行人,偶尔有一片叶悠悠落下,就这样悄然而立,接受暮里落叶飘零的情意。
+
+难道花季来过,雨季已悄然来临?
+
+花季……风和日丽的港湾……
+
+虽然是在措手不及间踏上这样一条未知的路,虽然花季初至,也曾经彷徨,丹永远无法忘却的是美丽的心情;永远不放弃的是成长的意义,没有任何感伤,只有如期而至的平静与欣慰。
+
+没有显赫的身世,没有令人瞩目的才能,却很早就学会用神的笔画着:“我爱祖国”……
+
+没有英俊的外表,没有名牌的衣裳,但这并不重要,阳光休闲不就是一种自然舒适的心情?
+
+没有人注意自己,也不期待有人为自己鼓掌。毕竟花季不是一路鲜花,一路喝彩……
+
+因为花季中也有无数飘雨的日子……
+
+常常被一些真挚的情意感动而流泪,是在花季里呢?
+
+喜欢在黑夜里孤灯下遥望繁星,聆听“吱吱”的昆虫声,是在花季里呢?
+
+那些被伤害的日子里,学会去思考,去面对,去品悟,是在花季里吧?
+
+我的花季,不是浪漫的粉红色。
+
+以为19岁时开满鲜花的,19岁的字典里也没有“忧伤”这个词,丹走进花季,才明白自己和别人不同,也没有资格拥有他们拥有的一切欢笑,自己保留的是一种真诚,不断地使自己完整,不断地寻求自知,体验生活自己拥有的,也只是心底纯净的蔚蓝色的天空。
+
+那一切缤纷的往日脑中一遍遍重复,像一部黑白的老电影,亲切至极而依然毫无厌倦,是不是他也曾注意,那时的许多美丽的黄昏?
+
+花季是一条路,注定每人都要走过,都要面对,站在这个路口,会想起失败和失败者,想起跋涉和跋涉者……但别无选择,我们属于这条路。
+
+总是想起年少时有过的许多幻想,都在岁月积累的比时尚碰撞坍塌了,伤心,感慨,昔时难再的悲伤,但谁不是这样?谁的心不是在这样的坎坷中成长起来的,庆幸的是有失去就有得到,就在这些磨难之后,才会进入一种境界,才会拥有一种面对现实的决心,一种明了生命的镇定,就算付出了生命中最宝贵的年华,也无需太在意,不是么?我们所追求的一切,在自己看来却是美丽令人心悸,但最终要得到它还要经过岁月的洗礼,这难道不是一种无可奈何的安排吗?
+
+那么,就让,自己忘记得与失。
+
+走了,花季终于永远远的走了,而自己永远也无法再抓住那纯好梦幻时光,可是,如果在走出花季后,能得到一种原本无法认知的感悟,那么又何不笑着面对命运呢?
+
+让自己向花季道别吧!如果心真的已不再年轻,再也想不起回忆,那么,就像花季道别吧。
+
+如果走出花季以后,每一件伤心的往事都能让自己深深地醒悟,每一次感悟都能让自己成长许多,每一次成长都能让自己正视过去与现在,每一次回顾中,每个有雨的日子,都能在心底抽出一张浅浅淡淡地风景……那么走出花季又有什么不好呢?
+
+于是,就在雨季中道别花季……
+
+然而,夕阳里,风景依旧迷人。
+
+![19岁的“雨季”(2)](https://cat.yufan.me/cats/0718352Ra.jpg)
diff --git a/source/_posts/2011-08-23.md b/source/_posts/2011-08-23.md
new file mode 100644
index 0000000..53f6109
--- /dev/null
+++ b/source/_posts/2011-08-23.md
@@ -0,0 +1,32 @@
+---
+title: 杂思——点滴记录
+tags:
+ - 点滴
+ - 琐碎
+categories: 文章
+permalink: drip-records
+featureImage: https://cat.yufan.me/cats/2015041601.jpg
+id: 4
+updated: '2015-04-16 00:47:39'
+date: 2011-08-23 16:12:31
+---
+
+**(一)雨来**
+
+今天下午的厦门下起了雨,闷热而又纷乱,似乎与闷热的午后不相协调。一切显得是那么的突兀,就像那杂乱不堪的思绪纷纷扰扰洒落。溅起一片湿热,扰乱一池如镜的思绪。豆大的雨珠不断洒落,才一会儿地上编汇起了一条条小溪。雨中没带伞的行人匆匆跑过,楼下的小孩在屋檐下唱着:两只老虎,两只老虎,谈恋爱,谈恋爱。一只是公的,另一只也是公的。真变态,真变态。 = =。囧
+
+
+
+**(二)心乱**
+
+安静的午后突然下起了雨,本来看书的我突然静不下心来,一直以来的烦躁漫上心头。看看窗外,心中似有思,可是总是抓不住,让人苦苦追寻……
+
+**(三)来电**
+
+雨依旧在下着,嘈杂的雨声却渐渐让人感觉宁静。就像是一种独奏曲,掩盖了周围的一切唯有雨声。但是,手机铃声于这雨幕中突兀的响起,范玮琪的《那些花儿》的哼唱部分不断的在那单曲循环。柔柔的哼唱恰似在讲述、在期待,扰乱了阵雨的独奏。
+
+不觉有些不安起来。不远处的手机依旧在桌面上震动,闪烁的来电提示灯、单曲循环的铃声,不断交织,在眼前放大……是谁?什么事?终于还是接了电话,拿起又放下,失神的望着窗外,一丝苦涩漫上心头。对方终究是失了耐心先行挂断了。
+
+终究只不过是一场突兀的阵雨,来的快,去得也快。才不过20mins雨就停了,露出了依旧火辣辣的阳光。楼下的小孩开始露出了芽,穿行奔跑于大街小巷,溅起一滩滩小水洼。出门散步,穿行于那不多见的厦门小巷,踩着一片片小小的泥点,渐行渐远…… 唉,又是一个难得的凉爽的下午!
+
+写于:2011-08-23 08:12:44
diff --git a/source/_posts/2011-09-06.md b/source/_posts/2011-09-06.md
new file mode 100644
index 0000000..fadc9fa
--- /dev/null
+++ b/source/_posts/2011-09-06.md
@@ -0,0 +1,33 @@
+---
+title: 开始 · 起点 · 轮回
+tags:
+ - 开始
+ - 梦想
+ - 轮回
+categories: 文章
+permalink: the-beginning-of-blog
+featureImage: https://cat.yufan.me/cats/070731fQ7.jpg
+id: 5
+updated: '2015-04-16 00:53:56'
+date: 2011-09-06 08:04:27
+---
+
+经历了无数次的选择无数次的徘徊,最终还是选择了独立博客,这亦或是起点亦或是轮回。
+
+ — 题记
+
+爱上文学大概是小学六年级,第一次作文获奖被老师拿在班里朗读。依稀还记得当年同学投来的羡慕的眼光和自己自豪的心情。也从那以后对语文的兴趣一发不可收拾,《读者》、《青年文摘》、《散文》这些阅览室里的杂志都被我读遍,里面的好词好句都被我收录在自己的笔记本里,而自己的喜怒哀乐都被我记录在私密的日记本里。这一切都随着一次次的搬家奔波,渐渐消逝了……
+
+曾幻想过,如果还记得当年的那些童言稚语、豪情壮志那该是怎么一番景象。而时间却是最能冲刷一切的东西,再痛彻心扉的记忆、再刻骨铭心的海誓山盟也只是曾经。一切的一切都会过去,就像当年的那个小小的文学梦想。
+
+自从进了初中,一切的梦想不得不舍弃在一边。那些发黄的摘抄,也只像一地的瓜子壳,人已走,只留一片狼藉,供人参赏……
+
+再次重新拾笔,是高二,一次偶然的发现让我接触到了博客这个新生网络产物,并由此再次让我迸发了写作的热情。可是,高三的升学压力又一次让我放弃,曾经的梦想不得不再一次搁浅。写作、停笔、写作、停笔,一次又一次的轮回一次又一次的努力。想起希腊神话里的西西弗斯,一次又一次推着石头到山顶,又看着石头一次又一次的滚落。是宿命又也许是无奈。
+
+木木木木木空间里的那个广告让我又有了写博客的冲动,在纠结了很久后终于选择了Wordpress,昔日的QQ空间、网易博客已经好久没有动过。而重拾博客,自己的一个选择,亦或是一个开始……
+
+ 仅以此为自己的再次写博的一个纪念,亦或是一个再次踏上梦想旅程的一声呼喊。
+
+ 雨帆
+
+ 2011-09-06
diff --git a/source/_posts/2011-09-12.md b/source/_posts/2011-09-12.md
new file mode 100644
index 0000000..a5ef0f9
--- /dev/null
+++ b/source/_posts/2011-09-12.md
@@ -0,0 +1,27 @@
+---
+title: 旧书之联想
+tags:
+ - 余秋雨
+ - 文化苦旅
+ - 旧书
+categories: 文章
+permalink: association-of-old-books
+featureImage: https://cat.yufan.me/cats/070542ghy.jpg
+id: 6
+updated: '2015-04-16 01:03:06'
+date: 2011-09-12 00:07:38
+---
+
+每本书都有属于自己的思想,亦可称之为灵魂。而这灵魂的载体便是纸张和文字。时间的流逝,可以令书本原本白皙的直面发黄、生霉。就像是少男少女的洁白的双手、粉嫩的面颊,在光阴的长河的洗涤下变得暗淡、起皱。但纵使一本书再破、再旧,于其中的灵魂却不朽。
+
+
+
+儿时最喜欢在外婆家呆的地方,便是那个装满旧书的小书柜。一打开柜门,扑鼻而来的便是一股霉味。书架上,排着一列列的花花绿绿的旧书。许多书的纸张已经泛黄,不少书的表面都已泛黄蒙上淡淡的薄尘。而暴露于外的书脊,大多都因年久而褪了色,其时间的久远可以推想。随手抽出一本线装的《石头记》翻阅,早已不再使用的竖排文字、从右至左的阅读顺序、略显生硬粗糙的插图、外公和老妈在上面的批注,无一不让人联想回味那段消逝的过去。忽地想起《阿长与<山海经>》里的那本《山海经》,是不是也是这样一本旧书呢?
+
+一本旧书,亦或是另一种价值的体现吧!想起那些埋藏于莫高窟内的经书,由此引发了一股延绵至今的敦煌热。《文化苦旅》中曾这样记述:众多的外国学者不远千里赶于此处“取经”,以极低的价格从王道士那里购买经书。而同时代的官员对此却充耳不闻,甚至,加入强盗的行列,收缴经书并作为仕途的“垫脚石”。这是时代的悲哀,亦是时代的必然,民族的悲痛。我们无法评论早已化为一抔黄土的王道士,而我所痛心的是在这场野蛮人的“掠夺战争”中那些被人损毁的书籍。还未曾见天日,公诸于世,却早早的零落成为碎片。这些经书所承载的是那些不为人知的历史、文化,纵使它支离破碎,纵使它记述的文字模糊不清。它的存在,亦是永恒。
+
+可以说,一本旧书,同时也承载着一份过去。
+
+漫步于山大的校图书馆中,最喜欢驻足的地方,便是那些有着久远年代书籍的书架。随手抽出一本《梦溪笔谈》,吹去表面的灰尘,手抚泛黄的纸张与那斑驳的前人注释,心中顿生一种历史的沧桑感与虚无感。想起余秋雨在《文化苦旅》中的自序中谈到:每个人都有极其矛盾的心理年龄。年少时的张狂、好奇与年老时的沉稳,有时可以集中于一人身上。而那厚重的文化,或许便是让人萌发苍老之感的缘由。亦或是我对于旧书的喜爱的另一种解释吧!
+
+时间的流逝,必将带走不可计数的旧书归于尘世。就像是人,纵使你是红粉骷髅,也最终必将化为天地间的元素。但是,人与书又是不同的。有人说:“少了一位老人,便是少了一座图书馆。”我说:“少了一本旧书,便是少了一段可以延续的已逝的过去。”
diff --git a/source/_posts/2011-09-14.md b/source/_posts/2011-09-14.md
new file mode 100644
index 0000000..d0c89a5
--- /dev/null
+++ b/source/_posts/2011-09-14.md
@@ -0,0 +1,28 @@
+---
+title: 且听风吟
+tags:
+ - 且听风吟
+ - 青春
+categories: 文章
+permalink: hear-the-wind-sing
+featureImage: https://cat.yufan.me/cats/070342Yip.jpg
+id: 7
+updated: '2015-04-16 01:21:19'
+date: 2011-09-14 19:43:50
+---
+
+午后的时光,阳光明媚,气温尚好。我喜欢于此时在学校教学楼后的树荫下面读书,看天上风云变幻。而今天,却有人先来了。那是一段长达45秒的爱恋。
+
+——题记
+
+第一次说“且听书吟”这个词,是在《格言》上的小说内。故事中的女主人公携手一本《且听书吟》去见男朋友,只为寻找共同话题。“且听书吟”,这是一个令人遐想的词。去倾听风的吟唱,那么风是否会吟唱?它又在吟唱什么?它在为谁而唱。光是这个故事就令人浮想联翩。我也曾想像故事中的女主角一样,来一场刻骨铭心的爱,只是不敢爱,也没时间去爱。
+
+常怀恋高一的那个午后,我同她在一起时光。午后的晴空下,我一如既往地来到那树荫下,手执一本“大砖头”——《基础有机化学》,准备阅读。忽地如心灵感应般,一转头,身形一震,竟是她!此刻,她正在专注地啃着语文课本,不断地记忆着,眉峰微皱,嘴唇微咬,又通红转为沁白。阳光透过树叶的缝儿洒在她的发丝间,一粒一粒的,折射出迷人的光彩,让人如痴如醉。佛曰:“十年修得同船渡,百年修得同枕眠。”如果有前世今生,那么究竟多少次的回眸凝视,多少次的擦肩而过,流过岁月的长河,穿过前世今身,才究竟修得你我的今世今日的相遇。时光仍旧静静的流淌,起了风。似那调皮的精灵,一次次的把你额前的刘海弄乱,又一次次的被你的玉手撩起……
+
+真想时光就这样地静止了,好留下这一刻的静谧于安详。远处的篮球场上的呼喊、耳畔风声似都渐行渐远了,愈发朦胧。天地间似乎只存在我们两人。而美好的时光总是短暂的。似那昙花,准备多日后的开放,虽开得动人,却转眼而逝,似火星似烟花,似火柴。
+
+大概是感受到了我那灼人的目光,她最终注意到了我。起身,像蝴蝶一般掠过,带起一阵清风,消失在眼前。所留下的,只有那隐约萦绕在鼻翼间的一抹暗香……
+
+曾看过一部名为《悠久之翼》的动漫,剧中的男主角在那个常去的废弃的火车月台上遇到一个女孩。两个人相识、相知并最终恋爱。生活中的类似情境无时无刻不在发生,亦如这个午后。有时感慨,世界很小,两个人无处不相逢。也许这抑或是缘吧。
+
+缘尽了,情散了。也许,多年后的某个午后,我还会想起她。那是,一场长达45秒的爱恋。
diff --git a/source/_posts/2011-09-16.md b/source/_posts/2011-09-16.md
new file mode 100644
index 0000000..dc5dbd9
--- /dev/null
+++ b/source/_posts/2011-09-16.md
@@ -0,0 +1,36 @@
+---
+title: 寂寞的疼痛
+tags:
+ - 孤单
+ - 寂寞
+categories: 文章
+permalink: the-pain-of-lonely
+featureImage: https://cat.yufan.me/cats/070145n79.jpg
+id: 8
+updated: '2015-04-16 01:24:32'
+date: 2011-09-16 00:42:13
+---
+
+某个月明风高的深夜,我无意中打开学校的学生论坛。出奇的是,竟有2000多人在线,无聊的话题,纯表情的回复,似乎都在折射出一个词——“寂寞”。
+
+——是为题记
+
+也不知道最近是怎么回事,某明奇妙地容易伤感,可能受季节的感染的缘故,也或许自己本来就是个忧郁多愁善感的人。
+
+
+
+开学已经进一个星期了,却依然感觉不到任何改变。或者是很多东西都在不知不觉中变化了,只是自己太过于茫然的眼睛没有发现而已。
+
+写下这一段字,我抬起头回望四周。教室里,讲台上的老师依旧在那里讲着中国传统文化的历史渊源。而我们,却似乎没有人真正在意课程的内容。讲台下漫步的,是一张张略显呆滞的面孔。有人拿起手机看起了小说,玩起了游戏;迟到的几位还在呼哧呼哧的啃着馒头;昨夜挑灯夜战的几位同胞,现在已经安然入梦。而一切的一切,竟是那样和谐、生动,倘若一场现场直播的舞台剧,于其中的演员,便是我们。一切的解释似乎只因寂寞。
+
+很久之前就想写下这篇文章了,关于自己、关于大学、关于生活。感觉有很多话想要说出口,可每每张口欲言时,却不知从何谈起。记事本上密密麻麻的记录着各种计划,又不断地“胎死腹中”。或许人的天性便是这样——想的很好,在真正要实践时才发现,很多时候我们是无法真正左右自己的……
+
+每天,抬望眼,看窗前日出日落,感觉青春的年华正无可挽回的消逝。心里面满是空荡,感觉似有潮水在心中涌起,又在某个不经意的瞬间悄然而逝。心绪总在无可无不可,无意不无意之间,一切都像是软绵绵的。我这是怎么了?不禁扪心自问。
+
+大一的日子已经远去,大半个班的同学都选择了转专业,而那一张张昔日动人的故事和略显鲜明的面孔此刻正在我的记忆深处慢慢褪去颜色。宛如一张张破旧的黑白照片,铺满墙面,像是那丢弃的瓜子壳般支离破碎、面目全非。对于未来大三的实习,我不敢想象。从前听人说过:工作就像一面镜子,我们要撞碎它,然后擦着锋利的碎片走过,血肉模糊,迎来新生。也许,这抑或是另一种传说般的将来……
+
+夜色,洒满大地;星幕,挂上天穹。舍友早已入睡,齁声、虫声、键盘的敲击声让这夜愈发的静谧、安详。我荷起寂寞的锄,刨开相思的土,种下满院的荒芜。寂寞,是一只小小的舟,停泊在无人的野渡;寂寞,是一杯销魂的酒,让人不由自主,魂销骨瘦;寂寞,是一双深情的眸,怅望千里,凭空添出一段愁。某刻再回首,确是,陈柯断斧,几度苍凉。
+
+寂寞,那道不忍触及的痛。
+
+![](https://cat.yufan.me/cats/070145hzy.jpg)
diff --git a/source/_posts/2011-09-17.md b/source/_posts/2011-09-17.md
new file mode 100644
index 0000000..f887aed
--- /dev/null
+++ b/source/_posts/2011-09-17.md
@@ -0,0 +1,32 @@
+---
+title: 记忆 · 洗澡
+tags:
+ - 澡堂
+ - 记忆
+categories: 文章
+permalink: bathe
+featureImage: https://cat.yufan.me/cats/065859VR4.jpg
+id: 10
+updated: '2016-07-24 01:46:16'
+date: 2011-09-17 04:33:50
+---
+
+不知什么时候起,澡堂这个词离我们越来越远了;也不知又是什么时候起,热水器步入大街小巷。而澡堂,只能成为记忆中的点滴碎片,点缀成串,交织成一幅幅似曾相识的画面。
+
+——楔子
+
+记得小时候,我是怕洗澡的。不是因为洗澡不舒服,不是因为洗澡麻烦。而是因为,我是在女澡堂洗的。从小到依稀能够记事知道男女有别时,我一直是被妈妈带到女澡堂洗澡。可,这终究不是权宜之计,大概在我四岁那年,我便开始跟随老爸在男澡堂洗澡。而我最初的澡堂记忆,便是从那时开始……
+
+那时,该还是公元九几年,改革开放的大潮并未席卷全球,农村集体合作制依旧占据着主导地位。集体食堂、集体宿舍、集体澡堂也便是此环境下的必然产物。而乡下人,一般并不是天天洗澡的。纵使是炎热的夏天,也是一周去一次澡堂。所以每每到了周末,一家人要去澡堂时,便显得像节日一般的十分隆重。每到这个时候,忙碌了一天的老爸一手提着装着换洗衣服的手提袋,一手拽着我,走上很远去澡堂。故每到冬天寒风凛冽时,洗澡成为一种质朴的等待。
+
+进了澡堂大门,交了钱,跨过弄堂口,经过女浴室,便到达我们的destination。门口,照例是用棉绳撩起的厚重的破棉布。进了门,扑鼻而来的便是一股澡堂特有的湿漉漉的味道。劣质的香皂、发了霉的木头和才洗完澡的人身上热腾腾的热气构成了这难忘以忘怀的气味。洗发水、沐浴露一类的在那个时候还没有人用得起,上海牌的洗发膏和一元一块的廉价肥皂便是家家户户都爱的洗浴用具。
+
+放衣服的地方,是用水泥砌成的几条长条形石台,上面简陋的铺着一条草席。每次,照例是老爸把我抱上草席,然后不知从哪里用脚踢过来一双别人才用完的、带着水汽的、永远不合脚的塑料拖鞋。长年的使用,使它的表面处处开裂,走起路来一深一浅。然而没有人在意这些,因为此时大家已经进入了浴室深处。掀开帘子,充斥耳边的便是各种各样的怪叫和大人们的呵斥声。去了早的,还可以看到精彩的“弄潮”表演。因为条件的简陋,一开始,浴池里的水并没有混匀,往往是几个青年扑通跳下去,又被烫的哇哇怪叫的跳上来。照例是有几个青壮年会拿着盆,在池子里搅和一通,等水温上下均匀了才可以下脚。可是,水依旧很热。下了池子,不一会儿,便浑身通红似的像煮熟的大龙虾般的跳上来,如此反复。而老人们,却是不怕烫的,一个个半躺在池沿。或是哼着小曲,或是隔着老远的大声聊天。
+
+记忆之中的池水,永远是黄几几的。来得晚了,池底还会沉积起一层黄褐色的泥浆。也许就像《石头记》中得宝玉所言:女人是水做的,男人是泥做的。然而,依旧没有人在意,没有人会有所厌恶。大人们更多关注的是,池水够不够热,泡的舒不舒服。泡完澡,照例是要去冲淋浴。哪几个淋浴头水大,哪几个淋浴是坏的,每个人心里都有一本账。而往返于水池与淋浴室之间,看准时机的争抢,便是另一种不可或缺的技能。大厅里,那些泡完澡的老人们,一个个浑身冒着热气,靠在墙上幸福地打着小盹。时间对于他们而言,是极其缓慢的……
+
+这样的记忆一直延续到千禧时节,单位盖了新楼分了新房。从那时起,各家各户开始安装起燃气热水器。而澡堂,也去的越来越少了。随着生活条件的不管改善,澡堂最终成为一段逝去的历史,沉淀于记忆之中。无意中于图书馆看到杨绛大师的《洗澡》,那些似曾相识的情形在某个瞬间唤醒了尘封已久的记忆。深夜又去下载了同名电影,殊不知最后竟然看的热泪盈眶……
+
+时代的发展,总会带去许许多多的东西,楼宇替代了一砖一瓦的平房;新式五颜六色的时装抛弃了颜色土的掉渣的中山装、布拉吉;各色新时代的“三大件”叫嚣着自行车、缝纫机、手表的逝去……我,立身于时代发展的滚滚洪流之中,回视那些被人遗忘的过去。殊不知,一滴泪水,早已打湿我的衣襟。
+
+![](https://cat.yufan.me/cats/065900RrP.jpg)
diff --git a/source/_posts/2011-09-19.md b/source/_posts/2011-09-19.md
new file mode 100644
index 0000000..7410a16
--- /dev/null
+++ b/source/_posts/2011-09-19.md
@@ -0,0 +1,34 @@
+---
+title: 懵懂的年华
+tags:
+ - 懵懂
+ - 青春
+categories: 文章
+permalink: ignorant-age
+featureImage: https://cat.yufan.me/cats/0655220AY.jpg
+id: 11
+updated: '2015-04-16 01:39:03'
+date: 2011-09-19 06:39:10
+---
+
+记得当时年纪小,你爱谈天我爱笑。有一回我们并肩坐在桃树下,风在林梢鸟在叫。后来不知怎么我们睡着了,梦里花落知多少。
+
+——是为题
+
+现在已经是凌晨,放下手中握得发烫的笔,理清发胀的思绪,我开始想恋你。窗外响起了夜虫的鸣叫,隔屋传来了老爸均匀的呼吸声。我想,你应该早就睡了吧。轻手轻脚地摸出一本装饰精美的本子,我开始埋藏对你的不尽思念。
+
+
+
+拿起笔,又轻放下下。在身上擦了又擦才落笔,生怕不小心弄脏了那只属于你我的本子。不经意间眼前的本子似与你的面孔重合。那白皙的纸面恰如你那青春无痕的微笑,边角的几个小黑点正像那几个浅褐色的小雀斑。让人怜惜,不忍落笔。但,我还是写下一段文字,将一个不为人知的秘密藏在里面。哦,当然,你也是可以看的。只是,只是我还没准备好,怎么面对你。
+
+还记得某个夏日的午后。阳光洋洋洒洒地占据了每个角落。暖暖的阳光,安静的教室,让人不由的从心底萌发出一分倦意。讲台上,物理老师还在那里忘我的讲着相对论原理。对于早已听过竞赛的我,不听也罢。遂张望一番后我开始观察你的一举一动、一颦一笑。金色的阳光,挥洒在你的身上,给坐在后方的我蒙上一层阴影。从我的视角来看,阳光在你的黛青色的发丝间跃动,粉白色的发卡上波光连动,似因阳光的照射而散发出一层绮丽的光彩,顿生朦胧之感。而身着的一袭白衫,令原本皮肤白皙的你更加迷人。
+
+喜欢看你光亮的下巴和那微蹙的眉峰;喜欢看你咬着下嘴唇又松开,那下唇如何又沁红转白又变的更红;更喜欢看你额前的刘海,如何被风一次次地缭乱,又一次次的被你的素手撩起……而这样的观察不知有过多少回。
+
+在我的记忆里,起初,你是 不那么起眼的。噢,对不起,我一直生活在“他们”的世界,用“他们”的语言同你交流。用我的话说,起初,你那内敛的美丽并未被我察觉。不知是何时你的回眸一笑,亦或是某一刻你那恬静的安详。我开始喜欢上了你。只是这喜欢,来得太突然,来得让我自己也无法相信。
+
+遂不谈及这些,还记得你我初次见面的情形吗?新学伊始,我风风火火跑进才分好的理科班,却差一点把迎面走来的你撞个满怀。你满脸通红,低头从我旁边绕过。红扑扑的脸蛋,让人有一种上前咬一口的冲动。而那一低头的温柔,却恰似水莲花不胜凉风的娇羞。古人云:一笑倾城,再笑倾国。而你的娇柔却让我记住了你。随时间不断沉淀,演变为此刻的暗恋。
+
+低头看表,1:00了。遂搁笔,轻合上那本只属于你我的本子。哦对了,也祝你做一个好梦。
+
+![](https://cat.yufan.me/cats/065527Iwq.jpg)
diff --git a/source/_posts/2011-09-21.md b/source/_posts/2011-09-21.md
new file mode 100644
index 0000000..c539fd6
--- /dev/null
+++ b/source/_posts/2011-09-21.md
@@ -0,0 +1,38 @@
+---
+title: 碎花布裙
+tags:
+ - 布裙
+ - 过去
+categories: 文章
+permalink: floral-sarong
+featureImage: https://cat.yufan.me/cats/065244Fg2.jpg
+id: 12
+updated: '2015-04-16 01:49:38'
+date: 2011-09-21 00:33:58
+---
+
+时间的流逝总会带走些许旧事物,仅遗留下些许影子,投射于记忆之中。
+
+——题记
+
+儿时最喜欢做的事,就是傍晚同老妈的散步。漫步于夏日的傍晚,走过田野、小河,嗅着扑鼻的油菜花香,感受着迎面而来的略带凉爽的风。这大概是一天之中最惬意、最悠闲的时刻了。
+
+
+
+每到这时,妈妈便会脱去穿了一天的化验室白大褂,换上一身的小碎花布裙。白皙的布面上点缀着细碎的靛青色的未名小花。一袭碎花布裙却将妈妈内敛的气质完全烘托出来。远远望去,是那样的美丽、动人。
+
+曾读过张爱玲的小说,故事里的女子,无一不是身着旗袍。也曾在某本书上读过这样一句话:“每个女人都有属于自己的一身旗袍”。而妈妈却从未拥有过旗袍,那件布裙便是她的最爱。每次穿完,妈妈都要将它细心地洗净、晾干、小心地叠放于衣柜之中。也许这简单的碎花布裙,便是属于妈妈的“旗袍”吧。
+
+时代一直在向前迈步,总有许多东西消逝或者改变,仅仅存留于记忆之中……
+
+儿时常走的白马路,现在早已被灰尘覆盖,汽车一过,便扬起一阵沙暴;记忆之中的黄油油的田野,现在早已荒芜,无人耕种;而那袭碎花布裙,也不知被妈妈藏于某个角落,不再穿起……
+
+穿行于都市的大街上,迎面走来一群群年轻貌美的少女。她们穿着百样,T恤、衬衫、泡泡纱、超短裙……但,竟无一人再穿起昔日流行的碎花布裙。也许,它同昔日上海滩的旗袍一样,定格于过去的某个画面碎片之中了吧。
+
+每个时代都有每个时代的潮流。回想过去五六十年代的布拉吉、中山装,七八十年代的旗袍,新时代的多元化服饰。也许,这布裙在其中根本不算什么。就像大海之中的点点浪花,而它就是其中不为人注意的一朵,一闪而过,就此消逝。
+
+曾幻想过这样的情形:梅雨时节,一妙龄女子身着一袭小碎花布裙,漫步于雨后的小巷。黛青色的布料,靛紫的碎花,同这同样深灰色的环境交融。一如穿越千年的青花瓷般,在这雨后的小巷中渐行渐远。
+
+那是,一个永远不会褪色的梦。
+
+![](https://cat.yufan.me/cats/065244efc.jpg)
diff --git a/source/_posts/2011-09-24.md b/source/_posts/2011-09-24.md
new file mode 100644
index 0000000..7f2b071
--- /dev/null
+++ b/source/_posts/2011-09-24.md
@@ -0,0 +1,32 @@
+---
+title: 当青春不再魔法散场
+tags:
+ - 哈利波特
+ - 魔法
+categories: 文章
+permalink: harry-potter
+featureImage: https://cat.yufan.me/cats/065139M9K.png
+id: 13
+updated: '2016-02-17 20:03:01'
+date: 2011-09-24 21:07:26
+---
+
+对于今年的7月7日来说,是个值得纪念的日子,伴随着我们童年长大的《哈利波特》系列终于落下了帷幕。那些美好,柔柔消散,竟让人忍不住落笔想念。
+
+曾记否,那部《哈利波特与魔法石》从童年时光进入你我的生活。奇妙的魔法,飞天的扫帚,激动人心的魁地奇比赛。还有那繁华多彩的对角巷,不为人瞩目的1 3/4站台,丰富奇特的霍格沃茨魔法学校。无一不吸引着你我的眼球,挑动着我们的好奇心,去追寻、去探索。而这,便是我们青春与梦,记下我们最纯真的回忆。一次经历,一次纪念;你的夕阳,我的童年,谁的三分之一年?
+
+这些潮湿而又略带些温暖的记忆,不断于眼前浮动、破碎。回想起那些已逝的年华,我的思念化为细碎的雨,飘摇不定,醉倒于来时的路上。那些记得的忘记的,那些似水流年,时间总像细沙滑落于指间,记忆总像满地的碎玻璃,明媚中露着忧伤,让人心里面不由得的发胀。
+
+感谢JK·罗琳,是她,写下了这精彩的文字并搬上了荧幕。也由此,哈利、罗恩、赫敏这三个主人公同我们一起成长。从他们身上,我们总能找到些许自己的影子:友情、亲情、爱情;努力地学习、青春的懵懂、吵架与和解。他们就像我们一样慢慢地长大,慢慢地蜕变,慢慢地成熟。
+
+每个同时代的儿童心底,几乎都藏着一个相似的魔法梦。记得当年的我,就一直梦想着是否会有一天,会有一只同样的猫头鹰落在我的肩头,给我一张来自霍格沃茨的入学通知书。也曾想拥有一把同波特一样的“光能2000”,骑着它自由飞翔于天际……
+
+儿时的思维总是那么的天马行空,而以自己现在的成人眼光来审视,却是那么的幼稚好笑。对于已被埋葬的八度芳华,我所相信的真是就是绝大多数的同学奔波于月与月的三点一线,最大的悲剧就是父母的期待与失望,唯一的支撑就是未来。不知什么时候起开始忙于学习了,也未知从何时起我们放下了幻想。魔咒、神奇生物、魔法,这些昔日闪光的点滴记忆碎片早已被深埋于某个不知名的角落,不再提及。
+
+突然想起高三毕业时,同桌那个爱笑的女孩一直小声地哼唱一首歌:成长是一扇树叶的门/童年有一群亲爱的人/春天是一段路程/沧海桑田的拥有……我们都曾有过一张天真而忧伤的脸/手握阳光我们望着遥远/轻轻的一天天一年又一年/长大间我们是否还会再唱起心愿。
+
+谁的谁从你的花季里走过,留下笑颜;谁的谁曾在你的青春里停留,温暖了想念;谁的谁又从你的雨季里消逝,溢满了泪水……
+
+我们终究还是要长大,要放弃做梦开始忙碌。昔日的同学录上曾有这样一段话“青春就是一场奢华的电影,我们煞有其事的忙碌,只为最终礼貌的下台”。
+
+而此时,青春不再魔法散场。
diff --git a/source/_posts/2011-09-29.md b/source/_posts/2011-09-29.md
new file mode 100644
index 0000000..10a796c
--- /dev/null
+++ b/source/_posts/2011-09-29.md
@@ -0,0 +1,32 @@
+---
+title: 浅浅寂寞,淡淡想念
+tags:
+ - 寂寞
+ - 想念
+categories: 文章
+permalink: shallow-lonely-faint-miss
+featureImage: https://cat.yufan.me/cats/065009wP2.jpg
+id: 14
+updated: '2015-04-16 02:07:57'
+date: 2011-09-29 20:44:28
+---
+
+夜11:30,宿舍熄灯的瞬间,床头漆黑的夜色像某刻恬静的安详,心绪中无边无际的想念不觉纠缠。此刻,我想你了,好像此刻的孤单能有你相陪。将你们搂入怀中,轻嗅发丝间薰衣草的清香,心玄跟着挥舞懵懂。
+
+花季的末班车,上演了一场琴弦别离,天真的以为游荡的音符的我找到了五线谱的舒适,所以安静地只想走好高三的最后一段路途。那些欢笑、泪水、某刻的甜言蜜语,一切的一切,就此定格。就像孩童信手涂鸦般复写于人生里的第一个身份转角的路牌。
+
+过去一年了,三百多个日子,三百多种想法,三百多种心情,三百多次想念,三百多次回忆。
+
+时间总会改变许多,不只昔日素面朝天的笑颜,还有那言语中、故事里,悄然而逝的那份埋藏在彼此内心深处的真实。
+
+才上大学时,接到你的电话,跳动不安的激动,不停地打听各种故事,惊讶于许多事情。而一年后的今天,再次接到你的电话,却淡然安静的无话可说,只能沦为一个倾听者。对于你的一切,不再惊讶,或许天生爱笑爱闹的你到了哪儿都可以把它变成自己的小舞台,这些都是你该有的生活方式。一路的相随,你好像未曾孤单寂寞过。回顾过往的青春的尾巴,想起了昔日的你我……
+
+此刻的自己,正静然地坐在杳无人迹的自习室,不知从何时起习惯了这样的孤单,喜欢了这种静谧的想念。心跳的声音,呼吸的味道,手握浓茶的热度,敲击键盘的吧嗒,都像极了某刻内心的独白,抒写着一个沉思者最为深刻的内心沉淀。
+
+查看人人网上面大家的签名状态,仿佛每个人都在向前看,有些人已经开始了新一轮的奔波。而我,却不忍回首那唯一的美好,那段昔日的青葱年华,白衣飘飘的时代。此刻的我,只想放纵自己的悲伤、回忆、落泪,仅此于记述这段文字的时间里。
+
+我们都曾有一张天真而忧伤的脸,长大间我们是否还会想起那些记忆?
+
+不想述说,却依旧书写;不想回忆,却依旧想念;不想落寞,却依旧悲伤。
+
+记,第一次分手。
diff --git a/source/_posts/2011-10-03.md b/source/_posts/2011-10-03.md
new file mode 100644
index 0000000..2ac3451
--- /dev/null
+++ b/source/_posts/2011-10-03.md
@@ -0,0 +1,32 @@
+---
+title: 遗失的美好
+tags:
+ - 童年
+ - 记忆
+categories: 文章
+permalink: the-losted-beautiful
+featureImage: https://cat.yufan.me/cats/064253a3Q.jpg
+id: 15
+updated: '2015-04-16 02:19:27'
+date: 2011-10-03 06:19:35
+---
+
+如果海会说话/如果风爱上沙/如果有些想念/遗忘在漫长的长假/我会聆听浪花/任记忆里的爱情/在时间潮汐里喧哗,我会试着把那一年的故事/再接下去说完。
+
+——题记
+
+不知什么时候起,我睡着了。此刻,我猜,该是某个秋风乍起的午后。我蜷缩在外婆家门口的大藤椅上,头枕着小棉垫,身披着阳光,就这样定定地入睡了,那倾洒于身的光线已然没有了夏日的灼热,略显温和的温度辐射于这个清冷的初秋,让人不由得从心底萌发出阵阵温暖。
+
+在这样一个温热而舒适的午后,我坐在外婆家的门口同外婆一起晒太阳。调皮的光线透过门前大榕树上枯黄的树叶间隙在地上投射出斑驳的亮斑。也同时投射在窗前、门上,随着轻风的吹拂不断地跃动着、追逐着。树梢上那只不知名的鸟儿偶尔也会叽叽喳喳地叫上几声,是在自言自语?还是在述说沐浴阳光的喜悦?
+
+渐渐地、渐渐地,四周开始安静起来,不断刮起的微风颓然离去,枝头那只扰人的雀儿也似入定了般消了声迹。偌大的天地间仿佛只剩下了阳光和我,一切的其它都好似消散了踪迹。不知何时起,我也睡着了,四周静悄悄的,只剩下光线依旧温柔地拨动着我的眼皮,试图挑开我的双眼。
+
+可是我的感官却依旧清醒着,整个人似梦似醒,灵魂好似脱离了躯壳,俯视四周。远处街头马路上,一辆辆老式拖拉机哒哒而过。隔壁的黄奶奶正坐在门口,咔嚓的修剪着前些日子才摘的老南瓜藤,准备晾晒。一直四处觅食的野猫从我跟前走过,擦过我的裤管,轻声的哼着“喵”,见无人理会便又渐行渐远……
+
+而这一切的美好终究似梦一般破碎,那方记忆之中的阳光此刻也离我远去。那年年末,随父母离家去厦门谋生。都市的生活永远是喧闹的,白天的车水马龙,夜晚的灯红酒绿,没有了昔日小山村中的那份宁静与安详。而一座座拔地而起的楼宇,已然将阳光挡住,仅仅留下片片阴冷。突然想起自己很久没有像儿时那样毫无心绪地安然入梦了。一次次地从梦中惊醒,想起未完成的学业、计划,我的身后总是有一根温柔的鞭子,在鞭挞着我、激励着我,要为来日的生活奔波、奋斗。
+
+有些故事,有些情思,终究只能发生在我们童年的时光中。那时,我们可以有大把大把的时光来坐在草地上,数天上飘过的云朵,唱着最为童稚的儿歌。困倦的午后时光,喧闹的庭前树梢,外婆在那里慢慢的讲述的久远的传说。时间流逝,那些大把挥霍掉的日子,已然成为此时最为珍贵的记忆、瑰宝。飞扬的岁月、两小无猜的豆蔻年华,那些存在与头脑中的不尽故事,或属当时,或为过去。就像是那缕阳光,穿越了光与影的距离却终究只能在衣襟上留下一抹倒影。
+
+那方小天地,早已远去了。国庆时日的返乡,却发现昔日的院子早已拆迁。我哭诉、我追寻、我叩问,回应我的仅有天地间的那一道风声。
+
+童年,那段消逝的美好。
diff --git a/source/_posts/2011-10-05.md b/source/_posts/2011-10-05.md
new file mode 100644
index 0000000..aec6321
--- /dev/null
+++ b/source/_posts/2011-10-05.md
@@ -0,0 +1,34 @@
+---
+title: 梦断逆流河
+tags:
+ - 幸福
+ - 李献计
+categories: 文章
+permalink: countercurrent-river
+featureImage: https://cat.yufan.me/cats/063813dhX.jpg
+id: 16
+updated: '2015-04-16 02:32:39'
+date: 2011-10-05 04:39:00
+---
+
+也许这个世界上本身真的存在一条逆流河。起源于大海、终于巨峰之顶。传说中,如果有人能够达到它的尽头,便会获得幸福。而你我便是用一生来追寻幸福的青鸟。
+
+——是为题
+
+究竟是一条怎样的河流,竟会使得无数人为之追寻,甚至耗尽一生的光阴、年华只为一个子虚乌有的传说?
+
+也许从它诞生那一天起便注定了他一生的不平凡。因为它的与众不同,因为它的踪迹难寻,更或者,因为它的美丽传说。试曾想这样一条河流,波光潋滟,水声潺潺。有鱼儿在期间游荡,有大树在其旁相映成荫。看似普通的一条河流,可是它的水流却是从低处往高处流淌的,它便是逆流河。可是它又在哪里呢?
+
+突然想起昨晚跑到虾子酱的博客后看到的动画片《李献计历险记》,这是一部好坏参半的片子,有人捧也有人骂。但是当中的某些场景却深深地触动了我的心弦:故事中的李献计费尽心思地想打穿一部游戏,为此不惜卖肾、买毒品、走私国宝、和恐怖分子搏斗、将自己的手变成铁质的。因为,传说中打穿游戏后就能出现一扇门,借此可以通往任何时间。而李献计是为了回到当年和女友李倩相遇的那一刻,因为未来的女友不再爱他。可是当他真正打穿游戏回到过去时,却颓然发现通往过去的有无数扇门,于是他便一次次地打穿游戏,一次次地穿过各种各样的门。直到有一天在昔日的人民公园,那个美好而又淡然的午后,李献计又看到了昔日初见的情形。可是,他却再也无法迈出那一步了。此时的他已是蹉跎老人,而李倩依旧活在她的时间内,两人间已是两条平行线,再无相交的可能。
+
+你我其实就像李献计一样一直苦苦的找寻着世上唯一的“逆流河”,但是那些美好仅仅是存在于童话里,就想可以实现人们任何愿望的基拉祈、可以穿越时空的帕路奇犽和帝牙卢卡。那些奇妙的幻想只有童话里才能成真。
+
+其实,这个世界上本无逆流河,它只存于心间,是人们主观的一种幻想。而幸福,却是要用心感受的。就像欣赏宇宙星空一样,在沉默中感受它的博大精深。幸福,只存于心间,无需找寻,无需发掘。只要用心感受,定能发现其中那股的灼人力量。
+
+一直以来的找寻算是白费了,可是这世上同我一样的找寻者还有不少吧。曾看过一则寓言:有一个人用了一生来寻找美,他急匆匆的赶路,从不向四周多张望一眼,从不驻足留恋。于是他错过了绚丽的晚霞、色彩鲜艳的花朵……而这些便是他在找寻的美丽啊!
+
+身处美中,不知美。身怀幸福,却苦苦找寻幸福。这是不幸,还是悲哀?我想我还是不幸的好。因为这样就多了一份追求、一种渴望
+
+我想这个世上还是存在一条逆流河的吧。只是它与幸福无关,同所有的河流一样,只是一条略显不同的河流。而它,便藏在世界的某个不为人知的角落里。也许,终有一天我会找到它并于其旁定居。
+
+那时,该是陈珂断斧,几度苍凉。
diff --git a/source/_posts/2011-10-06.md b/source/_posts/2011-10-06.md
new file mode 100644
index 0000000..58eecbf
--- /dev/null
+++ b/source/_posts/2011-10-06.md
@@ -0,0 +1,38 @@
+---
+title: 光阴的故事
+tags:
+ - 我与狗狗的十个约定
+ - 方大同
+categories: 文章
+permalink: the-story-of-time
+featureImage: https://cat.yufan.me/cats/062751Yqp.jpg
+id: 17
+updated: '2015-04-16 02:50:04'
+date: 2011-10-06 11:03:48
+---
+
+“流水它带走光阴的故事,改变了两个人……”,耳机里一直重复地放着罗大佑的“光阴的故事”。沙哑的嗓音配上那忧伤歌词令人不觉心萌伤感。对于罗大佑写的歌,不但别的女子唱,他自己也唱。而唱得最为打动人心的,便是这首了。
+
+想想一首歌曲最为动人的地方又是什么呢?是歌词?是曲调?亦或是歌手的嗓音?不是,都不是。真正触动心扉的并不是那些表面上的“花饰”,而是歌曲之中所蕴含的点滴情思。换句话说,于细微之中现真情便是对此的最好诠释。
+
+
+
+时光匆匆而过,光阴的故事也在一直上演,不断回映。有些故事会就此忘却,再也找寻不回。而有些却又会铭刻于心,永不褪色。
+
+一直忘不了那部叫做《我与狗狗的十个约定》的影片,而它便是对光阴与感人的另一种诠释。主人公“我”一直想养一只小狗并有幸在自家的院子里面见到一只走失的小狗。而此时的“妈妈”身患绝症并将不久于人世。为了日后的“我”不会孤单,“妈妈”便同意了让“我”保养小狗的请求。并让我和小狗许下了10条约定,以盼小狗能在没有妈妈的的日子里同“我”相依相随。整个故事的情结也就此展开。
+
+十条约定,大部分都记不清了。但印象最深的便是最后一条“记住,我的寿命只有十年。当我老去了,即将死去时,请陪伴在我的身边。”十年的光阴,对于我们大多数而言,不长不短,只算得上生命的1/6左右。而这对于狗而言,便几乎是一生。岁月流逝,狗总是比人先老去、离世,仅仅留下不尽的悲伤和对于往昔欢乐时光的点滴回忆。正如作家塞缪尔曾说过的那样:当你把一只狗带回家时,也就把一颗悲伤的种子种在了你身边,十五年或者更短的岁月之后,悲伤之花绽放,给你满身伤痛后盘踞在你的心中……
+
+细数人生,又有几个十年呢?有时可能会觉得这有限的时间不够用,而有时也会觉得活这么久太无聊。然而时间,却是十分奇妙的。痛苦时会觉得一个小时比半天还长。高兴时,又会觉得一天比一个小时还短。十载岁月,像做梦一样长,又似梦后初醒一般渺茫。
+
+不觉在时光的流逝之中感伤。可任你怎般哭泣、落泪,他总是一刻不停地流逝。这一秒过去了,下一秒接着来了。
+
+记起十年前的我,还是一个乳臭未干的小孩,对于一切诸事不知。而现在,恍如一瞬,十年的岁月就这样消逝,我已长大,就像是在做梦一般。只是,这梦,就像盗梦空间里的梦的最深层,永远不会有醒来的那一天啊!儿时门前的那棵与我齐高的小梧桐树,现在俨然成材。就像《十年如昔》中说的那样,一个人的老去只要十年,一棵树的成长也只需要十年。
+
+十年的时间,可以发生很多事情,写下很多故事。恰如陈奕迅的“十年”中唱的那样,情人最终沦为朋友。就像《我与狗狗的十个约定》中的“我”最终长大成人,知道感恩父亲。也就像《再见可鲁》中的小Q,最终结束了导盲犬的使命。
+
+光阴似箭,岁月如梭。会想多年前的种种,许多至今还历历在目。但不知不觉又将度过一个十年。那就让这记忆中的点滴深埋于昔日的光阴长河之中去吧。
+
+只为,留予他年说梦痕。
+
+![](https://cat.yufan.me/cats/062751sgf.jpg)
diff --git a/source/_posts/2011-10-07.md b/source/_posts/2011-10-07.md
new file mode 100644
index 0000000..e283f75
--- /dev/null
+++ b/source/_posts/2011-10-07.md
@@ -0,0 +1,40 @@
+---
+title: 那些文字,那段情
+tags:
+ - 回忆
+ - 情感
+categories: 文章
+permalink: those-words-my-love
+featureImage: https://cat.yufan.me/cats/062326teI.jpg
+id: 18
+updated: '2015-04-16 03:04:25'
+date: 2011-10-07 13:36:39
+---
+
+又一次整理桌上散乱的纸张,无意中竟发现昔日尝试写的第一本同人小说的草稿,不禁有些淡淡的感触。那些文字,那些情感原来一直都存在着,只是我们未曾去发掘,便一次次地错失某些回忆。
+
+突然惊恐地发现自己距上次手写文章已经前后相距6个月了,自从有了电脑以后,习惯了坐在电脑前,一边打字一边冥想。就像现在,我写下这篇日志,而耳机里面一直在单曲循环着孙燕姿的《遇见》。只为,述说一个早已褪色的故事……
+
+相遇便是一种缘分。就像电影里的《向左走向右走》中的男女主角:一次次地错过,却最终因为地震还是走到了一起。
+
+曾几何时,你我还是小孩,对一切懵懂不知。旋转木马不停地摇曳,而你我,或许只该是两条本不该相交的平行线。而旋转的木马带动了时光齿轮飞转,种种的交织、纠葛就像看不见得丝线并连成串,最终将我们牵在了一起。这,也许便是说不清、道不明的缘分。
+
+厦门的87路在还未改道前几乎横穿小半个城市。高二的新学期伊始,我独自一人从始发站上车。依旧熟悉的街景,依旧冷清的车厢、依旧令人聒噪汽车发动机的轰响。我蜷缩在某个不引人注意的角落,静然地看着窗外两个月不见却依稀改变的街道。87路走走停停,似老爷车般缓慢而令人心烦意乱。每到一站,车门打开,便有一群叽叽喳喳的中学生和几位急着上班的白领挤下车,接着又迎来新的一批学生和白领。车厢内人头人头攒动,原本宁静的环境不知从何时起喧闹起来。环顾四周,我一下子便注意到了同样静静的“她”。背着一亮橙色的双肩背包,扎着两条垂及肩部的发辫,穿着同样略显单薄的衬衫的她一下子便吸引了我的目光,再也移不开来……
+
+想起纳兰性德的“人生若只如初见”,初见的那般美好,往往最令人陶醉。就像是我,仅仅淡淡的惊鸿一瞥,却早已喜欢上了这个女孩。也许,就像琼瑶小说中的一见钟情吧。只是,这一份想恋,仅仅只敢埋藏于心中,不敢说出口。
+
+“听见冬天的离开,我在某年某月醒过来。我想我等我期待,未来却不能理智安排……”
+
+一次次地早起等车,一次次的翘首以待,只为遇见那个心中的喜爱。多少次的注目远视,多少次的心怀想念,只因喜欢上了她。而作为另一主角的“她”,却对这一切毫无半分察觉。
+
+也许,她终究只是当我是一个常见的乘客罢了。也许她早已注意,却从心中将我否定。但也许,我们终究只是过客……
+
+半年后,厦门钟鼓山隧道开始通车了,87路就此改道。从那以后,我就再也没见过她。
+
+一直以来的单相思算是告一段落。可是,又有谁能说是真的结束呢?心底的那颗暗恋种子,早已生根,等待下一次的遇见。
+
+我想我等我期待,爱要拐几个弯才来……
+
+>后记:相逢是缘,看过了《想左走,向右走》后,不觉为男女主角的曲折爱恋所动容。我们都是一个残缺的圆,在茫茫人海中找寻另一半。一次次的遇见,一次次的等待再见。
+
+![](https://cat.yufan.me/cats/062326o1e.jpg)
diff --git a/source/_posts/2011-10-11.md b/source/_posts/2011-10-11.md
new file mode 100644
index 0000000..5c4b04b
--- /dev/null
+++ b/source/_posts/2011-10-11.md
@@ -0,0 +1,22 @@
+---
+title: 回首的瞬间
+tags:
+ - 亲情
+ - 点滴
+categories: 文章
+permalink: past-memory
+featureImage: https://cat.yufan.me/cats/054527TiW.jpg
+id: 19
+updated: '2015-04-16 03:21:36'
+date: 2011-10-11 18:15:37
+---
+
+喜欢一个人默默地伫立在窗口任清风袭来,带走心底的疲惫,仰望苍穹。闲看庭前花开花落,漫步窗外,静看云卷云舒。在这种种神神秘秘、没有世纪、没有怀疑的宁静中,闭目宁神,扇动你的鼻翼,带着点点滴滴泥土的神韵,飞往记忆的国度。在这种静得可以感受到心脏搏动的时刻,静得简直让人窒息的瞬间,使你的血液沸腾,心灵燃烧,任你生命之火尽情的奔涌、蔓延,直到生命危旦,直到心灵垂老。那是你会发现,回首的瞬间,很美。
+
+也许是偶然,其实必然。当你饱经沧桑,历尽生命铅华,蓦然回首,端视那一一留下的行走的足迹,你的心也会随之变得超然。过去的将会变成永远过去,在你转身默默行走中随风而逝,但消逝的终究是生命的容颜,保留的却是回忆的真谛。
+
+思绪纷纷攘攘:是谁陪我栉风沐雨,静看春华秋实?是谁用那轻轻地叮咛为我驱寒散热,却独自忍受着坎坷?又是谁忙里忙外,脚步匆匆,殊不知年轻的头上早生华发?哦,那是我的父母——我慷慨的父母,慷慨到用他们博大精深的无私的爱为我编制一双双坚硬、勇敢的翅膀,伴我飞翔;我吝啬的父母,吝啬到只愿独自咀嚼生活的艰辛,却把幸福的甘露任我挥洒。
+
+闲云坛影日悠悠,物转星移几度秋。岁月的每一痕迹,都在你经意或不经意时悄悄溜走,于是思念便成为唯一方式。回首的瞬间,从眼角流下多少感动,从眼角想起几分幸福?一颗感恩的心在胸膛里默默低诉,低诉多年的恩情,待话到嘴边时,却又不知从何说起。回首的瞬间,心中装满愧怍,汇集了吐不尽的懊恼,一棵坎坷的心最终逃不过良心的谴责,父母不辞辛劳,无悔地用辛劳和汗水编织的却在冥冥之中被我肆意地挥霍。记忆之中父亲的手是那样的光滑细腻而温柔,而如今那双温柔的大手上却布满辛劳与岁月的迹痕,有时候我甚至不敢相信那就是昔日握着我的小手的大手。在回首的瞬间,我们感怀亲情,感悟亲情,亲情就像一条,随我们不停地步行到天边,沉默的唇有千言万语,温馨的叮嘱有千万遍总在午夜梦回时,扣响我们的心扉。
+
+回首的瞬间,无限短暂而又无限悠长,因其时间短暂易被忘却,因其凝聚了生命的真实历程而无限悠长。瞬间的回首是历史的眼睛,遥看尘世悲喜故事;瞬间回首是时光的脚步,踏过多少历程;瞬间的回首是岁月的镜框,框住多少难忘的景象,所以我愿意菜撷瞬间——因为那时花开。瞬间很美。
diff --git a/source/_posts/2011-10-13.md b/source/_posts/2011-10-13.md
new file mode 100644
index 0000000..f76938b
--- /dev/null
+++ b/source/_posts/2011-10-13.md
@@ -0,0 +1,32 @@
+---
+title: 花开的回忆
+tags:
+ - 初中
+ - 拼搏
+categories: 文章
+permalink: memories-of-blossom
+featureImage: https://cat.yufan.me/cats/054419NKt.jpg
+id: 20
+updated: '2015-04-16 03:23:36'
+date: 2011-10-13 09:56:23
+---
+
+一些事物,总能给我无边的联想,这些联想似无逻辑,但我总是喜欢记下它们,也许是因为它们只属于我。
+
+——题记
+
+傍晚时分,云淡风轻,天气有些阴冷,走在通往食堂的道路上,我无意于过往的行人,目光在周围的熟悉的景物间游离。猛然间,我的目光停留在草坪间的一朵迟开的野菊花,在这个寒风凛冽的下午,别的花儿都已经凋谢的季节,它却以自己的那份坚强坦然面对那份孤独。对于自己的内心而言,我是一个喜欢寂寞的人。因为有时,一个人的思考,往往可以想得很多、很久。就像现在看着眼前的这朵随手拍下的野菊花图片,而我的思绪却飘飞的很远、很远……
+
+我曾经在厦门的大同中学度过两载初中时代,并在那毕业。所以,你可以很明显的发现:我是一名转校生。可是,与绝大多数人所不同的是,我是从济南转学到厦门。故,对于一个12岁的小孩来说,你可以想象这使一个多大的挑战。独自一人孤零零地坐在教室最后面的那个无光的角落,周遭的一切都是那么地陌生。新的环境,新的同学,不一样版本的课本,与别人相差很远的成绩……没有人和你说话,没有老师会注意到你的存在,仿佛一个透明人般被孤独所覆盖。
+
+而这,便是我的初二生活的内心的真实写照,在那段可以称之为暗淡无光的日子,每天的作息便是5:00的起床到23:30的睡觉。每天都是独自一人上学、独自一人回家,总是经过走过校外的一片荒芜花坛,一遍又一遍麻木地重复着这些相同的动作。有时真的很想找父母他人倾诉,可是双亲的操劳让我不忍心令他们再添负担。于是便一次又一次地从梦中醒来,担心将来的测验;一次又一次被同学孤立,以泪洗面;一次又一次看着卷面上刺眼的红叉,心灰意冷。忧郁彷徨的时候,思考着自己的无奈,或者是一种命运的注定,注定我一直向左走,向右走,最后竟又回到起点。站在原点,我不知何去何从,只能蜷缩在教室一角,学习着独自承受面对这一切。
+
+依旧是独自一人上学,依旧孤单孤单。直到有一天,当我再次经过那个大花坛的时,昔日那些一直被我忽视的小草,此刻竟然都变成了朵朵白花。白色略透鹅黄的六翼花瓣让人不由的打心底喜爱,而挥散的清香更是让人伫足观赏。花开的烂漫是那般美好,让我心底有些许的慰藉。想想一朵花开的过程是漫长的,或许它的一生都在默默积累,不为人所倾注,就像那片被我忽视了一年的“小草”。只有到了积累足够的那一刻,它才会开放,组成这天地间最为动人的光景。而人生,亦是如此。
+
+也就是在那年年末,经过无数个日日夜夜的努力,我的期末考试成绩进了年级前十,终于赢得了老师和同学们的认可,青春之花又一次在我的脸上绽放……
+
+感谢这些记得,这些光阴中的片段,他们让我知道,每一个成功的背后,都有无数为之奋斗而默默挥洒的汗水。那些掉落一地的花瓣,瓣瓣不相同。每一瓣,都是一道闪光的记忆。我记得这些光阴中的刹那,那些无法忘记的真实与疼痛。而人生中最美的一刻,便是拿到成绩单时的那份笑脸,便是我那些拼搏的日子吧。
+
+花坛里,那朵野菊花依旧绽放,纯白的花瓣纯白了记忆。但是,我不能停留,还得继续前进。我的前方,还有无数“关卡”要去超越;我的那朵生命之花,还在等待另一次的绽放。
+
+吉他、钢琴,平静地演奏着栀子花开,没有过多的起伏,这里只有淡淡的回忆,还有一份不舍,一分陶醉。
diff --git a/source/_posts/2011-10-14.md b/source/_posts/2011-10-14.md
new file mode 100644
index 0000000..236e904
--- /dev/null
+++ b/source/_posts/2011-10-14.md
@@ -0,0 +1,28 @@
+---
+title: 我是男生,不是女生
+tags:
+ - 婉约与豪放
+categories: 文章
+permalink: im-a-male-not-female
+featureImage: https://cat.yufan.me/cats/054356JoM.jpg
+id: 21
+updated: '2015-04-16 03:25:50'
+date: 2011-10-14 08:19:57
+---
+
+也许是我的博客的名字太秀气,也许是我之前用的主题太婉约,更或许是那个留言的小女孩头像惹的祸,总是有人把我当做女孩子。甚至,有人说我的真实姓名“雨帆”就是一个女孩子的名字。好吧,为了不再被别人误解,我的博客改名叫“且听书吟”,模板也换成了Deve。可是令人郁闷的是,还是有人叫我女生。
+
+昨夜整理博客留言,看到小白姐姐对于我的文章的评价,最终发现了缘由:我的文字实在是太女性化了。这或许也是一个令人哭笑不得的结论。
+
+
+
+文字,是思想的载体,很多时候,我的内心观,都是通过你眼前的文字来表达的。所以,你从我的文章中发掘出的那些细腻的思想,便是人性中女性的一面。而人性中所蕴含的男性与女性两方面,恰如哲学中的两个相互矛盾的事物间的关系。以辩证的眼光来看,它们相互依存却又不相互分离,在每一个人的身上都能完美体现。就像猛虎与蔷薇,一切的和谐之美便存在于矛盾之中。
+
+其实,每个人内心的思想都含有两方面;其一是男性化的,苍鹰、怒马、瀑布便是他的代言词;而另一方面,却是婉约的女性化的,像夜莺、像静池、像莲花。就像余光中曾经提到的那样:所谓的外向与内向。所谓的雄伟与秀美。所谓的金刚怒目,菩萨低眉。所谓的“静如处子动如脱兔”。所谓“骏马秋风冀北,杏花春雨江南”。所谓的“杨柳岸,晓风残月”和“大江东去”。一句话,《姚姬传》中所谓的阳刚和阴柔,都无非是这两种气质的注脚。而对于你我而言,便只是这两种气质的比例不同而已。
+
+突然想起那些思想家对于人与之有关的一切的不断探索。从“人啊,认识你自己”的那一声呐喊到卡夫卡的那句“人是一株会思想的芦苇”,我们从未停止过对于自身的思考。正是因为我们懂得思考,所以,每个人便显得那么的与众不同。也就是这样一根能思考的苇草,才有了对于人性中的刚与柔的讨论。
+
+每个人的心灵深处,都有一处花冢,埋藏着那些与自己本身性格相反的那些或坚毅、或凄美的不为外人所道的情感。这花冢,一直藏在某个不为人知的角落,总有一天会被情感所激发,使人觉醒。“天行健,君子以自强不息。”“花非花,雾非雾;夜半来,天明去,来如春梦几多时,去似朝云无觅处。”而一个完整的人生,便应同时兼具这两种情感。
+
+人啊,认识你自己!
+
diff --git a/source/_posts/2011-10-20.md b/source/_posts/2011-10-20.md
new file mode 100644
index 0000000..2c23ea6
--- /dev/null
+++ b/source/_posts/2011-10-20.md
@@ -0,0 +1,24 @@
+---
+title: 恋恋笔记本
+tags:
+ - 笔记本
+ - 记事
+categories: 文章
+permalink: loving-notebook
+featureImage: https://cat.yufan.me/cats/054334Khs.jpg
+id: 22
+updated: '2015-04-16 03:33:09'
+date: 2011-10-20 23:14:32
+---
+
+前天买了一本新的笔记本,拿到手,看着光洁的纸面,总想写点什么。可是拿起笔又放下,脑袋昏沉沉的,感觉就像时喝醉酒了般写不出东西来。最后就写个类似书本的引语。现在贴出来,大家勿笑哦。
+
+一直有收藏笔记本的喜好,一直喜欢记笔记。而时间,却总会将这纸面变黄、弄皱,消减昔日的光洁。所以,一切都会变老、变旧。但是永远不变的,却是我现在写在这纸面上的字。也可以称之为我的思想。
+
+本子买了一本又一本,可是却没有一本写完过,一本还没写几页,却又忍不住又买了一本新的。有时候老妈总是抱怨我买那么多的本子。可是这也许就是我的另一份爱好吧。
+
+突然想起前面一本蓝色皮套烙有喜羊羊图案的笔记本,它的纸张背景和它的封面一样可爱。每一张,都是一个与众不同的卡通图案,让人不忍心落笔留痕。可是,这样也失去了它作为笔记本的功能。在纠结于保留可爱和使用它之间很久后,最终决定再买一本,也就是现在我在写的这本。这也许是一种两全其美的办法吧。
+
+我是一个**男生**,最喜欢的颜色便是淡淡的天蓝色。也许是因为它们的读音都一样吧,笑。所以在挑选时在超市翻箱倒柜一番后最终选择了“你”。天蓝略泛白的封面,时尚而又个性的数字花案,传说中的不伤眼的黄色纸面。这一切都是我的最爱,我有什么理由不选你呢?就像那些墙角边的不为人注意的花饰,总有什么可以挑动你的心弦。
+
+最后为了防止我的笔记本弄丢,当然是要写上我的联系方式了哦。希望如果有哪位大大捡到它的话一定要联系我哦,雨帆在此感激不尽了。
diff --git a/source/_posts/2011-10-21.md b/source/_posts/2011-10-21.md
new file mode 100644
index 0000000..729618f
--- /dev/null
+++ b/source/_posts/2011-10-21.md
@@ -0,0 +1,32 @@
+---
+title: 风居住的街道
+tags:
+ - 童年
+ - 记忆
+categories: 文章
+permalink: the-streets-where-wind-lives
+featureImage: https://cat.yufan.me/cats/054259oxm.jpg
+id: 23
+updated: '2015-04-16 03:37:36'
+date: 2011-10-21 08:00:16
+---
+
+是风,拨动记忆的琴弦;是风,挑起心中的涟漪;是风,唤醒久违的思绪。
+
+——题记
+
+
+
+傍晚时分,走出昏暗的教室,秋风乍起,阵阵寒风袭来,不禁打了一个寒战。看到路面上随风而起的梧桐叶,一如疲倦了的蝴蝶。不知何时,北方的深秋,已然悄然而至。满目的萧瑟,却不颓废,充溢着诗情。抬头仰望45°的天空,依旧是黄昏暗淡,校园小道上行色匆匆的路人和校门口飞奔的车辆,一切无不体现着这灯红酒绿的城市机器的那让人窒息的快节奏。除了悠然慢行的我和道旁无言的树。可是,沉默的树儿,你懂我吗?
+
+伸出双手,让风儿从指缝间划过,刺骨的寒冷,铭心的疼痛,真实的记忆。身处繁华的都市,我却措手不及,在人群中踌躇,思念远方的小城,狭窄的小道,浓重的乡音,亲切的面孔,让我魂牵梦系。那座记忆之中的小城,那些风儿居住过的街道,一切的故事便是从这里开始……
+
+时光流走,阔别故土,已然有十载有余。露从今夜白,月是故乡明。梦中每迷还乡路,欲知晚途念桑梓。此刻的风儿,就像故乡的信使,呼唤着我的归去,也在我的心底漾起层层涟漪。一年又一年花开花落,而风儿年年依旧。它从未死去,又从不变老,引异着此刻周身的黄绿交织,维系着外行游子的浓浓情思。
+
+此刻闭上双眼,我的思绪仿佛随着身边的风儿一起掠过故乡的街道、田野。我仿佛听到了风拂麦田的声音,那动态又轻盈的美的旋律。这是风的动情,也是麦的韵律。风推着麦,麦打着风,一次又一次地拂过。我好像看到了傍晚晚归时的家家户户屋檐上的炊烟,那靛青色的烟尘在风中轻抚变形。无论怎么看都像是一幅悬腕挥就的狂草,风影乱舞。改虚的地方虚,该实的地方实。那是我们在纸上无法辨别的,真可谓天书了。风夹着炊烟,掺杂着人的欢声笑语,构成了那幅乡村傍晚图景……
+
+可是,为什么美好的时光总是消散的那么快呢?一眨眼,我已离它远去。而自己,也忙于学习之中,再也没有昔日的那份闲情去回忆。
+
+睁开双眼,依旧是满目的萧瑟。我继续向着自习室迈步。而那些记忆,那些思念,已然随着风儿,渐行渐远……
+
+![](https://cat.yufan.me/cats/054259UwS.jpg)
diff --git a/source/_posts/2011-10-23.md b/source/_posts/2011-10-23.md
new file mode 100644
index 0000000..f141938
--- /dev/null
+++ b/source/_posts/2011-10-23.md
@@ -0,0 +1,32 @@
+---
+title: 亮剑
+tags:
+ - 亮剑
+ - 高考
+categories: 文章
+permalink: show-the-sword
+featureImage: https://cat.yufan.me/cats/0542447jV.jpg
+id: 24
+updated: '2015-04-16 03:39:46'
+date: 2011-10-23 09:31:34
+---
+
+两位剑客狭路相逢。对方身怀绝技、早已是风动江湖、举世皆知的青年才俊。而你,只是一个名不见经传、只有一本下品武学的小卒子。是该退避其芒,还是挺身向前?我答:“亮剑。”
+
+——题记
+
+我们都是一名剑客,仗剑游行于江湖之中。只是这里的江湖不似小说里面的那样充溢着刀光箭雨、血肉纷飞。没有侠客魂、柔女情,有的只是无声的较量,没有硝烟的斗争,不屈的追赶。而这,便是你的江湖,我的战场。
+
+我们都是一名侠士,耗尽几乎全部的青春年华与心血打造那把只属于你我的剑。“宝剑自从磨砺出,梅花香自苦寒来。”为了勤练剑术,我们三更眠,五更起;为了赶超他人,我们寒来暑往,风雨未停;为了这把剑,我们付出了太多太多。
+
+我们铸剑做啥?我们为何勤练剑技?我们身处何方?哪里是江湖?何处才是我们可以为之挥洒血泪的地方?
+
+看过《碧血剑》,便为其中的金蛇郎君所折服;看过《诛仙》,便为陆雪琪所叹惋。这里是剑客的江湖,亦是江湖的剑士,我们亦是其中之一。人在江湖,身不由己。为了成名,为了成为众英杰中敢执牛耳者。我们亦是身怀这样的信念,日日闻鸡起舞,不断寻觅新的对手,一次次的失败跌倒,又一次次的重新站起。这一切的宿命与无奈,从我们踏进江湖的那一天开始,便就此注定。
+
+我无门无派,只是一介底层小散修。没有精妙的武功心法,没有旷古的武器,有的,只有自身的不懈努力。而那些宗派的精英,个个身负绝世功法,神兵利器,在他们眼里,我是蝼蚁一般的存在。但是,我亦有梦,当我面对他们时,唯一能让我坦然的便是最初的梦想。那就是,打败江湖中的所有剑客,置身于武道的最顶峰,俯笑终生……
+
+一年一度的武林精英宴于华山峰顶举行。这是为江湖豪杰所瞩目的、全武林的胜事。常言道:“十年磨一剑”。而为了这天的到来,我苦战了十多年。可是纵使我自创神技,自铸好剑,我还是不如那些青年才俊、天之骄子。是逃避、还是向前?我答:“亮剑。”
+
+狭路相逢勇者胜。
+
+>我把自己想象成为一名剑客,江湖便是由莘莘学子所组成。每次的比试,就是一场考试。学习的过程便是铸剑,练习剑术。而高考便是亮剑之时!
diff --git a/source/_posts/2011-10-26.md b/source/_posts/2011-10-26.md
new file mode 100644
index 0000000..4f21ba4
--- /dev/null
+++ b/source/_posts/2011-10-26.md
@@ -0,0 +1,29 @@
+---
+title: 坦然面对
+tags:
+ - 人生
+ - 挫折
+ - 面对
+categories: 文章
+permalink: face-the-fact
+featureImage: https://cat.yufan.me/cats/054235pBR.jpg
+id: 25
+updated: '2015-04-16 03:41:19'
+date: 2011-10-26 21:19:21
+---
+
+无论你愿不愿意,我们必须面对生活呈现给我们的一切。
+
+——题记
+
+生活中,我们要面对很多,有好的,有坏的,但无论好坏,都无需埋怨,人生的路途就是这样。抱怨没有用,逃避不可能,人生是现实的,现实的人生还需要现实的方法处理。无论什么困难,除了坦然面对,我们别无选择。
+
+野草的生存环境可谓恶劣,光照不足,营养不良,被人随便拔去,锄去,被人随意践踏。可是,他仍然在人们不知不觉中壮大起来,仍然活的精神又起劲。它的微贱正衬出它的骄傲,它的不受宠正显出它的坚强。那么作为万物之灵的我们,有什么理由不坦然面对人生旅途中的一切呢?
+
+能够直面人生的不幸,说明你是镇定的,只有镇定才能自若,只有自若才能从容,从容了也就坦然面对了。而不敢面对,指挥使自己陷入到一种不幸的重重包围之中,茫然四顾不能自拔。生活是豁达的,只要你真诚地面对,都会得到它的宽厚的回报,上帝给我们的这个世界是要我们用乐观的态度去诠释的,应为我们看它好的时候一切都会好。假如我们处处想去揭穿生活的假象,那么我们只有失望了。而失望的生活并不可怕,可怕的是我们面对它的态度。
+
+面对善良,我们回报以真诚的微笑,我们渲染以刚毅的色彩。面对沉默,我们装点以宁静的氛围。而面对失望,我们要坚强乐观。面对失败呢,我们要积极进取。当面对你自己的初衷,面对你的灵魂,面对你的良心,你可坦然地说句无怨无悔,那么你已学会了坦然面对。
+
+坚强的人生对挫折总是轻描淡写,因为他不怕面对失败;胆小的人说起失败总是谈虎色变,因为他害怕面对。其实,人与世界的永恒画面是:征服与被征服,只要我们敢于面对现实的人生,就没有什么可以打败我们。
+
+然我们每天拥抱阳光,不回避阴影,坦然面对人生的喜悦和成功,坦然面对人生的挫折和失败,就会看见那条充满阳光的彩虹。
diff --git a/source/_posts/2011-10-28.md b/source/_posts/2011-10-28.md
new file mode 100644
index 0000000..cf10b34
--- /dev/null
+++ b/source/_posts/2011-10-28.md
@@ -0,0 +1,40 @@
+---
+title: 黄梅细雨
+tags:
+ - 梅雨
+ - 记忆
+categories: 文章
+permalink: south-or-north
+featureImage: https://cat.yufan.me/cats/053958N70.jpg
+id: 26
+updated: '2015-04-16 03:50:41'
+date: 2011-10-28 08:11:03
+---
+
+# Part 1
+
+白马秋风塞上,杏花春雨江南。塞上是空旷的、粗犷的,能与之相配的,只有那萧瑟的秋风,疾奔的白马。而与之相对的江南,则是婉约的、柔美的,如同多情的女子。正如诗人所言,只有杏花、细雨才村的出、配得上这美。也正如此,从而更显得江南的雨别有一番韵味了。
+
+在曾经的的记忆里,雨,应该是匆忙的。急急的来、急急的去,不给人以半分准备与留恋。到头来,看到了地上的潮湿和水洼,才知道这儿曾经下过一场雨。来得快、去得快,这恰是厦门午后的暴雨的特点。在厦门一住就是七年,对于这种雨早已习惯了。而潜意识之中的雨,也应是如此。
+
+可是这江南的雨,却彻底颠覆了我以往的观点。初回老家时,还是夏至未至。而这雨,却早已与我不期而至了。天空明亮,细雨婆娑,似有似无。不像轻纱,笼罩在心头。烟柳画桥,如梦如幻。不像大陆东海沿岸的雨,来去无意,不带半分留恋。也不似北方济南周边的雨,夹杂着灰尘、落叶,铺天盖地向你袭来,无处可藏。而此时,半边烟雨半映山。一股久违的熟悉感充溢于心头,儿时故乡的雨就是这样啊!故乡我回来了……
+
+# Part 2
+
+漫步于乡间的天田埂上,头顶上依旧在下着小雨。小雨沾衣,却浑然不觉。这雨,竟不再似雨,到成了天地间的另一种装饰。雨滴彼此串连着,组成一幅水帘挡在了眼前。四周之景看不真切,模糊又迷离。这迷蒙的小雨怎能不令人满心欢喜?远处郁郁葱葱的树木,身旁潺潺的流淌的水,还有那翠绿的稻田。都在这细绢般的雨下无声的浣洗。洗去一身的灰蒙,更添一分别样的艳丽。一切周身之景就像一幅挥毫泼墨而就的水墨画,又似一个难以企及的梦,触动了我心中的某处柔软,绽开了朵朵涟漪。真可谓“细雨湿衣看不见,闲花落地听无声。”
+
+# Part 3
+
+一连几天,这雨竟一直未绝,时断时续。下时,也不过两三丝。才将地润湿,竟又没了踪影,无处可觅。黄梅时节,最常见的便是这种雨。小时候,每到这个时节晴天时,老妈总会把许多压箱底的被褥、衣服拿出来晾晒,以防发霉。而此时的空气,也极为湿润。有时悬挂于屋檐下的大蒜籽而,竟会发芽。故梅雨,霉雨也。
+
+穿行于故乡的小巷之中,踩着水洼,扣着青苔,历数墙壁上的斑驳,无处不见梅雨的影子。地理书上曾经说过,淮河沿岸的梅雨是由江南准静止锋形成的。可我总觉得,如果将如此一个灵动的事物用条条框框将之定义、束缚,那将会失去多少活泼与自然啊!
+
+# Part 4
+
+不管大人们对于梅雨有多么的不满,我偏爱这梅雨,不为它的朦胧,不为它的轻盈,只为偶然相遇时的惊喜。就像是一种等待,可另一方迟迟未来。当你心灰意冷、失去耐心之时,对方却突然到来。本来明明有所准备,此刻却像失了魂般慌乱。正如稼轩所言:“众里寻他千百度,蓦然回首,那人却在,灯火阑珊处。”下课了,看看窗外。原来是风烟俱净,此刻却纷纷扬扬的下起了雨。低着头,踏着积水。一路小跑地向着宿舍赶去,青春、活泼。记得儿时的下雨天,我没带伞举着书包向家赶,最后一身烂泥的滑稽样。又想起语文课上老师说过的:“下雨天,留客天。天留我不?留!”的精妙断句。雨中的奔跑,总令人遐思甚远。
+
+也许每个人心中总有这样一处地方,埋葬着磅礴凄美却不为外道的情感。而故乡的梅雨,却像一把钥匙,解开了心头那把厚重的大锁,释放出那些久违的思绪。
+
+雨,带给我簌簌的微思。似看不见的手指,在我的心头上不断奏着潺潺的乐曲。看看窗外,天黑了,雨停了,心底浮现出一行字来:记忆即为温暖,至美就是永恒。
+
+——写于:2010年 5月 梅雨时节
diff --git a/source/_posts/2011-11-24.md b/source/_posts/2011-11-24.md
new file mode 100644
index 0000000..7a0ec60
--- /dev/null
+++ b/source/_posts/2011-11-24.md
@@ -0,0 +1,28 @@
+---
+title: 雨后便是晴天
+tags:
+ - 回忆
+ - 情感
+categories: 文章
+permalink: sunny-day-after-rain
+featureImage: https://cat.yufan.me/cats/0525007fa.jpg
+id: 27
+updated: '2015-04-16 03:58:09'
+date: 2011-11-24 03:56:07
+---
+
+最近一段时间济南阴雨连绵,窗外的天空中的雾气与那迷蒙的小雨掺杂在一起,到有一种不真切的烟雨江南之感。但是这里是北国,时至深秋时节,济南的天气却是像书上说的那样,一层秋雨一层凉。
+
+瑟瑟秋风刺痛着人的面庞,校园的道路上的行人日渐稀少、行色匆匆,地上堆积的厚重的落叶,夹杂着树枝、泥沙与雨水的混合物。我在雨中一边行走一边小心翼翼地避开一个又一个的水洼。不经意间雨水从伞的缝隙间落下,打在额头上。冰凉的感觉让人心里一突,自己也仿佛变得清醒了许多。突然想起昔日某刻姣好的面容,是放不下,还是相忘于江湖?
+
+
+
+灰蒙蒙的天空,承载着些许思念,幻化成了雨,散落在都市的每个角落。想起三毛的浪漫:我每爱你一次,天上落下一粒沙,从此便有了撒哈拉。我每想你一次,天上落下一滴水,从此有了太平洋。此时落下的雨滴,每一滴都装载了无尽的思念与牵挂。静静地走进楼内的那一刹那,从门口的玻璃门中看见此时得分自己。雨珠,伴随着我的泪水,悄然落下,一切,都是忍不住的想念与回忆。
+
+也许在某一天会再次相见,所以不停地狂奔,竭尽全力,直道一切都消失不见。望着自己的影子被路灯拉得长长的,看着我的眼泪慢慢的落下,失落难过顿时充满四周,挤压着自己。无尽的悲伤与寂寞源源不断的,将整颗空虚的心填满……
+
+前天早上,一直连绵多日的雨终于停了,暖暖的阳光洒向依旧寒冷的空气,让人突然觉得这短暂的温暖是那么的来之不易。搬出被子到阳台上晾晒,换一换略带“发霉”的心情。
+
+傍晚的阳光柔情蜜意地抚慰着阳台,透过走廊尽头西向的窗台,刚好在门前,它毫不吝啬。找任何存在的缝隙给我们更多的光亮,那是一段金黄,更加让人想到可贵的阳光,让人惜之倍分。而我们无法阻止它失去的脚步,好的时光总是短暂,而只用静静的感叹和享受它的存在,正像有些人,注定只能陪你走一段路,而不会伴你一生,拥有时懂得珍惜,失去时请不要哭泣。
+
+虽然我无法做到,但我想:在阳光的照射下,应该吧心情拿出来晒一晒,忘掉悲伤,去寻找短暂的快乐。这,不是很好吗?在充满阳光的道路上,也许只有孩子明白:雨后便是晴天。
diff --git a/source/_posts/2011-11-25.md b/source/_posts/2011-11-25.md
new file mode 100644
index 0000000..3d159c4
--- /dev/null
+++ b/source/_posts/2011-11-25.md
@@ -0,0 +1,34 @@
+---
+title: 十一月的琥珀
+tags:
+ - 琥珀
+ - 生日石
+categories: 文章
+permalink: the-amber-in-november
+featureImage: https://cat.yufan.me/cats/052142rme.jpg
+id: 28
+updated: '2015-04-16 04:10:32'
+date: 2011-11-25 20:28:08
+---
+
+琥珀,十一月的生日石之一。此时谈起,正当其时。
+
+相信我们小学的时候都学习过这样一篇课文,名为《奇异的琥珀》。讲的就是一万年前的某个夏天,一滴松脂将两只小虫包裹起来,历经沧海桑田的变迁,变成了化石。而后的某一天,被人发现了,于是它便有了一个新的名字——琥珀。
+
+或许这个故事就是我们对于琥珀最早的印象吧,一个神奇的故事,一段凄美的传说。
+
+研究上说,琥珀的年龄在200万年到3.6亿年之间,但大多数宝石级的琥珀的年龄在500万年到5000万年之间。在漫长的历史长河中,它也被人类冠以各种各样的含义。如:在拉丁文中指“精髓”,在阿拉伯文中是指“胶”,而在中国古代,我们叫它“虎魄”。就在今天,琥珀也依然有许多不同的用途。因为美丽以及拥有能够保持史前生物有机组织的奇异能力,它同时赢得了宝石收藏家和科学家的青睐,成为一扇探索久远过去的窗户。也因其奇特神秘,人们还赋予它许多象征的字眼,如爱、力量、幸运、魔力、保护以及安神等……
+
+正是由于琥珀有如此多的非凡魔力,才使无数人与之结下了不解之缘。缘生情,情更浓。不知从何时起,这个可爱的精灵便于人世间最伟大的情藕断丝连,斩之不断。
+
+此时,耳畔又响起水木年华的那首《琥珀》:为你守候一扇窗/不管黄昏或黎明/生命每一次跋涉/付出每一分情/为你守住一分缘/翻开风雨不在乎/生命每一次等待/换回每一寸心/我只想感谢上天/让我与你相识/一生不悔的执着/只因这世界有你/给你琥珀的心,琥珀的情/你是我一生的风景/给你琥珀的泪,琥珀的痛/你是我千年不陨星……
+
+无论是水木年华深沉又有力的《琥珀》,还是孟京辉的音乐剧《琥珀》,亦或是大提琴家郭虔哲的《凝结在琥珀里的爱情》,无一不是在向人昭示着一种浪漫唯美的爱情。至于凯瑟琳·温莎的小说《琥珀》,更是将这种琥珀之情在17世纪的英国传颂了个遍,怎能不令俗世间的男女动容?
+
+琥珀,古朴含蓄、深沉典雅,给人们一种安详恬静的心灵享受。精致的外观、丰富的色彩,轻巧和美感的手感,将含蓄的智慧送传给人间。由此,我想到了薰衣草。一种原本只生长于法国的普罗旺斯的浪漫植物,相传有一个美丽的传说。“我是你远行的心”便是关于见证薰衣草见证爱情传说中的一句话。那个久远的爱情故事还说:薰衣草的香气可以使不洁之物现形,可以慰藉受伤的心灵,一束美丽的薰衣草能叫人等待爱情的到来。热烈、坚定、浪漫的薰衣草抚慰着人得心灵。
+
+一样温暖的名字,一样温馨的表达。瞧,它和琥珀是多么地相似。
+
+琥珀,时光的固化,瞬间的永恒,凝结着千百年的生物能量,在蕴含无数神奇传说中,以其浑然天成的古朴庄重之美,温润中透出古典之气,散发出独特的迷人魅力。它,不仅是一个美丽的传说,更是11月份出生的一种缘,起于千万年之前,留下了最后的缠绵……
+
+![](https://cat.yufan.me/cats/052142LSs.jpg)
diff --git a/source/_posts/2011-11-29.md b/source/_posts/2011-11-29.md
new file mode 100644
index 0000000..fffd5d9
--- /dev/null
+++ b/source/_posts/2011-11-29.md
@@ -0,0 +1,28 @@
+---
+title: 写在今天——记重新开始写博
+tags:
+ - 未来
+ - 起点
+categories: 文章
+permalink: restart-the-blog
+featureImage: https://cat.yufan.me/cats/052137tPV.jpg
+id: 29
+updated: '2015-04-16 04:15:15'
+date: 2011-11-29 21:16:29
+---
+
+>Today is the first day of the rest of my life, I wake as a child to see the world begin. On monarch wings and birthday wondering, want to put on faces, walk in the wet and cold. And look forward to my growing old, to grow is to change, to change is to be new, to be new is to be young again, I barely remember when.
+
+
+
+花了半个多月的时间备案,最后实在是忍受不了缓慢的备案审核,在这个寒冷的11月底搬回了墙外。唉,又是一段漫长的搬家,忙好七七八八的东西后已经是午后5点。初冬的济南天黑的特别早。想起两年前的今天,我应该是高中放回学回家的路上,车窗外,光影流年、万家灯火。即使是在经历过两度春秋的今天,我仍可以真切地记起那时的情景,灯火通明的街道,行行色色的路人。那般真实,仿若不食人间烟火……
+
+记忆这个东西总有点不可思议。实际身临其境的时候,几乎未曾意识到那片街景,未曾觉得他有什么撩人情怀之处,更没想到两年之后的历历在目。就像不久前看到的一条新闻,说新闻联播要改版了,那首伴随了国人长达23年之久的片头曲也会被新曲所代替。有些人为此惋惜不已,因为那首承载了他们多少年的记忆,每天晚上听到短短的16秒的音乐,就预示着饭点到了。对于许多人来说,那不只是一段音乐,更是一种精神寄托。如今要改变这已经习惯了的老曲,倒是真的有点舍不得。
+
+不过在我看来,有些改变是必要的,或许这一个个的小改变组合在一起,就形成了一个时代、一种文化的终结,也就预示着新的时代的来临。在不同的时间段内,我们需要赋予它不同的意义,为它注入新的血液,才能成为一个跨越。也正是有这些一点一滴的改变,日积月累,才能开启新时代的篇章。唯有不断改变、不断进步,才能有所突破。我们要做的便是顺应这些变化,珍惜现在、时间,以迎接美好的未来。
+
+人生莫过于如此。时间的转轮一刻也不停歇,每天,时光都在悄悄地溜走,此刻的你是未来的时光中最年轻的。但是,你不必要为失去的时光留恋惆怅,也不必为即将到来的时光担忧迷茫。珍惜现在,你会发现,人生的道路上其实有很多精彩。朋友说我已经有了初老的迹象,对过去的事情记得很清楚,对近来发生的总是忘记。或许人长大了,总会怀念过去的时光,相比现在的忙碌与压力,许多人宁愿选择活在过去的世界里,沉湎于过去不可自拔。人总有怀旧的时候,我也会,但如果总被过去所束缚,逃不出旧有的圈子,那只能是对于现实的逃避,大好的青春都浪费在迷失里了。换一个角度,倘若在未来的某一天,当你回首往事的时,却发现,那些本该应有青春活力的日子却被回忆所占据,那时候,你又能拿什么去回忆呢?
+
+《功夫熊猫》中师傅教育阿宝说:”Yesterday is history,tomorrow is mystery,today is god's gift.“所以让我们一起珍惜今天这个上帝给予我们的礼物。Because today is the first day of the rest of my weblog's life.
+
+仅以此文纪念我的博客的另一个新的开始。
diff --git a/source/_posts/2011-11-30.md b/source/_posts/2011-11-30.md
new file mode 100644
index 0000000..86183b9
--- /dev/null
+++ b/source/_posts/2011-11-30.md
@@ -0,0 +1,32 @@
+---
+title: 2011年的第一场雪
+tags:
+ - 济南
+ - 雪
+categories: 文章
+permalink: the-first-snowing
+featureImage: https://cat.yufan.me/cats/051754EmM.jpg
+id: 30
+updated: '2015-04-16 04:19:29'
+date: 2011-11-30 17:37:31
+---
+
+角落里有一片暗雪/我猜它会是/一张被雨水冲着/想在那里休息的报纸/它的周身/被不大的印字布满/一天的新闻恰如历史的一粒微尘/曾经存在/却又慢慢的变得微不足道。
+
+
+
+昨日傍晚时分,天上开始由小雨转为小雪。我坐在暖暖的自习室里看着书,却不知,外面早已下起了雪。某刻被女友云儿的推去看雪,才发现,窗外早已是银装素裹。
+
+外面的雪下得好欢快呀!喜欢冬天,因为自己喜欢下雪的日子,喜欢雪花洋洋洒洒的飘落。今年的雪来的比去年早了很多,还记得去年那场薄薄的小雪,只把地面刷白。而今年的上天终是不吝啬,在11年11月的最后两天给大地披上了洁白的衣装。
+
+大雪点亮了齐鲁大地,也用无瑕的白色刷新了我们的校园,远望去,红色的教学楼,淡黄色的宿舍楼更显得稳重和温馨。我喜欢雪却没有为什么,只是喜欢。这种白色充满光亮的白色,可以把所有的不光彩的尘埃、垃圾、枯枝烂叶一起盖在下面,而只允许人们去寻找和探索雪下的事物。大雪给本来郁闷几分沮丧的我带来了一点欢快和舒心,真是好雪。
+
+夜晚,雪花透过漆黑的苍穹飘落人间,它们在自习楼前的路灯照射下显现点点身影,在风中时而左摆时而右摆快活的活动着。它们很像一群有生命的洁白的小精灵,相互嬉闹着,集体飞向某方,前面的忽然停住了,后面的也跟着回转,似乎听到了前面雪花兄弟姐妹的呼声:再走就撞墙了,撤!于是乎又集体跑开了。偶尔有几个淘气的小精灵前来伏在面前的窗玻璃上,静静的,这才发现它们是那样的娇小,却很快只剩下几点晶莹的水点。想起论坛上有人贴过的雪花的容颜,放大了几十倍的,很是漂亮。简单中透着复杂,丰满和谐,六边形的骨架自然美观。不晓得大自然如何构成如此小巧的规范,更难以想象他在雪花六个枝上做的手艺……
+
+雪花飘落,在世界的各个角落找到了自己的位置,有的落在水泥地上,化成了水,是哭了吗?至少为后来的雪花润湿了栖身之地;有的落在草地和松柏上,在黯淡的夜中透着洁白的靓影,想像它们在枝丫上你推我挤的闹得不亦乐乎,这时我想起了日本宫崎骏的“鹿神”,茂密的丛林中小孩样的木精们从树干的罅隙中钻出来晃动着脑袋发出的哒啦啦哒啦啦的弹性的声音,时而又将脑袋转个360度,也是你推我挤得,有时背着伙伴在树间走来走去,表情丰富的露出累而调皮的神情。想象着想象着,心底萌生出几分喜悦。
+
+想起初一时看过的一部名为《我的兄弟姐妹》的老电影,其中的情节,已经非常模糊了。却一直记得其中的一句台词:兄弟姐妹们本是天上的小雪花,落到了地上,结成了冰,化成了水,就彼此再也不分开了。瑞雪寒冬,独在异乡的我是那么孤独。就像是空气中依然在恣意飞舞的雪花,一直流浪、漂泊。但是,落叶归根、老燕识巢,迷途的游子离不开的是远方的亲人。拿出手机,拨通厦门母亲的电话问一声安好?便心安,厦门依旧温暖如春。
+
+再次回望窗外的雪景,月亮已经出来,照射在雪地上,伴着浓雾反射出一片银白色的辉光,似是天上的宫阙。真可谓一场好雪!
+
+![2011年的第一场雪(2)](https://cat.yufan.me/cats/051754jU0.jpg)
diff --git a/source/_posts/2011-12-07.md b/source/_posts/2011-12-07.md
new file mode 100644
index 0000000..ee992e2
--- /dev/null
+++ b/source/_posts/2011-12-07.md
@@ -0,0 +1,31 @@
+---
+title: 茶品 · 茶悟
+tags:
+ - 人生
+ - 品悟
+ - 茶
+categories: 文章
+permalink: drink-the-tea
+featureImage: https://cat.yufan.me/cats/051609LJb.jpg
+id: 31
+updated: '2015-04-16 04:19:59'
+date: 2011-12-07 17:12:58
+---
+
+翻开最新一期的山大周刊,页末的一篇关于茶的感悟吸引了我的目光。文章的作者说:其实茶有三次生命。一是茶的自然生命,是茶作为一种植物的自然生命过程。而其二便是茶的制作生命,作为一种饮品的商品生命过程。第三,就是茶的人受生命,是在品饮过程中人与茶的互动过程。
+
+一杯清茶,从灌木到杯中,经过了三次生命的锤炼过程。故品茶,更像是一种品悟,一种对于茶生命的细碎感悟。就像说前文提到的茶的三次生命,只是一种外在的、独立的、缘外的感触。而开始品饮之后,茶水由口入体进心,才有了另外一种芬芳、灿烂、亲密、独具的“生命”。
+
+
+
+一杯茶,唤醒时光的边缘;一杯茶,还原一个春天。同样一杯茶,喝的人不同,便会有不一样的感受。虽然滋味差不多,但是对于茶水的灵动、质感与生命色彩却是由饮者所赋予的。正可谓千江有水千江月,万人品茗万里香。
+
+清晨的我喜欢泡一杯咖啡,听几首欢快的歌曲,是为提神。而傍晚时分的奶茶,更多是一种冬日里的一份温度,融融的投进心底。而对于喝茶,更像是一种品位,需要在午后时分,一天天气最好、精神最好的时分慢慢细品。一杯一杯,缓慢细数时光的流逝。住在厦门时,常常看见家门口的大榕树下,一对老人在树下石凳上慢条斯理地喝着茶。喝茶、嗑瓜子、谈笑风生,而时间对于他们而言,是极其缓慢的……茶座旁的开水壶依旧一天天地冒着哧哧的热气,只是某一天,当我再经过榕树下时,只剩一人。氤氲的水汽弥漫在老人周围,也迷蒙了我的眼睛……
+
+此情此景却好似曾经读过的《相忘江湖》里面的开头:“隔一程山水,你是我无法靠近的彼岸,与我坐望于光阴的两岸。彼处桃花盛开,绚烂如漫天凄艳的晚霞,你笑得从容,而我却仍在这里守望,落英如雨,映出我拈花一笑的了然。”而人走,茶亦凉。虽淡然,却多了一份相思。所以有时候很喜欢茶道里面的“一生一会”的说法。就像林清玄曾经说过的那样:我们每次与朋友对坐喝茶,都应该生起很深的珍惜。因为一生里能这样的喝茶可能只有这一回,一旦过了,就再也不可得了。
+
+一生只有这一次聚会,一生只有这一次相遇。往往使我们在喝茶的时候,会沉入一种疼惜与深刻,而不至于错失那最美好的因缘。所以有时候,喝茶的感受就是一个人的人生经历的另一种体现,你可以从中看出一个人的心灵。
+
+胡适说:“一个人就是他所吃的东西,所以达柯塔的务农者,加利福尼亚的种果者,以及千百万别的粮食供给者的工作,都是生活在他的身上。因此套用胡适先生的话来说,一个人就是他自己所喝的东西,所以福建的铁观音,台湾的高山茶,以及千百万的茶业者的劳作,都是生活在他的身上。说茶悟人生,其实是因为茶进入到我们生命中来,让我们感觉到了它的芬芳与甜香。品茶人中的快乐与感悟,无一不是基于此。
+
+![茶品 · 茶悟(1)](https://cat.yufan.me/cats/051609jm2.png)
diff --git a/source/_posts/2011-12-09.md b/source/_posts/2011-12-09.md
new file mode 100644
index 0000000..dc557c7
--- /dev/null
+++ b/source/_posts/2011-12-09.md
@@ -0,0 +1,37 @@
+---
+title: 那些年我们一起追过的女孩
+tags:
+ - 影评
+ - 那些年
+ - 青春
+categories: 文章
+permalink: you-are-the-apple-of-mine
+featureImage: https://cat.yufan.me/cats/051418Qz2.jpg
+id: 32
+updated: '2015-04-16 04:20:27'
+date: 2011-12-09 17:43:49
+---
+
+夜里12点,耗尽笔记本里面的最后一格电量的我终于将这部电影看完,却怎么也睡不着。。抬头看着桌前的墙壁,回想起已逝的青春经历,整个人便有了一种苍老的感觉。对于已逝的过去,突然觉得像梦一般漫长……
+
+不得不说导演“九把刀”的才华与浪漫,或者说对于情感的深度刻画。整个电影中的故事情节非常平淡,就像是一份长达十多年流水账,从头到尾的舒缓读完。但是,就是这一份份简单至极的故事,在影片的最后一一回放,却让人不由得感动、落泪。在我眼中,所谓的打动人心,依靠的往往不是那些惊天动地的故事。有时仅仅是一种简单,一份与你的人生经历类似的故事,便可挑动你记忆最深处的那份柔软,让你潸然落泪。就像一年前的《老男孩》一样是一部简单至极的片子,却应其中的片段和大多数的80后经历呼应,便感动了许多人。
+
+
+
+对于影片的剧情,我想,我所看到懂的是一段男孩成长为男人的故事。也许是我的阅历不够,更或者是我的感触不深。但仅仅是关于成长,便让人思绪颇多。
+
+柯景腾在读国中时成绩不好而且很喜欢调皮捣蛋,在一次上课“打飞机”被老师抓住后校长把他调到了班级成绩最好的女生沈佳仪前面,让她监督景腾的学习。于是便有了校园小说里常有的端子,佳仪很是“爱管闲事”,只要景腾不在读书,便各种督促。两个人的关系,并不是很融洽。直到某天的英语课上,景腾主动把自己的英语课本借给没带书的佳仪,替她出去受罚时,两个人之间的关系开始缓和,我们的故事才算真正展开……
+
+从最初的不想读书到被沈佳仪逼着读书,从被逼读书到景腾自己主动读书并乐在其中。我们轻易地看到了男孩的成长。但是景腾的心里却又是极其幼稚的,就像国中毕业大家一起游玩时在桥上谈论的理想一样,希望自己成为一个顶天立地的人。比起周围很多人明确的目标,是那样的幼稚、飘渺。
+
+而对于爱情的试探,景腾可以说是一败涂地。说傻,到不如说是可爱。从开始的两人朦胧的感觉,到高考佳仪失利后的小心安慰,景腾一直没有发现佳仪对于自己的喜欢,也许恋爱中的男生是麻木的吧。更或许是景腾太喜欢,以至于害怕被拒绝后的失望。就像说为什么在大学寒假,两人一起去游玩时景腾在表白后不想知道佳仪的答案。
+
+但是,两人最后没有走到一起的关键在于景腾的不成熟。其实作为旁观者的我们很容易发现,佳仪对于景腾的要求不在于他读书是否好、人是否打架“很厉害”。佳仪所希望看到的是男孩的长大与心理的成熟,不再幼稚。这也是为什么当佳仪看到景腾和别人打架弄一身伤时的失望与心痛;当两个人吵架分手时邵和文可以成功追到沈佳仪的原因。
+
+而我想,每一个男孩的成长和成熟,其实有时不需要多久,仅仅是短短的一瞬便好。就像阿景,在经历了时间与社会的磨砺,再次见到即将嫁为人妇的沈佳仪的那一刹那,他便懂了。其实爱情,不分结果,只要默默祝福现在的她(他)幸福,便一切都好。
+
+也就像《我与狗狗的十个约定》里面的明莉,在狗狗死去的那一刻,才懂得了关爱与感恩,并对两鬓已经斑白的爸爸说:“谢谢你,爸爸。”而人生中的青葱年华,那些与我们相似的日子里所记述的便是有关成长的故事。也只有经历过,我们才能脱去一份稚气,更添一份成年人的智慧。
+
+用影片中的一句话来说:生活不是一张考卷,没有对错答案,你永远不知道下一刻该选什么。所以,我们的故事依旧继续。
+
+下一刻,生命起航……
diff --git a/source/_posts/2011-12-11.md b/source/_posts/2011-12-11.md
new file mode 100644
index 0000000..071f1dd
--- /dev/null
+++ b/source/_posts/2011-12-11.md
@@ -0,0 +1,58 @@
+---
+title: 最是一番长相思
+tags:
+ - 冷山
+ - 回忆
+categories: 文章
+permalink: sauvignon-blanc
+featureImage: https://cat.yufan.me/cats/142059dpw.jpg
+id: 33
+updated: '2015-04-16 04:20:58'
+date: 2011-12-11 17:58:34
+---
+
+与你擦肩而过的时候,蓦然回首,那人似曾相识……
+
+## 一、青春告别曲
+
+**景腾说:**
+
+堇色年华,青春的下一个路口,再回首,却是多般支离破碎。
+
+毕业,然后各奔东西,聚了又散、离离合合。我们总会遇见一些人,然后在某一刻踏上开往南北的列车,就此不常相见。但是,忘不了的还是心中的你的昔日的身影……
+
+
+
+安东尼说:“还会遇见很多人,还要经历许多事,只是那些感动的事还会再记得么,那些喜欢过的人还会再遇见么?”我们彼此南北分隔,和那些互不相识的人做着彼此所不了解的事。
+
+你知道吗?在你居住的城市里面,有着我思念的牵挂。
+
+**佳仪说:**
+
+喜欢上阿狸,是在上了大学以后,因为那只可爱的火红小狐狸总是像你一样笨笨的可爱。怀揣一本《永远站》和阿狸在城市的某个街角踏上了那辆红色巴士,去找寻幸福。我不知现在开往何方,但是在我的心中却有一个终点。就像是一种感觉、一种信赖,就像我一直知道,你永远都爱着我。
+
+那个寒假,我们再见,轻轻地挽起彼此的双手,走在废旧的铁轨上。嘴上不语,心中悄悄的无数遍爱你。
+
+Dreams,as if you never wake up.
+
+我悄悄在某个站点下车,去找寻属于我的小小天地。它在我心里,小小的、暖暖的,也与你在一起……
+
+## 二、思念回响曲
+
+《冷山》里,那位在美国南北战争末期受伤的士兵英曼,在灵魂仿佛燃尽之后,对于家园的渴望使他重新站立起来,踏上了艰辛漫长的归家路途。他的情人艾达在山里的乡间独立忍受孤独,并学会了与艰苦的生活斗争。
+
+战争带走了一切,而依旧兀立于天地间的冷山便是他们之间唯一的联系,是他们回忆与向往的地方。就如《思无邪》里面描述的那样:“一个人即使你所信仰的天堂已然破碎,却任然为你疗伤止痛的美好国度。”从战场重归家乡,回到日夜思念的爱人身边,整个人也从破损重归完整。
+
+想起那首《我愿意陪你走》:我耗尽了温柔,我孤独的等候,你却放开了手,我在你的身后只换来,一句苍白借口。在汹涌的街头,我寂寞的逗留,有谁能够解救,你从前的笑容那么久,盘旋在我左右。我愿意陪你走,就让我陪你走,多希望陪着你直到老,走过天涯海角。我找啊找啊找啊找,找不到曾经的天荒地老,我逃啊逃啊逃啊逃,逃不出遍体鳞伤的煎熬……
+
+一样的寻找与等待,一样的悲伤情感,恰是对《冷山》的真实写照。而英曼在受伤之际能重新站起的源泉便是对于爱人的思念,在遥远的那边有艾达为他庇佑。哪怕是路途遥远、生活粗粝尘锐,英曼都会为了她顽强地去承受,只因最初的承诺。
+
+而别离的相思之苦,恰如泰戈尔的诗句中说的那样:“每当我想起你时,你的眼睛就挂满星际。”故不论月亮的圆缺,思念都似一首绵长的诗,让你哭、让你笑。不论你是哭着思念,还是笑着思念,都是生命之中最真实的记录。
+
+于是,伴随着思念而来的便是英曼、艾达两人间漫长的等待。正如诗人迪金森说的那样:“等待一万年不长,如果有爱作为补偿。”
+
+也就有了人海中的徘徊、寻找,于那千万人中遇见你所找寻的她。时间的无际空间里,没有早、没有晚,两个人恰好匆匆遇见。此刻却没有了什么浪漫的画面与对白。千言万语只化尽,唯有轻轻地问一句:“噢,你也在这里吗?”
+
+![最是一番长相思(2)](https://cat.yufan.me/cats/1420592bn.jpg)
+
+[片头视频下载](http://115.com/file/aqbhxu1e)
diff --git a/source/_posts/2011-12-17.md b/source/_posts/2011-12-17.md
new file mode 100644
index 0000000..4f1f914
--- /dev/null
+++ b/source/_posts/2011-12-17.md
@@ -0,0 +1,76 @@
+---
+title: 第几个100天——博客百日记录
+tags:
+ - 百日
+ - 纪念
+categories: 文章
+permalink: one-hundred-days
+featureImage: https://cat.yufan.me/cats/201301021640291.jpg
+id: 34
+updated: '2015-04-16 04:21:26'
+date: 2011-12-17 03:23:12
+---
+
+时间终会一点一滴磨平我们青春的印迹,那散在记忆里的片段退去了华丽的色彩,留下的还有什么呢?
+
+
+
+## 一、缘起
+
+![第几个100天-02](https://cat.yufan.me/cats/20130102164030.jpg)
+
+就像张爱玲说的那样:“于千万人中遇见你所要遇见的人,于千万年之中,时间的无涯的荒野里,没有早一步,也没有晚一步,刚巧赶上了。”缘分便是这般神奇,就像我与Wordpress的邂逅,也是各种偶然与巧合。
+
+那么许下一个写博客的决定,需要多长时间?
+
+我知道,这个问题是多么的白痴。那么简单的一个计划,往往只是脑海中简单的一瞬。又何必在意,许下一个约定所用的时间?
+
+时间被缩影成一帧帧光感饱满的电影胶片,带动岁月的齿轮从眼前卷过,勾起往事悠悠回忆无边。那些最初的记忆似乎就发生在昨天。
+
+第一次遇见WP,便是与软件街博客的不期而遇。第一次发现,原来博客还可以这么漂亮。所以,这就是缘。而在脑海中常常有许多的想法,一段话,在键盘上流出之前,早已在心中酝酿了很久,也许在写下之前,便忘了大半。于是,那么多记忆的文字,就在心底长久的累积。也在某一刻,促使我做下写博客的约定……
+
+于是乎,对于写博客的缘由便是一种思想的表达吧。
+
+## 二、流年
+
+![第几个100天-03](https://cat.yufan.me/cats/20130102164031.jpg)
+
+我们总是通过记忆的缺口张望,流失的色彩,消逝的行人。也许是我们陌生的彼此,也许是我们的擦肩而过,也许是蓦然瞥见人潮涌动中匆匆闪过的侧影,但这一刻,便是回忆。
+
+100天,说长不长,说短不短,但是却拥有者无数个第一次。第一次解析域名、第一次用后台、第一次发表一篇文章,这种初试的美好与快乐我想只有那些一样在写博客的主人才能真正体会。留言、回复、友链,当你的博客诱人来访,有人围观时的那份喜悦也便是我写博客至今的动力吧。那就是:将你的思想给别人看。
+
+曾经在16岁的日记本里写下略显单薄的字迹:孤单时我们总是躲在寂寞的墙角悄悄哭泣,眼泪化成永生不灭的琥珀,让我们在一起的时光进驻里面,就算我们都老了,老到认不出了彼此,认不出了漫天的飞雪是为你而纷纷扬扬……然后做一个大大的梦,在岁月中拾荒,柠檬的色彩,短短的头发,齐眉的刘海,似乎都不够……
+
+我们还没有权利伤感,至少对于青春应该是活力与张扬,就像前些日子窗外纷扬的雪花。永不停息的生命旅途中,博客,这个偏安于世的转角驿站,给奔流的岁月投去一道柔光。无处安放的青春在这里偷得浮生半日闲暇,陶然憩息。
+
+《穿过流水》中唱到:在船桨起落之间,看流水带走两岸的云烟。在手指交汇之间,看穿过空气的阳光耀眼。在你我之间,在天地之间,谁转过身、遮住脸?不忍看一段青春走远。在回望的视线里,我听见明媚的往昔。
+
+生命只能不断地经历春夏秋冬,而我们在热爱世界时,便活在了这个世界上。纵然一切都是瞬息,一切都将会过去。而那过去的,便将成为亲切的怀念,正如这一处可安歇的博客小屋。
+
+## 三、人事
+
+![第几个100天-04](https://cat.yufan.me/cats/20130102164027.jpg)
+
+>当岁月的脚步再移一小步,我忘了你是过客,你是,过客。
+
+这样伤感的文字终究只能是纪念,纪念我所经历的长路,回忆那些各色的路人。
+
+人生路上的遇见,又需要多少缘分才能做到?不像教科书里面的概率一样可以估测,只是一种偶然与必然的文艺辩论。但是,总有人与你遇见,也总有人离开……
+
+遇见了你们,遇见了缘分。平淡的日子因为您们的来访变得闪闪发亮,阴霾的心情因为你们的留言一扫而光。遇见了你们,道一声珍惜。我珍惜,不仅仅是你们出现在我生命最绚烂的时刻;我珍惜,不仅仅是因为你们对于我的文字的欣赏;我珍惜,只是因为你们是我写博客时光中最美的记忆。珍惜那些留言,那些温暖了整个冬季的话语。
+
+看见后台控制面板上一个个活生生的面孔,有关记忆的故事和回忆充溢开来。至少在纷乱迷茫之时,“永远陪伴”这样矫揉造作的愿望成了一份写作的动力。所以,纵然前方未知,至少有了你们的鼓励与祝福,才有了一份别样的温馨与感动。
+
+## 四、明天
+
+![第几个100天-05](https://cat.yufan.me/cats/20130102164029.jpg)
+
+席慕容的《羊蹄甲》里曾说过:在整个人生的长路上,不是都开着像羊蹄甲一样迷迷潆潆的花树吗?往前看过去的时候,总是看不真切,总是觉得笼罩着一层缥缈的烟雾,等到真的走到树下了,却又只能看到一朵一朵与远看时完全不同的单薄细润的花朵。所以对于未知的明天,并不可怕,遇到时便会知道结果与状况。
+
+也就像亨利·米勒说:“一切为了明天,但明天从不到来。”以故明天的不确定性,是珍惜今日的动力。对于看似漫长的博客写作时光中,“今天”便是一粒种子,我们要创造一片土壤,让它成长为“明天”那棵大树。
+
+对于文字,我的追求是一种思想的调门不高,却用情至深的写作。“用情”便是最为关键的。只有深情,才有了使用一切词语表达情感的冲动,才有了精耕细作,才有了水平的不断提升——在自我那个思想触及的因素面前,唯有深情促使我们的文章体现与“深情”对应的仪式感。
+
+所以我将自由地在这个只属于我的博客平台里书写者我的情感与思想。也许有一天我累了,我会放弃。但是,那些都是难忘的美好记忆。
+
+——谨以此文纪念我的博客写作100天
diff --git a/source/_posts/2011-12-20.md b/source/_posts/2011-12-20.md
new file mode 100644
index 0000000..a75873c
--- /dev/null
+++ b/source/_posts/2011-12-20.md
@@ -0,0 +1,56 @@
+---
+title: 听是谁在唱歌
+tags:
+ - 听,是谁在唱歌
+ - 老歌
+categories: 文章
+permalink: who-is-singing
+featureImage: https://cat.yufan.me/cats/142113fze.jpg
+id: 120
+updated: '2015-04-15 23:20:41'
+date: 2011-12-20 22:38:49
+---
+
+听着奶茶的甜美的嗓音,便是一种恬静的享受。冬日里的午后,音箱里放着那首“听,是谁在唱歌”,像是有一种魔力般的感染,让人回忆许久。而仔细回想,都是种呼唤……
+
+
+
+## 音乐,生活的百味
+
+![cover-image](https://cat.yufan.me/cats/142113GAd.jpg)
+
+如果说生活是百味的季节,那么音乐便是回味的片片落叶。
+
+喜爱音乐,因为音乐如生活中缭绕的云雾,诗化了单调与平凡。看书时让一首轻音乐慢慢地在身边飘起,眼前便铺开章节中的情境。入神了,自己也幻化成书中的角色,在音乐的侵染下演绎童话与传奇。若是生活中有了苦闷,音乐如展开思绪繁节的巧手。倾听不过几分钟,怒热就渐渐的冷却,繁杂渐渐的舒展,于是心平,于是气和,于是一切归于安守。用音乐来点缀生活,虽不可旋转人生,却衬托了生活的美好;营造了温馨,化解了纷繁。音乐的感染是落叶铺满小路的浪漫。
+
+喜爱音乐,因为音乐有韵律种种,这韵律是生活的脉搏。兴奋时开启音响,找个激昂的曲调。不自主的随着节拍跳动,幻想自己站在华妆的舞台,在万众的惊慕和呼喊中成为焦点;忧伤时带上耳机,听一曲或钢琴或吉他伴奏的独唱,遐思自己在空无的大厅,边拂动手中的乐器,边让音乐边打心中的哀愁,不知不觉音乐载着心绪流动。回到现实,目明心朗,再加上一种说不出来,唯有自己明白的满足,作为韵律,音乐是夜落至手边的感动。
+
+最爱音乐,因为音乐唱出了心中久久不能道明的话语。陪着她徜徉,于耳畔响起。
+
+## 那首,循环的单曲
+
+![cover-image](https://cat.yufan.me/cats/142113jUL.jpg)
+
+已知的老歌里,罗大佑、张艾嘉先后用他们忧伤略带磁性的歌喉唱着《光阴的故事》:“春天的花开秋天的风以及冬天的落阳,忧郁的青春年少的我曾经无知的这么想。风车在四季轮回的歌里它天天地流转,风花雪月的诗句里我在年年的成长。流水它带走光阴的故事改变了一个人,就在那多愁善感而初次等待的青春。”曾经很长一段时间喜欢这首歌曲。而“凄雨冷风中,多少繁华如梦”,人生的真谛便是如此。淡淡地忧郁如同流转的风车,悠久平淡。繁华如梦,往昔的青春年少,到头来,都如昨夜的轻梦……
+
+小时候的我很喜欢一整个下午一直听着某首歌曲,一遍又一遍。每当父母上班一个人在家时,便会放着那盘仅有的老磁带,听着蔡琴的“你的眼神”、苏芮的“牵手”、孟庭苇的“野百合也有春天”。而每一首歌曲里,唱不尽、道不完的便是那些思念与深情。久远而又熟悉的旋律中,带着曾经在这片苍穹下吹拂过去的约定,永远的流淌在你我如同钻石一般的记忆银河之中,闪烁成为无数人眼瞳里面心悸和疼痛的故事……
+
+常在一边看书时一边听着某段不知名的曲调,就像此刻的我写下这段话时,耳机里重复放着文首的MV。一样伤感的曲调,一样的深情,让人忍不住听了一遍又一遍。想起有人说过:音乐是最为接近神的语言。那么究竟是怎样一段曲调,怎样一种歌喉,怎样一番情思,让你将整整一首歌曲,一遍、一遍地单曲循环了呢?
+
+谁的歌声,像是塞壬的歌喉,拂拭着人们心灵最脆弱的沙洲,带来天空瞬息万变的风景,奏动了锈迹斑斑的的琴弦……
+
+## 那些,消失的声音
+
+![cover-image](https://cat.yufan.me/cats/14211482f.jpg)
+
+人总是要走出去很远之后,一回头,才会想起那些消失的声音。
+
+歌曲与歌曲的更替,乐坛上新人换了旧颜,有多少曾经让人难以追怀。
+
+我曾希望那些优美的曲调能够留存的久远些,但它们大都沉淀在记忆里面。随着一些人的离世,那些相似的声音就此弥散在空气中,再也无从唱起。
+
+而那些声音的消失、溃散,是多么的令人伤心欲绝的事情。人生易老天难老,飞花易逝,岁月无情。就像在某种声音中颤动过的空气,一转身,已经默不出声,或者出现在另一端声音里……
+
+回不去的地方叫去过,忘不了的东西叫记忆。那些消失的曲调一直被深埋与脑海中,终将在某刻被唤醒,重新浮现。
+
+听,是谁在唱歌?
diff --git a/source/_posts/2012-01-26.md b/source/_posts/2012-01-26.md
new file mode 100644
index 0000000..651b556
--- /dev/null
+++ b/source/_posts/2012-01-26.md
@@ -0,0 +1,41 @@
+---
+title: 候鸟
+tags:
+ - 候鸟
+ - 回家
+ - 迷茫
+categories: 文章
+permalink: visitant
+featureImage: https://cat.yufan.me/cats/141248vt4.jpg
+id: 35
+updated: '2015-04-16 04:22:41'
+date: 2012-01-26 09:08:09
+---
+
+放假回家前收拾了一个下午的东西,现在窗外天已经黑了,我重新坐下来。
+
+回身看到放在身旁的行李箱,大大的、满满的。原本杂乱无章的书桌也有些空荡荡的。
+
+看来,时间并没有欺骗我,我真的要离开学校回家了。
+
+也许是天生缺乏安全感。虽然没有离开学习生活的这个城市,但我还是没来由的感到陌生和恐惧。我像一个恋旧的旅人,矛盾的心理使我尽力去保留家的气息的厚厚的日记本,小小的围巾,睡觉时抱的企鹅点点,蓝色的小熊毛巾……如果可以,我愿意是一只小小的蜗牛,时刻背负我沉重的而又甜蜜的家当,不离不弃。
+
+到家后的第二天,为了一个急需的证明,我回了一次高中的学校。去之前还是不情不愿的,走在熟悉的路上,心里总觉得别扭。没有怀旧的心情,更缺乏面对过去的勇气。在我看来那里存在了我的六年,六年的快乐,六年的伤害,我没法把它们放到一起去回忆。
+
+当我转过路口,看到那再熟悉不过的学校大门时,原本喧闹的心却突然安静了。原来,这里还是接纳我的,那些过往还是那么根植于心,无法消灭。
+
+我走进校门,林荫道上没有了往日的喧闹,校园安静得有些羞涩,只有一棵棵大树依旧碧绿,在风里散发着温厚而甜美的气息。眯起眼睛,仿佛可以看到许多身影向我走来。我的老师,我的同学,我的朋友,仿佛就站在路的尽头对我微笑,一如我那已逝去的美丽年华。
+
+下午突然下起了雨,一瞬间天色阴沉。从小就喜欢下雨的我,却总是害怕打雷。走在大街上,尽量放慢脚步去看街边神色匆忙的人群,试着作为一个异类行走在他们中间。已经几天没有见到朋友们了,偶尔想起,多是怀念,稍有不安。或许我已经习惯没有人陪伴的日子了?可是自己还是情不自禁地穿过层层雨雾向对街寻找,希望有熟悉的味道飘散过来,对我伸开双臂,给我一个拥抱。
+
+是找谁呢?我不知道。因为爱我的人和我爱的人都有很多。
+
+这些天,很多人已经回家了,还有些人正准备要走。在书上读到一句话:“你走了,我还守着一座空城。”说的好像我啊。当昔日的同学四散分开,我却留在了“原地”。
+
+冬天来了,这是没有候鸟的季节。我的鸟儿都飞走了,离开了熟悉的城市,离开家,去遥远的地方寻找只属于自己的温暖。我只能用心去浇灌一株植物,布满祝福的叶子,给日夜守护我的家,给我相依相伴的四季花园,给童年,给我亲爱的伙伴,给某次曾经里的某个身影,给我世界尽头的保护人,给像我的你和像你的我……
+
+说实话,对未来的某些事,我一点都看不清。别人眼里的世界和我心里的世界差别太大,我无法鉴别真伪。我更不知道凭我现在的能力能不能争取到我要的未来,能不能达到家人的希望……一切都太渺茫,形势严峻的如同泰山压顶,而前途太遥远,我却太脆弱。一整个秋天琐碎的心思,自信连连受挫,日子千疮百孔。也许我真的要在大学的环境里才能远离旁人给我的压力,重拾信心开始别样的生活,
+
+事实上,我也是一只盘旋在自我世界的候鸟。一边逃避寒冷,一边努力飞翔着给自己制造温暖。回家,也许是最好的选择。可以留下一份温暖,给自己,给候鸟般盘旋、起伏不定的未来。
+
+![街市](https://cat.yufan.me/cats/141248zQK.jpg)
diff --git a/source/_posts/2012-01-29.md b/source/_posts/2012-01-29.md
new file mode 100644
index 0000000..4e0890f
--- /dev/null
+++ b/source/_posts/2012-01-29.md
@@ -0,0 +1,59 @@
+---
+title: 爷爷养过的猫
+tags:
+ - 伤感
+ - 回忆
+ - 爷爷
+categories: 文章
+permalink: my-dear-kitty
+featureImage: https://cat.yufan.me/cats/141100gYN.jpg
+id: 36
+updated: '2015-04-16 04:23:08'
+date: 2012-01-29 07:41:26
+---
+
+日子一天天过去,时间一天天流淌,故事也一天天的上演。有些记忆早就被忘记,而有些却像伤疤版附着于灵魂上,怎么也消散不去……
+
+那一年,3月的午后降临了一场小雨,淅沥淅沥的湿润了整个午后。
+
+那一年,伴随着突如其来的雨水,我降临到这个世界。
+
+那一年,爷爷开始养猫……
+
+
+
+爷爷是在我出生后开始养猫的。记得小时候和爷爷聊天时,爷爷说猫是从王二婶家抱过来的。那一天,爷爷就从镇上挎个菜篮子回来,猫就放在篮子里,用块布包着眼睛。爷爷说猫通人性,认得回去的路,蒙上了眼睛,就不知道跨过几座桥,走了多少路,就会把这里当家。从这一天家里多了一位新成员,叫“小花”。
+
+在曾经的记事里,爷爷养猫的方式和别人总有些不大一样,他不过多的破费,不额外的操心。别人都是最好的窝,最精心的猫食。爷爷只是给予每天的剩菜剩饭,床底下的一张用旧帽子做的小窝,仅此而已。
+
+最初的印象里,猫儿是十分怕生的。一有陌生人来到家时,就缩到床底角落下,闪烁着一双眼睛惊恐地看着外面,死也不肯出来。
+
+但是,猫儿唯一不怕的人便是爷爷,它成了爷爷最忠实的伙伴,每天都陪在爷爷身旁,和爷爷一起生活。不像别的猫,成天就在外面玩,到了吃饭时候才会回来。
+
+冬日里某个阳光明媚的下午,爷爷与我一起在楼下晒太阳,聊着过去的事情。渐渐的、渐渐的,爷爷睡着了,静静的。某刻专心于折纸的我抬起头,看见爷爷和他的猫。
+
+爷爷靠在摇椅上,微闭着双眼,并拢着双腿,随着椅子的微微晃动细微的呼吸着。小花趴在他的膝盖上,也闭着眼睛。爷爷的双手就那样轻微地、温柔地搭在小猫背上。爷爷以那样小心的姿势睡着了,他的身体一直保持一个弯曲的弓形,他的双腿并拢的很紧,以那样不舒服的姿势睡着。他刻意的收敛双手搭在猫身上的重量,一动不动……
+
+爷爷对于猫的关爱,常令我疑惑。比如爷爷不记得我正在上几年级,我多大了等。但是,爷爷却能将出很多关于小花的事情。小花生病了,爷爷的脸上写满了焦急。听奶奶说爷爷那几天夜里常常爬起来,看看床底下的猫猫,小花病好了,爷爷脸上也显得精神多了。
+
+猫就像人一样,也会学坏。没多久,当我上小学时,小花便开始3天两头的在外面跑,直到吃饭时间和夜里睡觉时才会回家。春天夜里,处于发情期的小花便彻夜不归,一直在外面咿呀咿呀的叫着,惊醒了睡不踏实的爷爷,震碎了老人脆弱的梦境。爷爷的脸上开始挂上愁绪,有时我在爷爷家门口玩的时候,常常看到爷爷推开纱门向外张望,喊着猫猫的名字。那种期盼的眼神,让我看着十分难过、心痛。
+
+单位拆迁,换了新房后。猫猫再也看不见了身影,它跑了,爷爷找了一天也没找到。
+
+从那以后爷爷的脸上很少能瞧见笑容,常常看见爷爷跑到老屋门口,将猫猫最喜欢的鱼放在门口,可是结果往往都是原封不动。
+
+又一次看到爷爷在摇椅上晒太阳,膝盖上已经没有了那只小猫咪,可是他的姿势依旧是那样弓着背,并着双膝,一双手微微的搭在膝盖上,似乎猫还在那里。
+
+在阳光的照射下,爷爷的背影是那样的孤单、寂寞。
+
+在那一刹那,我似乎还看到了那只小猫,可是爷爷的膝盖上依旧空空如也。
+
+我一直在身后望着爷爷的背影,希望能同他说话,像猫一样也趴在爷爷的膝盖上同爷爷一起在和煦的阳光下暖暖的睡下,一同呼吸着相同的命运……
+
+高考前一个月,爷爷走了,奶奶说,死前爷爷的嘴里还是记挂着小猫,盼望着小猫的回来。
+
+摇椅依旧在那里,可是坐在上面的人却早已不在。我望着空荡荡的房间,却再也找不回熟悉的气息,那种熟悉的温柔,仅存于记忆之中……
+
+其实,我就是那只猫。
+
+![爷爷养过的猫(2)](https://cat.yufan.me/cats/1411007bR.jpg)
diff --git a/source/_posts/2012-02-04.md b/source/_posts/2012-02-04.md
new file mode 100644
index 0000000..a1af542
--- /dev/null
+++ b/source/_posts/2012-02-04.md
@@ -0,0 +1,46 @@
+---
+title: 蓝色土耳其
+tags:
+ - 回忆
+ - 爱情
+categories: 文章
+permalink: blue-turkey
+featureImage: https://cat.yufan.me/cats/024959j8f.jpg
+id: 37
+updated: '2015-04-16 04:23:43'
+date: 2012-02-04 07:43:29
+---
+
+还贪恋着,你的风情,诱惑着,你的神秘。埋葬了,我的爱情,忧郁蓝色土耳其。紧跟随着,我的稚气;逃避着,我的宿命。徘徊在,你的淡淡哀愁灰色眼眸里——《蓝色土耳其》
+
+耳机里面依旧放着《蓝色土耳其》的旋律,在厦门这个难得的舒适的午后,我一个人静坐在桌前写字。突然回想起了多年前的那个下午,一样的时间,不一样的地点,似乎曾听过相同的旋律……
+
+
+
+高中伊始,凤凰花开的季节,树梢上弥漫着片片“火焰”,煞是好看。红色的花瓣,瞬间的开放,弥漫了整个记忆。我情不自禁的想起了昔日校园里花坛的三角梅,想必那时也是一片火红了。也就是在这红色的喜庆花海中,我如愿以偿的走进了梦想的重点高中。
+
+可是,理想与现实的距离,往往就像那朵盛开在彼岸的花朵,怎么也抓不住。
+
+开学第一天的班会上,班主任便无情的敲碎了我对于美好高中未来的幻想。老班说:“你们进的是重点高中的重点班级,并不是一件值得高兴的事情,你们的对手是整个福建省。所以,班级的人员安排将实行流动制,每次月考前50名便是我们的成员,成绩差的将被无情的踢出我们班。”赤果果的威胁,冷酷的安排。只记得当老班说下这个决定后,整个教室的温度,瞬间便低至冰点,原本才进入高中的喜悦,刹那间荡然无存。
+
+不知什么时候开始,大家开始忙碌起来,每天的生活就像三点一线:教室——食堂——家里的书桌。睡觉的时间也越来越往后延,10点→11点→1点。同学之间的交流也越来越少,几乎没有,有时抬起头看向四周,映入眼眶是一排排的后脑勺。可是,偏偏就有这样一个另类!
+
+在我的印象里,同桌小C一直是一个爱笑爱闹的小女孩子,也是班主任眼中的差生,令任课老师头疼不已的坏孩子。似乎班主任的威胁对于小C无效。课堂上常常看到她在那里偷偷地用手遮挡着耳机听歌;下课时常听到她在那里小声地哼唱;晚自习时,相对于,我们课桌上摆放的高高的参考书,她的桌上放的是一本本的小说,看的昏天地暗。有时抬起头,竟会发现她在突然的掉眼泪,一问,才知道“XXX死了”。那么XXX是谁呢?再一问,才哭笑不得的发现原来是小说里面的女主角!
+
+那么,是什么时候开始喜欢上她呢?不知什么时候起,身旁的角落里有了她的倩影。那段日子里,是无忧无虑的,简单而又幸福的。每天早上一起边啃着面包边赶去上学,课下一起结伴去食堂。晚自习后还不愿意回家,在校园花坛的榕树下,尽情的谈天,聊理想,谈属于那个年纪的秘密。周末,我们一起看小说,看的昏天地暗,编织着童话般的梦的衣裳。那时的我们,似乎永远也长不大,快乐,豪放,活得无所畏惧,从来没有恐慌抑或不安,生活里面满满的都是明媚的阳光。
+
+![蓝色土耳其(2-0)](https://cat.yufan.me/cats/024959mYn.jpg)
+
+但是,快乐的时光总是过得很快,浪漫的花季一旦过去,那娇柔的花瓣便会如雪般在风雨中轻轻飘落。那一天,月考来临了,小C还是没能进入年纪前50名,被踢出我们尖子班。随后她的家长决定让她转学、回到莆田读书……
+
+走之前,我们又来到昔日的榕树下,地上,石凳上,铺上了一层散发清香的花毯。美的让人惊叹,让人感伤。小C轻轻地说:“以后不知道很能不能一起来此聊天。”两人静静的坐着,一阵无言,只有她还在那里小声地唱着这首《蓝色土耳其》:“还贪恋着,你的风情,诱惑着,你的神秘。埋葬了,我的爱情,忧郁蓝色土耳其。紧跟随着,我的稚气;逃避着,我的宿命。徘徊在,你的淡淡哀愁灰色眼眸里……”
+
+她踏上了开往北方的长途汽车,离开了……走之前,将自己最喜欢的小妮子的《恶魔之吻》送给我。而从那以后,我再也没见过她。两人之间的来信,也越来越少,终究止于高二的那个弥散着离愁的秋季。
+
+夜里又一次看了一遍秒速5厘米,看着贵树和明理的童贞爱情,竟不知最后看的热泪盈眶。
+
+回想起与小C分别时自己写在日记本里的一首小诗:下了一夜的雨、下了一夜的情书、那段年少的故事、是一出难忘的戏、想了一夜的你、想了一夜的往昔、我的轻狂你的美、你的离别我的泪。
+
+前些日子又一次回到中学,绿树依旧,石凳依旧,花儿依旧,一切还在老地方。只是,小C你是否还会想起——我们的那段短暂的中学时代,那段青涩的美好年华
+
+![FIN](https://cat.yufan.me/cats/024959LC3.jpg)
diff --git a/source/_posts/2012-02-17.md b/source/_posts/2012-02-17.md
new file mode 100644
index 0000000..3531807
--- /dev/null
+++ b/source/_posts/2012-02-17.md
@@ -0,0 +1,34 @@
+---
+title: 图片时光
+tags:
+ - 图片时光
+ - 记忆
+categories: 文章
+permalink: image-times
+featureImage: https://cat.yufan.me/cats/024753PlW.jpg
+id: 38
+updated: '2015-04-16 04:24:08'
+date: 2012-02-17 08:31:28
+---
+
+这些天在看书时偶然读到一句话:林花谢了春红,太匆匆。
+
+恍然有轻缓踏歌之声自时光的深处漾起,在读到此句的那一刹那,诗句中交融的时间之美、空间之美犹若一滴年久醇厚的烟墨点入碧清的水中,丝丝缕缕地舒卷散尽。
+
+
+
+美,在于观察,在于记录。而人生如花花如梦,梦里开,梦里落。一段如诗般的青春岁月,我们曾经走过、哭过、笑过、也爱过。时光安然,沉醉于春色无边,却无法将那些曾经感动过我们的丝丝瞬间一笔一划的写下。只能埋藏于心,成为岁月里的一块碎片,慢慢磨散。
+
+常常心惊于最美的光景总是不过多久便落幕收场。人生也一样,青春从不是用来东张西望的时候。好比观赏春日的林花,不知觉中已然错过了太多的精彩,直到花谢了,才开始惋惜。
+
+时间的洗刷,有时便是沧海桑田般的变迁。“汩余若将不及今,恐年岁不吾与”每次翻看自己的手抄本,读到这一句话的时候,突然间就感到一阵茫然……身边的人聚聚散散,熟悉的面孔颠覆在世间的长河里。留下我独自一个人,在荆棘满布的小路上蹒跚而行。
+
+往事随风散……
+
+张爱玲看老照片时的曾说道:“照片这东西不过是生命的碎壳,纷纷的岁月已过去,瓜子仁一粒粒咽了下去,滋味各人自己知道,留给大家看的惟有那满地狼藉的黑白的瓜子壳。”光影闪动,凝刻下生命中某一刹那间的年华。却被装裱于厚重的相册中,束之高阁。某刻,再想起,拂去表面的灰尘,拿起泛黄的老照片时,也仅存留回忆……
+
+时光就是这样的紧凑、匮乏。每日不过是24小时的堆积,一年不过是365个单调的重复,而生命里面又有多少个一年呢?
+
+想起看过的某个网站的简介:图片,是已逝时光的影子。对于过去,我们无能为力,但是却不该忽视那些点滴的闪光和感动。图片时光,以图片的方式记录那些生命中的美丽。在时间和空间的舞袖里,完成对那一刻动与静的定格。在多年后的今天,在早春稀疏的碎花之间,我仍能用心感受到当年被凝住的美丽。
+
+![图片时光(2)](https://cat.yufan.me/cats/024753ZOW.jpg)
diff --git a/source/_posts/2012-02-23.md b/source/_posts/2012-02-23.md
new file mode 100644
index 0000000..7bcfb14
--- /dev/null
+++ b/source/_posts/2012-02-23.md
@@ -0,0 +1,30 @@
+---
+title: 春语
+tags:
+ - 春天
+ - 杂思
+categories: 文章
+permalink: spring-words
+featureImage: https://cat.yufan.me/cats/024700Dyk.jpg
+id: 39
+updated: '2015-04-16 04:24:32'
+date: 2012-02-23 20:14:05
+---
+
+喜欢春天,因为喜欢鸟语花开,欣欣向荣。
+
+阳光更暖了,风更暖了,心情也更暖了。期待中的春天就这样悄然而至,原心灵的春天也随之萌发。
+
+二月的早上宁静安详,那份宁静和清新让人精神雀跃,一改往冬日里赖床的习惯,离开温暖的被窝硬解清凉亮丽的朝阳。早上的太阳升起在东南偏北,到了三月校园后的山坡上已是绿意融融。我站在阳台上,寻觅着山上静静的松柏任何微动的哼唧,猜想着那份少有而可爱的寂静。
+
+宿舍楼下的花坛里不经意间已经冒出一团团新绿,它们也按捺不住寂寞,想看一看外面的世界。这不正是我们吗?对明天充满渴望,用尽一切努力让世界看到自己!春来了,心灵就更加活跃了,对未来的追求就更加强烈了。
+
+乌云,带来一片片小雨,他们是如此的可爱,点点滴滴、缠缠绵绵。有丝丝的清冷,却会让人更加的清醒。沉寂了一冬,迎着这样丝丝柔柔的清凉雨,是不是该伸展一下,抖擞起精神,活力十足地去硬解这样一个春天,春来了,心灵就更加清爽了,不会再迷迷糊糊,目标就更加明确了。
+
+温柔的风轻轻拂过面颊。呀!如此的令人陶醉。我最喜欢让着微风这样亲亲地吹着,洒脱、自在,一切的烦恼都随之而去,它是春带来的最好的礼物。风儿吹来了温暖的阳光点点绿的小草,还有清爽的小雨。追着春天的风,是不是该放飞心灵,洒脱地面对人生!春来了,心灵更加洒脱了,我愿意面对所有的一切。
+
+春来了,不晓得何时:心灵萌发了,就在此刻。一年之计在于春,此时不奋何时奋。希望就在春中,就在手中,就在心灵中,不要忘记!
+
+春天到了,女生们脱去厚厚的臃肿的面包服,身材绽现。
+
+春天到了,带来了我们想要的一切,你准备好了吗?
diff --git a/source/_posts/2012-02-24.md b/source/_posts/2012-02-24.md
new file mode 100644
index 0000000..0e56ef4
--- /dev/null
+++ b/source/_posts/2012-02-24.md
@@ -0,0 +1,28 @@
+---
+title: 相视一笑,莫逆于心
+tags:
+ - 情感
+ - 杂思
+categories: 文章
+permalink: intimate-in-mind
+featureImage: https://cat.yufan.me/cats/024519g4C.jpg
+id: 40
+updated: '2015-04-16 04:25:04'
+date: 2012-02-24 06:20:13
+---
+
+说话有时候耐人寻味。
+
+例如,如果我对一个远方一个朋友说:“我很想你啊”,她会体会到我当下的心情吗?我想很难。或许,“想念”在由我那忧戚感伤的心情转变为硬生生的文字(或者话语)时就不再温润,就褪色了,或者遇到了稀释。又或许,此刻我的朋友有她自己的心情,有她自己的事,譬如她正在果园里摘桃子,说不定就会兴冲冲地跟我说;“那么待会我给你送些桃子吃呵”。
+
+
+
+可是并不是所有的话语都像“我很想你”之类的脉脉温情,有时候我们说话是为了寻求帮助,发泄苦闷,分享喜悦……可惜,结局并不如你所愿,让人遗憾。你的谈话对象可能正戴着帽子听音乐,或者看她喜欢的电影。甚至有时候,语言不是桥梁,而是墙,造成人与人之间的误会,距离乃至隔阂。
+
+一定意义上我赞成这样一句话:“信念永远不能达到目的地”。
+
+于是,我坚持认为王子猷的做法堪称绝对意义上的经典。说是王子猷住在会稽山北面,有一次夜里下了一场大雪。他一觉醒来,打开卧室门,命仆人斟上酒,饮酒赏雪。四下里望去,一片皎然。于是起身,漫步徘徊,吟诵着左思的《招隐诗》。他忽然间想到了戴逵,当时戴逵住在剡县,于是王子猷马上连夜乘小舟前往,经过一夜才到,到了戴逵家门前却又转身返回。有人问他为什么这样呢,王子猷就说了:“吾本乘兴而行,兴尽而归,何必见戴?”我想,这不仅仅是魏晋风度。
+
+又想起一句话,“相视一笑,莫逆于心”。如此境界,是在可遇不可求。无论朋友,抑或爱人,若能达到此种境界,也算是三生有幸。多多包容之外,还是随缘好了。
+
+![莫逆于心](https://cat.yufan.me/cats/024524yJe.jpg)
diff --git a/source/_posts/2012-02-26.md b/source/_posts/2012-02-26.md
new file mode 100644
index 0000000..8441f57
--- /dev/null
+++ b/source/_posts/2012-02-26.md
@@ -0,0 +1,40 @@
+---
+title: 爱我就请去搭火车
+tags:
+ - 爱情
+ - 金粉世家
+categories: 文章
+permalink: take-the-train
+featureImage: https://cat.yufan.me/cats/024359aiA.jpg
+id: 41
+updated: '2015-04-16 04:25:29'
+date: 2012-02-26 12:00:22
+---
+
+也许很少有人还记得1998年由法国电影导演帕特里斯 · 夏洛尔拍摄的电影《爱我就请去搭火车》。这部充溢着罗曼蒂克气息的电影故事取材自导演和他身边朋友的经历。片名就是他的朋友的原话——当时住在巴黎的他,想死后埋在小镇利马汤的墓地里。
+
+但是,利马汤和巴黎之间有4个半小时的火车车程。如果那样的话,亲朋好友都要长途跋涉去参加他的葬礼。对于性格散漫、慵懒、喜欢享受的巴黎人来说,无疑是一件不愉快的事。在别人质疑他的观点的时候,那位朋友说:“爱我就请搭火车。”
+
+夜里我专门下载观看了这部电影,不由得沉浸在了焦黄色胶片背景下映射的复杂交织,那些去吊唁的亲朋好友之间的浅浅回忆。但,最喜欢的还是那个给观众以无限遐想的浪漫片名。
+
+也许只有法国人的浪漫,才能有这样的想法——一种看似荒谬,实际却对于爱与生命、死亡之间的深刻思考。爱不怕分离,如果你真的挂念我,真的爱我,又怎会在意这区区距离呢?纵使身处天涯海角,纵使海枯石烂,你依旧会将我去追寻。哪怕这路太过于遥远,太过于艰险,太过于崎岖,你依旧会来找寻我。一切的一切只因为彼此的相爱,如果有爱,距离又算得上什么呢?
+
+《金粉世家》里面的三少爷,因为爱慕她的容貌、清纯,义无反顾地爱上了她。纵使两个人之间的地位、身份相差甚远,他还是毫不犹豫的跨过种种鸿沟。这算得上是爱吗?非也!当岁月将事物的表面洗刷干净,就像那世家表面的金粉必将消散殆尽。故事的结局出人意料却又在情理之中。两个人最终踏上开往南北的两列列车,从此南北分离……
+
+于是从另一个角度来说,距离虽然产生了美,但也是爱情的杀手,许多看似深刻的爱情最后抵挡不了距离的阻隔。许多的时候,人们更多的选择最近的爱。想想你身边的那些人,他们有多么的爱你?当你辞别人世的时候,他们能否抛下一切事务,甘愿地搭乘4个小时的火车,去参加你的葬礼——见你生命里的最后一面,即使知道你已经无法回报。
+
+不由得想起了在《[最是一番长相思](http://yufan.me/sauvignon-blanc/)》里面提到过的另一个故事:在相隔了漫长的战火与冷山之间的两个年轻的恋人英曼与艾达,彼此做着自己的努力,只为再次相见。距离没有打断他们的相思之情,那座兀立于天地间的冷山成了他们之间唯一的联系,是他们回忆与向往的地方。也许,这便是真爱的魅力。
+
+爱我就请去搭火车,只因为真爱。试曾想真正爱上另一个人时便意味着心的交织与牵挂。时不时的要去惦记那个她(他):现在在做啥、晚饭吃什么、吃得好吗、什么时候回家……这爱一旦牵系,便从此无法割舍,无法脱离。纵使你负我千百回,纵使你我天人相隔,爱人之间的惦念依旧不会绝迹。这爱,今生今世,一直相随。
+
+爱我就请去搭火车。
+
+——原写于2011年9月26号,2012年2月26号重写
+
+>## 题外话:关于本文插曲
+>
+>一直在追求一种与文章相协调的插曲,简单、舒缓、淡雅,可以在某个安静的午后,闲下来的时候,静静地听。在看去年还是前年的动漫[玉响]的时候,便被它的的结尾曲所深深的迷恋。歌曲简简单单的讲述了主人公在夏天,坐着火车去自己所爱的人的家乡小镇的故事。
+>
+>重写本文的时候突然想起里面的歌词,不由得觉得是那么的协调。电影《爱我就请去搭火车》同样记录了在艺术家兼老师让·巴蒂斯特逝世后,爱人、朋友、泛交、还有亲戚去坐火车吊唁的相似经历。
+>
+>于是我在写下此文时,耳机里面一遍又一遍地播放着此曲。幻想未来的某天,又会是谁,也能让我坐着慢悠悠的火车,去遥远的地方见面呢?无限期待……
diff --git a/source/_posts/2012-02-28.md b/source/_posts/2012-02-28.md
new file mode 100644
index 0000000..e650385
--- /dev/null
+++ b/source/_posts/2012-02-28.md
@@ -0,0 +1,27 @@
+---
+title: 随想——老屋
+tags:
+ - 灵魂
+ - 老屋
+ - 过去
+categories: 文章
+permalink: old-house
+featureImage: https://cat.yufan.me/cats/024154yQy.jpg
+id: 42
+updated: '2015-04-16 04:25:56'
+date: 2012-02-28 02:25:56
+---
+
+在搬进新家前,我曾在一条老街上住了四年,那是一条真正的老街,几乎所有的房子都始建于20年代之前。有的房子还有人在住,有的屋顶已经坍塌,外面的墙壁上爬满了干枯的藤蔓。每到傍晚时分,同藤蔓一样干巴巴的老人们坐在门口,讲述着祖辈们口口相传的古老的故事。夕阳的照射着苍老的容颜,映射出眼底的沧桑,并且伴着一份平和,这些都是岁月所给予的财富。
+
+
+
+可我却是如此的年轻,对于老街、老屋、老人来说,我是一个局外人,与这破败的气息格格不入。但是我却喜欢这里的一切,尤其是老屋。每到星期天清晨,当人们还沉浸在睡梦中的时候,我就已经起来,在街里游荡。这里的每一间老屋都能强烈的吸引我,屋顶的青砖绿瓦,有的经受着时间的考研,依旧完整;有的短成两片、三片,屋檐前的一排青瓦是最特别的,每一片上面都缀有花纹,各不相同,十分精致。墙角不知什么时候已经爬满的青苔,点点的碎绿,是在记述那些过去吗?
+
+我就像一个幽灵一样在老街上飘荡,身处这样一个弥散着古老气息的老街上,我忍不住去漫无边际的遐想:在某个老屋里,曾经,也许有一位母亲在昏暗的灯光下为远在他乡的游子做新衣;某一天,一位美丽的新娘穿着花嫁衣,坐着花轿,进了其中一间老屋;也许哪间老屋还发生过宝黛般的爱情——到底发生过什么事呢?我不知道,只有老屋依旧兀立在那里,无声地讲述着那些曾经。
+
+如果这个世间有幽灵,我真的相信这些老屋里住着幽灵,与我们活着的人共存。
+
+——つづく
+
+![老屋(2)](https://cat.yufan.me/cats/0241548sK.jpg)
diff --git a/source/_posts/2012-03-17.md b/source/_posts/2012-03-17.md
new file mode 100644
index 0000000..c1caa99
--- /dev/null
+++ b/source/_posts/2012-03-17.md
@@ -0,0 +1,38 @@
+---
+title: 随想——陌生
+tags:
+ - 回忆
+ - 陌生
+categories: 文章
+permalink: strangeness
+featureImage: https://cat.yufan.me/cats/015640Lw8.jpg
+id: 43
+updated: '2015-04-16 04:26:22'
+date: 2012-03-17 10:07:52
+---
+
+>习惯了也是一种淡然,便习惯了一种生活,静静地思考,细细的品味,那人、那景、那事……,缓缓流入心底,给自己一份淡然,心如止水。
+>
+>——题记
+
+经过了最初的好奇,中期的激动后,对于博客,似乎有一种小小的厌倦,不再习惯天天打开博客留言、回复。日志也是由一天一篇逐渐变成两天一篇,最后干脆多日一篇,越来越少。而心中总有很多未说出来的话语,而想要写下来时,却颓然发现,熟悉的博客后台是那样的陌生……
+
+
+
+闲来无事去听以前的英语课,拿出熟悉的课本,听着熟悉的课文却有一种空虚的陌生。周遭的一切似曾相识,却又有一种浓浓的距离感。陌生的面孔,陌生的教室,陌生的嗓音,无一不在昭示着一个赤果果的现实——你不属于这个环境。
+
+于是,种种陌生的场景,就在心底长久的堆积、埋葬,一次又一次的迷茫了我的双眼。就像是身处命运的十字路口,一次又一次的遇见岔路口,却不知如何选择……
+
+前天和昔日的高中同学视频聊天,同学笑着说:“你还没变。”可是对面的那个昔日熟悉的容颜已经消散,呈现在我眼前的泯然是一张棱角鲜明的脸,不再圆滑,更加成熟。似乎一瞬间周身的所有人都长大了,都变的理想蓬勃。而我,依旧停留在最初的起点,看着陌生的路口,驻足徘徊。
+
+而人生,其实无力的连一句脆弱都不敢提起,一朵花落,一片叶黄,已然是茫然的陌生,匆匆的路人。
+
+日子,其实经不起推敲,风过就是一天,雨过就是一季。恍然间,就已经长大,迷茫的看着身后。
+
+于是最后,只剩一声叹息,一丝回忆。
+
+但只怕是这样的机会也许都不再有,我们匆匆走过,各奔前程。过去,已经走远……
+
+——つづく
+
+![](https://cat.yufan.me/cats/015647BWs.jpg)
diff --git a/source/_posts/2012-03-25.md b/source/_posts/2012-03-25.md
new file mode 100644
index 0000000..fc84b43
--- /dev/null
+++ b/source/_posts/2012-03-25.md
@@ -0,0 +1,28 @@
+---
+title: 随想——操场时光
+tags:
+ - 时光
+ - 随想
+categories: 文章
+permalink: walk-on-playground
+featureImage: https://cat.yufan.me/cats/015557wpA.jpg
+id: 44
+updated: '2015-04-16 04:26:50'
+date: 2012-03-25 08:38:33
+---
+
+高中住校时,我喜欢在被黑暗笼罩的时候走进操场,此时这里只有三三两两的人,不怕拥挤,不怕吵闹,是个放空自己的好地方。沿着被黑夜吞噬了鲜红色彩的跑道慢慢地走,可以不用担心是否会吵到别人而肆无顾忌地开打手机音量,让歌声和我一起在这个静谧的夜晚散步,悠扬而沉醉的旋律传递到远方,久久不散。
+
+还记得这个时候,应该是跃动的夏季,身旁不时有夜跑的同学经过,他们说笑着、追逐着从我身边经过。超过我,最后消失在夜色弥漫的幕布之后,只剩下迷蒙的身影,舞动着、跃动着。而我只是任双脚习惯性地前后交替行进。每个人都有每个人的节奏,我无心去追赶。
+
+
+
+空旷的操场足以融化了我的疲惫,积攒了一整天的压力可以随性卸载。晚风轻轻吹拂,丝丝缕缕的发梢也一起飞扬。随之而去的,还有许多愁绪,别样的轻松与舒适围绕着我。这奇妙的感觉就像窒息了很久后忽然呼吸到了新鲜空气一样让人身心舒坦,让人贪念。想起冰心说过:“最乐的时间,就是和最知心的朋友同在最美的环境之中,却是彼此静默着没有一句话说。”虽然此刻没有友人陪伴,这依旧是我最快乐的时间。
+
+从操场往外看,整座城市沐浴在灯火的世界里。那些闪烁着灯光的窗口里,每一片延伸出来的光亮都是一个温馨的标识,指引着还在路途上的人儿回家。于是乎,每一盏灯就有了温暖的气息,就像是此刻定是在门口守望者自己归来的父母,那种简单的温情,总是莫名的让人忍不住落泪。而不管是明亮的还是昏黄的,这样温馨的灯火,总让人久久不忍移开视线。
+
+这美丽的操场时光,就像心中永不熄灭的灯火一样明亮在我的记忆深处,多少年后,当我已经上了大学时还记得当年的情境。毕竟,那是在烦躁苦闷的高中生活中,唯一可以给于我不竭安宁与平静之处。
+
+那里是,我心中的伊甸园。
+
+——つづく
diff --git a/source/_posts/2012-03-26.md b/source/_posts/2012-03-26.md
new file mode 100644
index 0000000..1e07dfe
--- /dev/null
+++ b/source/_posts/2012-03-26.md
@@ -0,0 +1,24 @@
+---
+title: 随想——在家
+tags:
+ - 情境
+ - 随想
+categories: 文章
+permalink: at-home
+featureImage: https://cat.yufan.me/cats/015313Ocw.jpg
+id: 45
+updated: '2015-04-16 04:27:35'
+date: 2012-03-26 17:00:04
+---
+
+在家时,即使什么也不做也是快乐的。
+
+每天劳累后回到家,晚上泡一杯茉莉,淡淡的茶香溢满整个空间,使人微醉。从小喜爱喝茶,有时候为了能呷一口极致的味道,夏日里不惜走上二十几公里,待满头大汗,嘴唇干裂,回来烧一壶开水,捏上一撮香茶,滚烫的水裹着茶叶像浪一样在杯中翻滚,再静静地沉淀下去,这时的我也沉在座套都已干瘪的沙发里,共舞时光。
+
+斜靠在床头,翻看以前的书,文字好似都变了一种调。易安人说,“旧时天气旧时衣,只有情怀不似旧家时”,这就是流年如斯吧。老乡远隔千年,如今却恍如对面,一场忧伤的邂逅。人是脱胎不了世道的,她少有快乐,后家破国亡,诗调总是太悲伤苍凉,要么饮酒,要么睡梦,只没心思弄妆。少有“和羞走,倚门回首,却把青梅嗅”的羞涩;也有新妇“云鬓斜簪,徒要教郎比并看”的快乐。只是在这样的日子太短暂,后来,命运就成笔下的“感月吟风多少事,如今老去无成。谁怜憔悴更凋零”了,什么心情呢?“试灯无意思,踏雪没心情”。
+
+书看倦了,没有一点睡意,放平枕头,关上灯,拉开窗帘,四仰八叉地躺在床上,抬眼向窗外望去,是四方四正的星空,白墙上,是它涂抹成淡蓝色的菱形。世间我看两物总没有厌烦,一是碧蓝色的海,另一个就是这夜晚的星空。有时竟能几个小时地就这么看着,直到东方的天由暗黑变成深蓝,鱼肚白变成处子红,远处传来叽叽喳喳的叫声,清晨了。
+
+“看天亮是一件寂寞的事情”,这是顾城的天空;海子在一首诗中写,“天空一无所有,为何给我安慰”。我想,夜晚的天空,守护多情的浪子。
+
+![](https://cat.yufan.me/cats/0153130uL.jpg)
diff --git a/source/_posts/2012-04-02.md b/source/_posts/2012-04-02.md
new file mode 100644
index 0000000..36cbfc8
--- /dev/null
+++ b/source/_posts/2012-04-02.md
@@ -0,0 +1,23 @@
+---
+title: 随想——树的伤口
+tags:
+ - 伤口
+ - 随想
+categories: 文章
+permalink: the-wounds-of-the-tree
+featureImage: https://cat.yufan.me/cats/015005Kg1.jpg
+id: 46
+updated: '2015-04-16 04:28:01'
+date: 2012-04-02 08:31:50
+---
+
+走在这条通向图书馆的靠山小路上,我无意于过往的东西,目光在周围的一棵棵树上游离。猛然间,我的目光停留在路边一棵树上。咋一看,它高大茂盛,但真正抓住我注意力的不是那些,而是树的主干。从中间往下都没有分枝,有的只是“伤口”。
+——树枝被砍下来后愈合留下的痕迹,有些像人的眼睛,注视着人的生活。而不单单只这棵树,公路两旁,每一棵树上都有一两只“眼睛”,好像诉说着枝干被砍下来时的伤痛和不得不承受命运的安排的无奈。它们是无奈的,为了附和人类们的审美观,为了保证车辆不被伸长的树枝“骚扰”,身体的一部分被强制夺走。
+
+
+
+树的伤口,静静地诉说着曾经的的无奈与现在的挣扎,那种沉默的诉说是如此悲伤,对于那些无奈的树,我心中有些许同情,但另一种感觉是同命相怜!我是一棵有着伤的树,我外形完整,但伤口愈合留下的痕迹却永远留在了心上。社会应该不会轻易接纳一个人,尤其是一个没有伤口的人。我曾经生活在我的世界里,不需要跟社会打交道,只是与天真无邪、心灵纯净的同龄人玩耍,那时我是个孩子,是一颗没有伤口的树,那时是社会与我都不需要对方的时候。在人生的道路上,我留下的脚印越来越大。当有一天,我发现,我开始需要社会的时候,我不得不砍掉我的“枝”——单纯美好的幻想,对于陌生人的百分百的信任。有人说那是从幼稚走向成熟的必经之路,而我却觉得好痛好痛。那些,对我来说,都是舍不得放弃的“异珍”,割舍了,我就会痛,所以我蜷缩在一个灰暗的小角落里,不停地抚慰伤口,希望它们慢慢愈合,而每一次的抚慰只会让我更痛,让我迷失感更强。
+
+这世间,只有我一棵有着伤口的树吗?应该不是,也许我们每一个人都是一棵有着伤口的树,都在痛,只不过有轻有重。但是,我们真的是树吗?只能被动的任人掌控吗?不是,不是!我们有思想,可以去选择要不要那些“伤口”。以前的我做了让我痛到现在的选择,而今的我决定选择保留我心中的最宝贵的品质,不再厌弃!
+
+——おわり
diff --git a/source/_posts/2012-04-07.md b/source/_posts/2012-04-07.md
new file mode 100644
index 0000000..029e129
--- /dev/null
+++ b/source/_posts/2012-04-07.md
@@ -0,0 +1,32 @@
+---
+title: 人间何处问多情?
+tags:
+ - 情思
+ - 纳兰性德
+categories: 文章
+permalink: the-poem-of-nalansingde
+featureImage: https://cat.yufan.me/cats/0149010hQ.jpg
+id: 47
+updated: '2015-04-16 04:28:31'
+date: 2012-04-07 10:52:15
+---
+
+>“漫惹炉烟双袖紫,空将酒晕一衫青,人间何处问多情。”
+>
+>——题记
+
+这般流水一样清澈的字句,定然属于如同秋天一般忧郁的词人。轻轻拂开时光的厚重褶皱,一个名字展现在世人面前:纳兰容若。
+
+纳兰名性德,而我却更喜欢叫他容若。一个精致的才子理应有一个精致的名字,而这个名字本身就是一首婉约的词曲,平平仄仄平的念出来,伴着曲调唱起来,唇齿间便盘旋着漠然寂寥之意……
+
+
+
+或许说红颜薄命,才子命苦。纳兰的父亲权倾朝野,贪婪成性。而纳兰却厌倦仕宦生活,早早的看透了那些丑陋的尔虞我诈。清朝的夜晚“太冷了”,也过于漫长,纳兰也只好躲进了词里。“我是人间惆怅客,知君何事泪纵横,断肠声里忆平生。”
+
+好在纳兰还有一位妻子卢氏,卢氏知书达理,性情温婉,和纳兰朝夕相伴,恩爱有加。而良辰美景总难长久,此恨绵绵无绝期。不完美的人生成了纳兰后半辈子的主旋律。短短数年的举案齐眉,相敬如宾的生活后,卢氏竟先于纳兰而卒。
+
+于是,在悲伤酷梦无处可发之后,纳兰研墨执笔,写下大量悼亡词。“梦好难留,诗残莫续,赢得更深哭一场。”碧落茫茫,人自然是无处可觅;只叹是天上人间,前缘尽去。衣香鬓影的痕迹中,举杯而下的是悲辛交集的眼泪。也许上苍总是公平的,给予你一身才气,却要夺走你一生的挚爱,这公平,如此残忍!人生如寄,浮浮沉沉,几多断肠,谁能相握?唯能掬一捧清泪,自问:此情何时休,此恨何时已?
+
+红颜薄命固然让人叹惋,才子英年早逝却更教人扼腕。他的词可谓是“天雨粟,鬼夜哭”,人间少了一位君子,夜台却又多了一颗文星。如同他在某首咏雪词中写到:“冷处更佳,别有根芽,不是人间富贵花。”于是乎他自己,似乎也不应属于 人间。他是天上的一颗明珠,终将回到天上去。、
+
+如今觥筹交错的局面早已消逝,丝竹管弦也只是古书中附加的背景。无论金粉有多浓重、场景有多华丽,纳兰永远是其中最清逸的一道色彩。万古是非浑短梦,人间何处问多情?
diff --git a/source/_posts/2012-04-09.md b/source/_posts/2012-04-09.md
new file mode 100644
index 0000000..16be12f
--- /dev/null
+++ b/source/_posts/2012-04-09.md
@@ -0,0 +1,35 @@
+---
+title: 轮回,苍白了年少轻狂
+tags:
+ - 成长
+ - 轮回
+categories: 文章
+permalink: when-u-were-young
+featureImage: https://cat.yufan.me/cats/014708ruS.jpg
+id: 48
+updated: '2015-04-16 04:28:49'
+date: 2012-04-09 15:10:43
+---
+
+无意间掐指算算,距上一次写下[第几个100天](http://yufan.me/one-hundred-days/)之后又过去了100天。百日轮回,说长不长,说短不短,只是不经意间回首,便苍白了记忆。
+
+一开始建博的时候,只是想将自己内心的想法一一表述出来,所以,每次满怀欣喜与期待的发表一篇文章之后,便会坎坷不安并激动的等待你的留言、评价。那是一份期待能有人认可和赞赏的盼望和心切,一种想展示内心自我的冲动。于是乎,那么多的文字就这样一点点的日积月累,随着时间的流逝,风格一变再变,访客也是新颜换了旧颜。但是,真正变了的,只有自己的心态。
+
+虽说花谢了来年还可以再开,曾经的自己傻傻的以为年华也是这样,无忧无虑的年少时光可以像花期一样循环往复。却不懂得,其实成长,就是一场盛宴,也是一种伤。其实那些写下的文字,都将是我们生命中最为难忘记述,过去了,就不再拥有。
+
+有的时候,看见后台里面的一个个鲜活的面孔,心中总是感到莫名的痛。只为似水流年中,那些消逝的曾经。
+
+写下此文的时候我又一次重新审视了那些稚嫩的文字,突然有一种想笑的冲动,是过去的我太天真,还是现在的我太成熟?
+
+>看见的熄灭了,消失的记住了。
+>我站在海角天涯,听见土壤萌芽。
+>等待昙花再开,把芬芳留给年华。
+>彼岸没有灯塔,我依然张望着……
+
+这样一个安静的夜晚,一个人静悄悄的听着王菲的《彼岸花》,心情起伏,那一段段的文字划过眼帘,又那么的消逝于视野……
+
+一滴无声的泪珠划过脸庞,冰冷的,混合着苦涩,苍白了昔日的少年痴狂。突然间明白,在成长的盛宴中,我们得到了很多,也遗忘了很多。
+
+百日轮回,烁然一瞬,有的只是成长的记录和曾经的感悟。但,说不尽,道不完的还是回忆。
+
+![轮回(02)](https://cat.yufan.me/cats/014708LPY.jpg)
diff --git a/source/_posts/2012-04-14.md b/source/_posts/2012-04-14.md
new file mode 100644
index 0000000..e8bc9f9
--- /dev/null
+++ b/source/_posts/2012-04-14.md
@@ -0,0 +1,46 @@
+---
+title: 揽月楼前的三角梅开花了吗?
+tags:
+ - 三角梅
+ - 高中
+categories: 文章
+permalink: bougainvillea-spectabilis-willd
+featureImage: https://cat.yufan.me/cats/014521pwE.jpg
+id: 49
+updated: '2015-04-16 04:29:07'
+date: 2012-04-14 13:35:55
+---
+
+一场淅沥淅沥惹人心烦的清明小雨后,软件园教学楼旁的海棠花纷纷扬扬的开放了,粉色的花瓣映衬着来来往往的青春容貌,带来一份熟悉和喜悦,还有一段淡淡的回忆……
+
+——题记
+
+
+
+今早上上课时,校园的小径上漂浮着丝丝的柳絮,绵绵的,让人欣喜。我不由得想起《圣斗士》里面沙罗双树园之战里的故事,“最接近神的人”加沙在被杀死的时候曾说道:“沙罗双树的花也凋落了吗?”
+
+沙罗双树开花的时候亭亭玉立、比邻而居,纯白色的花瓣洒落空中的时候像极了此刻晚春的落英与柳絮。济南的4月刚刚回暖,所以校园里西府海棠多于此时绽放。再想想高中校园里的三角梅,此刻也定是花团锦簇了吧。
+
+高中读书时,教学楼的名字叫做揽月楼,其后有一个走廊形式的小花圃,一开始由于才建好,光秃秃的。进入高中的第一个春天,那个三角梅盛开的季节。我第一次看到花圃中绽放的紫红色花骨朵,热烈的、大把大把的绽放着,就像是一种生命的燃烧与舞动,给你一种由心的惊艳之感。
+
+在厦门读完高中三年,每到冬天的时候,我常常习惯性的望向楼下的花儿,心里问:三角梅什么时候开花啊?开了花,意味着温暖舒适的春天就要来了。
+
+寒假时,父母都去上班,一个人在家时,心中总会浮现出风中摇曳的光秃秃的花枝。心里想:它们什么时候才会开花啊?当它们开花的时候,新的学期就要来了。
+
+我是如此的盼望着它们的盛开,看着它们慢慢长出花苞,在某个清晨,当我走进校园的时候一齐盛开怒放。就像是一种一年一次的约定,只有看到了盛开了的三角梅,万紫千红的春天才算是真正的开始了!
+
+揽月楼前的三角梅,承载了苦闷高中三年的记忆,是我中学时代中最为美好的风景之一。
+
+毕业后考进了山大,离开了南国温热的气候,来到济南这么遥远的北方。我常常怀念高中典雅幽静的校园,怀念揽月楼前的三角梅。今年年初的时候为了拍摄特意在假期返了一次母校,整个校园空荡荡的,花圃里的三角梅儿也只是散散零零的开了几多,迎着风儿打着旋儿。我那亲爱的三角梅啊,怎么还不开花?
+
+2月中旬,因为开学,又匆匆回到济南,一转眼2个月过去了。前天,还在母校读高中的校友兴匆匆的 打电话告诉我,三角梅开花了。急匆匆地打开校友的空间相册,映入眼帘的便是那熟悉的紫,依旧是那么奔放的绽开。那种熟悉感,就像是我与它跨越了南北3000公里的漫长距离般,在心灵上又一次共鸣。
+
+三角梅,花语:热情、坚韧不拔。就像是当年在[花圃榕树下的那个她](http://yufan.me/blue-turkey/ "蓝色土耳其"),一起拼搏过,奋斗过。曾掐下一朵紫红三角梅,别于她的发梢间,两人间只需会心一笑,一切便尽在不言中……
+
+写下此文时,我特意去翻了翻图书馆里关于植物的书籍,才发现三角梅原来还有一个诗意的名字叫做九重葛,又名毛宝巾、簕杜鹃、叶子花、纸花。但三角梅也好,九重葛也罢,我却很难再对于相似的花海有所感触了。就像是此刻我看着窗外的海棠花儿,只是惊艳与它的美丽,别无他想。
+
+想来也是,花儿何处都有,但是那些年少的心迹却不会随意开放,一年又一年,这些类似的场景只是涂描于心中的某个不知名的角落。只可谓年年岁岁花相似,岁岁年年人不同。
+
+——写于2012年4月13日
+
+![三角梅(2)](https://cat.yufan.me/cats/014521f36.jpg)
diff --git a/source/_posts/2012-04-20.md b/source/_posts/2012-04-20.md
new file mode 100644
index 0000000..b1763c2
--- /dev/null
+++ b/source/_posts/2012-04-20.md
@@ -0,0 +1,36 @@
+---
+title: 光阴向左,生活向右
+tags:
+ - 忙碌
+ - 未来
+categories: 文章
+permalink: left-time-right-live
+featureImage: https://cat.yufan.me/cats/014449ulr.jpg
+id: 50
+updated: '2015-04-16 04:29:46'
+date: 2012-04-20 23:58:25
+---
+
+周一时信誓旦旦的对松鼠哥哥说:“我要开始写博文了,准备好抢沙发。”然后,便没有了下文……似乎每天都有很多的事情要去忙碌,前半个学期一直忙于数据结构的项目,才做完,操作系统的实验又来了。
+
+于是,这个一周的时间便全身投入了Linux之中,查找资料,一边不熟悉的使用着vim,一边头大的查找Library中的函数。编译、测试,不知不觉,一周就过去了,说好的文章却一直没有写。
+
+
+
+辅导员说:雨帆,你活的太累了,不要这样子。可是,谁又能知道自己心中的无奈?当年,在高考之后填写志愿的时候便和父母发生了争执。我一直想要学习化学,痴呆呆的想要将全部的精力投身于其上。可是,生活的无奈,父母的反对,为了坚持自己的兴趣,不得不选择了软件专业。
+
+于是,为了证明自己,或者说自身无时无刻不在担心当初那个不被认可的选择会不会贻笑大方,常常强迫自己去学习。于是,越来越忙碌、越来越没时间思考,似乎自己的感情都被牢牢压抑了。有时候,自己会很怀念还是读小学的生活,可以那样无所顾忌的放声大哭的日子。那样的痛声的哭泣,还往往可以换来父母温暖的抚慰。但是,女友云儿说,已经懒得哭了。
+
+那么,是什么时候开始,已经学会了隐藏自己的情感呢?有时候心里很难过,就一直对自己说,不要哭,你已经是大人了。上课、吃饭、自习,每天都有很多事要做。于是,很辛苦的仰头呼吸,强迫自己将一切的情感压回心底,继续如平常般忙碌、寒暄、微笑。
+
+等到了睡觉的时候,已经心力交瘁、筋疲力尽,除了困倦别无其他,此时最好的选择便是洗洗睡吧。于是,我还是不多愁善感的好。就让自己的神经粗一点吧,我不想哭。
+
+曾经疯狂的迷恋上了网络游戏,因为在那个虚拟的世界里面,可以忘记一切的现实烦恼。时间、精力、金钱,自己将一切的一切花于游戏中。但是,当年回到现实世界的那一刻,才发现,一切都是那么的空虚和无奈。
+
+看着窗外前段时间还开的烂漫的海棠,此刻已经落了大半儿。心中突然明悟,人生也许就是这样子了,顺着自然的,顺着自己心意的,即使是再忙碌,也并没有什么无奈与不安。就像说花谢也无需哭泣,因为这是顺应自然的。
+
+人生路上的前方,常常就像是迷雾、花海,远看的时候朦朦胧胧、并不真切,只有走近了,才能看到与远看的时候完全不同的场景。那么,就让我来揭开自己迷途般的未来吧!
+
+光阴向左,生活向右。
+
+![光阴向左,生活向右(2)](https://cat.yufan.me/cats/0144497sW.jpg)
diff --git a/source/_posts/2012-04-22-1.md b/source/_posts/2012-04-22-1.md
new file mode 100644
index 0000000..56a646e
--- /dev/null
+++ b/source/_posts/2012-04-22-1.md
@@ -0,0 +1,28 @@
+---
+title: 见字如唔
+tags:
+ - 书信
+ - 回忆
+categories: 文章
+permalink: chirography-on-letter
+featureImage: https://cat.yufan.me/cats/014314nEV.jpg
+id: 51
+updated: '2015-04-16 04:30:12'
+date: 2012-04-22 11:19:11
+---
+
+见字如唔,即见字如见人,看见写信的那一方熟悉的字体,心里面便会浮现出对方温暖的身影,仿若近在身边。而曾经的很长一段时间里都很喜欢这个词,或者说是怀念它所承载的一段记忆。记得早年在外地的时候,每次和昔日的故友、表弟通信,第一句便是见字如唔。只是现在再谈起,又有几个人会懂?
+
+一直以来对于纸张和笔记本有一种特别的迷恋。
+
+
+
+每次发表博文时,第一件事情,便是在纸张上勾画好大纲,写好草稿,再慢慢修改好后通过打字誊写到博客上。常常喜欢写字的这一过程,看着自己的思绪变成了文字,印在了纸上,便有了一种莫名的兴奋。想想这些纸张的前生都是树木,每次写下想法时,常会闻到一股淡淡的香。写着、写着,当我无意中去翻看昔日的存稿的时候,才发现,已经垒成了厚厚一摞,也算是一种意外的惊喜吧。
+
+去年,宿舍换床位的时候整理杂物,就从书摞里面翻出一大袋明信片。突然觉得,似乎写信的日子离我越来越远了。现在每年过生日的时候常常收到无数的E-mail、短信。虽然,他们很漂亮,很完美,内容中包含着真挚,我却一点也不喜欢。想来这些朋友也都是十分忙碌。我们的思想,友情,都被留在了硬盘里面,经受不起任何一场病毒或是格式化。有时又觉得很无奈,我们的生活就是无数个1或0。那么丰富多彩的情感,又怎可能是1或0所能表达的?
+
+于是乎,我常怀念书本中的那个信息通讯极其不发达的年代。那时候,远方的亲友间的联系,还不能通过无线电、基站来传递。很多说不出的话语,常常只能满满的写于纸张上面,藏于厚厚的信封中,向远方传递。于是乎,那种等待与期待,往往是最为美好与焦急的时刻。想想自己上初中追求初恋的时候,便是通过简短的书信来往。每次都是偷偷的将纸张塞于隔壁的她的书桌抽屉里,之后便是焦急的等待回信。一封又一封,似乎那个时候,语文课本中一切可用的华丽的辞藻都被我拿来描绘。那种情境现在想起来都是那么的可爱。现在的生活,每天和老婆之间,即使相隔200米,也能立刻通过让手机、QQ、微博让对方知道自己。有时候觉得这样子很方便,又有时觉得没有了距离的熟悉感是那么的厌烦。
+
+这周一的时候,收到了昔日高一的女友寄来的明信片,封面的第一句写着:见字如唔。那一刹那间,我仿佛看见了多年前的那个[榕树下的下午](http://yufan.me/blue-turkey/ "蓝色土耳其"),那张永不退色的脸庞……
+
+![见字如唔(2)](https://cat.yufan.me/cats/014314X8M.jpg)
diff --git a/source/_posts/2012-04-22-2.md b/source/_posts/2012-04-22-2.md
new file mode 100644
index 0000000..23d3127
--- /dev/null
+++ b/source/_posts/2012-04-22-2.md
@@ -0,0 +1,29 @@
+---
+title: 我已经舍不得花一个小时
+tags:
+ - 游戏
+categories: 游戏
+permalink: dragon-nest
+featureImage: https://cat.yufan.me/cats/ame/209756114116.jpg
+id: 51
+updated: '2015-05-24 08:29:32'
+date: 2012-04-22 11:19:11
+---
+
+对于每个人而言,长大了,意味着不同的改变。但如果要我说自己有什么不同,我定然是想不出的。突发奇想问问旁边的人,都说没变啊,还是和以前一样挫。“靠!”寒假的同学聚会倒是让我吃了一惊,身边的同学都变化蛮大,大家几乎认不出彼此,只能通过似曾相识的眉眼、容颜揣测。
+
+看来岁月催人老,我们还是潜移默化地改变了。
+
+前些日子机油叫我一起打剑灵,玩了不到一个小时,我便无聊地Shift+Delete。
+
+如果非要说我对哪些游戏比较有感情的话,龙之谷一定会是在里面占上大大的一笔,04年第一次接触到网络游戏开始算起,陆陆续续玩了许多网游。奇迹,是我玩的第一个游戏,也让我第一次在网游里面体会到那种叱诧风云的激情与快感。那种热血的回忆,到现在都难以忘记。
+
+上了初中后,心思开始专注与于学习上了,这期间玩的游戏,便少了,印象深刻的,便是梦幻西游了。当年,为了抓一只泡泡,三天三夜的苦苦研究秘籍,讨论哪里遇见的几率大,遇到后怎么抓。现在想想,又有些好笑,年少的思想就是单纯。前些天突然在微博上看到一句话:亲,你还记得当年大明湖畔的泡泡吗?瞬间便有一种流泪的冲动。
+
+到了大学后,我的第三次游戏生涯才算是正式开始。10年的年底,第一次看到同学在玩龙之谷。瞬间便被它的丰富的连招和华丽的画面迷上了。可以说,这是一个好游戏。但是为什么玩的人越来越少?服务器越来越卡呢?有时候,打开游戏,里面在线的好友只有几个,公会里的人也越来越少。有时候想组队刷图,半天都没一个。是我抛弃了游戏,还是游戏抛弃了我?
+
+仔细想想看,我们中国人很难理解韩国游戏运营商的开发模式,在一个生活压力很大的韩国,他们似乎更愿意,一边上班,一般玩着版本缓慢更新的游戏来缓解压力。而国人,很多都像我一样,把游戏当作了生活。所以当对于一个事物熟悉到失去兴趣的时候,便会离开。想想韩国现在还不断更新的奇迹,和国内两年没有维护的奇迹官网,便是活生生的例子。
+
+说到底,其实还是我自己变了,我已不再如从前,有了自己的事情和兴趣。网游里面的打打杀杀刷挂练级的生活已然对于我无趣,甚至连一个小时都舍不得花费。
+
+变与不变,真正的生活还要继续。而游戏,也许只是生活的调剂品,真正的主菜,还是现实。
diff --git a/source/_posts/2012-04-22-3.md b/source/_posts/2012-04-22-3.md
new file mode 100644
index 0000000..8e8e277
--- /dev/null
+++ b/source/_posts/2012-04-22-3.md
@@ -0,0 +1,20 @@
+---
+title: 越来越近的CBT3
+tags:
+ - 剑灵
+categories: 游戏
+permalink: the-bns-cbt3
+featureImage: https://cat.yufan.me/cats/ame/114183724.png
+updated: '2015-05-26 08:29:32'
+date: 2012-04-22 16:07:17
+---
+
+在解说我所谓的CBT3是什么之前,我想继续上文来吐槽思密达棒子们的脑袋到底是怎么想的。如果你一直在抱怨小米手机的饥饿营销是那么的让人愤怒的话,那么我想说:比起NC Software 来说,那些都是小孩子过家家,人家才是玩弄这个的鼻祖。——好了,吐槽完毕。^_^
+
+
+
+韩国的游戏,一直以来都吸引世界各地的游戏玩家的眼球。有些游戏,在韩国不受欢迎,但是在中国等地却能异常的红火。比如,毒奶粉(DNF)便是一个活生生的例子,这本来在韩国业绩不佳的游戏在中国却死灰复燃,到现在还是那么的火爆。于是,在厌倦了国产游戏的大宣传、大制作、大烧钱、极垃圾之后,我便将目光集中到了韩国游戏上。然而,这便是坑爹的开始……
+
+似乎,就像是笑话里面说的那样,韩国人的一切都是和泡菜息息相关的。比如游戏,必须要像泡菜一样测试了好久,才会向公众开放。于是,一次又一次封闭内测,一次又一次的删档,一次又一次的跳票……(某人无限怨念中……)也就是在这样的等待和激动中,剑灵的CBT3(Close Beta Test 3)就要开始了~!
+
+今晚外游网的论坛里剑灵板块小小的火了一把,韩国的NC公司终于在今天宣布,开始为期半个月的第三次封闭内测,作为2测的老玩家,我可以从25号开始直接登录测试。好激动的说,话说回来,这次的宣传视屏中,最为特色的就是之前一直猜疑的召唤师。怎么样?是不是很可爱啊。实话说回来,上面的喵星人彻底的把我萌了一把。不管怎么说,继续坐等25号。
diff --git a/source/_posts/2012-04-25.md b/source/_posts/2012-04-25.md
new file mode 100644
index 0000000..0b314f6
--- /dev/null
+++ b/source/_posts/2012-04-25.md
@@ -0,0 +1,42 @@
+---
+title: 剑灵 CBT3 第一天感言
+tags:
+ - 剑灵
+categories: 游戏
+permalink: the-first-day-of-bns-cbt3
+featureImage: https://cat.yufan.me/cats/ame/133021wU2.png
+updated: '2015-05-27 08:29:32'
+date: 2012-04-25 21:40:35
+---
+
+怎么说好呢?这个蛋疼的一天真的是悲喜交加,或者说让人无爱的Play NC让人郁闷。花了两天时间通宵的辛辛苦苦的下载完庞大的客户端后(校园网标准100k/s的下载速度,还不定时抽风)之后,便开始了激动的安装。好了,一切就绪后,就准备开始玩了。
+
+
+
+首先按照外游网里面御龍御龍大大的方法,将Client.exe创建了一个快捷方式到桌面上,在快捷方式的属性里面加上了/LaunchByLauncher参数,小小的登录进去看了一下,发现登陆界面和二测的一样没有变化。现在是12点,坐等下午1点的开服啦。
+
+![](https://cat.yufan.me/cats/ame/133020NJM.png)
+
+挂好VPN,登录进入[官网](http://bns.plaync.co.kr),首页左下角的灯笼就是登录游戏的地方现在还没开放,所以不能点击。等啊等,终于,YY的某个基佬说,可以了。
+
+可是我这里的官网还是点不了啊。在等待3分钟果断刷新。HO~HO~可以点击了。
+
+![](https://cat.yufan.me/cats/ame/133021Hdx.png)
+
+![](https://cat.yufan.me/cats/ame/133022L8i.jpg)
+
+激动的通过官网启动了客户端后便是坑爹的开始啊。首先是上面的更新。
+
+我的更新卡在了6%不动,然后是各种报错。真搞不懂棒子们是怎么想的,是不是为了体现自己的网络有多么优良,整个1.4G的补丁文件全部在线更新,连一个离线下载的地方都没有。于是,就这样更新了整整4个小时。期间服务器宕机了一次,最后干脆放出服务器维护的消息,尼玛整整维护从四点到六点2个小时。幸运的是,终于在再次开服的时候进入了游戏。由于及时,没有排队的说哦。放出截图两张,让你们嫉妒嫉妒。
+
+![](https://cat.yufan.me/cats/ame/133022RQ1.jpg)
+
+![](https://cat.yufan.me/cats/ame/1330221uT.jpg)
+
+最新消息,游戏服务器期间突然又再次卡了一下,然后8分钟后才恢复了。结果,尼玛回档鸟,继续从0开始练级。o(︶︿︶)o 唉,坑爹的NC。
+
+>PS
+>
+> * CBT:Close beta tes
+>
+> * 剑灵:韩国网络游戏著名开发商NCsoft的最新作品。这是一款试图摆脱单调的游戏方式,让玩家体验新乐趣的奇幻武侠动作3DMMORPG。
diff --git a/source/_posts/2012-04-26.md b/source/_posts/2012-04-26.md
new file mode 100644
index 0000000..2c34b6a
--- /dev/null
+++ b/source/_posts/2012-04-26.md
@@ -0,0 +1,35 @@
+---
+title: 给你一个家的感觉
+tags:
+ - 博客
+categories: 文章
+permalink: your-second-home
+featureImage: https://cat.yufan.me/cats/0142470Ox.jpg
+id: 52
+updated: '2015-04-16 04:31:48'
+date: 2012-04-26 09:06:44
+---
+
+傍晚和云儿携伴行走在校外的街道上,来来往往的人潮,每个人行色匆匆的和我擦肩而过,涌向远方……
+
+我立身与人海之中,望着这些匆忙的人儿,他们的脸上,没有焦急的神色,每个人都是淡淡的安详。汽车声、谈话声、脚步声交织入耳畔,好一副人间烟火。
+
+人群的某些人,终会在某个角落、拐弯处消失,融入略微发昏的夜色里。他们的目的地却都是那么出奇的一致——家。
+
+
+
+此刻的黄昏已然降临,街边的路灯依依亮起,像是一道道迷茫中的方向标,指引着归途的家人。远处的建筑里亮起了点点光亮,就像是一座座守望塔。等待着、盼望着,亲人的下班、放学归来。想想上小学冬季时的回家,每次都能远远的在路上看到家门口的那盏路灯和母亲门口那张望的身影,那是不变的约定,和真情的守候,等着你的归来。
+
+生活,就是痛苦的生下来,勇敢地活下去。在岁月的进程里,悲伤、酸辛、惆怅似一条河流,总是和着往事与现实的纠葛,有着说不清的怅然和隐隐的痛。而一个人,只有在一个地方才能将思绪调到最淡,暂时放下浑身的担子。那就是,家。
+
+![](https://cat.yufan.me/cats/014247JuA.jpg)
+
+网络茫茫之浩大,已经超越我们的想象。每个人通过网络,获得需要的资源,也创造着属于自己的信息。
+
+厌倦了人人网上无聊的分享消息,无聊的各种签名。厌倦了QQ上面一个个闪烁的头像,悦动的消息。厌倦了各个门户网站上密密麻麻的明星八卦绯闻后,我们常常希望能够在互联网上拥有这样一个小小的地方——一个只属于自己的一片网络空间,一切全部属于你。就像是一块画板,你可以在上面描绘自己的色彩;就像是一本精致的日记本,你可以写下任何心事、思绪,快乐的、不高心的、任何心情;就像是一间小屋,你可以设计它的一切。
+
+而就像你通过网络看到我的文章一样,除了现实生活中的家之外,其实每个人在网络上也可以有一个家。那就是,独立博客。
+
+独立博客,互联网中不常为人注目的一艘小舟,是你在互联网上的又一个栖身之地。不需要多少人的关注,不需要宣传,就像是墙角的一朵不为人注目的花饰,淡淡的写着自己的心事,留下那些藏身心中多年的话语,一笔一笔的勾勒着自己的人生……
+
+何处是家?独立博客,网络中属于你的家!
diff --git a/source/_posts/2012-05-04.md b/source/_posts/2012-05-04.md
new file mode 100644
index 0000000..58f9c9e
--- /dev/null
+++ b/source/_posts/2012-05-04.md
@@ -0,0 +1,57 @@
+---
+title: 阳光的味道
+tags:
+ - 外婆
+ - 爱
+categories: 文章
+permalink: the-flavour-of-sunshine
+featureImage: https://cat.yufan.me/cats/0141592Hv.jpg
+id: 53
+updated: '2015-04-16 04:32:15'
+date: 2012-05-04 06:34:24
+---
+
+4月底的阵雨过后,久违的晴天的终于来临。傍晚和舍友携伴去收被子,阳光漫漫扬扬的倾撒于身上。沐浴着金色的阳光,抱着晒得柔软温暖的被子,我的思绪却不知不觉的飘到了很远……
+
+两人高的屋檐,漏下一方四四方方的半个篮球场大小的光斑,这就是童年记忆深处中熟悉的场景了。小时候,父母的工作总是那么忙,于是每天大半的时光便是在外婆家度过的。
+
+
+
+外婆的住房大约始建于70年代,属于目前很少见的双层单位公寓楼,外婆住在楼下。和很多老屋子一样,一楼背阴的屋子,总是潮湿阴冷的。所以一到阴天的时候,外婆的双腿总是会隐隐的作痛。小腿肚上一按下去就会凹下一大块,久久不见复原。
+
+于是,午后屋外的那片阳光成了每天和外婆必去的地方,直到今天,还能依稀记得一些模模糊糊的情境……
+
+某个秋初的下午,秋老虎已经过去的日子。家家户户的门前都开始晒起了冬天要盖的被子,一如往常一样,我和外婆坐在了有些倾斜的光影下。趁着外婆不注意,我开始玩起了钻被子的游戏。
+
+![暖阳](https://cat.yufan.me/cats/014159xqg.jpg)
+
+“小雨!”,身后响起了外婆有些生气的叫声,“回来。”
+
+被外婆抓了个先行的我垂着头,闷闷不乐,两只腿推拉着回到外婆旁边。坐下来后便把头偏向一边,不理外婆。
+
+耳畔传来外婆的笑声,“小雨,来给外婆唱个小曲。”“不唱,就是不唱。”我把头偏的更偏了,继续不理睬外婆。
+
+“怎么了?小雨。要不外婆给你讲个故事,你知道吗?阳光也是有味道的……”
+
+“不听,不听,不听。”我双手捂着耳朵,背对着外婆,“上次你说钻被子会长不高,我问了老师,老师说是假的。”
+
+“不信?你去外婆家的被子上闻一闻?不就知道了。”外婆带着十分肯定的语气说道。
+
+ 此时的阳光依旧那么灿烂,天空中从远处飘过一大片云朵,慢慢遮住太阳,地上由远到近慢慢出现一片暂时的阴影。对面的那栋楼前长出屋顶的梧桐树还在沙沙响动。我回过头,半信半疑的看了外婆一眼,又看了看被子,磨蹭磨蹭的走了过去。
+
+面前向阳处晾晒的是我晚上睡觉时要盖的小棉被,握在手中暖暖的,似乎带着一种闻之欲睡的味道。外婆的被子孤零零的晒在略微背阴角落,冰冷冷的、硬梆梆的。
+
+不由得对于外婆的说法信了几分,记得当时的我一路小跑扑进外婆的怀里,“外婆!外婆!真的有一种味道哎!外婆,阳光的味道到底是怎么一回事啊?”
+
+“哎呦,我的心肝呦。”外婆接住了我,只是看着我笑,却什么也不说。
+
+![睡觉](https://cat.yufan.me/cats/014205hKp.jpg)
+
+缠着外婆问问题的我渐渐的困了,不知什么时候起进入了梦乡。外婆的手有一下没一下的慢慢轻拍着我的后背,邻居贾奶奶家的大黄狗从我身旁擦过,风过梧桐树的淅淅声久久回荡在耳畔,越来越模糊……
+
+这样散碎的记忆就这样结束了,回过神,身边是还在说笑的的舍友。说笑着感叹道:“好一个阳光明媚的晴天!”
+
+其实,阳光的味道,即是幸福。
+
+![阳光,幸福](https://cat.yufan.me/cats/0142058Xy.jpg)
+
diff --git a/source/_posts/2012-05-07.md b/source/_posts/2012-05-07.md
new file mode 100644
index 0000000..64ee20e
--- /dev/null
+++ b/source/_posts/2012-05-07.md
@@ -0,0 +1,100 @@
+---
+title: 交织的羁绊 Story 0
+tags:
+ - 同人
+ - 悠久之翼
+categories: 小说
+permalink: novel-story-0
+featureImage: https://cat.yufan.me/cats/013907d1y.jpg
+id: 54
+updated: '2015-04-16 04:32:32'
+date: 2012-05-07 06:33:18
+---
+
+这是一篇同人小说的始篇,也是一个故事的开始。在这里我将写一篇短篇小说,名为《交织的羁绊》,故事的原型和人物完全是对于动漫悠久之翼的改写。昔日的我曾经想把它写下去,但是我一直没有坚持,不光是因为时间或者心情,也有沉淀于心的感受。
+
+时间带给人的不仅是苍老,也有见识上的阅历。所以我想慢慢写,用时间来写出每一章,每一字。故将是一个巨大的不知何时才能填满的水坑。;-) 但是我会写下去,就像是一种记忆与幻想。幻想童话中那双闪光的音羽之翼。
+
+
+
+## Story 0 序章
+
+无论是谁都会有向神祈祷的时候。就算是毫无信仰,但也必然会有全心全意去祈祷的那一刻。谁都会有寻觅之物、祈望之物、伸出双手想要获得之物。无尽的思念之中,由人与人的羁绊生出之物。那……一定是——**交织的羁绊 **
+
+银白色的天空、大地,雪中的世界银装素裹。白色的圣诞节傍晚,音羽镇的街道上已然寥无行人。此时做完弥撒后的教堂门口突然出现一个漆黑的身影,他穿着厚重的大衣,围着一条略显老旧的围巾,手拿一束不该出现在这个时节的鲜花,停驻在教堂半掩的门口,似在沉思。漫天的雪花纷纷扬扬的交织洒落,不一会为他披上一身白大衣。小小的身影似与这白色的世界融为一体,带着寒意的空气弥漫了整个天空的忧伤。
+
+深呼吸一口气,男人抬起头看着眼前这扇半掩的教堂大门。一次又一次地伸出双手,想要推开它,却每伸到一半便不敢再向前。眼前仅仅有一尺的大门就在那里,似乎在期待,期待门后又有怎样的故事、人物。昔日的记忆交织在脑海,回忆着那些一个又一个美好的记忆,男人的眼角不觉露出笑意。某一刻,远处街道上自行车的叮铃声响起,惊醒了还沉浸在回忆中的他。想想自己不远千里来到这个充溢着伤感与回忆的童年小镇,只为实现一个心愿,完成一份愿景。而她,会在里面吗?想到这,男人仿佛下定了决心般走向那扇门……
+
+随着轧轧声,男人换换推开那扇门推开那道沉重的门。踏入的瞬间,迎面扑来一阵热气,镜片上也因此糊上一层水汽。但是,为什么心中却突然感到刺骨的寒冷?呼出白色的气息,望向面前的环境。弥撒后空寂的教堂,同远方他守候的教堂一样的布局,却总感觉少了什么。男人走过一排排长椅,墙壁上的蜡烛将他的影子层层叠映,咚咚的踩在地板上的脚步声回响在这个无人的教堂里。一步一步,终是来到了大道末端的圣母像前,回望四周,还是没有那个日夜思恋的身影。男人的心中不觉有些失落,但也如释重负的松了一口气,唇间一抹苦笑,自己还是太天真了啊,人死了怎么又会重现于世呢?纵使似传说般变成了天使也不可能啊!
+
+男人失落的转身、迈步,向着来时的方向走去,手里的花束紧紧的攥在手中。微湿的眼角、沉重的步伐展现了此刻他心中的失落。少女的笑容还在心间浮现,但是,只是模糊的记忆。
+
+突然间,他的耳畔传来一声温柔的话语:“你来晚了,弥撒早做完了哦。”已然麻木的男人突然惊喜的回过头,祭坛前的圣母像下不知什么时候起多出来了一位少女背对着男人,飘逸的长发、靛蓝色的厚重棉袄。而男人却已然失了言语,就这样愣愣的注视着少女,手早已松开,扎好的花束洒落一地。仿佛有一个世纪那般漫长,最后,只吐露出两字:“优——子”……
+
+![交织的羁绊 Story 0.1](https://cat.yufan.me/cats/013907hxs.png)
+
+我们会不会,在某个时间某个地点,会在某个叫不出名字的地方,会在某片风划成线条的场景,看到曾经那张熟悉的面容,同时也就在那么一瞬间,天昏地暗。谁的忧伤,埋没在雪地上扯着风静静旋转的风标,留下晃动拉长的影子,像是几十世纪前斑驳的呈现。谁的呢喃,像是塞壬的歌喉,拂拭着人们心灵最脆弱的沙洲,带来天空瞬息万变的风景,奏动了锈迹斑斑的琴弦。谁的女孩,离散在古老的荒原,隔着圣安德烈斯大断层双目对视的瞬间,看见了曾经的永远。谁的身影,站立在世界毁灭的尖端,看着面前疮痍满目的画面,湮没了所有传唱千年风干的誓言。没有荒原上面扯着风旋转的风标,没有海洋深处塞壬的歌喉,没有空间隔离的圣安德烈斯地球大断层,没有世界毁灭的声响,只有站在圣母像下面的女孩。秀美的长发色头发,调皮的挽在肩膀前面,更深更长的睫毛,能看得见一整个银河的眼睛,融合在周围环境里……“
+
+那么,我是什么时候,软弱到会做这种梦了?”男人这样想到。
+
+“啊啦”,祭坛前的少女轻轻的转过身来,“晚上好。”少女的脸上洋溢着澄澈的笑容,微微的低下了头,那头飘逸的长发也随之荡漾出美丽的波纹。
+
+“……”男人无言的望着少女的双眼,胸口间有一股被人深勒的疼痛,曾经自己的双耳听过无数遍的她的声音,那每一言一语都是如此的悦耳动听。
+
+“……哟”男人费了半天,仿佛用尽全身力气的挤出了这句话。
+
+少女调皮的眨着双眼,微笑的说道:“啊?不对哦。今天应该是——圣诞快乐,才对呢!”她的整个身影埋没在教堂微弱的烛光下,恍若梦境。
+
+![交织的羁绊 Story 0.2](https://cat.yufan.me/cats/013908u7w.png)
+
+“圣诞—快乐。”男人深吸一口气,回复了才来时的平静,深邃的眼眸注视着少女。
+
+“圣诞节,却是一个人吗?”少女调皮的崛起了嘴,抬起头看向男人,露出好奇的神态。
+
+“啊,一个人过圣诞节已经很多年了…”
+
+“哎呀,还真是一个寂寞的人啊!”少女撅起了嘴,微垂眼帘,小声喃喃道,“不过说起来我也总是一个人呢。”
+
+“那么……”男人突然打断了少女,语气间透着一丝急迫,“如果可以的话,可以稍微聊聊吗?”
+
+少女的脸上绽开了笑容,阴沉的教堂似乎因为她的微笑而明亮起来,“嗯,十分乐意。”笑容间,透露着先前没有的亲切,“好久没见了呢。”
+
+“一直都……”男人重重的咽了咽口水,言语间透着些紧张,“……让你等了很久了,真是非常抱歉呢,优子。”
+
+“你是?”优子打断了男人的话语,似在思考,“火村……火村·夕君,没错吧!”少女像小孩子做错了什么事似的低下头抬起了眼,那双明亮的大眼睛灼灼的盯着火村,像是在等待着这边的肯定。
+
+和优子对视的火村的双眼里明显透露出了难以置信的神色,“难道说,你已经忘记了…关于我的事情了吗?”
+
+“嗯,其实呢。”少女轻轻的笑出声来,没有继续说下去。
+
+“是真的忘记了吗?还是…仅仅是一时恍惚呢?”
+
+“就在刚才。就在刚才,想起来了。”优子调皮的一笑,露出了得逞了表情,“这个样子,总感觉和高中校园的时候正好相反呢!”
+
+优子仰头望向教堂的天花板,那里有圣母像的浮绘,在火村眼里,她的笑容和高中的样子相比丝毫未变。“那个夏天也好,再会也好,还有其他的一切,都已经远远而去,再也找不回了。”
+
+“是很遥远……很遥远。都该是几年前的事情了呢。”火村略带伤感应到。
+
+一阵沉寂,两个似乎都在回忆着自己的故事,久久没有说话,最后还是优子打破了尴尬,只听她调皮的说道:“怎么好像是老爷爷的发言呢。我们看起来都还没有老哦!”
+
+“你不也一样吗?”从火村的脸上第一次露出了笑容,两个人互相望着苦笑起来。
+
+“那么,为什么,你要来到这里呢?”优子问。
+
+“我们不是约好的吗?在这里相见的约定。”在数年前的圣诞的早晨,两人间的确做过类似的约定,但是却没有履行。“大概,一直呼唤着我的人就是你,没错吧。”
+
+优子微微点了点头,又摇了摇头:“说不定是这样。”
+
+“那么,告诉我吧。在我不在的这段时间,在你的身边究竟发生了什么事?”火村向前走了一步,微微靠近优子,急切的问道。
+
+“发生了什么吗……”望向火村身后教堂的门扉,优子开始找寻想要说的话,“故事的开始……”
+
+“会是很悠长的故事,可以吗”,优子话题一转,继续调皮的看向火村君。
+
+“当然,到黎明前还有很久呢。”火村似乎也被优子逗乐了,做出我服了你表情来。
+
+“那么,就让我娓娓道来吧……从去年的圣诞节夜晚开始,那个冬日的故事……”
+
+To Be Continued!
+
+![交织的羁绊 Story 0.3](https://cat.yufan.me/cats/013908DDj.png)
diff --git a/source/_posts/2012-05-08.md b/source/_posts/2012-05-08.md
new file mode 100644
index 0000000..08b4b54
--- /dev/null
+++ b/source/_posts/2012-05-08.md
@@ -0,0 +1,114 @@
+---
+title: 交织的羁绊 Story 1
+tags:
+ - 同人
+ - 悠久之翼
+categories: 小说
+permalink: novel-story-1
+featureImage: https://cat.yufan.me/cats/013907d1y.jpg
+id: 55
+updated: '2015-04-16 04:32:32'
+date: 2012-05-08 09:47:52
+---
+
+## Story 1 初遇与未来
+
+音羽小镇建立于地震后的废墟之上,在小镇的边缘有一个废弃已久的车站,是音羽镇在地震后存留下来并且保存完好的事物之一,对于几乎被地震完全毁坏的音羽小镇来说,不得不说是一个奇迹。由于早就没有列车从这里经过,车站外已经生锈发黄铁道上布满了杂草。月台上不知何年树立的站牌上布满了斑驳的苔藓,上面的字迹也被雨水冲刷的依稀难辨。
+
+寂寥、空旷,似乎这里已经被人遗忘。对于莲洽来说却是他最喜欢的地方,安静、没有车流的小站,最适合一个人静静的看书、思考,不受外人的打扰。
+
+像小时候一样,莲洽踩着铁轨,一边伸开双臂保持平衡,一边向着列车站前进。此时已经是黄昏时刻,太阳早已收敛了一天的炎热,仅留下点点余晖染红了远处的半边天。绚丽的云彩、布满天空的火红色,总是会让人忍不住驻足观望。而对于莲洽来说却似乎没有那个心情,此时的他正尴尬的站在站台的角落,不知怎么是好。
+
+
+
+![交织的羁绊 1.2.1](https://cat.yufan.me/cats/013739VEV.jpg)
+
+原本应该空无一人的车站今天却有了一位客人捷足先登了,在站台上备置候车的长凳上,正坐着一位少女,少女高高的昂着头,仰望着远处依旧灿烂的晚霞。傍晚的空气略带点阴冷,而少女保持着毫无防备把喉咙暴露在外的姿势,看上去就像是深深的沉醉与景色之中,对此刻正不知所措的站在她身旁的莲洽毫无察觉。
+
+莲洽呆呆的凝视着少女,大概是这样的景象实在是太美了,油然而生出一份“不应该打扰到她”的想法。在转身离开之前,莲洽好奇的顺着少女的角度去仰望那片天空,希望发现有什么特别的地方能让人凝视那么久。可是,从少女的角度看过去,什么也没有。只有一成不变的天空在那,秋季的晚霞像是象征着寒冷一样传达着寒意。“也许少女那样仰望天空发呆有她的意义吧”,这样想着莲洽从天空中移回视线。却发现,不知什么时候起,少女已经翻过身来盯着自己看。夕阳倾洒与她的身上,反射出朦胧的光晕,让人恍惚间有一种不真实感觉。
+
+![交织的羁绊 1.2.2](https://cat.yufan.me/cats/013740Gfv.jpg)
+
+红色略微泛紫的发丝,调皮的在左耳间挽了一个小发辫。忧郁微蹙的眉峰,左眼不知怎么了,用白色的眼罩遮住,是患有脸腺炎吗?而看向莲洽的右眼是那么的纯净,仿佛只需简单一瞥,便可以看见倒映在里面的天空。少女身着一身略带保守的连衣长裙,但是鞋边的卡通装饰和放在身旁的粉色小猪背包却暴露了藏于心中的少女情节。到了这时,莲洽才回过神来,思考接下来该怎么办的问题。
+
+ “这……这个车站,站是没有电车的。”莲洽不大自然的笑着对她说道。
+
+少女一愣,眼神中露出迷茫表情:“诶???”本来随口敷衍的一句话,却被少女如此认真的回应了。
+
+莲洽连忙尴尬的摆了摆手,感觉此时的自己就像是一个小丑,在那么纯真的眼神面前竟不知如何是好,匆匆回了句:“对不起,没什么。”对话并没有继续下去,本来就没有继续下去的话题,这是理所当然的。“对方先来的,应该离开的是我吧……”莲洽在心里这样想到。
+
+![交织的羁绊 1.2.3](https://cat.yufan.me/cats/0137402J6.jpg)
+
+习惯性的抓了抓头后,莲洽继续表情抽搐的对着少女说道:“那么…再见了。”举起右手轻轻挥了挥,转身便跑。
+
+少女看向莲洽轻轻的嗯了一声,虽然还带着一脸的茫然,但很快就像是知道了什么的样子,捂起嘴浅浅的一笑,又挥了挥她纤细白皙的小手,目送着莲洽的远去……
+
+就这样,莲洽和月台少女的相遇结束了,在这个平凡的秋日,一次不足45秒的邂逅……
+
+一阵带有丝丝凉意的清风拂过月台上的长椅,拨动了放在少女身旁的小猫笔记本。只见翻开的那页上面写着:“坐在车站的长椅上时,来了一个穿着学生服的男孩子,说了些奇怪的话就马上回去了。”
+
+简单、平淡的邂逅并没有在少女的日记中留下多少记录,既不让人吃惊,也不具有戏剧性的相遇,或者是命运般邂逅的预感——之类的话语也没有被写进日记里。但是,谁又能知道命运的未来丝线将要缠向何方?
+
+![交织的羁绊 Chapter 1.1.1](https://cat.yufan.me/cats/013740duz.jpg)
+
+白云在天空缓静飘移,大朵大朵,宛如层层叠叠庞大的宫殿。而那些穿梭在云朵间隙里的阳光,迫不及待的穿过窗外花坛里中的树林,在教室内的地板上斜射下一道道的“光柱”。光束里面上下浮动的尘埃飘絮,在空气中反射出若有若无的辉光,像是在等待一个还未开始却已经进行了的传奇。让人仿佛坠入了宫崎骏的动画里那些大段大段的让人心痛的美好时光。
+
+![交织的羁绊 Chapter 1.1.2](https://cat.yufan.me/cats/013745eLe.jpg)
+
+距和少女的相遇到现在,又一个星期过去了。 已经到了下午放学时间,除了社团的活动外,大部分的学生都陆陆续续的整理好书包走出音羽高中的校门。二年级一班的教室里的人越来越少,随着当天值日的学生的离开,教室中只剩下一个孤零零的身影还坐在左斜后方窗边的那个角落上。窗外,操场上的喧哗声越来越小,整个空间里充斥着令人不忍打破的静。寂寞和空虚将这个小小的的身体重重包裹,让人喘不过起来。某一刻,窗外刮起了一阵轻风,吹动了那个孤小身躯手中所拿的一张纸,啪啪作响,打断了还在沉思的他……
+
+每个少年的心中都曾有过这样的幻想:希望有一天能有让自己成为特殊人物的事情,或是某一天能遇到承认自己有才能的契机。就像是童年的童话里面,那个为了保护公主,历经无数战斗的王子。但是,儿时的童话般的梦想终究不可能成为现实,随着年岁的增长必将做出新的决定。亦如此刻坐在角落的麻生•莲洽。
+
+下课前10分钟,班主任发下来一张《未来志愿调查表》并交代下个月初上交。手拿这张即将决定自己一生的薄薄的纸张,才上高二的莲洽陷入了苦思之中。想起最初的幻想,莲洽苦笑地摇了摇头,“不像是儿时所见的那些未来梦想那样,而是必须要决定未来了。想成为保护公主免受灾难的王子,却早已经错过那班梦想的‘班车’。那么,我的未来该做啥呢?”
+
+此时的十一月初的秋天已经略微有些深度了,投映在室内的阳光洋洋洒洒的照射在莲洽微卷的亚麻色头发上。望着窗外花圃里缓慢落下的梧桐叶儿,莲洽的眼神里更多的是一份迷茫。光线将他脸上细微的毛孔照的发亮,反射出一阵微光。像是把他整个人都笼罩在那层薄光里,空气中弥漫着暖暖的阳光的温香。
+
+纸张被风晃动的响声惊醒了还在思考的莲洽,望着手中那张已经捏的发皱的调查表,深吸一口气。再次抬头望向天空,清澈透明的蓝天,深秋的天空看上去是那么的低沉,却始终无法伸手触摸,“不过,确实到了该好好确定将来的时期了呢!”莲洽像是说着与自己无关的事情一样轻声嘟哝着,“话说到现在的我还真没什么紧张感呢,还是与往常一样,一直在原地徘徊不前呢。要不试着拿这些像是别人的事情一般的自己的事情,去听下别人的意见吧。”莲洽这样想着。整理好散乱的书包,揉了揉想的发胀的额头,走出了教室,踏上那条通往校门的大道。这是一条长年落满树叶却无比干净的道路,每次莲洽踏足这里的时候,总是会看见不经意间落下的翻舞的树叶,一片一片缓慢的就像一幅静止了千年的画面,隐藏着许许多多说不清道不明的结局与开始,让人听不到它的述说,却能感受到那种异样的莫名迷茫。
+
+![交织的羁绊 Chapter 1.1.3](https://cat.yufan.me/cats/013747j0z.jpg)
+
+“这就是你来找我的原因吗?”含糊的声音在宽广的空间中回响,这里是坐落在住宅区一角的,虽然室内肯定是密封的,但是窗户很多,天花板也太高了,里面相当寒冷,或者说,总感觉有风在从某处的缝隙中灌进来。
+
+“真的好冷啊!”莲洽嘟囔道。
+
+“喂你在听吗?莲治。”面前的人有点不满的问道。
+
+“诶,当然有在听。”他的声音比刚才还要低沉,莲洽不由得慌了神,把视线和意识都集中到他身上,“是关于前途的问题,想来征询一下大人的意见。”
+
+“……这样啊”眼前的男子带着点惊讶地点点头,细细地眯起眼睛,“这本身倒是没什么,也不一定,到不如说,问题是,你为什么会跑到我这里来?”
+
+“自己似乎也不是很清楚”,莲洽轻轻地叹了口气,答道:“不知不觉呢。”
+
+教堂的男子有点无语的样子问道:“你没有朋友吗?”
+
+莲洽有点尴尬:“这……两者之间有关系吗?”
+
+他环抱起双手道:“我并不是神父,也不是作为志愿者在这里开导人,”他有点无奈的嘟哝着,全身上下都穿着纯黑的服装,虽然有点神父的模样,不过他的言行确实和教会不相符,就像外表第一眼看上去,倒像是个很难与之交流的数学老师。
+
+这个男人——火村·夕,既不是宗教相关人士也不是咨询师。不仅如此,莲洽连他的年龄、职业、经历完全不清楚,虽然已经和他像这样交谈过很多次了,实际上并不了解他的详细情况。不过其貌似一直在教堂里闲晃悠,不知不觉间火村似乎已经被莲洽判定为同年龄的人可以倾述和商量的对象了。
+
+“总是呆在这样的地方里,也难怪我会来找你商量啊,”莲洽回到之前的问题。
+
+“这样的地方?”火村有点疑惑。
+
+“因为是教堂啊,总会有抱着一两个烦恼的人来的吧?”莲洽解释道。
+
+火村耸耸肩,摊开双手:“这个比较也太牵强了吧。”,继续摆出一副无奈的表情。
+
+“不过商量啊,你才读高中2年级,最近学校弄这种事情还真是早呢。”火村说道,“那么,也就是说,如果已经决定了想成为什么人的话也就没有商量的必要了呢。”他轻瞟向莲洽,双手环抱在胸前,“有没有什么拿手的事情或者喜欢做的事情呢?”
+
+“诶?喜欢的东西?”,莲洽一愣,仰着头想了想,“大概…嗯…是读书吧。喜欢小说之类的。拿手的,倒是没什么了。”
+
+“那么这就对了!”,火村斩钉提议道,“去文科大学,毕业后从事出版相关工作,自己写小说也可以。”
+
+一阵无言……“诶?说完了吗?”莲洽先打破沉默。
+
+“说完了,这样不就行了吗。”火村平淡的说道。
+
+“……不是,虽然是这样没错。”莲洽对他那冷淡的忠告皱起了眉头,“把喜欢的事情当成工作是不是有点太武断了?”
+
+“比起做自己不喜欢的工作,可好上千倍了吧!别烦恼了,自己考虑吧!建议结束,如上…是大人的意见。”,说完,火村把手往前一指,低下头,不再搭理莲洽。
+
+“大人的意见?”莲洽一边思考一边转身离开,“似懂非懂,总得自己做决定吧。虽然说起来……这么简单。”
+
+To Be Continued!
diff --git a/source/_posts/2012-05-10.md b/source/_posts/2012-05-10.md
new file mode 100644
index 0000000..b840e9e
--- /dev/null
+++ b/source/_posts/2012-05-10.md
@@ -0,0 +1,144 @@
+---
+title: 交织的羁绊 Story 2
+tags:
+ - 同人
+ - 悠久之翼
+categories: 小说
+permalink: novel-story-2
+featureImage: https://cat.yufan.me/cats/013907d1y.jpg
+id: 56
+updated: '2015-04-16 04:33:23'
+date: 2012-05-10 09:40:08
+---
+
+## Story 2、明天再见
+
+走出教堂大门的莲洽“嗖”地抽了一下鼻子,深秋的季节要说冷也确实很冷,在空旷的教堂中尤为明显。仰望布满云丝的绯色澄空,在清风的吹拂下感觉尤为舒畅。对于莲洽而言本来是为了理顺心情才来这里的,现在却感觉一直在无关痛痒的地方伤脑筋。“成年人”的意见,莲洽总觉得似懂非懂,但是说到底,这些东西还是要靠自己决定。“现在又该做什么事呢?已经没有其他的可做的事了,但也不想这么快就回家,还是找个地方让头脑稍微冷静下比较好吧!”莲洽低下头摸了摸放在胸口准备在月台上阅读的小说,很自然地向车站走去。但是,说到底,除了自然之外,也同样抱着一点期待的吧。那个女孩子还在吗?
+
+
+
+![交织的羁绊 Story 2.1](https://cat.yufan.me/cats/013313Dk8.jpg)
+
+时间的铁轨呼啸而过,未知的未来在前方等待……像是印证了莲洽的想法般,当莲洽来到车站时,眼前的情景简直如同像时光倒流后的重演般熟悉。少女依旧坐在长椅上呆呆地望着此刻太阳落山后变得色彩斑斓的天空,像是在等待着什么东西一样。和第一次初见的时候一样,莲洽尴尬的站在月台的边缘,一阵无言。“该怎么办?自己先去搭话会很奇怪吧。但是要是就这样回去心里却会觉得有点不甘心。”当莲洽还在踌躇的时候,少女被莲洽遮住的阴影所注意,转过头来看向莲洽。“呃……”
+
+“呀,你好”莲洽拘束的打着招呼。呆了一拍之后,少女轻轻别过了头,似乎有些怕见到生人般。只用着眼角的余光偷偷的看着莲洽,小声的打了声招呼“你好”。她像是害羞似的看着她膝盖上放着卡通小猫记事本。
+
+“我打扰到你了吗?”莲洽小心的问道,虽然是深秋,但额头间已经微微冒出了汗丝。
+
+她依旧是小声的答道:“没有。”简短的回答,总是给人一种陌生的感觉。只见少女匆匆的合上了那本一直放在膝盖上的笔记本,似乎害怕别人看到里面的内容般小心。从莲洽的角度来看,少女的头发和眼罩的带子随风飘动着,外貌上,应该比自己还小一两岁吧。不过,却没有给人留下应该与她年龄相符的可爱的印象,与其说漂亮——不如用端庄来形容吧。因此,即使那只眼罩看上去很显眼,但是很不可思议的并没有损害到少女的养眼度。玩具娃娃般无暇的容姿中,那份不协调的部分反而像是她确实存在着的证据一样。
+
+“那个,我可以问你一个奇怪的问题吗?”在偷偷看了莲洽好久后,少女微微转过身来,稍微歪着头,看着莲洽“你以前和我见过面吗?”
+
+“呃?”大概是这个问题太突然了,莲洽有些不知所措,但很快便反应了过来“嗯!”
+
+“是这样吗?对不起!果然我们是见过面的呢……”少女急急忙忙的说着,生怕对面的莲洽会生气般。但声音越来越小,越来越小,直到细不可闻。
+
+“这个…其实也只是一面之缘而已啦。”莲洽略带说笑的语气解释道,希望稍微缓和两人间冷寂的气氛。
+
+“好像是呢。”她说话方式很直率,只是,让人总觉得措词很奇特。
+
+![交织的羁绊 Story 2.2](https://cat.yufan.me/cats/0133143PE.jpg)
+
+“嗯”,之后便是久久的沉寂,夕阳渐渐落下的地平线,天空也逐渐阴沉下来……“两个人之间果然没有什么可以说的话题呢,该怎么办?”莲洽突然着急起来,“糟了,明明很期待她在这里的,却完全没有考虑过见到她后要怎么做。原本远远的看上一眼,再感叹上一句‘好可爱的女孩子啊~’明就够了了,我为什么还要站到她面前来啊!”
+
+莲洽无意义的动了好几次嘴巴,还是什么话都没说出来,额头上的汗迹越来越明显……
+
+“那个?”最后,还是少女先开了口,打破了寂寞。
+
+“啊,什么?”莲洽有些慌忙的抬起头来,望向少女。只见她不知什么时候起已经站起身来面对着莲洽,双手拿着笔记本垂在身前,似乎有些紧张的看着莲洽。
+
+“请问,你经常来这里吗?”
+
+“嗯,只是偶尔来这里啦。”
+
+少女,低下了头,恢复了开始的平淡的语气:“这里很安静,是个好地方。”
+
+“是呢,这里可是个得天独厚的读书场所呢。”莲洽接过话说道,双手交叉在胸前“而且还能正大地体验‘STAND-BY-ME’哦。”
+
+“哎?”少女诧异道的诶了一声,眼神中充满不解。莲洽自嘲的笑了笑,解释道:“就是在铁路上走啦,因为在这里玩的话不会被人骂嘛。”
+
+![交织的羁绊 Story 2.3](https://cat.yufan.me/cats/013314vLd.jpg)
+
+少女先是一愣,但很快便懂了我的意思,第一次笑了起来:“啊,原来如此,好像很有意思呢。”
+
+少女手捂着嘴微微的笑着,原本暗淡的傍晚车站似乎因为她的笑容变得明亮起来。晚霞的余晖弥漫与少女的身上,似反射着亮丽的色彩。而莲洽,也被少女的微笑所吸引住了,就这样直愣愣的盯着少女的面庞,再也挪不开眼睛。
+
+“千寻。”少女突然说道。
+
+“额?”莲洽一呆,从刚才的发愣中回过神来。
+
+“我叫千寻,名字是新藤·千寻。狮子会把孩子推进千寻的山谷里面的那个千寻。”少女如陌生人般冷冰冰的说道,仿佛刚才的微笑都是幻影般不存在。
+
+“千寻?啊,那是你的名字吗?”,莲洽有些慌乱的回答她,“我叫麻生·莲治。”似乎还在为刚才的着迷尴尬。
+
+千寻默念道:“是麻生吗?”
+
+“嗯”,莲洽笑道:“叫我麻生也好,莲治也好,怎么都可以的。”
+
+千寻稍微垂下头:“就称呼为麻生先生吧。”受到她优雅的微笑的影响,莲洽也露出了微笑,仿若就在这一瞬间两人间的距离逐渐消失。
+
+“终于有话可说了。”莲洽这样想到,又稍稍转移了话题:“说起来,千寻还真早呢。”
+
+千寻抬起头来好奇的问道:“早?”
+
+“嗯。”莲洽应道,“上次你也是比我早来到这里的啊。”
+
+“那是,因为我没有去学校上学……”千寻平静的说道,但是因为紧抓笔记本而微微发抖的双手却出卖了她内心的不安。
+
+“你…没有去…学校吗?”莲洽对于少女的回答不知所措,原本交叉于胸前的双手也放了下来,略带僵硬的回复着。
+
+“是的。”
+
+“啊,这样啊。”虽然莲洽很在意是怎么样的情况,但还是不好意思对一个才认识几分钟的女孩问出口,只好抓了抓头发,继续习惯性的应到。
+
+“嗯…”
+
+两人间一阵无言,对话到此为止了,又回到了开始时像是在春天黄莺即将鸣叫前的沉默。天边的晚霞也渐渐阴沉了下来,傍晚的冷风呼呼响起,似调皮的手指般划过两人的发梢,吹动了彼此的发丝、少女的裙摆,在这寂寥的暮色中尤其的显得静……
+
+“对不起。”千寻突然这样说道,从长椅那走了过来,“我马上就要回去了,请不要在意。”
+
+“呃?怎么了?”莲洽继续着今天已经无数次的发愣。
+
+千寻依旧向着莲洽走来,微垂着头,“这里明明是麻生的地方,我在这里会给你添麻烦吧,觉得你好像有点平静不下来的样子。”
+
+![交织的羁绊 Story 2.4](https://cat.yufan.me/cats/013314jux.jpg)
+
+和想象中原因不大一样,莲洽如释重负的松了口气,但也因为差了太多被惊到一下。对于千寻的认真感觉到十分想笑,但是此刻却不是笑的时候。莲洽急忙的说道:“完全不是那么回事,我也在考虑和你同样的事情呢!我在想,是不是因为我在这里,让千寻不能安静的读书。”莲洽几乎是大声的说出这些话来,因为着急,双手紧紧的攥成了拳头。
+
+“差不多的事情?”千寻有点惊讶,停住了脚步看向莲洽。此刻的千寻完全从车站的阴影中走了出来,两人就这样相隔不足1米的面对面的站着,稍稍一愣,却又彼此都像是恍然大悟般笑了。笑声穿越了暗淡的暮色,久久的在空旷的车站回荡……
+
+此刻的莲洽清楚的看到,千寻的脸颊红了。这么可爱的千寻真是不可思议的女孩子,有着洋娃娃一般的笑容,也能清楚的表达自己,却又像个孩子一样容易把玩笑当真,一会儿赌气一会儿又会害羞。就像是把内容和包装弄错了的生日蛋糕一样。
+
+望向已经黑了下来的天色,莲洽突然意识到了还在家等自己吃饭的母亲,“——啊,糟了。天色不早了,我要回家吃饭去了。”
+
+“啊,是这样吗?”千寻问道。
+
+莲洽轻轻嗯了一声,本想说‘其实还想和你多说会话的’,但是却没有把这句话说出口的勇气——“你家在这附近吗?我顺路送你吧。”
+
+“那个我想待在这里。”千寻又坐回了长椅上,半个身影隐没在月台的黑暗中,看不清脸上的表情。
+
+“可是,天已经黑了啊。”莲洽有些奇怪的问道。
+
+“我想待在这里。”千寻的话语透着一丝坚决,黑暗中模糊可以看见她如开始一样抓紧了手中的笔记本……
+
+“这样啊。”莲洽有些失望的转开身,准备离开。
+
+“那个!”千寻突然抬起头叫了一声,有些害羞的问道,“我……还可以来这里吗?”说完便又垂下头别过身子,就像是受委屈的小猫般。
+
+“当然可以啊。”莲洽转过身来,激动的说道,似乎在为下次能继续邂逅而高兴。
+
+只见千寻如释重负的松了一口气,高兴的笑出了声道,“非常感谢。”
+
+“啊,哪里哪里,不用客气的。”虽然不是很明白,莲洽还是反射地回答了,“那么,明天见。”
+
+千寻小声的啊了一下,在阴影中隐约看见,肩膀猛的抖动了一下。莲洽有点担心的问道:“怎么了?”
+
+“没事……明天……见。”千寻稍微有点颤抖的回答着,轻轻地向我挥了挥手,那样子真的非常可爱,对于长这么大还没怎么和女孩子搭讪的莲洽来说,完全已经脸红了。匆匆道了别,莲洽转身便离开了车站。
+
+![交织的羁绊 Story 2.5](https://cat.yufan.me/cats/013314WE8.jpg)
+
+黑夜,终于降临了大地,各家各户的窗户前也亮起了灯光。莲洽,回身望向来时的车站,少女的身影已经完全与黑夜融为一体,再也无法分辨了。
+
+明天、将来、未来,谁又能知道命运之神的双手将要将你引向何方?那么,明天,还能再见吗?
+
+To Be Continued!
diff --git a/source/_posts/2012-05-12-1.md b/source/_posts/2012-05-12-1.md
new file mode 100644
index 0000000..1efac80
--- /dev/null
+++ b/source/_posts/2012-05-12-1.md
@@ -0,0 +1,38 @@
+---
+title: 妈妈,母亲节快乐
+tags:
+ - 妈妈
+ - 母亲节
+categories: 文章
+permalink: mothers-day
+featureImage: https://cat.yufan.me/cats/013124Nt8.jpg
+id: 58
+updated: '2015-04-16 04:34:14'
+date: 2012-05-12 09:06:31
+---
+
+亲情,是最不需要刻意修饰的词,简单的话语,却是最能表达心中的爱。
+
+——是为题
+
+对于母亲总有一种深深的愧疚感。小时候记事还很模糊的时候,父亲便下海了。所以,童年的绝大多数时间,妈妈就是家里的顶梁柱,为我支撑着小小的半边天。小的时候调过皮、打过架,每次当别人父母找向家门告状的时候,母亲就会显得十分的弱小。
+
+
+
+一直以来,母亲对我都是恨铁不成钢的。小时候各种打架,初中时迷上了网吧、抽烟。直到高中时才泯然醒悟,开始用功读书。有时候不忍心回想,在这么漫长的日子里面,妈妈为我掉了多少泪,说了多少唠叨。那么多让人揪心的眼神,为何就在那时自己迟迟没有体会?
+
+现在的我总想为“你”写点什么,却总是搁笔,也许明天会有更多的时间。
+
+总想和“你”说点什么,却总是迟疑,也许明天会有更好的措辞。
+
+做火车上学的时候,同桌是一位抱着小孩独自一人去济南探亲的母亲。在那么漫长的一段旅途时光里,我看到这位母亲几乎一直没有休息,一会儿要看孩子的包被有没有裹好,一会儿又要喂奶,一会儿又要哄小孩……恍惚一刹那间,我回想起在厦门忙碌工作的母亲,突然就眼泪掉下来……
+
+去上海游玩,回来的路上和一个同样无座的新疆人聊天。他是当兵退伍的,讲到自己的母亲的时候,这位硬汉的眼眶湿了。他有些沙哑的说:“今年过年的时候我给家里汇了5万块,后面我妈妈就打电话给我说,‘孩子啊,你汇这么多钱干嘛,我们老人家又花不了这些钱。’我说,‘你们拿去用,就算是我孝敬你们的。’”当时,这位新疆人的兜里只有500元,过年是回不去了,他却忘不了自己母亲对于自己的照顾,将积蓄全部寄回家……
+
+有时候,想想自己,真不是个东西。上了大学两年了,和家里通话的次数,屈指可数。更多的时候,都是在月末没钱的时候,才想到给家里打个电话。而母亲节这种日子,如果不是看到松树哥哥的文章,我几乎快要遗忘。
+
+昨天晚上,第一次主动给妈妈打了个电话。听着电话那头安静的话语,熟悉的关照,第一次觉得是那么的安心。也许现在的我无法给予母亲什么回报,但是,那份血浓于水的亲情,却是我心中永远不能忘却的情怀。
+
+在这个世界母亲的节日里,我想说:“妈妈,节日快乐。”
+
+![母亲,康乃馨](https://cat.yufan.me/cats/013129S4P.jpg)
diff --git a/source/_posts/2012-05-12-2.md b/source/_posts/2012-05-12-2.md
new file mode 100644
index 0000000..5a6480b
--- /dev/null
+++ b/source/_posts/2012-05-12-2.md
@@ -0,0 +1,42 @@
+---
+title: 樱花般的记忆——秒速5厘米
+tags:
+ - 櫻花
+ - 动漫
+categories: 文章
+permalink: one-more-time
+featureImage: https://cat.yufan.me/cats/012949ioQ.jpg
+id: 59
+updated: '2015-04-15 20:34:40'
+date: 2012-05-12 21:37:01
+---
+
+“呐,你知道吗?听说樱花飘落的速度是秒速五厘米哦。”
+
+秒速5厘米,那是樱花飘落的速度。那么怎样的速度,才能走完我与你之间的距离?
+
+每个男孩都会有一个暗恋着自己却婉言拒绝的女孩,也都会有一个深深喜欢却已嫁作他人妻的女孩,最后还会有一个没什么感觉却要相濡以沫的女孩。
+
+——题记
+
+![樱花般的记忆_02](https://cat.yufan.me/cats/012950GpK.jpg)
+
+让命运的时钟拨回1990年的日本,那时远野贵树与篠原明里还是同班同学兼好朋友,彼此间有着朦胧的爱意。但是小学毕业之后,两人入读了不同的初中。分隔两地的两个人,靠着书信往来保持联络,直到贵树知道即将跟随家人搬到鹿儿岛,距离明里更远的地方,于是两人约定了再见面的时间。计划好的行程,却遇上了暴风雪,电车在漫天飞舞的雪夜,走走停停,贵树的心,也在细微的变化……
+
+光阴的流逝,转眼间都已长大成人。曾几何时,彼此约定好要共赏樱花,时至今日,擦肩而过,相遇却如陌路人。影片的最后一幕:一样的铁道闸口、秒速五厘米的落花速度、似曾相识的两个身影,微风依旧,花香不变,唯一不同的只是那咫尺天涯。
+
+对于贵树而言,在过往数年里,一直只想着先往前走,想要触及某种遥不可及的事物。但连那具体的目标是什么,以及那几乎可以称作威胁一样的回忆是从哪里涌现出来的都不知道……只是不停地学习着、工作着,直到某一天,他突然意识到,那渐渐失去“弹性”的心原来是那么的痛苦。于是此时的贵树才恍然察觉到,曾如此真切的感情就这样干干净净的消失殆尽!
+
+那是属于两个人的雪夜,属于两个人的樱花树,属于两个人的誓约——“来年一起赏樱花”,过去的一切随着时间的流逝而随风飘扬。而时间和空间真是个可怕的东西,曾经的相信永远,到头来都是苍白无力的偏执。明明手机里面存储的全是未发出去的短信,明明心中惦记,却已陌生到无法表达……心中的那份寂寞、那些许的迷茫,影响不仅仅是自己……“即使发了一千条短信,心与心的距离也仅仅接近了一厘米而已。”无法接受他人,即使光阴荏苒,即使咫尺天涯,即使誓约、感情都消失殆尽。而潜意识中却一直记得,在时间与空间交织而成的广阔无际的世界中,与我人生速度相同的仅仅一人,那速度恰恰是——秒速五厘米。
+
+其实在最后的那一刻,回头与不回头已经显得并不重要。虽然也许两人的距离仅仅是五厘米,但是两人已经不再拥有儿时的纯真,不再拥有彼此默契的人生速度。长长的轨道上,曾经的奔跑、誓言都已经随风而逝。如今两人背道而行,飞驰而过的电车阻断了两人的视线,即使那仅仅只有五厘米……
+
+列车过后的樱花,是一切的开始,也是一切的结束。在无法逾越的时间与空间中,任何事物都会被淡忘。唯一不会忘记的只有那缓缓飘落的承载着人们无数回忆的樱花,而它飘落的速度永远都是秒速五厘米。
+
+One more time,one more chance.可是世界上哪来的那么多的时间,哪里能有没完没了的机会?无论何时,过去的只能成为过去。应该以怎样的速度度过人生,才能与你重逢?这个问题甚至超越哥德巴赫猜想,成为世界上永远无法解决的难题。即使还是以相同的秒速五厘米前行,不再拥有默契的人生交集也是毫无意义,相濡以沫,不如相忘于江湖……
+
+![樱花般的记忆_02](https://cat.yufan.me/cats/01223jAd.jpg)
+
+**后记:**
+
+多年以后,物是人非。曾经的青梅竹马,曾经能够为彼此真心付出的人,最后,只剩下学生时代幸福又有些遗憾的回忆。樱花飘落的时间,秒速5厘米,美丽又短暂……不论愿不愿意,只要随着风的舞动,樱花们就会翩翩飘落,一直持续着这短暂又美丽的一瞬瞬。最后,都将归于尘土。然而,来年春天,会有新的花瓣飘落,永不停息。樱花虽然落下了,但我们还要继续向前走,时间与距离,可能只需一秒一步之遥,也可能耗尽一生都追逐不到。如果不曾拥有,又何来若有所失的感觉?秒速5厘米,表面上看是一部很压抑的动画,但请不要忘记樱花飘落时的美丽,来年我们可以再看见它们。人生的路还很长,也许,新海诚带给人们的一直都是希望……
diff --git a/source/_posts/2012-05-13.md b/source/_posts/2012-05-13.md
new file mode 100644
index 0000000..d1d0ade
--- /dev/null
+++ b/source/_posts/2012-05-13.md
@@ -0,0 +1,27 @@
+---
+title: 怀旧,春之随笔
+tags:
+ - 怀旧
+categories: 文章
+permalink: essay-of-spring
+featureImage: https://cat.yufan.me/cats/012352GRk.jpg
+id: 60
+updated: '2015-04-16 04:35:11'
+date: 2012-05-13 23:29:38
+---
+
+>夏日的炎热让我不由得怀念才过去的暖春,那个欣欣向荣的季节,无意中翻出一篇关于春天的“记忆”,发在这里,仅作回忆…
+
+
+
+再一次回去温暖的午后,我打开窗户,一阵春风拂面而过,带着淡淡的花香,清新的泥土味如同刚揭开西瓜般的新鲜。突然看到书上枝头蹦出的那鸟,预示着2006年春天的来临。我很喜欢这样的感觉,没有孤单,没有压力,只要闭上眼睛静静的享受,就能打开春天独有的无限想象。同时也让我打开回忆,回忆2005年所经历的点点滴滴,有酸、有甜、有苦、有乐。
+
+![怀旧,春之随笔2](https://cat.yufan.me/cats/012352Qeq.jpg)
+
+和所有人一样,对未来我有着美好憧憬,有着些许担忧,但更多的还是期盼。曾有人说,伤感的人会因为一片叶子而产生对于秋天的怀念,会因为一场雨而勾起对于某人的思念,会因为一个平淡的生活细节而不能自已。能体会这样的感觉,复杂的思想、丰富的情感,占据了你的整个思维。或许是过于求全责备,一直被认为苛求完美的人是肩负着痛苦,敏感的人是继承脆弱,甚至是说孤独的人保守着精神上的寂寞,在常人眼里那都是不可能的。
+
+安静的我喜欢独自在家,过着平淡安逸的生活,自然成为一种规律,不喜欢僵硬感,只喜欢简单。其实生活就像连绵不绝的流水,平淡无奇。尽管生活如此,但各自储蓄着不同的内涵。平淡的日子如同白开水,虽然淡而无味,但偶尔能品出清甜。就是这种淡淡的感觉,让我感到踏实与安慰。能享受到粗茶淡饭里面的天长地久,拥有平平淡淡中的花好月圆……
+
+2006年 3月,那个草长莺飞的日子
+
+![怀旧,春之随笔3](https://cat.yufan.me/cats/012352N68.jpg)
diff --git a/source/_posts/2012-05-15.md b/source/_posts/2012-05-15.md
new file mode 100644
index 0000000..1809c9e
--- /dev/null
+++ b/source/_posts/2012-05-15.md
@@ -0,0 +1,39 @@
+---
+title: 斯人已去
+tags:
+ - 亲情
+ - 回忆
+ - 爷爷
+categories: 文章
+permalink: my-grandpa
+featureImage: https://cat.yufan.me/cats/20130110174635.jpg
+id: 61
+updated: '2015-04-16 04:35:27'
+date: 2012-05-15 04:54:52
+---
+
+>写下这个题目的时候,脑海中突然浮现出小时候看《狮子王》时印象很深的一句台词:“当你孤独的时候,就看天上的星星,每颗星星都是离开我们的国王,这些国王都在看着你。”那么,爷爷,今夜天空中的那颗最大最亮的星星是您吗?
+>
+>——题记
+
+这些年假期住在厦门,突然很不想出门去逛胡同。
+
+每当我看到老人在胡同里的大榕树下面喝茶、下棋、晒太阳,或者是坐公交时给上车的老人让座的时候,我总会想到我的爷爷。他走了,走得那么匆忙、那么无奈、那么不舍。让我这个做孙子的还没有来得及孝敬他,就因病去世,带着60岁的生命,离开了这个世界……
+
+
+
+记得小时候,我常和爷爷在一起说话,每当谈到梦想的时候,我总说我要考上大学,做我们盛家的第一个状元。冬天天气寒冷,爷爷的身体也是冷冰冰的,自己也曾说:“我要做爷爷的小暖炉,给爷爷暖床。”可是这些一切还都没实现的时候,爷爷便走了……
+
+我是在高考前一个月被夜里爸爸的电话惊醒的,接到爷爷不行了的噩耗,我匆匆从学校搭着长途汽车往家里赶。山路弯弯,车辆颠簸,可我心里却交织如麻。可是,上天为什么这么残酷,为什么连爷爷的最后一面也不让我见到?当我赶到家的时候,爷爷已经悄然闭上了眼睛,只见到爷爷已经瘦的不成形的遗体,静静的躺在太平间里。我小声的哭着,喊着爷爷的名字,可是已经迟了。
+
+总是不敢想,4月初回家的时候还谈笑风生的爷爷,那个常在电话里声声叮咛的爷爷,就这样永远地失去了。
+
+说好的,等我考上大学给您看呢?
+
+还没实现的愿望,还没报答的孝心,还没得到的快乐……还有太多没有及时表达的爱。都已经无法挽回了。直到今天,我都不敢在别人面前提起爷爷,忆起他的好。我怕一打开记忆的闸门,眼泪就会控制不住地流下来……
+
+人们常说,十年修得同船渡,百年修得共枕眠。我相信,爷爷,我们之间的因缘,必定有很久很久。只是这缘分太浅、太短,还没相聚多久,便已缘尽。今夜遥望星空的时候,我想到了您,天上人间,我们永远在一起。
+
+下辈子,还做您的孙子。
+
+(原文写于2010年,5月。修改于两年后的今天,泣不成声。)
diff --git a/source/_posts/2012-05-17.md b/source/_posts/2012-05-17.md
new file mode 100644
index 0000000..50938d0
--- /dev/null
+++ b/source/_posts/2012-05-17.md
@@ -0,0 +1,59 @@
+---
+title: 他的城,我的梦
+tags:
+ - 上海
+ - 梦想
+ - 游记
+categories: 文章
+permalink: your-city-my-dream
+featureImage: https://cat.yufan.me/cats/012114aR1.jpg
+id: 62
+updated: '2015-04-16 04:35:49'
+date: 2012-05-17 00:06:53
+---
+
+>像梦一般短暂的4天上海之行结束了,我不知道应该以怎样的心情来回望这一段时光。就像是一只旅行的蜗牛,满怀欣喜抑或安之若素。颠簸的火车、匆匆的旅程、各色的面孔,这一切的一切扩宽了我生命的轮廓……
+>
+>——题记
+
+踏上火车的那一刻,我在心里小小的对自己说,不过就是一场短暂的旅行,无需期盼。车厢颠簸,回响着铁轨和车轮撞击的声音,窗外的天慢慢的黑了下来。13个小时的旅途里,大部分行程就是在这样的漫漫长夜中度过。我趴在床铺上,外面是漆黑看不清的夜,偶尔一闪而逝的灯光,却会让人莫名的心安。
+
+4月31日早晨8点,穿着短袖、马裤,下了火车后迎面感受到的是一阵清冷。虽然是晚春,天气应该炎热起来,但是在高楼密布的建筑群下却还是有些冷。在麦当劳吃完早饭给家人报完平安后,我们便拖着行李去昔日舍友的同学的校外宿舍。由于地铁还没有建到那边,我们坐完地铁2号线后,便是漫长的沿海公交之旅。听着车上人说着的上海话,看着窗外的晴天白云,我在心里小小的呐喊着:“上海,我来了。”
+
+
+
+我们在海事大学的门口等到了根哥舍友老C,老C是和我们打Dota认识的,这次上海之行都是他带我们逛的。到了宿舍,安置好行李,洗漱并吃好午饭后我们便出发去玩了。
+
+根哥说要去外滩玩,所以出了地铁便一路朝人民广场飞奔,从人民广场沿着福州路便可直达外滩。下午的外滩由于节假日的缘故,滨江长廊上全是游人。那些给人拍照的贩子们频频上来要做生意,但一个个都被我们拒绝了。趴在外滩的栏杆上,看着不远处的外白渡桥上的婚纱拍摄,安逸的老外躺在后面黄石公园的草坪上休息。突然觉得时光要是在这里静止就好了,因为这一切都是那么完美。
+
+那天下午逛遍了陆家嘴的每一个角落,当我踏上上海环球金融中心第98层的时候,我才发现周身的一切是那么渺小。仲子说要给我们拍照,我说我不拍。因为,这里将成为我未来的记忆,而不是回忆……
+
+晚上一直泡在网吧打Dota,出来时候已经是11点以后,地铁站早已停运。于是四个脏脏兮兮的孩子,就在这人少的夜晚在街上闲逛,寻找KTV包夜。走过福州路的时候无意间看见一个上海的旧弄堂,从门口望进去可以看见老式的住宅、挂满了衣物的窗台,颇具一份老上海的风味。
+
+随后的两天去了欢乐谷,还逛了上海的大学城,但是都已印象不深……
+
+走的那天早上下了一场小雨,雨停后走在湿漉漉的小区小路上,突然想到:似乎就要这么走了,淡淡的来,淡淡的去。挥手说再见,再见,真的会再见吗?
+
+坐上火车的时候再一次给住在市郊的小姨打了个电话报平安,由于忙,这次去就没能去她那边玩了。火车慢慢开动,晃荡晃荡,让人迷糊。耳机里循环播放着的,是小果的《旅行的蜗牛》:
+
+>我想做一只旅行的蜗牛,
+>慢慢穿行在城市角落。
+>我想到看到听到知道,
+>属于我的只有泥土和青草。
+>柔软的身躯背负岁月壁垒,
+>悲伤教会我如何面对伤悲,
+>东西南北属于我的错与对。
+>平静地在喧闹中沉睡,
+>轻松的向前自由的转弯,
+>就会有个完美的句点。
+>习惯看云的孤单,
+>偶尔和清风做伴,
+>像只蜗牛一样慢慢走远走远……
+
+火车上写下此文时,相机就在手边,却不敢再次打开回望这段旅程。迷迷糊糊间,仿若做了一场梦。
+
+再见上海,再见,我的梦……
+
+——2012年,5月2日
+
+![旅行的蜗牛02](https://cat.yufan.me/cats/012114OYt.jpg)
diff --git a/source/_posts/2012-05-19.md b/source/_posts/2012-05-19.md
new file mode 100644
index 0000000..03fda12
--- /dev/null
+++ b/source/_posts/2012-05-19.md
@@ -0,0 +1,113 @@
+---
+title: 夏语,夏影
+tags:
+ - 夏影
+ - 观铃
+ - 音画
+categories: 文章
+permalink: summer-air
+featureImage: https://cat.yufan.me/cats/012057pmo.jpg
+id: 63
+updated: '2015-04-16 04:36:20'
+date: 2012-05-19 11:48:51
+---
+
+夏天,是什么样的感觉?
+
+喜欢夏天,因为喜欢酣畅淋漓的大雨,绿意盎然的草木,还有那热火朝天的空气。
+
+我喜欢夏日的雨,如同喜欢冬日里鹅毛般无拘无束的大雪。大雨将春夏间生机勃勃的亮丽世界洗刷的绿意盎然,雨后的空气里透着清新的凉爽,本来的燥热沉闷一齐被驱赶得无影无踪,上午阴暗的天空乌云笼罩大地,似乎夺走了我快乐的阳光。但实际上并不是这样,它拿走了一部分阳光却还给了同样价值的雨景。世界总是公平的,它在里拿走你些什么,必会在另一个时候还给你很多。看着一年中的第一道闪电,听着第一声响雷,享受着窗外亮晶的雨点激起的水花,不仅有一种快感。同时拥有了一场雪和一场雨,充满情趣和伤感的雨和雪,岂不是很快乐?
+
+
+
+夏天的空气实在是让人歇斯底里,尤其是阳光爱抚下的。如果没有这闷热的天气,想必大家必会喜欢夏天多一点,但是如果没有这天气带给你的几分焦躁不安,你又怎能体会到秋季的凉爽?
+
+我喜欢夏日的风,那闷热的午后不经意间感受到的微风拂面,那种在学校大海边吹拂海风的感觉。清爽、干净,让人由心底觉得舒爽。
+
+但是,对于现在看博客的你而言,可能无法体会到夏季的雨、夏季的风。那么,就让下面的歌曲带你进入夏天的世界。
+
+盛夏,心微凉。
+
+——文章素材选自07年高中夏季随笔
+
+![夏影01](https://cat.yufan.me/cats/0120579xC.jpg)
+
+## 音画时尚之——夏影
+
+对于熟悉日本Key社的人来说,一定会知道名为《Air》的这部作品。故事第一集中,当国崎往人在长堤上的微风中醒来,看见一个美丽的少女神尾观铃在海风的吹拂中展开双臂面向天空的时候,响起了我们将要聆听的背景音乐。作为神尾观铃的主题曲,整个曲风温馨纯美,带着淡淡忧伤,没有冬天里的寒冷,带着夏日里暖风的气息,让人感到安静、舒适。
+
+这首歌曲也成了经久不衰的翻唱神作,知名的有Lia版、茶太版、西国的海妖版、二胡版等等。距不可靠统计,目前的夏影翻唱版本已达180种。我们无法一一列出,只好精选最具代表的几首在此倾听,细心感受那段逐渐临近的夏季的别样旋律……
+
+---
+
+![夏影 AIR ORIGINAL SOUNDTRACK](https://cat.yufan.me/cats/012057iL0.jpg)
+
+所属专辑: AIR ORIGINAL SOUNDTRACK
+
+最初的夏影版本,如前面的介绍所言,是AIR神尾观铃角色曲。每当我听起这首歌的时候,心中总会感受到一种澄澈,一种安静,那种浪漫午后闲适的情调。
+
+---
+
+![夏影 Natukage/nostalgia](https://cat.yufan.me/cats/012057TSx.jpg)
+
+所属专辑: Natukage/nostalgia
+
+Lia,日本女歌手,作品风格包括各种Anime Song在内的多种流派,此曲便是其代表作之一。Lia创作了「natukage/nostalgia」([夏影/怀旧])两首单曲,创作动机在于当时实在没有勇气把不见得能游提升戏的销量的原创歌曲做成单曲,便将Air中大受欢迎的BGM“夏影”配上歌词并演唱。于是,这首“夏影”便这样诞生了。
+
+---
+
+![夏影 ~Cornwall summer mix~](https://cat.yufan.me/cats/012057fGe.jpg)
+
+虾米由于版权问题不提供试听,[下载地址](http://115.com/file/clgh7xrm)。
+
+所属专辑: Lia COLLECTION ALBUM VOL.2 Crystal Voice DISK1
+
+开头便是电子钢琴弹奏的风笛声伴随的久远吟唱,给人以寂寥的空旷之感。细腻的钢琴声加上Lia的水晶之音,总感觉飘翔在青空之巅,那种简单的曲调总是令人舒张每一个毛孔。
+
+---
+
+![夏影 Ma-Na](https://cat.yufan.me/cats/012057sZU.jpg)
+
+所属专辑: Ma-Na
+
+二胡的演奏伴着电钢琴的协奏,传统与现代的交织,给人以别样的听觉享受。后半段中点缀着丝丝风铃之声,摇曳出整个静默的长空。
+
+---
+
+![夏影 Re-feel](https://cat.yufan.me/cats/012057VdC.jpg)
+
+所属专辑: Re-feel Kanon・Airピアノアレンジアルバム
+
+在听过的各个版本中,这个版本的夏影应该算最为小清新的。没有复杂的编曲,没有多余的乐器。黑白琴键,呈现的是最纯净的夏影,最纯净的心灵音乐。
+
+---
+
+![夏影 Ornithopter AIR Original Compilation Album](https://cat.yufan.me/cats/012058FDS.jpg)
+
+所属专辑: Ornithopter -AIR Original Compilation Album
+
+Key Sounds Label 成立之前的CD,AIR初回版附赠CD,Ornithopter AIR Original Compilation Album中收录。同样是钢琴曲,不知怎么的,听起来,总感觉少了点让人触动的东西。
+
+---
+
+![夏影 It disappears in summer](https://cat.yufan.me/cats/01205802H.jpg)
+
+所属专辑: B・INFINITY - Boys Character Only Image Arrangement Album
+
+记不清是哪个季节,在听《萌动漫》附赠的CD的时候,突然听到了~It disappears in summer~。当时歌词本还写错了,貌似写的是同人界三大歌姬共同演唱的,后来知道只是茶太一个人。任何言语都无法形容这首歌给我带来的感受。我只知道,它将永远留在我的mp3里,以最无损的音质。如果没有听到这首歌,我想我就不会在那个万念俱灰的暑假,在老家的音像店把 air 的DVD整套买下来,然后自己躲在屋子里从头看到尾,一边看一边嚎啕大哭。那么估计也就会更晚一些知道key社,知道kanon和clannad……从那以后,“夏影”这个词成为了我生命中的一个烙印,茶太也成了我最喜欢的女歌手之一。终于,在多年后的今天,我找到了这张CD——Little Wing的~B·INFINITY - Boys Character Only Image Arrangement Album~。
+
+夏影百首,我将非官方的第一首,毫无疑问地留给你,It disappears in summer.
+
+---
+
+## 画外音——观铃,回到天上去了……
+
+>弊社所属俳優、川上とも子儀平成23年6月9日(木)16時45分、かねてより病気療養中のところ、誠に残念ながら薬石効なく急逝いたしました。
+>
+>生前中は皆様に多大な応援を頂き心から感謝申し上げます。ありがとうございました。
+
+2011年6月9日16时45分,川上伦子因卵巢癌医治无效不幸逝世,享年41岁。
+
+那羽翼飞走了,从此人间再也没有观铃,再也没有佐祐理,再也没有小光,再也没有……唯余此念,铃音回响。
+
+——夏影,夏语,雨帆
diff --git a/source/_posts/2012-05-27.md b/source/_posts/2012-05-27.md
new file mode 100644
index 0000000..e190601
--- /dev/null
+++ b/source/_posts/2012-05-27.md
@@ -0,0 +1,43 @@
+---
+title: 毕业季 · 离别季
+tags:
+ - 回忆
+ - 未来
+ - 毕业
+categories: 文章
+permalink: graduation-season-farewell-season
+featureImage: https://cat.yufan.me/cats/012040b93.jpg
+id: 64
+updated: '2015-04-16 04:39:29'
+date: 2012-05-27 12:04:36
+---
+
+绿荫满地,踩着5月的尾巴,离意愈浓。走在傍晚通向食堂的大路上,看见身旁一排排学长卖书的身影。恍然间觉得自己也成了其中一员,扑朔如梦……
+
+——题记
+
+岁月的兰花指轻轻敲了一个拨弦,我恍若又看见,当年的桌椅、标语、还有永远写满字的黑板。记得2年前高考前的最后一节课,那一天起,我们毕业了。没有过多的言语,没有丝毫的喜悦,大家都是匆匆的收拾好书本准备明天的高考。只是在最后,不知是谁突然吼道:“这是我们高中的最后一天了。”就在那个瞬间,我的心竟莫名的开始疼痛……
+
+
+
+高二的时候看见楼上的学长,在毕业的时候尽情的呼喊、撕书,就像是疯子一般让人无法理喻。当我真正成为其中一员时,我才能切身体会到那种压力完全释放了的舒张、那种渴望张扬青春的心愿和一股抹不开只能通过呐喊才能发泄的悲伤。
+
+同样是去年才上大一的时候,一样的5月末海棠花已经凋谢的季节,一群大四的学长在那里摆摊卖书、拍照。他们有说有笑,完全没有了昔日高中时的伤感、悲痛,就像是彼此打着平日里的招呼——再见。
+
+![毕业季-2](https://cat.yufan.me/cats/012040G1b.jpg)
+
+于是乎,我不由得觉得现代的大学生对于离别是何等的洒脱。“执手相看泪眼”已经成为夕阳黄昏下一道远去的记忆。匆匆离别间,倒是遇见几位学长相互戏言,他日君若发达时定莫要忘记昔日一起打dota、看エロ片的基友。
+
+是我们长大了忘记悲痛,还是习惯了分别?
+
+想想自己的求学经历,由于父母工作的原因,走南闯北倒是读了7、8所学校,认识的人算起来也有三四百号。离别的次数多了,对于分别的愁绪也就淡了。QQ上的同学几年不联系,有时候突然聊起,竟忘记对方音容相貌。有时候心里总会在想:生命不就是一次次的遇见和离别吗?只不过有些人还会再见,有些一旦分开就只能相忘于江湖……
+
+前些日子看完雨帆推荐的《18岁的天空》,再看看现在学长忙碌的身影,突然就觉得:其实毕业,不需要任何感伤。毕竟过去的已经过去,未来所要面对的是另一个新的开始。就像在某本杂志上看过的一句话:“毕业,就是一窗玻璃。我们得撞碎它,擦着凛冽的碎片走过去,血肉模糊之后开始一个完全不同的世界。”
+
+再多的伤感,再多的不舍,再多的惜别。最后只能化作脑海中的记忆,身边的几张青春洋溢的照片,朋友间相互赠送的几件礼物,束之高阁。而那些对与错、留下的、得到的,那些零星点点的过去,蓦然间,却只在过往……
+
+忘我今夏,不言夙伤。
+
+——文 云儿,校 小雨
+
+![毕业季-3](https://cat.yufan.me/cats/012040Hfz.jpg)
diff --git a/source/_posts/2012-06-03.md b/source/_posts/2012-06-03.md
new file mode 100644
index 0000000..be965c1
--- /dev/null
+++ b/source/_posts/2012-06-03.md
@@ -0,0 +1,40 @@
+---
+title: 未闻花名——那朵花
+tags:
+ - 动漫
+ - 那朵花
+categories: 文章
+permalink: anonaha
+featureImage: https://cat.yufan.me/cats/011925v14.jpg
+id: 65
+updated: '2015-04-16 04:39:49'
+date: 2012-06-03 16:09:42
+---
+
+彼时花名未闻。
+
+昔日一起玩耍的伙伴们,随着年龄的增大,彼此间也渐渐变得陌生。但那仿佛已经快要忘记的儿时的记忆,仍是连接我们的羁绊。
+
+——题记
+
+
+
+物是人非事事休,欲语泪先流。
+
+手中风筝的线,你随时可以放开。但是,放开了就别指望它还能够回来。一部动漫,可能仅仅给我们讲述了一个故事,但更重要的是它可以让我们回忆那些动人的瞬间。
+
+我们仍未知道那日所看见的花的名字,其实并不是我们不知道,只是我们面对眼前的物是人非,总是选择去逃避。儿时的我们,或许是因为一个玩笑,或许是因为一个误会,造成了一些无法挽回的结局。然而天真的我们,总是认为时间是最好的解毒剂,可以慢慢的冲淡那一切不愉快的记忆,将它们的封存在记忆的盒子里,藏在心里的某个不愿开启的房间。时光流逝,光阴荏苒,岁月的尘埃飘落在记忆的盒子上积起厚厚的隔阂,逐渐疏远,逐渐遗忘……直到某天误打误撞过某些契机打开了那尘封已久的记忆盒子,才发现,过去也还是那么值得回味,那么值得珍惜。
+
+![那朵花-02](https://cat.yufan.me/cats/011925HkK.jpg)
+
+每个人都有无尽的回忆,每个人都在成长。有时,为了追上时间的脚步,我们不得不抛弃以前的那份天真无邪,在他人面前,收敛自己本身的感情。有时想哭想笑,却只能独自对着荧屏。慢慢学会的是隐忍,是坚强,是每个夜晚过后用微笑迎接新一天的阳光。慢慢的把自己藏在一张伪善的面具背后,只有独自一人的时候,或许只是在梦里,才会问自己是不是开心,所做的一切是不是值得。慢慢变得烦恼现状,迷茫未知的未来,害怕前方命途多舛。
+
+未闻花名,也许我们只是将那最童真、最天真无邪的记忆都埋藏在了内心的最深处。当我们能够放下一切,通过一些偶然的契机开启那尘封已久的记忆时,便会发现,其实那多绚丽多彩的花的名字,一直存在于自己的潜意识中。其实自己是多么向往曾经幼稚的自己,以及那段无忧无虑的幸福生活。
+
+人面不知何处去,桃花依旧笑春风。印刻着“超和平buster”的木板独自默默承担和守护着那朵花的愿望,即使时光流逝,不变的是小时候的那份刻骨铭心的记忆,那些现在看来荒谬的愿望。在漫漫成长的人生道路上,可能我们都不会再知道那天所见花的名字,但是,每逢那个季节,还是会有淡淡的清香随风而来,虽然那清香已经变得模糊,已经变得难以辨认,然而不变的那朵花还在我们人生的某个角落盛开着,而它也会一直承载着我们儿时的记忆和愿望,伴随着淡淡的幽香……
+
+>**后记:**
+>
+>我们在慢慢长大,一个个流转的季节让路旁开放的花朵也随之变化,那个季节开放的花…名字叫什么来着?轻盈地摇曳着,每次触碰都有点刺痛。把鼻子凑过去,有股淡淡的青涩的阳光的香气。渐渐地,这香气变模糊了,我们慢慢长大了,不过,那朵花一定还在什么地方盛开着。没错,我们不管到什么时候,都会继续实现那朵花的愿望。
+
+![那朵花-03](https://cat.yufan.me/cats/011925Xbx.jpg)
diff --git a/source/_posts/2012-06-08.md b/source/_posts/2012-06-08.md
new file mode 100644
index 0000000..48264d7
--- /dev/null
+++ b/source/_posts/2012-06-08.md
@@ -0,0 +1,29 @@
+---
+title: 成长的烦恼
+tags:
+ - 成长
+ - 未来
+ - 烦恼
+categories: 文章
+permalink: growing-pains
+featureImage: https://cat.yufan.me/cats/011913S2l.jpg
+id: 66
+updated: '2015-04-16 04:40:09'
+date: 2012-06-08 07:26:25
+---
+
+越来越觉得无病呻吟都是那些没长大的孩子们的特权,而我又总要时不时地卖萌来装一下嫩。
+
+说自己长大了吧,却一点都不成熟,心理还是那么脆弱。说自己还没长大吧,却也没有了孩时的兴致,也变得越来越不容易感动。整天新闻里RSS里都是当前社会的负面新闻,搞得自己也越来越多疑,越来越麻木,所能感觉到的真善美也越来越少。
+
+
+
+常在想,孩童时候能无忧无虑,是因为周围永远充满着爱。眼里没有假丑恶,只有顺意不顺意。快乐就那么简单,顺意那你们就都是好人,不顺意那你们通通都是坏人。孩童时感觉全世界都绕着自己转,感觉自己站在舞台的中心,周围的人都在看着自己,所以每一个步子都迈得那么小心却又那么起劲。孩童时也很容易感动,这就是所谓的纯真吧。经历过的东西少,不会以最大的恶意揣度别人,并且即使是以最大的恶意揣度别人,那也无关紧要,因为一个孩子的最大恶意,在大人们看来那也是根本不值一提的。
+
+有时候会想,小时候的快乐那么简单,我们能不能总保持着那份童心呢。成长是不可逆的,我们永远回不去那个孩童时候罢,或许每天不上网,只看看新闻联播还有点希望回到过去。不可避免的我们将走向成熟吧……成熟也没什么不好的,每个阶段有每个阶段的味道,从开花到结果到落叶归根,总有生命循环的意义,我们能做的就是在每个阶段尽可能活出那个阶段的美丽吧。成熟是一眼看破了尘嚣却又以一颗童心去给自己的生活创造快乐吧,这状态可能就跟共产主义一样无法实现,但如果能无限趋近而不是相背离,那它远比社会主义来得实在一点。
+
+嗯,差不多要睡觉了,不然连半封建半殖民地社会都没得混了。
+
+>写这些东西的时候我又感觉自己站在舞台中心了,只是这次不是小心又起劲地迈步,而是两眼装满着忐忑焦躁不安地等待拍砖。嗯,晚安。
+
+![成长的烦恼02](https://cat.yufan.me/cats/011913QzQ.jpg)
diff --git a/source/_posts/2012-06-10-1.md b/source/_posts/2012-06-10-1.md
new file mode 100644
index 0000000..490721a
--- /dev/null
+++ b/source/_posts/2012-06-10-1.md
@@ -0,0 +1,41 @@
+---
+title: 夜の思考
+tags:
+ - 随笔
+categories: 文章
+permalink: nocturne
+featureImage: https://cat.yufan.me/cats/011857fYx.jpg
+id: 67
+updated: '2015-04-15 20:40:24'
+date: 2012-06-10 11:46:08
+---
+
+不知从何时起,爱上了那深藏不露的黑色。
+
+只因为夜。
+
+每至深夜时,我总是习惯性地关上灯,静静地立在窗前,任凭月光如瀑般倾泻全身,以及随之而来的纷涌的思绪。
+
+也许,只有当俗世的一切喧嚣与繁华沉寂在这无边的夜时,我们才得以摘下白天的面具,让自己的灵魂在月光的抚慰下得到一丝安宁。或许,也只有此时,我们才能够真正地看清自我。
+
+
+
+静默的黑夜是思想者的天堂。夜深人静之时,我们的心才得以自由地舞动于风中,在夜神的陪伴下细细地品味人生百态。
+
+一向不喜在夜里喝咖啡,相反,我更情愿在这令人沉醉的黑夜中倒上一盏香茗。咖啡的味道太浓、太重,是只属于那些都市人的佳酿。而茶,却是淡淡一缕幽香。
+
+茶香完美地与夜融为一体。人生,有时也如茶一样,淡然无味,甚至微微作苦。惟有在喝下去之后,才能体味到,那残留于舌根的一缕清香。
+
+在夜晚听音乐亦不失为一种享受,闭上眼,听着那曼妙的旋律飘荡于月光中,只感到自己的呼吸已同时间一起消逝于无尽的黑暗中……
+
+每一次在夜中,我都能获得不同的启示。有时,耳边仿若飘荡着来自古希腊吟游诗人的声音,一个个古老而又神秘的音符中,传颂着无数掩埋于历史尘埃之中的故事。关于爱情与热血、生命与信念……
+
+夜,永远是最神秘莫测的精灵之一。它似乎无所不知,能够洞察每一个人的灵魂,却又如海般包容一切,所有的美与丑、善与恶,都被笼罩于黑暗之中。它总在你不经意间悄悄降临,当你回过神时,又早已离去。它像一只翱翔的鹰,孤傲地振翅于云霄之上,漠然地注视着人间的一切却又从不为之停留,只在地面上投下它巨大的身影。
+
+>轻轻的
+>放缓呼吸
+>让心带着你的全部
+>一同溶解在 似水的黑暗之中
+>只余下 夜……
+
+![面麻](https://cat.yufan.me/cats/011857SGC.jpg)
diff --git a/source/_posts/2012-06-10-2.md b/source/_posts/2012-06-10-2.md
new file mode 100644
index 0000000..8750e11
--- /dev/null
+++ b/source/_posts/2012-06-10-2.md
@@ -0,0 +1,92 @@
+---
+title: 亲爱的,你怎么不在身边
+tags:
+ - 傻瓜
+ - 呆瓜
+ - 笨蛋
+categories: 文章
+permalink: my-darling
+featureImage: https://cat.yufan.me/cats/011813OTe.jpg
+id: 68
+updated: '2015-04-16 04:40:42'
+date: 2012-06-10 22:17:35
+---
+
+其实不想哭的,其实只是很小很小的事,可是自己还是忍不住了。好像很久都没有哭过了。
+
+有人问,如果郁闷了应该怎么做?我说,吃东西,睡觉,看郭敬明。看着别人的故事,自己就不那么难过了。这是我一直选择逃避的方式,小说里面的人物哭了笑了,我就忘记自己了。
+
+其实自言自语也是幸福的一种方式,一直说自己很开心很幸福,就似乎自己也就能感觉到开心与幸福了。再加上旁人肯定的话语,自己也更坚定了。
+
+但是,骗的过别人,骗的过自己么?
+
+
+
+突然的,就会开心起来。因为自己才看了一篇关于异地恋的文章,多好啊:如果爱,请深爱。对于故事的主角来说,真是羡慕,因为拥有持久而稳定的幸福。
+
+于是兴冲冲地发了日志找了插图:
+
+>“来,看看我写的新文章。”
+>“要不要我帮忙修改一下?”
+>“不用了,我可以。”
+
+直到这个时候,才意识到,你还在我身边。
+
+我一直以为,我们是可以一起做很多很多事的。我一直以为,我们是可以走到很远很远的。我一直以为,你是那个会永远嘘寒问暖、“养两个孩子”的那个人的……
+
+恍惚间才意识到为这个问题,彼此已经为此争吵过好多次了。或者说,是我自己闹过很多次了。查一查短信包流量,还剩209条,用了不到1/3。而此时,已是月中。
+
+以前总是会担心超过,两条短信也要压成一条短信发。现在,心里的话语,不知道怎么说出口。有的,也多是:
+
+>“好的”、“到了”。
+>“来了?”、“嗯。”
+>“不早了,睡吧,晚安。”、“88”
+>**再撒一次娇,**“不批准,以后我不睡你也不许睡!”
+
+或许是已经习惯了,因为彼此已经熟悉,但随后便是沉默,只能无力的挥挥手:
+
+>“好吧,88。”
+
+何时我与你的世界,已经相隔了那么遥远了呢?
+
+在小区楼下,看到一对对的情侣拥抱缠绵。在月台上,看到送别的依依不舍。在校内网上,看到人家写的“保卫老婆”。在公寓走道上,看到他人说,还是找个男朋友好。
+
+一楼到十三楼,电梯上了又下,一楼到六楼,电梯下了又上。一个人在家,一个人去超市,一个人深夜去洗手间。好像忘记了,自己也需要他人的陪伴。
+
+所有人都说,找个男朋友吧,管接管送,背后随时一站,便有了靠山。可是亲爱的,你怎么不在我身边。
+
+>你说,“保卫老婆的可能是我哦。”
+>我说,“有人给我发消息说梦见我哦。”、“你信了没?”
+>“信啊。”
+
+然后呢?
+
+然后我是不是该让别人陪我回家?
+然后我是不是该让别人写下保卫宣言?
+然后我是不是该让别人每天给我发个消息道早?
+然后我是不是该让别人打个电话问你现在在干吗、心情好不好…
+
+
+我是你的啊,你怎么无动于衷。
+
+你甚至不会像别人一样傻傻的说上一句:“敢打我老婆心思,想死啊!”
+
+我做不好很多事,我太不小心,我懒散。可是我现在,只想有个傻气的男朋友站我身边,或者告诉我,老婆最近色狼出没注意安全,随时开机打我电话。
+
+你在淘宝上买回的储蓄罐,哭着说被老婆抢去玩了,却拍下我专心玩的照片,感叹自己咋没发现这样的玩法。想要玩暗黑3,左右找理由,猴急猴腮,终于被批准了,拍一张,说还是老婆最好。自己买的最大的笔记本,再拍一张,炫耀说老婆送滴。
+
+你一直都是这么傻……
+
+我想,等你来北京,我们是不是可以去逛逛地摊淘淘潘家园,做一本自己的小日志。我想,等你来北京,我们是不是可以去去玉渊潭,看看能不能赶上最后一点樱花的踪影,放一次风筝。我想,你能不能在这周六就到北京。不是怕你不去了太遗憾,而是怕你不去了家里只留我一个人怕黑不敢睡……
+
+可是突然发现,原来你什么都不懂。或者说,你依旧是那么呆,不会揣摩女孩子的心思。
+
+上次便说,这样的问题,重复了好多次了,不希望再有下次了。看来,我还是要和你这个呆瓜说清楚。
+
+>这里的空气很新鲜,这里的小吃很特别,这里的lette不像水,这里的夜景很有感觉。在一万英尺的天边,在有港口view的房间,在讨价还价的商店,在凌晨喧闹的三四点。可是,亲爱的,你怎么不在我身边?我们有多少时间能浪费?电话再甜美,传真再安慰,也不足以应付不能拥抱你的遥远。我的亲爱的,你怎么不在我身边?一个人过一天 像过一年,我很想为了你快乐一点。可是亲爱的,你怎么不在身边?
+
+你怎么不在,身边……
+
+——写于2011年暑假,那个呆瓜还留在学校日子。
+
+![亲爱的](https://cat.yufan.me/cats/0118135iY.jpg)
diff --git a/source/_posts/2012-06-13.md b/source/_posts/2012-06-13.md
new file mode 100644
index 0000000..94ebe6d
--- /dev/null
+++ b/source/_posts/2012-06-13.md
@@ -0,0 +1,44 @@
+---
+title: 我们的时代
+tags:
+ - 小时代
+ - 读后感
+ - 郭敬明
+categories: 文章
+permalink: our-mtimes
+featureImage: https://cat.yufan.me/cats/011805mzG.jpg
+id: 69
+updated: '2015-04-16 04:40:57'
+date: 2012-06-13 22:05:20
+---
+
+>每一天都有无数的人涌入这个飞快旋转的城市——带着他们的梦想;
+>每一天也有无数的人离开这个生硬冷漠的城市的摩天大楼组成的森林——留下他们的眼泪。
+>这是一个浩瀚的巨大时代。
+>这是一个匕首般锋利的冷漠时代。
+>
+>——题记,选自《小时代:折纸时代》
+
+不怎么喜欢看郭敬明的小说,总觉得那些文字应该是小女生才会去看的东西。也总受不了扭扭捏捏的剧情,故事的结局,每次总是悲剧,一定要到最后将你的眼泪完全骗干才罢。但是,他的这部小说却真真切切的感动了我。
+
+上海是中国经济最为繁华的都市之一,这里每天上演着无数不为人知的悲欢离合。我们所将看到的故事,就发生在这座灯光下埋藏着无数血腥、黑暗、阴谋、丑恶的都市。
+
+
+
+我们的世界充斥着各色的人生,快乐、悲伤、恐惧、迷茫全部交织在这个时代。外滩上,奢侈品的门店一家又一家,里面门可罗雀。仅仅一道之隔的江边大道上,身着廉价衣服的游客在络绎不绝的拍照。原来,两个世界的极端竟可以如此的融洽……
+
+轰轰烈烈的发展潮流中,故事里的主人公四姐妹们开始了毕业后的上海生活。冥冥之中,仿佛有一双看不见的大手在操纵着每个人的命运,每个人的故事各不相同,但最后都来到了这里——《M.E》杂志社。
+
+命运的齿轮不会因为某个事件而停止转动,亦不会因为时间的蜕变而改变转速。我们亦像是表面上的时针、分针、秒针,一边转,一边看着时针的重合,却只能擦肩而过,无能为力。惘然间才发现,我们身处在如此一个“小时代”。
+
+折纸时代里,书写的是华丽的高中故事。有的只是羁绊,四姐妹们的喜怒哀乐,那四个很要好很要好的小女孩的故事。单纯的宛如有喜欢的人,南湘有一个麻烦的男友,林萧和顾里都有段不错的青春爱情。看这一部分的时候还在上高中,对于里面的情节只是稍有感触。直到看到虚铜时代,里面的人物矛盾一一暴露出来的时候,才看的心酸,或者说闹心。
+
+郭敬明写的很虐,崇光的癌症,简溪的那句别折磨我了,看了后都会让人心痛。《小时代》的故事里,有着太多的阴谋、情感纠葛,即使只是小说,也会让人联想到现实社会的险恶。当读大学的我看完刺金时代的时候,才真正的哭了。
+
+主角们的死让人悲伤,结局的一场火,烧去了一切的开始与结束。即使是四姐妹关系复原,即使顾里战胜了病魔和资产危机,即使还有很多,但是都消失了。让人无法接受这个设定,感觉不应该是它应有的结局。但结局只有一个,它不可能让每一个人都满意。现实的生活中拥有着的是悲欢离合,太过美满的结局只有在电影、童话故事中才能看到。真实世界的完美结局,又能有多少?
+
+他们的故事,结束在这么一场让人难以置信的大火里,缓缓落下帷幕。但是时代的脚步却依旧向前,时间,是最能抹去一切痕迹的东西。小说里面的故事虽然结束了,但是我们的故事才刚刚开始,当你以一位旁观者的角度,翻到最后一页,合上书本的时候。关于他们的记忆,名字、悲欢、故事,已经编织进我们的生命里,无法剥离。
+
+这是属于他们的谢幕,我们的开始。
+
+小时代,你我的时代。
diff --git a/source/_posts/2012-06-15.md b/source/_posts/2012-06-15.md
new file mode 100644
index 0000000..5c680ef
--- /dev/null
+++ b/source/_posts/2012-06-15.md
@@ -0,0 +1,29 @@
+---
+title: 傍晚随想
+tags:
+ - 时光
+ - 生活
+ - 黄昏
+categories: 文章
+permalink: evening-caprice
+featureImage: https://cat.yufan.me/cats/011749OQL.jpg
+id: 70
+updated: '2015-04-16 04:41:16'
+date: 2012-06-15 12:59:42
+---
+
+我曾经在某个闲适的傍晚,走过校区南边的操场。远处渐落的夕阳斜斜地投射着美丽的光芒,整个世界都被镀上了温暖的金色。我沿着足球场的草坪边缘缓慢地前行,缓缓地,连呼吸都放轻,仿佛不忍心打扰眼前的伊甸园。
+
+
+
+天好晴朗,是那种火烧般的红艳。草好柔软,是那种生机盎然的绿。周围的人跑着、坐着、说笑着,整个世界充满着活力。风吹过来,带着一丝清爽,远处法国梧桐树梢上的叶子簌簌作响,荡漾在暮霞映照的操场,也留在了我的心中……
+
+抬望眼,羽毛球场上快乐的一家四口在切磋技艺。赤红色的跑道上人们在阳光下慢跑,远处跑道中间的绿地上,一堆堆青年或坐或躺,亲密地交谈或只是安静地休憩。栏杆外,几位已经结婚的阿姨正推着婴儿车,幸福地看着蹒跚学步的小孩。旁边半大的小女娃,正撅着嘴学骑自行车的,努力地将车头扭正,歪歪扭扭。刚打完球学弟满足地闭着眼睛坐在那里小憩。锻炼身体的学生在健身器材那里各显身手,生锈的踏板在他们脚下嘎吱作响……
+
+忽然觉得,生活也许就是这样了,我们各自走在自己的道路上,走得很慢,隔得很远,却有着自己的故事和记忆。而时间,在这一刹那静止,不愿向前迈去。阳光下,人们的脸上都带着安详而又幸福的笑容,似乎还有点佛祖拈花一笑的禅意。当我走到了操场尽头的时候,我在心底默默地告诫自己,不许回眸,就让那个时刻、那些笑脸成为生命里永不褪色的回忆,然后在某个冬天温暖自己。
+
+这是,记忆里的一段温暖。
+
+文/雨帆写于10年5月,即将毕业的日子。
+
+![黄昏时光](https://cat.yufan.me/cats/0117505jT.png)
diff --git a/source/_posts/2012-06-18.md b/source/_posts/2012-06-18.md
new file mode 100644
index 0000000..47633f7
--- /dev/null
+++ b/source/_posts/2012-06-18.md
@@ -0,0 +1,35 @@
+---
+title: 与幸福
+tags:
+ - 幸福
+ - 心烦
+ - 未来
+categories: 文章
+permalink: happiness-caprice
+featureImage: https://cat.yufan.me/cats/0113429Qk.jpg
+id: 71
+updated: '2015-04-16 04:42:25'
+date: 2012-06-18 17:34:44
+---
+
+其实幸福看似很远,却又很近。
+
+这些天不知怎么的情绪一直很低落,一直弥漫了整个月初。忧伤、愤懑、百无聊赖、偏激、肆意、任性与自我放逐。也许是期末考试即将来临的压抑,也许是课程设计即将递交。真正的原因总是秘密地隐藏在微小的角落,生根发芽,默不作声,一点一点将根茎蔓延开来,开出自怜的花朵。而表面的自己,却依旧笑着说:“今天的阳光真好”。
+
+济南的阳光已经灿烂多日了,炎热的季节,稀少的行人,而我始终找不到那个有着金黄色底色可以柔和包裹自己的角落。
+
+
+
+偶然间发现“黑背”爆出了和老婆的合照。他说:“结婚纪念日,结婚两年,相识十年整。吃纪念晚餐,吃的好饱,老婆吃了半个剁椒鱼头,我不吃鱼,只能面带微笑目视老婆吃鱼,哈哈。”在他们的结婚照里,两个人依偎着,穿着西装与大衣,别着新郎新娘的胸花,笑得淡淡的。背景是硕大硕大的双喜,红色底金色边,围着一圈七彩气球,一角的吉祥结上还挂着一个乐呵呵的财神。不美,也不梦幻,却踏实的贴心。
+
+他们都笑得好幸福。
+
+还有一张十年前的照片,樱花与马路,微晃的镜头。黑背从后面抱过来,抓住了老婆的手,面露得逞的笑意。再看两人,其实都腼腆的要紧,只是手抓的好紧,一直没肯放。对比着看,才发现:时间虽然改变了容颜,让圆润润的姑娘有了棱角,只是,陪在身边的人依旧没变。他们的照片里,充满了湖泊与花海,背景的熏衣草地柔柔的,却似乎刺痛到眼睛,那样的美好,短暂、也令人羡慕。
+
+而我们的之间合照,似乎还只有那么一张,那个夏末,我还未长大,穿着白裙子披着发,不知道未来在哪里却相信世界会是充满阳光。你还是白衬衣,笑得傻里傻气,说现在有很多不如意,但未来会很好很好。而我们,有着熟悉却还疏离。那时,我们只是朋友。
+
+恍惚间想起了失落的原因、彷徨的原因、放弃的原因。防线崩溃,终于扯了闺蜜开始絮絮叨叨的诉说,可是说完后才发现自己的空洞,又能如何,还能如何,自己能做的又还有什么……
+
+又要到了放假离开的时候,想想自己即将拖着行李箱,对着宿舍与窗外刷刷作响的法国梧桐叶说再见,突然就感到一种悲凉,似乎一去不复返的悲凉。然而,我为什么会不回来呢?我自己也说不清。
+
+var/云儿
diff --git a/source/_posts/2012-06-22.md b/source/_posts/2012-06-22.md
new file mode 100644
index 0000000..2c0e29c
--- /dev/null
+++ b/source/_posts/2012-06-22.md
@@ -0,0 +1,30 @@
+---
+title: 那个拼错的单词
+tags:
+ - SHMILY
+ - 心灵的鸡汤
+categories: 文章
+permalink: the-misspelled-word
+featureImage: https://cat.yufan.me/cats/011305w66.jpg
+id: 72
+updated: '2015-04-16 04:42:56'
+date: 2012-06-22 22:25:43
+---
+
+在我读初中的时候,我还没有属于自己的电脑,阅读的来源只有书本和杂志。所以下课的时候,最喜欢去逛的地方便是学校二楼的图书馆,而我现在将要讲的故事也是从这而来。
+
+
+
+图书馆的书架比起当年的我还要高出一点,很多时候,我喜欢随便找一个角落借本书看,无所谓内容,无所谓地点,更像是一种机械的汲取,类似任务般的阅读。
+
+以这样的方式,我读了很多书,却都基本上忘的差不多了。值得庆幸的是还有一些故事一直牢刻于心,并能在现在一一讲述。也许得感谢自己一锅端的阅读方式,让我有幸在情感最为丰富却又迷茫的年代遇到了自己的第一本《心灵的鸡汤》。
+
+那时的我才从济南转学到厦门,新鲜的环境、陌生的同学、不同的教材,感觉自己就像是刘姥姥进了大观园。只是,最初的自己,是害怕的。总是坐在教室的最后一排,默默地看着周围的人说说笑笑,却不知道找谁说话,就像是空气一样被人遗忘。
+
+一个人的角落,一个人的阅读,一个人的感动。心灵的鸡汤的故事很简单,却又很温暖,记得最深的故事是一篇关于爱情的。故事讲述了一对祖父祖母互相让对方寻找单词SHMILY的游戏,简单却又意外。这个单词有时候会出现在手纸的最后一张上,有时浮现在洗澡时的镜子上,他们轮换着在屋前房后留下“Shmily”,一经对方发现,就开始新的一轮。 直到最后,作者的祖母死去的时候,他才知道:SHMLIY表示的意思是See how much I love you.(知道我是多么爱你。)
+
+这么温暖的一个故事,感动了我整整一个午后,在还书的时候,我也把这个单词记在了心底——SYHILY。很明显,你会发现我记错了这个单词。以至于在多年后的今天,当我和云儿说起关于这个单词的故事时,她突然露出了疑惑的表情:“这个缩写的单词不怎么对,See you have I Love you 的说法没见过呀?”百度一下,果然自己记错了,而且整整错误了6年。
+
+流年里,往事如风,记忆如烟花,亦如浮沙。观悲忆,落日恢宏。当我回首审视的时候,竟然没有后悔,没有抱怨。我不愿修改这个错误拼写的单词,毕竟,那是年少时第一次对于爱的记忆。那种美好,即使错了,也无怨无悔……
+
+![](https://cat.yufan.me/cats/011305MUt.jpg)
diff --git a/source/_posts/2012-06-23.md b/source/_posts/2012-06-23.md
new file mode 100644
index 0000000..ad0cce3
--- /dev/null
+++ b/source/_posts/2012-06-23.md
@@ -0,0 +1,36 @@
+---
+title: 汐阳
+tags:
+ - 日光
+ - 汐阳
+categories: 文章
+permalink: sunset
+featureImage: https://cat.yufan.me/cats/011252YTU.jpg
+id: 73
+updated: '2015-04-16 04:43:27'
+date: 2012-06-23 17:22:59
+---
+
+夕阳是一朵晚开的花。而最美是海上的日光——汐阳。
+
+——是为题记
+
+夜晚,因为未知而神秘。将一切都笼罩在浓浓黑暗下面,显得那么单纯。深不可测的海如夜般未知、神秘。夜幕笼罩下的海没有都市里华灯与喧嚣的魅惑,那么的令人向往而又敬畏。
+
+
+
+皓月当空,似白练般从天上倾下,幻化为薄纱将大海罩住。银白色的朦胧令人感到亲切。微风吹拂下,摇曳着的海面似静谧的摇篮,装载着多少人的梦……
+
+一切美好事物注定不会长久。幸福总是短暂,似多变的海,倏忽间就变得暴虐无常。一道闪电将月光渲染的均匀的夜撕开,霎时,涌动的天空沉了下来,当空的皓月也被乌云遮盖。风愈吹愈烈,摇曳的海面越荡越高,终于翻滚起来,浪花击打着礁石,伴着轰轰的雷鸣,静谧已然消逝。
+
+终于,雨打了下来。天与海被雨幕连为一体,巨大的雷声在风雨间奏响。海燕迎风而上,在雨中欢舞,任雨点击打在每一寸翅膀上,任疼痛在身体的每个角落肆虐。它接受着暴风雨的洗礼,呼喊着:让暴风雨来得更猛烈一些吧!汹涌的海面似将一切都吞噬,海燕孤独地飞翔着,独享这暴雨中的欢舞,只因他坚信最美的夕阳会在破晓绽放。
+
+![汐阳02](https://cat.yufan.me/cats/011252mb2.jpg)
+
+不知咆哮了多久,厚重的云层间闪现一线光亮。是它,刺破了天地的混沌,一道白色的光辉在海平线尽头亮了起来,这是一股不可遏止的力量的前奏。海燕向着光辉飞舞,白色击退了阴霾,黑暗的夜幕被无情的撤下。
+
+金色的阳光占据了整个天空,撒向了海天相接的蓝。重归平静的海面上,海燕自由地飞,尽情沐浴着它的日光。它坚信,最美的汐阳要经过风雨的洗礼才能欣赏。
+
+我愿在风雨中飞翔,只因最美是海上日光,汐阳。
+
+![汐阳03](https://cat.yufan.me/cats/011252E6G.jpg)
diff --git a/source/_posts/2012-06-24.md b/source/_posts/2012-06-24.md
new file mode 100644
index 0000000..71f2954
--- /dev/null
+++ b/source/_posts/2012-06-24.md
@@ -0,0 +1,43 @@
+---
+title: 那个角落里的父亲
+tags:
+ - 成长
+ - 父亲
+ - 约定
+categories: 文章
+permalink: fathers-love
+featureImage: https://cat.yufan.me/cats/0112418Qd.jpg
+id: 74
+updated: '2015-04-16 04:43:44'
+date: 2012-06-24 23:47:48
+---
+
+人总是在成长中学习生活,积累经验。有时候我们敬畏老人,就是因为他们有着比我们更加丰富的人生阅历。
+
+——题记
+
+写下这个标题的时候,我又一次将电影《我与狗狗的十个约定》看完。相比三年前刚看这部电影时的感动,也有了一番新的感触。
+
+那个时候的我还在高三备考,每天忙着的就是三点一线的学习生活。看电影的时候正好是第一次模拟考完,同桌绍君说:“一起来看电影吧”。于是那个午后,我将自己心中埋藏多年的泪水献给了这部电影里面的小狗:索科斯。
+
+一直以来都将眼泪藏在心里,学习的压力使自己变得麻木、僵硬。很多时候,当自己伤心的时候,才发现,我是什么时候忘记哭泣了呢?
+
+
+
+电影的剧情很简单,只是说了主人公明莉在妈妈过世后和小狗、爸爸一起长大的故事。平淡的剧情,不带做作的表演,比起具有强烈视觉冲击的好莱坞大片,《十个约定》的故事更像是一杯清茗,适合在午后细品。
+
+时光飞逝,我们都在变化中成长,于是,就有了不一样视角。三年前的我关注的只是那只小狗对于主人的默默守护,用自己一生来诠释的爱。而今的我再一次观看此片时,却不经意间注意起了一直在角落里的“父亲”。
+
+当“妈妈”病逝的时候,我们可以看到父亲一直做的努力:手忙脚乱地做着早餐、料理,为了女儿放弃了自己优异收入的工作,学习洗衣服、做家务。父亲的关爱不像母亲那么亲蜜、帜热,更像是春雨般入微、细腻。因为女儿,父亲的生活空间仅仅局限于诊所、沙滩,当明莉离开去动物研究所工作时,我们可以明显看到在机场角落送别女儿的父亲眼里的黯然。在海边和狗默默地看风景,喝啤酒,感叹着女儿的工作忙;在房间里与狗默默相对,一起分享晚餐,挂记着女儿为什么还没放假。不知怎么的当我看到这些镜头的时候,鼻子一直酸酸的。是以前的我看得不够仔细,还是现在的我已经长大?
+
+一直以为影片里的父亲会再婚,但是却没有。没有了老伴的父亲是寂寞的,尽管有女儿和狗狗的相陪,但是女儿会长大、会有自己的家庭;狗狗的生命只有十年,终会走的比人早……在狗狗死后,女儿要求父亲参加自己婚礼的时候,我明显看到父亲的不愿:挽着自己的女儿走上红地毯,送到另一个男人身旁,独自离开,余生漫长而又孤独。
+
+妈妈走了,狗狗去了,女儿已经长大了,父亲也老了,似乎一切都到了结束的时候。我相信,当狗狗死后、明莉哭着对父亲说因为她而使爸爸的生活变得狭窄的时候,其实明莉已经懂得了父亲为自己的付出。父辈的肩膀承担的不仅仅是生活,还有对于子女的关爱。
+
+人生生来寂寞,但是却有着无数亲人的相伴、相随。而关爱,无需述说,就像是风一样无声无息、不为察觉。
+
+当如今的我看完这部影片的时候,我突然在想,下一个三年后的我再看这部电影时,又会有什么样的感悟呢?我想,阅历的增长总会带来不一样的感受,那么就让时间来告诉我们结果吧。
+
+只道是,年年岁岁花相似,岁岁年年人不同。
+
+**相关阅读:**[十年如昔](http://yufan.me/the-story-of-time/ "光阴的故事")
diff --git a/source/_posts/2012-06-27.md b/source/_posts/2012-06-27.md
new file mode 100644
index 0000000..eafb4b7
--- /dev/null
+++ b/source/_posts/2012-06-27.md
@@ -0,0 +1,22 @@
+---
+title: 再见,青春
+tags:
+ - 杂思
+ - 青春
+categories: 文章
+permalink: goodbye-youth
+featureImage: https://cat.yufan.me/cats/011225CET.jpg
+id: 75
+updated: '2015-04-16 04:44:27'
+date: 2012-06-27 07:11:05
+---
+
+传说,鱼的记忆只有七秒,七秒之后,它所游过的每一个地方都将是一个新的起点。在这个新的起点,它将会有一个新的梦想,这个梦想让它即使是禁锢在鱼缸中也能依旧保持活力。对于青春而言,青春不是一份承诺,告别,忘记并不意味着背叛——只要心中的梦一直在。
+
+
+
+或许我也可以做一条鱼,忘记曾经,在目前的大学校园中揣起一个新的梦想,继续快乐地为着目标奋斗着。只是我还想追着青春对她说:
+
+>青春,你等等我啊!我还有话对你说呢。谢谢你陪伴我一起走过的日子,再见,青春……
+
+只道,浮生若梦。只叹,记忆未央。
diff --git a/source/_posts/2012-06-29.md b/source/_posts/2012-06-29.md
new file mode 100644
index 0000000..01ee394
--- /dev/null
+++ b/source/_posts/2012-06-29.md
@@ -0,0 +1,24 @@
+---
+title: 哲学与思考
+tags:
+ - 哲学
+ - 思考
+categories: 文章
+permalink: philosophy-and-thinking
+featureImage: https://cat.yufan.me/cats/011206AS8.jpg
+id: 76
+updated: '2015-04-16 04:44:45'
+date: 2012-06-29 10:55:39
+---
+
+有句话说的好,哲学,出自一群无聊的闲人手里。苏格拉底的妻子苏珊那就曾经如此自白:“我是苏格拉底的妻子苏珊那,我的丈夫苏格拉底是一个著名的懒汉。他每天一大早就起床,吃完早饭就出门了,他没有工作,我也不知道他每天都在外面作些什么。家里的日子很贫寒,总是无米下锅,我很为家里的生计着急,觉得不能每次都靠柏拉图他们来接济,咱们家应该自食其力,于是每次都劝他找份工作,干个家教什么的,但是他从来都把我的话当耳边风。”
+
+
+
+同样地,马克思也是有名的闲散之士,成天就靠着恩格斯的接济过活。而想想原因,也并非没有道理。大学教授问他的学生一天都干了些什么,学生列出满满一张日程表,最后教授惊呼“天哪,那你哪有时间思考呀?!”
+
+思考需要时间,这是显而易见的,但是却又那么容易被人忽视。每天过着忙碌敲代码的生活,哪里有时间思考。强迫自己写一篇日志之类的东西,其实也是强迫自己抽出一些时间去思考。生活的忙碌,就像小沈阳说的,“一睁眼一闭眼,一天就过去了”。
+
+时间就像流沙一样从指缝流逝着,而自己却似乎什么都还没有做成。
+
+~ fin ~
diff --git a/source/_posts/2012-07-07.md b/source/_posts/2012-07-07.md
new file mode 100644
index 0000000..d1fd1e1
--- /dev/null
+++ b/source/_posts/2012-07-07.md
@@ -0,0 +1,200 @@
+---
+title: 交织的羁绊 Story 3
+tags:
+ - 同人
+ - 悠久之翼
+categories: 小说
+permalink: novel-story-3
+featureImage: https://cat.yufan.me/cats/013907d1y.jpg
+id: 77
+updated: '2015-04-16 04:45:39'
+date: 2012-07-07 23:05:02
+---
+
+## Story 3、圣诞夜
+
+有两个名唤「音羽」的小镇,在焦土和废墟上建起的真正的小镇和映在安详而美丽的大地上的虚幻的小镇。咀嚼着痛苦的过往,践踏着无数的不幸。日复一日的生息中,小镇点缀着名叫「人」的光芒。记忆中的小镇的虚幻的影子,虚幻的小镇中的真实的自己,不停回放的记忆与时间和空间的缝隙。在那尽头的,便是——一切的结束与开始。而我们现在将要看到的,便是那个日本小镇的圣诞节冬季的故事。
+
+
+
+![圣诞节01](https://cat.yufan.me/cats/0111502kW.jpg)
+
+啪的一声,广野 · 纮手里拿来绘图的铅笔由于用力过度折断了。此时的他正在赶着下一期的《新漫堂》的稿子,可是无论怎么想都不知道怎么画教堂的部分。无力的他将铅笔扔在一边,重重地伸了个懒腰靠在椅子上,望着自己现在居住的单元房思索着。
+
+“真搞不懂”,广野重重地叹气道,“要不出去取材一下吧。”
+
+手机的短信铃声响起,广野连忙起身查看,“怎么了,原来是景啊。”新藤 · 景是广野的青梅竹马,但是一直叫广野哥哥。只见短信里写着:圣诞快乐,哥哥别忘记来我家参加晚会哦!
+
+“真没办法”,广野抱怨着,“难道她不知道漫画家都是没有节假日的吗?”望着桌上才画了一半的手稿,想想刚才的取材计划,广野还是妥协了。“先去取材,然后顺便露一个脸吧。”一边嘴里这样说着,一边走出了房间……
+
+此时正好是圣诞节里的平安夜,8点的钟声才刚刚响起,小镇上充满着欢声笑语。带着大胡子的圣诞老人、花花绿绿的气球、漂亮的彩灯装饰将小镇变得焕然一新。小镇街道的一角上。堤 · 京介正在拍摄圣诞节短片,作为社团参赛的作品。
+
+“好,cut。”四处拍摄一圈后,京介满意地合上了摄像机。
+
+“拍到好画面了吗?京介。”一旁一直陪伴的社长期待地问道。
+
+“那当然,京介自信地答道”,他大手往前一挥,“我只拍好的,其实下雪的场景要是能拍到就更好了,但是到现在还是没下雪啊。”
+
+“那可不行,拼接场景的时候就够呛啊!”,社长双手往腰间一插,断然拒绝了京介的想法。
+
+京介摇了摇头,无可奈何道:“算了,反正也只是取材。走,去吃饭去吧。”
+
+“嗯。”
+
+![圣诞节02](https://cat.yufan.me/cats/011150K0A.jpg)
+
+京介刚要抬步走开,眼角不自然地捕捉到一段闪光的画面,就像是一瞬间油然而生的灵感,或者是一种莫名的触动。猛然转身望去,只见对面的街道上,一位紫色短发少女正在欢快的小跑着。她提着附近面包店的盒子,围着一条粉红色围巾,跃动的短发、眼角弥漫的笑容,让京介不由得看痴了。
+
+不讳地说,女孩算不得怎么漂亮,并无吸引人之处,衣着也不出众,脑后的头发随着奔跑而上下抖动着。然而,相距50米开外的京介却从看见她身姿的那一瞬间,他的胸口便如发生地鸣一般的震颤,口中如沙漠干得沙沙作响。
+
+每个人都有属于自己理想的女孩。例如喜欢足颈细弱的女孩、眼睛大的女孩、十指绝对好看的女孩,或不明所以地迷上慢慢花时间进食的女孩。但是要此时的京介明确勾勒出女孩形象,却无法做到,现在他所能记得的,只有女孩并非十分漂亮这一点。事情也真是不可思议。
+
+“多么美丽的场景啊!”京介这样想着,拿起手中的摄像机想把她拍下来。只是,嗖~~一声,一辆运货车呼啸而过。一转眼,刚才还在的少女已经消失在视线内了。
+
+京介茫然的放下摄像机,望向四周。突然,在他的身后传来了社长咬牙切齿的声音:“怎么了?京介。”“呃!”京介回过神来,吓了一跳,左顾右盼地不敢看社长的眼睛,“没什么,只是觉得对面的宣传海报不错,想拍下来。”
+
+“哼!”正在和京介交往的社长重重地哼了一声,“肯定是看到好看的女孩子了吧!”
+
+“……”京介不知如何应答,理智告诉他现在应该否认,可是不善于说谎的他一时找不出对付社长的话来。毕竟,这种情况不是一次两次发生了。
+
+“果然又来了!又来了是吧。”社长充分体现了女强人的性质,一边愤怒的说着,一边上前使出了女生必会的龙爪手对着京介的耳朵就是一下。“好疼,疼疼疼疼疼。”凄惨的叫声回响在圣诞夜的街道,慢慢消散……
+
+![圣诞节03](https://cat.yufan.me/cats/011150hPX.jpg)
+
+同一时间,京介所看到的短发少女已经到了家。“我回来了。”少女推开房门兴奋地答道。
+
+“啊?欢迎回来,景学姐。”房间里坐着的是景的好友羽山 · 瑞希,被景一起来过圣诞平安夜。只是,此时的瑞希嘴里塞满了饼干,怎么看怎么有点好笑的味道。
+
+“对不起,瑞希。蛋糕店里面的人太多了。”景一边穿好拖鞋,一边抱怨着,一抬头,“咦?哥哥人呢?”
+
+“还没有来啊。”
+
+“真的吗?他到底还要不要来!”只见景的脸色立刻变了,她的眼睛闪闪地象是烧着什么东西,“都和他说了这次再放鸽子就决不会放过他!”景在那里咬牙切齿着,连瑞希都忍不住打一个寒噤,她真没料到看起来乖乖女的学姐景生气的时候有这么可怕!
+
+“纮学长好像总是那么忙”,瑞希一边转移着话题一边和景一起摆放才买回来的饮料、零食,“明明没有参加社团活动也没有上补习班,应该有别的原因吧。”
+
+“谁知道?那个笨蛋!”
+
+“不过也真是奇怪的人啊,之前我看见他还以为他在思考,结果就突然发疯似的挠头”,说道这里瑞希忍不住笑了,“感觉就像是在最后期限前赶工的漫画家一样。”
+
+啪哒一声,景仿佛是听到了什么不可思议的事情一般愣住了,手里拿的pocky饼干也随之滑落。
+
+“怎么了?学姐。”瑞希奇怪的问道?
+
+“啊,没事,没事!”,景快速的转过身摆手道,脸上还带着一丝由于激动而显现的红晕,“我再次发送短信,那个家伙可能没看到。”
+
+景拿出手机,映入眼帘的是一条新短信。咦?难道是哥哥发来的。这样想着,景打开了短信:“圣诞快乐,姐姐。by——千寻”
+
+圣诞夜的喧闹只局限在小镇中心的街道上,偏向镇郊的一条通往教堂的道路上,广野正独自一人骑着自行车穿行在冰冷的夜色中,窜入靴子的寒气使他身体微微颤抖,而四周的寂静更让人有些害怕。从五光十色的路灯映照的街道仰望星空,是淡粉色的,只能模糊地看到明月绽放着朦胧的残光。“好冷……”,广野想着,嘴里呼出的白气转眼间便融入了无边的夜色中……
+
+![圣诞节04](https://cat.yufan.me/cats/011150NLo.jpg)
+
+不知不觉到了教堂的门口,推开厚重门扉,耳畔响起吱啦的开门声,只怕是大门年久失修的缘故。广野轻轻地走进教堂,嗒、嗒的鞋子撞击底板的声音回响在空旷的教堂里。教堂的光线很暗,没有灯泡,唯一的光源来自道路两旁柱子上的烛光。广野一边走着,一边观察着四周的摆设,“呦,原来里面是这个样子啊。”
+
+“很遗憾”,还在观察侧壁绘画的广野顺着声响转过了头,之见道路另一侧的圣母像下,不知何时出现了一位穿着修衣的少女,看起来很柔弱的样子,年龄可能比广野还要小上一两岁,“弥撒仪式已经结束了哦。如果想参加的话,请明年再来。”
+
+“啊……不,我并不是教徒,只是想来取材的”,广野连忙答道。
+
+少女露出了好奇的表情说道:“那么,为什么来这里呢?这儿的教会并不搞赈灾救济活动哦。”
+
+“没有啦,我不是流浪汉”,广野·纮生气的说着,“我只是由于职业的原因,前来看看教堂内部到底是什么样子。”
+
+“原来如此。弥撒结束的话,虽说是圣诞节,这儿和普通的教会没什么区别。再说,弥撒本身就不是什么有趣的事情。”说道这里,少女叹了口气,满是疲惫的样子,让人的心都忽地一痛。
+
+“那么…说起来,你是谁?”广野 · 纮好奇地问道。
+
+“我么?和你一样的人哦。”
+
+“嗯?那是什么意思?”
+
+少女狡黠地一笑,对着广野眨了眨眼睛:“就是明明是圣诞节,却没有恋人共渡良宵的人啊。”语气里明显带了些自嘲。
+
+“我想问的可不是这个!”
+
+“说笑而已啦。”,少女摆了摆手,“露出那样的表情真的很吓人的啦!”
+
+虽然这么说,但是少女的态度却是十分轻松,一点也看不出害怕的表情。“我的名字叫雨宫·优子”少女自我介绍起来,“顺便说,我也只是一个路人而已哦,既不是教会的工作人员也不是相关人士哦。”
+
+“优……子……”,广野一边念叨着,一边在脑海回忆这个名字。似乎,在什么时候听过相同的名字,总是有一种莫名的熟悉感,可是怎么也抓不住那一瞬间的思绪。
+
+“怎么了?”
+
+“啊,没什么,只是突然想到了某些东西,走神了而已。”
+
+“难道是,对我一见钟情?”优子突然恍然大悟地说道,“虽说这是情不自禁的事情,但如果可以的话我希望先从朋友开始做起吧……”
+
+“你想吵架吗?”
+
+广野使劲地瞪了女孩一眼,少女同样配合地故意缩了缩脖子,装出害怕想要逃跑的样子。“唉,完全被小看了”广野无奈地叹气着。
+
+“真是一个不懂幽默的人呢!”
+
+“很抱歉,我就是这么一本正经。”
+
+少女只是微笑,并不说话,墙壁山并列闪烁的微黄的烛光,为少女的面庞笼罩上一层朦胧的暗色。
+
+“原来如此,那么,一本正经的你的名字是?”
+
+“没有报上名字的必要吧。”
+
+优子微微嘟起了她的小嘴:“这样太狡猾了,我都认真地报上了自己的名字呀。”
+
+“……”
+
+“没关系啦,名字而已,说出来不会少什么的啦。”
+
+“……”广野继续保持沉默。
+
+“算了,算了”,仿佛是最后放弃了般,少女摇了摇头道。“反正我也不是特别想知道你的名字,知道了也没有任何好处。”
+
+“广野啦,广野 · 纮。”
+
+“嗯……乖癖的家伙。”优子恨恨地说。
+
+“要你管!”广野 · 纮回应道。
+
+“总觉得,你还真是一个奇怪的人呢……”
+
+“你一个人一直待在这种地方也很奇怪了吧,说到底,你是在这做什么呢?”
+
+接下来的很长一段时间里,教堂陷入了沉默之中。少女将视线望向了屋顶的圣母像,在广野以为她在烦恼什么的时候,她却又露出了笑容:“我有一个必须要见的人。”她的表情是那么的认真,不是一开始和广野开玩笑时的那种略带做作的微笑。眼神里,透露着一份坚定,还有一丝怀念。
+
+虽然广野无法理解少女的那份坚持,但是还是鼓励道:“嗯。能见到的话就好了呢。加油吧!”
+
+“那么你呢?有没有想要一起过圣诞的人呢?”
+
+“没有!”
+
+“真的没有?”优子惊讶地问道。
+
+“……”广野突然不知如何回答,对于他来说并不是孤身一人更好,只是确实没有想过要和谁在一起。优子依旧在那里微笑着看着他,但是他却没有了聊下去的愿望。他转身想要离开,身后传来优子的惊讶的呼喊“咦?你要回去了吗?”
+
+“嗯。我在这里也没事可做,而且冷死了。”广野没有转身,继续往来时的方向走去。
+
+“啊,请稍等一下。”优子叫住了正要离开的广野。
+
+“嗯?”
+
+“有一句话忘记说啦!”优子扬起了一个恶作剧般的微笑,“圣诞节,快乐!”
+
+![圣诞节05](https://cat.yufan.me/cats/011150eqC.jpg)
+
+“好冷啊!”出了教堂,准备去赴约的广野使劲地搓了搓手,“会不会是要下雪了呢?”这样想着,耳边却突然传来少女的喊声:“小偷!”额?才避开了身边开过的摩托车的广野愣了一下,不由得叹气,“真是个骚乱的夜晚啊!才有一辆摩托车以疯狂的速度行驶过去,现在又来了小偷。”
+
+“站住!”从街道的另一边,一个女孩子啪嗒啪嗒地跑了过来。即使是漆黑并不明亮的圣诞夜,广野也可以明显地看到少女脸上的惊慌。
+
+“啊,喂,站在那边的人!”少女冲着广野喊着。
+
+“什么事?”
+
+“有没有看到一辆摩托车?”少女语气十分急促,脸上带着着急的表情。
+
+“嗯,看到了。”广野指了指道路的另一边,“好像是往那个方向开走了。”
+
+“嗯,谢了。”少女麻利地爬上了广野的自行车,“那么,这个就借我一下吧。”
+
+“啊?”还没等广野回过神来,这个陌生女孩已经跨上自行车,消失在冬夜的夜幕中,只剩下一个愈渐模糊的影子……
+
+“喂,等等啊!”广野一边喊着,一边追了上去。到底还是一个不平凡的圣诞夜,陌生的少女抢走了广野的自行车追赶小偷。而命运丝线的交阖,又会在这个冬日,北半球的另一个音羽小镇里开始怎样的故事?
+
+**To be continued!**
diff --git a/source/_posts/2012-07-13.md b/source/_posts/2012-07-13.md
new file mode 100644
index 0000000..19bf4b5
--- /dev/null
+++ b/source/_posts/2012-07-13.md
@@ -0,0 +1,36 @@
+---
+title: 贪婪的小孩子
+tags:
+ - 回忆
+ - 童年
+categories: 文章
+permalink: greedy-children
+featureImage: https://cat.yufan.me/cats/0111328Sp.jpg
+id: 78
+updated: '2015-04-16 04:46:03'
+date: 2012-07-13 05:10:03
+---
+
+现在和云儿逛超市的时候总喜欢去儿童用品区逛逛,看看身边的那些精致的小衣服、小玩具,我就忍不住说将来要是生个女娃,衣服什么的我全包了!可是,每次看到那么多漂亮的童装的时候,总会想起自己当年穿过的百家衣,简陋却玩了一个童年的积木……
+
+
+
+其实我很羡慕在01年出生的表弟,因为现在很少有什么东西他得不到,也没有什么想做的事情会去无条件去尝试。
+
+至今,我还记得才来厦门时第一次坐电梯的经历。一直都只在电视里面见过电梯,却没有真正尝试过,直到随父母来厦门务工,才圆了心愿。记得当晚,一直兴奋的睡不着觉,现在还记忆犹新。可跟表弟讲起这件事时,他露出了困惑的表情道:“坐电梯?”
+
+在Bilibili上看别人回忆的老动漫合集,怎么就透着一股熟悉劲儿。我看过的第一部动漫也是《邋遢大王历险记》,那个时候,每天晚上一到5点半就守着央视1套的动画城,死活也不让父母换台……
+
+![童年02](https://cat.yufan.me/cats/011132rjb.jpg)
+
+读过70后的童年故事,尽管那个年代物质匮乏,没有什么好看的衣服。玩具什么的都是自制的,有的,也就是一些华而不实的铁皮玩具。可是,70后的童年也是快乐的。我羡慕他们可以整天整夜地在蓝天白云下蹦跑,呼吸着未经工业污染的带着泥土芳香的空气,做着简单却有趣的游戏,自由、而又充满幻想。
+
+在小县城里长大的一代80后,说起童年很是羡慕农村里的娃儿,可以爬山下水……不用整天扎根在兴趣班里。
+
+都说90后开始,是物质发达、网络兴起的一代,他们想要什么有什么。他们脑子里面想的很多事,是许多70后、80后上了大学还懵懂的。可是,作为90后的我还是羡慕着00后……
+
+但是,羡慕也好,嫉妒也罢。每个人聊起童年的那些事儿,没有谁不津津乐道,乐在其中。虽然说比不了现在的孩子物质丰富,也没有他们那么丰富多彩的精神世界。可是对于我们这些走过属于自己的童年时光的人,曾经的摸爬滚打、无忧无虑的儿时记忆,是什么时候谁都拿不走的。
+
+那些年,我们都是无忧无虑的小孩子。
+
+![童年03](https://cat.yufan.me/cats/011132IMM.jpg)
diff --git a/source/_posts/2012-07-21.md b/source/_posts/2012-07-21.md
new file mode 100644
index 0000000..c39fa4b
--- /dev/null
+++ b/source/_posts/2012-07-21.md
@@ -0,0 +1,47 @@
+---
+title: 雨朦胧
+tags:
+ - 恋爱
+ - 雨季
+categories: 文章
+permalink: koto-no-ha-no-niwa
+featureImage: https://cat.yufan.me/cats/011124vN6.jpg
+id: 122
+updated: '2015-04-15 23:16:14'
+date: 2012-07-21 15:17:04
+---
+
+景泰蓝的天空,略带丝阴沉,花坛里的君子兰也没有了往日的娇艳,炎热的午后,沉闷的季节,让人心中总是憋着一股气想要吐露出来。
+
+独自坐在图书馆一角看书,窗外的天空低垂如灰色的雾幕,渐渐布满了乌云,屋内顶棚的灯一盏盏亮起,窗外的花草一动不动。有道是:溪云初起日沉阁,山雨欲来风满楼。
+
+
+
+看书的心忽地乱了,似平静的水面被纤丝挑起涟漪。一抬头,望向对面,竟不觉看得痴了,面前的座位不知何时起多了一位女孩。亦如每个关于图书馆的的故事中都会有的熟悉场景,平淡得仿若黑白铺就的山水墨色画,却有着别样的心动和恰到好处的融洽。眼前容色姣好的少女正专心看书,明亮的眼眸中仿若倒映着整个世界。
+
+这样温馨而又淡淡的情境,记忆中已经出现多次,但是总隔着层迷蒙的距离感。屡屡觉得自己被某种感觉触动,却总是抓不住、悟不透。
+
+第一次当她坐在我身边时,第一眼我便喜欢上了她,只是,我还没准备好表达的勇气去表达。于是便固执地等待下一次的遇见,永远是最笨的人选择的最笨的办法,永远是最无能为力的人选择的最唯心的办法。
+
+窗外轰隆的雷鸣声响起,打破了屋内无形的静谧,淅淅沥沥的雨声慢慢奏响,回荡在耳边。雨越下越大,对面的女孩也因雷声而惊扰,望向窗外。不经意间两人四目相对,她淡然一笑,刹那间的甜美,拨乱的不仅仅是思绪、还有心弦。
+
+如果次次都能相伴而坐,可不可以让我倾诉:我一见倾心的姑娘就是你?
+
+![雨朦胧02](https://cat.yufan.me/cats/011124EKu.jpg)
+
+此时的我静静地趴在桌子上,而她,就坐在对面。屋内是一片明亮的灯光,四周散落着一两个人,以点缀我们的存在。窗外哗啦啦地下着雨,她看着我笑了笑道:“外面雨下得好大。”我随意地应着:“夏季的阵雨就是这样,一会就小了。”
+
+不知不觉就聊开了话题,就像是隔着的一层纱被捅开了,没有了距离……雨渐渐地停了,窗外刚才还是乌云漫布,此刻已经露出了太阳。她高兴地说道:“雨终于停了,可以回去啦!”抬头寻找窗外她离开的身影,透过沾染了雨水的玻璃望去,是那么的朦胧。
+
+既然已经有了这样温暖的、柔和得近似淡然的开始,分别又有什么重要?我们所处的世界彼此交缠错杂互不干扰,但是偶尔会在缝隙里面漏出一些交集的机会,不急不忙牵引一段故事,令人悠然神往。也许某一天,百无聊赖大雨将至的下午,会有一个熟悉而又心动的人慢慢向你走来,你们也许在一起看书避雨,也许你会遇见一个回味无穷的故事。
+
+谁知道呢?
+
+>**后记:《将你的微笑记下》**
+>
+>我自时光走过,快乐汇成细雨,飘洒进悲伤的河;
+>美好化为纯白,氤氲进苍茫的夜。
+>于是,泉水自在地唱着叮咚的歌,黑夜安然地奏响曼妙的曲。
+>而我,抱紧双膝在寂寞的夜里,请萤火虫低低地盘旋,为我照亮曾经的路,去回首
+>——
+>每一个过往中你最美好的微笑!
diff --git a/source/_posts/2012-07-25.md b/source/_posts/2012-07-25.md
new file mode 100644
index 0000000..9ed6610
--- /dev/null
+++ b/source/_posts/2012-07-25.md
@@ -0,0 +1,52 @@
+---
+title: 写博的第一年
+tags:
+ - 写作
+ - 博客
+categories: 文章
+permalink: the-first-year-of-blogging
+featureImage: https://cat.yufan.me/cats/011111PCo.jpg
+id: 79
+updated: '2015-04-16 04:46:33'
+date: 2012-07-25 17:26:18
+---
+
+## 零:常
+
+有一天晚上,在QQ上和一个准备写博的人聊了很久,那个人问我,写博客会不会很累?我想了想,也不知道该如何回答这个的问题。因为世界上没有什么事情是不劳而获的,即使是最简单的日记也需要长久的坚持。可是,如果就这样说出来,又觉得哪里不对。所以我告诉他,每天我早上起来后都会打开博客、查看订阅、游览评论、回复。当我习惯做这些事情之后,就会有一种感觉,慢慢地在心中酝酿,让我觉得自己在网络中以一种与以往不同的方式存在着。我能够清晰地看到自己,回味着那些记忆中熟悉或者相似的镜头。
+
+
+
+前几天厦门下了几场大雨,下午在图书馆看书的时候,窗外突然下起了瓢泼大雨。淅沥沥的雨,呼哧哧的风,总让人静不下心来看书。只是,在不经意间发现对面竟坐着一位漂亮的女孩。但其实,也就是两个人互相看了几眼,笑了笑。
+
+接着仿佛整个世界沉默下来,我一边看着窗外的雨,一边在随身的笔记本上打开麦库笔记写下这个故事。雨滴打在玻璃上发出啪啪声,图书馆人很少,安静得像世界末日。我修改完错字,便顺手发表在自己的博客上。
+
+这时我才意识到,我已经习惯于用博客记叙自己的故事,不是微博里随便发的一条状态那么简单。而是,我一边活着,一边写着,然后自己看着自己的故事思考起来……
+
+这是我开始写博客的第一年。
+
+![壹](https://cat.yufan.me/cats/011111h0q.jpg)
+
+## 壹:记
+
+看村上春树的《且听风吟》时还在读高一,现在只记得小说开头的段落,说的是作者的朋友告诉他“不存在十全十美的文章,如同不存在彻头彻尾的绝望。”于是,每当作者提笔写东西的时候,经常陷入绝望的情绪之中。因为能写的范围实在过于狭小。譬如,可以就大象本身写一点什么,但对象的驯化却不知何从写起。
+
+“十全十美的文章本来就没有”,在很长的一段时间里,这句话被我拿来安慰自己可怜的作文分数。后来我开始尝试做摘抄,写日记,将零零碎碎的文字铺满了一本又一本Gamble笔记本。刚开始写日记时,语文课代表教我如何使用修辞。她帮我改过好几次文章,次次都能找出一大把错别字,又送我一本字帖,很厚,她说只有先把字写好了,才能写出好文章。多年后同学聚会见到她时,还能记起当年被她敲着脑袋强迫炼字时的甜蜜。
+
+高二的时开始写网易博客,基本上会写的就是流水账,比如今天上了什么课、做了什么恶心的数学题一类的。或者也会去选摘一些名家的散文,将他们的名字堂而皇之地换成自己的。但是,当我阅读那些优美的字句时,总是可以莫名的心静。那种与作者相同的心路,常让人感动的想要落泪。
+
+![贰](https://cat.yufan.me/cats/011111FC1.jpg)
+
+## 贰:散
+
+才上大学后的很长一段时间里,我都没有脱离失恋的伤痛,曾在QQ空间里写过那种孤独一人的绝望,同学的QQ状态赤果果地提醒着我的脱节。我憎恶着手机、MSN、E-mail这些只因为距离而存在的东西。我所渴望的无非是有人能静静地倾听自己的心情,一分钟也好。
+
+于是渐渐开始喜欢上阅读博客,每天打开电脑的第一件事就是打开Google Reader查看订阅。有时候一遍又一遍地看着某篇文章品味,有时候只是漫无边际地点开一个又一个的留言链接。或许会看到不同博主的生活、喜怒哀乐,或许会有另一个惊喜的感动。
+
+习惯了这样,就好像忘记了一些大学生活中最初所感觉到的困难。渐渐地,变成了一个无言的旁观者,阅读着你的我的故事。
+
+倒是在不知不觉中开始尝试描写,模仿那些熟悉或类似的字句,一点一点堆砌成自己的片段,散文、杂记这些,突然之间自己都会写了。过去也并不是不会写,但从来不觉得自己写的能看,干巴巴的句子,总有一种想要撕书的冲动。当有一天半夜里自己开始给啊囧的美图控更新的时候,我才真的觉得匪夷所思,一个几乎没什么访问的网站,所以一点也不知道自己发表那么多的图片是要干嘛。
+
+我行过许多地方的博客,看过许多的文章,品过许多种类的心情,经历着一个正当书写的年龄。
+
+写博客的第一年,自己对自己说:“我能行。”
diff --git a/source/_posts/2012-08-08.md b/source/_posts/2012-08-08.md
new file mode 100644
index 0000000..e3dfc27
--- /dev/null
+++ b/source/_posts/2012-08-08.md
@@ -0,0 +1,34 @@
+---
+title: 烟花散
+tags:
+ - 情感
+ - 烟花
+categories: 文章
+permalink: scattered-fireworks
+featureImage: https://cat.yufan.me/cats/010931eOJ.jpg
+id: 80
+updated: '2015-04-16 04:46:52'
+date: 2012-08-08 16:30:25
+---
+
+总有一些东西,没有谁能准确地捕捉或描绘,例如,爱情、回忆。浅念里,回忆中,悠然升起对你的思念。就像江心飘摇的水榕,遥不可及;就好像其实烟花也有最灿烂的微笑,而你们谁也不知道。
+
+
+
+又一次参加大学同学聚会,我们说着老故事、旧光阴,忙着记下彼此的手机号码,巴结着有权有势的同学。望着昔日害羞的她现在如此的神采飞扬,突然觉得,我们一起翘了晚自习去操场上散心的简单岁月,已经一去不复返了……“不知魂已断,空有梦相随。除却天边月,没人知。”回忆着韦庄的这首词,有一种想哭的冲动。
+
+听青春,迎来笑声羡煞许多人。那史册,温柔不肯下笔都太狠。烟花易冷,人事易分。而你在问,我是否还认真?
+
+命运中曾有一个人与你相伴,是他让你懂得了爱恨,经历了悲欢。在你的人生书页上划下了重重的一笔,让你知道了这个世界的现实与虚伪。只不过,你是否还记得?
+
+雨纷纷,旧故里草木深。我听闻,你仍守着孤城。城郊牧笛声,落在那座野村,缘份落地生根是我们。
+
+昔年一起学习的旧庭院,院子里有梧桐细雨、寒烟漠漠、大雪飘临。也许我们一起在那做过一个关于“浮生”的梦,只不过,你也许已经忘记了。
+
+花开荼蘼,韶华胜极,青春最灿烂的时候的终结。而我们,也随毕业分别。就像那盛开的彼岸花,花叶不相见,生生总相错。
+
+烟花散,每一次绽放,都是一道绚丽的回忆。我记得这些光阴中的刹那,记得如花般的你,那袭白色的裙装,冷蓝银白,藏着世间无尽的繁华与热闹。而我仅能想起的,却是那些无法忘记的真实和疼痛。
+
+烟花尽,刹那的芳华,缔结着一个个生命的轮回。
+
+![湖畔](https://cat.yufan.me/cats/0109313be.jpg)
diff --git a/source/_posts/2012-08-29.md b/source/_posts/2012-08-29.md
new file mode 100644
index 0000000..35a1603
--- /dev/null
+++ b/source/_posts/2012-08-29.md
@@ -0,0 +1,36 @@
+---
+title: 遗忘的乡音
+tags:
+ - 乡音
+ - 故乡
+categories: 文章
+permalink: the-forgotten-accent
+featureImage: https://cat.yufan.me/cats/010920W6t.jpg
+id: 81
+updated: '2015-04-16 04:47:07'
+date: 2012-08-29 07:06:44
+---
+
+似乎随着时代的发展、普通话的普及,我们越来越少听到儿时常用的方言、俗语。但是我相信,乡音已经溶于我们的血脉之中,代代相传,无法忘记。
+
+——题记
+
+其实,我是一个从农村出来的孩子。已经记不清有多久没有重复这样熟悉的句子,或许只是无力的提醒,暗示自己不要忘记自己来自何方。也正是这样的表达,赤裸裸的预示着我早已远离了家乡……
+
+
+
+对于目前大多数的乡下人来说,其实我们早就离开了赖以为生的土地,来到城市。要么是以读书的方式(高考),要么就是直接的进城务工。乡村与城市的生活代表着两种极端,城市的现代生活气息吸引着每一个来自农村人,灯红酒绿的街道让人陶醉。于是,大家都拼命地想脱离乡村,洗去身上的每一点土渣子气。乡音,便是最先遗忘的东西。
+
+于是乎,南来北往的人们,一个个都操着流利的普通话,似乎你很难发掘出真正的外乡人。我老家是安徽的,家里人说话一口方言。我们那管鞋子叫海子,管做完事情叫歇火,大声说话叫秦西鬼叫,等等。在我心里,这乡音就像是一枚明晃晃的刺青,无时无刻不在提醒着周围的人们我是来自贫困落后的农村。所以,当我离开老家来到厦门的时候,马上便撇掉乡音,试着用不熟练的普通话和人交流。
+
+离老家多年后,乡音也渐渐的遗忘,当我回老家高考的时候,我可以清晰地感觉到自己与它的脱节。周围的同学都操着一口方言交谈,我听不懂,也不会说,感觉就像是两个世界的人。可是我依旧固执地说着字腔正园的播音腔,我讨厌那在外人眼里土得掉渣的方言,讨厌落后的故乡,渴望远离它……
+
+道格·桑德斯在《落脚城市》里面说过:很多人宁愿在城市里过着朝不保夕的生活,却不乐意回到家乡。这其中蕴含着一种希望,那就是如果回到家里重复着父辈的生活,一辈子就会被困在土地上;而在城市中,发展的快节奏,机遇的巧合,自我的努力都会产生一种改变自我和改变命运的希望。他们依靠这种微薄的希望生活,哪怕生活在城市的最底层,遭受着各种形式的歧视与白眼,但仍能感觉到幸福就在不远处。
+
+但是,世间一切没有什么不会改变,尤其是人更是善变的动物。远离父母亲人独自上了几年大学后,我愈发地怀念家乡的一草一木,甚至是那一直被我深刻厌恶的乡音。
+
+重拾乡音的故事倒是很简单,今年过春节回家的时候,我竟不由自主地操起了好久不说的方言。8年多没说,一开始倒是有点结巴,但随后便越说越流利。那些熟悉的声音,原来一直没变。
+
+想想看,也许从出生那一天起,家乡那一片土地的乡音便深深烙印在我们的心里,熔铸于我们的血脉之中。这乡音,与生俱来,代代相传。
+
+![乡音](https://cat.yufan.me/cats/010921OGr.jpg)
diff --git a/source/_posts/2012-09-02.md b/source/_posts/2012-09-02.md
new file mode 100644
index 0000000..aefd1d4
--- /dev/null
+++ b/source/_posts/2012-09-02.md
@@ -0,0 +1,35 @@
+---
+title: 行走的季节
+tags:
+ - 旅行
+ - 时光
+categories: 文章
+permalink: the-season-of-walking
+featureImage: https://cat.yufan.me/cats/010909rc3.jpg
+id: 82
+updated: '2015-04-16 04:47:23'
+date: 2012-09-02 16:51:18
+---
+
+济南的夏天似乎没有了昔日的炎热。
+
+一个人坐列车回学校的时候,看着车窗外飞速变换的风景,心情却愈发地烦躁。有时四处想找人说话,但看着周围陌生的面孔,便会有一种疏离的味道。
+
+列车停走走,终点越来越近……
+
+
+
+不变的街道,熟悉的建筑,暮夏时分我又回到了旅途最开始的起点。望着路上来来往往的新生和家长,那种铭心的熟悉感由心中萌生。但。如果不是再次遇见,却是很难会想起曾经的画面。
+
+不知怎么的,对于记忆总是有一种感触。许多事物,一旦分别,即使映像再深也会渐渐模糊、淡化、最后忘记。时光的无情,可以抹去一个人铭心的过去。
+
+但是,忘得了一切,能忘记她吗?
+送云儿上火车的时候我差点哭了出来,我努力地微笑、挥手,将心中满满的离绪放下。那渐行渐远的火车,满满成了一个缩影。就像是灰白纸面上的一抹暗红,似乎停顿了时光的流走。
+
+分别后的时光总是过得太慢,站台上的车来来去去,要等的她却迟迟未来。
+
+再次见面的那一刹那,世界仿佛静了下来。粗重的呼吸,甜美的微笑,激动的目光在此时交织。千言万语到了嘴边只剩一句:“呦,回来了。”
+
+身后缓缓开动的列车,成为这灰色天际的一抹光影,在这漫天而坠的时光里,悠然远行……
+
+![远行](https://cat.yufan.me/cats/010909oJ3.jpg)
diff --git a/source/_posts/2012-09-08.md b/source/_posts/2012-09-08.md
new file mode 100644
index 0000000..d1a61c7
--- /dev/null
+++ b/source/_posts/2012-09-08.md
@@ -0,0 +1,34 @@
+---
+title: 最初的梦想在哪里?
+tags:
+ - 原创
+ - 梦想
+categories: 文章
+permalink: where-is-my-dream
+featureImage: https://cat.yufan.me/cats/010848KMZ.jpg
+id: 83
+updated: '2015-04-16 04:47:44'
+date: 2012-09-08 05:31:14
+---
+
+最初,算起来应该还是在小时候,我喜欢涂鸦,曾暗自想:以后要当个画家哦!安静地记录下所有美好。后来,由于一些原因,画没学成,于是就想:那当个服装设计师喽!让自己的设计成为流行。
+
+
+
+再后来,服装设计也没学成,我又想:不如当个建筑设计师吧,让凝固的音乐充满生命力。
+
+然后,建筑设计也失之交臂,再想:没事,当个结构设计师啦!只是由外观变成内部结构而已。
+
+终于到了某一天,老爸老妈开始整日说:当初怎么不报师范?当老师多好!听的多了,便想:嗯,当个老师也不错呢!还有寒暑假期……
+
+而最后,我开始从事软件工程。
+
+如今,还没到回忆的年龄,我却总是回想起那些曾经的梦想,然后心便生生地疼,感觉像是少了些什么,虚无的、飘渺的、那些再也回不来的东西。恍惚间如同做了一个漫长的梦,天昏地暗的,我追着唯一的光亮奔跑,却总也跑不到尽头,学不会拥有。然后,唯一的光芒终于消失,我失去方向突然停下,心有戚戚而不知置身何处……只会自欺欺人地安慰着自己:也许,也许这一切的一切是个莫比乌斯带,就像轮回一样,无尽的旅途中终有一天会回到最初。而内心深处却不得不承认:其实这一切只能是一条一直向前的直线,只是在最初与我匆匆相交,然后擦肩而过,渐行渐远……
+
+这些片段是我童年的一些记忆,尤其是那些已经无法实现的梦想。
+
+梦醒时分,未来依旧继续……
+
+——var/云儿
+
+![最初的梦想(2)](https://cat.yufan.me/cats/010848Q14.jpg)
diff --git a/source/_posts/2012-09-15.md b/source/_posts/2012-09-15.md
new file mode 100644
index 0000000..16883b6
--- /dev/null
+++ b/source/_posts/2012-09-15.md
@@ -0,0 +1,49 @@
+---
+title: 二人杂记
+tags:
+ - 原创
+ - 文字
+ - 花儿
+categories: 文章
+permalink: two-miscellany
+featureImage: https://cat.yufan.me/cats/010837eeL.jpg
+id: 84
+updated: '2015-04-16 04:48:09'
+date: 2012-09-15 03:00:22
+---
+
+## 那些花儿
+
+巧合其实无处不在,只要留个心眼。上午的时候,我想今天的文章就写“那些花儿”吧。下午的时候,校广播台就在放范玮琪的“那些花儿”——“那片笑声让我想起我的那些花儿,在我生命每个角落静静为我开着……”
+
+
+
+母亲是一个爱花之人,家里曾养过许多花花草草,很多都慢慢枯萎忘却了,印象较深的一个是茉莉花。之所以印象深刻是因为茉莉花开,极芳香。如今想来,只记得是很香,甚至有点美化的意味,真正的记忆却已经淡漠了。花儿小小的,本来是白的,随着时间的推移慢慢地变黄色。届时,母亲会把花剪下来,晒干后可以泡茶来饮用。至于茉莉花茶的味道却没什么印象,想来不是很美味。不知何时,不知何因,茉莉花淡出了我家的生活,不见了。
+
+另一个是含羞草,记得这个的原因更明显,因为它很好玩。只要触碰叶子经脉,两边的叶子就会合在一起,然后垂下来,相当有意思。似乎以前我还对它做过一些小实验,检验何种程度的刺激不会引起人家害羞。现在想想,才发现家里曾经有过的小动物或者植物都是不知不觉就不见了,若不是忘记了,就是事情发生在我上学期间,而我又没注意到。╮(╯▽╰)╭
+
+最后一个是水仙,理由是她长在水里,不需要泥土。也因此觉得水仙很纯净,但,其实那只是错觉。我家的水仙花冠色青白,花萼黄色,花被6瓣,中间有金色的副冠,形如盏状,花味清香,所以叫“金盏玉台”亦名“酒杯水仙”,花期约半个月。曾经写过一篇作文就以水仙为对象,题为“凌波仙子”。而且,水仙常常在春节期间开花,那时大家齐聚一堂,水仙花是很漂亮的装饰,相当能吸引弟弟妹妹们的注意力,防止他们捣乱。
+
+“但是,如今这里荒草丛生没有了鲜花;好在曾经拥有你们的春秋和冬夏……”
+
+说是荒草其实不确切,应该是芳草,现在家中养的是芦荟和兰草,对它们的印象不多,可能是因为我远在山东,很少在家。不过,在家的时候,都是我给它们浇水。
+
+“我们就这样,各自奔天涯……她们已经被风吹走散落在天涯……”
+
+——云儿
+
+![蒲公英](https://cat.yufan.me/cats/010837WlI.jpg)
+
+## 矛盾的文字
+
+>文学是指以语言文字为工具形象化地反映客观现实的艺术,包括戏剧、诗歌、小说、散文等,是文化的重要表现形式,以不同的形式(称作体裁)表现内心情感和再现一定时期和一定地域的社会生活。
+
+有时候,也只是随便写写而已,并没有想要表现内心情感的想法。但是,感觉很有意思的是,情感就像水流一样在字里行间流动,不禁让我想起了《虫师》的淡幽和她那些活着的文字。不过,有一千个读者就有一千个哈姆莱特,也许传递给别人的感情会千差万别,甚至南辕北辙。于是,我时不时地回顾自己所写的文字时,也能从中发现一些新的感情。但是当时我应该没有那一层的意思,至少在显意识上是这样的。
+
+显意识和潜意识如同光和影一样相生相灭。大概,在不知不觉中,潜意识躲开了监查官,将一些思想注入到我的所书写的文字当中。而当我回顾时,这些情感就像春天到了一样,争先恐后地破土而出。有时让我十分惊喜,有时让我羞愧万分。
+
+其实,把自己所写的东西给别人看,就像是脱光了衣服站在大街上一样让人难为情。情感这种东西,无论怎么说都是比较私人的。再加上,人非圣贤,孰能无过,在我文字也会显露出我的许多缺点和懦弱,卑鄙等等。但是却又像皇帝的新装一样,明明大家都看见了,却未必认为自己看见了,或者认为自己看错了。当然有时候,是真的看错了(笑=W=)。
+
+但是,人又是社会的,希望得到他人的认可与接纳,希望别人了解自己。于是,我们也需要展示自己。就像模特或者公众人物一样,出现在镁光灯下。
+
+——雨帆
diff --git a/source/_posts/2012-09-19.md b/source/_posts/2012-09-19.md
new file mode 100644
index 0000000..4dfff16
--- /dev/null
+++ b/source/_posts/2012-09-19.md
@@ -0,0 +1,36 @@
+---
+title: 明天,你好
+tags:
+ - 明天
+ - 未来
+categories: 文章
+permalink: hello-tomorrow
+featureImage: https://cat.yufan.me/cats/011034y4X.jpg
+id: 85
+updated: '2015-04-16 04:48:39'
+date: 2012-09-19 04:37:11
+---
+
+忘不了我们俩的那次奔跑。
+
+这是我记忆中的画面,炎热的午后,我和雨帆一起追着刚刚离站的119路公交车奔跑在城市的街角。亏着红灯,让我们创造了从校门赶上车的惊喜。上车时我回想刚刚我们狂奔的样子——你挎着个单肩包,在人流车缝间奔向前面的119。而我,穿着凉鞋,亦步亦随地跟在后面,手里举着相机,试图用快门记录下这极具喜感的身影……
+
+
+
+想来,我俩只是为了赶赴山师的那一场毕业摄影展,好像要努力去抓住一些自己不愿失去的东西,那是大学稀少的时光印记。摄影作品中几多乖僻,几多平凡。在环形的展台边写着他们的毕业誓言——“今天,我们在这里展示我们的成果,明天我们将带着新的梦想起航。”
+
+昨天和今天说着再见,奔向明天。再见,有谁会喜欢上说“再见”呢?
+
+静静地听着关于作品的阐述,我偷偷按下快门,想象着还有多久就该自己被围观,抑或也会像学姐学长那样选择宅在自己的田地里,开始无比吝啬在校园里的每一次出现……那个时候的自己又会是什么样子呢?是心怀坎坷强装着老成地给学弟学妹们分享经验,把几年的学习工作游玩经历打包作程式化的三言两语给他们增添未来道路上的曙光;是混迹在跳骚市场,粗枝大叶地清理出曾经视若珍宝的物件连同记忆一起贩卖;还是依旧想要做一个静好的女子,悠忘岁月赖群书……
+
+雨帆你一直都不愿我去过多地猜想我们以后的样子。只是,我活在这个时间的维度里,无法像你一样释然地去看待我们在岁月里的痕迹。于是,我止不住地遐想,猜想着会在哪一天遇见未知的自己。
+
+然后在去图书馆还书的路上遇见一群可爱的中学生由老师引导着来来去去,其中不乏一些巴巴张望着路上学子的眼睛。我想,他们是不是怀揣着无数关于未来象牙塔的斑斓梦想?而旁边,是忙着毕业留影的学长。学士服里的祭奠情结即将把他们的大学时光裹挟而去,融入未知的现实社会。在憧憬进入和行着离开的交接里我看到了一座亘古的围城……
+
+只是,我自己身在其中,不曾想过要抽离,因为一直相信着“生命贵在经历”的言语。在这个收获的九月里,即使受着委屈招着埋怨,细细想来却也无悔。于是就慢慢学会了受着刺激说着“不负厚望”的话,然后在这纷繁交错的人事里记着要淡定,抓紧仅有的时光际遇,以此来纪念那些流过的眼泪、受过的委屈以及被无私给予的力量。
+
+在命运的广场中央,我要想今天一样,笑着奔跑。说一声:“明天,你好!”
+
+——var /云儿
+
+![月季花开](https://cat.yufan.me/cats/011034TqA.jpg)
diff --git a/source/_posts/2012-09-28.md b/source/_posts/2012-09-28.md
new file mode 100644
index 0000000..f7b038d
--- /dev/null
+++ b/source/_posts/2012-09-28.md
@@ -0,0 +1,44 @@
+---
+title: 喜欢的感觉
+tags:
+ - 爱
+ - 眼泪
+categories: 文章
+permalink: the-feeling-of-love
+featureImage: https://cat.yufan.me/cats/011016UKD.jpg
+id: 86
+updated: '2015-04-16 04:48:55'
+date: 2012-09-28 02:39:05
+---
+
+人活着是不是会有很多来不及。比如,
+说一句未说出口的话
+对一个来不及的人。
+
+
+
+有一次约你出来,然后你问我找你干嘛。
+我……我半天说不出来
+其实我只是突然觉得,如果明天是世界末日的话怎么办,然后就把你约出来,见一面。
+
+送你离开,想抱抱你。
+但觉得现在抱了的话,以后怎么办?
+还是算了吧。
+
+我喜欢每次去找你的时候的自己,
+因为要反复考虑,挣扎很久。
+像虐待即将渴死的鱼,一点一点,终于要受不了。
+
+我也不想喜欢一个人喜欢得那么累。
+我一直不能放弃你。
+是因为,我真的没办法接受,别人陪在你左右。
+
+如果在我的生命中真的有一个你。
+那么,可不可以,请你,早点出现。
+我不知道你在哪里,但却不会分裂得难受。
+
+如果我去过你曾经住的地方、走过你走的路、看过你看的风景。那,是不是就能离你近一点?
+请原谅我,我真的没有办法不让自己这么说。
+毕竟你一直是,我全部的眼泪。
+
+——2011年3月草长莺飞时的情书 雨帆
diff --git a/source/_posts/2012-09-30.md b/source/_posts/2012-09-30.md
new file mode 100644
index 0000000..33437e0
--- /dev/null
+++ b/source/_posts/2012-09-30.md
@@ -0,0 +1,25 @@
+---
+title: 最喜欢的人,是你
+tags:
+ - 爱情
+categories: 文章
+permalink: i-love-you-forever
+featureImage: https://cat.yufan.me/cats/011006hVT.jpg
+id: 87
+updated: '2015-04-16 04:49:23'
+date: 2012-09-30 19:17:59
+---
+
+当天空出现太阳的时候,就不可能再有月亮的存在。
+
+人生就是一部不可复制的电影,没有后退也没有快进,我最期待的那个结局就在这里,所以我没有任何遗憾。
+
+
+
+你指间的温柔流过我寒冷的心沟,温暖舒适如春季的阳光,你嘴边的微笑穿过我紧闭的心墙,灿烂可爱如春季的花香。舍不得你的手,忘不了你的笑,便选择拉着你的手接受你的笑。
+
+无奈的人生给了我们太多的阴差阳错,无知的未来却可以让我们望而却步,是因为过去和现在让我们失去了追求?但,最终还是遇见了你,最喜欢的人是你,万千个喜欢却不知道怎样说出口,你懂我的心,所以我相信你会明白这所有。
+
+恍如梦境,世间的事太多太复杂太变换,我们总是措手不及然后又被命运安排。谁是赢家呢?不知道,但是我不是输家,因为这是我内心的选择。
+
+最喜欢的人,是你!
diff --git a/source/_posts/2012-10-28.md b/source/_posts/2012-10-28.md
new file mode 100644
index 0000000..d87dad2
--- /dev/null
+++ b/source/_posts/2012-10-28.md
@@ -0,0 +1,39 @@
+---
+title: 香味的记忆
+tags:
+ - 原创
+ - 自然
+ - 香味
+categories: 文章
+permalink: the-memory-of-smell
+featureImage: https://cat.yufan.me/cats/010509rg5.jpg
+id: 88
+updated: '2016-01-12 16:20:09'
+date: 2012-10-28 13:00:16
+---
+
+前些日子在淘宝上买了块手工香皂,洗衣服时无意间弄错了香皂,以至于这些天衣服上总带着股淡香,干净纯洁而又温柔的味道。秋雨初晴的午后和云儿携手行走在校园里,甜韵的檀香混杂着泥土特有的芬芳,空气凉凉的,紧握的手暖暖的。雨后的空气里香味来得分外浓些,嗅在心里绵绵地化不开。云儿笑着说:“这就是恋人间的味道吗?”
+
+一直以来对于香味都有一种特别的追求,我喜欢那种不张扬不呛鼻不浪漫的香味,素雅内敛,就像我们的传统审美,恬淡而深邃。比如腊梅香、茶香、竹香之类的,袅然散发之际,内敛芬芳。
+
+
+
+最怕的是洗发水的味道,同样还有空气清新剂。无论它们的香味是多么的婉约祥和,或是与真实的香味出奇地一致,但总不喜欢那种刻意的感觉。那种煞费苦心使用各种香料、药剂搭配出来的香味,没有了本身自有的源香,反而浓重地有些令人窒息。
+
+表弟晨晨才满月时一家人去探望,到的时候才刚洗完澡,抱过手便闻到一股体香,淡淡的,嫩嫩的,又柔柔的,有一种奶香的甜沁。于是满怀好奇地问了表弟用的沐浴露的牌子,可是买回来用过后,才发现不是沐浴露的味道。那种香味,是婴儿小小的身体所自然散发的、温馨的味道。
+
+![书架](https://cat.yufan.me/cats/010509QpI.jpg)
+
+90年代初时,家具还是要请木匠自制的,当时妈妈的嫁妆便是一整套檀香木打造的家具。衣服在衣橱放久了便会带上一股厚重的木香,那种婉约祥和的香味,自然而然地让人联想到“儒雅”两字。坐在同样是檀香木打造的书架前看书久了,便会喜欢上那股木头的气味,那种既有些香同时又隐藏着无可言说的味道。
+
+而如果问我夏天的味道是什么,我想我能想到的便是竹子的味道。家住皖南,而山区多毛竹,所以一到了夏天满屋飘散的都是新制竹器的清香味,竹凉椅、竹席、竹篮、竹枕席、竹竿……所以家乡有一顺口溜叫:“小时青青腹中空,长大头发蓬蓬松,姐姐撑船不离它,哥哥钓鱼拿手中。”讲的,便是竹子。青涩的竹子最后变黄变得光滑、温润,但仔细抚摸轻嗅还是能品出股先天的内敛秀劲。
+
+暑假和妈妈逛超市的时候看见了竹枕头促销20元,其实也就是竹皮编成的枕头布,里面塞满了废弃的茶梗。舒服谈不上舒服,但那股清香的气味与茶叶的芬芳,让我一闻就走不动路了,立刻买了两只。
+
+买回来还没用多久,茶香和竹香便挥发得所剩无几,只有将鼻子贴上去时才能闻到若有若无的暗香,好生邈远。虽然买的时候已经预料到了这种情况,但香味存留之短还是让人有些埋怨。
+
+想来香味还是自然点的好,缕缕恬淡、见素抱朴。也只有这样的香味让人闻起来,舍不得一下子吸进肺里,要慢慢缓缓地呼吸上一阵。
+
+这,是香在心上的一丝儿。
+
+![Fin](https://cat.yufan.me/cats/010509xPz.jpg)
diff --git a/source/_posts/2012-11-08.md b/source/_posts/2012-11-08.md
new file mode 100644
index 0000000..ba1004f
--- /dev/null
+++ b/source/_posts/2012-11-08.md
@@ -0,0 +1,72 @@
+---
+title: 亦行亦走
+tags:
+ - 原创
+ - 旅行
+ - 记忆
+categories: 文章
+permalink: ccf-meeting
+featureImage: https://cat.yufan.me/cats/010424aXd.jpg
+id: 89
+updated: '2015-04-16 04:50:11'
+date: 2012-11-08 06:33:22
+---
+
+开始读余秋雨的《出走十五年》时还在上高中,学习的枯燥、束缚让我对于旅行有一种近乎本能的渴望。于是大学填志愿时我选择了与厦门相隔大半个中国的济南,从遥远的南海之城远行千里来到这北国之都。
+
+往返的次数多了,也就腻了,没有什么新奇可言。无非就是这些,蹉跎也好,枯燥也罢,都只是一种意味,一样的色彩。
+
+不知从何时起,开始习惯一个人旅行、一个人行走,习惯在短暂的行程中做一个寂寞的人,恋上这种单纯与简单的旅程。或许是厌倦了繁华世态,内心更加坚决地想要拥有一份安静与纯粹。
+
+
+
+时常会想,自己喜欢的究竟是旅行的过程,还是那未知目的地的暂留。千帆过尽,回首当年,那份年少时志在行走的梦想已经消失殆尽。渐渐迷恋上的是一种不愠不火的生活,不奢求多少爱,也不会有多少怨,无论快乐与否,都要笑着面对。
+
+那,为什么内心愈加的空落?
+
+想来我还是没能忘记,或者说那种感觉深藏于心,对于旅行目的地到达的惊喜和期待一直伴随着我。直到今天,我还可以细数才到济南时的百感交集,那是生命中不可或缺的感触。
+
+而现在,我将讲述的将会是另一个关于旅行的故事……
+
+——引子
+![旅程](https://cat.yufan.me/cats/010429n1g.jpg)
+
+金秋十月,伴着梧桐落叶的簌簌声,我参加了山大软件学院组织的2010级学生大连实训活动。如今回想,收获颇丰,良多感触。
+
+迎接着清晨的第一缕曙光,我踏上了开往大连的长途客车,窗外的天起初还是灰蒙蒙的,像极了此刻我迷茫的心情。渐渐地,天亮了,随着旅途的的推进,外面有时是一望无际的盐滩,有时是连绵的山丘,有时是望不到边际的平原。漫长的路途让人寂寞乏味,但车厢内同学们的欢声笑语总让人莫名的心安。
+
+![东软](https://cat.yufan.me/cats/0104300Fj.jpg)
+
+出发19个小时后我们来到了未来五天的宿营地,大连河口软件园。和班级大多数同学所不同的是,我们分配到的宿舍是和东软的三个员工住在一起的。虽然到宿舍的时候已经是子夜时分,但是那三位大哥哥们都还没有入睡,简单的交流了一会后便分别道了晚安。
+
+不知怎么的,夜里总是无法入睡,侧趴在床上,望着窗外黑漆漆的夜,心中想的更多是未来三天的猜想。是期待?还是害怕?可是,这又有什么关系呢?既然选择了的远方,便只顾风雨兼程。
+
+![CNCC](https://cat.yufan.me/cats/010430kMU.jpg)
+
+18号一早天还未亮我们便开始了集合,夜里的失眠让早起的我有些昏沉沉的,但陌生城市的新鲜、兴奋让我忘记了疲劳。9点,我们来到了大连世界博览广场,由于时间紧迫,我们还没看清路就被引导员匆匆带进会场。(后来才知道会场的工作人员全是大连大学的学生志愿者,笑)今天我们参加的大会是由CCF中国计算机协会联合大连大学、大连市政府举办的CNCC(China National Computer Congress)2012 中国计算机大会。进入会场时前台的大屏幕上循环播放着大连大学的宣传片,但其实内心还是瞧不起大连大学的说,笑╮(╯▽╰)╭。
+
+待参会人员全部入场后,期待已久的计算机大会便正式开始了。我该怎么评价呢?整个大会气氛热烈,与会人员空前高涨,大家在此学习到了许多东西,那是骗人的。9:00~9:42中的开幕式毫无任何价值可言,一言以概之——中国特色。充其量就是认识了协会的几位主要人员,几位政局的牛B人士,ACM的两位主席候选人。
+
+随后的大会特邀报告受益颇丰,但也局限于前两个。由1994年图灵奖获得者、美国卡耐基梅隆大学计算机学院教授 Raj Reddy 做的关于 Educating a Child Machine : The Unfinished Agenda of Human-level AI 人工智能方面的报告。
+
+![证件](https://cat.yufan.me/cats/010435lG5.jpg)
+
+才听这个报告的时候我是有点不屑的,因为到目前为止以现有的计算机体系结构都无法实现随机数生成。但 Raj 教授从图灵机开始,以人脑学习过程、结构类比的报告给我们展开了人工智能的另一个新方向——混合智能。目前所谓的人工智能的成果,大都得益于信息存储、统计推理、决策模型一级数值计算方面的研究进展。但就模拟人类思维过程和智能行为这两个具有里程碑意义的智能属性而言,仍然缺乏突破性科学技术成果。Raj 教授从生物脑模型为基础,阐述了计算机学科目前正以神经学为基础构建只能计算机系统。由此,此行最大的收获也就是对于生物脑信息感知方面的内容。
+
+![证件](https://cat.yufan.me/cats/0104351QA.jpg)
+
+第二个报告开始之前是长达半个小时的休息时间,单我的问题是,为什么在这个时候大家都走了,只剩下不到百人?说好的组织到11点呢?第二个报告是香港中文大学的常务副校长华云生做的关于网络多媒体的传播的讲座:Joint Optimization of Video and Audio Quality For Real-Time Video Conferencing. 华校长一口流利的英语让人印象深刻,不韦的说整个并没有多少学习的东西,只是介绍了以抓包和钩子函数方式对网络IM聊天工具不同带宽下的通信测试,最后人为计算出延迟数的设定来优化通话质量。由于华校长的演讲技术过人(讲得很快、中文很烂、听不清楚)大体上了解的就这些。
+
+第三个报告本来应该由王坚(阿里巴巴的首席技术官)做的,但是由于行程安排的原因临时换了人,结果很水,只能说是变相的阿里云广告。但收获也有,就是一直很时髦的云充其量也就是一个数据中心,云计算的说法也只是一种包装。
+
+随后上午的大会便这番丑陋地结束了,很遗憾,我这个穷学生无法在会场附近找到任何一家消费得起的地方。坐了十分钟的公交车晃晃悠悠地来到大连大学城吃了顿自助,真贵!
+
+下午的专题论坛专门去听了高性能计算的部分,到的时候浪潮的高级副总裁王思东老师正在讲述高效能计算机架构应用与创新。说实话,就是变相推销他的服务器的。系统软件论坛中关于淘宝架构的介绍,展现了给予开源软件构件的淘宝帝国。
+
+![代金券](https://cat.yufan.me/cats/010435w5s.jpg)
+
+之后便去看了看科技成果展,个人觉得有一种作秀的嫌疑,区区56个展位中,大连大学独占50~56号展位,是因为大连大学出钱协办吗?所谓的展览中,最吸引我的还是阿里云的展位。以前试用过一些云主机,但对于阿里云的了解,还是第一次。阿里云的技术总监林晨曦先生对我详细介绍了阿里云现有的经营项目,对我提出的阿里云为什么不做云分发(CDN)的问题做了解释,就是小客户赚不了钱,专门内部为大客户提供而已。最让我惊喜的是场中的一位阿里云的老总还送了我一张一个月的阿里云代金券(好激动)。
+
+随后两天的行程都是游玩,现在大都记不清了……
+
+回济南的路上窗外一直下着大雨,猛然间,感觉像是做了一场梦。
diff --git a/source/_posts/2012-11-11.md b/source/_posts/2012-11-11.md
new file mode 100644
index 0000000..761217a
--- /dev/null
+++ b/source/_posts/2012-11-11.md
@@ -0,0 +1,26 @@
+---
+title: 樱花烂漫
+tags:
+ - 动漫
+ - 小樱
+categories: 文章
+permalink: cherry-blossoms
+featureImage: https://cat.yufan.me/cats/010329d78.jpg
+id: 90
+updated: '2015-04-16 04:50:28'
+date: 2012-11-11 19:20:26
+---
+
+总有很多事情是我们所不知道的,或早已经忘记的。也许它们并没有被忘记,只是遗留在记忆深处罢了。
+
+就像我这个90初的人,关于童年的动漫记忆,不过就是寥寥几部而已。不过,就是这寥寥几部动漫。却在童年这个珍贵而短暂的人生跨度上,划过一条条美丽的星辉。若是给每个动漫加上一个标签,我想《龙珠》会是热血,《Touch》将是青涩,《名侦探柯南》是智慧,《足球小将》是拼搏,还有就是本文的主题《魔卡少女樱》则是魔幻。我们的魔法记忆,从这里延伸。
+
+
+
+CLAMP为我们带来的想象,在每一集都是不同的。不同的库洛牌,不同的小樱装,不同的魔法。不过,一样的是小樱那樱花般的笑容和她华丽的变身。在小樱的魔法世界里,我们沉醉,我们翘首以盼,下一集的精彩。
+
+在我看来,小樱的世界,魔法不是全部,也许只是次要的。它不过是一个载体,承载着小樱与家人的亲情,小樱无伙伴的友谊,小樱和小狼的爱情。不仅仅是无尽的魔法,还有纯真的愿望。这些所有的美好,在星之杖击触库洛牌时被完美释放,在CLAMP的大姐姐们的温柔笔触间尽现纸上。如果说,看似冷饭再炒的《翼·年代记》是CLAMP展现给年轻一代的一种世界价值观。那么,《魔卡少女樱》就是CLAMP奉献给我们的最为纯净的美好愿望。
+
+请记住那个穿着水手服、脚踩轮滑鞋的女孩,记住那樱花般境遇里同她的邂逅。
+
+樱花烂漫里,我们的故事才刚刚开始……
diff --git a/source/_posts/2012-11-15.md b/source/_posts/2012-11-15.md
new file mode 100644
index 0000000..ad24967
--- /dev/null
+++ b/source/_posts/2012-11-15.md
@@ -0,0 +1,37 @@
+---
+title: 优雅的旧时光
+tags:
+ - 云儿
+ - 原创
+ - 随笔
+categories: 文章
+permalink: the-elegant-past
+featureImage: https://cat.yufan.me/cats/010300jty.jpg
+id: 91
+updated: '2015-04-16 04:51:09'
+date: 2012-11-15 18:18:45
+---
+
+周一晚上,考完经济双学位考试后在回软件园的公交车上睡着了。
+
+被雨帆打来的电话吵醒时,正好眼睁睁地看着错过了要下车的站点坐到了齐鲁软件园站,想来长达半个小时的车程怎么每次都睡得这么深沉呢?下车的时候已经是夜里九点,但幸好只错过一站,思前想后决定走回去。深秋的济南才下了场雨,夜里独自走在人烟稀少的人行道上时总感觉空气那么的湿冷。身边偶尔擦身而过的情侣提醒着我的孤单,让我不由得回想起才刚刚过去的夏天,一如既往的思念弥漫的季节。我想,那时的你也许和我一样,一个人走在回家的路上,怀念着我们在一起收割的旧时光。又或许,不会……
+
+
+
+一个人的时候,总是羡慕那些在风雨中相伴漫步的情侣,羡慕那些在长椅上温柔依偎的恋人,更羡慕像父母一样提篮买菜的老夫老妻。在当今通信如此便捷的年代,我不知道为什么总是满怀这么多的想念。
+
+曾几何时,我也做过那柔情的人儿,为花开低眉,为云朵驻足,为萌芽而感动。我将一切的思绪埋藏在阁楼的笔记本里,用满是华丽的词藻去替代细腻的感触。这世间的女子我想都有过相似的优雅,素然却令人心动,回首间让人有了种不敢轻触的美好。
+
+周三的上午没有课,一个人在寝室听了一个早上的广播剧《致我们终将逝去的青春》。辛夷坞用满怀温情的笔触写着:“青春是就是用来追忆。当你怀揣着它时,它一文不值。只有将它耗尽后,再回过头看,一切才有意义。爱过我们和伤害过我们的人都是我们青春存在的意义。”想起某次在淘宝上看到一位同龄人将自己二十岁的身体拍照做成明信片纪念,似乎年轻的美好在那个时候统统凝结——永远年轻的二十岁。
+
+听着广播剧,看着人人上大家状态,发现失恋很久的闺蜜写道:越来越爱。我替她高兴,因为她终于找到了自己喜欢的人。我一直坚信着,善良美好的孩子,怎么会不幸福?
+
+ 妈妈说过女孩子要开朗、要坚强、要温柔、要活泼,要相信美好,要带着一点纯真而活。仰起头看着阳台外枯萎的梧桐叶摇摇欲坠,细碎的阳光透过叶隙散落在我的眉角,我习惯性地打了一个大大的喷嚏。时间素淡如水地流逝,简单就是最好的日子。就像现在,一个人在宿舍,听着QQ语音里雨帆的絮叨声,写下这些字,回忆才刚刚过去的些许小事。内心淡然安稳,但还没到万事波澜不惊的境地,只是这样也没关系。活着,何必费心于计较心情,想着天天可以遇到好事情。
+
+但其实每个人都明白,人生没有绝对的一帆风顺,既然我们都只是过客,为何不携一颗从容恬淡的心,走过山重水复的似水年华,笑看风起尘落的人间,许一世安然。淡淡红尘,淡淡心境,淡淡而来,淡淡而走。
+
+优雅的旧时光里,浅笑嫣然。
+
+云儿/文雨帆/审
+
+![葱绿](https://cat.yufan.me/cats/010300YSy.jpg)
diff --git a/source/_posts/2012-11-29.md b/source/_posts/2012-11-29.md
new file mode 100644
index 0000000..9a4be68
--- /dev/null
+++ b/source/_posts/2012-11-29.md
@@ -0,0 +1,34 @@
+---
+title: 一个人的第三年
+tags:
+ - 三年
+ - 孤独
+ - 杂思
+categories: 文章
+permalink: the-third-year-of-loney
+featureImage: https://cat.yufan.me/cats/20130102143411.jpg
+id: 92
+updated: '2015-04-16 04:51:32'
+date: 2012-11-29 06:39:40
+---
+
+>听风者,不听风,只为繁花一落尽,君辞去。
+>望星者,不望星,只为明月一思乡,君欲归。
+
+
+
+偶然间收到高中前女友的QQ消息:“好久不见。”
+
+此时正好是下午,冬日的阳光不是很充足,依然透着股寒意。看到消息的那一刹那,心里茫然间有些恍惚。高中毕业后只身一人来到济南求学,就不再去想起一些人和事,匆匆碌碌地在城市的角落奔走,一直不知道自己在想什么、为什么而忙碌。如果说以前的我追寻的是一个比较遥远的目标,那现在的自己追寻的就只是一个似有若无的影子,明知道已然机会渺茫,却仍然不舍得放弃。只顾仰望着星空的人注定不会留意到自己下一步是否会跨入深渊。
+
+“三年了”,我应道,“真的很难想象,我们竟然有三年没见面了。有时候我会有种错觉,我们现在还在上高中,而这一切都是梦。”
+
+“呵呵”,回复很短,苍白无力,昔日无话不说的好友什么时候连最简单的寒暄都说不出来了?
+
+“分别了这么久,你变了没有?”我的手指在发送键上迟迟没有按下去,最后颓然地删除那一行字叹气。
+
+手中的《读者·原创版》已经是12月,翻开一看,映入眼帘的是“一年过得真快啊!”这是世界上最温暖的一句话,因为它在不同的年份、不同的人、和不同的环境底下反复听到,总难免沾染上人心的温度。这也是世界上最寒冷的一句话,因为它提示着时间的流逝,往昔时光难再。但忽而某日有讯息给自己,或是牵挂的人对自己问一声好,却让自己感动不已,还算没有被人遗忘。就像是心中的那份简单的珍存,顾忌着每一个人的感受,然后仔细认真地回复,又惴惴不安地等待着下一句。有时甚至想把那简单的回复拆分为一撇一捺仔细品味,就像是一种不安,又像是期待。
+
+一个人的时候,容易联想到孤单的滋味。也正如徐思贤写的那样:我们会卸下坚强的外壳,露出那颗也曾有过伤怀的心,想想在记忆中流淌的一些人,一些事。而相聚和离别,仿佛一个转身,一圈接着一圈,连缀成生命的舞蹈。陆陆续续的有人从我们生命里走过,遇见、分开或是最后的相依,这是生活也是无奈的必然。
+
+一个人的第三年,自己对自己说:“不寂寞”。
diff --git a/source/_posts/2012-12-12.md b/source/_posts/2012-12-12.md
new file mode 100644
index 0000000..c999cbd
--- /dev/null
+++ b/source/_posts/2012-12-12.md
@@ -0,0 +1,32 @@
+---
+title: 能不能给我一首歌的时间?
+tags:
+ - 情感
+ - 时光机
+categories: 文章
+permalink: lend-me-more-time
+featureImage: https://cat.yufan.me/cats/0055170eE.jpg
+id: 93
+updated: '2015-04-16 04:52:01'
+date: 2012-12-12 06:36:41
+---
+
+每个人心里,都有着一架钢琴,弹奏着属于自己的乐章。这部乐章,叫做生命。
+
+雪霁,天晴,清晨的校园里朦胧地散发着昨夜的雾气,轻轻走过微湿的路面,看着久违的朝阳,茫然间有了种心痛的体悟。
+
+
+
+就像是某一天,你在书店买了一本书或者是一张CD回家。那本书,翻过几页之后,就一直放在一旁。唱片只听过一次,便不怎么喜欢,于是长久放在抽屉里……
+
+那些没看过的书,没听过的歌静静遗忘在时间的角落.直到某一天,偶尔间你在书架上发现了这本书,一看之下,竟有种相见恨晚的感觉。这么好的书,为何当初你会忘记它的存在?如果早一点看到,你的境界也许和现在不一样。然后,某个舒适的午后,你打开唱片架,无意中看到那张只听过一次的CD,你再次把它播出来,那动人的旋律和歌词竟使你震撼,原来你一直错过着这么好的歌。那时。为什么会不喜欢?
+
+一生中每个人总会有一、两本忘记了的书或一张没印象的唱片,时光流逝。偶然再会,才会懊悔自己曾错过了本好书,晚遇了首好歌。但也许,那不是遗忘,而是时间不对。第一次听那首歌的时候,它不能触动你心灵,因为大家心境不同。那本书无法让你惊讶,只因为当时你还没有那份阅历。
+
+等待下一次的遇见,换个心态来看书,也意味着换个角度来生活。生活,本来就不该疲于奔命……有时候,一段属于自己的午后时光,一杯香茗或是咖啡,再加上一两本久置书架上的书。这,也可以是生活的全部。只是,一切仿佛已经渐行渐远,就像是很久以前某个时候听到的某段旋律,寻觅许久却终究仿若一场梦。
+
+这个世界上,最无奈的东西恐怕就是时间了。不知不觉间,它便悄悄地远逝、流逝了,好像从来没有发生过一样。只是未来在我们身边的人,一直都在等待着,等着恰当的时光遇见,时间到了,你便会遇见并爱上他(她)。
+
+时光机,能不能再给我一首歌的时间?
+
+![遇见,一辈子](https://cat.yufan.me/cats/005517Vev.jpg)
diff --git a/source/_posts/2012-12-15.md b/source/_posts/2012-12-15.md
new file mode 100644
index 0000000..5dcbdc4
--- /dev/null
+++ b/source/_posts/2012-12-15.md
@@ -0,0 +1,37 @@
+---
+title: 男孩子的秘密心事
+tags:
+ - 心事
+ - 秘密
+categories: 文章
+permalink: secret-of-boys-mind
+featureImage: https://cat.yufan.me/cats/20130102143149.jpg
+id: 94
+updated: '2015-12-15 23:50:01'
+date: 2012-12-15 06:53:58
+---
+
+我来不及年轻,待明白过来时,只能选择认真地老去。——三毛
+
+暑假回老家时被外婆叫去收拾堂屋里的东西,这才想起当年由于老家房屋拆迁改建,很多不需要的东西统统收拾到外婆这儿。虽然都是童年时最为宝贵的记忆,但过了这么久了,很多物件都变得支离破碎,情感也淡了很多。我象征性地翻箱倒柜出一个看起来包装还不算太坏的小盒子,嬉皮笑脸地对外婆说:“剩下的您先帮我收着啦!”
+
+回到家正好家里没人,我轻轻在地阳台上打开盒子,扑面而来的是簌簌飞舞的灰尘。盒子里面装着的,只有厚厚的一沓日记本、几张写好但从未寄出去的信笺、过生日的时候为数不多的几个好友送我的贺卡……时间的流逝让它们变得泛黄、脆弱,我不得不盘腿坐下,小心略带颤抖地翻开这些纸张。这些本来就属于我的东西,却因时间的包裹而充满了未知的神秘与兴奋。我像是一头闯进了某个被秘密包裹的内心世界,好奇又满怀怀旧地审阅另一个真实的自我,情绪略微妙。
+
+
+
+>“那么以前雨帆有喜欢的女生吗?”
+>“会不会是从来都没谈过恋爱吧。”
+>“你们知道吗,我上次还看见雨帆偷偷看梁萱姣看了好久哦。”
+>“你们这群混蛋,别不知道乱讲好不好。”(°ω°〃)
+
+喜欢过谁?对于现在的我可能悲哀的连名字都记不清了,倒只剩下几个模糊的面孔和一张泛黄发霉的毕业照。过去门廊下摩摩挲挲扑腾打闹的日子一去不复返,猛然间回忆起时倒是饶婧璐的样子白皙明媚起来。中等个子,齐耳短发,笑起来时眼睛总会眯成一条缝……记得当时上小学二年级的我曾惊世骇俗地写过封情书给她,只是后来被人告发。而父母也对此一直惊叹不已。(耻ずかしい)以至于才上大学时每次打电话,我那腹黑的老爸便会调侃我说:“怎么还没找到女朋友啊?你不是当年才9岁就会写情书追人家女孩子了吗?”(╮(╯▽╰)╭)
+
+关于男孩子的秘密,兴许没有多么的羞于启齿。只是那样青春萌动的年纪里,对于异性向往总是让人暗生情愫。女孩与男孩所不同的曼妙身材、柔软的手指、白皙的皮肤、莺莺的声线……统统构成了男孩子心里的一份柔软的梦。有时班里男生私下讨论着女生,一看见有女生走过来了,便会将食指放在唇间悄悄说:“嘘……女生来了”然后装作一本正经的样子,用眼角的余光偷偷地看女生。现在回忆起来,总是有种忐忑、紧张、酸涩与味苦的味道吧。
+
+成长究竟是不是一件美好的事情呢?我不知道。我只记得当年偷偷把情书夹在心仪的女生书本里时的慌乱,悄悄在书缝间偷看女生春光时的羞涩。现在的我,也许早已脱离了当年的“纯洁”,我可以脸不红心不跳地和云儿的女伴插科打诨。昔日喜欢的女生也早就在人人上开辟了情侣空间……
+
+当我再一次触及那些少年心事时,却没有疯狂的伤感,没有想哭的冲动,就像是听邻家女孩讲故事般平静。作为朋友,似乎微微遗憾;作成恋人,却默默地怯然了。
+
+原来,那时的情感是假的;而写了未送的信,是真的。
+
+男孩心事,你懂几许?
diff --git a/source/_posts/2013-01-02.md b/source/_posts/2013-01-02.md
new file mode 100644
index 0000000..5288516
--- /dev/null
+++ b/source/_posts/2013-01-02.md
@@ -0,0 +1,42 @@
+---
+title: 笔耕不辍
+tags:
+ - 总结
+ - 笔耕不辍
+categories: 文章
+permalink: never-stop-writing
+featureImage: https://cat.yufan.me/cats/20130101194527.jpg
+id: 95
+updated: '2016-01-12 16:15:46'
+date: 2013-01-02 07:02:31
+---
+
+## Part 1
+
+从来没有奢望过自己写的东西能有多少人来阅读。
+
+年末的济南的天空依旧那么干冷,路面上还残留着4天前下了未化的厚厚积雪,透着股寒气直逼心底。住在温暖如春的厦门多年,突然在一个充满寒意的地方度过圣诞节和新年,这种经历,即使已经是第三次了,也让人一直觉得很奇妙。总觉得很多东西都消失了,然后又多了很多莫名其妙的东西。就像是一直朝着南北方向睡觉,某一天要睡到东西向的床上一样。但是,不管怎么说,日子总是要过下去。
+
+
+
+12月的济南过得有些慢,有些忙碌,大大小小的考试铺天盖地而来。IBM DB2认证、六级、Web技术考得让人心力交瘁,总期待着时间过得再快一点、再快一点,头大的考试周快点过去。猛然间回头看看自己的记录,才发现自己离最初的梦想越来越远。
+
+已经多久没有写博了呢?
+
+回想起自己写博客的初衷,只是为了记录、生活、回忆。记得第一次发布博文的那个下午,阳光透过榕树的枝叶和胡须将时光和扁圆的光斑一起印在我的身上。[小C的微笑](http://yufan.me/blue-turkey/ "蓝色土耳其"),期待[三角梅开花](http://yufan.me/bougainvillea-spectabilis-willd/ "揽月楼前的三角梅开花了吗?")的那个下午,[男孩子的秘密与爱情](http://yufan.me/secret-of-boys-mind/ "男孩子的秘密心事")……这些真实的细节虽然在时间的纽带中拧乱了顺序,但依旧如同那些梧桐树下的光斑,模糊而并不微弱,光芒不减。
+
+写博两年,过去的许多写作时的记忆还一直存留在心里。自从高中毕业、离别、昔日的女友成了路人、遇见云儿、认识了一群相仿的博友,那些感动过我的记忆细节,突然又在脑海中鲜活起来,我想我可以写出它们来了。巧合的是年初在家竟然翻出了高中时的日记本,虽然日记写的不全,但是我相信当年那些脑海中鲜活的人儿,必定会带着光芒在某个地方生活着。
+
+![笔耕不辍02](https://cat.yufan.me/cats/20130101194530.jpg)
+
+## Part 2
+
+每一天都有无数的人涌入这个飞快旋转的城市–带着他们的梦想;每一天,也有无数的人离开这个生硬冷漠的都会–留下他们的眼泪。《小时代》的故事至今仍记忆犹新,少女们那鲜明的个性与思想,都在故事中撒拿着独特的光芒,而他们之间那微妙而又茫然,高于友情又与爱情不同的,另一种方式的重叠……总能让人在不知不觉中就抛开时间的一切烦恼,身临其境一般,渐渐地,缩小心灵的距离。
+
+很羡慕的说,郭敬明写的很好,而自己也一直想要写一篇同样感人的小说。在回家的火车上第一次看《悠久之翼》的时候还在读高二,那时起便有一种愿望,希望能用自己稚嫩的笔触写下这个催人泪下的故事。如今小说匆匆写了开头缺没了后文,不知是少了些心境,还是阅历。
+
+新的一年来了,一年又一年,走过逝去的时光,却无法不让时光流逝。捧起时光的沙漏,心如细沙般柔弱。暮然回首也罢,感慨万千也好,豪言壮志飞扬也罢,我始终只是时光中的一粒沙,朦胧中,静静地把碎碎的字串成一段忧伤而淡然的回忆。
+
+掐指一算,时至今日已经写博一年半载,我或可暂时停笔,但却又却无法决意罢笔、封笔。于是也就如同上学、过假期似地断断续续地笔耕不辍。
+
+![笔耕不辍03](https://cat.yufan.me/cats/20130101194531.jpg)
diff --git a/source/_posts/2013-01-07.md b/source/_posts/2013-01-07.md
new file mode 100644
index 0000000..b4c79df
--- /dev/null
+++ b/source/_posts/2013-01-07.md
@@ -0,0 +1,54 @@
+---
+title: 你若安好,便是晴天
+tags:
+ - 友链
+ - 留言
+categories: 文章
+permalink: review-my-blog-story
+featureImage: https://cat.yufan.me/cats/20130107121715.jpg
+id: 96
+updated: '2015-04-16 04:53:28'
+date: 2013-01-07 20:20:58
+---
+
+## Part 1、留言
+
+耳机里面单曲循环着水中花,曾经,很长的一段时间喜欢听这首歌。
+
+“凄冷风雨中,多少繁华如梦”,一句道出了人生的真谛,淡淡的愁绪如这淡淡的花片,淡雅而平淡。繁华如梦,往昔如何的绚烂,到头来,都如昨夜的轻梦。曾经的万紫千红,却已随风吹落,似水年华流走,不留踪影。以花比人,人似飞花一样绚烂,奈何韶光易逝,丝毫不给你时间挽留。
+
+
+
+那水中的花朵,强要留一抹红,奈何已经辗转在风尘,不再有往日的娇艳。就像博客里的文字,写了又删,删了又写,反复咀嚼的只是那些无人问津的日常。飞花想留住逝去的韶华,但时光却不容飞花的叹求。就像是满留疮痍的留言板,空余丝丝惆怅与寂寥。
+
+纷纷飞花已坠落,往日写博客的深情早已成空。访客匆匆而过,谁又能在此片刻停留?我感怀飘零的花朵,尘世中无从寄托,任那风吹雨打也沉默,仿若我内心真实写照。
+
+草木无情,有时飘零, 人生易老天难老。飞花易逝,岁月无情,有些博客就这么消失了,而又有着新的博主的到来……
+
+人生似飞花匆匆,飞花也有过绚丽。只是,当多年后的你再次看到这些留言时是否能像飞花一样泰然。
+
+![你若安好,便是晴天2](https://cat.yufan.me/cats/20130107121712.jpg)
+
+## Part 2、友链
+
+生活有很多面。经历,遭遇,过去,未来。正发生的,曾经发生的,或即将发生的。感情的迁移,心态的改变,外貌的成熟。这些都是。
+
+而其中,最经常发生。时刻发生的,是相遇与分离。
+
+有些人一辈子只能见一次,有些人见过很多次,却不知道彼此的名字。有些人记住了彼此的名字,而后相忘。有些人无法忘记对方,所以对回忆与过去留下了遗憾。
+
+而其实,博客亦是如此。
+
+对朋友的定义,字面上就已解释的一清二楚。两个月字,朋字何解?不必朝夕相处,而是时常想念。朋友,是一个永远被人不断提起的话题。因为人们的相遇不断。因为我们不断遇到对的人,并愿与之交好。
+
+而其实,友链亦是如此。
+
+写了四年多的博客,重谈友链,感触颇丰。
+
+时至今日,我还能想起第一次去别人博客留言要链接的紧张感。记得当时才写博客,忐忑不安地四处留言求连接。依稀记得小白姐姐很好说话,虽然彼此并不熟悉,但还是和我换了链接。写博的日子长了,链接也就慢慢丰富起来了,也就有了专门的链接页面,专门的分类美化……
+
+倘若要让我给博客一个形象的比喻,我想,应该是月台吧。在古代建筑里,月台原本是指正房、正殿前没有遮拦的平台,因为视野开阔,正适合凭栏赏月,所以得名。月即思念,登台守望。我相信,彼此交换的链接,就像是这茫茫“网络铁轨”上的一间小站,目睹着来来往往的访客,在此遥望着远方等候博友归来。
+
+无论过了多久,无论白天与黑夜,博客是永恒的长亭,任你来来去去,悲欢离合,它只在那里。不悲,不喜。
+
+我说,我只想做个博客里面的守望者,我会陪你们一起,我们一起守望幸福,等待下一次遇见……
diff --git a/source/_posts/2013-01-10.md b/source/_posts/2013-01-10.md
new file mode 100644
index 0000000..5d53a9b
--- /dev/null
+++ b/source/_posts/2013-01-10.md
@@ -0,0 +1,36 @@
+---
+title: 忧伤的旋律
+tags:
+ - 忧郁
+ - 文字
+ - 杂思
+categories: 文章
+permalink: sad-melody
+featureImage: https://cat.yufan.me/cats/20130109204913.jpg
+id: 97
+updated: '2015-04-16 04:55:03'
+date: 2013-01-10 04:48:26
+---
+
+青春是什么?小四说“青春,是一道明媚的忧伤。”歌德说“无酒而醉才是青春。”不管怎么说,似乎花季的年龄总有点伤春悲秋。
+
+于是,从初中开始喜欢上了那种忧伤的感觉,手抄本里写满的是那唯美的深入人心的字句。看似简单却又支离破碎,让人的思想也濒临奔溃。我喜欢并热爱着这样非主流的思考,看似疯癫却如此恰当,如此忧伤地刺痛着心房。久而久之,我的文字也蒙上了层忧郁的色彩,不明快,看着有些矫情。
+
+
+
+有个朋友告诉我说,一直梦想着做自己喜欢的事情,随心而动。但实则能做到这点之人,少之又少。人的一生中,最后剩下来做自己真正想做之事的时间往往极少。大部分的光阴,我们其实都在被他人意志所挟持,自以为是应付生活之所需,做他人嫁衣而牺牲自己时间,茫然若丧家之犬,追劳累而丢弃享用——所以,每天多争取属于自己的自得其乐,也就是实际的人生意义了。对于我而言,我喜欢着忧郁的文字,喜欢音乐,喜欢行走、不安定。这,便是我生活的意义。开始写博,更多的只是抒发心中满满的莫名愁绪,无论是记事还是回忆,对我来说其实都一样。
+
+于丹曾说过,人会不知不觉地给自己的负面情绪披上一层华丽的外衣,久而久之变成了一种惯性。这种情绪在女精英那里,主要表现为忧伤。在男性那里,主要表现为愤怒。
+
+而很多情歌都在讲述着忧伤的故事,很多小说都在演绎着一个又一个悲欢离合。读《悲伤逆流成河》的时候还在上高中,时隔五年后再来读这本当初让我在被子里哭得稀里哗啦的作品,只感觉索然无味。上网翻看郭敬明的微博,满满的都是小时代开拍电影的消息,意外之余,却少了份期待。
+群里面好多人说:“雨帆,你一定是女生。”(#゚Д゚)ゴルァ!!
+
+咚门说:“语气太沧桑了吧,搞得你好像几十岁了一样。”
+
+是吗?对于我而言,或许本身我已经老了。当初那个喜欢小四的我已经长大了,面对逝去一半的大学生活,已经站在二十岁起点的我深知:忧伤,只是青春里的一道风景线,但不是主旋律。可是,我却又矛盾着,不想停止忧郁心事的写作。我想世界上总有这么一些矛盾,无法解决,存在于自身。生长,生长,生长,直到漫山遍野,直到无处可逃……
+
+而我仅仅知道的是,这世界很大,很大,我们很小,但生命总会在某个时刻召唤我们去实现自己的心愿。或者是透过梦境,或者是一本书、一部电影、一句箴言、一首歌、甚至是一次意外。是否接受,选择在我们。
+
+所以,我来了,选择继续写着那微不足道的忧伤。
+
+![忧伤的文字2](https://cat.yufan.me/cats/20130109204912.jpg)
diff --git a/source/_posts/2013-01-14.md b/source/_posts/2013-01-14.md
new file mode 100644
index 0000000..29766cf
--- /dev/null
+++ b/source/_posts/2013-01-14.md
@@ -0,0 +1,51 @@
+---
+title: 与青春有关的日子
+tags:
+ - 回忆
+ - 杂思
+ - 青春
+categories: 文章
+permalink: when-i-was-young
+featureImage: https://cat.yufan.me/cats/20130113183344.jpg
+id: 98
+updated: '2015-04-16 04:55:43'
+date: 2013-01-14 02:13:57
+---
+
+简单地重温了一遍《与青春有关的日子》,停不住的思绪逐渐泛滥。
+
+还记得大一的时候,没有电脑的我们在床上疯狂地听着晚间电台入眠。回想起来那时候是我大学期间接触音乐最多的时候。
+
+那时候的夜晚,在离家1480公里的济南,一夜又一夜听着熟悉的歌,不同人不同的故事...
+
+后来,偶然间,我发现了电视剧《与青春有关的日子》。那时候的我,第一次触摸到了北方孩子的生活——与江南截然不同的童年。贫,这个字,就是在那时候给了我最权威的演示。
+
+
+
+再后来,生活开始混乱,开始颓废。
+
+还记得2009年5月12日,同学在校内上写了一条状态:愿生者发奋,死者安息。看到这句话,我被感动了。这是纯净而无力的祈愿。心底是柔软的,希望今后所有人都会更好。
+
+那时,我相信着世界会变得更好,所有人都会向着更高的地方迈步。
+
+我认识的一位老师曾经这样对我说过:你不能够保证,你奔跑的方向比现在更高,但是,可以肯定的是,朝着那个方向,你在前进。
+
+我始终没有明白他这句话的用意,却无意中记住了。现在突然想起,开始理解了这句话。当时被感动的我,潜意识地认定,这个社会,还有我自身,都处在仰望的角度。
+
+我是错了吧……
+
+岁月是钝器,砸到身上不会很疼,伤好的过程感受也不会很深刻。然而,有一天,在人生的大道上,回头看那过江之鲫般的人群,才发现,我们缺失了,不够完整了。那缺口不是上帝的青睐,而是受伤的痕迹。爱,无能了。
+
+祈愿也无能。“默哀”,已经失去了那样的心境。不想去安慰受伤的人,不愿意跟艰难生活的人们说“加油”。
+
+不要让人受伤,不要去问:没事吧?与其讨论着低级趣味的话题,与其闲得发慌伤害别人,不如着眼实际,做能做的事,改变可以改变的状况。
+
+只记得在冬夜,在自习室,有了现在的女朋友;
+
+只记得自己的挂科越来越多,开始疏远他人;
+
+只记得自己偶尔打开电台的那一晚,犹豫着又关上;
+
+只记得那些与青春有关的日子,像四散在风中的纸屑,开始交错前进……
+
+![与青春有关的日子02](https://cat.yufan.me/cats/20130113183343.jpg)
diff --git a/source/_posts/2013-01-30.md b/source/_posts/2013-01-30.md
new file mode 100644
index 0000000..fffd6ba
--- /dev/null
+++ b/source/_posts/2013-01-30.md
@@ -0,0 +1,54 @@
+---
+title: 抉择
+tags:
+ - 原创
+ - 梦想
+categories: 文章
+permalink: choices
+featureImage: https://cat.yufan.me/cats/20130129235713.jpg
+id: 99
+updated: '2015-04-16 04:56:10'
+date: 2013-01-30 07:45:13
+---
+
+才上大学时和高中的老同学聊天,他问我:“你现在读哪个大学,什么专业?”我告诉他我现在在山大软院。他倒是惊讶了,“当年高中时你的化学读得那么好,为什么就放弃了呢?”我想了又想,却不知道该如何回答。
+
+“那么当初,为什么那么喜欢化学呢?”
+
+记得读小学的时候,妈妈是水泥厂的化验员,对于化学的兴趣,算起来是从那个时候开始。我至今仍能记得化验室里妈妈往样品里面滴定EDTA时的奇妙颜色反应,一会儿黄,一会儿紫。
+
+于是满怀着对于化学的好奇,从初三开始正式接触化学。那个时候,厦门中考时有一个加分制度,就是竞赛获得省级以上的奖项,中考加10分。当时我们大同中学化学组组长,也就是我的化学老师林舜卿,决定开一个化学竞赛培训课,每个班选3个人进行培训。那时我由于初一在济南读书,学的教材和厦门不同的原因,成绩一直并不是很理想,所以名单中并没有我的名字。我私下找林老师说,我也想参加培训,林老师看了看我半天没说话。而其实连我自己都没有想到,当初鼓起勇气做出的决定会给我的未来带来多大的影响……
+
+
+
+昨晚看WPS Linux版本开发记录时记得有这么一句话:历史总是惊人的巧合,简单的一个抉择往往会有意想不到的结果。对于我而言,应该是一种蜕变的开始。在意外的得到老师的同意后,我便专心投入竞赛的学习中。虽然以现在的观点来看,那两个月只是学了点氧化还原反应,一些简单的焰色基础。但是对于当时的我而言,却是很难的。《启东中学奥赛训练教程:初中化学》这本书有500多页,在短短的一个月备考时间中,不但要补习初一拉下的英语,还要实打实看完这本书。那段日子里,身边一起上辅导班的同学在我眼中都是高高在上的,他们说着我不懂的化学术语、英语。我所能做的,就是低下头默默地看书,有时候夜里惊醒,还会梦见明天就要竞赛的,而该看的书还没看完。
+
+你所浪费的今天,是昨天死去的人奢望的明天;你所厌恶的现在,是未来的你回不去的曾经。
+
+或许是我的努力获得了回报,最后考试出来的结果是省二等奖,虽然这个奖项对于很多人来说微不足道。但是,正是努力的成功让我坚定继续读化学的梦想。人在年轻的时候总会有一个迷茫期,一开始以为自己无所不能,自己可以改变世界,但面对现实的冷峻后却往往会迷茫、怀疑。那个时候,我常常在想,人活这一辈子,其实也很短暂,我活着到底是为什么呢?那时候我的结论就是人活着就是做自己想做的事情,学习自己爱学的知识,并将它实践。
+
+于是,才读高中的我更加坚定了学习化学的理想,或者说是一种目标,我喜欢化学,甚至于愿意为它献出一生。于是大一上学期,便去参加了由厦门大学教授在双十中学初中部组织的一周一次的竞赛辅导。说是辅导,其实就是讲大学的化学课,短短的一个上午从8点半讲到11点半,中间不休息。对于一个只有一个高中化学知识的人而言,你很难想象,短短的3个小时时间内,你要记住一个大学生小半个学期学的内容。虽然老师只是蜻蜓点水的授课,但是由于不能拷课件,不能拍照,短短的一个上午,我就要在那疯狂的记笔记,努力地记住任何我能记住的东西。
+
+相比厦门一中、双十的人来说,我又是可怜的,科技中学由于生源较差,一直没有任何内部的竞赛辅导,所以在初三的情况又一次重现。在资料什么都不全的情况下。短短的高一上学期,我便天天通宵地学完了高中三年的化学知识。如果有人在那时问我,你学这么多为了啥,高中竞赛保送的资格那么渺茫。我想,当时的我也许只会说,我喜欢化学。
+
+没错,我喜欢化学,正是这么简单的理由伴随了我高中三年。三年中读完了多少很多化学专业的本科生都不一定能读完书籍,我已经记不清楚了,手中的化学笔记摞起来也有半米多高。那时我不知道自己为什么还要坚持下去,也不知道为什么还要支撑着麻痹的头脑继续去背那些概念,我只知道必需走下去。佛家反对执着,但是有许多时候我必需用执着来做生命的支点,不然的话我实在怕突来的空虚会让我无措。我怕迷路,更怕迷茫。但是,这一切都过去了……
+
+当时竞赛的结果很出人意料,我拿到了省一等奖,进入了省队,但是由于老师忘记通知,我竟然错过了省队的冬令营。那个时候摆在我面前的只有一条路,和广大苦苦拼搏的高三学子一样的路——高考。老爸当时对我说,既然没法竞赛,你就给我把那些书籍丢掉,专心读书,学这些东西有什么用,能上大学吗?能找到工作吗?能赚钱养活自己吗?
+
+记得当时的我哭了很久,面对失败,我并不伤心,因为已经有了心理准备。但是与机会错过,就算是今天的我想起来都有一种深深的惋惜感。当时的我一狠心,将全部的书籍和笔记送给了教我化学的倪瑞琴老师,老师问我为什么,我笑着说自己已经用不着了。
+
+时光过得飞快,半年后我高考了,半个月后高考成绩也出来了……
+
+622分,这个成绩在一本线里面高不成低不就,以当年的安徽成绩排名,也就是4000名的样子。当时填写志愿的时候对于我而言是一种抉择。是否继续选择化学?To be, or not to be - that is the question. 最后的结果是我向现实妥协,经过化学竞赛后,我懂得,很多时候,现实比梦想要来得重要。你可以选择自己的梦想,但是前提是你要能“活下去”。我不知道学习化学的出路在哪,我的家庭并不是那么富裕,相比大多数人来说我需要面对更加残酷的现实——你需要工作谋生。当初年轻时候的化学梦想太过于渺茫,太过于脆弱,我不知道未来只会化学而连基本的交际都不会的我该如何生存!
+
+也许,从把自己的一切送给老师的时候起,我便选择了放弃……
+
+前些天重温《那些年》的时候,看到柯景腾霸气的说道:你信不信十年后我连log都不知道是什么,我一样可以活的好好的。不知怎么得,竟看得热泪盈眶。
+
+走在高楼林立、人流如潮的都市,我为自己惋惜。当年少的追逐和年轻的梦想都被曾经的轻狂掩盖,被岁月的洪流洗成苍白,我能做的也只有托着无觉的肢体,在倪虹闪烁与灯红酒绿中徘徊。我来自何方又要归于何处呢?头顶的天空依然宽广,但是面对外面的车水马龙,我只觉得无措。
+
+对于生活我还有太多未知,也有太多迷茫,也许沙漠中不会有绿洲出现,但是我仍旧期待明明天的阳光……
+
+>感谢您看了我的废话这么久,谢谢。
+
+![](https://cat.yufan.me/cats/20130129235710.jpg)
diff --git a/source/_posts/2013-02-01.md b/source/_posts/2013-02-01.md
new file mode 100644
index 0000000..cefc74b
--- /dev/null
+++ b/source/_posts/2013-02-01.md
@@ -0,0 +1,33 @@
+---
+title: 温情
+tags:
+ - 原创
+ - 家人
+ - 温情
+categories: 文章
+permalink: tender-feeling
+featureImage: https://cat.yufan.me/cats/20130131214003.jpg
+id: 100
+updated: '2015-04-16 04:56:37'
+date: 2013-02-01 08:00:42
+---
+
+“你出生的时候才这么大,不足一尺。”老爸在那里形象地比划着,“当时没有保温箱,你的身体冰凉的,我一手把你夹在胳肢窝里,拿被子捂着。怕给你闷坏了,过一会还凑过去听听,嗯,还有呼吸,继续捂着,这样子才把你身体给你弄暖和了。”这时,一旁的老妈幸灾乐祸地说:“老猪(我妈对于老爸的雅称),你怎么不说你年轻的时候狐臭味那么重。儿呀,你就是闻你老爸的狐臭味长大的。”(#゚Д゚)ゴルァ!!纳呢?
+
+
+
+双休日的午后,爸爸妈妈都休息在家,看着爸爸妈妈在那里互相调侃对方,一股久违的温暖在心中蔓延开来。将近三年的大学生活让我与父母呆在一起的日子只剩下了寒暑假,也许正因为聚在一起的时间少了,我才越发地贪恋和父母在一起的日子。
+
+记得小时候,老妈最爱开的玩笑就是:孩子啊,你不是我亲生的,你是我从垃圾堆里捡过来的。我不信,老妈便说:“你看看你,不像爸爸,也不像妈妈,别的孩子哪个不像父母的?”那个时候,我就会在家门口哇哇大哭,然后哭着要去找自己的亲生妈妈。
+
+大了一点识字之后,老妈继续骗我,儿呀,你真不是我亲生的哦。我说:“不可能,抽屉里面的《独生子女光荣证》写的是你和爸爸的名字。”“那个是假的。”“那我的准生证怎么解释?”“那个是补办的”,老妈腹黑地说道,“捡你的时候正好是3月18号,所以带你就去办了准生证,别的小孩子都是没出生就有证了,不信你看准生证时间是不是3月18号。”
+
+我半信半疑地一看,果然是,结果又去门口哇哇大哭去了,久了,我也就真的信了妈妈的话。那个时候家里比较穷,住的是平房,买不起好吃的、好玩的。每次我羡慕别的小孩的时候,我便幻想着某一天我的亲生父母会衣着光鲜地来到我的面前,对我说:“儿呀,爸妈终于找到你了。”然后,我会有好多好多我想要的东西。可是,长大后我与老爸越来越像的嘴脸让我的梦想砰然破灭。直到某一天,我把这段故事讲给爸妈听的时候,他们也哭笑不得。
+
+也不知是不是由于老爸工作频繁变动,我与父母离多聚少的原因,我很喜欢和爸妈聊天、说笑。一顿饭,如果在学校吃的话只需要十分钟解决。可是回到家里后,一顿晚饭,往往要吃半个多小时,吵着笑个不停。记得大学才开始的时候,偶然间在宿舍接了个电话和爸爸聊了半个小时后,舍友惊讶地调侃我:“雨帆,你妈妈是不是把你当闺女养了?”(°ω°〃)
+
+关于与父母在一起的温馨话题,总是多得讲也讲不完。有时候我会想,关于我的家,一切的一切,也许就只是我在漫长人生里的一个梦。只是我在梦里,悄悄地喜欢上同父母聚在一起。就像是某一天,在洒满阳光的午后,用慵懒的心情,看着老爸对我说:“当年要不是我拽着你妈的手,你就被你妈用拳头捶死了。”然后老妈便会说:“乱讲什么,那个时候我只是腰疼,在捶腰。”然后,只是因为看到父母嘴角上扬的笑,就傻乎乎的开心起来。
+
+对于家庭,每个人都有每个人的定义。我想,对于我而言,有父母的地方便是我的家。那种温馨的感觉,无法被替代。
+
+>PS. 新的一年即将来临,也祝愿各位博友能和父母在一起,过个团圆年。
diff --git a/source/_posts/2013-03-03.md b/source/_posts/2013-03-03.md
new file mode 100644
index 0000000..7cc6b0a
--- /dev/null
+++ b/source/_posts/2013-03-03.md
@@ -0,0 +1,34 @@
+---
+title: 灰色头像
+tags:
+ - 原创
+ - 爱情
+categories: 文章
+permalink: gray-avatar
+featureImage: https://cat.yufan.me/cats/20130302161515.jpg
+id: 101
+updated: '2015-04-16 04:56:58'
+date: 2013-03-03 00:25:07
+---
+
+爱情,对于雨帆来说,一直是难以企及的奢侈品。
+
+这些天一个人在家时,总是有些寂寞。不知道是由于不准备考研和云儿闹翻后的自责,还是放假分别后的孤单,不由自主地开始想起一些人,怀念起一些事。一个人深夜里登上雪藏两年的QQ,看着一排排熟悉的头像,熟悉的昵称,猛然间看见名为老婆的头像,却怎么的也翻不下去了……
+
+
+
+点开聊天窗口,又关闭,心有千言万语凝噎在喉间,却连简单的一句问好都不敢说出。我怕一说出口,就是永久,QQ里就是迟迟未亮的灰色头像。才上大学时我们约好的要坚守到毕业呢?我说,绍君,你要等我啊,等我毕了业,找到工作,我们就结婚,生两个孩子。可是,为什么我们之间的话越来越少,越来越简短。有时候我拨通电话,通后彼此却都不知道说什么好,话筒里是那么凝重的沉默,最后只能道一声晚安。
+
+![QQ记录](https://cat.yufan.me/cats/20130302161513.jpg)
+
+>昨夜做了一个梦,梦里我们回到手牵着手。醒来的失落,无法言说。打开了OICQ,聊天记录停步去年的深秋。最后的挽留,没有说出口。我们还是朋友,是那种最遥远的朋友。你给过的温柔,在记录之中全部都保有。
+>
+>你灰色头像不会再跳动,哪怕是一句简单的问候,心贴心的交流,一页页翻阅多难过。又想起你曾说的陪我到最后,暖色的梦变冰凉的枷锁。如果时光倒流,我们又能抓得住什么?
+
+分手时我安慰自己:我的幸福由我自己来定义。一心向着那些看得到的东西挥洒汗水,但是那些看不见的,那些虚无飘渺或是年少梦想的,恍然间发现是我最珍爱的。不想要半吊子,所以才会努力,因为那是看得见的;可是有时因为憧憬那些看不见的东西,被迷惑,而迷失了那些看得见的东西。我甚至不知道此刻我自己前行的动力,是对看得见事物的渴望,还是对看不见事物的依恋。做过很多事与愿违的事情、伤害别人的事情,亦做过很多温暖人心的事情。
+
+于是,以前看得见的东西渐渐地消失了,看不见的却又浮现在眼前。一直以来,奉行着自己的信念,我的幸福,该用我的手,不!只有用我的手来抓住,对于我来说什么是幸福的,我不会让我以外的任何人来决定,然而有时如果继续寻找看不见的东西,继续改变我的世界,或许……所以在那个暑假,我做出了抉择,看不见的东西,果然还是不要看到的好……
+
+世间万物无定形,变化永远比认知来得迅速,感情的滞留永远比变化来的缓慢,认可、被认可,否定、被否定,就这样,遇见了,错过了,珍视了,放下了,看得见的,看不见的。人绝对不会永远停留在相同的场所,不论是一边哭泣也好,大吼大叫也罢,总之是会不断的往前走,有时候我们必须舍弃什么,去选择其他的什么。是的,走着自己的路,迎接充满未知的下一步,又有谁可知前方的道路上,看不见的荆棘密布,看得见的似锦繁花。不过无论怎样那个绝不流泪的誓言,那份义无返顾的坚强,那个曾经的柔软,会一如既往。
+
+>仅以本文纪念那些青春的日子。
diff --git a/source/_posts/2013-03-09.md b/source/_posts/2013-03-09.md
new file mode 100644
index 0000000..53ec894
--- /dev/null
+++ b/source/_posts/2013-03-09.md
@@ -0,0 +1,33 @@
+---
+title: 朴树与花
+tags:
+ - 原创
+ - 朴树
+ - 青春
+categories: 文章
+permalink: pushu-and-his-flower
+featureImage: https://cat.yufan.me/cats/20130308231356.jpg
+id: 102
+updated: '2015-04-16 04:57:21'
+date: 2013-03-09 07:15:11
+---
+
+不知怎么的,这几天听起朴树的《那些花儿》时,总会有一种熟悉的孤独感。3月的济南天渐渐回暖,一个人在宿舍整理文件时发现此曲,思绪不禁回到很久以前……
+
+在虾米上查查时间,《那些花儿》在98年发行,那年我才6岁。正处在看葫芦娃的欢乐年代。我丝毫不懂这个世界原来是会惹人愤怒、无奈、又讨人无限欢喜的。我不懂大人世界的悲伤,不懂爱与被爱的疼痛,年幼的无知尽情在童年里欢乐。那个时候距离我正式听流行歌曲还太久远了。
+
+
+
+直到初一时我才接触到流行音乐,音乐老师教我们唱张雨生的《大海》,给我们放朴树的《那些花儿》。卡带上的他表情是那么的淡定,隐约间透露着股微笑,长发以至于总是看不清脸。当时的我除了欣赏歌声,无法理解歌词的意思,只是喜欢那种慢慢的感觉。那种春末夏初的感觉,热烈,但是不张扬,有着特定的温柔。
+
+时光过得飞快,一转眼7年过去了,而我差不多忘记他。当时的我和大多数的人一样喜欢听周杰伦的歌,喜欢JJ。这大概和性格有关,那时总是肤浅稚嫩地快乐,不思考便不烦恼。一心只想着考大学,哪有时间来听朴树的寂寞和无奈、孤独和幻想?
+
+大一那年的暑假,偶然间在BiliBili上看到《那朵花MAD》时让我再次想起曾经的朴树,那个有着坏坏的笑容的大男生。只是此时的《那些花儿》已经被范玮琪翻唱,高昂深情的歌喉少了朴树版本的那种简单、纯粹。我无法细说我更喜欢朴树的《那些花儿》的哪一点,我只记得听歌时某些相依的情绪。当时的我才经历着与高中女友分手的伤痛,一个下午只是安安静静地单曲循环着这首歌,想着某些过往的人和事,然后微微的心疼,小小地感动,简单地怀念和不舍。那时觉得朴树这首歌有些忧伤,十分符合我分手的心情。
+
+然而你永远不可能在时间里找到个伴儿。真相是:每个人都深藏于日复一日的垒筑的时间轨道。无人能与另一个人公用同一。了不起,有几次彼与此交叉,譬如朋友、同事;最多,有几段并行,譬如夫与妻,父与子。就像是《云图》里讲述的那样:一个人是那么的孤独、渺小,却又了不起地决定着另一个人的孤独图式,跨越身边,跨过时间。我和朴树之间隔着20年的光阴,只是在孤独与孤独之间,有着相似的共鸣。
+
+就这样恍恍惚惚地又过了三年,现在的我再听朴树的花儿,喜欢的是歌声里的那种孤独感,喜欢那种对青春年华逝去的感叹。发觉歌词里的有些事情和自己遇到竟然好像,我们曾经那些,曾经静静为我们开放的花,今天我们已经离去,在人海茫茫。
+
+>他们都老了吧?他们在哪里呀?我们就这样各自奔天涯……
+
+现在的朴树满脸的胡渣,古铜色的皮肤,半隐半现的忧郁。只是在我的脑海里、梦里、歌声里,永远都是当年那个的站在麦田中笑着的他,那副没心没肺的傻样。
diff --git a/source/_posts/2013-03-17.md b/source/_posts/2013-03-17.md
new file mode 100644
index 0000000..8280e85
--- /dev/null
+++ b/source/_posts/2013-03-17.md
@@ -0,0 +1,57 @@
+---
+title: 琐碎
+tags:
+ - 云儿
+ - 原创
+ - 爱情
+categories: 文章
+permalink: trivial-thought
+featureImage: https://cat.yufan.me/cats/20130317015952.jpg
+id: 103
+updated: '2016-02-17 20:03:23'
+date: 2013-03-17 10:04:33
+---
+
+## 任性的我
+
+留了大半年的长发,实在是忍受不了每日的梳洗,年初回家后便决定去剪掉。街角的理发师大爷打理着我的头发,絮絮叨叨地抱怨着都这么长了剪掉多可惜之类的,一如一年前你那一脸惋惜抱怨的眼神。
+
+
+
+>“明明是个女孩子,为什么不愿意留长发呢?多可惜啊!”
+>
+>“我就喜欢短发呀,多清爽。”
+
+然后看着你一幅服了你的表情偷偷开心起来。
+
+而其实,我一直在抽屉的角落里藏着一把檀香木梳,是上大学前妈妈塞在我的行李包里的。母亲说,女孩子嫁了人,绾起长发后,便需要一把梳子,只有心爱的人可以拿这把梳子为其梳发。梳子断了,情也到了尽头,散了。而万千青丝,又有谁能数的清、理得尽、留得住那些琐碎。一如2个月前的争吵,你我彼此第一次红脸。于是,当春节的假期快要来临的时候,你跟着其他的朋友一起,踏上了回家的飞机。没有了彼此间分别时应该有的关心,和期待能再回来的期待。没有了“平安到家后记得打电话”这样的约定,也没有“要吃好睡好,养得胖胖的回来见我”的厚颜无耻。在我的心里,你留下的,只有深不见底,痛彻心扉的悲伤和寂寞。
+
+我不知道我一辈子有多少个10年、20年。我也不清楚在以后的日子里,我们还能坚守多久,留下看起来很小,却无法磨灭的心灵痕迹。突然很是怀念,怀念大三开学时的蒙蒙雨季,你那一身因为弄错洗衣皂的清爽味道。我们牵着手、笑着、调侃着你的马虎,只是心里,却暗暗地喜欢上指尖的那一抹隐约的温柔。
+
+请原谅我的任性,原谅我的懒惰。我想,此时看到这里的你又会露出那副无奈的表情了吧(偷笑)。还有,记得要常常逗逗我,还有,不许在我面前提起别的女孩子。
+
+其实,你一直都知道[那不是洗衣皂](http://yufan.me/1726.html),对吧?
+
+![琐碎](https://cat.yufan.me/cats/20130317015950.jpg)
+
+## 恍如梦境
+
+前年的九月,夏天的尾巴里,天气仍然是那么炎热。我怀揣着无数无法细数的忧心忡忡和在异乡的磨练中变得稍微坚强了的心,再次踏上了回到这个城市的旅途。偶然间你出现在面前的时候,眉眼都带着笑,说:“你好呀,我好像认识你哦,你是学生会的XXX。”我抬头,茫然地回答:你好呀。只是,在我眼中的你只是一个奇怪的路人,是的,只是路人。
+
+我不知道你是不是注意到我无时无刻的任性和骨子里藏不住的寂寞,还是对我的一切都是那么的了解,每晚的自习室总能看见你的背影和你小心到好笑的搭讪。我任性妄为地胡说,你无奈的笑,温柔得似乎一切都可以宽容。
+
+从来没有遇到过如此好脾气的人,我这么想着,这样子简单地度过一天又一天。
+
+之后的日子里,偶尔一起出去玩,偶尔一起吃饭,又偶尔……你带着我,包容着我的任性,小心翼翼地找着相同的话题。渐渐的我发现,这个城市的夏天,不再那么难耐,这个城市的天空,不再灰得那么孤寂和悲伤。这个空荡荡的城市里,渐渐有了让我心跳不已的所谓的“大哥哥”。
+
+不知道是从什么时候起,虽然不肯承认,但是已经心甘情愿地做一只跟在你背后的捣蛋猫。将洗脸的手工皂作为香皂送给你,圣诞节时死皮赖脸地要当一天“大小姐”……所有朋友都说,你们凑一对吧!然后便是我的羞涩,和你煞风景的“她这是在装小姑娘,脸皮薄”。
+
+我想,爱情也许就是这样了吧,简单的梦境,甜美的回忆。
+
+>我不想我不想不想长大,长大后世界就没有花。
+>我不想我不想长大,我宁愿永远都笨又傻。
+>我不想我不想不想长大,长大后就会失去他,我深爱的他……
+
+云儿文,某个大言不惭的人润色,死相。
+
+**注:**本文插图分别由 [overwater](http://overwater.pp.163.com/) 和 [yewei](http://517980284.pp.163.com/)提供,在此注明出处,遵循CC创作共享协议。
diff --git a/source/_posts/2013-04-07.md b/source/_posts/2013-04-07.md
new file mode 100644
index 0000000..036a39f
--- /dev/null
+++ b/source/_posts/2013-04-07.md
@@ -0,0 +1,34 @@
+---
+title: 春日随笔
+tags:
+ - 春天
+ - 杂思
+categories: 文章
+permalink: spring-essay
+featureImage: https://cat.yufan.me/cats/20130322100328.jpg
+id: 104
+updated: '2016-02-17 20:04:27'
+date: 2013-04-07 05:49:27
+---
+
+许多年前,当我还在读老舍《济南的冬天》的时候,着实被他里面的描写所吸引。古老的济南城配上半点烟雪的“水墨画”成了我的一种向往,我在想象着,这,就是济南。
+
+伴随着动画《樱花庄的宠物女孩》的完结,山大软院的樱花也纷纷扬扬地盛开了,粉色的浪漫、樱花树下低头害羞牵手的情侣、伴随着微风洒下的樱花雨构成了一幅唯美的画卷,让人不忍去破坏。
+
+
+
+从小生活在安徽,已经看惯了年年的花开花落,也曾度过烟雨朦胧的春季。我想,兴许在我的记忆里少了点春天的刚毅、凛冽,就像初春的校园,冷风依旧带着股令人瑟瑟寒颤的凉意,而我却莫名地喜悦起来。
+
+清明时分的济南少了诗词里面的“雨纷纷”,在去踏春的公交车上翻看着安意如的《思无邪》。不知怎么的,自从有了电脑和手机,我很少能在嘈杂的环境里看下书去。但这次却不同,不知是不是由于骨子里总有股伤春的文艺情节,身旁几个呜呜呀呀的女伴聊了什么我全然不知道,我只是看着自然平静的文字,品味着作者的风趣,有时竟忍不住地笑。
+
+回过神时车已到站,在云儿喋喋不休的抱怨声中猛然想起《阿勒泰的角落》里常有的一句话——世界与我无关,说给云儿听,她也佯怒地笑起来。对于我而言,其实在意的不是风景,而是一种春季的感受和年轻的美好。就像此刻的我坐在山大中心校区的“小树林”里,看着四周温馨而厚重的学府,看着来来往往的学子寻觅着自己的梦。我喜欢这样一种简单的美好,它让我感到我还年轻,我还有我的未来,可以为之奋斗。
+
+很多这样的时刻,我喜欢一个人走着、思考着、观察着,体味着属于自己的感动。我在寻找,一切都看见了,却又仿佛什么也没看见。此刻的我,对于春天有着无数的感受想要表述,却又不知从何说起。就像是青春的梦,在我的心中是零零碎碎的,只有一个简单的剪影,像是蒙太奇的影像般,触动我、吸引我、萦绕于心中说不出口……
+
+此刻的春天是那样美好,又何必在意那些想不出的体会?忘记了一切,只剩下天的蓝,地的广,什么都不会想,似乎自己也不存在了……
+
+世界与我无关。
+
+![春来草自青(2)](https://cat.yufan.me/cats/20130322100325.jpg)
+
+**注:** 本文插图由 [overwater](http://jzw1945.pp.163.com/)济南老顽童提供,在此注明出处,遵循CC创作共享协议。
diff --git a/source/_posts/2013-04-22.md b/source/_posts/2013-04-22.md
new file mode 100644
index 0000000..f73b579
--- /dev/null
+++ b/source/_posts/2013-04-22.md
@@ -0,0 +1,30 @@
+---
+title: Hello World
+tags:
+ - 杂文
+categories: 文章
+permalink: hello-world
+featureImage: https://cat.yufan.me/cats/ame/1152640029631298679.jpg
+updated: '2016-02-18 20:04:27'
+date: 2013-04-22 21:33:14
+---
+
+所以很高兴我们能够在这里相遇 :)
+
+在网络的大部分角落,我都以id:小雨出现XD。
+
+其他大部分时候的昵称是「雨帆」。其实我在设法思考该取什么昵称的时候,还真的不知道它原来是那么的像一个女孩子的名字= =,我仅仅用的是自己真实的名字……
+
+
+
+而小雨,也就是我的小名,暗指我是下着小雨天来到这个世上。「雨」字仿佛和我的生命结下了缘,简单却将伴随一生。
+
+目前是个学生,同时对互联网颇为感兴趣,专业是软件工程,所以平时更多地会关注这方面的一些信息
+
+喜欢动漫,总是在梦里梦见日本漫天的樱花盛开的样子,只是商务礼仪的老师破坏了我的美梦。(哪有开那么久的樱花,就几天。哪有人会去穿着和服看樱花,日本人都很忙 QAQ)
+
+同时也喜欢一切美好的事物。美好的概念很宽泛,也许也仅仅是针对我个人而言。比如耳机中一直单曲循环的Be with You,比如「夏目友人帐」中那一幕幕恬美温馨的故事,比如手绘本里一幕幕美到心碎的插画,比如一些优雅干练的正体字体,再比如新海城动画中,那空灵的苍穹。
+
+正因为如此,我越发希望自己能够体验那些被很多人认为是美好的事物,程序如是。而如果单考虑博客,我希望它不仅仅是UI的美好,支撑它的逻辑代码也应该美好 :)所以我来到这里。
+
+我来了,你在哪?
diff --git a/source/_posts/2013-04-24.md b/source/_posts/2013-04-24.md
new file mode 100644
index 0000000..797c24b
--- /dev/null
+++ b/source/_posts/2013-04-24.md
@@ -0,0 +1,208 @@
+---
+title: 学习CSS的最佳途径
+tags:
+ - CSS
+ - HTML
+categories: 学习
+permalink: the-best-way-to-learn-css
+featureImage: https://cat.yufan.me/cats/ame/python-gtk-css-titleimage.jpg
+date: 2013-04-27 09:52:12
+---
+
+CSS与HTML相结合地进行工作;HTML整理出页面的结构,CSS使它们看起来更加漂亮并且加入了细节上的交互。作为一个网站设计者你应该认真地学习这些语言。即使你并不需要自己来编程,理解它们如何工作将有助于你设计页面。
+
+
+
+# 一、掌握基础:什么是CSS?
+
+C.S.S. 代表层叠样式表(Cascading Style Sheets);一种用于HTML(或者XML,以及一些其它结构化的格式语言)上的样式规则文档。多个样式规则可以对应一个HTML元素,在某种情况上来说就需要一种方式来确定哪个规则应该生效。单词**Cascading**(层叠,朗文中译为瀑布似地落下)描述了从一般规则开始的渲染过程,直到遇到最确定的规则,然后此规则被选择来渲染它定义的元素。
+
+通过CSS,表现(样式)可以同结构分离注1 。它解决了合并在HTML中的样式规则的需求,例如:
+
+![包含在结构中的表现,好恶心](https://cat.yufan.me/cats/ame/css-best-font-size.png)
+
+这将控制页面更整齐、更[整洁](http://en.wikipedia.org/wiki/Don't_repeat_yourself)
+
+CSS可以被网页游览器阅读。它们下载标记好的文档,然后在文档中渲染每个元素的样式。
+
+![](https://cat.yufan.me/cats/ame/css-best-browser.png)
+
+每个游览器根据样式规则的展现并不总是相同,并且游览器开发中同样有着各自的对于新的样式建议注2 的实现。经常是游览器厂商们自己来实践CSS特性,以期他们的建议能够被用户接受。
+
+最后,由[万维网联盟](http://www.w3.org/)(W3C)来决定这些CSS特性是否标准。
+
+# 二、掌握基础:学习语法
+
+CSS语法由一些基础的部分组成:Rules(规则)、Selectors(选择器)、Declarations(声明)、Properties(属性)和Values(值)注3
+
+![这个CSS规则包含了所有我们刚刚提到的零零碎碎的组成。](https://cat.yufan.me/cats/ame/css-best-rule.png)
+
+![](https://cat.yufan.me/cats/ame/css-best-selector-declaration.png)
+
+选择器对应着HTML标记内的元素,然后大括号内的声明确定了那些元素该被如何设计。一个规则内可以有多个声明,每个声明都由一个属性和一个相关联的值组成部分。
+
+![](https://cat.yufan.me/cats/ame/css-best-property-value.png)
+
+你可以有很多方式来选择HTML元素,比如简单地通过类型选择器(**type selectors**)。
+
+![上图将选择所有的图片并设置它们的内边距值为0。](https://cat.yufan.me/cats/ame/css-best-type-selector.png)
+
+然后我们还有类选择器(**class selectors**)来指定应用于那些有明确类名的元素。看一看下面这个标记和它对应的CSS。
+
+![这是一个可以对应任何东西的锚链接。](https://cat.yufan.me/cats/ame/css-best-class-selector-markup.png)
+
+![然后这个将会选择所有类(class)值为highslight的锚链接并使它们变为橙色。](https://cat.yufan.me/cats/ame/css-best-class-selector.png)
+
+**注意:**与你可能知道的所相反的是,没有一个确定的东西可以称之为CSS类(CSS class)。只有CSS选择器和目标HTML类。你可以在[tantek.com](http://tantek.com/2012/353/b1/why-html-classes-css-class-selectors)和[456 Berea St](http://www.456bereastreet.com/archive/200902/its_class_not_css_class/)上阅读更多相关的解释。
+有数不胜数的合理的选择器供你学习,也有更多的属性等着你来掌握(看一看W3C上的[这个列表](http://www.w3.org/community/webed/wiki/CSS/Properties))。后面我们将看到需要你学会许多选择器和属性才能解决的作业,尽可能多的掌握将使你成为一个更好的CSS码农!
+
+# 三、作业1:学习一些初学者的课程
+
+现在你对于什么是CSS有了一个基本的理解,是时候开始正确地深入学习了。网上有大量的初学课程能助于你的学习,这里列举一组你绝对值得去尝试的课程。
+
+* **Code Academy**的[CSS介绍](http://www.codecademy.com/courses/web-beginner-en-TlhFi)是它们的网站基础课的一部分。如果你在掌握了此课程后有所收获。请继续学习,不用花钱,完成交互的测试可以获得即时的反馈和建议。
+![Code Academy](https://cat.yufan.me/cats/ame/css-best-codeacademy.png)
+
+* 如果你阅读完前面的大纲,那么你将会熟悉**Tuts+ Premium**的[30天学习HTML与CSS](http://learncss.tutsplus.com/)。通过这份免费课程,Jeffrey Way带你从完全的新手到掌握HTML和CSS的基础部分。
+![tutsplus](https://cat.yufan.me/cats/ame/tutsplus.png)
+
+* **Code School**的[CSS越野赛](http://www.codeschool.com/courses/css-cross-country)提供与Code Academy相似的交互学习,但是想要完成全部课程的话你需要成为一名登记会员(当前为25美元每月)。
+
+# 四、作业2:多设计一些东西
+
+当[Dave Shea](http://www.brightcreative.com/)在2003年5月上线[CSS禅意花园](http://www.csszengarden.com/)的时候,他的目标是证明一个单独的HTML文档可以使用不同的样式表来进行无数种方式的设计。对于当时世界各地的设计师来说,这是一个美好的概念和指路明灯。
+
+![css-best-zen](https://cat.yufan.me/cats/ame/css-best-zen.png)
+
+为什么不自我尝试看一些类似的事情呢?选取简单的一段标记(Chris Coyier的[无序列表导航](http://html-ipsum.com/)就是完美的选择):
+
+```javascript
+
+
+
+```
+
+看看只通过改变样式,你可以实现多少种不同的效果。
+
+阅读一下这篇[社区工程:无序列表样式](http://webdesign.tutsplus.com/articles/workshops/community-project-style-an-unordered-list/),这当中有将近100个读者提交了他们对一个简单的无序列表定义的样式。正如你从这些[结果](http://d3pr5r64n04s3o.cloudfront.net/workshops/012_community_project_ul/unordered_list/index.html)中所看到的,一点点想象将使CSS走得更远!
+
+![](https://cat.yufan.me/cats/ame/secret.png)
+>秘密的门-作者:[Noel Delgado](http://pixelia.me/)
+
+# 五、作业3:关注大师
+
+如果人们懂CSS,他们将讨论它——这是显而易见的。关注CSS名人们在做什么你将能学到很多。下面是一组你应该关注的Twitter用户:
+
+* [@chriscoyier](http://twitter.com/chriscoyier)
+* [@csswizardry](https://twitter.com/csswizardry)
+* [@smashingmag](https://twitter.com/smashingmag)
+* [@snookca](https://twitter.com/snookca)
+* [@MeyerWeb](http://twitter.com/MeyerWeb)
+* [@zeldman](https://twitter.com/zeldman)
+* [@simplebits](https://twitter.com/simplebits)
+* [@nettuts](https://twitter.com/nettuts)
+* [@wdtuts](https://twitter.com/wdtuts)
+
+你还可以订阅[css-weekly.com](http://css-weekly.com/)新闻通讯来收取每周一次的CSS打包邮件。
+
+## 5.1、额外方面
+
+为什么不在像[Github](http://github.com/)或者[CodePen](http://codepen.io/)一类的社区编程站点上找到你心目中的大神?注4 在这样的网络中最棒的事就是大家互相提的建议。如果你有一个CSS问题,某人在你之前遇到过的话将会乐意地搭一把手。
+
+![CodePen](https://cat.yufan.me/cats/ame/css-best-codepen.png)
+
+# 六、作业4:理解游览器的支持
+
+正如我们早些时候提到的那样,游览器们并不总是相同地演绎你的样式。当你为那些老版本的IE设计时这种不同的现象尤其明显,它们远远落后于以CSS样式被采用为单位的时间。(注:就是不支持新的CSS特性)现代游览器们(例如:Google Chrome、Mozilla Firefox、Apple Safari、Opera甚至是[IE10](http://technet.microsoft.com/en-us/ie/jj898508.aspx))拥有这更频繁的更新管理,以便减少老版本使用过久的可能性。
+
+正如我们所言,在不考虑它们的最新版如何的情况下每个游览器之间都有些许不同。有些CSS在一个游览器中将被完美支持,在另一个游览器中会有不同的展现。由于这些原因,关注游览器的区别是一个不错的建议。
+
+下面是一些有用的能资源,能够在你的学习过程中帮助你。
+
+* [BrowserStack](http://www.browserstack.com/)是当今非常简单且最棒的跨游览器测试工具。使用它来看不同平台上的不同游览器们如何弄乱你的CSS
+* [How To Deal With Vendor Prefixes](http://css-tricks.com/how-to-deal-with-vendor-prefixes/)作者Chris Coyier的关于游览器兼容基础的文章
+* [跨游览器的CSS编程法则](http://coding.smashingmagazine.com/2010/06/07/the-principles-of-cross-browser-css-coding/)发表于杂志Smashing上的有关你在处理多种游览器中将会遇到的一些问题,比如CSS。
+* [Can I Use…](http://caniuse.com/#cats=CSS)是一个无价的网站,主要用于每个CSS属性在每个游览器中是否支持。
+* [Prefixr](http://prefixr.com/)将你的CSS转换为跨平台友好的语法,如果你在使用的属性需要一个特别的由游览器指定的前缀,Prefixr将会帮你一把。这种转换仅在你使用CSS3属性有意义。
+* [Prefixfree](http://leaverou.github.io/prefixfree/)是一个和Prefixr类似的工具,它仅允许你使用未前缀化的CSS属性,通过在需要时添加当前游览器的前缀到任何CSS代码上来工作。
+
+# 七、作业5:阅读一本书
+
+无论你是从头到尾地仔细阅读,还是简单地把它们作为需要时快速查找的手册,最棒的图书在阅读上是无可挑剔的。
+
+![css-best-css-book](https://cat.yufan.me/cats/ame/css-best-css-book.png)
+
+CSS已经被无数次写成书籍,但是这些出版物是我所认为的精华:
+
+* [HTML and CSS Book](http://htmlandcssbook.com/)是一本漂亮的有插图的针对完全新手的手册,尤其是书籍网站将所有的代码片段和实例可以被获取来实践。
+* [CSS: The Definitive Guide](http://www.amazon.com/CSS-Definitive-Guide-Eric-Meyer/dp/0596527330/ref=sr_1_1?s=books&ie=UTF8&qid=1366296089&sr=1-1&keywords=CSS%3A+The+Definitive+Guide):作者是CSS教父——Eric Meyer。
+* [CSS: The Missing Manual](http://www.amazon.com/gp/product/0596802447/ref=as_li_ss_tl?ie=UTF8&tag=jcdicrte-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0596802447)是有一定的年头了(在技术层面上),但依然被许多CSS基础方面的Go-to书籍作为参考。
+* [CSS3 For Web Designers](http://www.abookapart.com/products/css3-for-web-designers)作者是Dan Cederholm(在完成作业3后你将在Twitter上关注他,不是吗?)。此书是近期的A Book Apart出版书籍之一。不完全为新手准备,但即使如此还是推荐获取它的纸质书。
+* [CSS Essentials(电子书)](https://tutsplus.com/ebook/css-essentials/)来自于Smashing杂志。
+
+# 八、作业6:弄懂选择器和特性
+
+正如你所相信的那样,你的CSS词库将不断增长。你将能保证记住CSS属性并且使用多种方式选取元素。现在是时候提升档次来进行关于CSS选择器的严肃学习。
+
+* [你必须记住的30个CSS选择器](http://net.tutsplus.com/tutorials/html-css-techniques/the-30-css-selectors-you-must-memorize/):来自Nettuts+真实地覆盖你所学的内容。
+* [选择器年鉴](http://css-tricks.com/almanac/selectors/):来自CSS Tricks用于加深理解。
+
+学习CSS选择器也意味着开始掌握特性
+
+![帝国风暴兵图标](https://cat.yufan.me/cats/ame/css-best-stormtrooper.png)
+>作者:[Jory Raphael](http://dribbble.com/shots/951479-Stormtrooper-Icon)
+
+哪个选择器将重载其它的选择器?我应该在我的选择器里面使用以便提升代码执行效率的最低限度语法是什么?我总是推荐人们去一个地方学习特性的规则,那就是Andy Clarke的[CSS: Specificity Wars](http://www.stuffandnonsense.co.uk/archives/css_specificity_wars.html):一个能给人以联想的有关选择器如何由外置内影响彼此的可视化流程(黑色的是最强力的。注5 )
+
+# 九、作业7:更进一步
+
+CSS是一门涉猎甚广的规则。一旦你掌握了基础部分,将有着无数的大道等着你去探索。例如:
+
+## 9.1、CSS3
+
+CSS3 还处于不断发展的过程中,新产生的特性正逐步被接受,其它的旧特性全部被游览器抛弃,有时候甚至语法都会变。通过[CSS Gradients](http://www.colorzilla.com/gradient-editor/)来掌握CSS3,将会是另一个阻止你使用Photoshop的契机。当你可以用CSS处理图像时为什么还要使用分割好的图片呢?
+
+游览网站[CSS3 Please](http://css3please.com/)来了解当前所有正确的CSS3实现,此网站推荐去除那些不支持的游览器。同样,看一看Tuts+ Premium上的[CSS3 Essentials](https://tutsplus.com/course/css3-essentials/),这将能提升你的知识。
+
+## 9.2、媒体查询
+
+响应式页面设计允许你流体式页面布局改变。这取决于页面被如何获取。CSS3媒体查询助力于这一过程中,根据不同的情况提供不同的CSS 规则。阅读一下[相应式式页面设计:一本可视化的指导](http://net.tutsplus.com/tutorials/html-css-techniques/responsive-web-design-a-visual-guide/)来开始学习。
+
+## 9.3、CSS 预处理器
+
+原来CSS可以变得更棒。一旦开始在现实世界的项目中使用CSS,你将可能会得出相同的结论。维持巨大的CSS文件是困难的,重复是普遍的——那么为什么你不能使用一种变量存储十六进制的颜色值而不是一遍又一遍地重复输入?CSS预处理器,例如:Sass、LESS和Stylus解决了所有这些问题甚至更多。甚至无需强制重学一种相似的语言(如果你愿意的话只需坚持普通的CSS)你就可以利用预处理器的强大。
+
+如果你有兴趣学习更多的东西的话,请查阅[Get Into LESS](http://hub.tutsplus.com/categories/development/tutorials/webdesign-5216-get-into-less-the-programmable-stylesheet-language)、[Mastering SASS](http://hub.tutsplus.com/categories/development/sessions/net-19077-mastering-sass)和[Sass vs. LESS vs. Stylus: Preprocessor Shootout](http://net.tutsplus.com/tutorials/html-css-techniques/sass-vs-less-vs-stylus-a-preprocessor-shootout/)。
+
+## 9.4、SMACSS
+
+[SMACSS](https://tutsplus.com/ebook/scalable-and-modular-architecture-for-css/)(CSS可扩展模块化架构)是一种由Jonathan Snook开发的概念,旨在与CSS文件的尴尬的维护性做斗争。它没有教授一种新的语言,而是推荐一种能让你当前的CSS更有组织性的一种方式。
+
+编写模块化的CSS使你能将在别的项目中使用原有的大量的样式代码并扩展它,并且不会破坏你的其它风格,使特征管理处于最佳状态。
+
+# 十、结论
+
+毫无疑问拥有像HTML和CSS一类的技能将充实自我,你将成为一名更好的网站设计师。跟随着我们所列举出的两条学习流程大纲,你将能迅速进步。
+
+如果你有任何关于CSS的学习建议,大声在评论里面喊出来吧!
+
+# 注释
+
+1. 注1:[表现与结构分离](http://www.blueidea.com/tech/web/2004/2173.asp)
+2. 注2:“新的样式建议”译法参考了[W3C的工作流程](http://www.w3school.com.cn/w3c/w3c_process.asp)
+3. 注3:英文单词对应的中文术语参见:
+![CSS结构](https://cat.yufan.me/cats/ame/css-selector.png)
+4. 注4:国内较好的Web设计社区有[RunJS](http://runjs.cn/)、[GitCafe](https://gitcafe.com/)
+5. 注5:原文是the dark forces,指的是作者将选择器分成几类,有一类是以黑色小人做演示。详细的以后会翻译对应文章。
+
+----
+
+原文:[The Best Way to Learn CSS](http://webdesign.tutsplus.com/tutorials/htmlcss-tutorials/the-best-way-to-learn-css-2/)
+译者:[雨帆](http://yufan.me),转载时请保留译文链接和原文链接。
+
diff --git a/source/_posts/2013-04-30.md b/source/_posts/2013-04-30.md
new file mode 100644
index 0000000..026a8f7
--- /dev/null
+++ b/source/_posts/2013-04-30.md
@@ -0,0 +1,39 @@
+---
+title: 谁的青春没有浅浅的淤青
+tags:
+ - 影评
+categories: 文章
+permalink: whose-youth-do-not-have-a-shallow-bruising
+featureImage: https://cat.yufan.me/cats/ame/losted-youth.jpg
+date: 2013-04-30 00:48:42
+---
+
+夜晚临近子夜看完整部电影《致我们终将逝去的青春》,现在的我坐在桌前细细回味,感触颇丰。去看的时候同学说时光网上的评分太低了,还是去看钢铁侠吧。我说不看,就算是烂片我也要去看,因为我相信赵薇,相信原著辛夷坞的剧情。事实证明,整部作品很棒,从郑微的活泼、灵动上我似乎看到了当年小燕子的影子,不知怀旧是不是已为人母的赵薇改拍此作的理由之一。
+
+
+
+话题扯得有点远了,回过来谈电影。想起有这么出名的一种说法,男人的魅力在于岁月沉淀后的睿智与淡定。而其实女人也是的吧,所以我一直很崇拜杨澜。在各个方面,如果说她是我努力的方向、努力的目标,那么我会觉得自己又不要脸的在妄自菲薄。这是一个无比奢望的梦想。
+
+突然扯到她的理由,只是今天看致青春竟然看到了偶像的镜头。这是先前未知的,其实不过才几秒钟,但我已经觉得那是足够的亮点。
+
+是的,我很容易爱屋及乌。
+
+也正如看电影前豆瓣上大家的评论所说,电影跟小说很多情节不同。比如阮莞、黎同学戏份大幅增加,原著一号男主林静则成了打酱油的;比如电影中许开阳纠集多人狠揍了陈孝正一顿;比如看到韩红当深夜节目电台主持人,我顿时笑喷……
+
+只是我所不明白是,为什么电影中的那个年代,大学宿舍环境就像现在最底层的农民工处所,大学生也充满了屌丝气质?然后我就突然想到这两天看到一条微博,说的是招募在厦大拍的某部剧群众演员:**具有屌丝气质男生优先考虑**,然后再次笑喷。
+
+是不是在高速发展的这个社会里,众屌丝成了主流?这也难怪我最近觉得自己越来越屌丝了。
+
+而影片中韩庚几年后的造型直接被赵又廷完爆,我说赵导哟!为什么会把一个人毁成这样?好在我之前也没特别喜欢韩庚,所以其实并没有很大的不满︶︿︶(**小声说:不满很高哦!**)
+
+当然,在我看来亮点还有工作后郑微的短发,我发现最近的很长一段时间来,我一直开始喜欢上短发的女孩。嗯,精明、干练、清爽、气场、最重要的是美丽,我在默算着多久后云儿也会是短发。
+
+写到这里,我觉得再不讲点和正题有关的就真的跑远了。虽然跑题对我来讲也是常事,连高考作文都跑了那么平时也就不重要了。
+
+“**一个人竟然会变成自己曾经最反感的样子**!”,这句话应该是我今晚最大的感触,也是记得最牢的台词吧。
+
+从憎恨抽烟到抽烟,从必须垫书在屁股下否则不坐到白裤子也能随便坐。或许,这些只是表面上来呼应那句台词的作为,但是我依旧狗血地感到很有道理,就像现在大家走的路或许与最初的梦想相悖,导致一路来有太多的抱怨太多的自我鄙视。就像是我,前些日子依旧在迷茫最初高考的选择,也许这就是逝去的青春吧……
+
+看到有人评价说:这是流水账式电影外加一个出乎意料的结尾。我突然倍感亲切,因为我一贯流水账式的日志。只是,对于未来,对于现在,就像是梦里花、水中月,不清楚、不明白。也许将路途艰辛,也许将无数次摔倒。但是,我相信,我会一路向前。
+
+是的,谁的青春,没有浅浅的淤青?(以此作为结尾,看样子我又懒惰了哦。QAQ)
diff --git a/source/_posts/2013-05-01.md b/source/_posts/2013-05-01.md
new file mode 100644
index 0000000..5ee41da
--- /dev/null
+++ b/source/_posts/2013-05-01.md
@@ -0,0 +1,64 @@
+---
+title: 协议相关的链接
+tags:
+ - Schema
+categories: 学习
+permalink: the-protocol-relative-url
+featureImage: https://cat.yufan.me/cats/ame/the-protocol-relative-url.jpg
+date: 2013-05-01 05:19:12
+---
+
+这里有一个你可以拿走,并将能拯救你于头痛中的小窍门。
+
+```javascript
+
+```
+
+![](https://cat.yufan.me/cats/ame/this-page-contains-both-secure-and-nonsecure-items.gif)
+
+如果游览器正通过HTTPS访问当前页面,然后它将使用HTTPS协议请求上面的资源。否则,游览器将通常用HTTP请求资源。这样阻止了在IE中讨厌的错误信息:“此页包含安全和不安全的项目”,使你的所有资源请求保持在相同的协议内。
+
+
+
+当然,如果你正在游览本地文件,游览器将尝试使用`file://`协议获取文件。
+
+我们在[HTML5模板文件](http://html5boilerplate.com/)中使用了此技巧来智能地从谷歌CDN上获取jQuery。
+
+```javascript
+
+
+```
+
+从技术上而言,根据[RFC 3986](http://tools.ietf.org/html/rfc3986#section-4.2)这种链接写法被叫作“网络路径引用”。对了,如果你想[严格正确](http://url.spec.whatwg.org/#concept-scheme-relative-url)地使用,当论及URL时,请使用术语“scheme(系统)”而不是“protocol(协议)”。
+
+这个技巧在CSS中同样完美有效。
+
+```css
+.omgomg { background: url(//websbestgifs.net/kittyonadolphin.gif); }
+```
+…假设你正指向的网站拥有通过HTTP和HTTPS均能获取的资源。
+
+警告:当在 或@import语句上对一个样式表使用本技巧时,IE7和IE8会下载两遍链接指向的文件。然而所有其它的游览器均没有此问题。
+
+感谢miketaylr、ralphholzmann、annevk在这个上面付出的智慧。同时感谢ajaxian,一个我记得是4年前学习到此技巧的地方。也许吧。
+
+>2011年1月23日:但是…[在谷歌分析代码中使用这个技巧](http://mathiasbynens.be/notes/async-analytics-snippet#protocol-check)如何?
+>当然没问题,那样做不是很棒?…因此我和谷歌分析的JavaScript首席开发者一起研究(天哪,我喜欢在谷歌工作)是否我们可以这么做…结果是我们不能。在IE6中有一个edgecase故障会导致会话注1 中断…受一些安全设置的影响(不确定它们是否为默认)当请求非SSL子域名资源时,就出现如下面截图的情况。所以如果你并不在乎IE6的话,轻松地从你的GA注2 代码中去掉那40 bytes。否则,你将需要那个三元运算符注3 。)
+
+![](https://cat.yufan.me/cats/ame/form-the-non-ssl-subdomain.png)
+
+>2011年12月24日:Eric Law(来自IE团队)说明了为什么IE6与GA不兼容…
+
+>在IE6中没有生效的原因是由于服务器使用SNI来确定返回什么样的认证。XP(因此是IE6)在HTTPS 堆中并不支持SNI。[详细了解](http://blogs.msdn.com/b/ieinternals/archive/2009/12/07/certificate-name-mismatch-warnings-and-server-name-indication.aspx)。
+
+----
+
+* **注1**:会话这里指HTTP会话,包含4步。建立TCP连接→发出请求文档→发出响应文档→释放TCP连接
+* **注2**:此处的GA和下面的GA均指的是Google Analytics,GA代码也就是经典的ga.js——谷歌分析代码。
+* **注3**:此处的三元运算符在详细看了[Scheme Relative URL](http://url.spec.whatwg.org/#concept-scheme-relative-url)后便可理解,作为非技术人员,只需知道是完整的URL链接。
+* **注4**:[定制优化你的GA代码](http://mathiasbynens.be/notes/async-analytics-snippet)
+
+----
+
+原文:[The Protocol-relative URL](http://paulirish.com/2010/the-protocol-relative-url/)
+译者:[雨帆](http://yufan.me),转载时请保留译文链接和原文链接。
diff --git a/source/_posts/2013-05-04.md b/source/_posts/2013-05-04.md
new file mode 100644
index 0000000..a73f76a
--- /dev/null
+++ b/source/_posts/2013-05-04.md
@@ -0,0 +1,250 @@
+---
+title: 网站图标: 一个发展中的角色
+tags:
+ - Favicon
+categories: 学习
+permalink: favicon-a-changing-role
+featureImage: https://cat.yufan.me/cats/2013-05-04-01.jpg
+date: 2013-05-04 01:56:27
+---
+
+许多攻城师并不重视网站图标(Favicon)的重要性,并由此错过了使他们的网站变得更个性、更难忘的机会。
+
+Favicon远远不止是作为一个有趣的位于游览器地址栏顶部的小图标,如今Favicon已经成了网站标识的一部分并被用于推广品牌。恰当地使用它们能给你网站的访客带来好的第一印象和长久的回访。
+
+Favicon的概念由Internet Explorer在1999年第一次提出。它们由ICO格式构造,并以`/favicon.ico`形式放于域名的根目录。从那以后,许多东西改变了。现在Favicon由于多种多样的理由在不同的设备中被使用。
+
+为一个网站添加Favicon的最基础的格式如下所示:
+
+``` html
+
+```
+
+
+# 一、rel 属性
+
+上述声明中最重要的部分就是`rel`属性。就是这个属性能帮助游览器确定Favicon并正确地展示出来。传统的IE游览器同时使用`shortcut`和`icon`来确定图片,并展示它于游览器标题栏和任务栏。在HTML5发布之后,这种情况变成了只有“icon”用作Favicon的全局展示。
+
+# 二、Type属性
+
+`type`属性有时能确定游览器是否显示Favicon。Internet Explorer 仅仅关注ICO文件在服务器是否有MIME定义,否则它将忽略这个文件。通常情况下,对IE需要以下述方式声明Favicon:
+
+``` html
+
+
+```
+
+``` html
+
+
+```
+
+``` html
+
+
+```
+
+Favicon近些日子的演变中最棒的进步之一就是PNG文件的支持。你可以使用有圆角的透明图像来作为你的网站的Favicon。在ICO格式中,圆角+透明边缘的样式太难实现了。像Google Chrome和Mozilla Firefox一类的游览器允许使用PNG格式的Favicon。
+
+需要注意的一个重点是,当ICO格式和PNG格式都被声明使用时,ICO格式的Favicon将被所有的游览器使用,不管它们是以什么样的顺序声明。
+
+``` html
+
+
+```
+
+``` html
+
+
+```
+
+# 三、尺寸
+
+Favicon的另一个进步是尺寸。老一点的游览器使用`16×16`注1 作为Favicon的标准尺寸,然而现代游览器允许`32×32`尺寸的图标,之后缩小到合适尺寸。IE 10 使用`32×32`尺寸的图标于地址栏进行展示。
+
+```html
+
+
+
+
+```
+
+随着PNG格式的Favicon的使用,另一种被称为`size`的新属性增加了进来,它确定了`herf`属性中文件的具体尺寸。
+
+``` html
+
+
+
+
+
+```
+
+通常情况下,Firefox和Safari将使用上面第一个声明的Favicon,而不同版本的Chrome有不同的偏爱。Windows版本的Chrome将使用`16×16`或者ICO文件作为首要的展示,Mac版本的Chrome将使用ICO格式的Favicon,否则它将使用`32×32`尺寸的Favicon并缩小到`16×16`以便在非视网膜设备上获得更高的清晰度。相反的是,Opera没有这样的偏好,它从所有的Favicon中随机地选择一个来于展示。
+
+![icons](https://cat.yufan.me/cats/ame/figure12.png)
+
+# 四、物尽其用
+
+既然Internet Explorer不支持PNG文件并且其它现代游览器能支持,我们可以用条件语句将ICO文件包裹并将PNG文件搁置。例如:
+
+``` html
+
+
+```
+
+``` html
+
+
+```
+
+但是针对上面的声明,我们有一个问题!IE 10 不支持条件声明并且不支持PNG文件。那么我们现在应该如何做?
+
+我们可以把ICO文件放在根目录,并只对PNG文件做声明。以这种方式,Internet Explorer 将忽略语句``并展示根目录的ICO图片。现代游览器则将找到``声明并使用PNG文件。
+
+# 五、对于苹果设备
+
+搭载iOS 1.1.3和以后版本的苹果设备需要一种特别类型的`rel`属性,此属性可以被前面提到的苹果设备识别。在这些设备上使用`apple-touch-icon`和`apple-touch-icon-precomposed`来作为`rel`属性值。
+
+下面的Favicons不仅仅用于在游览器中展示,当网站在应用程序界面上被设为书签时同样需要它们。这样的Favicon需要更高的分辨率度和专门定制,以便在其它应用之间引人注目。
+
+![苹果图标](https://cat.yufan.me/cats/ame/figure22.png)
+
+``` html
+
+
+```
+
+``` html
+
+
+```
+
+`apple-touch-icon-precomposed`这个属性值用于指示设备不要给Favicon加上反射光泽,仅用它原来的样子。
+
+为苹果设备推荐的基本尺寸是`57×57`并使用直角,对于更高分辨的屏幕使用`114×114`的尺寸。iPad 2使用的是`72×72`尺寸的Favicon,与此同时,iPad 3的视网膜屏幕需要`114×114 `尺寸的图片。
+
+# 六、对于 Windows 8
+
+Windows 8 使用磁贴这个概念并可选择将某个网站固定在主屏幕上,对于那些被固定的网站而言,为了在屏幕上变得好看,高质量的Favicon是必须的。
+
+![windows8 图标](https://cat.yufan.me/cats/ame/figure33.png)
+
+``` html
+
+
+```
+
+注意到在上述的声明中,我使用了`meta`标签来取代了`link`标签。Windows 8 更喜欢在`meta`中对磁贴需要的图片的声明。
+`msapplication-TileColor`确定了填充在磁贴上的颜色,`msapplication-TileImage`确定了磁贴正中间所展示的图片。
+
+# 七、Favicon的局限
+
+有时因为重复地在同一个位置检查Favicon,这会对你的网站产生额外的流量。有时如果不注意的话,这种情况甚至会造成记录在错误日志中的无用的404错误。
+
+Favicon的另一个局限性就是不能自动地加载新的Favicon,这种问题大多数情况下发生在老的游览器上,例如IE 6~9 (译注:Chrome 23版本前的游览器也是会发生的,除非清除全部的缓存。译者本人使用的Chrome27对于本地页面的favicon也不能加载。)
+
+`rel`属性同样没有被W3C设为标准,所以不同的用户代理注2 确定它们自己的标准。
+
+以前,Favicon 一直是多种网络钓鱼攻击、窃听的首要目标。例如,当它们(钓鱼网站)没有被认证为安全时展示了认证安全的图标。
+
+当决定是否以及如何在网站上使用Favicon时,这些是全部应该予以考虑的问题。但是,没有任何问题能阻止你创造性地使用Favicon。
+
+如今,Favicon有着自己的重要性。它的视觉冲击力将不断增长,所以你同样应该期待它在功能上的增长。
+
+# A、注释
+
+* **注1**:严格意义上说,里面的数字的单位是像素每英寸,DPI是72,此为网站设计时的常识数据。
+* **注2**:用户代理 User Agent,本文里的用户代理是指浏览器,它的信息包括硬件平台、系统软件、应用软件和用户个人偏好。
+
+# B、扩展学习
+
+## B.1、APNG 格式的 Favicon
+
+### B.1.1、APNG 简介
+
+动态便携式网络图形(APNG)文件格式是对便携式网络图形(PNG)规范的非标准扩展。它设计为与动态GIF文件效果类似的动态PNG文件。同时支持GIF所没有的24位图像和8位的透明度。
+
+APNG文件的第一帧被存储为普通的PNG流,所以大多数标准PNG解码器都能展示APNG文件的第一帧。帧速数据和额外的动画帧被存储在额外的块里面(依照原始的PNG规范的规定)。
+
+将APNG与多图像网络图形(MNG)比较,MNG是一种由相同的PNG团队打造的、全面的位图动画格式,而APNG的优点是更小的数据规模和对旧的PNG实现的兼容。
+
+### B.1.2、游览器对 APNG 支持一览表
+
+![Application support](https://cat.yufan.me/cats/ame/apng-supported.jpg)
+
+### B.1.3、APNG 的制作工具
+
+* **[VirtualDub APNG Mod](http://vdubapngmod.sourceforge.net/)**
+
+![VirtualDub APNG Mod](https://cat.yufan.me/cats/ame/vdubapngmod_main.png)
+
+* **[APNG Anime Maker](https://sites.google.com/site/cphktool/apng-anime-maker)**
+
+![APNG Anime Maker](https://cat.yufan.me/cats/ame/aam_main.jpg)
+
+* **[APNG Edit](https://addons.mozilla.org/en-US/firefox/addon/apng-edit/)**
+
+![APNG Edit](https://cat.yufan.me/cats/ame/apng-edit.png)
+
+* **[Animat](https://addons.mozilla.org/en-US/firefox/addon/animat/)**
+
+![Animat](https://cat.yufan.me/cats/ame/animat.png)
+
+### B.1.4、APNG 相关介绍
+
+[如何制作 APNG 动画 PNG 的 Favicon](http://ooxx.me/apng.orz) ——By 大猫
+
+## B.2、快速创建不同尺寸的Favicon
+
+### B.2.1、HTML5 Boilerplate的多层Favicon PSD模版简介
+
+![Image Title](https://cat.yufan.me/cats/ame/multilayer.png)
+
+站在巨人的肩膀上,我提供了这个调整过的Photoshop模版来帮助创建一个网站的触摸图标(iPad上的),和依照当前推荐比例的多层次化Favico。
+
+以Hans Christian Rienl的[作品](http://drublic.de/blog/html5-boilerplate-favicons-psd-template/)为基础,并依照别人的步骤使用本模板,**希望能简化你创造那些有爱图标的步骤。**
+
+### B.2.2、使用步骤
+
+* 下载[H5BP-Multi-Layer-FavIcons](https://github.com/jonrandahl/H5BP-Multi-Layer-FavIcons/blob/master/PSD/HTML5-Boilerplate-Icons_v3.2.zip)。
+
+* 解压使用Photoshop打开PSD文件。
+
+* 双击 144x144 smart object layer(双击部分见下面截图)
+
+![截图](https://cat.yufan.me/cats/ame/editable-moudle.jpg)
+
+* 在新打开的PSD窗口上添加上你自己的图标
+
+* 编辑完内容后,选择`文件`→`保存`来提交变更。
+
+* 再一次游览原来的模板,看是否变化。
+
+* 选择`文件`→`存储为Web所用格式`。
+
+* 按住Shift,依次点击每一个图标切片来添加多选择状态。
+
+* 右边`预设`部分选择PNG格式。
+
+* 点击`存储...`,在打开的选择保存位置中在`切片`这个下拉菜单中选择`选中的切片`。
+
+* 点击`保存`。
+
+* 打开你保存的位置。
+
+* 打开ICO格式转换网址:[http://converticon.com/](http://converticon.com/)
+
+* 点击`Get Start`上传你想转换为ICO格式的PNG文件。
+
+* 在新页面点击`Export`保存即可。
+
+## B.3、更多阅读
+
+* [rel="shortcut icon" considered harmful](http://mathiasbynens.be/notes/rel-shortcut-icon)
+* [Everything you always wanted to know about touch icons](http://mathiasbynens.be/notes/touch-icons)
+* [Create the perfect favicon](http://www.netmagazine.com/features/create-perfect-favicon)
+
+----
+
+原文:[Favicon: A Changing Role](http://www.sitepoint.com/favicon-a-changing-role/)
+译者:[雨帆](http://yufan.me),转载时请保留译文链接和原文链接。
diff --git a/source/_posts/2013-05-20.md b/source/_posts/2013-05-20.md
new file mode 100644
index 0000000..caa6471
--- /dev/null
+++ b/source/_posts/2013-05-20.md
@@ -0,0 +1,33 @@
+---
+title: 五月迷失记
+tags:
+ - 随想
+categories: 文章
+permalink: lost-myself-in-may-day
+featureImage: https://cat.yufan.me/cats/ame/20120203543.png
+date: 2013-05-20 06:36:22
+---
+
+五月济南的生活有点错乱,天气忽冷忽热地延续了3周,才想着是不是已经算作夏天时昨夜又下雨降温到18℃。搞得我现在的床上还放着毛毯、棉被、空调被,按照温度随时选取。╮(╯▽╰)╭
+
+雨天的那个晚上,想起前不久友人的书信:最近阴雨连绵,适合怀旧。我突然想起高中时那个已经忘了名字的姑娘,记不清她的样子,却还记得同学叫她的外号:小白,还记得为她第一次写过的情书,偷偷地夹在化学课的笔记本里。有时想想那时自己就是个伪文艺青年,迷恋着个姑娘,情书里写着普希金的《假如生活欺骗了你》,这算是哪对哪呀!
+
+
+
+那个年纪,那个时代啊,那些女孩。
+
+友人的信,简单地在海子春暖花开里升腾,氤氲了整个五月初。
+
+五月的季节,开始有些怀旧,不知是不是因为即将面对的新一届大四学长离校的缘故。看见离别,总是会习惯伤感、习惯抑郁。恍然间似乎看见自己也成了其中一员,面对着一年后相似的告别。只是,我所不知道的是,我与云儿的距离,是否能在毕业后继续交叠。而不仅仅是,两条平行线般遥远……
+
+那天看完致青春后和云儿谈起这个话题,她笑着说:“还是留给时间来解答吧。”
+
+时间,真的很强大,甚至——残酷,虽然我极力想否认时间对我、对云儿的改变。但是,我害怕,突然有一天,我会像现在忘记小白一样,与云儿成为过去时。
+
+就像前些日子和济南的初一同学孙去喝酒,我们谈了很多、很多,最后谈到以前欺负我的同学。孙问我:“你还恨他们吗?”我想了想,也不知道该如何回答。对于他们的恨意、甚至是恶毒的想法早就是过往云烟,记不起来的人,又谈何恨?
+
+五月的我,像是推开了一扇回溯生命的门,随之而来的,是目光的躲闪,是成长的羞涩,是珍藏时光的陈酿,是青春放肆的香……
+
+于怀旧的季节,开启尘封已久的潮湿往事。一件件晾晒,烙上新的成长的痕迹。对与错、爱与恨、那些年轻的仓惶与疼痛,似乎也就这样淡然了。
+
+五月,迷失季。
diff --git a/source/_posts/2013-05-25.md b/source/_posts/2013-05-25.md
new file mode 100644
index 0000000..6e488fe
--- /dev/null
+++ b/source/_posts/2013-05-25.md
@@ -0,0 +1,37 @@
+---
+title: 那个离你而去的女孩
+date: 2013-05-25 17:27:58
+permalink: the-girl-who-leave-you
+featureImage: https://cat.yufan.me/cats/ame/the-garden-of-words.jpg
+categories: 文章
+tags: 动漫
+---
+
+雨,漫天漫地的雨,清澈透亮,不含一丝杂质。初看此片的第一眼,仿若置身于漫无止境的五月雨季。雨天潮湿的心情,凉亭下的不期而遇,那人似曾相识。
+
+“我们,是不是以前见过?”
+
+小时候,天空仿若触手可及,于是慢慢喜欢上雨天,因它带来天空的气味。雨,是贯穿言叶之庭的主旋律,无论是两人的相识,相知,互吐爱慕,无一不是在雨中所达成。
+
+
+
+故事的主人公秋月孝雄和雪野百香里也是在雨季中偶然相遇,离别的时候,雪野留下了一首简单的对答短歌:“隐约雷鸣,阴霾天空,但盼风雨来,能留你在此”由此开始了两人的缘。孝雄曾说晴天的早晨会按部就班的乘车上学,也会让他觉得不属于学校。而雪野也因为一些事情,只能通过啤酒和巧克力刺激味觉。或许正是雪野奇怪的举动,吸引了孝雄,在雨天中,两人从相识到交谈,两颗心一点点被拉近。
+
+再次雨天清晨的邂逅,百香里第一次吐露心声:“我啊,无法顺利走下去了。”本来梅雨的季节被推迟,两人一次又一次的清晨相遇,彼此却又不说话,但是,心却越来越近了。每天都在期待着明天的早晨,一样的雨季,一样的邂逅。
+
+然而雨季无法避免地结束了,如旁白所说:“简直像有谁切换了季节的开关一样。”没有了下雨的早晨,凉亭里只剩下雪野在那独坐,而两颗被暂离的心,满怀着期望,却走得更近了。
+
+也许命运有时就是这么奇妙。
+
+短歌的下半句“隐约雷鸣,阴霾天空,即使天无雨,我亦留此地。”而当孝雄懂得下半的含义时,已无法逃离。原来,无论雨天还是晴天,我一直都在这等着你……
+
+再一次遇见,两人已然熟悉彼此,孝雄说出重万叶集找到的下半句。而突如其来的大雨,将两人困在那里,心也困在了一起。雪野的家中,在至今为止的人生里,现在,这一刻,对于两人而言,或许这就是幸福。“雪野小姐,我好想开始喜欢上你了”孝雄忐忑地说道。
+
+“不是雪野小姐,你应该叫我雪野老师……”雪野委婉地拒绝了孝雄的爱意,只是在孝雄关门离去的那一瞬间,雪野的表情是那么的落寞。
+
+接下来的几分钟里,是全剧的高潮。当男女主互相哭泣着、咆哮着道出心意,作为观众的我也被深深触动。伴随着恰到好处的主题曲rain,情不自禁地落泪。那个不嫌弃你的姑娘,那个曾经喜欢着你的大女孩,为什么没陪你走到最后?当彼此眼泪流干了的时候,人却再也留不住了。离别,走上仿若平行线的生活。物理上的距离,是两人最大的鸿沟,但是心与心的依靠,是距离所无法阻断的。有时候,离去不是一个简单的转身,而是,一辈子的幸福。
+
+于是,在影片结束的最后,孝雄在当初相遇的凉亭中拿出了当年说要制作的女鞋,只是伊人已经回到家乡。“回望当初,那时我一定也一直在训练自己迈步,如果有一天,能够走得更稳更远了,就去见她吧……”
+
+>殷其雷,天阴霾,雨零耶,盼君留。
+>殷其雷,纵不零,卿若留,吾将从。
diff --git a/source/_posts/2013-06-21.md b/source/_posts/2013-06-21.md
new file mode 100644
index 0000000..56530ea
--- /dev/null
+++ b/source/_posts/2013-06-21.md
@@ -0,0 +1,22 @@
+---
+title: 那些人儿
+tags:
+ - 回忆
+ - 杂思
+categories: 文章
+permalink: those-people
+featureImage: https://cat.yufan.me/cats/20130621021738.jpg
+id: 105
+updated: '2015-04-16 04:59:12'
+date: 2013-06-21 10:24:04
+---
+
+闲了两个月后,又把打算停笔不写的博客搭建了起来,这算不算个人的又一次纠结?掐指一算,写博也已经有两年之久,这期间建博的来来去去,有些走了,有些还在继续。后台留言板内早些年的留言链接全是404,只留下还存活着的头像,孤零零地像一座座坟墓。
+
+
+
+记得才开始写博的那段日子,总有那么一个夜晚,伴着舍友的呼吸声从一个博客逛到另一个博客。看着大家的故事,品味着彷徨的心事,然后留下自己链接奢求能有同样认真阅读的人。而看多了安静凄美的文字,写多了哀而不伤的故事,挖掘透了刻骨铭心的恋情,心也就累了。有时想想,博客不是一种快乐,爱情也不是。如果你了解一个人经过怎样的时候老去的,你就能仔细品味出某种特异的感觉。就像博客,没有一年半载,又怎么知道是否最初的选择没有错误?曾打算不再写博,离开时抓紧双手,默默转身,无数次下了决心去遗忘。而当真的要走、远了,却还是放不下名为牵挂的情绪。
+
+一个雨夜,陪云儿寻找一家叫做“青春”的服装店,街边的路灯在雨雾中折射出迷蒙的光影,映照着迷路的我们。云儿忘了地址,见人便问:青春在哪里?话才说出口,便惊觉表达错误,被问的路人投来诧异的眼神,一对年轻情侣,竟然向他问青春?费劲周折找到了传说中的那家店铺,看着云儿满意的微笑,心中七分甜蜜,三分疲惫。想来博客也是这样了,我们怀揣着梦想起步,走过的日子,写过的故事,都恍惚化成了脑海中挥之不去的片片色彩。既然爱过,又谈何分别?
+
+想起在云刊上记住的一句话:博客,是一个人的寂寞,寂寞,是一群人的孤单。握一把孤单献给你,在这烈日炎炎的盛夏,趁着秋天还未到,你也许还能觉出一点我们手握的苍凉吧。
diff --git a/source/_posts/2013-06-30.md b/source/_posts/2013-06-30.md
new file mode 100644
index 0000000..2fda36b
--- /dev/null
+++ b/source/_posts/2013-06-30.md
@@ -0,0 +1,44 @@
+---
+title: 我不想,我不想,不想变老
+tags:
+ - 杂思
+ - 青春
+categories: 文章
+permalink: unwilling-to-grow-old
+featureImage: https://cat.yufan.me/cats/20130630014602.jpg
+id: 106
+updated: '2015-04-16 05:07:26'
+date: 2013-06-30 09:29:55
+---
+
+“为了看看阳光,我来到世上”。第一次读到巴尔蒙特的这句诗后,就几乎再也没有忘记过。那种内心的纯净、光明与温暖,在读此诗时铺面而来,简单地仿佛看不到忧伤的痕迹,一如你我的十八年华。
+
+——题记
+
+前些日子整理旧时的笔记本,看着年轻时的自己无忧无虑的文字,不知不觉地忧伤起来。我知道现在的自己是再也回不去的了,可是倘若有机会,我是多么希望自己能将年华一直定格 18 岁。
+
+
+
+这样的场景或许只会发生在奇幻电影中,仿若《不能说的秘密》中周杰伦回到过去的历程:21 岁的我坐在这里一字一字地写下18 岁的回忆,周遭的景致便不停变化,有些记忆会消失,某些遗忘的事会莫名浮起。处在时间回溯洪流中的我看着过去的自己,就像是看着一部泛黄的老胶片电影……
+
+某天早上,当朝阳透过阳台洒在我的书桌上时,我收到了小A姐姐的QQ信息:“小小,你说当我们老去的日子该有多可怕?我不想变老!”
+
+变老么?想想人老去后的种种,那个瞬间,时间这看不见摸不着的玩意儿,沉重而清晰地跃出水面。对于“变老”这个词,我第一次如此地恐惧。
+
+记得初中毕业的那个六月,我近乎虔诚地盼望着我的十八岁。那时我才喜欢上一个姑娘,却因毕业渐渐失去了联络。我想长大,能够拥有一段美丽的恋情。我想要尽快长大,然后背起行囊离开争吵不断的父母。我渴望长大后前往远方,那里有我的金色梦想……
+
+然而踏上[十八岁的旅途](http://www.dearzd.com/DBlog/?p=2474)的我用忙碌的学习挥霍完仅存的一点青春,毕业来到一个新的城市后。面对着离家那么遥远的陌生城市,心中却开始莫名地寂寞。我用着文字祭奠着青春,一如《情人》里,玛格丽特.杜拉斯写道:“太晚了,太晚了,在我这一生中,这未免来得太早,也过于匆匆。才十八岁,就已经是太迟了。在十八岁和二十五岁之间,我原来的面貌早已不知去向。我在十八岁的时候就变老了。”
+
+我想,成长的路上总会有无限的迷茫,但我也坚信生命中有着能让我们忘记一切迷茫的寄托。记得上周重看了《小王子》,对于等爱的小狐狸来说,麦田因为小王子而有了特别的意义。一如一开始陌生的济南,由于云儿的存在让我异常地温暖。
+
+我已经长大了,能够毫无顾及地谈着恋爱,也能满怀希望地追寻自己心中的梦想。却发现在不经意间长大后,又开始在不经意间变老,一切都是那么的猝不及防。记得在初中阅览室里读过的《彼得潘:不会长大的男孩》的故事,有时幻想着是否存在着这样的“乌有岛”,我就是那个叫做彼得•潘的男孩,活在自己的伊甸园中。
+
+于是一直很喜欢郑插插笔下的彼尔德,这只性别为女的可爱胖鸟做着各种可爱的表情,欺负着一只名为黄溜溜的小鸡。不愉快时看着她们,心情也就好起来了。每次发彼尔德表情时舍友总说我喜欢卖萌,却不知这是我对于长大的逃避,我害怕变老,害怕着一切的未知。
+
+那么请不要忘记在第二个路口往右转,然后一直走,直到天亮。这是前往“乌有岛”的道路,让我们一起不要变老。
+
+**注:**
+
+本文题首插图由 [JUMEI](http://jumei.pp.163.com/) 提供,在此注明出处,遵循CC创作共享协议。
+
+![Great Plan](https://cat.yufan.me/cats/20130630014604.jpg)
diff --git a/source/_posts/2013-07-19.md b/source/_posts/2013-07-19.md
new file mode 100644
index 0000000..a352a49
--- /dev/null
+++ b/source/_posts/2013-07-19.md
@@ -0,0 +1,38 @@
+---
+title: 大三暑期实训记
+tags:
+ - 实训
+ - 编程
+categories: 文章
+permalink: summer-training-record
+featureImage: https://cat.yufan.me/cats/20130718223208.jpg
+id: 107
+updated: '2015-04-16 05:07:50'
+date: 2013-07-19 06:31:28
+---
+
+大概是很久没有提笔的缘故,一直找不到什么可以拿出来写的话题。七月的济南打破了一如既往的干旱,这一阵子阴雨连绵,恍然间有种已经回到厦门的错乱感。只是现在的我依旧坐在实验室的机房内敲着代码,窗外下着大雨,身旁来自山东中医药的张远馨同学笑着对我说:“终于全部写完了。”
+
+**“阿勒?已经结束了吗?”**
+
+为期四周的项目实训终于在今天落下了帷幕,算起来,也好久没有像现在这样子忙碌了,早起晚睡、忙碌的学习和测试,实训中心里埋头敲代码的背影。恍然间,如同Back To Seventeen。
+
+
+
+有句话怎么说来的:纸上得来终觉浅,绝知此事要躬行。无论你学了多少,准备了多少,到了最后实施的时候总是觉得不够。只是,幸运的是我们做的只是项目实训,开学第一天和印度老师Amit交流时他就用英语和我们说:“这不到一个月的实训我的目的不是让你们学会多么深的技术,提高多少技术能力,主要是让你们在一种公司化的项目小组开发的气氛之下,严格按照公司开发步骤程序区完成这次的项目。”于是,公司化的管理,公司化的作息时间,公司化的小组协作开发……这一切的一切都是在之前自己的大学生活中并未体会过的。学习、设计、规划、编程、合并、测试,或许短短的流程线无法形象具体的表述出我们这二十多天的活动,但却可以隐约表示出自己在这实训期间充实的生活。
+
+因为自己之前对于Android项目的开发也只是处于入门阶段,并不熟练。所以初期两周自己先在网上找了一些Android项目开发视频、资料学习。在前几天的较为系统的学习过程中,我也掌握了很多在之后的开发过程中很实用的方法、技巧。期间、自己也编写了部分小程序、范例进行熟悉。
+
+而其实自己在做具体功能模块实现部分时花了不少的时间,其中遇到了很多复杂的问题。怎样在界面里实现各功能的代码编写,怎样实现SQLite数据库的初始化、更新、增删改查,怎样在各个Activity间相互传递参数等等。而这些又都是比较棘手的问题,又比如:利用Intent传递参数时,无法直接传递已经构建好的实体类参数;利用SimpleAdapter时,无法在ListView实现Item按钮的添加、绑定。但是通过向老师Amit、同学请教;通过组员的帮助和一次又一次的调试,这些问题都解决了。直到这时我才深深的体会到,团队合作的力量是多么的巨大。正是因为有了老师和同学们的帮助,我的实训任务才可以提前并且很好的完成。
+
+而代码整合中存在的问题,应该算是我的实训过程中最有意义的收获之一了。在此过程中,实际的教训使我再一次意识到评审的重要性。由于开发周期较短,需要每天进行一次评审,而我之前的评审时间有点晚,导致发现问题不够及时,因此最后拖慢了大家的进度。
+
+最后,要感谢Amit师对我们的耐心讲解和帮助,还有我们组组长和小组成员对我的热心帮助,他们都给了我前进的动力,教给了我许多知识和课本以外的东西,没有他们的帮助,我就很难完成组长分配给我的任务了,没有他们的讲解,我也不会学到那么多的东西,有那么多的收获,所以也借此文章偷偷地感谢他们(╮(╯▽╰)╭)。
+
+人非生而知之,虽然我现在拥有一定的知识结构,但是我知道自己需要锻炼动手能力,不仅要靠努力学习,还要靠潜心实践。没有实践,学习就是无源之水,无本之木。这次实训让我知道了不少知识:我们不可能永远呆在象牙塔中,过着一种无忧无虑的生活,我们总是要走上社会的,而社会,就是要靠我们这些年轻的一代来推动。不久后的我,面临是就业压力,我想我们都应该好好经营自己的时间,充实、完善自我,不要让自己的人生留下任何空白!相信努力就会有收获,每天努力充实自己,相信在不久的将来,可以打造一片属于自己的天地。
+
+“既然选择了远方,便只顾风雨兼程!”
+
+写完实训报告时望着窗外,天空已然阵雨初晴。
+
+![](https://cat.yufan.me/cats/20130718223205.jpg)
diff --git a/source/_posts/2013-07-23.md b/source/_posts/2013-07-23.md
new file mode 100644
index 0000000..e7a6059
--- /dev/null
+++ b/source/_posts/2013-07-23.md
@@ -0,0 +1,97 @@
+---
+title: 小白成长之路:Android版本浅析
+tags:
+ - Android
+ - 翻译
+categories: 学习
+permalink: android-versions-explained
+featureImage: https://cat.yufan.me/cats/ame/Android-Authority-Back-to-Basics-645x434.jpg
+date: 2013-07-23 14:19:12
+---
+
+>欢迎大家来到**“小白成长之路”系列**,在这一系列的文章中我们将详细讲解Android的每一个层面,以此让你理性地选择出适合你的Android设备。本周的头篇文章我们将介绍Android的版本变迁,此后每周我们都将发表一篇此系列的文章,敬请大家保持关注。(友情提示:你可以点击文章底部的`小白成长之路`标签来获取此系列的全部译文。)
+
+在简短的介绍之后,我想是时候进入不可思议的Android世界了。
+
+
+
+# 一、介绍
+
+下面我将尽量简短地介绍它的历史。第一台运行Android的手机是2008年的HTC Dream,从那以后Android开始几何般地增长。相信你经常在Android相关文章中看到:果冻豆、冰淇淋三明治和姜饼这样的词组。不,我们没有恋糖癖(好啦,也许我们当中的某些人喜欢吃糖),相反的是,这些单词都是不同Android版本的命名。
+
+Android版本是以英语单词表顺序命名的,名称都是糖果或甜点。所以Android的版本名分别是:纸杯蛋糕(Cupcake)、面包圈(Donut)、法式小饼(Eclair)、冻酸奶(Froyo)、姜饼(Gingerbread)、蜂巢(Honeycomb)、冰淇淋三明治(Ice Cream Sandwich)和最近的版本——果冻豆(Jelly Bean)。
+
+![Android Versions](https://cat.yufan.me/cats/ame/Android-Versions.jpg)
+
+我们将直接跳过Android的早期版本,因为它们不仅仅太老而且过时,这也意味着你将很难找到一台还在运行它们的设备。但是因为这个理由,当你物色一台新的智能机的时候,无论价钱多么实惠,都不能去买那些运行旧版本的设备。
+
+# 二、Android 2.3 姜饼
+
+发布于2010年12月的Android 2.3 姜饼系统带来了许多使Android系统更棒的改变。其亮点包括对多摄像头的支持(例如前置摄像头)、简易化和速度的提升、一个更给力的键盘、对于近场通信的支持和电源管理的改进。
+
+你将能在早期的设备中找到姜饼系统的存在,一些廉价设备同样搭载此系统。虽然到目前为止它依旧是一款十分流畅的操作系统,但建议你可能的话最好买一款运行高版本Android系统的设备。
+
+![Samsung Nexus S – 第一款运行 Android 2.3 姜饼系统的手机](https://cat.yufan.me/cats/ame/samsung-nexus-s-1.jpg)
+
+经典的运行姜饼系统的设备:Samsung Nexus S(可升级到Android 4.1 果冻豆系统),Samsung Galaxy S2(可升级到Android 4.1 果冻豆系统),HTC Sensation(可升级到Android 4.0 冰淇淋三明治系统)和Motorola Droid Razr(可升级到Android 4.1 果冻豆系统)。
+
+# 三、Android 3.0 蜂巢
+
+发表于2011年2月的蜂巢系统是第一个为平板优化的Android系统,它也是第一个(目前唯一一个)仅支持平板的Android版本。它带来了音译为“Holo”的新用户界面,并一直沿用到目前最新版本的果冻豆系统中。蜂巢系统其他主要的变化有:一个重新设计的键盘,简化的多任务机制,网页游览器中的多标签游览和可变尺寸的小工具。
+
+![Motorola Xoom](https://cat.yufan.me/cats/ame/Motorola-Xoom-3G.jpg)
+
+因为只有平板可以运行蜂巢,所以市面上很少有预装此Android系统的设备,并且预装此系统的大部分设备都已升级到更高的版本。
+
+经典的运行蜂巢系统的设备:Motorola Xoom(可升级到Android 4.1 果冻豆系统)、华硕Eee Pad变形金刚(可升级到Android 4.0 冰淇淋三明治系统)和Samsung Galaxy Tab 10.1(可升级到Android 4.1 果冻豆系统)。
+
+# 四、Android 4.0 冰淇淋三明治(ICS)
+
+在2011年10月公布的冰淇淋三明治系统是一款支持智能手机和平板的Android版本。它也为智能手机设计了Holo界面,还同时带来了稳定性的提升、更简单的文件夹创建方式、人脸解锁和一个全新改进的摄像头应用。
+
+![Galaxy S3是最流行的运行冰淇淋三明治系统的手机](https://cat.yufan.me/cats/ame/galaxy-s3-front.jpg)
+
+运行冰淇淋三明治系统的流行设备:Samsung Galaxy S3(可升级到4.1 果冻豆系统)、HTC One X(可升级到4.1 果冻豆系统)、Samsung Galaxy Nexus(可升级到4.2 果冻豆系统)、Motorola Droid Razr HD和Sony Xperia T(可升级到4.1 果冻豆系统)。
+
+# 五、Android 4.1 果冻豆
+
+于2012年7月推送的Android 4.1 果冻豆系统是对冰淇淋三明治版本的一个增量更新,尽管只是简单的更新,但此版本却非常值得关注。
+
+它带来了名为Project Butter的功能,此功能的是为使Android更加流畅没有滞后而设计的。其他的功能还有可扩展的通知和Google Now——一个智能化的个人助理软件。如果你想更加了解Google Now,请关注我们的后续文章。
+
+流行的运行果冻豆4.1系统的设备:Nexus 7(可升级到4.2 果冻豆系统)、Samsung Galaxy Note 2、HTC One、Sony Xperia Z 和 LG Optimus G Pro。
+
+# 六、Android 4.2 果冻豆
+
+在2012年底11月发布的Android 4.2 果冻豆系统是对4.1的又一次增量升级(这也是为什么最近的两个版本号使用相同的名称),但是新版本仍然包含许多特色功能。这些分别有:包含手势输入的新键盘、电量控制通知、锁屏组件和为平板准备的多用户账户设定。
+
+![Nexus 4 和 Nexus 10 均为第一台运行安卓4.2系统的设备](https://cat.yufan.me/cats/ame/Nexus-7-10-4-aa-1-1600-645x430.jpg)
+
+安卓4.2的另一个大的改进便是Photo Sphere(全景拍摄功能),它是一款360°全景拍照的软件,你可以把它的拍照效果想象成谷歌地图中的街景展示的那样。如果你想深入了解此项功能,建议你最好还是亲身尝试一下吧。
+
+流行的运行 4.2 果冻豆系统的设备:LG Nexus 4、Samsung Nexus 10、Samsung Galaxy S4。
+
+# 七、那么你应该如何选购?
+
+当你漫步于安卓平板和智能手机市场中时,如果想要做出理想的选择,你必须清楚地了解Android系统的版本。
+
+如果你的预算并不是很高,你最好还是看看那些运行Android 2.3姜饼或者Android 4.0 冰淇淋三明治的手机。当你在两台售价相同的设备间犹豫不决时,唯一值得你放弃的便是显示屏像素低的那一台,而不是总选择Android版本高的设备。显示屏像素高不仅仅意味着更好的用户体验,还意味着你将能在谷歌应用商店中运行几乎全部的应用。有些应用已经放弃了对2.3版本的手机的支持,但是大多数应用还是可以运行的,不能打开的仅仅是少数。
+
+![Android版本的进化,酸橙派据说可能是Android 5.0系统的命名](https://cat.yufan.me/cats/ame/Evolution-baby.jpg)
+
+当你进入中端市场时,你的选择将更加丰富,但是你的大部分选择点将是那些运行Android 4.0 或者是 4.1 系统的设备,比如我前面列举的那些。但是如果你实在是无法放弃某些对于你的生活看起来极其重要的功能,那么请选择运行Android 4.1 的智能手机或者平板。——你以后会感激我的。
+
+在高端市场中的选择尤为丰富,但是永远,我是说绝对不要选择任何系统版本低于4.1的 Android设备。如果你正在寻找最顶级的设备你应该去选择Galaxy S4、HTC One或者是索尼Xperia Z。但是如果你愿意降低一点标准(并且省一些钱的话),Nexus 4 是一个很棒的选择。
+
+![](https://cat.yufan.me/cats/ame/Google-LG-Nexus-4-aa-2-1600-645x430.jpg)
+
+Nexus 4是一款最便宜的高端智能手机,零售价在300美元左右(水货)。在平板市场上,你同样不要去购买那些系统低于 4.1 版本的设备,最好的选择就是 Nexus 7,售价199美元起(水货),运行着最新的Android版本。如果你愿意多花一点钱,Nexus 10便是最好的选择,如果你想找一台像笔记本一样的平板,那么华硕的Transformer Pad Infinity便是你所需要的设备。但是,如果你寻找一台有扩展内容的平板,唯一的可有选择便是三星的Galaxy Note 8.0或者是三星Galaxy Note 10.1。
+
+# 八、结束语
+
+希望你喜欢今天的《小白成长之路》系列,我将在下周发表本系列的下一篇文章,如果你有任何与Android有关的问题,欢迎在留言中提问,我将会进行一一回答。
+
+----
+
+* 原文:http://www.androidauthority.com/android-versions-explained-219564/
+* 翻译:[雨帆](http://yufan.me),转载时请保留译文链接和原文链接。
diff --git a/source/_posts/2013-07-28.md b/source/_posts/2013-07-28.md
new file mode 100644
index 0000000..8b5ade4
--- /dev/null
+++ b/source/_posts/2013-07-28.md
@@ -0,0 +1,36 @@
+---
+title: 难得的午后
+tags:
+ - 杂思
+ - 迷茫
+categories: 文章
+permalink: afternoon-nap
+featureImage: https://cat.yufan.me/cats/20130727222620.jpg
+id: 108
+updated: '2015-04-16 05:08:11'
+date: 2013-07-28 06:26:33
+---
+
+时常会望着天空,周遭的喧嚣便会变得平静。我并不明白存在的意义,就像我们追逐着的世界。若是我们能忘记目的地,你说,会是平淡的快乐,还是空洞的烦恼?
+
+——题记
+
+
+
+假期终于到了,不用上课、不用开会、不用干些七七八八的事,可是我躺在床上想要午休却因为腰酸怎么也睡不着。而其实我想说我是个很懒的人,不爱读书、不爱工作、更不爱运动。曾想过减肥变苗条点,可经过几天的训练,便腰酸背疼腿抽筋地放弃。想起前不久听献血英雄报告会的情形,那位略夸张的大爷说:“每次献完血,腰也不酸了,腿也不疼了,肩周炎也好了,腰椎肩盘突出也康复了。”我想,如果这是事实,那此刻就抽干我的血吧!
+
+有时会莫名怀念高中的生活,那种充实的节奏不会让我迷茫。每天有该完成的事,虽然更多的是自己不太乐意的。不过我真的想念以前翘课、泡小店、打牌、喝咖啡、听歌、闲聊的午后时光。
+
+而有时觉得大学的生活十分错乱,看见身边的人一个个找到自己的目标在努力,而自己却总在原地踏步。看见人才市场人头攒动的样子,心中就隐隐害怕。一直在追求一种可以一杯茶一本书坐一下午的日子,可是我一度为了感情惶惶不可终日,又在社交网络上浪费了太多精力。恍然间发现自己与别人间的共同话题越来越少,距离越来越远……
+
+上大学前无论多么放纵都不会有负担,可上大学后一干坏事,一拒绝不想参加的活动别人就说你是社团干事。可是,谁叫自己当初选择了呢?现在爆个粗口别人会说你是主席,要注意形象,有得必有失真的是亘古不变的真理。还记得初中时的班训是:既然选择了远方,那就风雨兼程。
+
+是吧?自己选择的路,跪着也要走完。虽然岁月是把杀猪刀,虽然我也明显感觉自己老了。但20出头,依然是一个奋斗的年代。
+
+>午后的阳光,成就了我的天堂。
+>绕着树林旋转,听落叶踩碎的声响;
+>看湖面的涟漪,一圈圈散去——散成悲伤。
+>吹面不寒的东风,却溢满了深深的惆怅;
+>舞动的杨柳,孤芳自赏。
+>张开双臂,想要飞翔,奔跑的快乐想要与你分享。
+>可终究无人来解,我的失意徜徉!
diff --git a/source/_posts/2013-07-29.md b/source/_posts/2013-07-29.md
new file mode 100644
index 0000000..f6f49fe
--- /dev/null
+++ b/source/_posts/2013-07-29.md
@@ -0,0 +1,141 @@
+---
+title: 小白成长之路:安卓皮肤详解
+tags:
+ - Android
+ - 翻译
+categories: 学习
+permalink: back-to-basics-android-skins-explained
+featureImage: https://cat.yufan.me/cats/ame/Android-Authority-Back-to-Basics-645x434.jpg
+date: 2013-07-29 13:29:42
+---
+
+欢迎回来朋友们,在小白成长之路系列中我们将详细讲解Android的每一个层面,以此让你理性地选择出适合你的Android设备。
+
+本周的小白成长之路系列我们将探讨运行在你的安卓设备顶层的皮肤。如果你错过了上周有关Android版本的文章,你可以[点击此处](/android-versions-explained/)进行阅读。好了,让我们首先来解释什么是皮肤。
+
+
+
+所谓的皮肤就是运行于你的Android设备最前端的覆盖(译注:将其理解成一块透明的画布)。每个厂商都会设计各自的皮肤,有些会增加特色功能,有些会修改你的Android设备的界面。厂商这么做的理由是为了将自己同其他的设备制造商区分开来,并且同样也为了增加他们自己的服务和应用,这也是对谷歌基础应用的补充。
+
+现在我们将详解大多数主流皮肤的主要特性。这些皮肤中将包含:由三星提供的TouchWiz的两个最新版本、HTC专享的Sense的最近两个版本、LG的Optimus UI、索尼的Xperia UI和华为的Emotion UI。我们同样将会回顾原始的Android版本,那么下面来看看我们的比较结果吧。
+
+# 一、TouchWiz Nature UX 1.0(运行于 Android 4.0/Android 4.1)–三星出品
+
+在2012年第一眼看到三星 Galaxy S3的时候,我便觉得皮肤的设计十分接近自然。从壁纸到锁屏界面,甚至是事件提示音,整个用户界面都是以自然为中心进行设计。事实上Galaxy S3的目标便是:“为人类设计,灵感源自自然。”
+
+TouchWiz 以它丰富的功能和多彩的界面而出名,但是有批评指出它的软件拖慢了系统,并且有些功能的运行效果并不如广告中说的那么好。TouchWiz 皮肤同样附带了几个三星的应用,如:音乐播放器、三星应用市场、S 语音、S 备忘录、S 日程计划。
+
+TouchWiz Nature UX 还包括如下功能:
+
+ * 智能等待(Smart stay):本功能使用前置摄像头追踪用户的眼球,当检测到用户的眼睛正在看着屏幕的时候就会阻止屏幕暗下去或者自动关闭。
+ * 多重视图(Multiview):Multiview允许你同时在一个屏幕上打开运行两个程序,然而此项功能仅在三星的高端设备中可用。(参考上面的截图。)
+ * 弹出式播放(Pop up Play):弹出式播放能在界面的最顶部播放一部电影或者是视频而无需在意你在做什么。
+ * S-播送(S-Beam):S-Beam能让你和其他的 三星 Galaxy S3 手机或者是 Note 2 手机分享视频、音乐、照片或者是联系人。
+ * 快速连拍(Burst photo):快速连拍能一次性连续快速地拍摄20张照片,在游泳池水底也能完美地拍照。
+ * S 语音(S Voice):S Voice是三星版本的Siri,它是一个可以回答问题和改变设置的助理。
+ * 直接拨号(Direct Call):当你举起手机到头部时,Direct call能自动拨打正在和你短信聊天的人的电话。
+ * 浮窗预览(仅在Note系列中可用):当你将你的S Pen(触控笔)悬浮在相册或者是短信上时,浮窗预览可以预览你的照片或者是短信。
+
+运行 TouchWiz Nature UX 1.0 的主流设备有:三星Galaxy S3、三星 Galaxy Note 2、三星 Galaxy S3 迷你版、三星 Galaxy Ace 2、三星 Galaxy Note 10.1
+
+# 二、TouchWiz Nature UX 2.0(运行于 Android 4.2 上)–三星出品
+
+TouchWiz Nature UX 2.0 构建于 TouchWiz Nature UX 1.0 基础之上,并首次于三星 Galaxy S4 上亮相。其大部分设计和原来的相同,但是锁屏界面和应用设置有稍微的调整,同样还增加了一些新的功能(列举于底部的截图中)。
+
+2.0版本的 TouchWiz 公认比以前的版本更加细腻,然而它仍然被批判拖慢了系统。
+
+
+
+TouchWiz Nature UX 2.0 带来的功能的有:
+
+ * 智能暂停(Smart Pause)和智能滚动(Smart Scroll):智能暂停将会追踪你的眼球,当你的视线转移到别处时,此功能将暂停你正在观赏的视频,防止你从未错过你最爱的视频的任何一个精彩瞬间。智能滚动通过追踪你的眼球的运动使得你可以用眼睛滑屏。
+ * 浮动预览(Air View)和浮动手势(Air Gestures)(仅支持某些设备):浮动预览(前面翻译为浮窗预览)是仅在Note系列上才有的扩展功能。然而,与早期需要S触控笔所不同的是,它现在同样支持你的手指悬浮,允许你预览照片或者邮件,甚至是快速拨号。浮动手势能让你轻松唤醒手机、在游览器和相册中滚动、切换曲目。
+ * S 翻译(S Translator):本功能通过你输入或者口述的想说内容,自动朗诵出你选择的目标语言的翻译文本,并且它同样能翻译别人对你说的话。此功能目前支持的语言有:葡萄牙语、中文、英语、法语、德语、意大利语、日语、汉语、西班牙语。
+ * S 健康(S Health):S 健康所关注的是你每日的卡路里摄入量、体重和锻炼量,它能通过内置的计步器记录你的日常普通的运动量(仅在包含内置计步器的设备上可用)。它同样能通过心脏速率监视器和体重计同步记录。
+ * 双摄像头(Dual Camera):双摄像头允许用户同时使用前后置摄像头来拍照或者是录像,并能将摄像师取景。
+
+运行 TouchWiz Nature UX 2.0 的知名设备有:三星 Galaxy S4、三星Galaxy Mega 5.8、三星Galaxy Mega 6.3、三星Galaxy S4 迷你版、三星Galaxy S4 Zoom、三星Galaxy S4 Active
+
+# 三、Sense 4(运行于 Android 4.0/4.1之上)–HTC荣誉出品
+
+HTC的Sense UI与三星在皮肤上的专注方向完全不同。当三星尝试尽可能多地添加功能时,HTC却转而尝试构建一个非常棒的用户体验设计,而绝非加入一大堆乱七八糟的功能。两者价值观不同,但是如果你并不使用TouchWiz上的任何独有功能,那么转而使用HTC没什么好在意的了。
+
+去年推出的环形解锁一直保留到现在,还有著名的HTC Sense 时钟也依旧保留,但是整体的界面全部被简化以更加吸引人。旧版本中令人困扰的前端3D动画效果被去除掉了。
+
+整体上而言,新版本提供了更轻便、更灵敏的体验,然而有些人评价说界面的设计已经远离Android本质误入歧途,尤其是多重任务部分。
+
+![](https://cat.yufan.me/cats/ame/HTC-Sense-4.0.jpg)
+
+运行 HTC Sense 4 的主流设备:HTC One X、HTC One X+、HTC Droid DNA、HTC One S、HTC Desire X。
+
+# 四、Sense 5(运行于 Android 4.1 之上)–HTC制造
+
+HTC的Sense 5是对Sense皮肤的重大的改革版。浮动3D动画、传说中的解锁环、色彩更加丰富的用户界面。相反的是,我们看到的是一个更加精简、更加灵活的Sense版本,并且它的BlinkFeed功能还从Windows Phone上获取了些许设计思路(后来更多)。
+
+总的来说,Sense 5看起来改进了很多,现代化的用户界面和一些漂亮的功能都很不错。然而它被批评于没有给用户去除BlinkFeed页面的选项。
+
+HTC Sense 5 的一些功能:
+
+ * BlinkFeed:BlinkFeed是位于你的主屏上的一个展示新闻信息和社交媒体的滚动页面,能让你和朋友、家人保持密切的联系。把它看做是Windows Phone和Flipboard的结合产物。
+ * HTC Zoe:本功能能在一瞬间抓拍20张照片或者是3秒钟的录像。
+ * Sense 语音(Sense Voice):Sense 语音通过麦克风探测环境的音量来调节听筒的音量来保证你能听到电话另一头的声音,无需担心身处的环境是多么地嘈杂。
+
+
+
+知名的运行HTC Sense 5的设备:HTC One(HTC的其他设备将在未来更新到此版本)
+
+# 五、Optimus UI(运行于Android 4.1上)–LG荣誉出品
+
+LG是目前市场上的第二大韩国手机制造商,LG的Optimus UI是一款深度定制的用户界面。你可以改变它的屏幕切换方式、应用图标和界面的主题。它同样有自我开发的类三星多重视图的功能,其名为QSlide,能让你在智能机上执行多任务操作。
+
+LG的Optimus UI的一些功能:
+
+ * 快捷备忘录(QuickMemo):快捷备忘录让你快速在屏幕上注释,即时记录下你的灵感瞬间。
+ * QSlide:类似多视窗的功能,通过QSlide功能你可以在屏幕上运行多个小程序,如:视频播放器、网页游览器或者日历。
+ * VR全景照相(VR Panorama,仅仅在支持的设备上可得):VR全景照相是对一般意义的全景照相的升级版,能让你拍摄360度的全景照片,它和原版Android上的Photosphere 功能极其相似。
+ * 双重录像(Dual recording,仅在部分设备上支持):双重录像能让你同时使用前置+后置摄像头进行拍摄
+
+
+
+运行Optimus UI的设备:LG Optimus G、LG Optimus G Pro。
+
+# 六、Emotion UI(最低支持Android 4.1版本)–国产华为出名
+
+单就华为的Emotion UI的可自定义程度而言,的确是非常与众不同的一款皮肤。和前面提到的Optimus UI一样,Emotion UI可以更换设备的主题,但是Emotion UI的主题资源更加丰富,还有更多的漂亮主题正在被添加。
+
+Emotion UI是一款优雅且深度定制的用户界面,但是还是有很多人认为它过于保守。
+
+
+
+市面上运行Emotion UI的设备:华为Ascend P6、华为Ascend Mate。
+
+# 七、Xperia UI(支持Android 4.0/4.1版本)–索尼制造
+
+Xperia UI是一款深色、典雅的用户界面。它与索尼的各种服务完美结合,提供了极佳的用户体验。通过Xperia UI你可以访问:索尼音乐、无限视频,或者是PlayStation商店来购买你最喜欢的PS One游戏。
+
+索尼同样提供了一个名为小应用的功能,此项类多任务功能旨在让你能同时打开计算器、秒表、记事本一类的应用(小编吐槽:有个蛋用)。虽然Xperia UI非常漂亮,但是你也许不会喜欢它的像冰淇淋三明治(Android 4.0)般的外观。
+
+
+
+运行Xperia UI的设备有:索尼Xperia Z、索尼Xperia ZR、索尼Xperia T。
+
+# 八、原版Android 4.2果冻豆–Google出品
+
+原版的Android是所有前面提及的布局和皮肤的底层系统。它由于其原始外观而流行,事实上运行原版Android系统的设备总是最先获取系统更新的。(比如现在的Android 4.3 更新)
+
+然而,大部分人还是喜欢定制化的皮肤和界面,因为有附加的定制性和皮肤自带的特色功能。
+
+
+
+# 九、结束语
+
+当你选择适合你的皮肤时,请考虑你的使用方向。虽然三星在TouchWiz上提供的很多功能初次看起来都很赞,但是请考虑一下,事实上你能用到几次?
+
+如果精简、现代感的皮肤是你的最爱,那么HTC的Sense 5或者是索尼的Xperia UI可能就是最适合你的。如果你喜欢丰富的个性化定制功能,那么LG的Optimus UI或者华为的Emotion UI便是绝对最棒的选择。但如果你只是想要获取最新的软件更新,也许原本未修改的Android系统是你应该选择的。
+
+希望你喜欢今天的《小白成长之路》系列,我将在下周发表本系列的下一篇文章,如果你有任何与Android有关的问题,欢迎在留言中提问,我将会进行一一回答。
+
+----
+
+* 原文:http://www.androidauthority.com/back-to-basics-android-skins-explained-232018/2/
+* 翻译:[雨帆](http://yufan.me),转载时请保留译文链接和原文链接。
diff --git a/source/_posts/2013-08-02.md b/source/_posts/2013-08-02.md
new file mode 100644
index 0000000..32db013
--- /dev/null
+++ b/source/_posts/2013-08-02.md
@@ -0,0 +1,34 @@
+---
+title: 城里的月光
+tags:
+ - 思念是一首诗
+ - 杂思
+categories: 文章
+permalink: the-moonlight-in-city
+featureImage: https://cat.yufan.me/cats/20130802144831.jpg
+id: 109
+updated: '2015-04-16 05:08:40'
+date: 2013-08-02 23:51:26
+---
+
+听着许美静的《城里的月光》,不由得想起童年读过的一句小诗:梦中每迷还乡路,愈知晚途念桑梓。
+
+对于家乡,思念的情感是难以割断的,而且会越来越萦纡在脑海的深处,形成可以称之为追忆的东西。每颗心上某一个地方,总有个记忆挥不散,每个深夜某一个地方,总有着最深的思量。无论你离家多久、离家多远,这一份浓浓的乡愁不会随着时间淡化,毕竟“月是故乡明”。
+
+
+
+回忆往昔,恍然若梦。在泉城已经度过的四年。韶华流水,指间流沙,如今即将毕业我已站在了又一个新的起点上。似乎直到现在,故乡对于我来说一直是遥远的东西,那些与我有关的痕迹已经渐渐淡去,那个偷偷写小纸条表白的小姑娘,现在又在哪里?电影里面说着念念不忘,必有回响,可现实却是名为残酷的玩意。
+
+>谁念西风独自凉,萧萧黄叶闭疏窗,沉思往事立残阳。
+>
+>被酒莫惊春睡重,赌书消得泼茶香,当时只道是寻常。
+
+初读此诗的时候还在初中,当时的我只觉得这首词写的很有特色,纳兰性德文笔很好。那时的我并不懂得离合悲欢,不懂无奈。离家多年后,再一次从昔日的软文抄里面找到这篇《浣溪沙》,才恍然领悟名为寻常与珍惜的情绪。
+
+旧城往事,布满了记忆的青苔,时光是令人精神错乱的迷雾,恍然间已是夜未觉夜、华灯映射的都市。携一曲《城里的月光》,愿在这静静的夜里带走游子的愁绪,让旋律裹挟着以往快乐的片段,伴着泪水,在无声的悲伤中,迷失着自我。但愿今晚的月光能守护在你身旁,让追忆在远方游荡。城里的月光把梦照亮,请守护它身旁。若有一天能重逢,让幸福撒满整个夜晚。
+
+世间万千的变幻,爱把有情的人分两端。心若知道灵犀的方向,那怕不能够朝夕相伴。我想,人的一生会遭遇无数次相逢,有些人是你看过便忘了的风景,而有些则会在你心底生根发芽。而我所知道的是,这一路会走得坎坷,走得艰辛,这人生的坎坷会让我明白谁是我要的寻找的那片月光,是我沧海桑田的家。爱是茫茫人海中不期然的相遇,像一场修行,修行的路像一首幽缓平静的曲调,意境优美、起落有致。
+
+城里的月光映照着远行人的脚步,愿读此文的你能倾听到相仿的“回响”,享受那都市里如初的寂寞。
+
+![月光守望者](https://cat.yufan.me/cats/20130802144832.jpg)
diff --git a/source/_posts/2013-08-07.md b/source/_posts/2013-08-07.md
new file mode 100644
index 0000000..4178435
--- /dev/null
+++ b/source/_posts/2013-08-07.md
@@ -0,0 +1,50 @@
+---
+title: 害怕死亡
+tags:
+ - 原创
+ - 死亡
+categories: 文章
+permalink: fear-of-death
+featureImage: https://cat.yufan.me/cats/20130807085219.jpg
+id: 110
+updated: '2015-04-16 05:09:41'
+date: 2013-08-07 16:52:58
+---
+
+> 此刻有谁在世上某处走, 无缘无故在世上走, 走向我。
+此刻有谁在世上某处死, 无缘无故在世上死, 望着我。
+>
+>——里尔克《严重的时刻》
+
+
+
+怕死是每个人都有的特点,小时候做梦梦到死去后的世界,常常会惊醒。长大后思考起死亡,我会想我要如何活好一辈子。看老舍的《我这一辈子》是在高二,当时的感触已经忘得7788了,但是忘不去的却是人生的短暂与无奈。
+
+有时候觉得时光短暂,一转眼都20好几了,有时候越觉得好无聊,人要活这么久会不会很累。人就是这样自我矛盾与思考的动物,也许也正是有着复杂的唯心世界观,也才有了丰富的人生。有人说:“活着就朝着自己的目标去好好奋斗着,就算是失败又有何妨?而死亡只是一句简单的晚安,一种深层次的告白与解脱。”可是,到了真正面对死亡时,又能有几个人能淡定?
+
+一年前的时候我曾尝试着写死亡这个话题,对于死亡,试图长篇大论,结果是自己思维的渺小与肤浅。或许,正因为没有真正接触过,所以只能是一些只言片语。我只是觉得,太多人,对于死亡的思考,并不够深入。或者因为各种各样的忌讳,难于说出口。没错,这不是个轻松的话题,但相对生,面对生命的另一个端点,我们是如此漠视并恐惧死亡。但是如果不看清死亡,那生命的意义,我们至多理解了一半而已。对于死亡的思考的力度决定了我们生活的深度。
+
+死亡是一个令我们忌讳的话题,可是谁能不面对呢?想想今后的自己,或许还要面对亲人的离去,心中不禁一寒。生命总是很脆弱,任何人,不论生前多么波澜壮阔或是波澜不惊,到最后的存在,只是那样一个小盒子,很残酷!
+
+16年前我的叔叔因病去世;10多年前,我还模糊记事的时候,我的小姑便因车祸离世;3年前,我最挚爱的爷爷,因为病痛合上了双眼;一个月前,我那受了一辈子气的奶奶被查出癌症晚期。电话里和奶奶唠叨的时候,她絮叨着活着一天赚一天。生与死,转瞬之间,有时快得让人不知所措。
+
+想起2年前的深夜和舍友一起看的电影《时间规划局》,生命变成了货币,人们可以永远不老不死,只要你有钱(时间)。有几幕我特别难忘:那位施舍了男主角一个世纪时间的富人,用最后的五分钟看着这个世界,然后,五秒的死亡倒计时开始。一对母子疯狂地跑向对方,母亲却没有多出一秒钟的时间,还是死在儿子怀里……每个人的死亡时间都是可知,那种恐慌,那种生活,让人不知所措。
+
+1年前开始考虑写死亡话题时,我尝试着翻了翻陆幼青的《死亡日记》,时至今日,我依旧无法理解陆幼青的那份面对死亡的坦率与自然。对于我而言,缺乏的还是深度的思考,生命的沉重并不如死亡那么坦率。
+
+活着便是一切,我无法说我不害怕死亡,但也正是因为害怕,活着便有了意义,有了向前奋斗的动力,不是么?
+
+>“不能照例说再见的,虽然我们总要再见。
+>且让我们入静,无论我们在哪里。正在干什么。
+>在你去过的一座遥远的山里,向阳的山坡,
+>在一段久没有人走过的田埂,草丛中,
+>在枯涩昏黄的台灯光圈外。冷落的花盆中,
+>在为典礼而忙碌的皇家园林中,精致的圣坛,
+>有一些小小的,名叫向日葵的植物在生长,
+>笑脸为形,真金为色,且懂得寻找阳光,
+>让我们入静,
+>意念春光,静享人生……”
+>
+>——《死亡日记》的休止符
+
+![秋叶之凄凉](https://cat.yufan.me/cats/20130807085218.jpg)
diff --git a/source/_posts/2013-08-11.md b/source/_posts/2013-08-11.md
new file mode 100644
index 0000000..b74f0ce
--- /dev/null
+++ b/source/_posts/2013-08-11.md
@@ -0,0 +1,99 @@
+---
+title: 小白成长之路:手机屏幕技术详解
+tags:
+ - Android
+ - 翻译
+categories: 学习
+permalink: screen-technology-explained
+featureImage: https://cat.yufan.me/cats/ame/Android-Authority-Back-to-Basics-645x434.jpg
+date: 2013-08-11 16:21:42
+---
+
+欢迎回来朋友们,在小白成长之路系列中我们将详细讲解Android的每一个层面,以此让你理性地选择出适合你的Android设备。
+
+在本周的小白成长之路中,我们将专注于你的设备中你花费最长时间盯着看的地方——屏幕,是时候探讨屏幕技术了。如果你错过了上周有关Android版本的文章,你可以[点击此处](/back-to-basics-android-skins-explained/)进行阅读。
+
+
+
+俗话说,没有两块屏幕是一模一样的,但是还是有一些助于你选择屏幕的参考。从屏幕的分辨率、像素密度、屏幕的类型甚至是尺寸等,决定屏幕好坏的参数实在是太多了。但是别担心,继续往下读,我们将解释如何挑选智能手机和平板上的屏幕。
+
+# 一、屏幕分辨率和像素密度
+
+对于你的屏幕而言,你可能最为关心的一件事便是它的分辨率和像素密度(PPI,像素每英寸)。由于安卓设备拥有着庞大的规模和价格范围,所以屏幕的分辨率有很多种,我们将只讨论主流的几种。
+
+屏幕分辨率通常写成宽乘高的格式(例:800 x 480 表示屏幕是800像素宽、480像素高),下面列举的时常见的一种屏幕分辨率
+
+分辨率 | 俗称 | 简介
+--------|------------|-----------
+240x320 | N/A | 此种屏幕分辨率通常用在很小的屏幕上,主要以廉价手机为代表。
+320x480 | N/A | 此分辨率同样用于小屏幕上(主要是4英寸的屏幕),也是廉价手机的首选。
+480x800 | WVGA | 几年前还是最高的分辨率,在很多高端设备中还能找到它的影子,比如三星Galaxy S2。但是现在它是搭载小于5英寸屏幕的中端智能手机采用的主流分辨率。
+960x540 | qHD | 这也是几年前高端手机的分辨率,现在同样用于中端手机中。
+1280x720 | HD/720P | 去年被分类到高端手机中,定义为高清屏。一些顶级中端和高端的手机、平板中使用了此分辨率。
+1920x1080 | 全高清/1080P | 通常用于电视机,全高清的手机在今年有了一个跨越式的发展。但是现在全高清的屏幕仅在某些高端智能手机和平板上使用。
+2560x1600 | WQXGA | 这是目前在Nexus 10上使用的令人疯狂的高分辨率,仅在高端平板上使用。
+
+![Nexus 10带来了令人疯狂的高像素](https://cat.yufan.me/cats/ame/xperia-tablet-z-vs-nexus-10-aa-10-display.jpg)
+
+当谈及屏幕分辨率是有很多参数可以考虑。手机的价格越便宜、屏幕越小,自然分辨率也就越小,相反地,高端设备中屏幕越大,分辨率也就越大。
+
+对于屏幕的整体清晰度而言,像素密度尤其的重要,这影响到网页和电子书的阅读体验。像素密度的变化用屏幕分辨率和尺寸共同决定。如果屏幕很大,但是分辨率很低,那么PPI(像素每英寸)就会很低。高于300PPI意味着极佳的现实效果,低于100PPI就会显得尤其模糊,在100~300PPI之间的屏幕清晰度还算马马虎虎。
+
+目前主流的观点是,300PPI以上的屏幕显示效果极佳(视网膜屏幕的首选,译注),在这样的屏幕中你将看不到任何锯齿线和像素点。低于200PPI的屏幕显示效果很差,通常用于低端设备中。200~300PPI之间的屏幕主要是中端设备的首选。
+
+# 二、什么是LCD屏幕?
+
+LCD就是液晶屏幕(Liquid Crystal Display),也是手机设备中最流行的一种屏幕。流行的原因主要是它的耗电量低,图片成像效果很棒。
+
+## 2.1、TFT屏幕
+
+最为流行的LCD屏幕就是TFT屏幕,也叫薄膜晶体管屏幕(Thin Film Transistor)。此款屏幕在手机上日益流行。
+
+>TFT屏幕提供更棒的对比度和快速的响应时间,但是价格更贵,能耗更高。
+
+它的每个像素就是一个晶体管,因此可以控制每个像素独立的开闭。这样的设计提升了传统LCD屏幕的响应时间和更高的对比度,然而也因此耗电量很大、价格更贵。
+
+## 2.2、IPS 面板
+
+一些高端手机和平板中使用IPS(平面转换)面板,也就是TFT面板的一种,但是此面板克服了某些传统TFT LCD 面板的缺点。IPS 面板从各个角度都能显示一致和准确的色彩。因此,它比一般的TFT屏幕要有更广的视角,对于一群人围在一起看视频时尤其的重要。
+
+## 2.3、超级 LCD
+
+三星制造,用的最多的还是HTC,超级LCD是一种移除了外玻璃和屏幕元件之间的空气间隙的技术。此技术比起一般的LCD屏幕减少了强光,同样意味着耗电量的降低和和更好的户外视觉效果。
+
+![左侧HTC One 展示的超级LCD3 屏幕,右侧Xperia Z展示的一般TFT屏幕](https://cat.yufan.me/cats/ame/htc-one-vs-sony-xperia-z-both-standing-aa.jpg)
+
+最新版本的超级LCD是超级LCD3,比起前几个版本要更省电。目前用于HTC Butterfly、HTC Droid DNA 和 HTC One。
+
+# 三、什么是 OLED 屏幕?
+
+OLED 就是有机发光二极管(Organic Light-Emitting Diode)的意思,OLED屏幕由有机聚合物组成,通电是便会发光。它比起传统LCD屏幕提供了更多的优势,比如更薄、更亮、更省电并且视角更广。它提供了更好的对比度和更快的响应时间
+
+手机设备中最流行的OLED面板就是AMOLED技术。AMOLED意为有源矩阵有机发光二极体面板(Active Matrix Organic Light-Emitting Diode)比起标准的OLED屏幕要更省电。
+
+AMOLED最大的工厂是三星,市场将它的屏幕冠名为超级AMOLED。大多数三星的高端、旗舰设备使用AMOLED屏幕,然而还是有一些使用的是LCD屏幕。
+
+![常规的子像素的结构和PenTile矩阵结构的比较](https://cat.yufan.me/cats/ame/samsung-oled-pentile-matrix-comparison.jpg)
+
+三星已经在它的屏幕中使用PenTile矩阵排列了,此种技术使用两种主要的像素间隔一个像素的结构,我们叫它RGBG(红-绿-蓝-绿,Red-Green-Blue-Green)结构。有些人批评说PenTile屏幕会整体模糊,但是大部分人在高像素密度的屏幕中模糊不是那么明显。三星使用的PenTile矩阵排列可以使屏幕的寿命更长,OLED面板上的三大主像素中,蓝色像素是损耗最快的像素。
+
+# 四、AMOLED 与 LCD:哪一个适合你?
+
+两个屏幕技术都有各自的优劣之处。AMOLED屏幕有更好的视角和深度,真正的黑色。但是LCD屏幕提供更准确的色彩显示。虽然眼睛看起来AMOLED屏幕更亮,但是在阳光直射下LCD屏幕看起来更好。
+
+AMOLED屏幕整体上趋于节能,但是LCD屏幕在显示网页时更加省电。AMOLED有更棒的可视视角,但是LCD屏幕在低像素屏幕上显示效果更清晰。这是因为LCD使用RGB结构而不是PenTile RGBG。
+
+![Galaxy S4(左边)使用超级AMOLED屏幕,HTC One(右侧)使用超级LCD3屏幕](https://cat.yufan.me/cats/ame/galaxy-s4-vs-htc-one-display-0068-645x429.jpg)
+
+当然,那些寻找市面上廉价平板的人们目前还是无法体验AMOLED屏幕的魅力(除非是在三星的早期Galaxy S系列上),所以此类人群应该更多去关注LCD屏幕。中端设备的用户面临同样的情况,然而,还是有一些中端设备使用AMOLED屏幕。在高端市场上最大的问题是哪一款屏幕技术才是你觉得最棒的呢?
+
+# 五、总结
+
+总体上而言,选择AMOLED还是LCD就是看你是喜欢广度视角和真实黑色还原,还是喜欢清晰的色彩和阳光下的使用。平板市场中你的屏幕选择没有余地,因为它们几乎只用LCD屏幕。
+
+希望你喜欢今天的《小白成长之路》系列,我将在下周发表本系列的下一篇文章,如果你有任何与Android有关的问题,欢迎在留言中提问,我将会进行一一回答。
+
+----
+
+* 原文:http://www.androidauthority.com/screen-technology-explained-235552/
+* 翻译:[雨帆](http://yufan.me),转载时请保留译文链接和原文链接。
diff --git a/source/_posts/2013-09-22.md b/source/_posts/2013-09-22.md
new file mode 100644
index 0000000..73a21a2
--- /dev/null
+++ b/source/_posts/2013-09-22.md
@@ -0,0 +1,33 @@
+---
+title: 皓魄当空宝镜升,云间仙籁寂无声。
+tags:
+ - 中秋
+ - 思乡
+ - 杂思
+categories: 文章
+permalink: mid-autumn-festival
+featureImage: https://cat.yufan.me/cats/20130921211546.jpg
+id: 111
+updated: '2015-04-16 05:09:57'
+date: 2013-09-22 05:16:57
+---
+
+往日思绪缱绻,起舞于静夜暗自妖娆,清风徐来芳草荡,酣梦恰此时光。
+
+今晚的月光像从天堂里飘出的祈祷曲,安宁静谧,洒下一地慈悲。若不是身边的几个人正谈笑生风,真会让人觉得这清越微凉的月色有几分挽歌的意味,却不是将遁逝于无形的凄淡,而是禅意的透着一种繁华落幕,过眼无憾的泰然。这仿佛不是属于人间的安宁大气,却在此刻毫无吝意地渐次铺展开,让人觉得分外奢侈。路边的石凳上泛着累年的光亮,有多少路过的人在这儿被赐予片刻的静憩,我想,那时时光俯首的姿势也定如这刻短暂而漫长。
+
+
+
+那年灯下闹花衣,阿婆茶香绕松灯,也是在这样的细碎清光中你在桥边对我笑说你也在这里;一夜霓虹未歇,欢耍而倦的我尚能凭着年龄的优势伏在父亲的肩头酣眠,不问前路,不理夜长;闲来学人红笺寄情,只道素纸难透月中清愁,也总有那么几人捧场称好,不问真假,不理章法。朱颜年少,谁曾在你的指尖曼妙成花,谁曾在你的心池盛开年华?
+
+墨里浸染着古往,光阴败去了年华,不知什么时候,桥边的伙伴难觅,父亲也不在身旁,依旧熏风满帘渡玉兰香,绝景良时却是云间仙籁寂无声。于是,不敢再说自己寂寞,打回家的电话在极力展现境况之好;不敢再卖弄文字,朋友寒暄隐隐有了世故的成熟。前路摆在眼前,便不敢再“不问前路”了,青年已知愁滋味,便不敢再“为赋新词强说愁”。原来充满想象力的东西总是有无限的美好,而剪剪西风掠走的正是这岁月窖藏的想象力!
+
+风烟翠柳,夏花如画,是哪一年的光景中,船头清光碧波上,一行人醉笑三千,周末补课的空偷得渔村同学家里的船出湖赏光,男孩们在目光睽睽中脱得只剩裤衩纵身跃入水中,女孩们坐在船头嬉笑巧闹,泡在水里的脚荡开一湖褶皱;烟草风絮,秋日惶惶,火红的毕业花曾以一种对月临风,笙歌不散的看客姿态几度开败,也终于以这种姿态定格在我们记忆深处,一群人年少飞扬站在时光的交汇处挥手作别说着以后常联系……
+
+如今往事散场,明媚的景致放在浮萍之上,岁暮的风一吹,全散了。常联系的不多,收到信息能让你感到由衷欣喜的就更少,听说有群发,看节日祝福时也不那么在意了,发祝福的时候也会想着多一个不多,而我们也或许是别人不嫌多的那多一个。我时常固执地不去加入节日码字的大军,固执地用心编写那为数不多的几条信息,可是20多岁的我终究不敢与这个时代格格不入,年龄是财富也是束缚。
+
+黑夜如墨,朝露几许,我们总在彼此的相遇与离别中编织着一网故事,我相信总有人在为记忆的痕迹写下过往的细节。感怀的旋律中,也总有人是自己曲谱里的珍藏。时光霸道,抢夺了流年的芬芳,岁月的刻刀,也终将会划破红尘中曾相伴起舞的你我!但无论云卷间是否会把错落的年华镌藏,云散时又是否会流淌岁月滑落的故往,我都唯有珍藏,像这一刻的月色不带一点吝意地将曾经哪怕点滴的美铺展到整个生命。
+
+身边的朋友们聊到了各自小时候的事儿,思绪辗转而回,此刻天心月圆,寂寂小路一地琥珀光。今天是中秋,月中仙是否已奏起笙歌,随风而起的思念在微风里含着柔情,最后还是不得不矫情地说上句,愿岁月静好,人事圆满。
+
+![云间仙籁寂无声](https://cat.yufan.me/cats/20130921211553.jpg)
diff --git a/source/_posts/2013-10-06.md b/source/_posts/2013-10-06.md
new file mode 100644
index 0000000..e6b8abd
--- /dev/null
+++ b/source/_posts/2013-10-06.md
@@ -0,0 +1,28 @@
+---
+title: 变与不变
+tags:
+ - 原创
+ - 心路历程
+categories: 文章
+permalink: change-it-or-not
+featureImage: https://cat.yufan.me/cats/20131005205249.jpg
+id: 112
+updated: '2015-04-16 05:10:17'
+date: 2013-10-06 03:33:12
+---
+
+10年,《[雨帆](http://yufan.me)》呱呱落地。带着青春式的忧郁,一个人、一本写得满满的手抄本,一间写满喜怒哀乐的个人网站悄然面世。
+
+开始写博,怀揣着思维变成文章的激动,心存着与人交流的憧憬。沐风栉雨,日复一日,更新、留言,方知写博不易。但是时光会赞许那些努力过的人们,小小的个人网站,在光阴的洗礼下,慢慢成长。那些逝去的日子里,总有些琐碎看上去无关紧要的记忆长久地扎根在脑海。淡淡的,让你几乎发现不了它的存在。可无意中回味旧文时遇见它们,竟然会莫名地感动。
+
+
+
+旧时光是怀念的种子,好心情,难忘的事,都在《雨帆》的一点点成长中,发芽为美好的过去。
+
+2年,不长不短的时间,身边的人都变了不少。豆豆姐姐说:我已不再如从前、不想倾诉亦不再倾听。愿岁月静好!松鼠哥哥说:现在最关键的就是娶个小松鼠。咚门本科毕业,考上了研究生。而自己,也即将投身于茫茫的毕业求职大潮中。
+
+与《雨帆》一起改变一起成长的岁月,是一叠写满故事的昨天。每每想起,那些逝去的、留给博客的青春,简单而朴素,忧伤并快乐,饱满地熠熠生辉。
+
+说雨帆变了,其实也没变,依旧爱思考,依旧爱伤感。对于我而言,生活中的很多情感,藏在心底便是一种真实、深刻。一旦说出来,反而索然无味,比如爱情。但是沉默不等于不会说,而是一种积累、思考。我已不再如以前,每每遇到什么不幸就唉天叹地。相对的,看得更多,说的写的越少……
+
+沉默是成长的标志,而雨帆之变抑或为某种成熟的标志,学会如何去沉默。想想岁月亦是如此的吧,这些年来,我们过得这么似水流长,静静的,却只在深处才见暗礁和漩涡,表面却风平浪静。我想,这大概是时光的艺术。
diff --git a/source/_posts/2013-11-04.md b/source/_posts/2013-11-04.md
new file mode 100644
index 0000000..ce2ac44
--- /dev/null
+++ b/source/_posts/2013-11-04.md
@@ -0,0 +1,32 @@
+---
+title: 见与不见
+tags:
+ - 杂思
+ - 看见
+categories: 文章
+permalink: see-it-or-not
+featureImage: https://cat.yufan.me/cats/20131104123854.jpg
+id: 113
+updated: '2015-04-16 05:10:43'
+date: 2013-11-04 20:39:28
+---
+
+这段时间才入了Kindle,看见贴吧里的人都在推荐《看见》,我是这两天才看。看完之后印象最深的不是柴静本人,而是她所描写的身边的林林总总。书里废话很少,都是朴实的文字但有重量。毕竟作为一个新闻人,你能看见什么,就决定别人能看见什么。
+
+而其实我并未看过柴静主持的任何节目,只看过零星几个视频,还有别人写她的文章。但在我眼中她的书写得挺好,不是舞文弄墨的那种,而是那种信息量尤其之大,从从容容的对社会现象进行白描,特别的踏实没有戾气。
+
+
+
+如果说柴静是个好记者,那多半是因为她总是不断在自省,书中记录了她的各种转变。而每一次转变的背后都是一股强大的力量,业界前辈的教导、同行的真实经历、自我的思考……看她写的文字,总会让你觉得莫名的安心,让我觉得如果她是个作家应该也不错。
+
+书里写了:非典事件、山西煤矿、集体自杀的孩子、失地农民、吸毒的妓女,还有社会名流李安、卡梅隆、姚晨之类的。没有刻意选择标志性事件,她只选择了留给她强烈生命印象的人和事来写。
+
+通往人心的道路是最艰难的道路,一个记者可能要付出生命才能得到别人的信任。但是你又必须在这个职业当中恪尽职守,所以我觉得记者必然是个很有内涵的职业。看惯了网易新闻和其中的评论,有时候我往往会有一种从众心理,这是极其可悲的。有时事情的表面并不像我们看到的那番真实,通过她的故事一点点地认识人、感受人、理解人,然后同时一点点地看清自我……
+
+通过这本书你会接受真实的复杂无解,也或许能摆脱轻慢偏见和思维定势。在这书里你将看见生命的许多残忍,而一个人的生活,如果无法保持一颗积极的心,那必将哀莫大于心死。
+
+我一直很喜欢看这种关乎社会现象的书,尤其是关乎最底层最不为人知的一面,比如我的最爱一直是韩寒极带抨击性的文章,因为对真实任何的粉饰都显得多余。所以,《看见》毫无疑问也是我的菜。
+
+用书中的话结尾:我们都需要用点力气来生活,但如果太累了能不能就此歇着。市井人生,也不过如此。不要因为走了太远,忘了我们为什么出发?
+
+而见与不见,一切取决于心。
diff --git a/source/_posts/2013-11-19.md b/source/_posts/2013-11-19.md
new file mode 100644
index 0000000..853125f
--- /dev/null
+++ b/source/_posts/2013-11-19.md
@@ -0,0 +1,78 @@
+---
+title: 扒一扒当年的猥琐事
+tags:
+ - 杂谈
+ - 黑历史
+categories: 文章
+permalink: wretched-history-of-my-childhood
+featureImage: https://cat.yufan.me/cats/20131118232914.jpg
+id: 114
+updated: '2015-04-16 05:11:12'
+date: 2013-11-19 07:00:49
+---
+
+有道是人不猥琐枉少年,所谓宅男,鲜有不猥琐的。自古风流出少年,已然成为定理。作为即将大学毕业的大龄伪少年,我就来扒一扒当年自己做过的那些黑历史吧。
+
+故事还得从大一才进大学开始说起,所谓大四看大三的教大二的骗大一,无非不是说大一的什么都不懂,最好骗入社团,最容易被骗团费。可是我当时就只对一个社团感兴趣,就是那个跳健美操的社团。只是,只有这个社团只收姑娘,报名的学姐横眉一竖:Just Girls。本来这故事到了这里就该结束了,可是,某天我从澡堂洗澡回来的路上偶然发现前面的教室里面好像有一群姑娘。于是,我凑上去一看,哇,原来是健美操的妹子在里面练习。
+
+
+
+那个时候博主还算是个屌丝男,算是那种愣头青。每周二、周四下午6点的时候洗澡回来,一手端个脸盆,一手提个超市1毛钱买的塑料袋装着换洗衣服,然后在那个位置看女生练习……那细胳膊细腿的,看得博主是气冲丹田,精虫上脑。恨不得上去亲自帮姑娘们压腿,拉韧带。但是,我不是女的,没法去练习,怎么办?
+
+![暴走2](https://cat.yufan.me/cats/20131118231610.png)
+
+没事,山人自有妙计也,上选课平台随便一搜。嘿~!博主的脸上瞬间露出了猥琐的笑容,色迷迷的小眼直勾勾地盯着中心校区的体育与舞蹈选修课。可是博主没选课,怎么破?大丈夫,萌大奶。我是去蹭课的,也幸亏当时博主脸皮厚,也就有了后面的猥琐事。
+
+当时是10月上旬,天气还很热,去跳舞的姑娘都是短裙,一片白花花的大腿。跳舞人数差不多80人,女多男少,2:1左右。我一般一节课要和3个女生跳。我记得有一节课,那个跳舞的女生很壮,一个男女转弯的舞步,直接把我甩出去,然后拽回来。女生的胸部很大,很大,非要用个字母的话博主告诉你是E,真的是E。然后一来二去每次跳舞到那个动作的时候,博主都会被那强大的胸部震撼到,情何以堪,但心里暗爽。
+
+![暴走1](https://cat.yufan.me/cats/20131118231609.png)
+
+久而久之,那个胖妞就看上我了似的,每节课必须和我跳。你想想,我去跳舞就是为了和漂亮姑娘亲密接触的。那个胖胖的女孩并不好看,每次都像拧小鸡似的把我弄过来弄过去,折磨啊。于是我每节课都会换位置,可是一回头,那个妹子还是会站在我后面看着我,吓得我一身冷汗。
+
+华尔兹跳舞的时候首先是男士摆出邀舞的姿势,然后女孩子过来“勾肩搭背”。当时有一次我还没摆姿势,那个胖姑娘就迎上来了,我当时就摆手说:我还没准备好呢。结果那个姑娘就有点丧气地转过身去了,后来据她同学说,她当时很受伤。
+
+可是我怎么办,我可不想“狼入虎口”,于是我鼓动了我们宿舍的另外4个屌丝男一起去跳舞。有一个奶油小生长得很可爱的,如你所想,我解脱了。但是舞蹈课的中心校区离我们住的地方太远了,怎么办。于是我们5个屌丝男挤一辆的士。巧合的是每次都是同一个的哥。每次那个的士大哥就看着我们不说话,久而久之我们都和他熟了。
+
+说实话华尔兹太无聊,还是恰恰舞好玩。没过多久我就厚脸皮跑去学恰恰舞。好几节课老师就在教女生怎么扭屁股,那个时候我还很屌丝。就在女生后面看他们怎么扭屁股。但是,我就悲剧了……
+
+有一节课我看得津津有味的时候,没注意旁边站着老师,我就在那自言自语,这个屁股大,扭起来真翘,那个如何如何。结果,那个女舞蹈老师把我拉上最前面,要我当着80多个妹子前面学她们扭屁股!然后,每次和我跳恰恰舞的姑娘都会看见我就笑,完全出名了啊!
+
+![暴走4](https://cat.yufan.me/cats/201311182316111.png)
+
+但是,博主的春天也从这里开始起步。不过,那就是下一个故事了……
+
+还有一个小插曲:当时那个胖妞还找我,让我向我的基友转告她的表白。我替她说完后,我的舍友吓一大跳,就直接说了句:“不会吧”。我记得当时在旁边偷听的那个妹子直接就泪奔了,整一个悲剧啊!
+
+----
+
+下面继续扒一扒博主小学的故事。
+
+那可以说是博主第一次情窦初开,第一次写情书的事。写情书的时候博主才上小学4年级,当时,小小喜欢班里一个大眼睛的女孩子。那个时候不知道怎么的,就是喜欢,现在想想,女孩子其实长得也不算很好看。不过记得很清晰的画面就是女孩子有点婴儿肥吧,手小小的,摸起来却很有肉感。
+
+当时小学的座位是按照成绩排列的,某次考试后这个女孩就和我同桌了。
+
+不知道有没有这种情况,有时候你喜欢一个人的时候你越喜欢她,你就会越疏远她。于是那时候还很羞涩的小雨就不敢正眼瞧那个女孩,桌上也没画三八线。但是小雨还是把自己书横在中间,然后用眼睛偷偷瞧。
+
+很巧的是,那个时候应该是很炎热的夏天,四年级的女孩子其实已经有了点发育。然后那时候还没有男女之防,女孩子还穿着袖口开得很大的连衣裙,没有穿任何内衣。博主就从女孩子的袖口看到了不该看的春色,那小小的,有点微微发育的乳房。我偷偷瞅了一节课,就是那个很做贼心虚的看,偷偷瞄一眼,然后装作一本正经的样子。
+
+但是你觉得你做得很隐蔽,可是在别人看来,却是正大光明的。一来二去,就被那个女孩发现了,我现在还记得那个女孩子生气的样子,真的很可爱。以前人家说气得眉毛竖起来,我当时倒是真的见到了。
+
+然后那个女孩子就一直没有理过我,可想而知,当时对我的打击是很大的。
+
+那个时候,你想想,9岁的小孩子懂个啥,什么情呀、爱呀的怎么可能懂。但是,那个时候我的表哥就发挥了很大的作用。
+
+有一次我在我的表哥房间里面发现了一大堆黄色小说,很小的小册子,就比小孩手掌大一点。里面说到各种剧情,我就不细说了,看得我是热血沸腾啊。
+
+于是,从那以后我看那个女孩子的眼神就不一样。一开始只是觉得她很漂亮,然后很喜欢。后面就会想到很多色色的事情,7788的,不能自已,我决定写一封情书给我喜欢的这个女孩(被琼瑶阿姨欺骗了)。
+
+当时认为说,女孩子只要被男孩子写情书,就会喜欢上男孩子呀,就可以为所欲为了。于是我写的情书也很简单,用铅笔写的,就两句话:“饶婧璐,我喜欢你。我想和你困觉。”其中好几个字还用的是拼音。
+
+![暴走3](https://cat.yufan.me/cats/20131118231611.png)
+
+当时上课的时候流行传纸条,我就写在语文课本上,撕下来给她的。那个姑娘看到之后什么表情我是不知道,但是我那一节课心情却很坎坷。
+
+结果,那个姑娘直接就交给老师了。%>_<% 结果,我全家都被叫过来了,我那个时候在教室外面被罚站了3节课,甚至严重到差点被劝退,回家后又被爸妈男女双打。
+
+但是结局你绝对猜不到,那个女生还真的被我泡上了,具体的细节我就不说了,五年级的时候我们就天天手牵手在一起了。
+
+以上也就是博主的两件记忆深刻的黑历史,吐槽完毕,羞羞。
diff --git a/source/_posts/2013-11-25.md b/source/_posts/2013-11-25.md
new file mode 100644
index 0000000..73d1c26
--- /dev/null
+++ b/source/_posts/2013-11-25.md
@@ -0,0 +1,35 @@
+---
+title: 胡侃Android程序的效率
+tags:
+ - Android
+categories: 学习
+permalink: the-poor-efficiency-of-android-program
+featureImage: https://cat.yufan.me/cats/ame/android-gone-packing.jpg
+date: 2013-11-25 11:07:10
+---
+
+这天群里面大家都闲的时候,某君开始吐槽Android上的UC游览器,说以前版本的有多么快,现在的内存占用多大、多卡。一看到这个话题我就十分感兴趣,于是我就来胡扯一下Android上的程序效率问题,非专业文章,不喜勿看。
+
+说起Android程序开发,可谓是又爱又恨。想想我们当年写对应的项目开发的时候,是有多复杂就往复杂里面写。后面实实在在接触了CPP,然后会了析构,才发现Java的性能,就算发展10年,也赶不上C、CPP,然后对于UC的内存占用和效率就释然了。
+
+Android程序用的是Java,底层的JVM(Java虚拟机)其实是用C写的。╮(╯▽╰)╭ 一想到这个,我很多时候就非常想笑。用一个性能优秀一点的语言Target指定,然后解析一个性能差一点的语言的字节码,这也算是跨平台的硬伤吧,这就和python说自己比C还要快一样是个冷笑话。
+
+
+
+而其实,解释一下跨平台和不跨平台的区别,你就能对于很多程序的性能就释然了。学过编译原理的可能会知道,一般指定平台的程序的编译流程是:词法分析->语法分析->语义分析->中间代码生成->中间代码优化->目标代码生成。
+
+于是,程序在编译过程中会针对目标的平台进行相关优化,这样子的优点是程序的性能可能会更好,因为不同的平台可能说的指令集和中断调度算法都不一样,所以说编译程序时指定平台效率更高。(这里面细节我有兴趣时再说,涉及细节的计算机体系结构方面的知识。)
+
+Java一类的跨平台语言,比如还有python,其本身的语法结构其实差不多,尤其在数据类型那边,基本一致。(因为编程语言的规范基本也就是IEEE、MIT、ECMA规定)它们的设计思想基本是编译到完整编译过程的中间代码部分,中间代码是平台无关的,一般是二进制文件。然后在通过平台相关的虚拟机运行中间代码。**所以说Java是跨平台的Java虚拟机不是。或者说Android程序是跨平台的,但是Android系统不是。**(正因为这一点,也导致了Android程序的反汇编很容易,破解也就自然不难了,目前大一点的Android程序都要混淆加密,虽然破解难度上升,但不是不能破解,只是运行效率不提也罢。)
+
+由于硬件架构,硬件芯片不同。(也就是解决方案不同,MTK是完整打包整板,但是高通不是)不同手机之间的Android系统要指定编译。尤其是在目前开发基本用交叉编译的时候,对应的虚拟机部分其实也是有区别优化的。所以,所谓的Android深度定制,其实本质就是对虚拟机进行指定平台相关的优化。
+
+反过来继续说Android程序,因为为了跨平台,所以需要涉及虚拟机。一般的虚拟机都是用C写的,本身虚拟机也为了最大化兼容,已经丧失了,一定的效率。然后再用这样子的低效率运行一个更加低效率的程序,这就是Android程序的本质无奈。
+
+所以外界永远不知道的一个我们程序员的真相就是,我们永远是在为未来写代码。因为我们的代码永远不可能高效最优,一个软件写得越久,就会越来越冗余,越来越低效。然后我们就会把责任推给硬件,然后硬件就发展了。然后大家就一直买新的设备,我们就乐得写越来越低效的软件。
+
+但是,这点在中国有点行不通。因为大家基本都是穷屌丝,一台手机不可能年抛,基本要用上个几年。所以才有了优化在中国的兴起。所以小米才会以优化定制为乐。但是这个的本质还是不行的,小米以后手机出得越多,架构越复杂的时候,它的优化也就越来越难做。而做APP开发的也很难做,一个是你的程序肯定会越做越复杂。目前的Android应用开发模式基本是Scum敏捷开发而不是以前的瀑布流,周期短,但是更新频繁。所以,你所面对的程序优化就越来越难做。
+
+程序写复杂了,运行起来必定比以前慢,然后那群消费者就不干了。没错,新手机运行很流畅,很好,我们这群老用户呢?然后就一群人开始骂骂咧咧,然后应用站就开始刷新应用好卡、好慢、好烂,负分、差评、滚粗。而其实Android的开发门槛真的很低,做的基本是大专和本科,核心的优化有真的不行。所以垃圾应用铺天盖地都是,然后不赚钱,于是,有技术的也都懒得做了。
+
+所以说,在天朝硬件想换代,难。所以逼着我们写垃圾代码,写低效率软件,然后逼着你换代升级。(微软的Windows就是一个典型的例子。)
diff --git a/source/_posts/2013-12-02.md b/source/_posts/2013-12-02.md
new file mode 100644
index 0000000..0a194bd
--- /dev/null
+++ b/source/_posts/2013-12-02.md
@@ -0,0 +1,54 @@
+---
+title: 遇见
+tags:
+ - 信笺
+ - 原创
+categories: 文章
+permalink: meeting
+featureImage: https://cat.yufan.me/cats/20131202153635.jpg
+id: 115
+updated: '2015-04-16 05:11:48'
+date: 2013-12-02 23:36:59
+---
+
+写博客的时候最期待的就是遇见形形色色的人了,有时候能遇见这样一个可以聊得开的人,然后能交个朋友,其实真是一件非常舒心的事。下面节选了我和一位博友的来信,期待能遇见一个未知的你,和你交个知心朋友。
+
+
+
+## 友人信
+
+你好,雨帆妹妹。
+
+前段时间在忙着毕业论文的开题答辩,没来的及给你回邮件,我表示很抱歉。
+
+你给我发的邮件,我早已阅读。其实再忙,回个邮件的时间也还是有的,只是我看到你给我的邮件写的真诚很详细,这让我不忍心草草回复。想不到互联网中也还有这么细致的人,可以给一位陌生人写一封这么详细而真诚的邮件。这似乎让我看到了一点曙光,原来互联网上还有一个圈子,一个自由自分享观点与生活的圈子。我明白自己的文字表达能力欠佳,而且那个时候自己的心情也欠佳,所以拖到今天给你回复。
+
+听着你博客里的“always with me” 口琴曲写邮件真是一件惬意的事情。国内的互联环境真实坑爹,我只想说我很没安全感。今天颤颤巍巍地在阿里云提交了备案,不知道能不能通过。有时候在想,要是国内的所有个人站长能够组成一个联盟就好了,就相当于一个工会一样,能为我们的利益出头。
+
+从你的博客中,终于得到了证实:你是个男孩子。我之前一直以为你是个女生,还想跟你搭讪呢!(嘿嘿)我去过厦门一次,那里真的很美。不过,那个海滩我很不满意,海滩太窄,而且沙子也不是很干净,跟三亚的海滩相比,很有差距。
+
+我在三亚上大学,二本野鸭学校,坑爹的电子信息科学与技术专业。浑浑噩噩四年,现在都快毕业了,才发现工作真的很难找。正准备踏入独立博客圈,希望能在这个圈子提升自己。希望3个月之后,能找到一份跟网站开发有关的工作。
+
+写了这么多,也不知道写了些什么。零零乱乱,满是怨气。不过看到了你的博客之后,我感觉自己比之前要平静地多。
+
+雨帆兄,请你当个见证,今日我正式踏足独立博客圈,做一个独立的人,写一个有独立思想的博客。
+
+PS:抄袭你的风格,我的域名是:xieqin.me 。
+
+## 复书
+
+既然知道我是男生还称呼我为妹妹,果然你是故意的,我无法想象你写下那个词之后脸上的邪恶表情。关于你在邮件中说道的细致和圈子,我想说:其实很多时候,博客就是一个人的独角戏。你苦心经营着一件属于自己的“店铺”,然后等待着同样“识货”的人的到访。有时遇见一个关注你的陌生人,心中就会有一种莫名的欣喜与安慰。
+
+有时候我喜欢安静地看着后台的留言,那些活生生地头像、记忆中的点点滴滴细软,慢慢地想着属于自己的故事。有些暖心的留言,就像是无尽灰暗世界里面的一束光,永远闪烁、夺目……
+
+关于你说的站长联盟,我有些无力与无奈,大家都抱怨备案,可是又有谁知道当年因为没有备案而导致的混乱呢?有些事情,真的说不好对与错,关键在于你心中的一把秤杆。
+
+看见你抱怨学习,抱怨不好找工作,我真的不知道如何安慰,我上的是山大的软件工程专业,在10月忙碌了半个月的校招后轻松找到工作。也许是专业问题,也许是学历问题,我无法给予你恰当的安慰。但是,我所知道的是,毕业和工作,就像是人生中的一道坎。和高考一样,这道坎很高很难跨过,每个人都要面对,都有着类似的彷徨于无奈。我记得曾经在自己的某篇文章中写过:毕业,就是一窗玻璃。我们得撞碎它,擦着凛冽的碎片走过去,血肉模糊之后开始一个完全不同的世界。
+
+而目前的就业现状,其实很多时候都是有心无力,你所要知道的是,无论任何工作和职业,最关键的其实是个人的能力。学历其实只是一道敲门砖,很多时候我看见了许多去霸面的大神,他们有些人的学历并不高,但是他们有的就是经验和技能。
+
+见证了一个进入独立博客圈的博主,看见和自己当年相似的豪言壮语,我不知该是鼓励还是羡慕。2年前的某天,我也曾像你一样起步,同样的宣言、别人的鼓励,温暖了我的一整个冬季。那时候孤独的我的心,第一次因为别人的赞美,提前窥视了明媚的春天。
+
+所以,我在此也祝愿你能在独立博客圈的路上走得越来越远,欢迎加入独立博客大家庭。
+
+走出宿舍门口时扭头看那已经凋谢了的木槿,无意间竟然发现遗留在草丛间的旧作业纸,上面的字迹被雨水打湿,模糊难辨,只剩下一片的蓝。不知这样的作业交到老师的手里,会不会过于诗意?而生活其实就是这样,处处充满着惊喜,我们就像是草丛中的淡色小花,兀自开放,不必讨好,亦不在意。
diff --git a/source/_posts/2014-01-01.md b/source/_posts/2014-01-01.md
new file mode 100644
index 0000000..d85736c
--- /dev/null
+++ b/source/_posts/2014-01-01.md
@@ -0,0 +1,42 @@
+---
+title: 同一个时代一起老去
+tags:
+ - 原创
+ - 怀旧
+categories: 文章
+permalink: grown-old-with-a-age
+featureImage: https://cat.yufan.me/cats/20140102153935.jpg
+id: 116
+updated: '2015-04-16 05:12:28'
+date: 2014-01-01 21:44:37
+---
+
+过去到底有什么呢?为什么会让这么多人怀念,甚至是想回到过去?本想一点点梳理细说那些难忘的点点滴滴,却总记不起曾经的刻骨铭心,只剩下些支离破碎的片段可以回忆。日本有句谚语:“三岁时眼睛里看见的东西,到了八十岁都不会忘记。”可是,才二十岁出头的我还是忘记了……
+
+看来,谚语毕竟是谚语,它包含着人们对种种不美好的期盼、美化,而不是事实。我相信每个人对于自己三岁或者说小时候的事情都没什么印象,我对于过去的记忆很大一部分来自于父母的口口相传。有时候看着照片集里面那个似曾相识的自己,就会有种惶恐,似乎什么东西在慢慢离自己远去。倘若让我相信那句谚语是真的,我更愿意认为是,只有你到了八十岁,开始怀旧时,那些年少沉埋于心的记忆才会慢慢复苏,供人品鉴。
+
+
+
+但,你还是忘记了,无论往事是否重现,那些过去终究不能成为你的生命的一部分。那年花开年少,人面桃花相映红,你看过那些美景,爬过那些群山,走过那些小路。但是因为年少,你还不知记忆的重要性,于是便渐渐淡忘了。直到想要回忆,想要书写一篇文章缅怀时,才发现你只记得去过、见过、记过。
+
+曾写过各种回忆的文章,绿皮车厢的记忆,种种过去的零食、玩意,久了,也免不了感叹时代的变迁,似乎一切都在慢慢老去。昔日一起High的大哥、大姐基本成家立业,同龄的小伙伴们很多也都开始实习工作,熟悉的一切都在慢慢离自己远去……
+
+怀旧的博文写多了,免不得自己也开始忧郁起来。以致于谈起时代的变迁就会有无数的念头在心中浮现,颇有种不吐不快的感觉。而其实,这个世界一直在变,只因为我们不曾注意,猛然间环视周遭,才发现已经物是人非。
+
+那个时代,那些人。
+
+儿时最喜欢的童谣就是《节气歌》:“春雨惊春清谷天,夏满芒夏暑相连,秋处露秋寒霜降,冬雪雪冬小大寒。”每一个节气的名字连读出来,就像是一首诗。在那个没有暖气、没有空调的过去,季节的更迭,是那样的分明,让人愈发地想念,往往脑海中最先浮现的画面莫过于过去的砖瓦平房,那逼仄的小巷。
+
+由于那个年代里还没有商品房的概念,富一点的人家都是自己盖起小平房,父母一类的工薪阶层则是单位分的房子。由于都是一个大院的,邻里邻外都是熟人,所以家长里短、谈天说地算是常见的一番特色。那个时候,家家户户不锁门算是正常现象,也没有防盗门的概念。由于不设防,往往一个大院里没有隐私,每每某家发生了点什么事,消息便会很快在左邻右舍间不胫而走。也就如腾讯《大家》杂志上的某篇文章写得那样:“彼时的人,以及孩子,很少有孤单之感,因为开门见“山”——一抬眼便见熟人,那时的人,何来孤独与寂寞?”
+
+那个时候的人,大多还是很有人情味的吧。因为大家都穷,所以就没有了攀比和嫉妒。因为大家文化水平都不是很高,所以思想也单纯些。但是,那些早期走出体制赚了钱衣锦还乡的人增多时,某种平衡被打乱了。那个时候,渐渐开始向往大城市,奢求的那些花花绿绿的稀罕物。直到04年随父母去大城市务工,看见来来往往冷漠的陌生人时,才忆起过去的种种好,但是,我已经回不去了……
+
+时间似乎随着自己的长大流逝的越来越快,就像以前的我们一样,很难预料到未来是什么样子。好不容易赚了钱了,房价却高不可攀了;课程开始改革了,而其实却负担更重了;好不容易上了大学,才发现因为扩招大学生不值钱了;难得经济发展很好了,PM 2.5又开始席卷中国了……也就在这样频繁的时代变迁中,我们这一代人似乎开始慢慢遗忘昔日的种种——我们故事随时代一起褪去了。
+
+无意间加入了一个以00后为主体的QQ交流群,他们聊着我听不懂的东西,说着我无法理解的NETA;他们玩着我到现在还没玩过的游戏主机,听着我从没听说过的韩国歌曲……
+
+什么时候,我已经离这个时代这么遥远了呢?
+
+记得《风雨哈佛路》中有这样一段话:“世界在转动,你只是一粒尘埃,没有你,地球照样在转动。现实是不会按照你的意志去改变的,因为别人的意志会比你的更强些。生活的残酷会让人不知所措。”这个世界、这个时代的变革我们无法阻止,只能顺势而立。
+
+于是现在的我,每每看到各种怀旧贴,总是有种莫名的喜悦。一切往昔似乎因此还存在着,还活生生地被大多数人纪念着,依旧是我们生命中不可缺少的一部分。而我,也是这怀旧大军中的一员。忘记了某些难忘的过去,却又忆起童年的点滴,随着那个愈发遥远的时代一起,慢慢变老。
diff --git a/source/_posts/2014-02-19.md b/source/_posts/2014-02-19.md
new file mode 100644
index 0000000..49c4231
--- /dev/null
+++ b/source/_posts/2014-02-19.md
@@ -0,0 +1,48 @@
+---
+title: 那些你不知道的事
+tags:
+ - 杂谈
+ - 黑历史
+categories: 文章
+permalink: the-things-you-dont-know
+featureImage: https://cat.yufan.me/cats/20140218235636.jpg
+id: 117
+updated: '2015-04-16 05:12:48'
+date: 2014-02-19 07:33:36
+---
+
+这是一篇胡言乱语的文章。
+
+有道是活到老学到老,用通俗的话说就是,“你丫永远不可能什么都懂”。因此每每因为不懂被人笑话时候,我常常用这样的话来安慰自己。也就是阿Q精神,所谓的精神安慰法。
+
+抗生素用多了,细菌就会有抗药性。自我暗示多了,也就常常会不起作用。
+
+
+
+去年年末的英剧《夏洛克》可谓是吸引了众多腐女的眼球,在女友的熏陶下,鄙人也看了这部片子。但是很遗憾的是,就算是被人提前告知此剧与福尔摩斯有关,我也愣是没看出来半分关联。甚至是福尔摩斯的原名其实就是夏洛克都不知道,原著是贝克街221号在《夏洛克》中是221A号等细节更不用说了。
+
+![](https://cat.yufan.me/cats/20140218223306.gif)
+
+说实话,从小到大我就没看过福尔摩斯的小说,以至于当和女友讨论起剧情时被鄙视了很久。现在想想还脸上发红,女友每次拿这件事笑话我,我便会像《中二病也要谈恋爱》里面的勇太一样在床上打滚卖萌,拼命暗示自己忘记。
+
+同样因为种种无知加装逼闹出来的笑话多得数不清了,久而久之,也就脸不红心不跳了,但是还是有一次在众人面前的出丑让我印象深刻。
+
+那还是大一的时候,计算机文化课需要每名同学在期末的时候上台当着大家的面介绍点与计算机相关的东西。当时我是此专业的课代表,所以准备的尤其认真,加上当时自己因为接触计算机比别人早,懂得多,所以就装逼地翻译了一篇关于计算机界面的文章在PPT里面。
+
+轮到我讲的时候一切都很完美,PPT中比较难的单词我都直接脑补过去。直到谈到界面的分类的时候,GUI和CLI的时候我直接读成GUI界面和CLI界面。这还不算,当时GUI这个单词我是一个字母一个字母读的。当我下台的时候,就被老师赤裸裸的打脸了。老师先简单表扬了一下我,说我准备得很充分。然后就开始纠正错误,GUI是指Graphical User Interface(图形用户接口),读作“归”……
+
+![](https://cat.yufan.me/cats/20140219175637.jpg)
+
+因为计算机专有名词读错闹的笑话真是太多,细说起来得有个三天三夜。什么Java不叫家娃,什么GNU不叫G-N-U,什么SQL不读S-Q-L,等等。
+
+计算机的名词读音就算再蛋疼你还是得学,对不?于是,在博主战战兢兢学习3年后又一次迎来众人面前出糗的机会了。
+
+当时选修了一门名为《新技术讲座》的课程,同大一一样,老师要求我们每个人做一份关于最新技术的PPT。因为装逼,博主便把当时OSC济南线下交流会上的PPT打包发给了老师。于是,最后一节课的时候,老师很高兴,进来就表扬了我,要我上台讲解我的PPT。可想而知,演讲的效果有多糟糕。
+
+叔本华说人生其实就是一连串的苦难,当时听起来觉得很二,现在想想也就是那么一回事,从无知到学习的过程,这一路得有多少够你受罪的。从小的时候你缠着爸妈问这问那,什么为什么星星会“眨眼睛”啊,为什么开水会冒泡,为什么……到你自己开始学习来了解你想知道的一切,小学读完了要上初中,初中后面还有高中大学,找工作后你发现还要学。
+
+等到你懂得越来越多,甚至是在某个领域完全超越了周围的人时,似乎苦尽甘来了。这个时候的你往往会有一种自我膨胀感,你会以一种鄙视的眼神看着周围的小白,对于别人的提问以一种极度欠扁的语气回答。
+
+但是,因果循环,报应不爽。《无间道》里倪永孝曾说过:“出来混迟早要还的。”因为你的自负和无知,迟早会被别人纠正错误打脸。然后嘲笑加害羞之后,又是苦逼的再学习过程。所以微博里面最好玩的地方就是可以看某些专家学者公知在那边叫嚣,然后被人赤裸裸的打脸,噗!
+
+所以,总的来说,还是低调点好。现在的我,往往更喜欢看别人回答提问,轮到自己解答的时候,也是小心翼翼考虑很久,百度对比后才给出答案。但是,人在江湖飘,哪能不挨刀。遇到被打脸的时候,害羞的同时,还是恶补不足的好。
diff --git a/source/_posts/2014-02-20.md b/source/_posts/2014-02-20.md
new file mode 100644
index 0000000..a8cca20
--- /dev/null
+++ b/source/_posts/2014-02-20.md
@@ -0,0 +1,48 @@
+---
+title: 扒一扒当年与父母斗智斗勇的日子
+tags:
+ - 杂谈
+ - 黑历史
+categories: 文章
+permalink: black-history-of-my-childhood
+featureImage: https://cat.yufan.me/cats/20140220144644.jpg
+id: 118
+updated: '2015-04-16 05:13:18'
+date: 2014-02-20 22:22:07
+---
+
+如果有人和我说小孩子什么都不懂,阻止他们玩电脑、看电视很容易的话,那么我的经历绝对会告诉你,你丫太天真了。
+
+这不是我的血泪史,严格意义上说是我爸妈的。
+
+我的童年那个时候没什么娱乐设备或者是节目,家里唯一可以拿来消磨时间的就是电视机,于是从小我便养成了爱看电视的恶习。尤其是到了四年级,基本上天天晚上都要看电视,不看不行。《动画城》看完要看《大风车》,《大风车》看完要看黄金八点的《三少爷的剑》。久而久之,老妈嫌我看得太多了,不让我看电视。爸妈在家的时候没办法,只好收敛点,在写作业的时候时不时瞄一眼。
+
+
+
+当时恰逢老爸出差,老妈上的是水泥厂化验员,三班倒,于是一场斗智斗勇的好戏就此上演了。
+
+老妈要上小夜班,没法在家盯着我不让我看电视,可是电视在客厅里又没法锁起来不让看,这怎么办。老妈便想到了一个好点子。那个时候我们镇用的是闭路电视,就是类似现在数字电视用的同轴电缆的那种闭路线。老妈上班前把闭路线一拔,藏起来,我就没法看电视了。可想而知,等我放学回到家,家里就我一个人孤零零的,连电视都不能看,那是有多么寂寞。
+
+于是我便开始了翻箱倒柜的找,连我爸妈藏避孕套的地方都没有逃过我的搜查,天无绝人之路,我终于在冰箱顶层的冷藏柜里面找到了闭路线。Happy,于是我的看电视斗争以小胜告终。
+
+可是好景不长,很快老妈便发现闭路线别人动过的痕迹,在萝卜加大棒的威逼下,我不得不向父母坦白。于是藏的地点又变了,又是一番搜索,藏啊找,找到被发现后又重新藏。这么几次后,家里面能藏的地方实在是没有了,老妈也被我气得没法子,一怒之下,也不藏了,当着我的面把闭路线装进包里带走。
+
+套用现在的流行语,当时我就惊呆了,有木有!一个人在家没有电视机,没有娱乐的孩子你丫伤不起啊!
+
+可惜道高一尺魔高一丈,我爸是学电工的,在他的影响下我小便在他怀里玩烙铁,所以我在这闭路线上起了歪心思。我记得那个时候无聊翻看我爸的书,有一本叫《闭路电视维修手册》。当时我也就当小说看了,什么电子管显像管的,什么信号解析的都看不懂。但是附录的内容吸引了我,闭路线的原理和制作方法。
+
+现在距当时已经有10多年了,书里面的内容自然是记不清了,但是关键思想还在,那就是闭路线说白了就只有最里面的铜丝是有用的,外面有一圈塑料管做支撑,再外一圈是做电磁屏蔽用的铁丝网(这玩意我到了高中才懂什么是电磁屏蔽),最外面就是胶皮。我记得当时看完这个附录后,立刻便开始了实验,将家里放在碗橱底下的插排拿出来,随便剪一根线,然后插在闭路盒的中心最里面的孔里面,电视机那边如法炮制。嘿,还真能看了,虽然有些台信号不行,但是聊胜于无呀。
+
+于是你可以想到当时的我是有多么得意,每次看到老妈上班前耀武扬威地当着我的面把闭路线装在包里面带走,我就在心里面冷笑,脸上却不动声色。
+
+可是没过多久就坏事了,有一次老妈因为身体不舒服临时和别人换班提前下班,嘿,一打开门就发现我半躺在椅背上看电视。于是,一顿毒打加没收我的作案工具。哎,一下子又回到了解放前,我的看电视斗争又一次失败了。
+
+家里没有用的电线一下子全被老妈扔了,一时半会还真有点巧妇难为无米之炊。作为我的阶级敌人,老妈可谓我肚子里的蛔虫,知道我不敢动家里面那些有用的电线。可是我又想看电视,这可怎么办?很快我便发现自己这是灯下黑啊,除了电线能导电,金属不是一样能导电?于是,家里面的衣架便惨遭我毒手,因为衣架多,少了一两个没人会注意。于是,我便偷偷肢解了两个衣架,串起来,嘿,依旧能看就是一些地方台信号差会有雪花,但是无伤大雅。
+
+很快便是又一次发现加没收,然后我继续搜寻新的工具,这期间差不多有个十几次吧。最为经典的一次,是我直接把家里面的毛巾架拆下来,因为是铁管子,然后左右按照书上的原理拿赛车马达里面的线在左右两端做了两个简易的“放大器”。嘿,效果比一开始的电线还好。可是福兮祸之所伏,因为年纪小没法把毛巾架复原,于是可想而知的又是一番毒打。
+
+……
+
+现在上了大学,也就没有过去的种种限制了。我选的专业是软件工程,突然发现有一个好处:要是我的孩子有网瘾,看我玩不死你,嘿嘿。你爸爸我当年为了看电视无所不及,更何况电脑?
+
+当然,换句话说,以后要是有孩子的话还是女儿的好,我的经历足以引以为戒。
diff --git a/source/_posts/2014-03-16.md b/source/_posts/2014-03-16.md
new file mode 100644
index 0000000..00bc5f1
--- /dev/null
+++ b/source/_posts/2014-03-16.md
@@ -0,0 +1,82 @@
+---
+title: 忘却之诗
+tags:
+ - 原创
+ - 爱情
+categories: 文章
+permalink: the-poem-of-forget
+featureImage: https://cat.yufan.me/cats/20140209153355.jpg
+id: 119
+updated: '2015-04-16 05:13:41'
+date: 2014-03-16 04:41:24
+---
+
+有人说,记忆就像一首歌,你记不得它的词,却忘不了熟悉的曲调。香香姐姐说,记忆就像是陈年的女儿红,时间愈久才弥香。而我说:记忆,就是已经结痂的疤,每一次被迫想起,都扯得血肉模糊。
+
+这不是一首忘记了的诗,而是一首由忘记组成的诗,它被我选择遗忘了八年。
+
+——题记
+
+
+
+## 一、あの日から
+
+对于小雨而言,04年那年他刚刚小学毕业,唱着羽泉的奔跑,随着父母的脚步,来到离厦门千里之外的济南读书。由于去得晚临近开学,小雨他爸不得不选择了全寄宿私立学校——齐鲁私立学校。时隔6年后,当小雨再次踏上这片陌生的故土,回望这所面目全非的学校的时候,那段尘封已久的记忆如洪水般袭来,心痛。
+
+入学的那天小雨起了个大早,跟着老爸来到新学校报道,陌生的大门、陌生的面孔、看着很严厉的班主任,都让小雨对未来的生活充满着绝望。那段时间,是灰色的。对于一个只有十二岁的小孩而言,从那一天起,世界颠覆了。
+
+第一次离家一个人住校,第一次和同龄人一起聊天到深夜,第一次晨跑,第一次在外一个人打理自己的生活,还有第一次对一个女孩刻骨铭心的伤害……
+
+最初的最初,乃是最为寻常不过的相逢。只是在小雨的心底,成了命运的不期而遇。
+
+至今小雨还记得那个姑娘,一头爽朗的短发,像极了男孩子,白皙细嫩的面庞,长长的“天鹅颈”,还有明明是初中生却比小学四年级学生还要娇小的身材。小雨还记得倒垃圾时,在垃圾桶里看到的她的作业本,皱巴巴的,上面张牙舞爪地写着——张清。
+
+小雨还记得第一次见到那个姑娘,那是新生入学后的第一节班会,老师让大家轮流站起来自我介绍。轮到她时,她略带害羞地起身,小心翼翼地挪开凳子,低着头转过身来,以大家几乎听不到的声音快速地介绍完自己。然后迅速地转身坐下来,在桌上交错着手指,像极了受惊的小动物。可是,不是每个女孩会在被人欺负时那么平静不语。小雨记得,当自己把笔记本还回去时,名为张清的女孩只是漠然地接过笔记本,一句不语。
+
+那天傍晚,小雨在学校的操场上一个人散步,一转头,看见她一个人孤零零地坐在操场旁的秋千上。夕阳同角落里的阴影交错地投射在她的身上,少女一个人荡着秋千,眼神却似乎在思考着什么。她的嘴角洋溢着淡淡的微笑,简单、美好。
+
+她因紧张而交错的手指,她的小平头,她的大大咧咧的字迹,她那卸去伪装后的恬静微笑,在多年后的今年依旧在小雨的脑海里旋转,久久不能忘。
+
+那一年,小雨恋爱了。
+
+那一季,心事如花般绽放,年少到不知天荒地老,只想看着女孩微笑。
+
+那一天,懂得心动,只需要一个瞬间。
+
+love you more than I can say.
+
+## 二、好きって気持ち
+
+(还没写)
+
+## 三、さよなら
+
+(还没写)
+
+## 四、祈りの诗
+
+那么年轻无虑的岁月究竟是何时被遗忘了,想要琢磨的那些时光却实实在在地模糊不清。那个每一天都饱满地像是一生岁月的年纪,那个想不出也不会想到明天的年纪,那个只喜欢在意一个女生的年纪。就像是漫长的前生,一直在某一个时光的转点之前悄悄地藏着。
+
+那是怎样慢的一段时光呢?记忆里的每一个动作都像是分解开来的安然,缓缓地铺展成一片路途。想不出开始和结尾的日子,就这样远远地静默在时间里,轻易地想起却难再找回似曾相识的段落,只留悔恨。
+
+继续遇见着一些人,离开了一些人。有些人不相识,却已是知己,有些人早就忘记。不时地想,我们已经分别多久?你,还好么?
+
+如果没有这篇记录,我可能什么都都回忆不起来,那些荒唐与幼稚的情绪。因为忘记,所以才可以成长不止。
+
+于是那些在深夜不断浮现的伤痛记忆,一定是近乎悲伤地嚎叫着“不要忘记我们”吧。可是,最后你们一定会被我遗忘殆尽的。
+
+对不起。
+
+因为这是一首由忘却写的诗。
+
+## 后书き~
+
+有关此故事的草稿初期拟定后将近1年没有动笔,说到底,其实还是自己放不下这段往事。因为年轻时的不懂,我很难想象给那个女孩子造成了多大的伤害。而其实,我的内心一直是丑陋的、黑暗的,自己得不到的东西,总想着去毁坏。那个时候的我,因为自卑,觉得自己肥胖、长得丑,所以与周围的人一直格格不入。不会为人处事,不懂得如何交朋友,说白了就是书呆子。
+
+而其实,真正的爱情故事并没有小说里面写得那么美好,因为年轻,每个人都会犯错,很多时候回头看当初的种种,才发现,自己错得离谱。也因此有了种种遗憾,无奈。
+
+每个人的世界都是不同的,因为我们每个人都是独立的个体。我们不是任何人的一部分,每个生命诞生之后,其所要经历与承载的未来便与他人脱离了干系。相遇、分离、相爱、分手,这些都是。生命的本质是一场经历,一切的感触都取决于个人,正如真正的心痛,只能单方面的承受。一个人走一个人的路,经历一个人的人生。只有这些,才是真正属于我们自身的真实。
+
+写下这么一个真实的故事,名字使用化名,还请不要对号入座。
+
+PS:每一分篇的标题,都是一首如诗般优美的日语歌名,感兴趣的还请自己搜索。
diff --git a/source/_posts/2014-06-09.md b/source/_posts/2014-06-09.md
new file mode 100644
index 0000000..7d9ccb1
--- /dev/null
+++ b/source/_posts/2014-06-09.md
@@ -0,0 +1,66 @@
+---
+title: 凡我在处,便是山大
+tags:
+ - 山大
+ - 毕业
+categories: 文章
+permalink: my-university-life
+featureImage: https://cat.yufan.me/cats/my-university-sdu.jpg
+id: 123
+updated: '2016-02-17 20:04:54'
+date: 2014-06-09 15:52:09
+---
+
+## 一、回忆
+
+从忙碌的四月大补考到现在准备离校,一晃两个月过去了。停更的博客、塞满百封未读邮件的邮箱,似乎暗示的不仅仅是忙碌,还有某些道不出名的情绪。
+
+忙碌的日子里,感觉时间飞逝,怎么也抓不住。就像一年前的[暑期实训](http://yufan.me/summer-training-record/),就是如此,往往抬头还是六月,低头离别的日子就这么到来了。
+
+我能感觉到那些时间和日子逝去的彷徨,看着宿舍外的柳树从茂盛到枯萎,然后又迎来新的新生,有时候心情就像是那些路过的麻雀飞鸟,惶惶然又飞走……
+
+
+
+但就在这种心情焦虑不安的情况下,回想过去,我也不曾后悔在大学度过的四年时光。虽然我曽一度沉迷于电脑中,翘课、通宵游戏、挂科,如同行尸走肉般活着。那段长达一整个学年的荒诞时光,就像是黎明前最为沉寂的黑暗,我挣扎地活着,想要逃脱那名为“寂寞”的牢笼,却发现自己已经身处围城之中。
+
+但好在还有我的同学,是你们,让我及时悬崖勒马。彬哥的高数辅导、彤姐的考点划题、田妹的自习陪伴、亮仔的通宵答疑、阿峰的细致总结,没有你们的帮助,或许我并不能如期毕业,拿到手上的学位证。
+
+从大一入学到现在与你们一一道别,也快有四年了吧。四年时间,说长不长,说短不短,也就南非世界杯到巴西世界杯的间隔。但四年前我们一起军训的那个夜晚,我们一起立下的理想,却永远不会更改。
+
+我们依旧追求着自己的梦想,依旧爱着所爱的人,依旧向着美好人生的理想前进。有时挫折悲伤难过,但仍然前行,仍然走着选择的路。没有迷失在某个岔路口,仍然是我们当初所希望成为的样子。
+
+希望再过十年,二十年,我们仍然在路上,不曾走失,不曾忘记年轻时的模样。不曾丢失爱我们和我们爱着的人。
+
+![山大10软件1班](https://cat.yufan.me/cats/my-sdu-classmates.jpg)
+
+## 二、爱情
+
+对于雨帆而言,就是一个爱情失败者。两段大学爱情,就像是荷尔蒙不经意间碰撞出的火花,短暂,只留下名为嘲讽的空气。
+
+我曾梦想过在这最美的时光中与某一位“你”不期而遇,谈一场只在青春中才有的风花雪月,携手漫步在校园里的一隅,也许只是一个微笑、一个眼神,便能理解彼此。
+
+我就是这么天真着……
+
+爱过痛过后才知道,人生有悲欢离合,感情也有高潮低谷,并不是每一段爱情都能天长地久。我们这一辈子总会遇到不同的人,展开不同的邂逅交集,一次次牵动着快乐和泪水,直到永远……
+
+毕业、分手,独自一人乘公交车,一人走过木兰小路,无论多么悲伤难过,依旧得坚持走下去!
+
+那些回不去的少年伤痛时光,现在只能铭刻于心,随时间慢慢抚平。
+
+爱过,因为青春;痛过,学会成长。我依旧坚信爱情,依旧相信生命中最美好的事物某过于此。炫若花火的激情固然难以忘却,然而一并度过流年何尝不是刻骨铭心?
+
+![即将毕业的我](https://cat.yufan.me/cats/myself-graduate.jpg)
+
+## 三、未来
+
+我曾经在博客中写过,毕业,就像是一道窗,我们鼓起勇气撞破穿过它,然后血肉模糊地开始另一个新的开始。
+
+生命那么长,又那么短。倘若按80年计算,那便是2522880000秒,就是这么漫长的生命轮回,一眨眼便过去了四分之一,让人惶恐无奈。
+
+年少时曽有过的无数理想,青年时立下的化学研究梦,现如今都被现实扯得支离破碎,徒留着活着这一最底层的需求。也许我们中的大多数人,终年如一日地奔波在住所与公司之间,为着面包、住房、家庭而奋斗着。也许过去的豪言壮语是那么荒唐狗血,但依旧希望你不要将它们忘记,因为,这就是青春。
+
+人生还很长,漫长到足够让我们忘记很多年前发生的事情……希望曾经一起并肩学习的朋友,无论你在哪里,你在何种阶段,学业、奋斗中、还是事业有成,都还能记得那些曾经的美好,不言夙伤。
+
+很多年后,还是老朋友。
+
+凡我在处,便是山大。有你在时,那便是家。
diff --git a/source/_posts/2014-07-14.md b/source/_posts/2014-07-14.md
new file mode 100644
index 0000000..e697e7d
--- /dev/null
+++ b/source/_posts/2014-07-14.md
@@ -0,0 +1,44 @@
+---
+title: 工作一周记
+tags:
+ - 毕业
+ - 工作
+categories: 文章
+permalink: the-first-week-of-accession
+featureImage: https://cat.yufan.me/cats/yeepay-front.jpg
+id: 124
+updated: '2016-02-17 20:05:15'
+date: 2014-07-14 08:41:09
+---
+
+## 一、适应早起
+
+有时候,伴着6点的闹钟声醒来,大抵会有种回到高中的感觉。习惯了大学里一觉睡到上午9点的感觉,现在突然要早起,一开始还真有点不适应。
+
+原先读高中的时候,早上都是靠着爸爸把我叫醒,有的时候还要撒娇要老爸把我抱起来。工作一周后的我闹钟一响便能自动爬起来洗漱上班,想想还真有点不可思议,看来我还是蛮适合工作的。北京的地铁无时无刻不是那么的挤,即使是早上6点半的地铁,如果稍微晚了那么一会,也是人头攒动。因为我工作的地方属于北京CBD,所以我住的地方离公司很远。于是,每天的上班之旅,便是一场艰难的赛跑。
+
+
+
+公交205路——地铁13线——地铁10线——步行,每天花在上班路上的时间就有1个多小时。记得以前在厦门科技中学读高中的时候,上学的路程也有将近1个多小时,每天我都是坐在晃悠的公交车的最后一排,一边迷迷糊糊地背着单词,一边色眯眯地瞟着漂亮姑娘。
+
+记忆这玩意真的很奇怪,很多过去的事情,本来以为早已忘记,却又在遇到类似情境的时候回忆起来,让人捉摸不定。只是现在的我早已没有了看姑娘的心境,站在拥挤闷热的地铁车厢里,被人挤得连扶手都找不到。窗外是一成不变的黑暗,呼啸的风声让人恐惧,如同迷茫的未来……
+
+## 二、消费水平
+
+才来北京前同学间流传着各种关于北京的版本,无非不是什么北京消费高,环境差7788的。真正来到北京,开始工作才发现,很多东西,还是眼见为实的好。
+
+北京的地铁和公交便宜到令人惊讶,2年前去上海玩,上海的地铁是按距离收费的,稍微远一点的地方,可能就要10元,北京的地铁是2元通票,无论你到哪个地方,无论你换乘几次,都是2元。而厦门的公交车就算优惠,也要0.85元,济南的空调车就算刷卡也要1.6元,而北京的公交都是4角,而且都有空调。
+
+才工作的那几天的午餐倒是被坑了好几次,后面和前辈一起吃饭,才找到了物廉价美的地方。北京的生活消费水平没有想象中的那么贵,倒是房租,真的让人无力吐槽。
+
+## 三、工作感受
+
+不知道是因为才入职还是特例,我就职的公司易宝支付的工作没有想象中那么忙碌,好几个去了华为的小伙伴现在就开始天天加班。而我这里上班不需要刷卡考勤,工牌只有门禁的作用。工作的时间也可以自由调整申请,比如可以在OA上申请10点上班,7点下班。工作时间也讲究诚信自觉,比如饭点是12点,我们往往会提前20分钟就在部门群里面募集小伙伴吃饭,但是会早于1点自觉开始工作。比起大三暑假项目实训的各种准时准点的指纹考勤,没有考勤的正式工作让人更加轻松愉快。
+
+公司的同事大都很年轻,即使是我的部门主管李均柠,也才32岁。大家的脾气都很好,相处起来也十分容易。就算是比较严肃的公司技术中心季度大会上也会直接拿主管开玩笑:“均柠你什么时候结婚啊?”更有甚者,在我们这群新员工集体介绍的时候会在下面吼道:“台上的妹子你们单身么?”(%>_<% 不要无视还在自我介绍的我啊!)
+
+---
+
+总的来说,虽然才开始工作一周,但是我已经习惯了那种和读书不一样的节奏。每天晚上惬意地坐在回家的公交车上,看着窗外的灯红酒绿,总会有诸多感触。这也许是最糟糕的时代,但也一定是最好的时代。对于我而言,新的未来大门已经开启,等待着我去探索,去创造。
+
+还记得高中毕业的时候班主任王晶曾[说过](http://yufan.me/when-i-was-young/):“你不能够保证,你奔跑的方向比现在的高,但是,可以肯定的是,朝着那个方向,你在前进。”学习、工作、赚钱、成家,也许我们一直在为着梦想而奔波着,但是一直不变的是,我们一直在努力。
diff --git a/source/_posts/2014-08-09.md b/source/_posts/2014-08-09.md
new file mode 100644
index 0000000..2145855
--- /dev/null
+++ b/source/_posts/2014-08-09.md
@@ -0,0 +1,64 @@
+---
+title: 我的Linux学习历程:那些我看过的Linux书籍们
+tags:
+ - 图灵
+ - Linux
+categories: 学习
+permalink: this-is-the-linux
+featureImage: https://cat.yufan.me/cats/ame/this-is-linux.jpg
+date: 2014-08-09 23:16:46
+---
+
+来北京工作已经一个多月,大都市的生活比起读大学要忙碌得多,尤其是出行,基本以小时为计时单位。有时茫然看着窗外车水马龙,会有些迷茫自己选择的是对还是错。
+
+题外话不多说,回归这次的主题,扒一扒我看过的那些Linux相关的书籍。
+
+对于Linux的了解和接触,缘起自大一时候的Linux限选课,老师说这门课可选可不选,但是选修后考试挂了的话需要补考。当时的我还比较爱学习,于是兴冲冲地选修了这门课,用的是清华大学出版社出版的《Ubuntu Linux应用技术教程》。这本书写的并不是很好,里面对于图形界面的叫法还是最原始的XWindows,此书一大半都是基于图形界面说什么安装啊、应用软件使用啊、7788的。但也简单讲了`bash`的使用和常见的命令,比如`ls -all`然后用管道`|`将输入导入至`wc -l`来计算文件数,还有一些简单的vi编辑器的使用,Shell脚本的写法。
+
+当时因为才开始学的原因,什么都不懂,渐渐地,也就失去兴趣没怎么好好学。课程对应的实验都是和老师卖萌才过的,考试的时候也就是背了一下往年的考题,考完就忘得一干二净。现在想起来,还有点小后悔。
+
+
+
+本以为噩梦就此结束,我与Linux应该是老死不相往来,作为一名从小学四年级就开始学习使用Windows的用户,我真的很难适应和使用Linux。可是大二学习操作系统原理的时候再一次无奈了,我们的一切实验的环境都是在Linux下面,使用那些基本`fork()` `pipe()` 等Linux下面的C函数进行操作系统的实验。当时在极其痛苦的情况下重拾课本,花了整整一周时间去学习使用Shell,学习简单的C语言(**妈的,看的是谭浩强的书**),会用vi来编辑,会手动写Makefile使用gcc编译。
+
+这期间通过学长的介绍知道鸟哥这位Linux大牛,开始阅读他的《鸟哥的Linux私房菜》。很遗憾的是,鸟哥的教程是基于CentOS来介绍的,看完开头极其冗余复杂的安装部分,我就“阵亡了”。“妈妈啊,快来救我,Linux怎么这么复杂,什么Ubuntu、什么CentOS,还完全不怎么一样。”
+
+真正意义上接触并使用Linux,严格意义上说还得感谢“笨兔兔”这位Linux大牛。当时 Ubuntu 12.04 正好才出,本着不装逼就不会死的精神,我安装了这个系统,准备弄个双系统来装装逼。在研究如何配置 Ubuntu 12.04 的时候正好搜到了笨兔兔在他的博客发表的配置博文,当时也就是按照教程一行一行地复制粘贴命令。稍微知道如何使用 PPA 来安装 Ubuntu Tweak (一个国人写的对Ubuntu进行简单定制和优化的软件,你可以理解为Win里面的360)。这期间阅读他的博客,接触到深度的Linux发行版Deepin Linux。
+
+什么?专门为国人打造的便于国人使用的Linux?不错,装!
+
+在我安装使用后立刻就被它的界面所吸引,坦白说 LinuxDeepin 12.04 真的很优秀,它基于Ubuntu 12.04 的基础上,去掉了那个真的超级丑超级难用的Unity,美化了各种常见的组件。直到现在,我家里上大学前的台式机还装的是此系统。
+
+当时逛Deepin社区的时候,看到懒蜗牛Gentoo的《Linux入门很简单》出版了,看完电子版前2章后我就被此书深深地吸引了。真的,它一点都不枯燥,语言十分浅显风趣,内容也简单使用。实体版到货后我立刻通宵2天把它看完,虽然最后部分的程序编译有点云里雾里,但是基本的日常使用已经无碍。
+
+这个时候Linux已经基本被我用于日常的装逼,每当我在自习室前排用着Linux上网,常常会以一种看土鳖的眼神看着那些 Mac 上装 Windows 的同学,心里暗自发笑。
+
+故事本该到了这里就结束,反正Deepin日常使用已经无碍,还有什么好学的。可命运就是这么神奇,它往往会在你最得意的时候给你浇盆冷水,让你“压压惊”。
+
+那时已经到了13年,我开始迷恋上写博客,在学校组团参加CCF大会的时候接触到阿里云,和阿里云的销售一聊天,他大手一挥给了我一张半年的代金券,此券也开启了我新的Linux学习之路。
+
+下单安装ECS系统,果断Linux,选择系统的时候果断装逼,Ubuntu和Deepin一样,咱不屑于使用,咱要用CentOS。等云主机资源分配好可以运行时,我就傻眼了。纳呢,没有图形界面!只有一个简陋的Shell界面!这不是坑爹么!
+
+没有熟悉的 apt-get,没有了熟悉的软件包名,我不得不重拾大一的课本继续蛋疼地看那些常见命令,yum 的使用也让我蛋碎一地。等我使用 yum 搭建好 LAMP 环境嘚瑟地在一个主机交流群里面炫耀时,某位大神(**这里他要求不透露姓名**)很是鄙视地说:现在流行LNMP,流行编译源代码。
+
+得,你丫瞧不起我是吧,我也给你整出来……
+
+这期间学会了很多,参考了各种官方文档、手册、教程,一点点学会如何`wget`源码包,如何解包。看着`./configure --help`后面的一大串长到吐的参数一点点配置,看着`make`时候屏幕上滚动的各种debug信息暗自发呆。有时候为了解决一个简单的缺少依赖的问题Google一整个下午。即使是最后的编译完后,`make install`之后的配置也让我头疼万分,Nginx与FastCGI的交互,php-fpm的配置,MySQL的优化等等……
+
+很庆幸有这么一段黑暗的学习经历,因为真正的动手学习配置才对 Linux 有了深入的了解。当然,用前女友云儿的话说:装逼是要付出代价的。因为对 Linux 本身产生了极大的兴趣,这期间也读了很多设计的书籍,比如那本《Linux/Unix设计思想》。我至今依旧记得那个经典的小即是美的设计理念,没有代码层面的讲述,全书薄薄的一册介绍了各种Linux相关的编程理念,十分经典。
+
+还有就是那本《Linux内核设计与实现》,当时因为上选修课需要用到此书,在老师的讲授下结合以前学过的操作系统知识,真的能学到很多东西。比如,如何时间调度,如何实现排序,如何中断……
+
+2013年年底买了Kindle,又一次开始了我的新的Linux学习之路,当时国行还没上市。因为学生党,兜里银子少,就买了日货。可是问题由此而来,日版没有中文界面。在研究时发现Kindle官网部分开源了Kindle的源码,于是我便萌发了自己编译Kindle内核来装逼的想法。从基础的交叉编译工具链的搭建,到内核源码的定制配置,BusyBox的编译,UBoot的定制,还有Eink驱动的移植……
+
+因为涉及的东西很多很杂,在别人的指导下先看完了LFS手册,本着不装逼就不会死的原则先行尝试编译LFS,然后慢慢上手嵌入式系统的编译。因为基础比较薄弱的问题(连Shell脚本都不会写),又买了一本《Unix&Linux大学教程》读完。
+
+说了这么多废话,该讲讲今天参加图灵活动赠送的书籍**《Linux就是这个范儿》**。如果不是图灵市场部的英子姐姐在读者交流群里面公布了这个新书发布会,很有可能我就这的与这本好书擦肩而过。这本书是由阿里巴巴的两位大牛**赵鑫磊**和**张洁**写的,赵老师一直在淘宝大学里面做Linux的培训,此书的前身就是他的上课讲义。
+
+书的内容真的很全很全,但很遗憾的是它不够细,可能是限于篇幅的原因,很多都只是简单介绍,一带而过。但是书籍的编写语言却十分风趣幽默,初看此书的第一眼,就有一种在看《Linux入门很简单的感觉》,十分亲切。
+
+整个图书发布会上,张洁老师的精彩演讲,赵老师的健谈和广泛的知识面都让人印象十分深刻。很多问题,从他们的口中都能得到很好地解答。我曾经一个glibc的依赖问题将整个系统yum仓库弄坏,和赵老师交流时竟然发现他也有相似的经历,当然结果是无解。(╮(╯▽╰)╭)
+
+还记得赵老师在《Linux就是这个范儿》一书开头的那个“黄色冷笑话”,简单回顾一下我这短暂的2年Linux学习历程。其实很容易发现,学习,就像爬山一样,没有平坦的大道,需要努力地去攀登,即使途中某段是平面,那是因为后面还有更加陡峭的阶梯等待着你去攀登。
+
+学无止境!
diff --git a/source/_posts/2015-03-19.md b/source/_posts/2015-03-19.md
new file mode 100644
index 0000000..21d7f13
--- /dev/null
+++ b/source/_posts/2015-03-19.md
@@ -0,0 +1,200 @@
+---
+title: 如何更好地创建对象
+tags:
+ - Java
+categories: 学习
+permalink: the-better-way-to-make-objects
+featureImage: https://cat.yufan.me/cats/ame/ruby-code-snippet.jpg
+date: 2015-03-19 01:03:00
+---
+
+写Java一类的面相对象语言的程序员常常会遇到这么一个冷笑话:我今年都30了,还没找到对象,怎么办?简单啊,new 一个对象就好。
+
+当然这只是一个冷笑话,所谓的 new 一个对象,无非不就是调用这个类的构造方法去创建对象。乍一看也没什么问题,写个类ABC,用的时候new ABC()就好了。那么,会想一下,我们读书的时候,老师一定会说一个类的构造方法可以允许传入参数,甚至根据传入参数的不同创建多个构造方法。
+
+
+
+学过面向对象的你一定会说,没错啊,就是这样,方法重载,签名校验。都是一个方法,Perfect!那么,我们设想下面这么一种情况:
+
+假如我们有一个DTO类 CredentialsAuthParam 作为对外接口的传入参数,作为一个POJO类,我们一般就是定义一堆属性,然后一堆Getter、Setter,比如,我们可以这么定义:
+
+```java
+package me.yufan.dto;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import java.io.Serializable;
+
+public class CredentialsAuthParam implements Serializable {
+
+ private static final long serialVersionUID = -1L;
+
+ private String source;
+
+ private String validationCode;
+
+ private String operator;
+
+ private String remark;
+
+ public CredentialsAuthParam() {
+ }
+
+ public String getValidationCode() {
+ return validationCode;
+ }
+
+ public void setValidationCode(String validationCode) {
+ this.validationCode = validationCode;
+ }
+
+ public String getOperator() {
+ return operator;
+ }
+
+ public void setOperator(String operator) {
+ this.operator = operator;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark;
+ }
+
+ public String getSource() {
+ return source;
+ }
+
+ public void setSource(String source) {
+ this.source = source;
+ }
+
+ @Override
+ public String toString() {
+ return ToStringBuilder.reflectionToString(this,
+ ToStringStyle.SHORT_PREFIX_STYLE);
+ }
+}
+```
+
+看着很棒,多么简单,用 CredentialsAuthParam 的时候 new 一下,作为传入参数调用接口的方法就好。
+
+那么,如果我的对象要设置属性怎么办?一个个Setter?为何不能在创建对象时创建呢?比如,构造方法里面指定参数?没错,然后我们就有了下面的一堆构造方法。
+
+```java
+public CredentialsAuthParam(String source, String validationCode) {
+ this.source = source;
+ this.validationCode = validationCode;
+}
+
+public CredentialsAuthParam(String source, String validationCod, String operator) {
+ this.source = source;
+ this.validationCode = validationCode;
+ this.operator = operator;
+}
+
+public CredentialsAuthParam(String source, String validationCod,
+ String operator, String remark) {
+ this.source = source;
+ this.validationCode = validationCode;
+ this.operator = operator;
+ this.remark = remark;
+}
+```
+
+那么问题来了,参数这么多,又都是String,创建一个对象多麻烦。又比如,我只想指定其中3个属性,又都是String,但现在已经有了一个为3个String 参数的构造方法。怎么办?
+
+Java对方法重载的判断是按照签名的类型进行校验。所以方法参数顺序需要开发在使用时自己指定,也许我方法参数是:String source, String validationCode。但结果我因为复制粘贴不仔细变成了this.source = validationCode; this.validationCode = source;(别笑,你忙着写垃圾代码的时候就会出错) 或者构造方法使用者弄混了两个参数的顺序。那么就会出事啦。
+
+其实如果你看过Java圣经Effective Java的话,一定会注意到里面说过构造器(Builder),多个参数的构造方法一定要考虑使用构造器。比如,我们可以这么写:
+
+```java
+package me.yufan.dto;
+
+public class CredentialsAuthParamBuilder {
+
+ private String source = "";
+ private String validationCode;
+ private String operator = "";
+ private String remark = "";
+
+ public CredentialsAuthParamBuilder setSource(String source) {
+ this.source = source;
+ return this;
+ }
+
+ public CredentialsAuthParamBuilder setValidationCode(String validationCode) {
+ this.validationCode = validationCode;
+ return this;
+ }
+
+ public CredentialsAuthParamBuilder setOperator(String operator) {
+ this.operator = operator;
+ return this;
+ }
+
+ public CredentialsAuthParamBuilder setRemark(String remark) {
+ this.remark = remark;
+ return this;
+ }
+
+ public CredentialsAuthParam createCredentialsAuthParam() {
+ return new CredentialsAuthParam(source, validationCode, operator, remark);
+ }
+}
+```
+
+然后将原来类的构造方法定义为Protected,然后创建对象的时候只需要:
+
+```java
+new CredentialsRequestParamBuilder()
+.setRemark("remark")
+.createCredentialsRequestParam();
+```
+
+按照需求,设置几个属性就加几个 set 方法。
+
+接下来,我们说说单例模式:
+
+单例(Singleton),顾名思义,就是只被实例化一次的类。比如,我在MVC的拦截器中需要调用一个公共类,它里面存放的东西是大家共享的,我可以这么写:
+
+```java
+public class AuthorityInterceptorHelper {
+
+ private static AuthorityInterceptorHelper instance;
+
+ private AuthorityInterceptorHelper() {
+
+ }
+
+ public static AuthorityInterceptorHelper getInstance() {
+ if (instance == null) {
+ synchronized (AuthorityInterceptorHelper.class) {
+ if (instance == null) {
+ instance = new AuthorityInterceptorHelper();
+ }
+ }
+ }
+ return instance;
+ }
+// other code ...
+}
+```
+
+我首先要在内部定义一个自身的静态对象,然后将构造方法私有,getInstance()会先去看静态对象存在否,不存在,先加锁,也许加锁期间其他方法先调用此方法创建对象,再看看对象是否存在,不存在,创建对象解锁。
+
+看起来没什么问题,代码严密,十分规范,大家都是这么写的。但是,单例了么?定义为私有的方法一定没法访问了么?反射呢?
+
+其实枚举类便可以轻松实现需求,我们只需如下写法:
+
+```java
+public enum AuthorityInterceptorHelper {
+
+ INSTANCE;
+
+// other function ...
+}
+```
diff --git a/source/_posts/2015-05-09.md b/source/_posts/2015-05-09.md
new file mode 100644
index 0000000..2e171f8
--- /dev/null
+++ b/source/_posts/2015-05-09.md
@@ -0,0 +1,48 @@
+---
+title: 纵使生活平淡,爱情仍有万千期待
+tags:
+ - 影评
+ - 爱情
+categories: 文章
+permalink: lets-married
+featureImage: https://cat.yufan.me/cats/2015051001.jpg
+id: 125
+updated: '2016-02-17 20:00:51'
+date: 2015-05-09 23:26:12
+---
+
+速度与激情7这一阵子很风靡,我却没有赶潮流看零点首映,上周末因为公司机房断电没法加班,便买了张票去看看,也算是我对保罗的致敬。
+
+只是不知道为什么看完速7,突然间想写些有的没的。如果你以为我写的是关于速度亦或是激情,那你就错了。今天我们聊聊时下热门的爱情喜剧《咱们结婚吧》。
+
+
+
+一座城,四段爱,眼前的一切就是最好的安排。
+
+听说暧昧和暗恋是最美好的感觉,高圆圆毫无疑问真女神。沉稳的男人应该是很多女生无法抗拒的,外加低调有才注重细节,也难怪国民女神最终沦陷。选择在女生无助的时候进攻一定不会失败,无法在一起那就是错的人。
+
+对的人,是不会分开的。
+
+若爱,请珍惜。
+
+有没有一种女生让你一看就觉得心疼。我不知道陈意涵红起来是不是因为痞子英雄,但我知道每次看到她无辜的大眼睛,我都想替她掉眼泪。虽不是个恨嫁的姑娘,但29岁了想要个婚姻的承诺也是应该的。尤其是在这种男人40还一枝花的社会,对女生来说最重要的就是安全感。
+
+这种片子一定少不了女强人+贴心男的戏码,以前有时候会认为:女强人是不是要跟男更强人才合适么?但后来渐渐觉得如果两个人是互补,那便再好不过。
+
+再之后我看了杨澜的书,她说:“一个完美的女人在工作上要干练精明,下班后也要能够挽起袖子轻盈地走入家庭,角色的转换至关重要。”原话我已忘记,但是大意就是这样。所以我又改变想法,真正的女强人没有与谁更配之说,她该在工作与家庭之间找到完美平衡点。
+
+而片中刘涛顾了前者却忘了后者,还好她是幸运的,因为有人包容。但要是你没那么幸运,那就只能做好自己。
+
+在一起七年却在结婚当天发现这不是真爱,郭碧婷你特么以为你长得美就可以逗我吗?对于7年的感情输给7天呵呵即可。这段狗血出轨的剧情分分钟拉后腿,如果非要我给取个小标题,那就叫:你们离婚吧。
+
+算了,荧幕上的爱情,总是具有多元性。而会为了这种无聊事物喜怒哀乐的,估计只有我这种双鱼座。
+
+总的来说《咱们结婚吧》最大优点在于颜值较高,毫无疑问这点在这个看脸的时代极度吃香。对于这类劫财又劫色的电影,我真的是恨之入骨。但我又特么俗气到几乎每部都去支持票房。
+
+人总是这么矛盾,老想找个平衡点,但在尝试之后发现有点点难。
+
+不是影评,因为已经懒得去思考。不够深刻,因为没有犀利的视角。只感谢在此时的生活里,没有太多的不愉快。可是我一向不喜欢管人,所以我总在YY能出现一个人。Ta的作为总是与我的厌恶相悖,你说难不难?
+
+>Do not dwell in the past, do not dream of the future, concentrate yourself in the present。
+
+PS: 速7不错看,歌不错听。
diff --git a/source/_posts/2015-05-10.md b/source/_posts/2015-05-10.md
new file mode 100644
index 0000000..bdd2714
--- /dev/null
+++ b/source/_posts/2015-05-10.md
@@ -0,0 +1,39 @@
+---
+title: 放慢,快乐
+tags:
+ - 慢生活
+categories: 文章
+permalink: having-a-lomo-life
+featureImage: https://cat.yufan.me/cats/2015051003.jpg
+id: 126
+updated: '2016-02-17 20:00:42'
+date: 2015-05-10 04:01:20
+---
+
+因为工作的缘故,自己可控的闲暇时间越来越少,每日的加班,紧张得要死的工期。组长的口号就是:最短的时间,做出更多的事情。自然地,那种大学时的自由阅读时光愈发遥不可及。也就过年时难得有空看看格言,开篇第一句话就是:“时间就像海绵里的水,总是挤,也会没有的。”
+
+不由得想起3年前看过的一本书:《放慢·快乐》……
+
+
+
+我一向对喜欢笑的人很有好感,所以我从来不喜欢动漫里所谓的高贵冷艳型角色。会去看这本书,也只因喜欢封面上朱丹那明媚的笑容。因为我这人有个怪癖,没什么文化却喜欢逛书店,而且一般情况下只要那种封面看得爽的,然后书名取得文艺范儿一些的书我都会不管内容毫不犹豫入手。
+
+但其实这类书大都没什么实质性的内涵,看了也不长见识,只会不断冲击你的各种人生观、价值观、世界观。还没准还会把原来正的给冲歪了,潜移默化地把我们领到一条没有尽头的不归路……朋友经常吐槽说我写的东西都属于无病呻吟款,估计也就是因为这类书看多了的缘故。23333333
+
+而我们所不知道的是:“太多大家看似光鲜的东西,背后却是无人知晓的付出。”所以对于任何一个敢写自传的人,我都抱着佩服的态度。若没有足够精彩的人生经历,怎敢与众人分享?
+
+其实吧,在我看来,看一本书,只要自己能得到精神上的享受,在阅读的某一瞬间心里有震动过,那它就是一本好书。而《放慢·快乐》这本书里带给我们的是一个打不死的朱丹。无论是小时候家庭的变故,还是后来历经的挫折,都让她一度缺乏安全感。好在她总是乐观开朗,总能化灰暗为灿烂。
+
+书里很多都在写亲情,朱丹说自己是一个恋家的姑娘,所有的努力都是为了家人。对啊!我一直坚信,恋家的孩子都很善良,自己一个人生活惯了,也难怪她内心强大。关于这个问题网上流行这么一个理论:“若内心足够强大,就可以选择你爱的人或事。若内心不够强大,那就选择爱你的。”你说这有理还是无理?
+
+而仔细想想,很多时候我们需要透过别人的眼睛看世界。我拙劣地认为,欣赏一个人的原因大抵有两种:“一是Ta身上有你的影子,你们有许多相似的地方,所以实际上你只是纯属自恋在自我欣赏。二是你想成为Ta那样的人,但实际上你没办法成为,只不过TA做了很多你想做却没做的事。”
+
+生命中总是有一些人与你不谋而合。
+
+于是乎,我很欣赏林志颖,只因他的书《我对时间有耐心》中描绘的年轻时的匆忙和到中年时渐渐慢下来步调。
+
+人生不能着急,挤出来的时间,被时间挥霍了。生命蒙上细尘,时间身不由己。慢工养艺,慢餐养胃,慢步养生,慢活养寿。总之,慢下来很养人。
+
+只是我又在想,在这个什么都飞速的时代,慢生活是不是只能被无限YY?
+
+![](https://cat.yufan.me/cats/2015051005.jpg)
diff --git a/source/_posts/2015-05-12.md b/source/_posts/2015-05-12.md
new file mode 100644
index 0000000..7e6c227
--- /dev/null
+++ b/source/_posts/2015-05-12.md
@@ -0,0 +1,30 @@
+---
+title: 你在哪里?我在这里
+tags:
+ - 雨季
+categories: 文章
+permalink: i-am-right-here
+featureImage: https://cat.yufan.me/cats/2015052401.jpg
+id: 128
+updated: '2016-02-17 20:00:33'
+date: 2015-05-12 08:20:50
+---
+
+浑浑噩噩熬过了一周,又是一个月的月底。书架上的《言叶之庭》,还只翻了两页。记得去年看完新海诚的同名动画的时候,就被动画里面爱情感动得落泪。跨越了年龄的距离,爱情,可以那么朴实。
+
+一直想着啊诚会不会像当年的《秒速五厘米》一样写一本同名小说,毕竟当年的那部动画,并没看明白。现实中,人与人之间的纠葛,并不是一部一个半小时的电影能够讲述完毕的。很多时候,文字往往比画面更有感染力。记得当时看完了“樱花抄”(小说的第一话),才慢慢懂了动画里贵树、明理的脆弱初恋。才懂了黑板上的姻缘伞,终究只是姻缘,而不是永远。
+
+
+
+五月的初期,南方梅雨的季节,我如愿拿到了预定的《言叶之庭》简版。翻开书页,夹杂的是还未完全散去的油墨清香。啊诚的文字,依旧那么细腻,明信片上的手绘,依旧那么美好,男主的情感,还是简单到令人心碎。本想着第一时间将这本书读完,可现实中却是一拖再拖……
+
+今年的五月,我已不是那个还在读书的小孩。繁忙的工作,排期到年底的超长计划,每天都要面对的零碎琐事,根本没有心思完全静下来读完一本书。五月的北京,没有了以前熟悉的雨季,也没有了熟悉的潮湿,更没有了熟悉的笑脸。有一次连续加了39个小时的班后很累,很累,连走回家的力气都没有,我就坐在公司楼下的长椅上看着来来往往路人,从黄昏看到夜幕降临,看到华灯初上。他们中大都行色匆匆,满脸严肃。
+
+有时候会想,是不是现实真的如言叶里女主说的那样:生活中的我们,总是背负着自己的大大包袱,活得很累很累。出生、读书、工作、成家、相夫教子、退休、死亡。每个人都在按照既定的路线走着,或追寻梦想,或碌碌无为,终究只是这大社会的一粒缩影。无法放下,只能背负,我们的身上,凝聚着太多人对自己的期待和梦想。父辈的遗憾,需要我们来完成;未来的生活,需要我们自己独立打拼;自己的抱负,需要一点点去积攒。夜里的无眠,是因为和别人的差距太遥远,是因为生活的压力和迷失。
+
+上周的北京,突然下了几场久违的小雨。淅沥的雨声,熟悉到令人发酸的水汽,还有那因为没带伞而奔跑着的我……
+
+>我们都是没伞的孩子,下雨了,不得不奋力奔跑,为了少淋些雨。
+>只是无论跑得有多快,却总逃不了被淋湿的命运。
+>一直在奔跑,也一直在寻找,只为找把能遮风挡雨的伞儿,以及那伞下的人儿。
+>今天又下雨了,我在这里,可你又在哪儿?
diff --git a/source/_posts/2015-05-31.md b/source/_posts/2015-05-31.md
new file mode 100644
index 0000000..1880d31
--- /dev/null
+++ b/source/_posts/2015-05-31.md
@@ -0,0 +1,69 @@
+---
+title: 如何找到适合你的软件
+tags:
+ - 学习
+ - 软件
+categories: 学习
+permalink: how-to-choose-your-tools
+featureImage: https://cat.yufan.me/cats/2015051201.jpg
+id: 140
+updated: '2015-05-31 07:20:57'
+date: 2015-05-31 06:37:00
+---
+
+我一向不喜欢做一名所谓的“传教者”,向你推荐哪个软件好用,哪个软件比哪个软件好用,做什么事有什么好的软件可以实现。很多时候别人问我类似的软件推荐需求时,我都尽量避免回答。
+
+当然,造成这样的结果还是因为去年年底开始,公司开始给我们配置了Mac笔记本。作为一个很早就开始使用Mac的人,自然地,看到初拿Mac的同事的各种Low B的使用,会忍不住吐槽和推荐。
+
+
+
+可是,结局却不尽如人意。有些很棒的软件,要么是你给他装上去之后他一次都不用,要么是他坚持着自己的使用习惯。对于大多数人而言,切换了一个新的平台,第一时间想的却是以前的各种使用习惯,如果改变过大,便会抱怨……
+
+于是也就有了以下的文字:(全部以文本编辑器为例)
+
+### 一、弄清软件定义
+
+这个软件主要用来做的是什么?
+
+比如,文本编辑器,维基百科这样定义:
+>文本编辑器是计算机软件中的一种。主要用于用来编写和查看文本文件。有一些特殊的文本编辑器支持增加自有的格式来丰富文档的表现形式。操作系统或者集成开发环境通常会带有可以查看和编辑纯文本的编辑器,可增加格式的文本编辑器通常是个人用户或者公司在制作需要格式的文件中使用。
+
+PS,记事本真心不适合写代码,尤其是php代码 ;)
+
+### 二、你真的弄清楚了?
+
+1. 你现在的系统上有多少常见的文本编辑器,你能列举多少个?
+2. 它们每个的特点又是如何,你们说出一两个它们的优缺点么?
+3. 百度、谷歌之后,你能说出哪个该用来写代码,哪个该用来编辑Markdown了么?
+
+同样,对于任何一个类型的软件,我们不可能百分百了解这么多。但是,在寻找自己的心仪软件前有意识地收集归纳,是必要的。不是别人说这个软件好,这个软件就好了,要多知道几款,有意识地对比。
+
+### 三、你的目的是什么?
+
+目的,也就是你的使用需求,你究竟想要用这个软件做什么事。比如说,上次我想编辑排版Markdown,有人向我推荐Word,我委婉地拒绝了他。因为他不懂我的需求,Word和Markdown完全是两码事。
+
+你想做什么,是你选择某一款软件的决定性因素,也是你的最终目的,挑选任何一款软件前都必须明确,不能将就。
+
+### 四、立刻下载使用
+
+如果你觉得好,对它感兴趣,那就立刻下载,立刻使用。不要总是像松鼠一样囤积一堆软件放在那里,却一次都不用。
+
+很多时候,需求是通过使用来慢慢明确细化的,比如你一开始只是想要文本编辑器,但是你后面发现你需要支持Markdown的文本编辑器,然后你又发现你不光需要它能支持,还要能高亮并实时显示。
+
+通过大量使用有助于你对某个软件有自我的评价,而不是人云亦云。
+
+### 五、及时更新版本
+
+人是不断进步的,软件也是如此,新的版本也许有未知的BUG,也许有较大的改动,需要新的学习成本。但是新的版本也意味着新的功能,这样的体验,不是很美妙么?
+
+每时每刻都会有新的软件诞生,关注了解它们,丰富你的软件知识库,以防不时之需。
+
+### 六、参与软件改进
+
+软件的进步,需要用户的反馈,也需要你我的参与。对于缺点、BUG、需求,如果你真的喜欢某个软件,都要记得去提出。一般的开源软件基本都会有社区,或者是联系Email,或者是反馈地址。提出你的需求,有助于软件的改进。
+
+当然,如果你是一名程序员,你还可以完全直接参与到某个开源软件中去。或者贡献翻译,或者丰富文档,或者提交代码变更。
+
+----
+
+那么,您是用户,还是缔造者,还是贡献者呢?
diff --git a/source/_posts/2015-07-04.md b/source/_posts/2015-07-04.md
new file mode 100644
index 0000000..cbb4915
--- /dev/null
+++ b/source/_posts/2015-07-04.md
@@ -0,0 +1,227 @@
+---
+title: 扒一扒毕业后的败家记
+tags:
+ - 败家
+categories: 文章
+permalink: gossip-on-profligate-spending
+featureImage: https://cat.yufan.me/cats/2015070401.jpg
+id: 128
+updated: '2016-02-17 12:00:25'
+date: 2015-07-04 15:44:00
+---
+
+当年玩基三的时候流行着这么一句话:一入基三深似海,从此节操是路人。对于我这个用惯了Apple的人而言,可能感触最深的话就是,一入苹果深似海,从此金钱不够买。
+
+今天,我就来扒一扒毕业后的败家记。(这是一篇中二病满满的文章,阅读前请戴好钛合金眼睛,以防被刺瞎。)
+
+
+
+## 败家前夕
+
+作为索尼忠实粉丝的我,对于索尼的游戏机产品可谓是垂涎已久。(没错,请叫我索狗。)记得上高一的时候,“大法”的小霸王掌机(PSP)可谓是风靡整个学校。我的那群小伙伴天天上课就在那边刷怪物猎人,可谓是十分眼馋。
+
+可恨的是,那个时候哪有什么钱,每次都是饭卡没钱了,问老妈要个50、100。印象最深的就是大一时对生物极其感兴趣,想买本《陈阅增普通生物学(第二版)》,但是又不敢向父母要钱。怎么办?我就以饭卡没钱的名义向母上要了100块,其中50元充值了饭卡,剩下的50拿来买了这本书。可想而知,那一个月我过得十分凄惨,每天在学校一顿只吃一块五:一个蔬菜一元,一碗饭五毛。
+
+拿到书那天还是超级高兴的,07年那会网购还不流行,我当时通过邮局给高教出版社电汇买的这本书。这张邮局电汇的回执单至今依旧贴在我的《普通生物学》背面,纪念当时为了买书的幸酸挨饿史。
+
+在这种兜里没几个银子,有几个钱也都拿来买书的情况下,我只能眼巴巴地看着我的同学玩着PSP。唉,无法守护“姨夫”的微笑还真是对不起了。
+
+本以为这种兜里没钱的窘境到了大学会有所好转,结果我那お父様说既然读了大学,那就该自我独立了,大一的学费生活费我们给你出了,大二以后的生活费和学费就靠你自己了。
+
+纳呢?(°ω°〃) 当时我就整个人都不好了,你们所不知道的是,山大软件工程大三大四的学费是一万六啊,一万六啊,一万六啊!(因为很重要,所以重复三遍。)
+
+这期间的幸苦,我就不说了,到了大四毕业,我才还完了问父母借的学费。(生活费我一个子都没要,哼。 (๑•̀ㅂ•́)๑✧)
+
+终于,苦尽甘来的时刻到了,哥毕业了!哥有钱了!如同吃了金坷垃般,开始了疯狂的购买历程,根本停不下来,老夫的麒麟臂要发作了……
+
+## 开始败家
+
+### Lamy Safari
+
+![](https://cat.yufan.me/cats/2015081001.jpg)
+
+在疯狂败家前我还是一个爱读书的好孩子,所以非常喜欢做读书笔记,摘抄一些看起来很精致的文字,于是便买了一根白色Lamy Safari钢笔。工作后嫌以前的笔比较难看,便买了一根苹果绿的。
+
+然而,工作后并很少有需要写字的情况,大多数时候,我都用于在开会的时候卖萌(就是转笔啦)。后面买了iPad之后,基本开会都玩iPad,就基本放在那吃灰了,233333。
+
+### Playstation Vita 2000
+
+![](https://cat.yufan.me/cats/2015070501.jpg)
+
+工作后的第一个月,我如愿地拿到了第一笔工资,7800元。那个时候才来北京,交完压一付三的房租和其他的费用,提前扣除完下个月的伙食费和交通费后就只剩下2000多。
+
+然而所剩无几的工资并不能阻止我购买 PSV 的脚步,工资到账时博主正随部门在爬华山。等下山入住西安后,已经是半夜8点。我立刻打开淘宝找了一家西安的电玩店,打电话确定还没关门,便在人生地不熟的情况下飞奔过去,店主sama有种你下班别走。
+
+PSV2000 白黄机还有么?来一台。Project Diva F2 还有么?来一份。什么?内存卡只有 32G 的,没事,咱有钱,来一张。刷了卡就跑,真刺激!
+
+有了PSV后我超级开心,因为大四的时候在B站上看到一个名为[梅露露英语教室](http://www.bilibili.com/video/av392050/)的游戏视频合辑,说的是一个日本 Gust 社出品的 JRPG 游戏 [Atelier Meruru](http://www.ateliergames.eu/meruruplus/),当时看完后就超级喜欢,因为那配音、那人设实在是超级萌,瞬间激发了我的宅男之魂有木有!于是也想来一发,奈何这是一个PS3游戏,我还是个穷学生,连手机都买不起啊!后面通过Google了解到这个游戏有PSV版,我就早早计划着毕业后一有工资一定要买一台。而现在终于如愿啦!
+
+### Macbook Air 2014 Early
+
+![](https://cat.yufan.me/cats/2015070502.jpg)
+
+7、8两个月陆陆续续买了1000多块钱的游戏,同时,在这期间我做了一个非常重大的决定——换电脑。其实我在大二下学期才有了自己的电脑,联想的Y460p,算起来也只使用了3年不到。才毕业入职时公司人力说,如果使用自己的电脑的话,公司提供每月200元的电脑补助。作为一个穷得叮当响的新人菜鸟,200元虽少,也是肉啊,所以果断使用自己不算太旧的小Y来写代码。
+
+本来电脑也能凑合着用,如果不用 IDEA 写代码的话也不卡,奈何我旁边的同事使用的是 Macbook,有一天我们一起讨论一个设计方案时,他向我演示各种 Macbook 上的软件和便捷的命令行使用。
+
+当时我就对 Mac 程序的流畅性惊呆了,说实话,我一直很喜欢 Linux 上的命令行。因为很多软件啊,比如 git、vi,都是只有命令行的,且 Windows 上想使用这些开发必备的软件都不是很容易。为了用 git,我记得我花了一个晚上下载了 MinGW,然后自己蛋疼地编译源码,期间解决各种依赖问题,最后为了整文件编码,花了3天时间,才成功在 Windows 下面使用 git 命令提交代码。
+
+所以,看到 OSX 那亲切的命令行之后你知道我有多开心么?在换 Macbook 之前,我使用的是 LinuxMint,为了定制它花了很多心血,但是系统并不是那么流畅,而且没有 QQ 一类的中国电脑必备软件。恰好这个时候苹果在暑期针对学生优惠,价格便宜了近2K。Stop! Stop! Shut up! And Take My Money.
+
+我立刻去楼下办了张信用卡,借实习生的学生证分期买了台 Macbook Air。至于小Y,那破电脑在 Macbook 到手那天我就顺丰快递给我妈玩 QQ上海麻将去了。
+
+### iPad mini2
+
+![](https://cat.yufan.me/cats/2015070503.jpg)
+
+iPad mini2的购买说起来还蛮有意思的,那个时候我还不是一名称职的果粉,说果黑也不为过,因为买不起,所以只好黑了,2333。而最后的购买的原因更多的是脑子一冲动的结果,因为在这之前,我都是一个很理智的消费者(谁信啊)。作为[平板盒子](http://www.pbhz.com/author/xiaoyu)的编辑一枚,我很早就接触了关于平板的内容,也常体验各种 Android 平板(其实就是觍着脸玩土豪同学的平板QAQ)。所以呢我一直都想有一台属于自己的平板,然后拿来看电子书,因为我是一个爱学习的好学生(此处该有掌声)…………才怪呢!
+
+iPad Air 2发售的那天晚上,我没有熬夜观看,也不知道有这么一件事,那个时候我还住在离公司28公里远的上地软件园,住的地方也没有网,所以早早的洗洗睡了。
+
+第二天早上在西二旗排队挤地铁,无聊刷驱动之家新闻时才发现,iPad 竟然出新款了,出于某种IT从业人员的敏感度,我猜旧款的 iPad 一定会降价,而且这个时候一定会有大量的翻新机,所以价格一定是历史性的冰点价格。一到公司我就打开 Apple 的在线商城,卧槽,果不其然,翻新的 iPad mini2 只要2200块,比港水还便宜。二话不说,买买买。
+
+付款成功后不到1个小时,iPad mini2 便断货,别说翻新机了,连全新机都没货了。可想而知,当时的我是有多得意,虽然兜里的钱越来越少,但是又圆了一个梦。从此博主踏上了钱包君一去不复返(啊呸),踏上了 Apple 全系列制霸(啊呸),踏上了忠实果狗的道路,离姨夫的微笑越来越远……
+
+### iPad Air2
+
+![](https://cat.yufan.me/cats/2015070512.jpg)
+
+如果说 iPad mini2 的购买是一个美丽的意外的话,我想 iPad Air 2 的购买更像是一次理智的思考后的选择(谁信哦),有了 mini2 之后我深刻体会到 iOS 系统的流畅和强大,相比较下 Kindle 版的多看简直就是渣,于是在 mini2 拿到手的第二天,我便把伴随我2年的 Kindle Paperwhite 2 二手交易掉了。
+
+恰巧,这期间因为表现好提前转正,工资也涨了不少,于是我手上可以挥霍的钱也多了不少。有一天晚上我加班到凌晨2点,只好在公司的休息室睡觉。在床上刷[古树旋律](http://tieba.baidu.com/f?kw=deemo)的时候突然觉得 mini2 的屏幕似乎有点小,然后就各种越看越不顺眼。(你丫不就是想找理由换个新的 Air 2 么?我懂,我懂。)
+
+上苹果团一看,最新的 iPad Air 2 港水只要3500,卧槽,这么便宜!(一个月前你还不是穷得只买得起mini2么?)立刻下单买了一台。
+
+拿到手时,那外观、那手感自然是极好的,因为这逼格满满啊。尤其结合 Macbook 办公使用,真心很方便,这期间正好接触到 GTD,开始学习使用 Omni Focus。于是我花了258元在 iPad 上来了一发,然后放在电脑旁边做时间管理,真心很方便。
+
+什么?越狱可以免费装,我去,买得起 iPad 和 Macbook,买不起一个软件么?(我才不会说那个时候我什么都不懂呢 QAQ!因此入手 iPad 一个月后,在上面光游戏就花了700多块钱了)
+
+### iPhone 6
+
+![](https://cat.yufan.me/cats/2015070515.jpg)
+
+忙碌的日子持续到2014年年底,工资越来越多,加班也越来越多,自身的幸福指数也越来越低。尤其是那台伴随我2年的Lenovo A789,不知为何,最近感觉它越来越卡。(不就是你丫手痒想换了)
+
+于是,又到了动物们交配的季节(啊呸)又到了该换手机的时候了。其实,在 iPhone 6 发售的当晚,我就在 Apple Store 上来了一发,但最后又退款了。因为对于我而言,Macbook 是生产工具,而 iPhone 更多的是一种娱乐工具,尤其是在我不经常用手机的情况下,买一台 iPhone 简直是浪费。(我才不会说那是因为你孙子突然发现买了 iPhone 之后还不起下个月的信用卡贷款了,才无奈退货。)
+
+那为何现在又想买了,废话,有钱了买一台爽一爽不行啊。有钱,任性。
+
+### Macbook Retina Pro 15 2014 Mid
+
+![](https://cat.yufan.me/cats/2015070511.jpg)
+
+换 Macbook Retina Pro 15 土豪版的时候已经是15年初,其实本来没有这一茬的,去年买 Macbook Air 的时候正好 Pro 系列更新,国行版要等上几周,尤其是乞丐版的 13 Pro价格只比我的定制 8G i7 128G 土豪版 Air 贵500块。
+
+但是当时出于早买早享受的心理,直接下单 Air 了。后来一起入职的同事换了 13寸的 Pro,博主一边星星眼地看着那完全看不出像素点的视网膜屏幕,一边不断暗示自己:Air 轻便,身轻体柔易推倒。啊呸!
+
+这个时候正好兜里钱不少了,于是那还等什么,买买买,立刻购买!那买哪款呢?这还用问,必然是最贵的!
+
+当然,我才不会告诉你,这期间公司开始决定给所有员工配备定制顶配的 Macbook Air,导致我无法装逼,于是才决定换电脑的。(害羞脸 MuA)
+
+### iPod Shuffle & CX215
+
+![](https://cat.yufan.me/cats/2015070514.jpg)
+
+买 iPod Shuffle 的时候还是去年,那个时候还没从西二旗搬到后来的十里堡,所以上班要40多分钟。那个时候在地铁上要么看 Kindle,要么看技术书籍,印象极深的是有一次,我因为看《数据结构与算法JavaScript描述》那本书太专注,直到看完了,才发现,我在10号线上已经坐了好几圈了。
+
+当然,地铁上不是每次都有空座的,尤其是人多的时候,你连移动一根脚趾都做不到。这个时候,往往就不知道该如何消磨时间,不如说,这个时候听听小曲,也是极好的。
+
+但说到底,我并不是一个很喜欢听歌的少年,我对音乐的绝大多数记忆,都只局限于上个世纪80年代,我奶奶辈妈妈辈们喜欢的歌曲,还有就是某些日本萌系动漫的 OP 和 ED。所以当我初来到北京,听到满世界都是小苹果的时候,我的内心是极度崩溃的。
+
+咳咳,话题扯的有点远,正因为这种原因,我买了一台 iPod Shuffle,因为不是音乐发烧友,也不迷信所谓的玄学,所以买了一根不是很贵的森海塞尔CX215,黑东只要299包邮哦。
+
+你说什么?手机不就可以听歌了?不不,那可不行,你见过哪个音乐发烧友在地铁里摇头晃脑,然后掏出手机切歌的?你不是非音乐发烧友么?不不,这不符合我的身份,手机听歌没有逼格,逼格你懂么?就是 Bigger Than Bigger,比大更大。
+
+后面搬家到了十里堡,上班坐地铁只有两站路,这个时候正好北京地铁即将涨价,想想兜里没几个银子,(废话,你这么买,能剩多少钱?)于是又买了一个风火轮,每天听着歌,骑着风火轮上下班,想想,也是极好的。(当然,那画面太美,我可不敢看`>\\<`)
+
+### Playstation 4 ice white
+
+![](https://cat.yufan.me/cats/2015070516.jpg)
+
+农历新年后又开始了忙碌的工作,无意中发现,之前只和 Destiny 捆绑销售的 Playtation 4 白色机型开始有零售版了。我去,那还不赶快买买买!还没到中午12点便跑到最近的北京鼓楼电玩一条街提了一台才到货的日水。
+
+这可不得了,买了后发现没显示器,那哪能行,立刻又跑到京东下单台Dell U2413。回到家,PS键开机,刷刷357,真是“西亚哇塞”啊!当然,目前发现 U2413 作为 Macbook 的外接显示器太悲剧,准备下个月入手 Dell P2415Q 4K 24寸显示器了。
+
+其实这一段主要想讲的不是 PS4,而是对应的游戏。作为曾经的 3DH,啊不,3DM 资深 PC狗,浪迹三大妈论坛10余年,我一贯是主张咱们玩游戏的钱在八国联军时代已经付过了。然而,这并没有什么卵用,你要想玩 PS4 游戏,还是得老老实实交钱。WTH!WTF!
+
+于是,我的麒麟臂又开始痒了,[TLOU](http://d7vg.com/psngame/6418?psnid=syhily)咋样?不错,当年看[纯黑的视频](http://bbs.a9vg.com/thread-4236049-1-2.html)就觉得了不得了,买!那个娇喘9(古墓丽影9)如何?不错不错,娇喘什么的,我是最喜欢的了`>\\<`,买买买……
+
+就这样,博主踏上了购买游戏的不归路,我似乎看到胸前的红领巾越来越鲜艳,姨夫的微笑越来越灿烂。每当我会想起当年的酣战,我都会高呼,索尼大法好!千古罪人刘睿哲!
+
+### Playstation Vita 2000 Special Edition
+
+![](https://cat.yufan.me/cats/2015070513.jpg)
+
+为何保卫姨夫的微笑,落实我的索狗头衔,自然又买了一台 PSV。我才不会说因为裸奔导致前一台机器屏幕刮花然后土豪地直接买一台新的把旧的直接当玩具拆卸一遍送给我的表弟的事实呢。(因为一口气说完没有断句 2333333)
+
+换了新的 PSV,自然也就有了一点闲钱,立刻把我前面提到的工作室系列全部收集完毕,花了1200大洋,全系列制霸,然后慢慢玩。(就是照片里面中间一排的4个游戏)为何不玩一部买一部?因为有钱呗。
+
+当然,因为有了 PSV 和 PS4 两台机器,自然地买了 PS+ 会员,每个月也就买一两个游戏,然后买了放在一边,玩玩会免的4399,幸福指数爆表啊!
+
+### Apple Watch
+
+![](https://cat.yufan.me/cats/2015070506.jpg)
+
+MLGB(买了个表)的时候应该是今年4月了,这个时候的博主已经是忠实果粉了,作为以 Geek 自居的我,自然地来了一发。然而并没有什么卵用,发现还不如我大学时买的 70 元山寨 Casio 看时间方便,现在不知道给我丢在哪里吃灰呢……
+
+### New Macbook
+
+![](https://cat.yufan.me/cats/2015070505.jpg)
+
+新 Macbook 其实是和 Apple Watch 一起买的,这个时候我的 Macbook Air 已经二手卖掉了,上下班背个 RMBP 15 又嫌重。没办法,娇气呗。正好这新笔记本这么好看,这么有逼格,京东白条还12期免息(刘强东我爱你,我要给你生猴子)。
+
+还用说么?还不赶快买买买!
+
+现在,它已经成为我的星巴克主力电脑、回家后的大号 iPad。晚上用它看 B 站的时候,那温度,还是蛮感人的。你脸上怎么热得流汗了?不,你看错了,那是我因为感动流下的泪水,才不是什么汗呢!
+
+### FC660M
+
+![](https://cat.yufan.me/cats/2015070504.jpg)
+
+在买 FC660M 之前,我有两把机械键盘,一把是 NOPPOO 的 Choc Pro POM 黑轴。性价比极其高。400元不到的价格你能买到 Cherry 原厂的黑轴加手感很独特的POM键帽。POM的质感很独特,非要说感觉,那就是很硬。
+
+对你没有看错,就是很硬。因为很硬,加上黑轴特有的直上直下,当年被我专门拿来打 [osu!](http://osu.ppy.sh/)了,也就是这把键盘和 Wacom 的 CTL470 数位板伴我度过了无数个日夜,帮我 Rank 多首歌曲,BPM 300的歌曲也可以无压力,结合屌双和单点的指法轻松 Solo。
+
+另一把机械就是大家很熟悉的 Cherry 原厂 MX 3.0 茶轴,买的时候图便宜,又冲着 Cherry 的牌子买的,买完后才发现,这货的质量就和它的价格一样,毫无人性。ABS 的键帽手感虽然极好的,但是才用2个月就油光可鉴,非浸染非二次成型只是丝网印刷的字体也糊成一片。要不是当时纯用于龙之谷,我才不买。
+
+这两把键盘在我换了 Macbook 之后全部二手掉,无它,Macbook 太好用尔。然而,当我用烂了第四张 45 元的 Macbook 键盘膜之后,我又免不了想再买把机械爽爽。
+
+可是,绝大多数机械键盘,都是为 PC 设计的,要想用专门的 Mac 键盘,有!1500多的HHKB(这货我从同事那借过来爽了一周后放弃),还有1800的 Filco 蓝牙键盘,还有一个 M 开头的品牌,但是它们的键盘都好丑啊。
+
+我理想中的 Mac 机械键盘,首先要小,所以一开始我就直接考虑 60% 的布局。然后要有方向键,瞬间只剩下Race II 和 可以编程的 Poker II 和 FC660M了。
+
+然后想要上PBT,想要热升华,想要铝板而不是铁板。这样一来,无论从哪个角度,FC660M 都是首选,可是 Mac 的键位和 PC 不一样,这是一个大问题。
+
+在百度、谷歌、必应之后发现牛逼的 Karabiner,借了同事的鸭子尝试了专门的定制发现可以自由地指定键盘改指定按键之后(当然这是下一篇文章要说的事了),我果断决定买了。
+
+买的时候因为志海和停止生产,韩国原厂准备找 KBT 代工。处于这个变更的间隙我,在淘宝全网无货的情况下,只能加钱花了800多在某黑心商人那买到了最后一把红轴白帽黑底。(心痛ing.....)
+
+### TrackPad & mStand & Thunderbolt to RJ45
+
+![](https://cat.yufan.me/cats/2015070507.jpg)
+
+为了装逼买了机械键盘自然也要付出对应的装逼成本,其实早在才拥有 Macbook 的时候,我便被 V2EX 上的某些人的工位毒到了。无他,因为那个 mStand 实在是太好看了,太有逼格了,太酷炫了。尤其是在买了机械键盘之后,我更加坚信:这个逼,我装定了。
+
+淘宝搜索一番,卧槽,因为有了大陆的代理,原来500多的价格现在只要300块,立刻购买。买了这个之后想用触摸板怎么办?买个588块的 TrackPad 呗,世界上最大的苹果触摸板,我早就眼馋很久了。因为要用 USB 连接键盘导致 USB 接口不够怎么办?买个200块的 Thunberbolt 转 RJ45 的转接线呗。
+
+于是,就有了你上面看到的画面,当然,我已经预定了2000元的 Thunberbolt 的 Dock,预计下个月从美国飘过来……
+
+### 其它琐碎
+
+![](https://cat.yufan.me/cats/2015070508.jpg)
+
+别看博主买了这么多电子产品,博主也是一个爱看书的追风少年呢!买书看书什么的可是一本不拉,上面的书籍只是我的藏书量的三分之一,而且每本我都有看哦。
+
+![](https://cat.yufan.me/cats/2015070509.jpg)
+
+这个抱枕博主花了300还是400大洋买的,记不得了,超级喜欢哦。无聊的时候可以抱在怀里卖萌,可以中午睡觉拿来当枕头,不开心时还可以放在屁股后面当靠垫,还能摆在桌前说明我不是Gay。(似乎有什么奇怪的东西混进去了……)
+
+![](https://cat.yufan.me/cats/2015070510.jpg)
+
+当然我还喜欢收集各种漂亮的明信片,喜欢和人交换,每一次交换,都是一次满怀故事的遇见。期待遇见同样一个爱好明信片的你,期待下一个百无聊赖中可以回味的故事……
+
+## 结
+
+不知不觉毕业后的一年就这么稀里糊涂地过去了,学到了很多,也失去了很多,但是不变的,还是那一颗买买买的心,23333。
+
+战神3 PS4下周就出了,卧槽,还不赶快买买买!!!
diff --git a/source/_posts/2015-09-06.md b/source/_posts/2015-09-06.md
new file mode 100644
index 0000000..389dc24
--- /dev/null
+++ b/source/_posts/2015-09-06.md
@@ -0,0 +1,59 @@
+---
+title: 我们都是陌生人
+tags:
+ - 水一个
+categories: 文章
+permalink: we-are-stranger
+featureImage: https://cat.yufan.me/cats/2015090601.jpg
+id: 141
+updated: '2016-02-04 14:56:26'
+date: 2015-09-06 03:11:19
+---
+
+还未从忙碌中回神,八月就这么不知不觉地过去,周遭的人事变换,认识了些陌生的新面孔,也少了些熟悉的旧面孔。
+
+——题记
+
+### 1.
+
+今年的八月,没有去年那般湿热,不知是不是因为毕业的日子早已离我远去,印象中里的毕业季总是在热火朝天的季节里,热得烦躁不堪却也要坚持穿上累赘的学士服四处拍照。就和初到北京时住的地下室一样,湿漉漉的地板墙壁,湿漉漉的被单床铺,像是初面职场时内心焦急的大汗淋漓。
+
+那时的我,面对着陌生的职场,从来没接触的知识和技能,内心焦躁不安并自我怀疑。那样烦躁的日子里,睡前唯一能做的事,就是强迫自己阅读几页《Java编程思想》,每多掌握一点知识的时候,心中的焦虑便会被抚平一些。后来习惯了在公司通宵加班,大多时候,其实都是在看书,看设计模式,看关系数据库,看NoSQL,看并发编程……
+
+
+
+看了那么多还是看不清前路,公司的休息室睡起来不是很舒适,每每梦里迷迷糊糊好像看见许多面孔,醒来却头沉沉什么都想不起来。却又总会莫名其妙回想起很多旧时的事儿:六岁那年那只追着我三条街的狗;中秋节的外婆牌麻糍;爷爷去世时躺的那块旧门板。
+
+后来因为工作中种种事情焦虑甚至绝望的时候,就会没来由地想起这些细节,好像滴滴答答的流水,绵长久远,把时间拉长一点,把步子拉慢一点,甚至可以把记忆拉回好几年前。想起过去的种种,然后愈发地对自己陌生起来,就像是一个局外人,麻木看着那些属于自己的过去。而有时,又会有一种正在经历过去的不真实感,矛盾、错杂。
+
+### 2.
+
+前不久的一天晚上,我看着自己的键盘。毫无疑问,我们已经熟悉到无话可说了。
+
+工作后之后才知道,程序员的生活其实是一种乏味到极致的体现,两点一线的生活,上班时的代码和调试更像是某种重复的洗脑。有时候想要发泄什么,才发现生活平淡到你连骂人都没了素材。无聊的时间里也会想找东西发泄,比如在动漫和游戏中麻木自己,或是在一本又一本技术书籍中埋没自己。直到某一天,悲哀地发现自己连哭的力气都没有了。
+
+大概是因为心累,七月的时候进行了一次转岗,开始到银行组,着手开发重构公司的核心交易系统。从专注技术的组件组转而开发业务系统,对我而言是一件很大的挑战。业务的不熟悉,设计的不全面,还有旧系统遗留下的各种坑,在初次接手的一个月里为此出了好几次风险事故。
+
+领导对自己的不信任,同事对自己的抱怨,让自己一度绝望想要放弃。那时的我一个人负责全部项目的技术重构设计,项目组只有一个新入职的产品,一个才毕业的测试。全部的需求要我带着去过,测试也要我手把手教,代码只有我一个人写。算不清喝了多少咖啡,回家的次数也屈指可数。
+
+记得有一次凌晨4点,Review完明天要上线的代码,我却不知道该做什么好,就这么静静地坐到天亮,动都不想动。窗外,是一成不变的灯红酒绿,屋内,却是一片漆黑。我看着屏幕上的那个自己,陌生、迷茫……
+
+### 3.
+
+昨夜有个陌生的QQ号申请加我为好友,聊了半天才发现是当年的高一同学。高一时彼此就不怎么来往,高二分班时便断了联系,聊起毕业后的工作学习生活,竟然有些羡慕他。能够按照自己的兴趣研习化学、心理学,并已经硕博连读。而那个明明最喜欢化学的我,却在填写志愿的最后,毅然划去了第一行的基础化学,成为现在的码农。
+
+后悔么?不后悔,只是还有些羡慕,羡慕同窗这种随性自主的选择。但无论与否,既然是当初自己选择的路,跪着也得走下去。我不是王小波,无法说出:“我是今古之人。我是阿基米德,我是米开朗基罗。我和眼前的一切都没有关系。”这么任性的话语,很多时候必须服从现实。人生很多时候充满着矛盾,不断获得,却又不断摆脱。有时以为下一刻波澜壮阔,却也就平平淡淡过了大半。有时以为平凡得不值一提,可一转角说不定又会遇上一个高中的伙伴,告诉你当初的你是他的榜样。
+
+时间在走,年龄也在长。懂得的东西多了,看透的事情多了,快乐也就自然而然地越来越少了。我不得不承认,相比以前,时间真的改变了我很多很多。
+
+以前的我,疯过、傻过、执着过、也坚持过。可到了最后,我还是我,最初的那个我。我承认我不好,但全世界也就只有一个我,独一无二的我!友情也好,爱情也罢。我若离去了,便后会无期。
+
+现在的我,一切只求顺其自然。可你别说我不在意,就算我在意了又能如何呢?只因懂得了,自然就看开了。有些事,我们真别看清。看清了,反而心痛。更何况有些人,我们真别看懂。看懂了,反而伤情。
+
+走过迷茫的8月,圆满地工作一周年。爱情也好,生活也罢,说出来的最后都是柴米油盐,写下的都是朴素的日常,平淡却也细密绵长。我抬头回想着过去的点滴,低下头看到张怡微写着〔1〕 :有时我也是自己的陌生人,同栖于亲爱的人生。
+
+前方依旧是一团迷雾,也还好,在这漫漫的人生路上,有自己这么一个陌生人厮守相伴。
+
+>〔1〕出自张怡微的《我自己的陌生人》
+
+![](https://cat.yufan.me/cats/2015090603.jpg)
diff --git a/source/_posts/2015-09-21.md b/source/_posts/2015-09-21.md
new file mode 100644
index 0000000..320a6e9
--- /dev/null
+++ b/source/_posts/2015-09-21.md
@@ -0,0 +1,90 @@
+---
+title: OSX 10.11无法使用EasyConnect问题的排查与解决
+tags:
+ - 学习
+ - VPN
+ - OSX
+categories: 学习
+permalink: osx-easyconnect-problem
+featureImage: https://cat.yufan.me/cats/2015092101.jpg
+id: 142
+updated: '2015-10-21 15:17:48'
+date: 2015-09-21 04:05:43
+---
+
+## 前言
+
+在苹果6月的开发者大会的洗脑下,小雨荣幸成为一名OSX10.11小白鼠。当时柏涛君信誓旦旦跟我说,如丝般顺滑流畅,我还真TM信了。随后便遇到了各种问题,什么JDK6无法安装,IDEA各种大姨妈,Fantastical无法使用。然而,最坑的问题是,我无法使用公司VPN,无法使用公司VPN,无法使用公司VPN。**因为很重要,所以要说三遍。**
+
+才开始我以为和以前一样,是因为系统升级,需要重新安装,于是我重新下载安装客户端,没用。后面便有了各种折腾大法,什么浏览器安全等级大法,插件安全策略法,上网寻找最新的安装包更新法,无解……
+
+
+
+本着基本平常都在公司加班,回家也有舍友的电脑的想法,我暂时放弃了治疗。勘弁して!~~本想着因为用的是开发版,到了正式版应该能解决,然而,上周更新的GM版本(等价于正式版)让我彻底放弃,VPN君,就是连不上啊。QAQ
+
+但是中秋和国庆,我好死不死地准备请假三天连休那么个十几天,しまった!我突然想起来,到时候回了家后家里可就只有我一台电脑,到时候出了什么事,那还得了!于是,我又一次踏上了解决VPN问题的不归路……
+
+## 排查
+
+首先分析系统日志,一下子便看到如下内容:
+
+```java
+15/9/21 上午3:04:36.990 com.apple.WebKit.Plugin.64[13691]: Error loading /Library/Internet Plug-Ins/EasyConnectPlugin.plugin/Contents/MacOS/EasyConnectPlugin: dlopen(/Library/Internet Plug-Ins/EasyConnectPlugin.plugin/Contents/MacOS/EasyConnectPlugin, 262): Library not loaded: @loader_path/libCMS.dylib
+ Referenced from: /Library/Internet Plug-Ins/EasyConnectPlugin.plugin/Contents/MacOS/EasyConnectPlugin
+ Reason: image not found
+```
+
+基本上都是出现此报错,然后VPN连接失败。
+
+于是谷歌 `libCMS.dylib` 到底是个什么东东,为何会找不到。但完全无解,所有搜索 `libCMS.dylib` 的内容都指向一个 `liblcms.dylib` 的库。
+
+这到底是个什么牛逼哄哄的库?谷歌都找不到!抱着怀疑的心态,本地搜索此文件一发,Lucky!~还真给我找到了^O^
+
+在 `/Applications/EasyConnect.app/Contents/Resources/Libs` 下发现此文件。那么问题好办了,只要把库文件放在正确的位置让程序启动时能找到就行了。
+
+于是使用命令行工具 `otool` 分析程序,`otool` 需要 `xcode-select --install` 来安装,结果如下:
+
+```java
+otool -L /Applications/EasyConnect.app/Contents/MacOS/EasyConnect
+/Applications/EasyConnect.app/Contents/MacOS/EasyConnect:
+ /usr/local/lib/libTevent.dylib (compatibility version 1.0.0, current version 1.0.0)
+ @loader_path/libCMS.dylib (compatibility version 1.0.0, current version 1.0.0)
+ /usr/local/lib/libecbase.dylib (compatibility version 7.0.0, current version 7.0.0)
+ /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration (compatibility version 1.0.0, current version 453.19.0)
+ /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 19.0.0)
+ /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 945.16.0)
+ /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
+ /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 56.0.0)
+ /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)
+ /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 57.0.0)
+ /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 744.18.0)
+ /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1187.37.0)
+```
+
+可以看到 libCMS.dylib 的依赖路径是 @loader_path ,Google此变量的意思,得到如下解释:
+
+>**@loader_path**
+
+>这个变量表示每一个被加载的 binary (包括可执行程序, dylib, framework 等) 所在的目录。在一个进程中,对于每一个模块,`@loader_path` 会解析成不用的路径。而 `@executable_path` 总是被解析为同一个路径(可执行程序所在目录)。比如一个会被多个程序调用的 plugin,位于 `/path/Myfilter.plugin/Contents/MacOS/Myfilter`,依赖 `/path/Myfilter.plugin/Contents/dylib/libfoo.dylib`。
+
+>那么 `libfoo.dylib` 的 `INSTALL_PATH` 可以设置为 `@loader_path/../dylib`,这样设置的话,不论 `Myfilter.plugin` 目录放到什么位置,`libfoo.dylib` 都能正确的被加载。
+
+因为 `@loader_path` 的依赖路径由程序编译时指定,我们无法修改,但是我们可以将依赖拷贝至能调用到的地方。
+
+将 `libCMS.dylib` 拷贝至 `/Library/Internet Plug-Ins/EasyConnectPlugin.plugin/Contents/MacOS/EasyConnectPlugin` 和 `/Applications/EasyConnect.app/Contents/MacOS/EasyConnect` 下面。
+
+然后我满怀期待登录VPN,Lucky,问题解决。
+
+## 总结
+
+其实VPN登陆不上的问题只是一个小问题,一开始其实就应该有必要去查询系统日志,只有通过日志分析,才能知道原因。
+
+其次,后面浏览 Cocoa 开发社区才知道,这种依赖调用的问题源于苹果修改了安全策略,阻止了原来的依赖调用,这才导致 EasyConnectPlugin 无法调用相关依赖。所以,遇到问题,还是要多思考,才能最终解决问题呀。
+
+## 后记
+
+ほんと最近10時過ぎには眠くなるんだけど成長期か!!!?!?!?!
+
+身長あと200000cmは欲しい, (#)‘ω‘(#)
+
+最新的VPN插件出来了,此文作废,2333
diff --git a/source/_posts/2015-10-26.md b/source/_posts/2015-10-26.md
new file mode 100644
index 0000000..413d782
--- /dev/null
+++ b/source/_posts/2015-10-26.md
@@ -0,0 +1,108 @@
+---
+title: Nexus升级小记
+tags:
+ - 学习
+ - Nexus
+ - Maven
+categories: 学习
+permalink: upgrade-nexus-from-old-install
+featureImage: https://cat.yufan.me/cats/2015102601.jpg
+id: 143
+updated: '2016-01-11 00:31:01'
+date: 2015-10-26 05:03:07
+---
+
+## 一、前言:
+
+公司的Maven私服Nexus版本为1.9.2,因为版本过老,前端页面在OSX10.11的Safari 9已经完全没法显示。查看官网文档,得出是extjs的BUG,解决方式只有升级Nexus版本。
+
+但是Nexus 1.9.2版为2011年版本,之后的Nexus变化极大,比如,已经不再支持JDK6运行,运行容器换成了Jetty。通过参考对比最新版和之前版本的配置,踩过无数雷区,成功升级Nexus版本,故在此记录。
+
+
+
+## 二、准备工作:
+
+首先,我们需要下载最新的JDK7,和最新的Nexus版本,写下此文时最新版是2.11.4-01。然而,因为Nexus版本过老,我们还需要一个中间版本,此处我们选择Nexus 2.7.0。
+
+Nexus 的所有版本可以在此处 http://www.sonatype.org/nexus/archived/ 下载,按照版本跨度,选一个中间版和一个最新版。对于中间版本选取,可以参考此文 https://support.sonatype.com/entries/21701998-nexus-upgrade-notes
+
+我们可以看到,所有的 1.x 的版本,都可以直接升级到2.7.x 版本。这是因为,最新的Nexus中,配置文件有了极大的改变,所以会在升级后的第一运行时,升级配置文件。2.7.x版本是最后一个支持1.x版本配置文件升级的版本。
+
+## 三、安装:
+
+1、解压 nexus-2.7.0-bundle.tar.gz,我们得到两个文件,一个 nexus-2.7.0-06,一个sonatype-work。将 nexus-2.7.0-06 移动至我们的安装路径。比如此处,我们放在`/usr/local/nexus`,旧的安装路径为`/usr/local/tomcat`。
+
+```bash
+wget https://sonatype-download.global.ssl.fastly.net/nexus/oss/nexus-2.7.0-bundle.tar.gz
+tar xvzf nexus-2.7.0-bundle.tar.gz
+rm -rf sonatype-work
+mv nexus-2.7.0-06 /usr/local/nexus
+```
+
+2、修改配置文件,首先,我们备份默认配置文件。然后将原有tomcat下的配置文件拷贝过来,进行修改替换。
+
+```bash
+cd /usr/local/nexus/conf
+mv nexus.properties nexus.properties.bak
+cp /usr/local/tomcat/webapps/nexus/WEB-INF/plexus.properties nexus.properties
+```
+
+3、修改新的配置文件,修改方式如下:
+
+>`application-port=8080`
+`application-host=0.0.0.0`
+runtime=${basedir}/runtime
+runtime=${bundleBasedir}/nexus/WEB-INF
+apps=${runtime}/apps
+`nexus-work=${user.home}/sonatype-work/nexus`
+nexus-app=${runtime}/apps/nexus
+webapp=${runtime}/apps/nexus/webapp
+nexus-webapp=${bundleBasedir}/nexus
+webapp-context-path=/nexus
+nexus-webapp-context-path=/nexus
+security-xml-file=${nexus-work}/conf/security.xml
+application-conf=${nexus-work}/conf
+runtime-tmp=${runtime}/tmp
+jetty.xml=${basedir}/conf/jetty.xml
+
+上面红色部分为需要基于原有的配置修改的内容。黑色部分为原有的配置,保持不变。蓝色部分为新增的配置。画删除线的为原有的旧配置,现在不需要。
+
+4、修改启动脚本,设定启动用户、安装路径、程序PID路径
+
+```bash
+cd /usr/local/nexus/bin
+sed -i "s/NEXUS_HOME=\"..\"/NEXUS_HOME=\"\/usr\/local\/nexus\"/g" nexus
+sed -i "s/#RUN_AS_USER=/RUN_AS_USER=ci/g" nexus
+sed -i "s/#PIDDIR=\".\"/PIDDIR=\"\/home\/ci\/sonatype-work\/nexus\"/g" nexus
+```
+
+此处设置了Nexus的默认安装路径和启动用户,Nexus官方不建议使用root帐号启动Nexus,否则会有安全问题并显示警告,所以我们此处制定用户为 ci。
+
+5、创建 ci 用户,此处为旧的安装升级,已经存在,所以无需创建,只需分配权限。
+
+```bash
+chown -R ci:ci /home/ci/sonatype-work
+chown -R ci:ci /usr/local/nexus
+```
+
+6、安装JDK7,修改JAVA_HOME变量,指向新的JDK
+
+```bash
+wget http://xxx.xxx.xxx/xxx/jdk-7u80-linux-x64.gz
+tar xvzf jdk-7u80-linux-x64.gz
+mv jdk1.7.0_80 /opt (路径自拟)
+touch /home/ci/.bash_profile
+echo "export JAVA_HOME=/opt/jdk1.7.0_80" >> /home/ci/.bash_profile
+```
+
+7、使用 ci 用户登录服务器,关闭旧的 Nexus 进程,运行新的 Nexus
+
+```bash
+cd /usr/local/nexus/bin
+./nexus start
+./nexus console
+```
+
+启动出现问题时,运行console的那个命令查看原因,因为涉及到配置文件升级,需要一会。我们可以去泡杯茶,回来的时候,Nexus已经升级完毕。
+
+8、对于最新版的 Nexus,重复如上步骤,**由于2.x之后的版本配置文件完全一致,我们可以直接拿2.7的配置文件覆盖最新版,毫无问题。**
diff --git a/source/_posts/2015-12-08.md b/source/_posts/2015-12-08.md
new file mode 100644
index 0000000..260dbf3
--- /dev/null
+++ b/source/_posts/2015-12-08.md
@@ -0,0 +1,325 @@
+---
+title: Rest API 的那些事儿
+tags:
+ - Restful
+ - API
+categories: 学习
+permalink: rest-api-desgin
+featureImage: https://cat.yufan.me/cats/2015120801.gif
+id: 144
+updated: '2016-05-09 02:10:49'
+date: 2015-12-08 03:13:21
+---
+
+# 一、前言
+
+在软件行业快速发展的今天,传统的软件授权已经不能足以满足一个IT类的公司的发展。虽然在大部分公司里,它还是现金池的直接源头。但是在可遇见的未来,受摩尔根理论的失效、物联网的发展等影响,应用的架构会越来越趋于简单化,架构越来越倾向于分布式水平扩展,对外的服务提供也会越来越SaaS化。在这种大背景下,很多公司都开始提供所谓的开放平台。
+
+查阅各个大公司的开放平台,我们不难发现,都是Rest API,都是HTTP请求,响应报文都是大同小异的XML或者是JSON等众多雷同的特点。这是为什么呢?让我们唠唠API平台的那些事。
+
+
+
+# 二、定义
+
+[查看历史][4],我们惊讶地发现,其实Rest的概念早在2000年就被人提出。用一句话描述它,就是**用固定的URI和可变的参数访问某个服务,来完成一系列业务请求。**
+
+1. 每一个URI代表一种资源;
+2. 客户端和服务器之间,传递这种资源的某种表现层;
+3. 客户端通过几个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。
+
+## 2.1 Rest API 格式
+
+Rest API,无论它的名字多么高大上,它本质还是一个HTTP请求,POST也好,GET也罢,都是不同的数据提交方式。所以,能够决定一个Rest API的也就:URI、参数、请求方式、请求头等。
+
+我们一般用`URI`来定义希望对外暴露的服务。结构基本类似 `schema://yourCompanyDomain/rest/{version}/{application}/{someService}`。`schema`可以是`http`,也可以是`https`,`version`指的是你这个API的版本,`application`一般会指向底层的某个子系统,`someService`就是这个子系统对外提供的服务。当然,如果按照业务为边界划分,也可将业务维度相同但隶属于底层不同的系统的服务定义为一个`application`。
+
+对于这种Rest请求,常见的响应结果就是XML或者是JSON形式,往往结果中会包含请求状态,和时间戳,业务系统响应结果。
+
+具体的格式约定,可以看底部的参考文献。
+
+### 2.1.1 API的版本概念
+
+在 `URI` 的格式定义中,我们包含了version这个字段,这在早期,其实被认为是不优雅的方式。阮一峰有[一篇文章][4]就专门抨击这种设计,后面他又自己打脸说还是拼接version的好。_(不知道是不是因为Github的设计缘故)_
+
+`API`设计时常会考虑版本这个概念,无论是在URI还是在请求参数里面,至少有一个地方得指明含版本,为什么呢?
+
+这很简单,就和系统迭代一样,API也是快速迭代开发的。也许初期,你的老大脑袋一热,我们要上API,于是你们就加班加点做,设定了一版请求协议。当时你们想,写完就能赚钱,必然带来一堆问题,比如说,代码难以维护,功能单一。后面这个`API`的第二版,你们要基于它去做一些新的变更,比如请求参数多了,返回内容多了,必然就有了第二版。但是又不能影响现有的业务。这个`API`基本的`URI`没变,但是会同时存在两个版本,老用户继续请求旧版,没问题,你无需动旧版?有需求的新用户,你要请求新版才能提供服务。这样通过版本来区分了不同的服务,便于以后的升级和维护。_(就像BAE那货可以毫无压力地废弃掉2.0的API)_
+
+**所以一开始设计API时,就要定义好版本。其次,版本化可以骗钱。**我们可以满怀恶意地猜测,1.0为了抢用户,免费。2.0老牛逼了,你用的爽了,想更爽,付费。233333333
+
+## 2.2 架构特点
+
+API平台的架构,其实和底层公司的业务系统架构有着密切的关系,基于一个好的系统架构写一个Rest API平台基本是水到渠成的。我们先从业务系统的架构变迁说起,再来分析上面的API平台。
+
+### 2.2.1 业务系统架构变迁
+
+![拆分前架构][7]
+
+基本的软件公司的业务系统,一开始都是`单机,单节点,单库`。慢慢随着业务量的增加。这个系统越来越复杂,机器性能越来越不能满足需求。于是,第一种可能,领导说,换机器。上一台牛逼机器。但是机器性能有限,越牛逼的机器价格越贵,有时候都能买3~5台现有配置机器。于是就有了方案二,三个臭皮匠赛过一个诸葛亮。`单应用,多机器,多节点`。
+
+但是慢慢过了几年。你发现,这代码写的越来越屎,越来越复杂。基本上新来的开发要熟悉好几个月的业务。就代码因为快速上线。一堆坑,无法改。于是,大家现在都在做的事情,就是拆分。也就是现在常说的`SOA`。拆分,也有拆的好的,拆的不好的。不好的,就是一个大的恶心系统,变成了一堆恶心的小系统,互相调用,成一团乱码。小系统看似很好。但是某个不起眼的小系统。一挂,那么全部的系统都瘫了。这个时候这个万年不维护的小系统还找不到负责人,他么早就滚了。这就是拆分的技术欠债,你无法避免。
+
+![服务化平台][9]
+
+那么,就谈到拆分的架构设计。其实这块分两个架构,`技术架构和业务架构`。技术架构,就是要分清`技术系统和业务系统`。技术系统也可能是一个业务系统,但它一定是一个通用的服务组件。它提供的服务无任何定制需求,就是纯简单服务。比如,发短信发邮件发微信的通知系统,它就是通知。你业务有何特殊需求,就在上面自己实现一个XXX通知系统,那么业务系统的拆分,才是最关键的。就是要**`划清边界`**。
+
+>这个边界问题很可怕,什么你该做,什么你不该做。每个系统的职责都要明确。不要你也实现一个他也实现一个,然后相互调。**这种可怕性就是在两个服务都瘫痪的时候,完全都无法启用**。最后你的系统架构变成了一个通用技术组件系统,完成各个基础服务,每个产品线,业务端,基于你的技术系统包装出业务定制化服务系统,然后最上层就是业务子系统。业务子系统组合在一起,就是一个大的业务系统,也叫服务化平台。
+
+**这个时候,你需要做开放平台。暴露一套Restful API,就是水到渠成了。**
+
+PS,实际的架构远比这个复杂,截图选自《大型网站系统与Java中间件实践》。
+
+### 2.2.2 基于不同系统架构的 API 平台
+
+**1、演变**
+
+![API平台架构演变][10]
+
+初期的API平台往往是上图左侧那种,某个庞大的业务系统希望暴露一套API,于是大家就在这个系统上做,直接设计一套协议。但是,这样子带来的缺点十分明显,第一,它与业务联系太重,理想的API平台是通用的,不是只给你设计一个。第二,它不好扩展,每次变更都得和业务系统一同上线,糟糕的情况下代码还会影响原有正常的业务。第三,性能问题,理论上会降低原有应用的性能。
+
+这种情况下,如果应用部署了多台机器,多个节点,我们就可以独立出来。也就是右边所示的API Gateway,它做的事情本质上就是反向代理,将外部的请求校验完合法性之后反代至内部实际想要对外暴露服务的服务集群上。
+
+所以,这种场景下,API Gateway也就如名称所说,就是一个入口。实际的Rest API的东西还是建立在各个业务子系统上,只是只需要提供最简单的服务,无需考虑授权等东西。用户管理,API注册发布,调用统计等,均由API Gateway实现处理。对于想要快速上线的开发人员而言,实在是一个不错的福音。
+
+![SOA化的API架构][11]
+
+然而,当系统应用拆分到了SOA化之后,API的架构由有了新的变革,我们有了注册中心的概念。因为SOA化,所以每个业务子系统其实都有了对外的统一接口,有了ESB(注册中心)。实际的内部系统间请求也有了较好的路由、熔断等策略。
+
+在这种大背景下,API平台对外暴露的Rest API无需底层的业务专门开发了。直接使用现有的内部接口,选择性暴露即可。问题点就在于,如何根据定义的Rest API请求,实际模拟内部的RPC协议请求。
+
+某种程度上,这时候的API平台,已经不仅仅是HTTP Rest请求了。我们完全可以实现相同RPC协议的透传,比如你就是一个Hessian接口想对外暴露,我只需包上一层认证,直接注册于API Gateway,外部Hessian请求直接透传至内部子系统。
+
+在这个基础上的 Rest API 平台,才是灵活的,可扩展的,易于维护的。然而有得必有失,Mock请求必然会有性能上的损耗,但是这个架构的公司,已经不在乎钱了,上10台虚机,不够加呗。
+
+**2、特点**
+
+1. C/S结构
+2. 无状态(API平台无需存储业务状态,只做认证和转发)
+3. 有缓存,API会对指定URI的请求转发做缓存,保证并发性,业务系统也对同样的请求针对性缓存。
+4. 结构分层,每层间无法直接访问。
+
+API平台的背后,就是庞大的各个业务子系统。每个API,就相当于一个业务子系统。API平台要做的事,就非常清晰和简单。就是业务子系统注册发布API,对外部请求校验计费,模拟请求内部业务子系统,对子系统结果包装序列化为`JSON`返回。
+
+## 2.3 交互流程
+
+![简单交互图][12]
+
+上面是一个简单的交互,简单显示了外部系统和内部系统通过Rest API的交互过程:开发者(企业)注册,申请APP_KEY,开通API。按照开发接入,请求签名。转发至后端调用返回结果,API平台计费(预付费或者后收费),统计调用情况。
+
+外部通信本质上还是`HTTP`,那么必然存在了授权问题,生产的API平台是直接暴露于公网的,如果认证授权策略出现纰漏,影响是可怕的。
+
+比如,这个API是群发短信,你要是没有好的授权体系,允许人随意推送。某个人想搞你,调用发布反共信息,你整个公司都会跨。`HTTP`协议本质上没有这一块的内容,所以我们必然要在这上面考虑安全策略的内容。
+
+### 2.3.1 如何保证Rest API的安全性
+
+如果单纯考虑加解密,或者签名方式来保证请求合法,其实是远远不够的。事实上,一个安全的API平台往往需要多方面一起考虑,保证请求安全合法。
+
+**1、是不是实际客户端的请求?**
+
+1. 设计专门的私有请求头:定义独有的Request headers,标明有此请求头的请求合法。
+2. 请求包含请求时间:定义时间,防止中间拦截篡改,只对指定超时范围内(如10秒)的请求予以响应。
+3. 请求URI是否合法:此URI是否在API平台注册?防止伪造URI攻击
+4. 请求是否包含不允许的参数定义:请求此版本的这个URI是否允许某些字段,防止注入工具。
+5. 部分竞争资源是否包含调用时版本(Etag):部分竞争资源,使用If-Match头提供。如用户资金账户查询API,可以返回此时的账户版本,修改扣款时附加版本号(类似乐观锁设计)。
+
+**2、API平台是否允许你调用(访问控制)?**
+
+访问控制,主要是授权调用部分。API都对外暴露,但是某些公共API可以直接请求,某些,需要授权请求。本质的目的,都是为了验证发起用户合法,且对用户能标识统计计费。
+
+以HMac Auth为例,我们简单设计一个签名算法。开发者注册时获取App Key、App Secret,然后申请部分API的访问权限,发起请求时:
+
+1. 所有请求参数按第一个字符升序排序(先字母后数字),如第一个相同,则看第二个,依次顺延。
+2. 按请求参数名及参数值相互连接组成一个字符串。param1=value1¶m2=value2...(其中包含App Key参数)
+3. 将应用密钥分别添加到以上请求参数串的头部和尾部:secret + 请求参数字符串 + secret。
+4. 对该字符串进行 SHA1 运算,得到一个二进制数组。
+5. 将该二进制数组转换为十六进制的字符串,该字符串为此次请求的签名。
+6. 该签名值使用sign系统级参数一起和其它请求参数一起发送给API平台。
+
+服务端先验证`是不是实际客户端的请求`,然后按照App Key查找对应App Secret,执行签名算法,比较签名是否一致。签名一致后查看此App Key对应的用户是否有访问此API的权限,有则放行。
+
+执行成功后包装返回指定格式的结果,进行统计计费。
+
+# 三、需求与实现
+
+## 3.1 需求
+
+### 3.1.1 系统需求
+
+1. 支持rest类API接口动态发布及运营,包括但不限于:
+ * 安全认证
+ * 会话管理
+ * 流量统计及限流
+ * 计费收费
+ * 熔断
+2. 支持现有子系统RPC协议的API动态发布及运营,外部请求透传。
+3. 支持json、xml响应报文,可以请求时选取所需报文格式。
+4. 支持动态直接将后端SOA服务暴露为API。
+5. 支持动态将普通Web接口暴露为API。
+6. 支持动态将MQ服务暴露为API。
+7. 支持多个服务组合编排后暴露为API。
+
+### 3.1.2 业务需求
+
+**1、API管理**
+
+所有API可后台查询管理,包括动态发布、参数映射配置、后端服务接口配置、API禁用、启用,多版本、分组、分级别等。
+
+**2、应用管理**
+
+后台管理开放平台接入的应用(第三方应用),包括查询、禁用、启用、审核。
+
+**3、API鉴权&授权**
+
+1. 应用申请审核通过后生成公钥,开放平台需提供支持分布式系统的密钥管理
+2. 服务可设置为两个安全等级:需授权访问和无需授权访问(后者即任意客户端都可以发起调用),默认所有API都需授权访问。
+3. 非正常状态(禁用、停用、黑名单等)的应用直接抛异常不允许访问——**熔断机制**
+ * 调用次数、调用频率、并发数可运行时控制,避免某请求量过大影响其他应用的调用。
+ * 可对某个应用某个API设置强制熔断,所有请求无视阀值直接抛出异常。
+4. 易用性
+ * 与SOA集成,SOA服务一键发布到API平台。
+ * 支持后台动态发布API,而不是新上一个API就需上线一次。
+
+**4、计费统计**
+
+1. API的调用统计,每笔请求时间,响应时间,响应状态。
+2. API的计费计算,按照请求量和请求资源计费,实现多种计费模型。(预付费,后收费。按量,按时间周期。)
+
+**5、开发者平台**
+
+1. API开发者平台,开发者注册、访问、申请API授权、计费统计、调用统计。
+2. API文档系统,详细的API文档展示,SDK下载,用户登录后还可专门生成不同编程语言请求,在线模拟请求结果等。
+
+### 3.1.2 角色定义
+
+**1、外部用户**
+
+
+
+
+用户
+做什么
+使用目的
+
+
+
+
+API平台接入方
+接入API平台
+使用XXXX提供的开放平台服务
+
+
+
+
+**2、各个业务产品线**
+
+
+
+
+用户
+做什么
+使用目的
+
+
+
+
+各个业务产品线
+作为外部应用接入API平台
+使用XXXX提供的开放平台服务
+
+
+各个业务产品线
+提供服务
+提供后端服务,发布到API平台供外部应用接入
+
+
+公司后端应用
+提供服务
+提供后端服务,发布到API平台供外部应用接入
+
+
+API平台
+API治理
+运营,管理API、第三方应用等
+
+
+
+
+## 3.2 请求模型
+
+API 的所有服务请求域名是相同的,区别在于Request Path等。请求参数分为系统级参数和业务级参数两部分,系统级参数是所有 API 都拥有的参数,而业务级参数由具体服务 API 定义。
+
+### 3.2.1 统一服务 URL
+
+建立API Gateway接受所有请求,按照Request Path,Request Method,Request Head分发所有的请求。
+
+**1、 通用统一URL**
+
+**格式**:`schema:///DispatcherServlet?method=XXService.xxMethod?xxxObj.xxxParam=xxxValue。`
+
+**说明**:所有请求直接走`DispatcherServlet`分发,所有内容均定义于URL参数中。`method`为后端某个子系统的某个方法。`xxxObj.xxxParam`为方法参数实体的某个属性的值定义。
+
+**示例**:
+`http://api.xxxxx.com/router?method=SMSService.sendSMS&user.phoneNumber=18888888888&sign=ds234324sdsad&date=20151229231232`
+
+**2、Rest类型URL**
+
+**格式**:`schema:///rest/{version}/{service}/{method}/{params}`
+
+**说明**:请求按照Gateway定义的Rest地址匹配,动态映射至具体系统具体方法,模拟调用。请求中包含`version`字段。
+
+**示例**:
+`http://api.xxxx.com/rest/v1/XXService/xxMethod/{xxParam}`
+`http://api.xxxx.com/rest/v1/XXService/xxMethod?xxxParam=xxxValue`
+
+### 3.2.2 参数设计
+
+**1、系统级参数**
+
+系统级参数是由 API 平台定义的一组参数,每个服务都拥有这些参数,用以传送框架级的参数信息。如我们前面提到的 method 就是一个系统级参数,使用该参数指定服务的名称。
+
+**2、业务级参数**
+
+业务级参数,顾名思义是由业务逻辑需要自行定义的,每个服务 API 都可以定义若干个自己的业务级参数。API Getaway 根据参数名和请求属性名相等的契约,将业务级参数具体的方法请求对象中。
+
+## 3.3 常见框架
+
+1. Kong:[https://github.com/Mashape/kong](https://github.com/Mashape/kong)
+2. Zuul:[https://github.com/Netflix/zuul](https://github.com/Netflix/zuul)
+3. ROP:[https://github.com/itstamen/rop](https://github.com/itstamen/rop)
+4. Resty: [https://github.com/Dreampie/Resty](https://github.com/Dreampie/Resty)
+# 四、优劣
+
+## 4.1 好处
+
+1. **跨平台**,管你是`Java`,还是`PHP`,还是`Node.js`还是`Go`,你丫都得支持`HTTP`请求。我`API`平台只需要提供这个语言的`SDK`,保证能按照消息协议调用就好。
+
+2. **将复杂的内部业务系统抽象为通用调用请求**。包装了复杂的业务逻辑,对外提供统一的,好管理的接口。并可以定制化设计,计费,授权一类的容易管理。
+
+## 4.2 坏处
+
+1. **协议描述能力弱化**,`Restful`的`URI`无法完全对请求参数做强格式校验。最后的方法参数绑定,模拟内部请求时往往容易出问题,尤其是以Java等强格式语言的系统。不能像`WebService`一样清晰描述请求报文。
+
+2. 同样的道理,响应结果为了是`JSON`、`XML`。这当中,编码,正反序列化,等操作,往往就会有性能瓶颈。而且,Java在这块资源消耗极大。以Github的`ROP`这个框架为例,当年测试时,它在并发请求过高的时候就会有一个内存泄漏问题。
+
+----
+
+# 附:参考资料
+
+1. [REST Is Not About APIs, Part 1][1]
+2. [REST Is Not About APIs, Part 2][2]
+3. [RESTful API 设计指南][3]
+4. [理解RESTful架构][4]
+5. [撰写合格的REST API][5]
+6. [Netflix 官网][6]
+
+[1]: http://nirmata.com/2013/10/rest-apis-part-1/
+[2]: http://nirmata.com/2013/11/rest-apis-part-2/
+[3]: http://www.ruanyifeng.com/blog/2014/05/restful_api.html
+[4]: http://www.ruanyifeng.com/blog/2011/09/restful.html
+[5]: http://www.codeceo.com/article/rest-api.html
+[6]: http://netflix.github.io/
+[7]: https://cat.yufan.me/cats/20150120801.jpg
+[9]: https://cat.yufan.me/cats/20150120803.jpg
+[10]: https://cat.yufan.me/cats/20150120804.png
+[11]: https://cat.yufan.me/cats/20150120805.png
+[12]: https://cat.yufan.me/cats/20150120806.jpg
diff --git a/source/_posts/2015-12-23.md b/source/_posts/2015-12-23.md
new file mode 100644
index 0000000..f2bdc2d
--- /dev/null
+++ b/source/_posts/2015-12-23.md
@@ -0,0 +1,53 @@
+---
+title: 冬至的水饺
+tags:
+ - 饮食
+categories: 文章
+permalink: dumplings-in-winter-solstice
+featureImage: https://cat.yufan.me/cats/2015122301.jpg
+id: 145
+updated: '2016-02-04 14:55:29'
+date: 2015-12-23 21:24:10
+---
+
+昨天冬至,大家都吃水饺了么?
+
+事实上,当我昨晚下班兴匆匆地打电话给老家的爸妈时,他们是茫然的。
+
+>“什么,吃水饺?儿呀,咱这没这习俗呀?”
+>“(°ω°〃)なに,老妈,我见识少,你可别骗我。”
+
+上面当然是玩笑话,事实上,作为一个通吃南北的人,我可以拍着胸脯告诉你,冬至吃什么在全国各地的习俗还真的是不大一样。
+
+
+
+高中毕业前,我在厦门住了整整10年。厦门这边的饮食习惯外地人可能第一时间都无法接受,因为地域问题,偏清淡,偏海鲜,腥甜。尤其是我这个土生土长的安徽人,窝在山沟沟里12年。去了厦门之后,硬生生地从原来130斤的小胖子瘦成110斤的小小胖子,你就知道我是多么不习惯厦门的饮食口味了。海蛎煎、蛤蜊汤,这些从外观看就像是“黑暗料理”的食物给我带来的阴影,至今都挥之不去。——(泥垢了,pia)
+
+安徽菜,或者说,徽菜、皖菜,最大的特色就是重油,喜爆炒。在“某鱼”的 1:1:1 还没有安利到人人皆知的时候,我吃的有两种油——猪油、菜籽油。菜籽油是生油,直接从油菜籽压榨出来的,所以杂质很多,不能立刻食用。需要将下锅油烧热,配合菜炒一下才能吃。因为菜籽油的沸点比较高,所以小时候,老爸老妈三班倒,自己一个人炒菜的时候,蔬菜都是丢锅后立刻盖上锅盖,怕溅了一身。而猪油,则是取猪身上的脂肪和肥肉,切成块,然后热锅慢慢炼制,剩下的油渣子还可做菜、包水饺、煮汤。冬天的时候,老妈去上班,我和老爸又懒得买菜做饭,就会拿大米锅巴,掰碎,然后加上猪油和盐,开水泡着吃。
+
+菜籽油和猪油的味道,都是极其香的,在九几年那个物质还不是很丰富的年代,它们陪伴了我整个童年。后面生活条件好了,大家都整细粮精食,这种油也就慢慢吃的少了。今年冬至在北京吃煎饺,第一口我就觉得是菜籽油煎的,向老板一打听,果然猜中了。那个时候店里的收音机放着歌曲《九月九的酒》,茫然间真有一种回到家的错乱感。
+
+正如开头说的那样,冬至在我们那个破地,是没什么特殊习俗的,能吃饱饭就不错了。后面到了厦门,冬至那天陪母上逛沃尔玛,就觉得奇怪,整个超市都在买汤圆。一打听,今天冬至,按照当地的习俗要吃汤圆。也就从那天起,我家也加入了冬至汤圆大军。
+
+高中毕业后到济南读大学,才发现:嘿,原来不是每个地方冬天都吃汤圆,竟然还有的地方要吃水饺。山东菜,或者说鲁菜,我对它可是又爱又恨。一来鲁菜的口味喜干煸和炖炒,口味不是那么清淡。二来,地三鲜一类的菜品挺对我胃口的。但是,我要说但是,为毛所有的鲁菜都喜欢先拿大葱和油混合炒一下,美其名曰——炝锅。要知道,我生平最不喜欢两种蔬菜,大蒜,大葱。
+
+后来待久了,也慢慢习惯了大葱和大蒜的味道。冬天和基友出去溜达喝羊汤时,也会习惯性地说:老板,给我来碗羊杂汤,两个饼。对了,再给我来头蒜。 (・`ω´・)
+
+而其实,要说这南北的饮食的差异,除了冬至的饮食习惯,还有很多很多。比如主食,我在安徽时喜食米饭。到了厦门,发现这里人喜欢吃地瓜粉,尤其是我那前前前女朋友,竟然满眼星星地对我说:“地瓜粉好好吃哦”(请配上地瓜腔想象)。到了济南,发现这里的人可不得了,喜欢就着生大葱大蒜吃馒头包子。有一次,我也想体验一下,就按照厦门的饭量买了三个馒头。(厦门这馒头是细面的,酵母比较多,比较松软,实际没多少量。)第一口下去我就惊呆了,这馒头真实在,板实板实的,硬把我噎得连喝两大口水。后面连吃带塞也就吃了一个半,妾身吃不下去啊。
+
+上周在《大象公会》上看到这么一篇文章,说兰州拉面的起源和各地兰州拉面的口味不同,兰州拉面在各地都做了改变,使得它更加贴近当地人的口味。这点我感受过,自然十分赞同。而其实,福建名小吃《沙县小吃》也是一样。
+
+才到北京的时候,蛮不喜欢这边的餐饮风格的,比如说早上的地沟油鸡蛋灌饼怎么那么贵,为什么每顿都会有腌制的咸菜,为何路边的烧烤总是那么多人?后面找到了公司旁边的沙县小吃,我是相当激动啊,可算是找到老乡了。进门,瞅着前台如花似的收银美眉说:“我要一碗扁食,加一个猪心汤。”
+
+>“什么,扁食,扁食是什么呀,我们这里不卖。猪心汤这里没多少人喝,我们早不做了。”
+>“(;´༎ຶД༎ຶ )扁食就是扁食啊,福建那不都叫扁食,北方叫做馄饨,重庆那叫抄手么?”
+>“哦,你说馄饨是吧,说馄饨不就好了,我还以为你说啥呢。来,二位里面请。”
+>“……”
+
+后面要了一个老鸭汤饭,菜上来的时候,我又崩溃了,为何饭里面出现了厦门沙县小吃没有的北京特色——榨菜。
+
+看书上说:原先物质年代不发达,人员不流动的时候,大家自然是有啥吃啥,南北的饮食差异自然比较大。这几年改革开发,经济好了,我们也慢慢感觉到南北差异越来越小,大家是有钱喜欢啥吃啥。
+
+事实上正如俗话说的那样,民以食为天,吃这个话题在中国永远是一个热点话题。无论是见面时的“你吃了么?”,还是如《舌尖上的中国》那样津津乐道的私家菜品。
+
+无论如何,最后还是问一句。“冬至那天你吃水饺/馄饨了么?”
diff --git a/source/_posts/2016-02-24.md b/source/_posts/2016-02-24.md
new file mode 100644
index 0000000..b7cb7ca
--- /dev/null
+++ b/source/_posts/2016-02-24.md
@@ -0,0 +1,235 @@
+---
+title: 基于 Kong 的 OAuth2.0 的设计
+tags:
+ - Kong
+ - oAuth2
+categories: 学习
+permalink: oauth-on-kong
+featureImage: https://cat.yufan.me/cats/2016022401.png
+id: 148
+updated: '2016-02-24 17:21:14'
+date: 2016-02-24 16:45:56
+---
+
+## 1. Kong OAuth 2.0 认证流程
+
+### 1.1 相关角色
+
+1. **第三方应用:**实际想要访问API的应用,需要在Kong上注册,定义自己的访问口令和回调地址。
+2. **用户:**实际的第三方应用的使用者,和API访问权限的授权主体。
+3. **认证服务:**基于Kong搭建的认证服务,主要完成用户信息的部分,也就是登录和授权提示页面。它作为第三方应用和Kong之间的中间桥梁,因为Kong不直接接管这些信息。
+4. **Kong:**Api Gateway,完整API的认证和应用注册等,将请求向后端转发。
+5. **API 提供者:**实际的API提供者,与Kong交互,外部无法直接访问。
+
+
+
+![](https://cat.yufan.me/cats/2016022403.png)
+
+Kong的认证流程如上图所示:
+
+### 1.2 认证流程
+
+1. Client为第三方应用,当它想访问某些需要用户授权的用户信息。
+2. Client将用户跳转至 Kong 上的认证服务来认证应用。
+3. 如果认证服务发现用户未登录,那么将会跳转至登录界面。
+4. 在登录界面完成登录,将会跳转至认证服务的授权页面,显示第三方应用想要获取的用户信息,用户可以确定是否允许第三方应用访问。
+5. 用户确认,认证服务提交信息至Kong上完成注册认证流程,Kong返回认证口令和跳转地址给认证服务。
+6. 认证服务将用户跳转至 第三方应用 在 Kong 上定义的回调地址,传递认证口令。
+7. 第三方应用从回调地址读取认证口令,请求Kong,获取实际的信息访问口令。
+8. 应用通过每次请求传递附加上访问口令来调用API。
+
+## 2. Kong OAuth 2.0 问题,开发需求
+
+一个完整的 OAuth 2.0 认证需要好几步,然而,Kong只完成最后几步,实际使用时需要开发上层的服务。
+
+用户登录模块用户系统已经实现,登录方式为使用SDK传入Session ID获取用户登录信息,并不是很优雅。但是结合已有的登录服务,只需写一个登录界面,授权确认界面和与相关的交互服务。
+
+## 3. 基于 Kong 和 用户系统的 OAuth 2.0 设计与实现
+
+### 3.1 认证流程(流程图)
+
+![](https://cat.yufan.me/cats/2016022404.jpg)
+
+## 4. 交互信息,协议,格式
+
+### 4.1. 协议定义
+
+(1)、新增 API
+
+```bash
+# 请求
+$ curl -X POST http://127.0.0.1:8001/apis --data "name=httpbin" \
+--data "upstream_url=https://httpbin.org" \
+--data "request_host=yufan.me" \
+--data "preserve_host=true"
+```
+```json
+// 响应
+{
+ "upstream_url": "https://httpbin.org",
+ "id": "b00e2c79-a87a-4688-b16f-7b2034171b13",
+ "created_at": 1456299654000,
+ "preserve_host": true,
+ "name": "httpbin",
+ "request_host": "yufan.me"
+}
+```
+
+(2)、API 配置 oAuth 认证
+
+```bash
+$ curl -X POST http://127.0.0.1:8001/apis/b00e2c79-a87a-4688-b16f-7b2034171b13/plugins \
+--data "name=oauth2" \
+--data "config.scopes=email,phone,address" \
+--data "config.mandatory_scope=true"
+```
+```json
+{
+ "api_id": "b00e2c79-a87a-4688-b16f-7b2034171b13",
+ "id": "a21450ac-4aa6-459e-9678-21275fc15d6f",
+ "created_at": 1456299868000,
+ "enabled": true,
+ "name": "oauth2",
+ "config": {
+ "mandatory_scope": true,
+ "token_expiration": 7200,
+ "enable_implicit_grant": false,
+ "scopes": [
+ "email",
+ "phone",
+ "address"
+ ],
+ "hide_credentials": false,
+ "enable_password_grant": false,
+ "accept_http_if_already_terminated": false,
+ "provision_key": "a36c23485d414ffb9eba7a85de0e7335",
+ "enable_client_credentials": false,
+ "enable_authorization_code": true
+ }
+}
+```
+
+(3)、添加开发者帐号
+
+```bash
+$ curl -X POST http://127.0.0.1:8001/consumers \
+--data "username=testuser123" \
+--data "custom_id=12345"
+```
+```json
+{
+ "custom_id": "12345",
+ "username": "testuser123",
+ "created_at": 1456299997000,
+ "id": "364381e9-acf7-424d-a87f-f4be80871ee2"
+}
+```
+
+(4)、添加应用
+
+```bash
+curl -X POST http://127.0.0.1:8001/consumers/364381e9-acf7-424d-a87f-f4be80871ee2/oauth2 \
+--data "name=My%20Test%20Application" \
+--data "redirect_uri=https://httpbin.org/get"
+```
+```json
+{
+ "consumer_id": "364381e9-acf7-424d-a87f-f4be80871ee2",
+ "client_id": "54b968c73da64b328ed92b05548179b6",
+ "id": "ce2906cb-3442-44c1-888e-848bafd0a442",
+ "name": "My Test Application",
+ "created_at": 1456300207000,
+ "redirect_uri": "https://httpbin.org/get",
+ "client_secret": "3b4537ac7c94492f81b251110e2d0f33"
+}
+```
+
+(5)、模拟用户授权,获取回调码
+
+```bash
+$ curl -X POST https://127.0.0.1:8443/oauth2/authorize \
+-H "Host: yufan.me" \
+--data "client_id=54b968c73da64b328ed92b05548179b6" \
+--data "response_type=code" \
+--data "scope=email" \
+--data "authenticated_userid=yufan" \
+--data "provision_key=a36c23485d414ffb9eba7a85de0e7335" \
+--insecure
+```
+```json
+{"redirect_uri":"https:\/\/httpbin.org\/get?code=f2987a670ab246a38b2a3e6d58713019"}
+```
+
+(6)、获取两码,完成初次认证
+
+```bash
+$ curl -X POST https://127.0.0.1:8443/oauth2/token \
+-H "Host: yufan.me" \
+--data "client_id=54b968c73da64b328ed92b05548179b6" \
+--data "client_secret=3b4537ac7c94492f81b251110e2d0f33" \
+--data "grant_type=authorization_code" \
+--data "code=f2987a670ab246a38b2a3e6d58713019" \
+--insecure
+```
+```json
+{
+ "refresh_token": "a42472728fd74075ac8db82a0cb50b44",
+ "token_type": "bearer",
+ "access_token": "c28b23745aa84c14a001a32476be3d6c",
+ "expires_in": 7200
+}
+```
+
+(7)、API 请求
+
+```bash
+$ curl -X POST https://127.0.0.1:8443/post \
+-H "Host: yufan.me" \
+--data "access_token=c28b23745aa84c14a001a32476be3d6c" \
+--insecure
+```
+```json
+{
+ "args": {},
+ "data": "",
+ "files": {},
+ "form": {
+ "access_token": "c28b23745aa84c14a001a32476be3d6c"
+ },
+ "headers": {
+ "Accept": "*/*",
+ "Content-Length": "45",
+ "Content-Type": "application/x-www-form-urlencoded",
+ "Host": "yufan.me",
+ "User-Agent": "curl/7.43.0",
+ "X-Authenticated-Scope": "email",
+ "X-Authenticated-Userid": "yufan",
+ "X-Consumer-Custom-Id": "12345",
+ "X-Consumer-Id": "364381e9-acf7-424d-a87f-f4be80871ee2",
+ "X-Consumer-Username": "testuser123"
+ },
+ "json": null,
+ "origin": "127.0.0.1, 61.148.202.186",
+ "url": "https://yufan.me/post"
+}
+```
+
+(8)、API Token 刷新
+
+```bash
+$ curl -X POST https://127.0.0.1:8443/oauth2/token \
+-H "Host: yufan.me" \
+--data "refresh_token=a42472728fd74075ac8db82a0cb50b44" \
+--data "client_id=54b968c73da64b328ed92b05548179b6" \
+--data "client_secret=3b4537ac7c94492f81b251110e2d0f33" \
+--data "grant_type=refresh_token" \
+--insecure
+```
+```json
+{
+ "refresh_token": "de64c9df218b4a0eb2a24af83cd93a56",
+ "token_type": "bearer",
+ "access_token": "98ff79467dd6450f95061da94bd81d02",
+ "expires_in": 7200
+}
+```
diff --git a/source/_posts/2016-03-24.md b/source/_posts/2016-03-24.md
new file mode 100644
index 0000000..9dc480a
--- /dev/null
+++ b/source/_posts/2016-03-24.md
@@ -0,0 +1,40 @@
+---
+title: 工作心得总结
+permalink: work-summary
+featureImage: https://cat.yufan.me/cats/2016032401.jpg
+id: 149
+updated: '2016-03-24 13:25:49'
+date: 2016-03-24 13:05:33
+tags: 思考
+categories: 学习
+---
+
+## 注意总结与反馈
+
+去任何一家公司都会遇到很多新鲜的知识,很多新鲜的内容,所以日常的学习过程中需要及时总结笔记,作为备忘。每个人都不可能纯凭记忆记住很多东西,所以日常的学习中,需要及时总结,也方便未来的梳理。
+
+所谓的反馈,也就是展示自我,你要清楚的让上级知道你现在在做什么,会什么,有什么能力。也就是说,主动展示自我,主动秀出自己。通过这个,一来证明自己的能力,不是在那边混日子。二来也是一种资源的获取,上级懂的永远比你多,通过这种方式,可以要求到更多的学习资源。
+
+
+
+## 不断学习进步
+
+对于一个开发人员而言,你需要不断学习,因为这个世界上有着太多的牛人和技术。很多时候,你都会有瓶颈(自己的舒适区)。的确,现有的知识和能力足矣满足你的工作需求和未来的开发。
+
+所以,要时刻惊醒,多去主动学习。
+
+## 问题处理与解决
+
+解决一个问题时,首先把上下文弄清楚。
+
+对于负责解决问题的人要做到:
+
+1. 明确问题提出的人是谁
+2. 确定问题描述清楚没有
+3. 及时将解决进度告诉大家
+
+如果问题解决了,要通过更新`Jira`或者在相关讨论组讨论的方式,告诉大家问题原因、解决办法、遗留问题。如果问题解决不了,或者提问者说OK了,一定要追问发生了什么,或者是如何解决的。
+
+整个问题的生命周期都要与大家分享出来,不能不明不白的就关闭一个issue。
+
+提问者需要及时追踪问题进度。同时,我认为:无论是任何原因,只要一个issue被长时间搁置,那么这个问题优先级一定不高。
diff --git a/source/_posts/2016-04-04.md b/source/_posts/2016-04-04.md
new file mode 100644
index 0000000..4f8a383
--- /dev/null
+++ b/source/_posts/2016-04-04.md
@@ -0,0 +1,61 @@
+---
+title: 不要总是走在准备的路上
+tags:
+ - 随笔
+categories: 学习
+permalink: just-try
+featureImage: https://cat.yufan.me/cats/2016040401.jpg
+id: 150
+updated: '2016-06-12 00:07:12'
+date: 2016-04-04 20:49:47
+---
+
+上周和一个即将毕业的大学生聊天,他很厉害,学了很多,抱怨到很多人学了很多编程语言,但最后都只是会写一个“Hello World”〔1〕 的程度。我说,因为他们大多是一直在准备学习,往往刚开始学的时候,便放弃了。
+
+——题记
+
+我叫雨帆,所有的汉字中我觉得我“雨”、“帆”这两个字写的最好看,不是因为我字写的好,而是因为我专门针对这两个字专门练习。
+
+
+
+同样的话语可以套在很多东西上,许多东西,比如人的技能,擅长的东西,并不是一蹴而就的,需要频繁的练习。没有谁能一开始就能成长为参天大树,即使是所谓的天才,在你看不见的背后,也有着常人难以想象的汗水与努力。
+
+所以一直一来,我很赞同一句话:[信念永远不能达到目的地](https://yufan.me/intimate-in-mind/)。每个人都有自己的梦想,但是如果只是梦想,却不去付诸行动,那么它也仅仅是梦。
+
+记得三年前有一个叫做[谢钦](https://yufan.me/meeting/)的网友邮件问了我很多关于独立博客的话题,当时的感觉就是在茫茫大海中看到一束光的感觉。就是一直以来,你一直以为只有自己一个人在做什么事情,周围没有一个人懂你的时候,突然有一个人理解你的感觉。
+
+然而过了三年,他的博客还是一句话:“未命名博客更新中”……
+
+当然,我不是刻意黑这位朋友,更多的是想表达一种遗憾。因为写一个独立博客的准备工作真的很麻烦很麻烦,如果像我一样在国内的话还要备案一类的繁琐程序。如果不是喜欢写博客,真的一开始就会想放弃。那么为何都准备好了,最后关键的写文章一步却放弃了呢?
+
+---
+
+写代码的时候老大总教育我们一句话,不要过度设计。什么叫做过度设计呢?就是和业务无关的东西写了一堆一堆,但是关键的业务的代码却写的很少。
+
+说这个前,不得不提知乎上之前一个很流行的问题:[为什么有些大公司技术弱爆了?](https://www.zhihu.com/question/32039226/answer/76059969)当时看到的时候就想起前老大的一句话,“满足业务需求的代码就是好代码”。
+
+对于很多还未毕业的计算机专业学生可能会觉得不可思议,尤其是看到很多外表看似光鲜的项目,底层竟然是如此垃圾的代码。甚至某些方式(如数据库的设计),完全是教科书般的错误案例。而实际上,它们只做好了一件事,满足业务需求,然而,因为做好了这件事情,它至少可以给公司带来收益。
+
+当然,我并不是为了给烂代码洗地,对于互联网公司而言,快速的上线和迭代开发才是保证收入的根本。如果是使用智能机的你,尤其是Android手机的话,可能最大的感受就是那些APP,基本上一周恨不得更新个十几次。为何不能从一开始就是设计好呢?
+
+从产品的角度而言,需求是不断变化的。比如输入法,一开始,人们的需求就是能打字的时候少一些选择,于是有了词库,包含常见词。后面有了按照词频不同的动态候选词序,再后来,由于互联网聊天的流行也许有了所谓的Emoji、字符画等特定需求等……但是一开始就想做好这些,是不可能的。比如你潜心花上几个月甚至几年打磨一个输入法,往往还没开发出来,要么是市场被人抢走了,要么是你自己耗死了。
+
+话题扯的有点偏,换句话说,很多东西,不可能一开始就做的很好,如果不去做,而是一直在想怎么写好,怎么做才好,那是永远做不出来东西的。你只有上手做了,比如,先写个demo,然后完成一个主流程,再一点点考虑里面的问题细节。如果一开始就想做好,要么是你很累,想要放弃;要么是团队不会给你太多时间。
+
+---
+
+记得上周参加Openresty Meetup的时候和一个架构师聊天,聊架构。在他看来,架构的存在是在公司的业务数量级达到一定的规模之后的必然产物。然而,对于一个初创公司而言,往往却是可有可无的产物。因为你的业务数量级没有到这个级别,套用**安迪比尔定理**,这个时候的业务量,无需多好的架构设计,关键是满足主要业务需求就好。按照业内常见的标准,只有业务量上升到百万这个级别,你才需要考虑架构,考虑设计。
+
+当然这也许有点偏激,在此我保留意见,回到前面说写代码这事上。我觉得,这事应该是这么一个顺序:`能写出代码` => `能写出满足业务需求的代码` => `能够按照业务需求优化代码` => `能够考虑未来可能的需求变更预留扩展的接口` => `能将唯一可变行为剥离接口参数化` => `能在现有的语言发展层面上进行演进` => `能不再为设计模式而设计模式` => `开始理解熟记 Clean Code 的全部准则` => `拥抱 TDD,不断重构测试驱动`
+
+当然,换种说法也许就是:不要为了设计模式而设计模式,不要提前优化,不要过度封装,不要过于追求最新的技术。
+
+看一些牛逼的老程序员写代码就非常有意思,你会发现,他们写出来的代码,往往都十分小而简,恰当的地方使用一些让你眼前一亮的设计。当时我在写公司的开放平台,写的很累很累,花了半个多月,进展基本还是起步阶段。当时和带我的人聊天,他的一句话点醒了我:“理解需求,构建抽象实体,打通主流程”。如果我总是在想要用什么,要怎么写,也许我到今天什么都写不出来。
+
+很多人都有完美主义倾向,什么东西,一定要做好,做棒。为此付出大量时间做准备。等到开始做的时候,才发现,后面的人已经超过了自己……
+
+当然,做好一件事,离不开准备。但是,只准备,不去做,那么永远做不好。我的话说完了。
+
+---
+
+[1]、Hello World,基本上任何编程语言的教科书,一开始都是教大家如何写一个Hello World,久而久之成为一个梗。
diff --git a/source/_posts/2016-04-30.md b/source/_posts/2016-04-30.md
new file mode 100644
index 0000000..976f305
--- /dev/null
+++ b/source/_posts/2016-04-30.md
@@ -0,0 +1,43 @@
+---
+title: 忘记时间
+permalink: forget-past
+featureImage: https://cat.yufan.me/cats/2016043001.jpg
+id: 151
+updated: '2016-04-30 20:09:45'
+date: 2016-04-30 18:40:59
+tags: 回忆
+categories: 文章
+---
+
+最近一次登录快盘,忽然发现登录界面上出现了6月30日后关闭的字样。
+
+不知道你的家乡是否也有这样的店,天天喊着最后三天歇业,总是副破落不堪即将被扫地出门的模样。但总是三天又三天,打折又打包,撑了至少一年半载。我不知道快盘是否属于这一种,但如果是这一种,也许是好的。就像那个万年不更新的[饭否](http://fanfou.com),破落归破落,但还是存个念想的地方。就像儿时的秘密基地,越是蜘蛛网,越是灰尘漫天,越是秘密,越是勾人。
+
+
+
+我想,那些存在网盘上的数据终究会被我遗忘的吧,但并不要紧。
+
+反正我已有太多的无所谓,它们像磨豆汁一样粗砺地被放进时间里。我不知道什么时候快盘滚落到如此的下场,但现如今却有一种被摊平的感受,和别的说不出的味道交融在一起。
+
+对于过去,我不开放心扉,也不愿开动大脑,我只需要Hey Siri,wake me up at 8:30,明天自然会醒来。
+
+---
+
+每次登陆博客的时候,都不知道该写点什么好。也许是我太久没有写了,我好像无法展开,也无法收敛。无处与人去说,也无处想与人倾诉。于是我想告诉别人的只是最后的结果。比如:
+
+- 我吃过饭了
+- 我睡过觉了
+- 我爱过人了
+- 我受过伤了
+- 我绝过望了
+- 我说过话了
+
+这样说完的时候,我可以省去所有故事和梗概,本来我就是个不会说话的人,也不愿意抓着被人掏出来,所以这样就好。简单明了,你知道了想知道的八卦,我也不用再次回忆想不起来的过去。
+
+我相信未来看到这篇文章的人,都已长大,会买菜会做饭会炒股票不会轻易死去。时间是轻微的,浮浮地飘在城市角落,被眼泪打入地面,又随着别人的眼光重新着落。乘风飘去的灰尘让人艳羡,然而充满逼格的话语始终是在城里回荡,这些话语与这些灰尘一样,生而不自由却也忘记了初始的人设。
+
+忘记了也好!
+
+只是我不甘心,我仿佛能听到时间在我身上咔嚓咔嚓的作响,怎么能不感觉到后怕?
+
+希望随时随地都可以再见那些过去。
diff --git a/source/_posts/2016-05-05.md b/source/_posts/2016-05-05.md
new file mode 100644
index 0000000..64506eb
--- /dev/null
+++ b/source/_posts/2016-05-05.md
@@ -0,0 +1,193 @@
+---
+title: Webpack 介绍:第一部分
+tags:
+ - 学习
+ - 前端
+categories: 学习
+permalink: introduction-to-webpack-part-1
+featureImage: https://cat.yufan.me/cats/2016050603.png
+id: 152
+updated: '2016-05-06 02:15:56'
+date: 2016-05-05 22:38:28
+---
+
+Webpack 是近段时间非常流行的前端流程处理工具,用于实时执行构建任务和预处理你的文件。
+
+你也许会使用 [Grunt](http://gruntjs.com/) 或者 [Gulp](http://gulpjs.com/) 来做类似的事情。首先建立一个编译链,然后在上面定义从何处读取代码,将压缩处理好的 CSS 和 JavaScript 等静态资源输出到什么地方。
+
+这些工具都非常流行和好用,然而我却要向你安利另一种实现此类需求的方法,那就是使用 [Webpack](https://webpack.github.io/)。*新技能Get!*
+
+
+
+## 什么是 Webpack?
+
+![](https://cat.yufan.me/cats/2016050601.png)
+
+Webpack 常被人们定义为“模块打包工具”(module bundler),它读取 JavaScript 模块,分析它们之间的依赖关系,然后用尽可能高效的方式将它们组织在一起,最后生成一个独立的 JS 文件。似乎看起来并没有什么牛逼的技术,像 [RequireJS](http://requirejs.org/) 在多少年前就能实现相似的功能了。
+
+当然,如果是这样子我就没必要安利你了,相比 RequireJS 之流它还是有自己的特色的。Webpack 能读取的不光是原生的 JavaScript 文件,模块加载器的设计使得它能支持更丰富的格式。
+
+例如,它能分析出你的 JavaScript 模块需要一个 CSS 文件,甚至能分析出这个 CSS 文件需要的图片资源。然后,处理过的资源文件只包含最精简的必须文件。不信?让我们现在来实战体验。
+
+## 安装
+
+首先必须要安装的是 [Node.js](https://nodejs.org/en/),在这里我们假定你已经正确安装并且配置完毕。那么安装 Webpack 所需要做的事,就只剩下输入下面的这条命令:
+
+```bash
+npm install webpack -g
+```
+
+这条命令将全局安装 Webpack,并能在系统的任何路径下执行 `webpack` 命令。下面我们新建一个文件夹,在里面新建一个基本的 HTML 文件,名为`index.html`,内容如下:
+
+```html
+
+
+
+
+ Webpack fun
+
+
+
+
+
+
+```
+
+需要注意的是,这里定义的`bundle.js`暂时还不存在,稍后将由 Webpack 帮我们创建。另外,那个空的 H2 标签稍后我们将会使用到。
+
+接下来,在上面文件夹里创建两个 JS 文件,分别叫做:`main.js`、`say-hello.js`。`main.js`你可以理解为 main 方法,也就是我们代码主要的执行入口。`say-hello.js`是一个简单的模块,它接收一个人名和 DOM 元素,然后在这个 DOM 元素上显示一条包含人名的欢迎信息。
+
+```javascript
+// say-hello.js
+
+module.exports = function (name, element) {
+ element.textContent = 'Hello ' + name + '!';
+};
+```
+
+定义完 `say-hello.js` 这个模块后,我们在 `main.js` 里引用它,引用方法十分简单,只需要下面这两行代码:
+
+```javascript
+// main.js
+var sayHello = require('./say-hello');
+
+sayHello('Guybrush', document.querySelector('h2'));
+```
+
+如果现在我们打开前面创建的那个 HTML 文件,你们发现页面上没有显示任何内容。因为我们既没有引用`main.js`,也没有将其处理成浏览器可执行的代码。接下来,我们使用 Webpack 读取`main.js`。如果能成功分析它的依赖,将会创建一个名为`bundle.js`的文件,并能在浏览器中执行。
+
+回到命令行里执行 Webpack,只需简单输入如下命令:
+
+```bash
+webpack main.js bundle.js
+```
+
+第一个参数定义了 Webpack 分析依赖的起始文件。首先,它查看起始文件里是否定义了相关的依赖。如果有,它将读入依赖的文件,看看这个文件是否也有其他的依赖。通过这种方式,递归读取完整个程式依赖的全部文件。一旦阅读完毕,它将整个依赖打包为一个文件,名为 `bundle.js`。
+
+在这个例子里,当你按下回车后,你会看到类似下面的输出:
+
+```bash
+Hash: 3d7d7339a68244b03c68
+Version: webpack 1.12.12
+Time: 55ms
+ Asset Size Chunks Chunk Names
+bundle.js 1.65 kB 0 [emitted] main
+ [0] ./main.js 90 bytes {0} [built]
+ [1] ./say-hello.js 94 bytes {0} [built]
+```
+
+现在,打开`index.html`,浏览器将会显示`Hello Guybrush!`
+
+## 配置
+
+如果每次运行 Webpack 都要指定输入和输出文件的话就太让人讨厌了。当然,开发者早就替我们想好了。其实和 `Gulp`、`Grunt`类似,Webpack 需要在我们的项目根目录下创建一个名为`webpack.config.js`的文件,就可以简化大量重复的命令参数。
+
+在本例中,内容如下:
+
+```javascript
+module.exports = {
+ entry: './main.js',
+ output: {
+ filename: 'bundle.js'
+ }
+};
+```
+
+现在,我们只需要输入`webpack`这个命令,就能实现和之前一样的操作。
+
+## 开发服务器
+
+首先提个问题:每次你做了一些改动,如果都要手动去执行`webpack`命令来看结果的话,是不是特傻逼?要知道,`Gulp`在很早之前就支持定义`watch`这种监视文件修改的任务了。所以,Webpack也不例外,甚至它还更进一步,提供了一个基于Node.js Express框架的开发服务器。
+
+```bash
+npm install webpack-dev-server -g
+```
+
+首先运行上面的命令安装开发服务器,然后运行命令`webpack-dev-server`。这个命令将会启动一个简单的 Web 服务器,以命令执行的路径为静态资源根目录。下面我们打开浏览器,输入[http://localhost:8080/webpack-dev-server/](http://localhost:8080/webpack-dev-server/)。如果一切正常,你将看到类似下面的内容:
+
+![](https://cat.yufan.me/cats/2016050602.jpg)
+
+现在,我们不仅有了一个超赞的轻量级 Web 服务器,我们还有了一个孜孜不倦地监听代码变更的观察者。如果 Webpack 发现我们修改了一个文件,它会自动运行 `webpack` 命令打包我们的代码并刷新页面。
+
+假想一下,我们可以双屏写代码,一个屏幕放浏览器,一个屏幕开编辑器。浏览器实时刷新结果,无需我们做任何配置和操作,是不是很酷?
+
+现在你可以自己感受一下:修改`main.js`里面传给`sayHello`方法的姓名参数,然后保存文件,看看浏览器里面的实时变化。
+
+## 加载器(Loaders)
+
+对于 Webpack 而言,最重要的特性就是[加载器](https://webpack.github.io/docs/loaders.html)。加载器和`Gulp` `Grunt`上的“任务”(tasks)类似。基本上都是读取文件,然后通过某种方式处理文件,最后打包为我们所需的代码。
+
+本文中,我们想在代码中用一些[ES2015](http://www.ecma-international.org/ecma-262/6.0/)的语法。因为 ES2015 是当前最新的 JavaScript 版本,所以并没有被所有的浏览器支持。可是淫家就想写最新的代码装逼怎么办?那只好先写,写完后将 ES2016 版本的代码转换为老的 ES5 代码。
+
+为了实现这个需求,我们需要使用当下最流行的 [Babel Loader](https://github.com/babel/babel-loader) 来进行转换。根据官网的教程,我们使用下面的命令进行安装:
+
+```bash
+npm install babel-loader babel-core babel-preset-es2015 --save-dev
+```
+
+这条命令不仅安装了 Babel 加载器,还包含了它支持 ES2015 时所需要的依赖。
+
+安装完加载器,我们需要告诉 Webpack 使用什么加载器,参考下面的实例更新 `webpack.config.js` 文件:
+
+```javascript
+module.exports = {
+ entry: './main.js',
+ output: {
+ filename: 'bundle.js'
+ },
+ module: {
+ loaders: [
+ {
+ test: /\.js$/,
+ exclude: /node_modules/,
+ loader: 'babel',
+ query: {
+ presets: ['es2015']
+ }
+ }
+ ],
+ }
+};
+```
+
+在这个配置示例里,我们需要注意几个地方。首先,`test: /\.js$/`这行是一个正则表达式,表示文件名满足此正则表达式的文件将会被此加载器处理。这里,我们的定义是全部的JS文件。类似的,`exclude: /node_modules/`则是告诉 Webpack 忽略`node_modules`文件夹。`loader`和`query`我觉得十分好理解,就是使用Babel loader加载器处理ES2015语法的文件。
+
+重启开发服务器,在命令行里按下`ctrl+c`,重新输入`webpack-dev-server`。现在我们来测试一下 ES6 的代码是否能被正确翻译呢?不如试试看将`sayHello`变量定义为一个常量。
+
+```javascript
+const sayHello = require('./say-hello')
+```
+
+保存后,Webpack应该自动重新编译我们的代码并刷新浏览器,你会发现代码正常执行,什么都没有变。我们用编辑器打开`bundle.js`文件,你会发现没有`const`这个单词。
+
+Webpack就是这么叼!
+
+## 第二部分预告
+
+在这篇教程的第二部分,我们将学习使用 Webpack 加载 CSS 和 图片文件,同时让你的网站为部署做好准备。
+
+## 相关链接
+
+1. [Introduction to Webpack: Part 1](http://code.tutsplus.com/tutorials/introduction-to-webpack-part-1--cms-25791)
+2. [详解前端模块化工具-Webpack](https://segmentfault.com/a/1190000003970448)
+3. [Webpack Made Simple: Building ES6 & LESS with autorefresh](http://jamesknelson.com/webpack-made-simple-build-es6-less-with-autorefresh-in-26-lines/)
diff --git a/source/_posts/2016-05-23.md b/source/_posts/2016-05-23.md
new file mode 100644
index 0000000..b910bbd
--- /dev/null
+++ b/source/_posts/2016-05-23.md
@@ -0,0 +1,51 @@
+---
+title: 好羡慕,你还是学生
+permalink: primary-school-student
+featureImage: https://cat.yufan.me/cats/2016052301.jpg
+id: 154
+updated: '2016-05-23 23:23:15'
+date: 2016-05-23 21:06:58
+tags: 回忆
+categories: 学习
+---
+
+上周日在图灵读者群看见一个小学生在图灵社区写古典音乐的点点滴滴,不由得觉得现在的小学生真的好厉害。那个时候像他们那般大的我们,究竟在做什么呢?
+
+——题记
+
+前些日子刷 Facebook,看网友恶搞柯南。
+
+>太一:我上中学了。
+>小樱:我也上中学了。
+>
+>柯南:诶,好羡慕。
+
+如果是我,面对初中生的小樱,小学生的柯南,大概也会说:诶,好羡慕。
+
+
+
+不同的是,一直都在上小学的柯南桑羡慕小樱和太一终于可以上中学。我羡慕的是,他们都还是学生,我却要开始过成年人的生活了。虽然,曾经我和他们同级过,甚至比他们还要年轻……
+
+作为一个从头到尾看着小樱读了70集小学的 Otaku,我并不习惯叫它『魔卡少女樱』,在那个连网络是什么都不清楚的年代,仅有的视听娱乐就是电视。电视台预告决定了我们对它的称呼——百变小樱。
+
+百变小樱最吸引我的,除了那每一集都不一样的裙子(啊,我的少女心要融化了),爸爸那简直 BUG 般的厨艺,当然就是美貌的雪兔君。
+
+第一次见到雪兔时就被惊艳到,世上竟有如此好看的男子。那个时候还是小学六年级,仰望着国中的他,心里面只想着快点长大,快点变得和他一样帅气迷人。后来终于成为一名和雪兔一样的だんしこうこうせい,只是这段的时光过得很快。一不小心,我们就错开了,然后越来越远。
+
+在二次元的世界里,时间几乎是冻结的,就像说,柯南永远都是小学一年级,小智永远在成为神奇宝贝大师的路上。后来再次与他们相遇时,我们已经是大学生和中学生的差距了。这样的差距,只会随着时间的流逝,越来越大。
+
+然而置身时间之中,我们并不敏感,就像是黑客帝国里面的 Matrix。往往只有到了某个固定的节点才会惊醒,比如上周六我在楼下被4岁的小女孩叫叔叔(違う、そうじゃない)。又比如,昨天看到百变小樱的20周年新连载开催予定。再比如,这次的奥运会一定会让人回想起八年前的北京奥运会。
+
+这样的场景并不多见,所以更多时间,我们都沉浸在自己的年轻里。然而,我们终究还是藏不了自己的改变。越来越光亮的脑门,偶尔出现的白发,不再有弹性的肌肤,都在暗示着自己的衰老。
+
+不知何时,我越来越不愿记住自己的年龄。不像小时候,对于年龄的增长有一种几近狂热的向往。每过一年除夕,都会毫不含糊地在年龄上加上一岁,张开五指,然后骄傲地告诉大人『私は今年五歳』。现在的我,年龄早就不是一只手能数的清的,当然也不会做这么幼稚的事了。
+
+除了不再敏感也不再向往,自身也有一种逃避的心理在吧。虽然我知道,这只是一种掩耳盗铃,自己虽假装不知,但根本藏不住啊。
+
+容颜终将老去,无法定格在年轻的模样。光阴向左,生活向右,我们已经长大,有自己的家庭,新的人生……
+
+可是,我还是好羡慕,你还只是一个学生。
+
+>きっと 何かが 何かが どこかで 出会える日を待ってる
+>
+>Do! Do! Do! Dreaming ! Dreaming ! そして扉がひらくよ...
diff --git a/source/_posts/2016-07-01.md b/source/_posts/2016-07-01.md
new file mode 100644
index 0000000..f792e02
--- /dev/null
+++ b/source/_posts/2016-07-01.md
@@ -0,0 +1,20 @@
+---
+title: 如何阅读一本技术书
+tags:
+ - 学习
+permalink: how-to-read-a-technology-book
+featureImage: https://cat.yufan.me/cats/2016070101.jpg
+id: 155
+updated: '2016-07-01 22:22:16'
+date: 2016-07-01 22:06:05
+---
+
+读书技术书籍分为三步,第一步,扫读,不用弄懂,就是那么读过去,可以称为囫囵吞枣的状态,直到读完。(这么做的理由很简单,计算机类的知识不可能线性地排列,让读书的人从零到有地一步步学习,比如某些Java书籍上来就说面向对象。你读书的时会发现,很多前面不懂的东西,到了后面讲某个东西,就懂了。但是为何不先讲后面的东西呢?因为太难,你需要前面的某些基础知识。)
+
+
+
+第二步,就是精读,但也不是一个字一个字读,书那么厚,你没那么多时间来精读的。所以就要专门读代码,书中的代码永远是最好的老师,比如Java编程思想,你要是看懂代码了,就不用看旁边的文字了,我接触的大部分都是如此。所以读代码为主,阅读旁边文字为辅。代码阅读时不要一行行敲打,那是 useless 的。因为那样子的成果和强制自己理解一行行看的成果差不多,但是时间上更少。
+
+第三步,我姑且称为查漏补缺,看目录,那些你还不清楚是什么玩意,去看看那一页对应的内容。
+
+书看完后基本目标是要会用,但是使用出问题的时候,我更推荐看文档,因为书籍永远不是最新最全的,文档永远是相对权威的(因为最权威的是源码)。
diff --git a/source/_posts/2016-08-01.md b/source/_posts/2016-08-01.md
new file mode 100644
index 0000000..99061f8
--- /dev/null
+++ b/source/_posts/2016-08-01.md
@@ -0,0 +1,35 @@
+---
+title: 重看08奥运会开幕式有感
+tags:
+ - 文字
+categories: 文章
+permalink: my-fickleness-life
+featureImage: https://cat.yufan.me/cats/2016-08-01_2016080101.jpg
+id: 156
+updated: '2016-08-09 22:20:24'
+date: 2016-08-01 01:24:12
+---
+
+这些天被里约热内卢的奥运新闻刷屏。看了好几篇长篇累赘的报道,基本都集中在几点上:环境差,房间烂,场馆没建好,社会乱……微博上也是一堆不求奥运健儿拿金牌,只求平安回家云云的评论。更有意思的是周六CCTV5体育新闻在微博上分享了8年前的[北京奥运会剪辑](http://weibo.com/1750822455/E1gIp3STd),配上评论:『我们是认真的!』
+
+记得自己两个月前在博客里[写道](https://yufan.me/primary-school-student):『这次的奥运会一定会让人回想起八年前的北京奥运会。』诚然,08年奥运会对于大多数人而言是一个终身难忘的记忆。它的高标准,使得我在大学看伦敦奥运会开幕式的时候,是满怀不屑的。带着这样的心情,我在 U2B 上重温了08年北京奥运会的开幕式,却发现,并不如想象中那么美好。
+
+
+
+我所谓的不好,不是指奥运会开幕式本身不够精彩不够震撼。而是指,它和我记忆中的影像,有着太大的偏差。导播生硬的切换机位,很多匪夷所思的抠鼻、扇扇子的特写镜头,播音员在介绍入场运动员的混乱,演出中一些不该被看到的工作人员……甚至在对比了 NBC 的版本之后,我觉得,他们录制的版本,才是我心目中北京奥运会应该有的样子。
+
+那么,为什么当年的我,没有这种想法呢?
+
+同样的场景发生在去年阅兵式的直播,靠着前公司的某位大佬的帮助,其实我是看过彩排的。所以正式阅兵那天我就在家睡懒觉,没看。如果不是地铁循环滚动的阅兵画面,我都难以想象,导播切的镜头都是什么玩意,还我看彩排时候的感动!
+
+虽然某些政治必要性,需要给予国家领导人充足的镜头。但是混乱的切机视角,尤其是给只有6人的非洲朋友们的远景长焦(你这是故意衬托别人人少么?),总让人觉得这导演水平不够啊!虎嗅上有篇文章《吐槽自己我比你们更狠更专业,但我们可能是央视最后的导播人才》更是淋漓尽致地吐槽了种种导播的不足。
+
+这样的变化还有很多很多,比如今年『三观太正』的春晚,各种被大家誉为雷剧的青春偶像片。但和父母聊天时,才惊讶地发现,爸妈竟然并没有觉得这些难看,阅兵式的节目他们之前看了直播,在过年时听到我的吐槽,硬是拉着我看了一遍给他们当解说。春晚我爸晚上看了一遍还不够,第二天下午又拉着全家四世同堂看了一遍。
+
+其实父母没变,央视的导播水平也一直没变,春晚也没变,变的只有我们自己罢了。因为工作和专业的缘故,基本从10年起,我就没怎么看过电视了。每天的近三分之二的时间,是在电脑前度过的,所以,我的一切信息来源于互联网,不再是新闻联播说什么就是什么。
+
+就像说,8年前,我还不知道外面的世界,我还在啃砖头般的《邢其毅基础有机化学》,梦想搞一辈子科研,还会为快乐女声一类选秀节目的歌手的悲惨故事感动落泪。那时的我坚信,每个人都有着自己的梦想,自己也不例外,并朝着梦想的方向不断前进着。
+
+从时间点上,90后的我们踩在了国企改革的起点,经历过大锅饭经济,父母在市场化改革中纷纷下岗、早退。我们从无到有感受了互联网,IT领域的发展,被数字信息的洪流淹没。
+
+于是乎,不断增长的买房压力,越来越多的工作学习压力,理想和现实的一次次落差。开始变得焦虑,变得对这个社会充满批判。也许,我们这一代人是焦虑的。
diff --git a/source/_posts/2016-08-09.md b/source/_posts/2016-08-09.md
new file mode 100644
index 0000000..bedbf75
--- /dev/null
+++ b/source/_posts/2016-08-09.md
@@ -0,0 +1,37 @@
+---
+title: 盛夏的记忆
+tags:
+ - 文字
+categories: 文章
+permalink: summer-dream
+featureImage: https://cat.yufan.me/cats/2016-08-09-2016080903.png
+id: 157
+updated: '2016-08-10 08:28:28'
+date: 2016-08-09 21:41:34
+---
+
+恍然间已经在北京度过第三个夏季。
+
+明明阳光明媚,却突然下起了瓢泼大雨,这在北京的夏天算不得什么奇事,但也着实让我感到一些不高兴。毕竟作为一个男生,我又不可能像女生一样总是随身带把伞,也就免不得淋一身的雨。有时早上醒来看见窗外在下雨,反而让我满心欢喜,因为有理由磨磨蹭蹭,也有理由在办公室正大光明地穿上人字拖。我试图绕开积水, 却又不可避免地踩在了小区门口的水坑里,心里是挥之不去的烦躁:『暴雨如注,我想回家葛优瘫。』然后慢吞吞地回去换凉鞋。
+
+
+
+北京的夏天,有时候阳光闪闪发亮,整个世界都明亮起来;有时候骤然大雨,如世界末日,而大多时候只是潮湿而闷热。工作上日复一日地在deadline与deadline之间追赶,有时也让人身心疲惫。刷微博时看到洛之秋老师写,喜欢夏天的台风“给原本乏味的城市带来的那种微型末日之感”,但“这戏剧化的天空必将逝去,我们最终只能回到那个潮湿、闷热的梦里”。在很多个短暂却很沉的午睡中醒来,恍如隔世般地看着刚被我点亮的显示器之后,我觉得,“潮湿、闷热的梦”也是好的,如果有的话。
+
+大概是为了找寻那个“潮湿、闷热的梦”,7月底的我去了上海 ChinaJoy 散心。在去上海的飞机上,看了一小会漫画『元气囝仔』,就迷迷糊糊地睡着了。到了上海,总想起漫画里こといし在海岛上,咬着好看的冰淇淋,扎着俏皮小短辨的画面。于是在夜晚的南京街,看到冰淇淋小摊后,我迅速选了一根同样好看的绿色冰淇淋,上面嵌了一片薄薄的发苦的黄色柠檬。在模糊夜色和拥挤人群里,我还是努力地给绿色冰淇淋留了影,为绿色的夏日作证,为不知道算不算“潮湿、闷热的梦”留影。
+
+今天傍晚从回龙观东大街地铁站出来,没有吃晚饭,走回家的时候路过站门口的夜市摊,诱人的烧烤散发着孜然味的热气,有人围着吃粉丝生蚝加几对烤鸡翅和鸡腿,再喝几杯冰啤酒下肚,满满都是烟火气。刚好在听PodCast上很久没听的《味之道》,妙雅讲到越南西贡的凉水铺子,此时的越南热到冒烟,街上走几步路就能遇到一个歇脚的凉水铺子。老板挤一点青柠檬汁,加两勺糖(声音高八度),塞很多的冰块。人们捧着这杯做好的柠檬水坐在旁边的塑料板凳上,聊天或者什么也不做。我想,那杯柠檬汁就是他们几乎唯一的消暑利器。
+
+去不了越南旅行,也无法在这个荷尔蒙躁动的七夕找到自己的另一半,我只好坐在窗台上拿出素描本描绘傍晚的天空。自从三月搬了家,最让我喜欢的,便是新家大大的窗台,夏天坐在上面,冰凉、舒爽。看着一窗之隔的燥热,总有一种淡淡的不真实感。
+
+也因此总有些下午让人日后反复想起,那些下午虽不见得意义深重,但却不知为何难以忘怀。上周六,我吃完午饭,拉上窗帘,在昏暗的房间里午睡。醒来吃了个冰镇西瓜,清爽甜蜜。还有一个周日,打扫完卫生,我做在窗台拿钩针勾线。有那么一瞬间感到天地都是平和的,不用赶,也不用给任何人交代,那个瞬间大概是不忧将来,不思过去,也不想现在的。
+
+>“午后下起滂沱大雨。雷声隆隆,房间里阴暗。我在客房午睡,她来回走动,絮絮叨叨。搬动被子毯子,扫地,擦桌,整理做晚饭要用的菜蔬,用高压锅炖煮红豆,准备明天早上的豆沙糯米圆子。这类食物是冬季的点心,她知道我喜欢,所以夏天也煮。发出的琐碎声一如以往。她有时会忽略顾及他人的感受。一意孤行做乐意的事。
+>
+>但这些声音照例使我很快入睡,睡醒之后,近黄昏,雨已停。她切开西瓜,我们吃瓜,说些日常话。”
+
+读庆山的新书《月童度河》后,时常想起这段话里的场景,说不清是想起那个下午的大雨,睡梦中的细碎声,午睡到黄昏的酣畅,还是睡醒后的西瓜。
+
+今天中午,午睡前耳机里放着莫倪的《7月的南方》,歌里唱,阳光在七月的天空闪耀的发烫。我在空调房里眯起眼睛,透过窗帘的缝隙看到外面阳光热烈,庆幸夏天还长。决定卷起被子睡到黄昏,做一个长长的关于潮湿闷热的梦……
+
+![](https://cat.yufan.me/cats/2016-08-09-2016080901.jpg)
diff --git a/source/_posts/2016-08-15.md b/source/_posts/2016-08-15.md
new file mode 100644
index 0000000..aa3b2e5
--- /dev/null
+++ b/source/_posts/2016-08-15.md
@@ -0,0 +1,45 @@
+---
+title: 未来鬼父计划 - 萝莉养成
+tags:
+ - 鬼父
+categories: 文章
+permalink: future-plan-on-kids
+featureImage: https://cat.yufan.me/cats/2016-08-15-kids2.jpg
+id: 158
+updated: '2016-08-15 07:15:19'
+date: 2016-08-15 06:04:27
+---
+
+按照中国目前的计划生育策略,在不考虑交高额罚金的情况下,我能被允许养育的最高子女数量为两个。按照未来生活水平的提高和自我对于生活品质的追求,我不可能也没有精力抚养过多的孩子。所以,现阶段来看,两到三个小孩是不错的选择。但是,计划赶不上变化,也许未来我可能丁克,可能只要一个小孩。所以,这里只是待定稿。
+
+
+
+首先,我希望我的第一胎是女儿,这点比较关键,我个人十分喜欢女儿,喜欢程度远大于男孩。所以,如果可行,我可能在妊娠初期就去鉴定性别。(不开玩笑,这块相关知识作为动物生理学为竞赛自学完的我而言,并不是难题。B超影像图谱,我基本能看懂,关键在于找到合适的渠道进行检测。)
+
+那么按照第一胎的情况,分别有不同的考虑。
+
+### 如果第一胎是女儿
+
+我一向坚持男孩穷养,女孩富养的观点。但是说明的是,这里的穷和富并不是传统意义上的穷和富。
+
+穷养,更多的是,在生活上要求男孩更加自理,希望在很小的时候,就能养成能吃苦,能有自我想法的天性。也就是说,我希望他有自己的个性,我不会将我的任何意志压在他身上,要他做啥做啥。只要不犯错(违背法律,社会基本价值观,伤害他人),我不会苛责。但是相对应的,很多时候,并不会百依百顺,许多他渴求的东西,需要通过某些努力换取。(但我并不觉得是考试考多少)相对应的,我在学习上并无过高的要求,只要求能够完成基本的12年『义务教育』。因为12年的时光,足以打磨一个人的性格,12年的学习生活也会让他和同龄人有更多的话题,更多的知识沉淀。
+
+富养,和穷养最大的区别,就是在于物质给予上。我觉得按照当代社会价值观体系对于女性的定位,她们未来更多是当家母的角色,而非八九十年代港台剧里的全职太太。也就是说,在女权主义越来越普及的中国和目前男女比例失调的社会。女孩,很多时候都是属于管理小家庭的一方。一方面,在男性主要忙于赚钱的时候,她需要担负起主要的子女教育。另一方面,她需要考虑全家生活起居等琐事。按照最新的调查,男女双方都有各自事业的家庭更加和睦,所以作为一位优秀的贤内助,有时候也需要承担一部分家庭生计。
+
+这么一对比,在一开始就富养,尤其是较为富裕的零花钱给予。一是让女孩一开始养成资金的管理,二是能让她有更多的钱进行自我兴趣的释放。(省的被个穷小子三言两语就骗了一辈子的幸福,哼!)富养的另一好处,就是女孩子的各方面能力会更加多样,我不会要求自己的小孩会这会那,报各种艺术班。一,我没那么多钱。二,小孩不一定愿意学。三,我觉得能喜欢一件事并一直坚持下去才能真正做好。但是,只要是她喜欢的爱好,我会全力支持。我觉得,这种方式养成的萝莉,才是最吼得!
+
+### 如果第一胎是男孩
+
+第一胎一定要女儿,我压根就不会做男孩的考虑。
+
+### 二胎什么时候要
+
+按照我个人的生活规划,我的计划是28岁结婚,顺便还能去 Tokyo 看个奥运会,搞个蜜月啥的。所以,我要一胎的时候最小也应该是29岁。因为秋季适合女性怀孕,按照妊娠280天的大概计算,应该是在第二年夏季预产。所以二胎理论上,我希望在一胎上小学的时候要,那个时候我未来的老婆应该是在33~38岁间。一来,按照女性的生理周期,38岁之后的排卵就开始减少,卵巢的卵子的质量也明显不如年轻的时候,就女性自身的各方面生育质量也不如以前。
+
+伴随妊娠可能会有的高血压糖尿病,使得怀孕不见得是一个好的选择。尤其是过了38岁,就属于高龄产妇,有一定生产的危险,这个时候的医生会推荐剖腹产,我疼老婆,自然不愿意她这么挨一刀。二来,我个人认为,38岁,算一个男人的事业黄金期,所以这个时候的生活收入,足以支持两个小孩的负担。如果那个时候我事业不行,只要一个小孩是必然的选择。
+
+当然,如果生两个女孩,自然是最吼得。衣服什么的,不用买新的啦,妹妹直接穿姐姐的,还能继续 Cosplay 动漫 loli 什么的,想想我的鬼父之心蠢蠢欲动。
+
+未来谁说的准呢?13年的时候我在网易邮箱的笔记本里写了十样东西,是我未来想买的。在这周末伴随着最后一件电钢琴的购买,终于全部实现了。
+
+所以啊,人还是要做梦的,万一实现了呢?
diff --git a/source/_posts/2016-11-16.md b/source/_posts/2016-11-16.md
new file mode 100644
index 0000000..36c0cc1
--- /dev/null
+++ b/source/_posts/2016-11-16.md
@@ -0,0 +1,116 @@
+---
+title: A scala exercise a day 1
+tags:
+ - 学习
+categories: 学习
+permalink: a-scala-exercise-a-day-1
+featureImage: https://cat.yufan.me/cats/2016-11-16-scala-poster.png
+id: 159
+updated: '2016-11-16 18:44:18'
+date: 2016-11-16 11:18:06
+---
+
+1、编写一段代码,将 a 设置为一个 n 个随机整数的数组,要求随机数介于 [0, n) 之间。
+
+```scala
+def randomArray(n: Int) : Array[Int] = {
+ (for (i <- 0 until n) yield (math.random * n).toInt).toArray
+}
+```
+
+
+
+2、编写一个循环,将整数数组中相邻的元素置换。例如,Array(1, 2, 3, 4, 5) 经过置换之后变为 Array(2, 1, 4, 3, 5)。
+
+```scala
+def transferArray(array: Array[Int]) : Array[Int] = {
+ for (i <- array.indices if i % 2 == 1) {
+ val temp = array(i)
+ array(i) = array(i - 1)
+ array(i - 1) = temp
+ }
+ array
+}
+```
+
+3、重复前一个练习,不过这次生成一个新的值交换过的数组。用 for/yield。
+
+```scala
+def transferArray(array: Array[Int]) : Array[Int] = {
+ (for (i <- array.indices) yield {
+ i % 2 match {
+ case 1 => array(i - 1)
+ case 0 => if (i + 1 == array.length) array(i) else array(i + 1)
+ }
+ }).toArray
+}
+```
+
+4、给定一个整数数组,产出一个新的数组,包含元素组中的所有正值,以原有顺序排列,之后的元素是所有的零或负值,以原有顺序排列。
+
+```scala
+def sortArray(array: Array[Int]) : Array[Int] = {
+ val (left, right) = array.partition(_ > 0)
+ left ++ right
+}
+```
+
+5、如何计算 Array[Double]的平均值?
+
+```scala
+def arrayAverage(array: Array[Double]) : Double = {
+ array.sum / array.length
+}
+```
+
+6、如何重新组织 Array[Int] 的元素将它们以反序排列?对于 ArrayBuffer[Int] 你又会怎么做呢?
+
+```scala
+def reverseAverage(array: Array[Int]) : Array[Int] = {
+ for (i <- array.indices if i < array.length / 2) {
+ val temp = array(i)
+ array(i) = array(array.length - i - 1)
+ array(array.length - i - 1) = temp
+ }
+ array
+}
+```
+
+对于 ArrayBuffer 如下
+
+```scala
+def reverseAverage(array: ArrayBuffer[Int]) : ArrayBuffer[Int] = {
+ array.reverse
+}
+```
+
+7、编写一段代码,产出数组中的所有值,去掉重复项。
+
+```scala
+def distinctAverage(array: Array[Int]) : Array[Int] = {
+ array.distinct
+}
+```
+
+8、创建一个由 java.util.TimeZone.getAvailableIDs返回的时区集合,判断条件是它们在美洲。去掉"America/"前缀并排序。
+
+```scala
+val sortedAmericanZone = java.util.TimeZone.getAvailableIDs.filter(_.startsWith("America")).map(_.replaceFirst("America/", "")).sorted
+```
+
+9、引入 java.awt.datatransfer._ 并构建一个类型为 SystemFlavorMap 类型的对象: val flavors = SystemFlavorMap.getDefaultFlavorMap().asInstanceOf[SystemFlavorMap] 然后以 DataFlavor.imageFlavor 为参数调用 getNativesForFlavor 方法,以 Scala 缓冲保存返回值。
+
+首先导入包
+
+```scala
+import java.awt.datatransfer._
+import scala.collection.JavaConversions._
+import scala.collection.mutable.Buffer
+```
+
+然后编码
+
+```scala
+val flavors = SystemFlavorMap.getDefaultFlavorMap().asInstanceOf[SystemFlavorMap]
+val flavor: Buffer[String] = flavors.getNativesForFlavor(DataFlavor.imageFlavor)
+```
diff --git a/source/_posts/2016-12-11.md b/source/_posts/2016-12-11.md
new file mode 100644
index 0000000..b7acb82
--- /dev/null
+++ b/source/_posts/2016-12-11.md
@@ -0,0 +1,35 @@
+---
+title: 夢
+tags:
+ - 梦想
+categories: 文章
+permalink: yume
+featureImage: https://cat.yufan.me/cats/2016-12-11-28152830_p0.jpg
+id: 161
+updated: '2017-03-13 22:46:31'
+date: 2016-12-11 14:21:10
+---
+
+「あなたの夢は何ですか?」この質問はよく聞かれている。違うときに、同じ人は違う夢を追う。いくつになっても夢を持ち続けているとハッピーですよね。そんな夢に向かって何か努力をしている人って輝いていますよね。
+
+
+
+>“你的梦想是什么?”常常会被问到这样的问题。在不同的时期,同一个人有着不同的梦想。无论有几个梦想,不断追寻梦想的过程是快乐的。向着梦想努力的人是光荣的。
+
+私の夢は世界一周することです。いろんな人と出会って、違う景色を見て、人生の経験を豊かにしたいです。そして、おいしい料理を食べたいです。旅行のとき、違う生活を体験できるので、とても面白いと思います。
+
+>我的梦想是环游世界。想认识各色的人、观赏各异的景色、丰富人生经历。还有,也想品尝各地的美食喔。旅行的时候,可以体验不同的生活,我觉得是非常有趣的。
+
+もしそれをするとしたら、まず元気な体、十分なお金と周りの人のサポートが必要だと思います。だがら、この夢の実現ために、スポーツをしたり、一生懸命に働いています。そして、外国人と交流できるように、外国語を勉強しなければなりません。
+
+>如果我要实现这个梦想,我觉得首先要有健康的身体、足够的资金和周围人的支持。所以,为了实现梦想,我要锻炼身体、拼命工作。除此之外,为了能跟外国人交流,我必须要努力学习外语。
+
+人々は自分の夢がありますが、実現できない人が多いですね。現実は厳しいのに、いろいろな人は夢の実現が難しいと思ったら、放棄しますが、わたしはそんなことはしません。
+
+>人人都有自己的梦想,但是,很多人并没有实现自己的梦想。因为现实的残酷,很多人认为自己很难实现梦想,从而放弃了。我是不会这样的。
+
+皆さんの夢は何ですか?もう実現しましたか?どうしても、絶対に自分の夢を諦めないでください。一緒にがんばってね!
+
+>大家的梦想是什么呢?已经实现了吗?无论如何,请坚决不要放弃自己的梦想。让我们一起努力吧!
+
+![](https://cat.yufan.me/cats/2016-12-11-23031789_p0.jpg)
diff --git a/source/_posts/2017-03-06.md b/source/_posts/2017-03-06.md
new file mode 100644
index 0000000..1b4bcfe
--- /dev/null
+++ b/source/_posts/2017-03-06.md
@@ -0,0 +1,333 @@
+---
+title: 在编程中思考,简化你的判断逻辑
+tags:
+ - 学习
+categories: 学习
+permalink: rewrite-your-logic
+featureImage: https://cat.yufan.me/cats/2017-03-06-61215562_p0.png
+id: 163
+updated: '2017-03-13 01:44:37'
+date: 2017-03-06 20:31:42
+---
+
+之前看 Linus Toward 在去年的[某次采访](https://www.youtube.com/watch?v=o8NPllzkFhE&feature=youtu.be&t=890)中说到的好代码坏代码,当中提到了逻辑的精简,能用更通用的逻辑减少 if else 的判断在某种程度上可以使你的代码变得更好。最近一段时间重构了部分老代码,也 Review 了不少代码,对此观点深有感触。
+
+
+
+很多时候,程序员接到的需求,产品巴不得你立刻就能搞定,有时候会给非常紧迫的时间点。这种情况下会带来的最直接问题,就是[“设计坏味”](http://www.ituring.com.cn/article/263057)。有整体的架构设计的不合理,也有代码逻辑的问题。尤其是对于边界条件的处理,因为需求的急,很多时候大家就会按照业务语言去写。
+
+比如,下面这个例子:
+
+某一报警系统产生了报警邮件,现在需要按照类型显示不同的内容。
+
+| 类型 | 报警选择对象 | 邮件中展示内容 |
+| ------------- | ------------- | ----------------- |
+| Web事务 | 单条Web事务 | Tier,Web事务,节点 |
+| Web事务 | Tier | Tier,节点 |
+| 节点 | 某一个节点 | 节点 |
+| 节点 | Tier | Tier,节点 |
+
+如果按照业务的语言,我们可能写出如下的伪代码:
+
+```java
+if (Web事务 && 单条Web事务) {
+ return Tier,Web事务,节点;
+}
+if (Web事务 && Tier) {
+ return Tier,节点;
+}
+if (节点 && 某一个节点) {
+ return 节点;
+}
+if (节点 && Tier) {
+ return Tier,节点;
+}
+```
+
+可能你看到这里会立刻笑出来,哪有只写 `if` 不写 `else` 的。那好,也许你会写出这样的代码。
+
+```java
+if (Web事务) {
+ if (单条Web事务) {
+ return Tier,Web事务,节点;
+ } else if (Tier) {
+ return Tier,节点;
+ }
+} else if (节点) {
+ if (某一个节点) {
+ return 节点;
+ } else if (Tier) {
+ return Tier,节点;
+ }
+}
+```
+
+我相信,大部分人都能将判断逻辑写到这一层,但是,这就完了么?也许你会说完了,逻辑也正确,看起来也很清晰。然而,这远远不够。
+
+其实我们可以发现,在每种情况下,都会返回`节点`信息。只返回节点信息的只有一种情况,其他的情况下,基本都返回`Tier`信息。只有`Web事务 && 单条Web事务`的情况需要返回`Web事务`信息。所以,最后我们可以精简为两个判断。
+
+```java
+result = "节点";
+if (Web事务 && 单条Web事务) {
+ result = "Web事务" + result;
+}
+if (Web事务 || !某一个节点) {
+ result = "Tier" + result;
+}
+return result;
+```
+
+回到最初的命题,为何不要用业务的语言来编写判断逻辑呢?因为业务语言是给用户和产品看的,他们在描述上本身就不够精简。其次,业务的描述,很多时候,是定义边界,说明问题,而不是告诉你判断逻辑。
+
+所以,在写代码的时候,更多的时候要细化逻辑。这样,在维护修改时,才更为方便。下面我举另一个更具体的例子。
+
+这是我 Review Scala 代码的时候遇到的一个问题,首先我先用业务语言描述一下需求。需要判断某个规则的开闭状态,在一天的几点到几点间启用,且还可以额外设置是周一到周日的哪几天启用。
+
+于是我看到当时的同事,写一个方法`isSuppressTime`,会给两个参数,第一个参数为一个时间戳`timestamp`,第二个参数为一个 `List[Map[String, String]]`。
+
+`Map[String, String]` 里面有4个值,分别是:
+
+1. startTime,从零点到某个具体开始时间的秒数,0~86399。
+2. endTime,从零点到某个具体结束时间的秒数,0~86399。
+3. isDaily,当时间戳在 startTime endTime 之间时,如果此项为 true,则返回 true。
+4. weekdays,周一到周日,1~7,以`,`间隔组成的字符串,如`1,4,5`。表示周一、周四、周五且时间戳在 startTime endTime 之间时返回 true
+
+最后他写出了如下的代码(Scala):
+
+```scala
+def isSuppressTime(now: Long = System.currentTimeMillis(),
+ suppressTimes: java.util.List[java.util.Map[String, String]] = rule.getSuppressTime): Boolean = {
+ if(suppressTimes == null)
+ return false
+ import scala.collection.JavaConversions._
+ suppressTimes.foreach(params => {
+ if (params != null && params.size > 0) {
+ val startTime = params.get("startTime")
+ val endTime = params.get("endTime")
+ val isDaily = params.get("isDaily")
+ val weekdays = params.get("weekday").split(",").toList
+
+ val zero = zeroTimestamp()
+ //今天零点零分零秒的毫秒数
+ val start = zero + startTime.toLong * 1000
+ val end = zero + endTime.toLong * 1000
+
+ if (start <= now && end >= now) {
+ if (isDaily.toBoolean)
+ return true
+ val cal = Calendar.getInstance()
+ cal.setTimeInMillis(now)
+ var day = cal.get(Calendar.DAY_OF_WEEK)
+ if (day == 1)
+ day = 7
+ else
+ day = day - 1
+ val weekday = day.toString
+ if (weekdays.contains(weekday))
+ return true
+ }
+ }
+ })
+ return false
+}
+
+private def zeroTimestamp(): Long = {
+ val cal = Calendar.getInstance()
+ cal.set(Calendar.HOUR_OF_DAY, 0)
+ cal.set(Calendar.SECOND, 0)
+ cal.set(Calendar.MINUTE, 0)
+ cal.set(Calendar.MILLISECOND, 1)
+ cal.getTimeInMillis()
+}
+```
+
+这个代码看着很长,判断很多,而且还用了超级多陈旧的 API,使得它的性能也不好。而且这是一段 Scala 的代码,却用了较多的`return`和`var`,这两个都是 Scala 不提倡的。最关键的,明明是函数式的代码,他却写出了过程式的感觉。给后面的维护人员(我)带来了不少困扰。
+
+下面,我们来一点点优化这段代码(需要一点点 Java 功底),首先对于方法`zeroTimestamp()`,我第一眼看到的时候,是惊讶的,原作者用了一个比较旧的`Calendar`。对它最深刻的印象就是当年写`SimpleDataFormat`的时候,因为`Calendar`这货导致线程不安全。而每次创建`SimpleDataFormat`的开销比较大,最后不得不写了个`ThreadLocal`。
+
+而Java8以后,我们可以直接用`java.time`下面的类来改写`zeroTimestamp()`,这里只需要一行代码,如下:
+
+```scala
+private def zeroTimestamp(): Long = {
+ Timestamp.valueOf(LocalDate.now().atStartOfDay()).getTime
+}
+```
+
+回到`isSuppressTime`方法上来,我姑且不说他的设计多么麻烦,因为这是一个已经被广泛使用的方法,我能做到的就是在不改变签名的情况写来优化实现。
+
+首先,开头我们就看到
+
+```scala
+if(suppressTimes == null)
+ return false
+```
+
+这个空的判断和强制`return`,在 Java 里面,`null`是一个很痛苦的事情,Scala 因为基于 JVM 也不例外,但是 Scala 和 Java 8 都分别有一个 `Option` 类(Java8是 `Optional`),来做空值处理。
+
+所以,我们这里第一时间可以干掉这个判断,写成如下方式
+
+```scala
+Option[util.List[util.Map[String, String]]](suppressTimes).map(times => {
+ // ba la ba la
+}).getOrElse(false)
+```
+
+代码里面的`times`为方法中非空的`suppressTimes`,注释部分为核心的处理逻辑,这样我们避免了一个`if`判断,减少了一个`return`。
+
+而其实, `Option([A]).map([B] => Boolean).getOrElse(false)` 等价于`Option`的`exists`方法,最后完整的代码应该如下:
+
+```scala
+def isSuppressTime(now: Long = System.currentTimeMillis(),
+ suppressTimes: java.util.List[java.util.Map[String, String]]): Boolean = {
+ Option[util.List[util.Map[String, String]]](suppressTimes).exists(times => {
+ times.foreach(params => {
+ if (params != null && params.size > 0) {
+ val startTime = params.get("startTime")
+ val endTime = params.get("endTime")
+ val isDaily = params.get("isDaily")
+ val weekdays = params.get("weekday").split(",").toList
+
+ val zero = zeroTimestamp()
+ //今天零点零分零秒的毫秒数
+ val start = zero + startTime.toLong * 1000
+ val end = zero + endTime.toLong * 1000
+
+ if (start <= now && end >= now) {
+ if (isDaily.toBoolean)
+ return true
+ val cal = Calendar.getInstance()
+ cal.setTimeInMillis(now)
+ var day = cal.get(Calendar.DAY_OF_WEEK)
+ if (day == 1)
+ day = 7
+ else
+ day = day - 1
+ val weekday = day.toString
+ if (weekdays.contains(weekday))
+ return true
+ }
+ }
+ })
+ false
+ })
+}
+```
+
+在上面的例子里面,我们已经干掉了两个`return`和一个`if`,让它有一点 Functional 的感觉了。
+
+上面重构后代码中,`times`的类型是`util.List[util.Map[String, String]]`。`times.foreach(params => {})`里的`params`对应的是`util.Map[String, String]`类型。所以,我们看到判断`if (params != null && params.size > 0)`时应该会发现,这就是一个list filter的过程嘛。`.filter()`之后不就是一个`.map()`,于是我们可以这么改:
+
+```scala
+Option[util.List[util.Map[String, String]]](suppressTimes).exists(times => {
+ times.filter(params => params != null && !params.isEmpty).map(params => {
+ // ba la ba la
+ }).contains(true)
+})
+```
+
+当然`.map(xxx => Boolean).contains(true)`等价于`.exists()`,于是我们重构的方法如下:
+
+```scala
+def isSuppressTime(now: Long = System.currentTimeMillis(),
+ suppressTimes: java.util.List[java.util.Map[String, String]]): Boolean = {
+ Option[util.List[util.Map[String, String]]](suppressTimes).exists(times => {
+ times.filter(params => params != null && !params.isEmpty).exists(params => {
+ val startTime = params.get("startTime")
+ val endTime = params.get("endTime")
+ val isDaily = params.get("isDaily")
+ val weekdays = params.get("weekday").split(",").toList
+
+ val zero = zeroTimestamp()
+ //今天零点零分零秒的毫秒数
+ val start = zero + startTime.toLong * 1000
+ val end = zero + endTime.toLong * 1000
+
+ if (start <= now && end >= now) {
+ if (isDaily.toBoolean)
+ return true
+ val cal = Calendar.getInstance()
+ cal.setTimeInMillis(now)
+ var day = cal.get(Calendar.DAY_OF_WEEK)
+ if (day == 1)
+ day = 7
+ else
+ day = day - 1
+ val weekday = day.toString
+ if (weekdays.contains(weekday))
+ return true
+ }
+ false
+ })
+ })
+}
+```
+
+这次重构,我们又去掉了一层 if 判断,改为 filter 实现,减少了一次返回。到了这一步,我们会发现,下面需要实现的就是一个方法,对`util.Map[String, String]`去做处理,返回一个布尔值,于是我们精简方法的实现代码为两部分:
+
+```scala
+def isSuppressTime(now: Long = System.currentTimeMillis(),
+ suppressTimes: java.util.List[java.util.Map[String, String]] = rule.getSuppressTime): Boolean = {
+ Option[util.List[util.Map[String, String]]](suppressTimes)
+ .exists(times => times.filter(params => params != null && !params.isEmpty).exists(isValidateTimes(_, now)))
+}
+```
+
+这个为边界过滤的方法。
+
+```scala
+private def isValidateTimes(params: java.util.Map[String, String], now: Long): Boolean = {
+ val startTime = params.get("startTime")
+ val endTime = params.get("endTime")
+ val isDaily = params.get("isDaily")
+ val weekdays = params.get("weekday").split(",").toList
+
+ val zero = zeroTimestamp()
+ //今天零点零分零秒的毫秒数
+ val start = zero + startTime.toLong * 1000
+ val end = zero + endTime.toLong * 1000
+
+ if (start <= now && end >= now) {
+ if (isDaily.toBoolean)
+ return true
+ val cal = Calendar.getInstance()
+ cal.setTimeInMillis(now)
+ var day = cal.get(Calendar.DAY_OF_WEEK)
+ if (day == 1)
+ day = 7
+ else
+ day = day - 1
+ val weekday = day.toString
+ if (weekdays.contains(weekday))
+ return true
+ }
+ false
+}
+```
+
+这个为我们要重构的核心处理逻辑。我们优化整理它的判断条件,最后可以实现如下的完整代码:
+
+```scala
+def isSuppressTime(now: Long = System.currentTimeMillis(),
+ suppressTimes: java.util.List[java.util.Map[String, String]] = rule.getSuppressTime): Boolean = {
+ Option[util.List[util.Map[String, String]]](suppressTimes)
+ .exists(times => times.filter(params => params != null && !params.isEmpty)
+ .exists(isValidateTimes(_, now)))
+}
+
+private def isValidateTimes(params: java.util.Map[String, String], now: Long): Boolean = {
+ val zero = zeroTimestamp()
+ val start = zero + params.get("startTime").toLong * 1000
+ val end = zero + params.get("endTime").toLong * 1000
+ val isDaily = params.get("isDaily").toBoolean
+ val weekdays = params.get("weekday").split(",").toList
+ val weekday = LocalDate.now().getDayOfWeek.getValue.toString
+
+ (start <= now && end >= now) && (isDaily || weekdays.contains(weekday))
+}
+```
+
+这样,我们就实现了一个`if`都没有,一个`return`都没有的纯函数式写法。
+
+总的来说,代码谁都能写出来,但是把需求从文字或者是流程描述换成编码实现时就有了对程序员抽象逻辑能力的需求。如何组织抽象,就像是如何写作文,或者是 Kata(空手道里面的招数、套路),不要按照业务描述写 if else,而要尽可能简化找到一致性的简单逻辑描述。
+
+如果能将所有的特殊情况变为通用情况,简化逻辑判断,那么代码在后面的迭代中也会比较易于维护。
diff --git a/source/_posts/2017-05-13.md b/source/_posts/2017-05-13.md
new file mode 100644
index 0000000..0cb416f
--- /dev/null
+++ b/source/_posts/2017-05-13.md
@@ -0,0 +1,236 @@
+---
+title: Spring Boot 简介
+author: 雨帆
+tags:
+ - 学习
+categories: 学习
+permalink: springboot-brief-intro
+featureImage: https://cat.yufan.me/cats/2017-05-13-26782367_p0.jpg
+date: 2017-05-13 20:52:00
+---
+
+第一次使用 Springboot 应该是15年年底,当时就被这种约定大于配置的设计惊呆了。那个时候才从上一家公司跳槽,用的是 Spring 3。所以每次开发新项目的时候,配置起来都让我十分痛苦,也因此喜欢上了 Springboot 的种种便利。
+
+众观 Springboot 的发展,可以发现,其在简化开发上不断地进步。很多常见的组件框架也有了 Springboot 版本。我想,作为 Java 程序员,是时候进入 Springboot 的世界了。
+
+
+
+这里分享一份一年前,我在公司内部分享上用的 Slide,以期对于阅读此文的你有所帮助。
+
+![](https://cat.yufan.me/slide/spring-boot-intro/0001.jpg)
+
+大家好,今天由我来向大家简单介绍一下 Spring Boot 相关的内容,详细的与 Spring Boot 相关的知识将后面由吴一敏同学分享。
+
+首先自我介绍一下,我叫盛宇帆,15年年底加入 OneAPM,现在已经1年多了,目前主要负责和告警引擎相关的开发。
+
+![](https://cat.yufan.me/slide/spring-boot-intro/0002.jpg)
+
+Spring 官方的博客介绍 Spring: **Spring** is the **“glue”** in your application。我认为 Spring Boot 就是 A glue in Spring Framework。
+
+相信大家都经历过配置 Spring XML 的阶段,十分痛苦地去配置一个 Bean,后面 Spring 3发布之后,基本上很多配置都是通过注解加扫包去配置初始化。
+我常见到的一种配置方式,就是和 Spring 框架集成部分的配置,如数据库啊,Web 模板一类的,使用的是 XML,自己项目的 Service、Dao 等类,使用注解初始化。
+后面 Spring 4开始流行 @Configuation 注解的配置类初始化配置。
+
+然而,这样子还是十分麻烦,所以才有了 Spring Boot,它给我们最直观的感受,就是 简化了配置。一言一概之,约定大于配置。
+
+然而,仅有这些,并不能说明为何现在 Spring Boot 开始流行,说道 Spring Boot 的兴起,我想起前几天一个技术群的提问:为什么 Spring Boot 应用倾向于打 fat jar 直接启动,而传统的应用倾向于打 war 包从应用容器启动?
+
+![](https://cat.yufan.me/slide/spring-boot-intro/0003.jpg)
+
+Java 应用部署于应用容器中,其实是受到 J2EE 的影响,也算是 Java Web 有别于其他 Web 快速开发语言的一大特色。一个大大的 war 压缩包,包含了全部的依赖,代码,静态资源,模板。
+
+在虚拟化流行之前,应用都是部署在物理机上的,为了节约成本,多 war 包部署在一个 Servlet 容器内。
+
+但是为了部署方便,如使用的框架有漏洞、项目 jar包的升级,我们会以解压 war 包的方式去部署。或者是打一个不包含依赖的空 war 包,指定容器的加载某个目录,这样所有的war项目公用一套公共依赖,减少内存。当然缺点很明显,容易造成容器污染。
+
+避免容器污染,多 war 部署变为多虚拟机单 war、单容器。
+
+DevOps 流行,应用和容器不再分离,embedded servlet containers开始流行 Spring Boot 在这个阶段应运而生。于是项目部署变为 fat jar + 虚拟机
+
+Docker的流行,开始推行不可变基础设施思想,实例(包括服务器、容器等各种软硬件)一旦创建之后便成为一种只读状态,不可对其进行任何更改。如果需要修改或升级某些实例,唯一的方式就是创建一批新的实例以替换。
+
+基于此,我们将配置文件外置剥离,由专门的配置中心下发配置文件。
+
+这也是我们为何要学习和使用 Spring Boot 的背景,我觉得这才是 Spring Boot 开始流行的主要原因。
+
+![](https://cat.yufan.me/slide/spring-boot-intro/0004.jpg)
+
+总的来说 Spring Boot 有以下几个特点。
+
+1. 配置简化,这个我印象最深刻的就是写 MyBatis 的时候,一堆东西要配置,一般大家都会用那个 Generator 去生成。而实际上 Spring Boot 推崇 jpa,如果只是简单的 CRUD,用 Spring Boot + JPA 的方式简单到只需要几行关于数据库的配置就好了。
+2. 自动配置机制,很多教程都称它为 Magic,基于项目的某些条件,自动初始化装配必要的 Bean,稍后会在后面的演示中详解。
+3. Starter 本质上就是 Spring 基于 Gradle 和 Maven 这两种构建工具定义的一组依赖,一般是按照功能或者框架划分。在有了自动配置的机制下,我们只需要依赖 Starter 指定的坐标,和非常简单的属性配置即可集成我们想要的框架。
+4. 嵌入的 Servlet 容器,主要是为了方便部署的。
+5. 主要是 `spring-boot-starter-actuator` 和 `spring-boot-starter-remote-shell` 的使用,当然,这里还可以使用 JMX 一类的做管理,大家可以参考文档。(2017年更新 remote shell 已经废弃)
+
+![](https://cat.yufan.me/slide/spring-boot-intro/0005.jpg)
+
+首先,我们来用 Spring Boot 写一个 Hello World吧,这个是仿照 Spring 官方的示例代码改的,使用 Groovy,所以连 import 都省了。这里主要是为了演示一个最简单的 Spring Boot 应用,通过下面的这行命令我们就能把它启动了。
+
+```java
+@RestController
+class GreetingRestController {
+ @RequestMapping("/hi/{name}")
+ def hi(@PathVariable String name) {
+ [ greeting: "Hello, " + name + "!"]
+ }
+}
+```
+
+![](https://cat.yufan.me/slide/spring-boot-intro/0006.jpg)
+
+现在,问题来了,刚才那个项目那么简单,那个,整个项目的启动过程中,到底发生了哪些魔法呢?
+
+![](https://cat.yufan.me/slide/spring-boot-intro/0007.jpg)
+
+我们将 Groovy 的代码翻译为 Java版本,大概会看到,一个项目想要启用 Spring Boot,关键在于 `SpringApplication` 类和 `EnableAutoConfiguration` 注解的使用。
+
+SpringApplication 是 Spring Boot 提供的用于 Java main 方法的启动类。它的执行操作首先为:
+
+1. Create an appropriate {@link ApplicationContext} instance (depending on your classpath)
+2. Register a {@link CommandLinePropertySource} to expose command line arguments as Spring properties
+3. Refresh the application context, loading all singleton beans Trigger any {@link CommandLineRunner} beans
+
+然后 `EnableAutoConfiguration` 则为 Enable 类注解这里通过此注解,告诉 Spring Boot 开启自动装配的特性。
+
+![](https://cat.yufan.me/slide/spring-boot-intro/0008.jpg)
+
+除了 `EnableAutoConfiguration`,我们常常和它并列使用的还有 `ComponentScan` `Configuration` 注解。这三个注解合起来,有一个等价的注解,叫做 `SpringBootApplication`,一般在我们的项目开发中,喜欢在项目最外面的包下面创建包含 main 方法的程序启动类,然后这个类上标记为 @SpringBootApplication 这个注解,这样就等价于基于 main 方法类所在的 package 为 Spring 扫包的基础包路径,且开启自动化配置。
+
+自动化配置的实现,不得不说 Spring Boot 本质上是通过 Conditional 类注解来实现的。
+
+`@ConditionalOnClass` 表示对应的类在classpath目录下存在时,才会去执行注解所标示的自动配置类或者自动配置方法,与之对应的我们就@ConditionalOnMissingClass 注解,也就是找不到对应的类的时候。
+
+`@ConditionalOnBean` 和 `@ConditionalOnMissingBean` 则同样很容易按照字面意思理解。
+
+当然 `Conditional*` 注解不仅仅上面提到的这些,还有 `ConditionalOnExpression` 一类的。
+
+![](https://cat.yufan.me/slide/spring-boot-intro/0009.jpg)
+
+这个是我们从 Spring Boot 当中节选的一段代码,主要是为了演示自动化配置的具体实现。首先我们在项目配置里面标明 spring.jmx.enabled = true,ConditionalOnProperty 注解生效,然后 Spring 发现能找到 `MBeanExporter.class` 这个类,于是开始执行自动化配置的方法,因为这个时候项目中没有定义 `MBeanExporter` 这个 Bean,于是 `ConditionalOnMissingBean` 注解生效,Spring 开始读取配置属性,自动创建此 Bean 对象。
+
+同理,任何一个自动装配的实现,基本上就是组合这些条件注解。
+
+![](https://cat.yufan.me/slide/spring-boot-intro/0010.jpg)
+
+当然,如果能被 Spring Boot 官方直接支持的话是最吼的,目前被支持的肯定不止上面这些,我只是简单地列举了一些常见的项目。
+
+Spring Boot 官方之前发起过好几次投票,就是列举一些框架,然后大家投票选择哪些想要被官方支持的。上半年的时候,我还在里面看到了之前姜老师维护的 camel,然而似乎并没有被选中。MyBatis 目前虽然有 Spring Boot 版,但是是由 MyBatis 团队自行维护,至少我6月份尝试使用的时候,问题还是蛮多的。 (2017年之后的版本基本可用,主要是有了 Boot 版本的 VFS)
+
+![](https://cat.yufan.me/slide/spring-boot-intro/0011.jpg)
+
+上面是我从 Spring Boot 1.3.6 中找到的 spring.factories 文件的截图。当然,基本上只要上面有的,都能得到不错的支持。
+
+![](https://cat.yufan.me/slide/spring-boot-intro/0012.jpg)
+
+前面我们简单介绍了自动配置的实现原理,基本上流程就是配置文件标明启用什么服务,然后找到对应的依赖(class),然后结合条件装配初始化 Bean。
+
+所以 Spring 就更进一步,按照功能模块,划分出一个个 Starter 模块。以 Maven 为例,基本上我们只需要将 Spring Boot 自己的那个 POM 文件设置为 parent,然后依赖中直接依赖所需的 Starter 坐标,即可依赖所有所需的 jar 包,剩下的的东西,仅有最基础的属性值配置。
+
+![](https://cat.yufan.me/slide/spring-boot-intro/0013.jpg)
+
+当然 Starter 也是一把双刃剑,比如我在项目里面依赖了 `spring-boot-starter-data-jpa` 之后在 IDEA 里面看到的依赖树,简直就是 jar 包狂魔,虽然我们需要 jpa,但是不一定需要全部这些包。
+
+![](https://cat.yufan.me/slide/spring-boot-intro/0014.jpg)
+
+这也就引出了我使用 Starter 的时候的几个困扰。比如项目需要以 spring-boot 的 pom 为 parent,这个就比较讨厌了,尤其是我前公司,所有的项目是同一内部的 parent,这样子可以管理大家的依赖。如果要用Spring Boot 的话,就会略有麻烦。可能就需要通过依赖 Spring Boot 的 pom 的方式,并不是很优雅。
+
+问题二是我在用 Spring Boot 时依赖 logstash 遇到的, logstash自己依赖了一个 logback-access 和那个版本的 Spring Boot 依赖的 logback 不一致,导致一直报一个 `java.lang.AssertionError`
+
+问题三就是我最近想用 Spring Boot 去读写 Kafka,结果我们用的 Kafka 版本比较老,最后只好自己配置,特别麻烦。很多老的组件,要么你得用老的 Spring Boot,要么你就得自己配置。
+
+![](https://cat.yufan.me/slide/spring-boot-intro/0015.jpg)
+
+比如我们基于 YAML 定义了上图这么一段配置,最简单的方式就是 `@Value` 注解,通知这货还支持 Spring El 表达式,做一些简单的处理判断。
+
+但是对于一个组件的配置,或者是项目自己的配置,更需要比较好的梳理,Spring Boot 便支持了所谓的 prefix 前缀的概念,我们可以把所需要的配置信息定义为一个配置类,在里面定义好必要的 Getter Setter 一类的东西。在初始化项目的时候使用 `@EnableConfigurationProperties` 注解即可实现配置参数注入到配置类里面。
+
+当然麻烦的地方在于如果配置文件定义的层级过深,配置类会变得极其复杂。建议这种情况下,尽可能简化层级。
+
+![](https://cat.yufan.me/slide/spring-boot-intro/0016.jpg)
+
+配置文件的加载,其实 Spring Boot 有一个非常复杂的流程,大家好奇的话可以看 Spring Boot 文档中的定义,大概有十几种情况。但是大部分情况下,我们用不了这么多,上面是我认为应该知道并且利用的几种情况,配置加载的顺序是由上往下。
+
+第一种情况,和 jar 包在同一目录下,一般是应用发布到生产,然后还想修改更新配置的情况。
+
+项目 resources 目录和 resources/config 下面的配置文件,就是我们在开发的时候会选取的存放配置的位置。
+
+当然配置文件的名称默认是 application,还可能根据你所启用的 Profile 加载不同名称的配置文件。
+
+由于配置文件的指定在 Spring Boot 中极其灵活,(官方可能把所有的情况都考虑到了)所以大家可以自己按需选择。
+
+![](https://cat.yufan.me/slide/spring-boot-intro/0017.jpg)
+
+测试当然也有 Starter,我们只需要依赖 `spring-boot-starter-test`,即可轻松写测试。常见的测试注解就是上面几个
+
+`@WebIntegrationTest` 注解相当于 `@IntegrationTest` + `@WebAppConfiguration` 注解结合使用,在 1.3 之前,主要是使用前面4个注解进行测试。
+
+1.4 之后,我们主要使用 `SpringBootTest` 注解做测试
+
+![](https://cat.yufan.me/slide/spring-boot-intro/0018.jpg)
+
+最老的方式,你可能会使用 `@ContextConfiguration` 注释和 `SpringApplicationContextLoader` 的组合去写单元测试。
+
+当然,我们可以去掉 loader 的配置,使用方法2 的 `SpringApplicationConfiguration` 注解去测试
+
+![](https://cat.yufan.me/slide/spring-boot-intro/0019.jpg)
+
+当想写一个集成测试的时候,可以使用 `IntegrationTest` 注解,和前面的不一样的是,前面两种方式不会初始化全部的 Bean,而 `IntegrationTest` 会和生产环境一样,完整初始化程序。但是它不会初始化 嵌入式的 Servlet 容器。
+
+当你需要嵌入式的 Servlet 容器做一些接口的集成测试的时候,就需要使用 `WebIntegrationTest` 注解
+
+![](https://cat.yufan.me/slide/spring-boot-intro/0020.jpg)
+
+然而一个项目,基本上包含 `SpringApplication` 和 main 方法的类只有一个,所以在1.4 之后,我们连 App.class 都不需要给定,直接使用 `@SpringBootTest` 注解即可,更加优雅。
+
+![](https://cat.yufan.me/slide/spring-boot-intro/0021.jpg)
+
+这个就是我基于 Spring Boot 1.3 写的一个集成测试,当然它使用的是我们前面说的方法3。
+
+![](https://cat.yufan.me/slide/spring-boot-intro/0022.jpg)
+
+前面我们其实已经说到了 Spring Boot 的 `Profile` 可以让我们区分不同环境下加载的配置文件。比如开发环境,测试和线上,很多值都可以实现定制,而不需要重新打包项目。
+
+使用 Profile 的第二个场景就是不同的 Profile 需要初始化不同的bean,比如以 DataSource 为例,测试的时候,因为测试环境不一样,我们更期望 DataSource 能用 H2一类的嵌入式数据库模拟。开发和生产环境,就需要初始化一个 MySQL 的 DataSource。当然我说的这个场景不需要我们专门去配置,因为 Spring Boot 已经替我们考虑到了这种情况,在需要 DataSource,但是没有这个 Bean,切依赖了 H2的 Driver 的时候,Spring 会自动创建一个 H2 的 DataSource。
+
+还有一个我使用 Profile的场景就是 Swagger,它十分好用,尤其是开发的时候能基于注解自动生成 API Doc,和测试页面,然而,会存在的问题就是它有漏洞,我只希望在开发的时候启用 Swagger,这个时候就可以利用 Profile 来实现。
+
+![](https://cat.yufan.me/slide/spring-boot-intro/0023.jpg)
+
+Profile 可以启用一个或者多个,然而,也会导致一些问题,比如我们没有指定 Profile 的时候怎么办,或者我们有 profile 名为 mysql、cassadra。它们是相互 block 的,如何检查校验,避免冲突的 profile 同时启用呢?
+
+![](https://cat.yufan.me/slide/spring-boot-intro/0024.jpg)
+
+这个是添加默认 Profile 的方式,原来我是尝试在 application 配置文件里面设置,但是不生效,最后我只好手动编码实现。
+
+![](https://cat.yufan.me/slide/spring-boot-intro/0025.jpg)
+
+这个方法是和 main 方法同级的一个方法,需要 Autowired Spring 的 Environment 接口,然后获取 Profile 的配置,即可自行实现判断逻辑。(期待后面 Profile 能更加完善,实现 Block 一类的属性)
+
+![](https://cat.yufan.me/slide/spring-boot-intro/0026.jpg)
+
+![](https://cat.yufan.me/slide/spring-boot-intro/0027.jpg)
+
+![](https://cat.yufan.me/slide/spring-boot-intro/0028.jpg)
+
+![](https://cat.yufan.me/slide/spring-boot-intro/0029.jpg)
+
+Spring Boot 官方推崇的部署方式是 jar,原因我们前面也分析过了,但是也会存在打包为 war 去部署的需求。这里我们只需要在和 Application.class 同级的路径下继承 SpringBootServletInitializer 类去定义一下 SpringApplicationBuilder 的配置即可,还是很轻松的。我这个截图的示例里面用了前面设置默认 Profile 的方法,重用了一下代码。
+
+有了这么一个类之后,我们就可以在 pom 里面设置项目打包为 war,它既能 java –jar去执行这个 war,也能直接丢到 Tomcat 一类的容器里面运行。
+
+我们在 17年的实践中发现,很多时候,非 Fatjar 也有一定的意义,于是有了下属的打包启动实践,大家可以去参考。
+
+https://gist.github.com/syhily/c66310c150653e8f92b9fa6693df8207
+
+![](https://cat.yufan.me/slide/spring-boot-intro/0030.jpg)
+
+如果想要快速创建一个 Spring Boot 项目开发,有且不仅有上述几种方式。
+
+![](https://cat.yufan.me/slide/spring-boot-intro/0031.jpg)
+
+![](https://cat.yufan.me/slide/spring-boot-intro/0032.jpg)
+
+![](https://cat.yufan.me/slide/spring-boot-intro/0033.jpg)
+
+你可以点击 [这里](https://cat.yufan.me/work/springboot-intro.pptx) 下载到本地浏览。
diff --git a/source/_posts/2017-06-28.md b/source/_posts/2017-06-28.md
new file mode 100644
index 0000000..0165134
--- /dev/null
+++ b/source/_posts/2017-06-28.md
@@ -0,0 +1,878 @@
+---
+title: 《菲莉丝的工作室》一年期主线任务流程攻略
+author: 雨帆
+tags:
+ - 游戏
+ - 工作室
+categories: 游戏
+permalink: atelier-firis-first-year-walk-through
+featureImage: https://cat.yufan.me/cats/2017-06-28-01.jpg
+date: 2017-06-28 07:52:00
+---
+
+这作不知道是不是因为变革太大,还是 BUG 太多,日版销量暴死,本人买完繁中后才看到要出 PC 的新闻。果然,这很暗荣。不过到现在也没有找到很好的攻略,A9上,该板块虽然升区,但是帖子也多为日文版讨论。本着照顾像我这样的手残玩家的想法,我准备重新打一次一年期。一点点完善该攻略。
+
+这作的汉化质量怎么说好呢,就我个人而言觉得有点诡异。比如,“无事发生”这个完全是等着被我们吐槽么?
+
+本作的狗牙完全闪瞎我的狗眼,明明那么萌的菲莉丝,用 PS4 Pro 能解锁60帧成就,PS4 下很多场景会有明显的掉帧和加载缓慢(果然 Gust 技术不到家么?)
+
+本人并不精通工作室,前面7作完全坑着,不信你看我的奖杯表。所以合成也不是很懂,如有不足之处,还请各位大佬指出。
+
+
+
+**为何写这个:**
+
+菲莉丝太萌了,感觉我就像莉雅尼一样,玩此作很有代入感。写此文,主要是为了满足大姐姐我对菲莉丝的吐槽欲望。
+
+其次,这作的变化让我这个“老玩家”有点无所适从。写此文带领大家度过一年期的限时任务,快速熟悉菲莉丝这作的世界观,掌握基本的游戏技巧还是很有必要的。而且,避免初期走冤枉路,毕竟,跑图很费时间,找采集点很费时间。
+
+当然,姐姐我对菲莉丝的爱才是写本文的动力源泉。
+
+**注意事项:**
+
+1. 本作的地图极其大,跑图十分累(当然地图建模、怪物建模一如既往地挫),前期探索完地图之后一定要善用传送。传送也是要消耗时间,但是比走过去要快,一周目之后出门会给你做扫把的“发想”,跑图就是飕飕的。
+2. 本作没有了传统的主城工作室,工作室都是随身携带,看到篝火就可以使用。BGM一如既往在工作室内更换,和以前不一样的是,可以叠加全部的前作,随机歌曲。换装功能在得到第一件衣服后解锁,不像爱夏一类的前作在开始 Title 处换装。装饰功能极其重要,可以用于将牛逼炸弹放置于此,二周目可以直接继承(虽然我还没打到二周目)。
+3. 在本作里不同的服装也有了额外的特性,有减少移动消耗 LP 的,有增加合成特性的。DLC 服装主要是可以增加采集的质量。
+4. 主线任务里很多 NPC 的房子到了晚上是上锁的,需要到了6点天亮了才能进去。尤其需要注意控制时间,否则,你就只能四处瞎逛到天亮。(当然,最优雅的磨时间方法是在小屋里面合成,或者愉快地做一个“采蘑菇的小女孩”,到了天亮就立刻“闪现”去 NPC 处。)
+5. 本作最令人诟病的一点就是任务提示极其不友好,很多任务都不知道如何触发。索菲时代的炼金合成联想在本作的提示也令人发狂,不像索菲,可以直接从咖啡馆购买提示。
+6. 很多时候合成的素材如果忘了采集,可以从小地图上的蓝色 NPC 处购买,然而令人抓狂的是,NPC 处有时候购买的数量还是不够。
+7. 第四和第五主城的推荐书任务需要炼金 Lv 比较高,可以通过刷没有合成过的物品来快速提升等级。
+8. 一年期的任务和初期在家的限时任务的时间完全足够,但是不推荐瞎逛地图,因为后期有飞行扫把随意玩。
+9. 地图上可以通过和人聊天开启各种有意思的任务,要素,建议完成一年期后再探索。
+10. 本作可选队友比较多,但是加入队伍的人有5人上限,上场作战是4人上限。不像罗吉那作加入队伍可以有7人,如果队伍达到5人,新加入的小伙伴就需要和现有的伙伴替换,建议慎重选择。初期推荐前作的胖子(本作变帅了,我的少女心),还有那个在海滨需要5000金雇佣的那货。组队后,相关 NPC 会在工房里站着,与之对话可以解雇,还有额外剧情,能解锁 NPC 的相关技能。解雇和未雇佣的队友会出现在酒馆和旅馆里面,与之对话即可重新加入队伍。
+11. 地图上的骷髅头位置建议一年期不要去作死,除了第一幅图的狮子我用炸弹炸死之外,其他的要么是打不动,要么是被秒
+12. 一年期的考试不是很难,所以不需要刻意准备,不过推荐采集的材料品质要好点。攻略后面会特别指出。
+13. 小地图上标为黄色正方形处为宝箱,开启后可以获得装备或者素材。
+14. 工房的收藏箱物品上限是1000,但是可以合成额外的保险箱来增加上限,最高是3500个。
+15. 本文里面所有括号内的文字均为废话,可以 PASS。
+16. 其他想到了再补充……
+
+## 艾尔托纳日常
+
+[![](https://wx3.sinaimg.cn/large/80c744e8ly1fc9cd04go7j21hc0u0n65.jpg)](https://wx3.sinaimg.cn/large/80c744e8ly1fc9cd04go7j21hc0u0n65.jpg)
+
+开场,菲莉丝走到村门口的大门处,看着紧闭拦着自己出去的大门,叹了口气,继续回去工作。菲莉丝回到长老处,开始采集任务,主要是采集教学。
+
+(从黄昏系列之后,工作室的采集就变为跑到闪着不明亮斑的地点,按 「O」 键采集,无需额外的选择采集的东西。本作最大的特色是,可以通过采集点的外观粗略判断采集内容,但是相同外观的采集点,在不同的图里面产出会略有区别。)
+
+[![](https://wx4.sinaimg.cn/large/80c744e8ly1fc9cd0us8uj21hc0u0483.jpg)](https://wx4.sinaimg.cn/large/80c744e8ly1fc9cd0us8uj21hc0u0483.jpg)
+
+采集两个蓝色的水晶后自动进入剧情,剧情结束后提示菲莉丝回家。回家路上菲莉丝看着拦着自己紧闭的大门,想出去不得,准备回家,遇见自己姐姐莉亚姊回来。
+
+往前走自动触发莉雅尼与长老对话剧情。
+
+[![](https://wx3.sinaimg.cn/large/80c744e8ly1fc9cd1a522j21hc0u0dpf.jpg)](https://wx3.sinaimg.cn/large/80c744e8ly1fc9cd1a522j21hc0u0dpf.jpg)
+
+两人一起回家,菲莉丝家在地图的最里面,初期跑图时容易迷路(比如我)。跑图到一半自动触发剧情,爸爸妈妈亮相,妹妹也想出去,妈妈严肃拒绝说教了一番。
+
+[![](https://wx4.sinaimg.cn/large/80c744e8ly1fc9cd1p6poj21hc0u0dph.jpg)](https://wx4.sinaimg.cn/large/80c744e8ly1fc9cd1p6poj21hc0u0dph.jpg)
+
+第二天,菲莉丝没有工作,姐姐也出门了,于是准备出去看看 [南方的光芒照耀之地],眺望天空。
+
+跑到截图处,触发剧情,此处为村庄内唯一一处能看到天空的,菲莉丝一直未出去过,所以对外面的世界十分向往,自然地对于这唯一的一方阳关照耀之处也十分喜欢。
+
+[![](https://wx2.sinaimg.cn/large/80c744e8ly1fc9cd24vogj21hc0u0qcm.jpg)](https://wx2.sinaimg.cn/large/80c744e8ly1fc9cd24vogj21hc0u0qcm.jpg)
+
+与姐姐吵架之后,菲莉丝准备去门那边看看。触发剧情,遇见前作的(村姑)苏菲,菲莉丝带着苏菲去家门口空地搭帐篷。进入苏菲的工房(帐篷)之后,菲莉丝第一次见识到炼金术的神奇,产生了极大的兴趣。
+
+(没有了托托莉、梅露露、爱夏等前作里面经典的爆炸桥段,我好伤心。虽然一年期之后补全了这个遗憾,因为菲莉丝想继续旅行无心工作导致合成失败爆炸。)
+
+剧情完毕之后解锁桌子和炼金釜,提示菲莉丝合成“无事发生”,也就是炼金教学剧情。炼金教学对新人更友好,分为两个剧情,目前只是让你选择材料和简单图例。
+
+(此作和前作的合成形式上大致还是相似,类似的拼图游戏,不同的是,本作增加触媒的概念,也就是材质能覆盖触媒的话能解锁额外特性。触媒的颜色如果是白色,表示它不关心覆盖的材料的颜色。如果触媒的花纹有别的颜色,则需要特定颜色的材质。)
+
+如果安装 BGM DLC,此时还不能从桌子处更换。点击桌子目前只能存档,回到标题。
+
+合成结束后有一大段剧情,菲莉丝回家睡觉,第二天出门后看见苏菲向村民兜售炼金产物。菲莉丝发现炼金术好厉害哦,合成的东西理论上可以让她出门不怕魔物,于是决定向苏菲小姐姐学习炼金术。然而,父母知道菲莉丝想通过学习炼金术出门之后,毅然拒绝了。(可怜天下父母心啊)与父母吵架后,菲莉丝哭着跑到大门,向苏菲述说了对外面世界的向往。苏菲十分感动,(多么单纯的孩子,就让我来教坏她吧。)于是决定当菲莉丝老师,教她炼金术。
+
+回去的路上遇见村长和姐姐,村长下发了课题,用炼金术在一定期限内帮助村里人,只有证明菲莉丝炼金术水平才能让她出去玩。于是菲莉丝正式开始和苏菲老师学习炼金术。
+
+(梅露露里面,虽然父皇不同意,但好歹托托莉老师亲自去帮助梅露露说情,而且定下了3年期国家建设。这里姐姐大人说情,村长大人代替父母向菲莉丝下发任务的设定有点违和。而且这简直是阿尔兰系列就玩烂的套路啊,罗罗娜是托托莉老师,托托莉是梅露露老师,目测菲莉丝是下作女主的老师。)
+
+进入第二次正式炼金教学环节,这里主要就是教我们怎么“拼图”,和触媒初探。合成后苏菲提示菲莉丝出去寻找大家的困扰,通过解决大家的问题来在实战中提升自己,一举两得。
+
+此处需要对话的 NPC 有三个人,靠近需要对话的 NPC 时,该人头上会自动有话语提示,十分好找。
+
+[![](https://wx1.sinaimg.cn/large/80c744e8ly1fc9cd2gzz2j21hc0u07h3.jpg)](https://wx1.sinaimg.cn/large/80c744e8ly1fc9cd2gzz2j21hc0u07h3.jpg)
+
+第一个为直接南下遇到的红衣女子天亚,开启任务“柔皮液的治疗方法”。
+
+[![](https://wx3.sinaimg.cn/large/80c744e8ly1fc9cd2ss3hj21hc0u0dr9.jpg)](https://wx3.sinaimg.cn/large/80c744e8ly1fc9cd2ss3hj21hc0u0dr9.jpg)
+
+第二个为继续南下遇到的“膝盖中箭男子”丹尼斯,开启任务“腰疼的治疗方法”。
+
+[![](https://wx3.sinaimg.cn/large/80c744e8ly1fc9cd37np9j21hc0u07ge.jpg)](https://wx3.sinaimg.cn/large/80c744e8ly1fc9cd37np9j21hc0u07ge.jpg)
+
+第三个为往右侧岔道走处遇到的歌尔特对话,开启任务“坚\~硬岩石的破坏方法”。
+
+使用教学里面的捷径回到家门口,进入工房和苏菲对话,习得调合发想系统。
+
+(在菲利斯达成一定的条件后,比如使用一定次数的爆弹诸如此类,可自动发想领悟新的制作道具的配方。发想条件可以在系统菜单“配方笔记”中查看。部分带问号的发想配方虽然未达到条件,但可以使用发想点数解锁。但是,这个点数实际上是非常珍贵的,因为后期很多重要材料条件十分苛刻,用发想点数解锁省事,所以前期这些简单材料,能省点数就尽量省。)
+
+[![](https://wx3.sinaimg.cn/large/80c744e8ly1fc9fldlp1rj21hc0u0akf.jpg)](https://wx3.sinaimg.cn/large/80c744e8ly1fc9fldlp1rj21hc0u0akf.jpg)
+
+菲莉丝出门找人对话获得炼金灵感,从这时开始推荐善用大地图标记任务,小地图跑图。按 「Touch Pad」 进入大地图,「L1」、「R1」 切换到任务栏,点击任务即可在地图上标记。方便小地图跑图时,查看是不是跑对位置(我只到玩到很后面的时候才知道这个技巧,大雾。)
+
+[![](https://wx3.sinaimg.cn/large/80c744e8ly1fc9fle2zp2j21hc0u0k45.jpg)](https://wx3.sinaimg.cn/large/80c744e8ly1fc9fle2zp2j21hc0u0k45.jpg)
+
+和工房门口的老太太对话,提示去采集“妖精的阳伞”。后得知“妖精的阳伞”对于治疗腰疼有奇效。
+
+[![](https://wx3.sinaimg.cn/large/80c744e8ly1fc9flefkrij21hc0u04bx.jpg)](https://wx3.sinaimg.cn/large/80c744e8ly1fc9flefkrij21hc0u04bx.jpg)
+
+工作室后方的楼梯上就有我们要采集的材料,这个游戏的设定里面,就是需要采集的东西不会满世界跑,一般就在任务 NPC 旁边,不要和我一样满图跑。
+
+[![](https://wx2.sinaimg.cn/large/80c744e8ly1fc9fles7vij21hc0u0n98.jpg)](https://wx2.sinaimg.cn/large/80c744e8ly1fc9fles7vij21hc0u0n98.jpg)
+
+”妖精的阳伞“的另一个更新点,就是最西边的小男孩处,需要注意的是,工房后面的刷出来概率不如这个点高。此处基本是100%出。
+
+不断进出工房,刷这两个位置,即可集齐三个”妖精的阳伞“。(此技巧在后面的很多材料采集的时候也十分有效,因为时间完全足够你这么任性。)与老太太对话,发想获得“艾尔托纳软膏”的调合配方。当然这里建议收集6个以上,3个交任务,其他的用于合成。
+
+在老太太旁边的井处按 「O」 打水,获得”无事发生“和“艾尔托纳软膏”合成必需品水。
+
+(本作不像苏菲等前作,一天只能在井水处取一次水。可以多次取水,我们这里最少取水两次。)
+
+[![](https://wx2.sinaimg.cn/large/80c744e8ly1fc9flf9wfmj21hc0u0wos.jpg)](https://wx2.sinaimg.cn/large/80c744e8ly1fc9flf9wfmj21hc0u0wos.jpg)
+
+无事发生的另一个合成材料是纸张,这里请在村子里瞎逛,按 「口」 打碎房子旁边纸箱获得。
+
+[![](https://wx3.sinaimg.cn/large/80c744e8ly1fc9flfo05aj21hc0u0wqf.jpg)](https://wx3.sinaimg.cn/large/80c744e8ly1fc9flfo05aj21hc0u0wqf.jpg)
+
+在跑图的路上一边愉快滴采集,一边打碎纸箱搞破坏,我们跑到了大门处,和旅行商打扮的大哥哥对话后得知在坑道深处破坏石头可以获取火岩石。(来制造爆炸的东西)
+
+[![](https://wx4.sinaimg.cn/large/80c744e8ly1fc9flg2jwbj21hc0u0k27.jpg)](https://wx4.sinaimg.cn/large/80c744e8ly1fc9flg2jwbj21hc0u0k27.jpg)
+
+用 「Touch Pad」 开图传送至光芒照耀之地,开启奖杯,然后继续南下去坑道打石头,获取”火岩石“和”自然矿物油“。分别为”炎烧“和”艾尔托纳软膏“的合成材料。这里建议稍微多采集一点火岩石,避免来回跑图,很累。
+
+(前期只能用权杖敲石头,又慢又浪费时间,后期发想出道具十字镐的时候一定要合成,采集神器。)
+
+传送回工房,发想出炎烧,开始合成”炎烧“和”艾尔托纳软膏“。先合成”炎烧“和”无事发生“提升炼金等级,合成成功后触发剧情,妹控姐姐大人进来抱怨:“妹妹大了,不理姐姐了,姐姐好伤心。”为什么我瞬间想到了点兔里面的爱酱,简直完全一样。
+
+继续合成,完成”炎烧“和”艾尔托纳软膏“的合成。期间触发剧情,姐姐大人和妈妈大人的关爱,“饼干”Get。全部合成后触发前作的吐槽,玩过苏菲的名那也许会会心一笑,没玩过的可能就直接懵逼了。
+
+[![](https://wx3.sinaimg.cn/large/80c744e8ly1fc9flgfi5bj21hc0u0k3t.jpg)](https://wx3.sinaimg.cn/large/80c744e8ly1fc9flgfi5bj21hc0u0k3t.jpg)
+
+传送至“住宿:光辉水晶亭”,下来往南走,紫色水晶处即可与姐姐大人对话,获得柔皮液的制作大法。继续往南走,顺便把“艾尔托纳软膏”交付给腰痛的大哥哥,触发剧情(这里的菲莉丝萌死我了,“好像有个开心得不得了的女孩呢”)。
+
+转头朝西北方向,将炎烧交付给另一个发型杀马特的大哥哥。触发剧情,从苏菲那得知还有炼金术师考试这么一茬,还需要三封推荐信。顺路采五个蘑菇回家,用于合成柔皮液。触发剧情结束后,发想出“中和剂 · 蓝”。
+
+交付柔皮液,传送回工房合成一个炎烧,中和剂蓝也可以顺便合成一下。合成期间会自动触发一次剧情,菲莉丝对于工作室为何这么大的疑问。再合成一次后退出合成,会触发剧情,村长找上门来,要求菲莉丝帮忙打败野生噗尼,为其私房钱而战……
+
+[![](https://wx4.sinaimg.cn/large/80c744e8ly1fc9flgubplj21hc0u012s.jpg)](https://wx4.sinaimg.cn/large/80c744e8ly1fc9flgubplj21hc0u012s.jpg)
+
+装配上前面合成的炎烧。传送至挖掘区入口,地图上标记好任务位置,用炎烧炸死即可。
+
+返回工房,村长允许菲莉丝到外面世界去,但是需要在1年内取得公认炼金术师资格,就这样菲利斯和莉雅尼两人一起上路。这里和父母的重归于好、告别感动死我了。(实际冒险开始时的倒计时是361天,Gust 不会数数系列。)
+
+和以前的作品们一样,教学关卡结束。进入 OP 环节,卧槽,为何不是中文歌。
+
+## 干枯平原带漫步
+
+[![](https://wx1.sinaimg.cn/large/80c744e8ly1fc9gpo67ijj21hc0u0al5.jpg)](https://wx1.sinaimg.cn/large/80c744e8ly1fc9gpo67ijj21hc0u0al5.jpg)
+
+地图
+
+(这张图本质上是给新老玩家初次熟悉大地图准备的,并不是很大,且无主线任务,初期一年期的时候可以直接南下去开主线,沿途可以采集点东西。**但是在造船的剧情里面需要40个金属,一般推荐合成大量炎烧,在右上角的迷宫前面,有三个蓝水晶炸开获取,运气好的话,一次可以炸出7个来。**所以,到时候你就得痛苦地跑图回来炸。)
+
+出门后,苏菲和菲莉丝告别,将工房送给菲莉丝。菲莉丝决定和姐姐大人一起踏上去莱森堡考试的道路。(姐姐大人十分开心,终于没人来和我抢菲莉丝了。)
+
+[![](https://wx1.sinaimg.cn/large/80c744e8ly1fc9flhdnsij21hc0u0tn0.jpg)](https://wx1.sinaimg.cn/large/80c744e8ly1fc9flhdnsij21hc0u0tn0.jpg)
+
+往前走几步,会有篝火教学。建议立刻在不远处的篝火处搭建工房,会有 LP 教学,LP 如果低于0,就会强制休息,低于50,采集、战斗的效果都会降低。此时的工房已经解锁 BGM 更换,同时菲莉丝发想出十字镐和中和剂 · 红。
+
+(LP 的回复主要是在工房休息或者是花时间合成道具恢复,个人倾向于使用后者。既能合成道具提升炼金等级,又能恢复 LP和血量。)
+
+出门前,确保有一个“无事发生”没有装备放在包裹里。出门后,朝小地图右上角的白色 NPC 处走去,会触发战斗教学。与 NPC 对话,开启任务“前辈的委托”,用一个无事发生换取两个爆破用炎烧。
+
+(菲莉丝这作的任务里面需要的物品,有部分是接了任务之后获取的才算,需要注意任务描述是否有类似 [0/1] 的字样。)
+
+告别 NPC 后朝南走就有“野棉花”可以获取,记得采集。
+
+完成任务“前辈的委托”之后的“前辈的激励”更像是物品使用教学……完成任务报告给 NPC,触发任务“前辈的报恩”。
+
+[![](https://wx2.sinaimg.cn/large/80c744e8ly1fc9ye78p04j21hc0u0tn5.jpg)](https://wx2.sinaimg.cn/large/80c744e8ly1fc9ye78p04j21hc0u0tn5.jpg)
+
+在旅行商处往东侧直走,朝小地图上骷髅处的狮鹫走去,触发任务,不知畏惧。可以直接用“爆破用炎烧”打败此处的狮鹫,获得触媒狮鹫的羽毛。
+
+(姐姐只管给自己和妹妹使用道具加血,妹妹用“爆破用炎烧”炸三次即可轻松打过。)
+
+[![](https://wx3.sinaimg.cn/large/80c744e8ly1fc9ye6od2fj21hc0u0qff.jpg)](https://wx3.sinaimg.cn/large/80c744e8ly1fc9ye6od2fj21hc0u0qff.jpg)
+
+继续往东走,在东北处篝火旁边用炎烧炸蓝色水晶获取金属类素材(建议进出工房炸5次,后面主线任务需要),同时完成任务“前辈的报恩”。(地点参考本页的完整地图)
+
+(这里虽然推荐用爆破用炎烧,但是普通炎烧也是可以的。所以爆破用炎烧还是拿去打怪好,目前很难合成出这种伤害的炎烧,当然后期另论。)
+
+回来报告任务后,继续往南走,会看到绿洲提示你采集三个水,还有“荒野之绿”,提示你采集三种颜色的花,基本是顺着大路一边走一边做,属于流程任务。
+
+顺着大路走会遇到一个红衣大姐姐,与之对话接受“危险的绿洲”,打三只沙漠龟,基本平 A 即可,无需浪费炸弹。
+
+继续往南,可以看到绿普尼和舔舔菇,讨伐即可完成初期的讨伐任务,需要注意的是舔舔菇只在白天出没。
+
+(菲莉丝里面部分 NPC、怪物等只在白天或者夜晚出现,有时候你走过去,因为恰好过了时间,就只能眼睁睁看着他在你眼前消失。比如前面说的红衣大姐姐,只在白天出现。)
+
+一边走一边打怪,搭建帐篷几次后,会自动触发剧情,一位不知名的剑士留下坏的钥匙希望菲莉丝用炼金术修复。修复钥匙需要炼金 Lv 10,后面等级达到修复钥匙后,该 NPC 会自动上门并想加入队伍。即可在酒馆邀请组队,该角色攻击一般,主要给力点在于平 A 的时候有机会触发两次攻击,还有给全队加防御的技能。还有,肉盾效果不错,建议用他挡伤害。
+
+继续南下,会遇到第三个 NPC,与之对话开启任务“苏菲的药秘密”,给他一个“无事发生”完成。(得了便宜还在那哔哔你的药不如苏菲。)
+
+## 广茂的法维丘陵
+
+[![](https://wx3.sinaimg.cn/large/80c744e8ly1fc9gpoidgcj21hc0u07fd.jpg)](https://wx3.sinaimg.cn/large/80c744e8ly1fc9gpoidgcj21hc0u07fd.jpg)
+
+地图(岩中隧道是一条每次通过都需要炸开的近道,推荐从下面走)
+
+从干枯平原带出来,到达地图法维丘陵,剧情后解锁世界地图。本图正中的村落可以获取到菲莉丝的第一份推荐书。
+
+[![](https://wx4.sinaimg.cn/large/80c744e8ly1fc9npfecq9j21hc0u04ct.jpg)](https://wx4.sinaimg.cn/large/80c744e8ly1fc9npfecq9j21hc0u04ct.jpg)
+
+往南走,遇到冒险者,与之对话获取任务“干草多得很”,交付三个红麦面包,获取简单的干草做法。
+
+[![](https://wx3.sinaimg.cn/large/80c744e8ly1fc9npfs25qj21hc0u0gz2.jpg)](https://wx3.sinaimg.cn/large/80c744e8ly1fc9npfs25qj21hc0u0gz2.jpg)
+
+采集大哥哥旁这种图示的作物,获取红麦(这里任务需要,至少采集4个),稍后回到工房后即可解锁红麦面包。
+
+[![](https://wx4.sinaimg.cn/large/80c744e8ly1fc9npg6fh3j21hc0u04ee.jpg)](https://wx4.sinaimg.cn/large/80c744e8ly1fc9npg6fh3j21hc0u04ee.jpg)
+
+红麦面包的另一个合成必要材料是蜂蜜,通过击打大哥哥左侧的苹果树获取蜂巢来合成。(鄙人一周目的时候,为了找蜂巢可是几乎跑遍全图,采集地上的黄花,因为它会随机出蜂巢。没想到100%出的地点藏在这。)
+
+[![](https://wx2.sinaimg.cn/large/80c744e8ly1fc9npgk8v7j21hc0u012l.jpg)](https://wx2.sinaimg.cn/large/80c744e8ly1fc9npgk8v7j21hc0u012l.jpg)
+
+屋后可以采集到核桃或者海胆。
+
+[![](https://wx1.sinaimg.cn/large/80c744e8ly1fc9nph58htj21hc0u0dqk.jpg)](https://wx1.sinaimg.cn/large/80c744e8ly1fc9nph58htj21hc0u0dqk.jpg)
+
+大哥哥右侧的树敲打可以获取海胆或者核桃。
+
+此时的采集足够合成红麦面包,在篝火内合成即可。如果此时你的炼金等级不够,可以先合成蜂蜜、麦粉等,将等级刷到 Lv 8。交付完红麦面包往南走,走到桥处,触发剧情,介绍天气系统。
+
+这个时候你会遇到一个移动旅行商,小地图上为蓝点,本作小地图上的蓝点均为商人。如果你钱不少的话,可以从他这里购买到德娜的木材(后面剧情需要,十字镐的合成也需要。)不过,即使不购买,也可以在地图右侧的小河边捡到。
+
+沿着大路一边打怪一边采集,来到村落缅亨。自动触发生剧情,遇到天才炼金术师伊尔梅莉亚,后期菲莉丝的好姬友就这么相遇了……
+
+[![](https://wx4.sinaimg.cn/large/80c744e8ly1fc9npho17aj21hc0u0qj8.jpg)](https://wx4.sinaimg.cn/large/80c744e8ly1fc9npho17aj21hc0u0qj8.jpg)
+
+剧情结束后不要急着移动,先和图中右侧的老太太对话,询问公认的炼金术师情报。我特么在这个地方卡了5天(游戏时间),直到后面查找日文攻略。
+
+[![](https://wx1.sinaimg.cn/large/80c744e8ly1fc9ye2yrqxj21hc0u04ey.jpg)](https://wx1.sinaimg.cn/large/80c744e8ly1fc9ye2yrqxj21hc0u04ey.jpg)
+
+与老太太对话完毕之后直接向东走,过了桥,左手边的第一栋房子就是迪翁的工作室。(本作各个炼金术师们的房子从外观上看,辨识度还是蛮高的。除了最后一个图,雪山里面的村庄的工房之外,其他的都是门口一个黑板的那种)
+
+需要注意的是,去见迪翁需要在白天,也就是6:00 \~ 18:00。这个时候地图的传送已经包含篝火,善用篝火+地标的+NPC 的传送能节省时间,避免黑夜无法交任务。
+
+进入工房,迪翁要去忙着修理风车,将两人撇在一边,于是两人决定跟上去看看。(记得善用小地图标记任务,能标记的我就尽量不截图标明位置了。)
+
+两人看见修好风车的迪翁,向其说明来意,迪翁欣然同意,但是需要先考察菲莉丝的炼金水平。这时遇到寻求帮助的村民,迪翁无法抽身,菲莉丝决定帮助迪翁来解决村民的烦恼。(真是好孩子啊,姐姐我喜欢。)
+
+[![](https://wx1.sinaimg.cn/large/80c744e8ly1fc9ye3bb1mj21hc0u04cm.jpg)](https://wx1.sinaimg.cn/large/80c744e8ly1fc9ye3bb1mj21hc0u04cm.jpg)
+
+与修好的风车旁边的杀马特大叔对话,开启“逃走的牛牛”任务,牛牛需要美味的干草才会跑回来。所以前面任务获得的干草发想派上了用场。(该杀马特大叔,只出现在白天。)
+
+(本攻略未标注白天的任务,基本是不限时间。)
+
+[![](https://wx2.sinaimg.cn/large/80c744e8ly1fc9ye3ocw1j21hc0u0dq3.jpg)](https://wx2.sinaimg.cn/large/80c744e8ly1fc9ye3ocw1j21hc0u0dq3.jpg)
+
+[![](https://wx4.sinaimg.cn/large/80c744e8ly1fc9ye46xvcj21hc0u0dx1.jpg)](https://wx4.sinaimg.cn/large/80c744e8ly1fc9ye46xvcj21hc0u0dx1.jpg)
+
+在旁边的工房合成干草,一路向西边走,在牧场入口处会看到截图所示的发光处,将干草放置于此即可,贪吃的牛牛就会跑回来吃草。(PS,截图里面的小女孩,与之对话,会开启小任务,一年期之后再来解决。)
+
+[![](https://wx4.sinaimg.cn/large/80c744e8ly1fc9ye4qfgjj21hc0u0tny.jpg)](https://wx4.sinaimg.cn/large/80c744e8ly1fc9ye4qfgjj21hc0u0tny.jpg)
+
+交了任务后,过桥往东北方向去帮大妈妈收集水果,可以顺路看到提亚娜,与之对话,获得艾森磺。
+
+与大妈妈(她只在白天出现)对话完之后从南方绕一个圈,即可看见第一、第二果园,开启剧情后即可收集,记得和前面的蜂巢一样,是敲击苹果树,不是捡地上的。(我收集了两天后觉得不大对,才发现……)
+
+(交任务物品技巧:先按 「△」 选择品质排序,然后从后往前选,按住 「O」 不要松开,然后按住 「右方向键」 不要松开,会自动选好。)
+
+完成任务后,记得在白天去找迪翁报告。结果还没说几句话,就有人跑来说,刚才修好的风车又出了故障。菲莉丝跑去凑合闹,被迪翁拜托制作风车零件,然而,却没给菲莉丝制作方法。
+
+[![](https://wx3.sinaimg.cn/large/80c744e8ly1fc9ye577foj21hc0u07gm.jpg)](https://wx3.sinaimg.cn/large/80c744e8ly1fc9ye577foj21hc0u07gm.jpg)
+
+迪翁的炼金工房南边的房子外侧,有一位白天黑夜都干活的“不知疲倦男”,过了桥右手边就是。与之对话,提示去工房里找找笔记。
+
+[![](https://wx3.sinaimg.cn/large/80c744e8ly1fc9ye5t1acj21hc0u014g.jpg)](https://wx3.sinaimg.cn/large/80c744e8ly1fc9ye5t1acj21hc0u014g.jpg)
+
+进入工房,在炼金釜正后方问号提示出获得配方。
+
+[![](https://wx4.sinaimg.cn/large/80c744e8ly1fc9ye69nvgj21hc0u0wr3.jpg)](https://wx4.sinaimg.cn/large/80c744e8ly1fc9ye69nvgj21hc0u0wr3.jpg)
+
+游星齿轮合成需要德娜的木材、金属类素材、粘土类素材。德娜的木材可以直接在“城中的篝火”东侧的旅行商处购买获得。
+
+[![](https://wx4.sinaimg.cn/large/80c744e8ly1fc9ze1yd3xj21hc0u014u.jpg)](https://wx4.sinaimg.cn/large/80c744e8ly1fc9ze1yd3xj21hc0u014u.jpg)
+
+如果你和我一样舍不得花钱,请继续沿大路往东走,走到小河边往北走,看到一座木桥,下了桥往北走,即可在河边打碎树干获得。(人穷志不穷)
+
+合成完游星齿轮,去迪翁的工房报告。(需要在白天)然后去坏了的风车处于迪翁对话,交付材料后获得第一封推荐书。
+
+去下一张图的方式在本页最初处已经说明,像我这种舍不得炸弹的穷屌丝自然是选择绕远路。从刚才修理风车处的大路往南走。一边采集一边打怪,到了尽头过桥后一直朝东方走即可到达旅人的杂木林,期间会看到一个篝火,下个图起点到篝火的距离比较大,建议补充满 LP。
+
+本图到此结束。
+
+**PS**
+
+[![](https://wx2.sinaimg.cn/large/80c744e8ly1fc9ze2av13j21hc0u0480.jpg)](https://wx2.sinaimg.cn/large/80c744e8ly1fc9ze2av13j21hc0u0480.jpg)
+
+1、理论上本图菲莉丝的炼金 Lv 与素材等足够修复“怪人”的钥匙,合成后触发剧情,认识队友雷比,菲莉丝的第一个队友。
+
+[![](https://wx2.sinaimg.cn/large/80c744e8ly1fc9ze2oscej21hc0u0woy.jpg)](https://wx2.sinaimg.cn/large/80c744e8ly1fc9ze2oscej21hc0u0woy.jpg)
+
+2、在小镇的回转牛厂里,可以邀请雷比为队友。
+
+[![](https://wx3.sinaimg.cn/large/80c744e8ly1fca4m2f3unj21hc0u0arj.jpg)](https://wx3.sinaimg.cn/large/80c744e8ly1fca4m2f3unj21hc0u0arj.jpg)
+
+3、理论上本图菲莉丝的炼金 Lv 与素材足够合成**十字镐**,记得合成,便于采集。合成之后,记得在主菜单的“战斗装备”里选择菲莉丝,在探索一栏内装备。装备之后可以按 「左方向键」、「右方向键」 来选择十字镐,切记切记。
+
+4、理论上本图菲莉丝的炼金 Lv 与素材足够合成**探索用煤油灯**,菲莉丝装备之后无需选择,在洞穴里面自动生效。(虽然我觉得这个的用处不是很大。)
+
+## 旅人的杂木林
+
+[![](https://wx2.sinaimg.cn/large/80c744e8ly1fc9gpox91dj21hc0u0k22.jpg)](https://wx2.sinaimg.cn/large/80c744e8ly1fc9gpox91dj21hc0u0k22.jpg)
+
+还算比较完整的地图
+
+(此图很多位置是水路,需要一年期之后合成扫把才能通行。参考下面的世界地图后会发现,此图比较复杂,会有五条对外通道,呈五角星分布。一年期我们要走左下角的出口去南方原野,目的是正好顺着去生命之森。)
+
+[![](https://wx3.sinaimg.cn/large/80c744e8ly1fca1mg1xuej21hc0u0qkt.jpg)](https://wx3.sinaimg.cn/large/80c744e8ly1fca1mg1xuej21hc0u0qkt.jpg)
+
+世界地图
+
+(**旅人的杂木林**北接**宁静之森**,西接**法维丘陵**,东接**郊区的小道**,南部与**南方原野**和**白雾之森**接壤,是十分重要的交通要道。
+
+**宁静之森**主要是支线剧情图,整个地图和蚊香一样,物产也不是很丰富,一年期不建议在此图浪费时间。
+
+**生命之森**是重要的采集地图,此图的怪物也不算太强,采集的材料后期均有大用,比如金丝,比如德娜的木材。
+
+**白雾之森**内可以获得第二封推荐书,第一件时装,建议顺着**生命之森**去。
+
+**郊区的小道毫**无任何探索价值,只为三岔路。)
+
+进图后先沿大路朝东方前行,到达第一个篝火处,与篝火旁的老妇人,交付一个海胆蛋即可。
+
+篝火处顺着大路往东南方前行,自动触发剧情,与见识院院长“安涅莉斯”初遇。
+
+继续往南走,过了桥之后略往西南处前行,会自动触发任务美味的蜂蜜,放置五朵 Hana(花)结束。
+
+[![](https://wx2.sinaimg.cn/large/80c744e8ly1fcb54apn7nj21hc0u0dpt.jpg)](https://wx2.sinaimg.cn/large/80c744e8ly1fcb54apn7nj21hc0u0dpt.jpg)
+
+(黄金树之叶的采集点,切记一定要过来。)
+
+继续往南走,见到第二个篝火。建议在此修整之后,一路往西,到达出口附近时,我们可以往北走,会遇见第三个篝火,然后继续往北,用十字镐打碎拦路石头,在此采集黄金树之叶,记得采集4个以上,后面剧情需要。
+
+本图结束
+
+**吐槽:**
+
+本图场景各种掉帧,场景加载慢,Gust 药丸。
+
+## 危险的南方原野
+
+[![](https://wx2.sinaimg.cn/large/80c744e8ly1fca1mgg305j21hc0u013x.jpg)](https://wx2.sinaimg.cn/large/80c744e8ly1fca1mgg305j21hc0u013x.jpg)
+
+(如标题所属,南方原野是一张比较危险的地图,也没啥物产。一年期没有飞天扫帚,很多地方都到达不了,左下角的地方目测是水下剧情?)
+
+(这张图和前面那张图一样,都属于过渡图,加上怪物普遍比较硬,刚不过去。建议一年期后再来慢慢磨。我们这里就直接朝着右下角的生命之森前进即可。整张图里面的噗尼为比较容易打的怪,建议有多少刷多少,升级神怪。)
+
+首先往西南方向前行,到达第一个篝火,一路上可以顺便虐虐可爱的噗尼们。(感觉这个已经和史莱姆没啥区别了,其次为何中文怪物名和海王星里面的那么像)
+
+[![](https://wx3.sinaimg.cn/large/80c744e8ly1fca69rg0t3j21hc0u0apg.jpg)](https://wx3.sinaimg.cn/large/80c744e8ly1fca69rg0t3j21hc0u0apg.jpg)
+
+篝火旁的小男孩(仅在白天出现),与之对话开启任务“如同树一般的矿石”,需要交付一个漆黑倒木石。
+
+[![](https://wx2.sinaimg.cn/large/80c744e8ly1fca69sg1g1j21hc0u0dv4.jpg)](https://wx2.sinaimg.cn/large/80c744e8ly1fca69sg1g1j21hc0u0dv4.jpg)
+
+漆黒倒木石,采集处稍微有点远,在篝火的正南方有一个小湖泊,地上有破树干,打碎即可获得。(此物在白雾之森的产量比较可观)
+
+[![](https://wx1.sinaimg.cn/large/80c744e8ly1fca69ryabyj21hc0u0nby.jpg)](https://wx1.sinaimg.cn/large/80c744e8ly1fca69ryabyj21hc0u0nby.jpg)
+
+小屋西面的动物遗骸采集后会获得“动物皮革”,结合柔皮液可以用于合成背包,方便我们多采集。后面水潭边比较多,但是怪物都比较强,打不过……
+
+继续往南方走去,一路炸弹开道,顺便欺负欺负可爱的噗尼们。路上会遇到很多狮鹫,建议绕开它们。到达观景点大湿地之后,转而向东南方向跑,即可找到出口到达生命之森。
+
+[![](https://wx3.sinaimg.cn/large/80c744e8ly1fca69t4do2j21hc0u0gvr.jpg)](https://wx3.sinaimg.cn/large/80c744e8ly1fca69t4do2j21hc0u0gvr.jpg)
+
+行走路径如图所示,建议不要走冤枉路,不要被狮鹫欺负惨了。
+
+本图结束
+
+## 富饶的生命之森
+
+[![](https://wx3.sinaimg.cn/large/80c744e8ly1fca1mgtp8vj21hc0u0tja.jpg)](https://wx3.sinaimg.cn/large/80c744e8ly1fca1mgtp8vj21hc0u0tja.jpg)
+
+(如前面所述,此图物产太丰盛了,一年期,我们水平走至最右方完成必要的收集和剧情即可)
+
+第一次进此图会触发剧情,菲莉丝遇见前作男生奥斯卡,剧情结束后奥斯卡可以加入队伍。
+
+(卧槽,奥斯卡你怎么变帅了,果然是一瘦遮百丑。摸摸自己的小肚子)
+
+[![](https://wx2.sinaimg.cn/large/80c744e8ly1fca9x34yarj21hc0u07h5.jpg)](https://wx2.sinaimg.cn/large/80c744e8ly1fca9x34yarj21hc0u07h5.jpg)
+
+(Tips:后面造船时需要大量木头,这里尽可能多收集一点,用十字镐砸木头比较轻松。其次,红色类似食人花的植物处收集可以获得金丝,**记得在造船后的背包里面一定要留有3个**。
+
+地图上蝙蝠初期如果等级不够,比较难缸,建议直接炸弹流,雷比和菲莉丝可以使用炎烧、爆破用炎烧等,姐姐可以用卡夫、海胆袋等。)
+
+[![](https://wx2.sinaimg.cn/large/80c744e8ly1fca9x3gyv3j21hc0u0n74.jpg)](https://wx2.sinaimg.cn/large/80c744e8ly1fca9x3gyv3j21hc0u0n74.jpg)
+
+一路往东走,一边走一边采集,地图上的怪能打就打,刷刷等级。完整探索路径如上,进入白雾之森。
+
+(一路上只有开始有篝火休息,后面全部没有,建议尽量避让怪物,多采集,尤其是在一开始合成扩充背包是王道。)
+
+本图结束
+
+## 古朴的白雾之森
+
+[![](https://wx2.sinaimg.cn/large/80c744e8ly1fca1mh9nr6j21hc0u0k28.jpg)](https://wx2.sinaimg.cn/large/80c744e8ly1fca1mh9nr6j21hc0u0k28.jpg)
+
+地图
+
+(白雾之森是一个不算太复杂的地图,其特色就是大。如果是从旅人的杂木林到这张图,很容易错过这张图的村庄,错过第一件极其有用的时装。所以,这也是为何要从生命之森过来的缘故。)
+
+[![](https://wx2.sinaimg.cn/large/80c744e8ly1fcadg4rj48j21hc0u07hq.jpg)](https://wx2.sinaimg.cn/large/80c744e8ly1fcadg4rj48j21hc0u07hq.jpg)
+
+进入白雾之森,自动触发剧情,遇见一位容易迷路的武士少女多萝瑟尔(胸部比姐姐我大,嫉妒),剧情后可以与之对话,加入队伍伙伴。
+
+沿着地图一路向东边略偏北的方向前行,遇见第一个篝火。(本人走到这的时候 LP 已经不是很够了)休整后顺着大路往东南方向走到达名为德娜的村庄,自动触发剧情。
+
+菲莉丝遇到一位大姐姐,提醒她们先去拜访长老,因为老人家,事多。(建议这里用传送,虽然图不大,但是绕圈圈什么的也很烦,长老老人家晚上不接客,与之相关的任务请在白天。)
+
+果然是很不友善的老人啊,菲莉丝才进去就被骂出来,还索要伴手礼。
+
+[![](https://wx4.sinaimg.cn/large/80c744e8ly1fcadg5jaykj21hc0u07ik.jpg)](https://wx4.sinaimg.cn/large/80c744e8ly1fcadg5jaykj21hc0u07ik.jpg)
+
+剧情结束后,菲莉丝为背对“长老的庵堂”的状态,在其左前方有一位可爱的红发蓝连衣裙的小女孩,与之对话知道长老喜欢吃甜点。
+
+回到工房,我们合成“噗尼果冻”,理论上前面采集的材料足够,比如蜂蜜什么的……
+
+**噗尼果冻**需要素材:
+
+> 1. 蜂蜜:需要用蜂巢调合,蜂巢可以在法维丘陵、白雾森林、生命之森等几个地方采集到。(最容易的采集点前面已经提及)
+> 2. 噗尼噗尼珠:击败噗尼类怪物掉落,照着我的攻略你应该囤积很多了。
+> 3. 水
+> 4. 中和剂
+
+[![](https://wx1.sinaimg.cn/large/80c744e8ly1fcadg5v7e1j21hc0u0dqu.jpg)](https://wx1.sinaimg.cn/large/80c744e8ly1fcadg5v7e1j21hc0u0dqu.jpg)
+
+如果合成之后还是黑夜,有些无聊的话,可以来葛雷纳酒馆,奥斯卡在这里等待我们的队友邀请。新肉盾 Get
+
+(需要注意的是,全世界各地的酒馆里面都有我们解雇或者未雇佣的小伙伴,并不限制特定地点。)
+
+带着噗尼果冻,再次去见长老欧蕾莉,这次果然待遇不同了。(长老:孺子可教也)互相认识之后,长老就让菲莉丝去买甘竹。找村内的行商人(地图蓝色提示点)购买5个甘竹,返回交给长老。
+
+长老继续下发任务,这里需要帮忙收集5个木材,从生命之森一路走过来的各位,应该手上一大把,直接回去交差,即可。如果木材不够,村庄德娜四周散落着很多,拿十字镐敲碎即可采集。
+
+交纳完任务后,长老会问,要不要继续帮我做事。当然要啊,我还等着你送我你的衣服跑图轻松点呢。长老看了看菲莉丝,这么水灵的小姑娘,心肠不错,就是太瘦弱了。不行,炼金术师怎么能这么羸弱,去给我打怪锻炼去……
+
+(这里一定要用地图标记任务,我初期不知道标记这个技能,找了6天吧,后面还是看 Y2B 视频攻略。)
+
+[![](https://wx3.sinaimg.cn/large/80c744e8ly1fcadg6gzrnj21hc0u0tlv.jpg)](https://wx3.sinaimg.cn/large/80c744e8ly1fcadg6gzrnj21hc0u0tlv.jpg)
+
+一边采集,一边打怪到达任务指示地点,这里直接四人平 A 即可。(这怪物就是战斗力只有5的渣渣。)
+
+(如果此时还是黑夜,建议做一个采蘑菇的小女孩,捡些柴火。)
+
+熬到天亮,传送回去和长老欧蕾莉对话,长老认可菲莉丝,并在村正中的大树下给出了最后的任务,需要菲莉丝合成“特制的湿布药”。
+
+**特制的湿布药**需要素材:
+
+> 1. 布类素材
+> 2. 药材
+> 3. 长颈通草:可以在白雾森林,草类采集点采集获得。建议直接在商店购入,城镇篝火旁边的旅行商处可以买到。
+> 4. 灌木莓:可以在白雾森林,采集灌木丛获得采集点见下面的截图。PS,理论上这个在法维丘陵的采集路途中能获取到。**(お姉ちゃんとして頑張るね)**
+
+[![](https://wx3.sinaimg.cn/large/80c744e8ly1fcadg6vslrj21hc0u0an0.jpg)](https://wx3.sinaimg.cn/large/80c744e8ly1fcadg6vslrj21hc0u0an0.jpg)
+
+传送至郊外的篝火,往西北方前行,到达森林中央的篝火。其西边的灌木丛为灌木莓的采集点,不是100%出,好在篝火就在旁边,进出工房慢慢刷。我大概刷了3次
+
+合成完毕之后,交给欧蕾莉长老,获取第二封推荐书。然而,这还没有结束。
+
+此时我们传送回城镇的篝火,进入工房,随便合成一个道具出来。(记住,出来的时候要是白天。不是的话,睡到白天。)
+
+出来后会自动触发剧情,姐姐发现菲莉丝的衣服破了,菲莉丝抱怨,衣服这么容易破。路过的长老看见了:“你这丫头,年纪轻轻的贪图好看穿得这么清凉,老了肯定要‘受罪’。干脆,我把我做姑娘时候的衣服送给你,年轻人别冻着。”
+
+[![](https://wx1.sinaimg.cn/large/80c744e8ly1fcadg77twuj21hc0u0gss.jpg)](https://wx1.sinaimg.cn/large/80c744e8ly1fcadg77twuj21hc0u0gss.jpg)
+
+剧情后解锁服装系统,之前的服装DLC此时可以用了。
+
+(本剧情解锁的衣服特别适合跑图,虽然保守了点。)
+
+[![](https://wx4.sinaimg.cn/large/80c744e8ly1fcadt2d6ssj21hc0u0k65.jpg)](https://wx4.sinaimg.cn/large/80c744e8ly1fcadt2d6ssj21hc0u0k65.jpg)
+
+与篝火旁的旅行商对话,解锁任务古老记忆,然后在地图上标识,朝着那个方向离开白雾森林去静寂的迷宫探险吧!记得路上多捡柴火哦!
+
+本图结束
+
+到达静寂的迷宫之后,会自动触发剧情。在这里,菲莉丝结识了新的小伙伴——对姐姐见色起意的卡鲁德。此小伙伴在佛鲁斯海姆的酒馆内可以邀请,我觉得其没啥用。
+
+静寂的迷宫一年期可以不探索,直接朝北走,就是出口,采集的必要性不是很大。这样,我们到达郊区的小道,顺路往东到达下一主城佛鲁斯海姆。
+
+(郊区的小道上可以采集到白冷石,如果需要,可以备一点。)
+
+**编后记:**
+
+[![](https://wx2.sinaimg.cn/large/80c744e8ly1fcadg55aaqj21hc0u0h1h.jpg)](https://wx2.sinaimg.cn/large/80c744e8ly1fcadg55aaqj21hc0u0h1h.jpg)
+
+年轻人,你懂什么,不知道绵软少女才是最可爱的么?尤其是略带肉感的感觉,大姐姐我特别喜欢抱个这样的丫头在怀里,捏啊捏。
+
+## 佛鲁斯海姆
+
+[![](https://wx3.sinaimg.cn/large/80c744e8ly1fca8qggcylj21hc0u0gwi.jpg)](https://wx3.sinaimg.cn/large/80c744e8ly1fca8qggcylj21hc0u0gwi.jpg)
+
+城市地图
+
+(这个城市的地图还是槽点满满的,最右侧的传送点距离大门还是很远,就算一年期之后有飞天扫帚,这里你也只能老老实实走。蛮不好的设计,如果见识院能挪靠右一点就好了。)
+
+进入佛鲁斯海姆后自动触发剧情,菲莉丝遇见怒气冲冲的伊尔梅莉亚,对引发其愤怒的水手十分好奇。朝东走过桥,自动触发剧情,见到弱鸡(罗吉)桑,大哥哥一如既往地帅气,就是没法带出去一起打怪。与罗吉桑对话,雷电磺没有的话,可以稍微买几个。
+
+沿途的酒馆内有一位老者武士安谷利夫,需要给他5000,才能加入同伴,不过实力“很强”。(感觉和奥斯卡差不多)有钱的话,带着也不错。当然此时你的钱不够也不用怕,稍后会赚够的。
+
+从罗吉那出来后继续朝东走,到达水池处触发剧情,遇见水手,告知无法继续旅程,菲莉丝决定去和伊尔梅莉亚商量对策。
+
+传送至篝火处,然后继续往西走,过两座桥就是度假村,伊尔梅莉亚在里面。两人决定出去打探消息,探明为何船舶停止航运。
+
+出门后传送至锻冶屋,与罗吉桑对话,果然没什么卵用。
+
+[![](https://wx4.sinaimg.cn/large/80c744e8ly1fcakhra9h8j21hc0u07dt.jpg)](https://wx4.sinaimg.cn/large/80c744e8ly1fcakhra9h8j21hc0u07dt.jpg)
+
+走到喷水池处,自动触发剧情,如果是夜晚的话,请磨时间到天亮即可。本作的任务基本在白天,且部分需要隔天才能触发,建议善用原地踏步磨时间。
+
+(你这是活生生地把一对 CP 拆散了啊。对了,梅亚也好萌,祖国欠我一个这样的妹妹。)
+
+梅亚告诉菲莉丝,她知道事情的真相,但是要去她的店里买东西才能告知。
+
+这里的地形极其不讨喜,最优雅的跑图法是从左侧下桥,一直贴着最左侧跑,外面绕一个圈子即可到达。
+
+(到达后可能是晚上,但是这里可以直接进入“梅亚的店”。当然鉴于本图很小,可以完全探索,解锁奖杯成就。)
+
+与梅亚对话,购买一样东西。这里你可以选择购买两个鱼介类素材,比如螺贝,便宜且后面任务需要。当然你也可以随便买,比如朴实的甜食大全这种我就很想要。(螺贝可以在城中通过击碎瓦罐获取。)
+
+退出购买页面,触发剧情,得知海上出现了牛逼的龙卷风,梅亚得意洋洋地向菲莉丝介绍她的情报来源。我们前往莲的炼金工房,进入后发生剧情。(这里只能白天去)
+
+[![](https://wx3.sinaimg.cn/large/80c744e8ly1fcakhrl67sj21hc0u0qan.jpg)](https://wx3.sinaimg.cn/large/80c744e8ly1fcakhrl67sj21hc0u0qan.jpg)
+
+(京子的既视感)
+
+剧情结束后,传送回旅店,和伊尔各自决定了想要做的事情,菲莉丝准备造一艘能抗住龙卷风的大船。
+
+首先出门,拜访罗吉桑,得知其需要金属块。如果之前的旅途中合成过金属块,这里可以直接交付,或者回工房合成。
+
+交付完毕之后往南走,在水池边触发剧情,帮助梅亚合成美味的鱼饵。(梅亚仅白天出现在此处)
+
+继续往南,过了桥触发剧情,遇见前面见到的安涅莉斯,这里交付完见闻。可以赚一大笔钱,理论上足够雇佣安谷利夫。(见闻院晚上不开门)
+
+出门继续往东走到尽头,进入舟歌大道,自动触发剧情,凯伊需要10个木材来修船。继续对话,交付我在前面两张图里面总提示你们注意收集的木材。触发剧情,知道船最需要坚固的地方为龙骨。
+
+[![](https://wx2.sinaimg.cn/large/80c744e8ly1fcakhrzevbj21hc0u0qeq.jpg)](https://wx2.sinaimg.cn/large/80c744e8ly1fcakhrzevbj21hc0u0qeq.jpg)
+
+蛋疼地往东跑图至最东侧,解锁观光点便于下次传送。观光点处自动触发剧情,姊妹两个对于龙卷风规模的惊叹。观光点下方的宝箱还请务必打开,获得一堆鱼介类素材。(这个本地化我给差评,为毛要叫鱼介,这是日本人对于鱼类和贝类的统称说法。)
+
+一路向西慢悠悠跑回去,传送回篝火,进入后触发剧情任务“想到了好主意 2”。稍后出去再说,这里先着手合成任务道具“感觉很美味的钓饵”。
+
+**感觉很美味的钓饵**需要素材:
+
+> 1. 麦粉:由红麦调合而成。
+> 2. 鱼介类:前面再三提示你收集了。
+> 3. 动物类材料:生命之森的蜘蛛丝、金丝都可以算。
+
+调和完成之后,确保时间在白天,最好12点前吧。先传送和罗吉桑对话,获得灵感。出门往水池处跑去,将鱼饵交付给在旁边钓鱼的梅亚。此时时间如果足够(18点前),会在水池旁看到爱斯卡,跑过去自动触发剧情。
+
+(唉,多好的一对 CP。)
+
+[![](https://wx2.sinaimg.cn/large/80c744e8ly1fcakhscgcjj21hc0u0dps.jpg)](https://wx2.sinaimg.cn/large/80c744e8ly1fcakhscgcjj21hc0u0dps.jpg)
+
+传送至酒馆,见到为老不尊男“安谷利夫”,可以支付5000克隆雇佣,我选择暂不雇佣(其实是钱不够,完全本图的全部主线加上见闻的收益,应该足够支付5000佣金。如果是第一次晚上去这里的酒馆,还能遇见吟游诗人露易丝,其收购价格及其黑心,千万不要在她那边出售东西。)
+
+[![](https://wx2.sinaimg.cn/large/80c744e8ly1fcakhstq56j21hc0u07jc.jpg)](https://wx2.sinaimg.cn/large/80c744e8ly1fcakhstq56j21hc0u07jc.jpg)
+
+熬到第二天之后,继续去广场水池处,这次需要主动和爱斯卡对话,触发玩耍剧情。剧情结束后菲莉丝决定调和石头饼干与爱斯卡分享。(注意该剧情结束后时间强制到晚上)
+
+**石头饼干**需要素材:
+
+> 1. 海胆:法维丘陵西北角,前面的攻略有提示。
+> 2. 双核坚果:主产地也是法维丘陵,
+> 3. 水类物质:这个基本不缺
+
+(鄙人玩到这里的时候发现,双核坚果不够了,所以跑回法维丘陵采集了一发,而且后面造船需要40个金属,这里推荐顺路跑回干枯平原带东北角用十字镐收集。这里推荐路线从郊区的小道一路向西到旅人的杂木林,再直达法维丘陵。)
+
+[![](https://wx1.sinaimg.cn/large/80c744e8ly1fcakhuewqvj21hc0u0gwu.jpg)](https://wx1.sinaimg.cn/large/80c744e8ly1fcakhuewqvj21hc0u0gwu.jpg)
+
+[![](https://wx4.sinaimg.cn/large/80c744e8ly1fcakhtz7yzj21hc0u04dt.jpg)](https://wx4.sinaimg.cn/large/80c744e8ly1fcakhtz7yzj21hc0u04dt.jpg)
+
+双核坚果的产出地,东南的篝火处的广茂草原上的绿色灌木丛出采集即可获得。
+
+调和完石头饼干,白天(尽量12点前)在喷水池广场与爱斯卡对话,交付任务道具。剧情结束后传送至梅亚的店,与梅亚对话,获得梅亚的想法。
+
+到目前为止主线卡在了爱斯卡处,需要等到隔天清晨,跑到水池处自动触发剧情,得到爱斯卡的“报恩”,解锁最后一个造船零件。
+
+罗吉、爱斯卡、梅亚三者任务完成后,即可去舟歌大道与凯伊商讨,记得直接传送到码头。(我讨厌这个跑图)
+
+在白天前往莲的炼金工房,和莲商讨后发现没有满足需求的炼金釜。菲莉丝回到工作室,得到了苏菲老师的炼金釜配方。
+
+继续在白天前往莲的炼金工房,遇见苏菲老师还有伊尔梅莉亚,大家决定一起帮菲莉丝实现愿望。
+
+(伊尔真是不坦率的孩子啊。)
+
+剧情结束后,菲莉丝回到工房合成造船所需的四个零件:**(这几个的合成完全不需要考虑拼图,太累)**
+
+**龙骨**需要素材:
+
+> 1. 普通合板:需要木材类素材、植物油、德娜木材、永恒之蓝来合成。永恒之蓝在白雾森林木材采集点取得。植物油通过在杂木林采集灌木获得。
+> 2. 木材类素材:前面一直提醒收集的玩意。
+> 3. 金属类素材:前面有提醒。
+
+**强化舵**需要素材:
+
+> 1. 金属块:矿石和燃料合成,选取时记得保留神秘之力、金属类别的材料。
+> 2. 木材类素材
+> 3. 金属类素材
+
+**坚固的帆布**需要素材:
+
+> 1. 布料:使用线材素材、植物类、动物材料调合。
+> 2. 线材:可以在生命之森红色圆形大花采集获得。
+> 3. 植物油:生命之森,木材采集点概率获得。
+> 4. 布类素材:各种合成的布料均算。
+
+**轧制金属板**需要素材:
+
+> 1. 金属块:矿石和燃料合成,选取时记得保留神秘之力、金属类别的材料。
+> 2. 金属类素材
+> 3. 燃料类素材
+> 4. 水类素材:不够的话西边三岔路一堆水
+
+全部合成后,前往莲的工房,剧情后获得超弩级釜,回到工房开启超弩级调和教学。这里需要需要材料:40个金属类素材、30个燃料、10个火药类素材、10个神秘之力素材。唯一比较麻烦的是金属类材料,前面已经说明获取方式。调和选材料时可以 「△」 按照品质排序。**记得金丝也属于燃料,一定要保留三个。**
+
+制作出推进炉后,前往舟歌大道,传送至码头找凯伊对话,随后回工房调和或者是睡觉即可。几天后,凯伊会自动找上门来,船建好了。剧情后,在码头和凯伊对话,选择准备好了。
+
+到岸后伊尔因为害羞跑掉了,菲莉丝上岸走到一半突然想起来可以从莲那里获取推荐信,于是又调头回去了。菲莉丝返回佛鲁斯海姆后,前往莲的工房,与莲对话,开启课题任务,调合青炎烧。
+
+**青炎烧**需要素材:
+
+> 1. 苍刚石:如果不够,建议在喷泉广场附近的女行商人处购买,再跑回去采集好辛苦。
+> 2. 燃料类素材
+> 3. 火药类素材
+> 4. 中和剂类素材:手动合成即可
+
+此时回到工房,会解锁剧情,菲莉丝对于母上大人的思念。合成青炎烧完毕与莲对话,提示出去使用一下。回工房装备青炎烧,期间触发剧情,获得妈妈亲手缝纫的衣服一套。(十分少女心的一套衣服,可惜我已经不是穿这种衣服的年纪了。)
+
+前往最近的“静寂的迷宫”,用青炎烧打怪一下即可回去报告,期间菲莉丝自我决定用于炼金术做啥,(创造和毁灭均可)第三封推荐书 Get。
+
+本图结束,可以直接乘船去吊钟杯平原。
+
+到目前为止,我们已经获得三封推荐书,你可以选择直接去考试,或者获取接下来的两封推荐书,然后再去考试,区别不大。个人推荐前者,因为雪山那边还是有一些必要的采集要素和时装获取的。
+
+(穿雪地时装的菲莉丝比平时更萌了怎么办?)
+
+**PS**
+
+1、理论上本图菲莉丝的炼金 Lv 与素材等足够合成鱼竿,建议无聊耗时间的话,可以合成一发,装备后解锁钓鱼技能。
+
+[![](https://wx4.sinaimg.cn/large/80c744e8ly1fcakht84vcj21hc0u0h03.jpg)](https://wx4.sinaimg.cn/large/80c744e8ly1fcakht84vcj21hc0u0h03.jpg)
+
+2、桥对面的商人处有售卖黄金树之叶,这个物品后期比较需要,虽然价格贵,但是采集起来也很痛苦,如果需要,可以购买。
+
+[![](https://wx3.sinaimg.cn/large/80c744e8ly1fc99y0g8rrj21hc0u0dr0.jpg)](https://wx3.sinaimg.cn/large/80c744e8ly1fc99y0g8rrj21hc0u0dr0.jpg)
+
+3、在本地图游玩过程中,使用几次工房后会出现菲莉丝喊热的剧情。这时,在白天去梅亚的商店,记得 Get 到新时装。(鄙人最喜欢这套。)
+
+## 吊钟杯平原
+
+[![](https://wx3.sinaimg.cn/large/80c744e8ly1fca8qgtgchj21hc0u0qdz.jpg)](https://wx3.sinaimg.cn/large/80c744e8ly1fca8qgtgchj21hc0u0qdz.jpg)
+
+(这张图上的禁区还是蛮多的,一年期速刷的时候要小心。)
+
+[![](https://wx1.sinaimg.cn/large/80c744e8ly1fcb548wlwcj21hc0u07lb.jpg)](https://wx1.sinaimg.cn/large/80c744e8ly1fcb548wlwcj21hc0u07lb.jpg)
+
+(参看世界地图,吊钟杯平原和旅人的杂木林一样算一个枢纽地图,这里我们先南下去废弃平原获取第四封推荐信。)
+
+下船后直接往港口的篝火处走去,自动触发剧情,口嫌体正直的伊尔酱在这里等着菲莉丝,希望和她一起去旅行。
+
+(邀请伊尔之后我的5人队伍,分别是:伊尔酱、奥斯卡、安吉利夫、菲莉丝和姐姐大人)
+
+[![](https://wx1.sinaimg.cn/large/80c744e8ly1fcb548difxj21hc0u0k74.jpg)](https://wx1.sinaimg.cn/large/80c744e8ly1fcb548difxj21hc0u0k74.jpg)
+
+白天在吊钟杯码头处会有一蓝发小女孩,与之对话,交付给其我前面反复提到的金丝线。获得重要道具:龙鳞片。
+
+交付完任务后,一路往东南方走去,便会到达吊钟杯大桥。
+
+[![](https://wx1.sinaimg.cn/large/80c744e8ly1fcb549d7k8j21hc0u0k49.jpg)](https://wx1.sinaimg.cn/large/80c744e8ly1fcb549d7k8j21hc0u0k49.jpg)
+
+(真特么省建模,前作的直接抄过来,随便搞几个人,就这么复用)
+
+与杀马特男对话,开启任务“坏掉的石桥”。桥的修复在任务描述里可以看到,有三种途径:
+
+1. 使用碎裂的石材从旁边的洞窟穿过,到达南面区域,修复石桥。
+2. 调合全能修补剂直接修复石桥。
+3. 暂时不管这个任务,随着时间流逝,石桥会自动被修复。
+
+方法三肯定不行,我们还要推荐信呢,这里我们使用方法二,多快好省。
+
+先沿着大路往东北角进发,到达望雪的篝火,在桥处捡到一封信,开启任务“见闻院的遗失物”。过桥往东前行,到达法塔利亚的山岭,发生剧情,遇到前作最终BOSS双子。继续往南走,到达见闻院本部(那个地名我不认识)
+
+[![](https://wx4.sinaimg.cn/large/80c744e8ly1fcb549ppiaj21hc0u0n6m.jpg)](https://wx4.sinaimg.cn/large/80c744e8ly1fcb549ppiaj21hc0u0n6m.jpg)
+
+往南前往见闻院本部,遇见前作的人偶师弗里兹,这个会有支线奖杯,一年期后来做。与接待员对话,随后要查文献,调查上面截图的位置的书架可发现全能修补剂的配方。(直走右手边第三排书架)
+
+调查完毕后即可想出全能修补剂,在北侧有篝火可以合成,合成需要炼金 Lv 19,等级不够的话刷没合成过的东西升级。
+
+**全能修补剂**需要素材:
+
+> 1. 黄金树之叶:民家旁的商人处可以购买,但只有一个,价格死贵。采集的话有 DLC 那套**“度假悠闲”**的话,建议穿着去旅人的杂木林(西方的洞窟门口)采集,100% 出。(某中文教程告诉我是宁静之森,虽然也有但是我刷了10天没爆出来,看来是欧气不够。[参考链接](https://h1g.jp/firis/index.php?黄金樹の葉)
+> 2. 普通合板:合成道具
+> 3. 黏土类素材
+> 4. 矿石类素材
+
+[![](https://wx1.sinaimg.cn/large/80c744e8ly1fcb54a8vd9j21hc0u0ws3.jpg)](https://wx1.sinaimg.cn/large/80c744e8ly1fcb54a8vd9j21hc0u0ws3.jpg)
+
+(黄金树之叶的购买点)
+
+[![](https://wx1.sinaimg.cn/large/80c744e8ly1fcb54b3433j21hc0u0tj7.jpg)](https://wx1.sinaimg.cn/large/80c744e8ly1fcb54b3433j21hc0u0tj7.jpg)
+
+(黄金树之叶的采集点)
+
+合成后回到断桥处,使用全能修补剂修复断桥,一直向南走,到达废弃平原。
+
+本图结束
+
+## 废弃平原
+
+[![](https://wx3.sinaimg.cn/large/80c744e8ly1fca8qhnhocj21hc0u048v.jpg)](https://wx3.sinaimg.cn/large/80c744e8ly1fca8qhnhocj21hc0u048v.jpg)
+
+(因为比较懒,速刷一年期,只完成右边一半,左边还有一半未解锁,自己探索。)
+
+进入后顺着大路一路往南走到达村庄,自动触发剧情,遇到了颓废的不洗头发男。其本人就是炼金术师,却调戏菲莉丝,要她自己去找。
+
+[![](https://wx4.sinaimg.cn/large/80c744e8ly1fcbbahawl7j21hc0u0gyp.jpg)](https://wx4.sinaimg.cn/large/80c744e8ly1fcbbahawl7j21hc0u0gyp.jpg)
+
+剧情结束后正前方三个黑石头处的蓝衣商人,与之对话。
+
+[![](https://wx4.sinaimg.cn/large/80c744e8ly1fcbbahoh77j21hc0u0tmv.jpg)](https://wx4.sinaimg.cn/large/80c744e8ly1fcbbahoh77j21hc0u0tmv.jpg)
+
+商人北侧,屋前的红衣女子,与之对话。
+
+[![](https://wx2.sinaimg.cn/large/80c744e8ly1fcbbai3glkj21hc0u0nb0.jpg)](https://wx2.sinaimg.cn/large/80c744e8ly1fcbbai3glkj21hc0u0nb0.jpg)
+
+红衣女子东侧,屋前有一位老太太和一位武士,与老太太对话。
+
+对话后触发剧情,提示菲莉丝去尔贝鲁特的工房找找看,工房在地图西北角,很容易找到。
+
+剧情后获得推荐书,菲莉丝离开工房后,触发剧情,菲莉丝觉得似乎哪里不对,这个看起来就不是好人的怪蜀黍一定有什么坏心思,我要回去找他对峙。
+
+返回工房,剧情后开启任务“挽回的机会”,需要获得3颗“噗尼噗尼珠 · 金”,传送荒野道的篝火,刷附近的黑色噗尼即可获得。(这个时候,怪物的等级普遍开始高起来,我是速刷,所以只能靠炸弹流,前面合成的青炎烧这里效果好极了。)
+
+回去交付材料,提示合成一个炎烧。这里注意合成的炎烧品质要在80以上,要不然会被骂回来重做。(我比较懒,选择品质最好的材料合成就是了。)
+
+交付炎烧,下发最后的任务,击败可疑的噗尼。
+
+[![](https://wx1.sinaimg.cn/large/80c744e8ly1fcbbaii4b1j21hc0u0tk4.jpg)](https://wx1.sinaimg.cn/large/80c744e8ly1fcbbaii4b1j21hc0u0tk4.jpg)
+
+前往提示点,击败噗尼后,会出现强敌狮鹫兽,该怪物弱点雷属性,提前准备雷属性炸弹。当然,我是直接青炎烧带走,记得满血带好补血,17级也能轻松过。(注意怪物是在出了村庄后左拐,绕个大圈子处,我右拐了。)
+
+交付完任务后,第四封推荐信 Get。
+
+本图暂时结束
+
+**PS**
+
+[![](https://wx1.sinaimg.cn/large/80c744e8ly1fcbbajh0p9j21hc0u0k1y.jpg)](https://wx1.sinaimg.cn/large/80c744e8ly1fcbbajh0p9j21hc0u0k1y.jpg)
+
+[![](https://wx1.sinaimg.cn/large/80c744e8ly1fcbbaj0dpmj21hc0u0ak0.jpg)](https://wx1.sinaimg.cn/large/80c744e8ly1fcbbaj0dpmj21hc0u0ak0.jpg)
+
+和此位置的大叔对话,即可开启任务“桥的修复”,一年期可以先不做。
+
+## 北奥罗雪原
+
+[![](https://wx4.sinaimg.cn/large/80c744e8ly1fca8qi845bj21hc0u013d.jpg)](https://wx4.sinaimg.cn/large/80c744e8ly1fca8qi845bj21hc0u013d.jpg)
+
+从废弃平原回来,我们回到吊钟杯平原,前往法塔利亚山岭,这次我们前往东北方出口的南奥罗雪原。这张图一年期可以直接无视直接顺着大路往北方走去北奥罗雪原。(其实朝着任务“初次到达雪山”的标记方向走就对了)
+
+[![](https://wx1.sinaimg.cn/large/80c744e8ly1fcbf46703mj21hc0u0k18.jpg)](https://wx1.sinaimg.cn/large/80c744e8ly1fcbf46703mj21hc0u0k18.jpg)
+
+一路上看到很多这样的石头,采集后可以获得重力石,记得在获得雪地时装后采集几个,此时采集比较消耗 LP。
+
+[![](https://wx4.sinaimg.cn/large/80c744e8ly1fcbf46i5u4j21hc0u0ale.jpg)](https://wx4.sinaimg.cn/large/80c744e8ly1fcbf46i5u4j21hc0u0ale.jpg)
+
+记得在路上采集点啪汽啪汽水,后面合成需要。
+
+进入北奥罗雪原,朝着地图东北处的村庄走去,这里可以获得第五份推荐书和最后一件时装。(期间善用篝火恢复体力)
+
+[![](https://wx2.sinaimg.cn/large/80c744e8ly1fcbf46z7xmj21hc0u0k39.jpg)](https://wx2.sinaimg.cn/large/80c744e8ly1fcbf46z7xmj21hc0u0k39.jpg)
+
+剧情后,往前走,自动触发与前方老太太的对话,得知村内有炼金术士奇尔榭。(奇尔榭小姑娘只在白天接客)奇尔榭的炼金工房在小地图上最北面的那个门。与奇尔榭对话,获得课题配方,返回工房剧情后菲莉丝发现完全看不懂(人家才学不到一年的炼金术,就给我这么难的配方),再次前往奇尔榭的工房。
+
+[![](https://wx4.sinaimg.cn/large/80c744e8ly1fcbf47cykhj21hc0u0wp2.jpg)](https://wx4.sinaimg.cn/large/80c744e8ly1fcbf47cykhj21hc0u0wp2.jpg)
+
+与“温泉前的篝火”旁的提亚娜对话,开启支线任务“冲天大树的居民”,一年期之后再去做。
+
+回去与奇尔榭对话后,给了道具提示1,我们回工房合成过反应触媒,前面采集的啪汽啪汽水有用了。(如果炼金等级不够的话刷刷没合成的素材)
+
+**过反应触媒**需要素材:
+
+> 1. 啪汽啪汽水:前面提示你采集了
+> 2. 药品类素材
+> 3. 炸弹类素材
+> 4. 中和剂类素材:合成即可
+
+合成成功后,与奇尔榭对话,给了道具提示2,我们回工房合成无限燃烧棒即可。
+
+**无限燃烧棒**需要素材:
+
+> 1. 过反应触媒
+> 2. 燃料类素材
+> 3. 万灵药类素材:万灵药类素材可以选用炼金粘土,炼金粘土需要通过配方笔记,消费发想点数500点习得,获得发想条件是“采集100次木材类型素材以及制作3次查科尔贴纸”。
+
+合成完毕之后我们发想出冰中燃灯,此时一定不要合成!
+
+奇尔榭对话,之后再调合“冰中燃灯”,素材比较简单,无限燃烧棒、砂类素材、粘土、金属类,合成后前往奇尔榭的工房,与奇尔榭对话完成课题,获得第5份推荐书,我还有203天。
+
+本图暂时结束
+
+**PS**
+
+[![](https://wx1.sinaimg.cn/large/80c744e8ly1fcbf48htx8j21hc0u0tj8.jpg)](https://wx1.sinaimg.cn/large/80c744e8ly1fcbf48htx8j21hc0u0tj8.jpg)
+
+1、这里如果等级不够,建议先去采集一些这种水晶碎片,用于合成核水晶,核水晶合成后,会发想出凝缩核来考试。我为了刷等级,把凝缩核刷到很高的等级……其次野外的小怪血厚但是攻击不高,可以刷等级。
+
+[![](https://wx1.sinaimg.cn/large/80c744e8ly1fcbf47ve6hj21hc0u0dqo.jpg)](https://wx1.sinaimg.cn/large/80c744e8ly1fcbf47ve6hj21hc0u0dqo.jpg)
+
+2、在进出工房几次后,触发剧情,菲莉丝觉得很冷,遇到一位老太太,愿意帮菲莉丝制作衣服,但是布不够,合成5个手织布交付给老太太即可获得。
+
+## 莱森堡考试
+
+[![](https://wx2.sinaimg.cn/large/80c744e8ly1fca8qiumjyj21hc0u0wp6.jpg)](https://wx2.sinaimg.cn/large/80c744e8ly1fca8qiumjyj21hc0u0wp6.jpg)
+
+[![](https://wx4.sinaimg.cn/large/80c744e8ly1fca8qjggu6j21hc0u0n7e.jpg)](https://wx4.sinaimg.cn/large/80c744e8ly1fca8qjggu6j21hc0u0n7e.jpg)
+
+从北奥罗雪原出来,往南奥罗雪原南方走,会有出口,到达蚁巣山道,最右下角为目的地莱森堡。
+
+进入莱森堡,就是最后的考试剧情了,这里需要注意的几点事项。
+
+1. 报名后无法再出去了,如果你这个时候身上的材料不多了,建议先准备好,报名。
+2. 报名后可以继续游戏直到364天,参加考试。也可以直接回工房睡觉,一觉睡到考试当天,这里推荐直接回工房睡觉。(工房自带此选项)
+3. 城里的商人可购买的材料并不多。
+4. 考试前如果心里没底一定要存档,一定要存档,一定要存档。
+
+下面说说考试:
+
+考试总共分为四部分:
+
+第一部分,笔试题,总共有20道选择题。一题2分,满分40分。(题目和选项均为随机)
+
+|部分题目(没力气补全)|答案|
+|---|----|
+|请由下列4者中,选出属于【效果】的东西|麻痹|
+|请由下列4者中,选出适合炼金术士工作场所的地点|工房|
+|请由下列中选出分类为魔物者|岛鱼|
+|请由下列中选出适合作为【小恶魔的恶作剧】材料的东西|可疑液体|
+|请由下列中选出仅以【水底的水】、【蒸馏水】与【地底水】3种材料下去调和的结果|中和剂 · 蓝|
+|请由下列中选出属于【有毒材料】类别的东西|闇夜菇|
+|请由下列中选出属于【食材】类别的东西|海胆|
+|请由下列颜色中,选出【噗尼噗尼珠】实际有的颜色|蓝|
+|请回答欲调和出【天使缎带】时,最多可以使用几种材料|5种|
+
+第二部分,合成题,调合品质最高的道具。第一次我调和了一个100品质以下的,分数是个位数,我调和一个120多的,给了18分,很好奇其计算方式。
+
+第三部分,用道具打噗尼,按照伤害计算分数,有人说是10%伤害为分数。
+
+如果到这里的分数低于50分,会直接触发 Bad End。
+
+如果高于50分,会和伊尔对战,即使输了也没事。
+
+如果高于100分,会和苏菲对战,即使输了也没事。
+
+考试通过后就是各种剧情,没力气打字了……ED 不好听
diff --git a/source/_posts/2017-08-12.md b/source/_posts/2017-08-12.md
new file mode 100644
index 0000000..bf92ec0
--- /dev/null
+++ b/source/_posts/2017-08-12.md
@@ -0,0 +1,39 @@
+---
+title: 8月的雨
+author: 雨帆
+tags:
+ - 杂思
+ - 碎碎念
+categories: 文章
+permalink: rain-in-august
+featureImage: https://cat.yufan.me/cats/41045442_p0.jpg
+date: 2017-08-12 10:52:00
+---
+
+昨日下班,从园区走出来,傍晚的天空乌云密布,伴随着闪电,但却不知道为何,想要走路回家。
+
+大雨如期而遇,湿黏的皮肤在雨中疾跑,一如那个[没带伞的小孩](https://yufan.me/i-am-right-here/)。不知为何,一直想这么痛快地淋一场大雨,只因在这样的雨中,可以哭泣不被人发现。
+
+你知道,就是夏季最特别的天气里,笑着哭。
+
+
+
+每当周末和假期来临时,工作日里想做没时间做的,心中暗记下的那些 To do List 都被抛之脑后。只想窝在家里懒懒地躺着掰着手指一天天地细水流长。有时摆弄着手机,都是在刷新朋友圈,默默暗中关注着那个她的只言片语。然后在最后一天,快要上班时,看完拖欠的全部新番。
+
+窗外是燥动的炎热,吹着凉爽的空调,只觉得身子越来越重,一直向下,陷入更延绵无轮廓的地方……
+
+早上一觉新来,只觉得呼吸之间带着股雨后特有的清凉,窗外还在窸窣地下着小雨,立秋后的北京已经一连下了好几天的雨。窗外小区的草坪绿油油的,带着股碧色的气息拂面而来。
+
+原来扰人的蝉鸣已了无音讯,仅听见水滴打落叶片几枚。
+
+或许,回到很多年以前某个八月的暑假,也是这样连下了几天的雨。偷偷拿出老妈珍爱的油纸伞,溜到外面的院子里捉蝉。想来是听某人说起,捉住了蝉,却捉不住蝉鸣,留不住夏天。那时的我小,只记得,在雨中找到刚蜕了壳的蝉。伏在微湿的树干上,身上薄薄的蝉翼,在雨中发出淡淡的光芒。对于新生生命的喜悦,明媚了我的整个夏天。
+
+现在的我,可能已经没有了那份恬淡。
+
+工作上的压力,一天比一天要大。每天,都要面对着新的需求,新的挑战。程序的世界,只有 if else,对的就是对的,错的就是错的。而工作、交际却往往比你想的复杂。许多时候,即使是对方的不行,或者是错误,也不能妄加指责。因为程序开发,不是一个人的战斗,是一个团队的努力,在自我努力的时候,也要兼顾他人的进步。
+
+下了楼,发现草坪上竟然有些星星点点的浅淡小花。比起旁边被雨打得有些月季,它们只是兀自开放,不刻意讨好,亦不在意。
+
+对于工作,也是这样吧,靡不有初,鲜克有终。
+
+
diff --git a/source/_posts/2017-09-30.md b/source/_posts/2017-09-30.md
new file mode 100644
index 0000000..a19530b
--- /dev/null
+++ b/source/_posts/2017-09-30.md
@@ -0,0 +1,192 @@
+---
+title: Yandex.Metrica 的革命性的数据存储结构
+author: 雨帆
+tags:
+ - 存储
+ - ClickHouse
+categories: 学习
+permalink: evolution-of-data-structures-in-yandexmetrica
+featureImage: https://cat.yufan.me/cats/2017-10-03-metrica-600.png
+date: 2017-09-30 10:52:00
+---
+
+Yandex.Metrica 是世界[第二大](https://w3techs.com/technologies/overview/traffic_analysis/all)的线上分析系统,Metrica 处理来自网站或者应用的数据流,将它解析成可分析的格式。
+
+Metrica 处理分析消息起来游刃有余,我们主要的技术挑战在于如何以最便于使用的格式来存储处理结果。在整个开发过程中,我们前后几次改变了存储方式。从最初的 MyISAM 表,到后面的 LSM 树,最后变成列式存储数据库 [ClickHouse](https://clickhouse.yandex/)。我将在本文中详解为何我们最后选择自己开发了 ClickHouse。
+
+
+
+Yandex.Metrica 从2008年公布至今已经平稳运行9年了,每次我们改变数据存储访问方式都是因为它不够高效。这当中有:数据写入性能不理想的原因;有存储不可靠的原因;有消耗过多计算资源的原因;或者仅仅是它不能按照我们的需求去扩展。
+
+旧的 Yandex.Metrica 网站有超过40多种固定报表类型(例如:访客地域报告);几个内页分析工具(例如:点击图);网站访客(帮助你详细分析单独访客行为)。当然,Yandex.Metrica 还提供单独的报表构造器。
+
+新的 Metrica 和 Appmetrica 系统允许你定制每种报表,而不是以前的“固定”类型查询。你可以增加新的**查询维度**(例如:搜索词条报告中,你可以增加访问页面进一步分析)、**分段**、**比较**(例如:所有的访客数据和旧金山的访客数据比较),改变你的**查询指标集**等。所以,新的系统依赖的数据存储方式和我们之前使用的完全不一样。
+
+## MyISAM
+
+在设计初期,Metrica 被设计为 Yandex.Direct 的分支之一,搜索广告服务。因为 Direct 使用 MySQL 的 MyISAM 引擎,所以 Metrica 开发初期同样沿用了相同的存储。2008 年至 2011 年,MyISAM 引擎被用于存储**“固定”**的分析报表。
+
+请让我以地域报表为例,介绍一下报表的数据结构。一份报表是对特定网站的数据汇总(更具体地说,是一个特定的Metrica计数标识),这代表着主键应该包含计数ID(`CounterID`)。因为用户可以选择任意报告周期,所以按照每个日期对方式存储数据毫无意义。因此,数据按照产生的日期去存储,然后通过查询的时间区间累积计算。综上所述,主键中包含日期。
+
+报告中的数据,要么按照地域维度展示为列表,要么按照国家、地域、城市等维度展示为一棵树。所以,需要在主键中存放地域ID(`RegionID`),这样可以在应用代码中将数据聚合成一棵树,而不是依赖数据库层面的计算。
+
+同时,我们需要计算平均会话周期。这意味着数据表中应该包含**会话总数**和**总的会话时长**。
+
+按照上述需求,数据表的结构应该是: `CounterID`, `Date`, `RegionID -> Visits`, `SumVisitTime`, ... 基于这种结构,我们在 `SELECT` 查询时,应该按照 `WHERE CounterID = AND Date BETWEEN min_date AND max_date` 的条件去查询结果。换言之,主键的范围是命中的。
+
+### 数据在磁盘上如何存储? How is data actually stored on the disk?
+
+一张 MyISAM 引擎表由一个数据文件和一个索引文件组成。如果更新表的时候不删除数据且不改变长度,数据文件将按照插入的顺序存储每一行序列化的数据。索引(包含主键索引)是 B-树,叶子节点存储数据文件的位移。当我们读取一个索引中的范围数据时,首先从索引中查出一组满足查询条件的数据文件位移,然后按照查出来的位移依次去从数据文件中查找出实际的数据。
+
+以索引存储于RAM(MySQL 的键缓存或者是系统页缓存)而数据没有被缓存的实际场景举例。如果使用磁盘,读取数据的时间取决于需要读取的数据量以及需要完成多少次检索操作,检索的次数基于在磁盘上存储的区域数量。
+
+Metrica 事件基本按照它们生成的顺序接收处理,在收集端,数据从不同的计数器随机产生。换言之,数据存储时按照时间是连续的,但是按照生产者是不连续的。当写入至一张 MyISAM 表时,来自不同计数器的数据也是非常随机地存储的。这意味着生成报告的时候,需要几行数据,就可能需要执行同样次数的随机检索。
+
+一块经典的 7200 转的硬盘可以每秒钟执行 100 ~ 200 次的随机读取。一个磁盘矩阵,如果使用得当,可以按照比例地执行更多次随机读取。一块使用7年的 SSD 每秒钟可执行 30000 多次的随机读取,但是我们无法支付将数据存放于 SSD 的硬件成本。在目前的系统中,如果我们在一份报表中需要读取10000行数据,大概需要10秒钟,这是完全无法接受的一个时长。
+
+InnoDB 引擎更适合用于主键范围检索,因为它使用聚集主键(聚集索引?)。简单说,数据基于主键以有序的方式存储。但是 InnoDB 的写入速度慢到无法接受。如果你推荐 TokuDB,请继续阅读。
+
+我们采取了一些措施来让 MyISAM 引擎在主键范围检索时更快。
+
+**表排序** 因为数据需要立即更新,对表只做一次排序是远远不够的,但是每次写入都去做排序也不现实。虽然我们可以定期对旧数据做排序。
+
+**分区** 一张表可以划分成许多小的主键范围,这么做的目的是为了让同一分区的数据存储得更加连续,基于主键范围的检索能更快。此方法可参考在聚集主键的上手动实现。虽然这么做会导致插入速度明显下降,但是通过控制分区的数量,我们可以在插入速度和检索速度中找到可接受的数值。
+
+**按照数据的年龄分割** 单一分区的检索会非常慢,分区多了,插入速度也会变慢。当在这当中取一个中间分区数时,插入和检索速度都不是最快的。对于此问题的解决方案就是将数据分成几个单独的代。举例来说,第一代我们叫做可操作数据,这是数据写入时,分区(按时间)或者不分区的地方。第二代我们叫做归档数据,这是随着数据检索(按照计数ID)进行分区的地方。数据通过脚本从一个代转移到另一个代,但不会特别频繁(例如:一天一次),并能在所有的代上立刻检索。这的确解决了问题,但是也增加了许多复杂性。
+
+上面(还有一些别的未列举)就是 Yandex.Metrica 使用的优化策略。
+
+让我们总结一下这套方案的缺点:
+
+- 无法支撑数据在磁盘上连续存储
+- 在插入时表需要加锁
+- 复制十分慢,副本经常有延迟
+- 硬件故障后的数据一致性不能保证
+- 诸如独立用户数量的聚合查询很难计算和存储
+- 数据压缩很难实现并且不高效
+- 索引很大,并且不能在内存中完全存储
+- 许多计算需要在 `SELECT` 查询之后编程去计算
+- 运维麻烦
+
+![](https://cat.yufan.me/cats/2017-10-03-locality-600.png)
+
+图片:数据在磁盘上的存储区域(艺术渲染)
+
+总而言之,MyISAM 引擎使用起来极不方便。每天的服务器磁盘阵列的负载都是满的(磁头一直在移动),这种情况下,磁盘故障频发。我们在服务器上使用了SAN存储,换言之,我们不得不频繁恢复RAID阵列。有时候,副本的延迟极高导致不得不删除重建,切换至复制主节点极其不便。
+
+尽管 MyISAM 缺点多多,到了 2011 年,我们已经基于它存储了超过 5800 亿的数据。在那之后,所有的数据被转换至 Metrage,因此释放了很多服务器资源。
+
+## Metrage and OLAPServer
+
+2010年后我们开始使用 Metrage 存储固定报表,假设你有下述场景:
+
+- 数据持续以小批次写入数据库
+- 写入流相对比较大(每秒至少几十万行)
+- 检索查询想多较少(每秒大概几千次查询)
+- 所有的检索命中主键范围(每次查询高达100多万行)
+- 每行数据相对较小(未压缩的数据大概100个字节)
+
+数据结构中的 LSM 树十分适合上述的业务需求,且比较常见。
+
+---
+
+A fairly common data structure, LSM Tree, works well for this. This structure consists of a comparatively small group of data "chunks" on the disk, each of which contains data sorted by primary key. New data is initially placed in some type of RAM data structure (MemTable) and then written to the disk in a new, sorted chunk. Periodically a few sorted chunks will be compacted into one larger one in the background. This way a relatively small set of chunks are maintained.
+
+This kind of data structures is used in HBase and Cassandra. Among embedded LSM-Tree data structures, LevelDB and RocksDB are implemented. Subsequently, RocksDB is used in MyRocks, MongoRocks, TiDB, CockroachDB and many others.
+
+![](https://clickhouse.yandex/presentations/misc/lsm-tree-600.png?__SQUARESPACE_CACHEVERSION=1505737759592)
+
+Metrage is also an LSM-Tree. Arbitrary data structures (fixed at compile time) can be used as "rows" in it. Every row is a key, value pair. A key is a structure with comparison operations for equality and inequality. The value is an arbitrary structure with operations to update (to add something) and merge (to aggregate or combine with another value). In short, it's a CRDT.
+
+Both simple structures (integer tuples) and more complex ones (like hash tables for calculating the number of unique visitors or click-map structures) can serve as values. Using the update and merge operations, incremental data aggregation is constantly carried out at the following points:
+
+- during data insertion when forming new batches in RAM
+- during background merges
+- during read requests
+
+Metrage also contains the domain-specific logic we need that's performed during queries. For example, for region reports, the key in the table will contain the ID of the lowest region (city, village) and, if we need a country report, the country data will finish aggregating on the database server side.
+
+Here are the main advantages of this data structure:
+
+- Data is located pretty locally on the hard disk; reading the primary key range goes quickly.
+- Data is compressed in blocks. Because data is stored in an orderly manner, compression works pretty well when fast compression algorithms are used (in 2010 we used QuickLZ, since 2011 - LZ4).
+- Storing data sorted by primary key enables us to use a sparse index. A sparse index is an array of primary key values for each Nth row (N-order of thousands). This index is maximally compact and always fits on the RAM.
+
+Since reading is not performed very often (even though lot of rows are read when it does) the increase in latency due to having many chunks and decompressing the data blocks does not matter. Reading extra rows because of the index sparsity also does not make a difference.
+
+Written chunks of data are not modified. This allows you to read and write without locking - a snapshot of data is taken for reading. Simple and uniform code is used, but we can easily implement all the necessary domain-specific logic.
+
+We had to write Metrage instead of amending an existing solution because there really wasn't one. LevelDB did not exist in 2010 and TokuDB was proprietary at the time.
+
+All systems that implement LSM-Tree were suitable for storing unstructured data and maps from BLOB to BLOB with slight variations. But to adapt this type of system to work with arbitrary CRDT would have taken much longer than to develop Metrage.
+
+Converting data from MySQL to Metrage was rather time consuming: while it only took about a week for the conversion program to work, the main part of it took about two months to work out.
+
+After transferring reports to Metrage, we immediately saw an increase in Metrica interface speed. We've been using Metrage for five years and it has proved to be a reliable solution. During that time, there were only a few minor failures. It's advantages are its simplicity and effectiveness, which made it a far better choice for storing data than MyISAM.
+
+As of 2015 we stored 3.37 trillion rows in Metrage and used 39 \* 2 servers for this. Then we have moved away from storing data in Metrage and deleted most of the tables. The system has its drawbacks; it really only works effectively with fixed reports. Metrage aggregates data and saves aggregated data. But in order to do this, you have to list all the ways in which you want to aggregate data ahead of time. So if we do this in 40 different ways, it means that Metrica will contain 40 types of reports and no more.
+
+To mitigate this we had to keep for a while a separate storage for custom report wizard, called OLAPServer. It is a simple and very limited implementation of a column-oriented database. It supports only one table set in compile time — a session table. Unlike Metrage, data is not updated in real-time, but rather a few times per day. The only data type supported is fixed-length numbers of 1-8 bytes, so it wasn’t suitable for reports with other kinds of data, for example URLs.
+
+## ClickHouse
+
+Using OLAPServer, we developed an understanding of how well column-oriented DBMS's handle ad-hoc analytics tasks with non-aggregated data. If you can retrieve any report from non-aggregated data, then it begs the question of whether data even needs to be aggregated in advance, as we did with Metrage.
+
+![](https://clickhouse.yandex/presentations/misc/column-oriented-600.gif?__SQUARESPACE_CACHEVERSION=1505737812962) database
+
+On the one hand, pre-aggregating data can reduce the volume of data that is used at the moment when the report page is loading. On the other hand, though, aggregated data doesn't solve everything. Here are the reasons why:
+
+- you need to have a list of reports that your users need ahead of time
+- in other words, the user can't put together a custom report
+- when aggregating a lot of keys, the amount of data is not reduced and aggregation is useless
+- when there are a lot of reports, there are too many aggregation options (combinatorial explosion)
+- when aggregating high cardinality keys (for example, URLs) the amount of data does not decrease by much (by less than half)
+- due to this, the amount of data may not be reduced, but actually grow during aggregation
+- users won't view all the reports that we calculate for them (in other words, a lot of the calculations prove useless)
+- it's difficult to maintain logical consistency when storing a large number of different aggregations
+
+As you can see, if nothing is aggregated and we work with non-aggregated data, then it's possible that the volume of computations will even be reduced. But only working with non-aggregated data imposes very high demands on the effectiveness of the system that executes the queries.
+
+So if we aggregate the data in advance, then we should do it constantly (in real time), but asynchronously with respect to user queries. We should really just aggregate the data in real time; a large portion of the report being received should consist of prepared data.
+
+If data is not aggregated in advance, all the work has to be done at the moment the user request it (i.e. while they wait for the report page to load). This means that many billions of rows need to be processed in response to the user's query; the quicker this can be done, the better.
+
+For this you need a good column-oriented DBMS. The market didn’t have any column-oriented DBMS's that would handle internet-analytics tasks on the scale of Runet (the Russian internet) well enough and would not be prohibitively expensive to license.
+
+Recently, as an alternative to commercial column-oriented DBMS's, solutions for efficient ad-hoc analytics of data in distributed computing systems began appearing: Cloudera Impala, Spark SQL, Presto, and Apache Drill. Although such systems can work effectively with queries for internal analytical tasks, it is difficult to imagine them as the backend for the web interface of an analytical system accessible to external users.
+
+At Yandex, we developed and later [opensourced](https://github.com/yandex/ClickHouse/) our own column-oriented DBMS — ClickHouse. Let's review the basic requirements that we had in mind before we proceeded to development.
+
+Ability to work with large datasets. In current Yandex.Metrica for websites, ClickHouse is used to store all data for reports. As of September, 2017, the database is comprised of 25.1 trillion rows. It’s made up of non-aggregated data that is used to retrieve reports in real-time. Every row in the largest table contains over 500 columns.
+
+The system should scale linearly. ClickHouse allows you to increase the size of cluster by adding new servers as needed. For example, Yandex.Metrica's main cluster has increased from 60 to 426 servers in three years. In the aim of fault tolerance, our servers are spread across different data centers. ClickHouse can use all hardware resources to process a single query. This way more than 2 terabyte can be processed per second.
+
+High efficiency. We really focus on our database's high performance. Based on the results of internal tests, ClickHouse processes queries faster than any other system we could acquire. For example, ClickHouse works an average of 2.8-3.4 times faster on web analytics queries than one of top performing commercial column-oriented DBMS (let's call it DBMS-V).
+
+Functionality should be sufficient for Web analytics tools. The database supports the SQL language dialect, subqueries and JOINs (local and distributed). There are numerous SQL extensions: functions for web analytics, arrays and nested data structures, higher-order functions, aggregate functions for approximate calculations using sketching, etc.
+
+ClickHouse was initially developed by the Yandex.Metrica team. Furthermore, we were able to make the system flexible and extensible enough that it can be successfully used for different tasks. Although the database can run on large clusters, it can be installed on single server or even on a virtual machine.
+
+ClickHouse is well equipped for creating all kinds of analytical tools. Just consider: if the system can handle the challenges of Yandex.Metrica, you can be sure that ClickHouse will cope with other tasks with a lot of performance headroom to spare.
+ClickHouse works well as a time series database; at Yandex it is commonly used as the [backend for Graphite](https://github.com/yandex/graphouse/) instead of Ceres/Whisper. This lets us work with more than a trillion metrics on a single server.
+
+ClickHouse is used by analytics for internal tasks. Based on our experience at Yandex, ClickHouse performs at about three orders of magnitude higher than ancient methods of data processing (scripts on MapReduce). But this is not a simple quantitative difference. The fact of the matter is that by having such a high calculation speed, you can afford to employ radically different methods of problem solving.
+
+If an analyst has to make a report and they are competent at their job, they won't just go ahead and construct one report. Rather, they will start by retrieving dozens of other reports to better understand the nature of the data and test various hypotheses. It is often useful to look at data from different angles in order to posit and check new hypotheses, even if you don't have a clear goal.
+
+This is only possible if the data analysis speed allows you to conduct instant research. The faster queries are executed, the more hypotheses you can test. Working with ClickHouse, one even gets the sense that they are able to think faster.
+
+In traditional systems, data is like a dead weight, figuratively speaking. You can manipulate it, but it takes a lot of time and is inconvenient. If your data is in ClickHouse though, it is much more malleable: you can study it in different cross-sections and drill down to the individual rows of data.
+
+After one year of open source, ClickHouse is now used by hundreds of companies worldwide. For instance, [CloudFlare](https://blog.cloudflare.com/how-cloudflare-analyzes-1m-dns-queries-per-second/) is using ClickHouse for analytics of DNS traffic, ingesting about 75 billion events each day. Another example is [Vertamedia](https://www.dropbox.com/s/l0qx4feez3kokd9/Go%20July%20meetup.%20Go%20-%20ClickHouse%20-%20Grafana.pdf?dl=0) (a video SSP platform), which processes 200 billion events each day in ClickHouse with an ingestion rate of about 3 million rows per second.
+
+## Conclusions
+
+Yandex.Metrica has become the second largest web-analytics system in the world. The volume of data that Metrica takes in grew from 200 million events a day in 2009 to more than 25 billion in 2017. In order to provide users with a wide variety of options while still keeping up with the increasing workload, we've had to constantly modify our approach to data storage.
+
+Effective hardware utilization is very important to us. In our experience, when you have a large volume of data, it's better not to worry as much about how well the system scales and instead focus on how effectively each unit of hardware is used: each processor core, disk and SSD, RAM, and network. After all, if your system is already using hundreds of servers, and you have to work ten times more efficiently, it is unlikely that you can just proceed to install thousands of servers, no matter how scalable your system is.
+
+To maximize efficiency, it's important to customize your solution to meet the needs of specific type of workload. There is no data structure that copes well with completely different scenarios. For example, it's clear that key-value databases don't work for analytical queries. The greater the load on the system, the narrower the specialization required. One should not be afraid to use completely different data structures for different tasks.
+
+We were able to set things up so that [Yandex.Metrica](https://metrica.yandex.com/)'s hardware was relatively inexpensive. This has allowed us to offer the service free of charge to even very large sites and mobile apps, even larger than Yandex’s own, while competitors typically start asking for a paid subscription plan.
+
diff --git a/source/_posts/2017-10-18.md b/source/_posts/2017-10-18.md
new file mode 100644
index 0000000..a9d8840
--- /dev/null
+++ b/source/_posts/2017-10-18.md
@@ -0,0 +1,622 @@
+---
+title: OneAPM 工作两年总结
+author: 雨帆
+tags:
+ - OneAPM
+categories: 学习
+permalink: two-years-in-oneapm
+featureImage: https://cat.yufan.me/cats/2016-08-31-51915125_p0.png
+date: 2017-10-18 04:52:00
+---
+
+掐指一算,从 OneAPM 离职也快一个月了,在 OneAPM 工作的种种,仿佛还像是在昨天。细数两年的工作经历,我很庆幸在恰当的时间点和这么一群有激情有活力的人共事。那么,是时候总结一下我在 OneAPM 做的牛(cai)逼(ji)事情了。
+
+
+
+[PPT 下载](https://cat.yufan.me/work/two-years-in-oneapm.pdf)
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide01.jpeg)
+
+大家好,今天由我来分享一下,我在上家公司做的 Ai 和 告警 相关的一些内容。
+
+首先,我先简单介绍一下,今天我要分享的两个项目:
+
+1. Ai 是 OneAPM 服务器端应用性能监控分析程序,它主要是能收集Java、CSharp、Python等偏后端语言的系统的一些指标数据。然后分析出调用 Trace 和完整的调用拓扑图,还有一些其他图表数据的展示。
+2. 告警系统原先作为一个 Ai 系统的子模块,用的是流式计算框架 Flink,后面不能满足对外交付和业务功能需求。我们就重新设计开发了纯粹的CEP计算引擎,依托于此在Ai上构建了新的告警系统,然后服务化拆分成独立的告警系统,并接入了其他类似Ai的业务线。
+
+这次分享,一是我对以前2年工作的整理和思考,二也是和大家交流学习。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide02.jpeg)
+
+对于 Ai,我不属于它的主要研发,我只是在上面剥离开发了现有的告警系统。所以我就讲讲我接触过的架构部分的演进。本身,就功能部分,其实没有东西。
+我在说告警的时候会说的比较细一些。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide03.jpeg)
+
+我是15年年底入职OneAPM,17年9月初离职加入咱们这个团队。这期间Ai伴随着业务的需求,也进行了三次大的技术架构演进。最明显的,就是每次演进中,Ai对应的存储在不断变化。同时,比较巧的是,每次架构变化的同时,我们的数据结构也略有不同,并且学习的国外竞品也不大一样。
+
+说老实话,我们每次改变的步子都迈的略大,这中间也走了不少弯路。很多技术、框架,一开始看十分好,但是却不一定契合我们的需求。项目在变革初期就拆分出SaaS和企业级两套代码,并且各自都有比较多的开发分支,这些东西的维护,也让我们的代码管理一度崩溃。
+
+但是,我这里主要想分享的,就是我们在业务和数据量不断增长的同时的架构设计变化,以及最后如何实现灵活部署,一套代码适配各种环境。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide04.jpeg)
+
+OneAPM 在 2013 年开始涉足 APM 市场,当时在13年做了我们的第一代产品 Si ,它是那种庞大的单体应用,功能也十分单一。
+
+在 2014 年初 OneAPM 基于用户需求和学习国外同类产品 NewRelic 开发了第一版 Ai 3.0。它的架构非常简单,就是一个收集端收集探针的数据写入Kafka,然后落到HBase里,还有一个数据展示端直接查询HBase的数据做展示。
+
+在 2015 年初的时候,企业版开始做架构演进,首先是在存储这块,对于之前用 HBase 的聚合查询部分改用 Druid,对于 Trace 和 Transaction 数据转而使用 MySQL,同时,我们学习国外竞品 dynaTrace 完善了我们的分析模型。
+
+2016 年的时候,我们发现存储是比较大的问题,无论是交付上,还是未来按照数据量扩容上。且 Druid 的部署、查询等都存在一些问题。在SaaS上线Druid版本之后,我们调研各类存储系统结合业务特点选用ClickHouse,并基于它开发了代号为金字塔的查询和存储模块。
+
+2017 年的时候,我们开始梳理各个业务系统、组件,将它们全部拆分,公共组件服务化、Boot化,打通了各个系统。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide05.jpeg)
+
+这是2014年初期的第一次封闭开发后的架构,当时正好大数据Hadoop之类的比较火,所以初期的架构我们完全是基于它来做的。我们的前端应用分为 Data Collector 数据收集端,Data Viewer 数据展示层。探针端走 Nginx 将数据上传至DC来进行分析处理,页面访问通过DV获取各种数据。
+Data Viewer 初期是直接读取 HBase 的,后面进行简化,部分热数据(最近5分钟调用统计),缓存于 Redis。
+
+这里要提一下它和云迹的应用性能分析的区别,我们为了减少HTTP请求量和流量(小公司)探针端做了聚合和压缩,一分钟上传一个数据包。所以DC端变为解包,然后写入Kafka,对于最新的 Trace 数据,我们写入 Redis 用于快速查询生成拓扑图。
+
+Consumer 主要是处理翻译探针的 Metric 数据,将其翻译为具体的监控指标名称,然后写入 HBase。
+
+这套架构部署到 SaaS 之后,我们的市场部就开始推广,当时的日活蛮高,几十万独立 IP。瞬间,我们就遇到了第一个直接问题——HBase 存在写入瓶颈,HBase在大量数据持续写入的场景下,经常OOM,十分痛苦。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide06.jpeg)
+
+我们开始分析问题,首先,写入上,我们拆成了如图所示的三大部分,而不是之前的单一 HBase。
+
+而就OLAP系统而言,数据读写上最大的特点就是写多读少,实时性要求不高。所以,查询中,HBase主要的性能问题是在对于历史某条具体的 Trace 调用指标的查询(也就是 Select One 查询)。我们在系统中引入了 MySQL,Metric 数据开始双写 HBase 和 MySQL。Redis 负责生成最新的调用拓扑,只有一条最新的 Trace 记录,MySQL 存储 Metric 数据,HBase 存储所有的 Trace 和 Metric 数据进行聚合查询。DV 还会将一些热查询结果缓存于 Redis 中。
+
+这个时候的 Consumer 开始负责一定量的计算,会分出多个 Worker 在 Kafka 上进行一些处理,再将数据写入 Kafka,HBase 改为消费 Kafka 的数据。(这么做的目的,就是为了在线上拆分出不同的 Consumer 分机器部署,因为 SaaS 上的数据量,连 Consumer 都开始出现瓶颈。)
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide07.jpeg)
+
+在这个时候,我们引入了 Camel 这个中间件,用它将 Kafka 的操作,MySQL 的操作,还有和 Redis 的部分操作都转为使用 Camel 操作。在我介绍为什么使用 Camel 之前,我想先简单介绍一下它。(下一页PPT)
+
+我们在引入 Camel 的时候,主要考虑几个方面:
+
+第一,屏蔽Kafka这一层。当时SOA还比较流行,我们希望能找到一个类似 ESB 的设计,能将各个模块的数据打通。就比如MQ,它可能是Kafka,也可能是 RabbitMQ,或者是别的东西,但是程序开发人员不需要关心。
+第二,我们希望一定程序上简化部署运维的麻烦,因为所有的 camel 调用 Route 的核心,就是 URL Scheme,部署配置变为生成 URL。而不是一个个变量属性配置。
+第三,camel 自身的集成路由,可以实现比较高的可用性,它有多 Source 可以定义选举,还有 Fallback,可以保证数据尽可能不会丢失。(我们就曾经遇到 Kafka 挂了丢数据的情况,大概丢了3个小时,后面通过配置失败写文件的 camel 策略,数据很大程度上,避免了丢失。)
+
+而且,上面的功能,基本都是写Camel DSL,而无需修改业务代码。核心就是一个词——解耦。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide08.jpeg)
+
+Camel 用官方的话来说,就是基于 Enterprise Integration Patterns 的 Integration Framework。在我看来,Camel 在不同的常见中间件上实现集成,Camel 自身定义好链路调用 DSL(URL Scheme 和 Java、Scala、Spring XML 的实现),还有核心的企业级集成模式的设计思想,组成了 Camel 这个框架。
+
+我们通过定义类似右侧的数据调用路由,将Kafka等各类中间件完全抽象出来,应用程序的逻辑转为,将数据存入Camel Producer,或者从 Camel Router 中注册 Endpoint 获取数据,处理转入另一个数据 Endpoint。(回到前面的架构图)
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide09.jpeg)
+
+当然我们在开发过程中也设计了很多很有意思的小工具,Mock Agent 便是其中之一。
+
+当时我们经常遇到的开发测试问题是,测试不好造数据来进行测试,无法验证某些特定指标的数据,开发无法脱离探针团队单独验证新功能和数据。于是我们决定自己写一套探针数据生成器,定义了一套DSL语言,完整地定义了应用、探针等数据格式,并能自动按照定义规则随机生成指定数据到后端。
+
+测试需要做的事情,就是写出不同的模拟探针模板。第一,简化了测试。第二,将测试用例能代码化传承。避免人员流动的问题。
+
+后面基于它,我们还写了超级有意思的压测工具,用其打数据测试后端。还有自动化测试等。
+
+当然,这也是我们尝试开发的第一个 DSL。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide10.jpeg)
+
+主要是我们无法避免写入热点问题,即使基于 Row Key 进行了写入优化,大数据量的写入也常常把 HBase 搞挂。
+
+最关键的是,持续的 OOM 丢数据,已经给我们的运维带来的太多麻烦,对外的 SLA 也无法保证。(这个时间段你经常听到外面对OneAPM的评价就是数据不准,老是丢数据。)
+
+基于 HBase 的查询时延也越来越高,甚至某种程度上,已经不大能支撑新的数据量。当时最高峰的时候,阿里云机器数量高达 20 台。所以,是时候考虑引入新的数据库了。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide11.jpeg)
+
+这个时候,来自 IBM 研究院的刘麒赟向我们推荐了Druid,并在我们后面的实践中取代了 HBase 作为主要的 Metric 存储。
+
+2015年的时候 Druid 架构主要就是上述这张图,Druid 由4大节点组成, Real-time、Coordinator、Broker、Historical 节点,在设计之初就考虑任何一个节点挂了,不会影响其他节点。
+
+Druid 对于数据的写入方式有两种,一种是实时的,直接写入 Real-time 节点,对应的是那种写多读少的数据,还有一种是批量的直接写入底层数据存储的方式,一般是对应读多写少的数据。这两种方式在 OneAPM 都有涉及,Ai 作为应用性能监控,对应的是海量的探针数据,主要是使用实时写入。Mi 是移动端性能监控,探针上传数据存在时延等问题,所以是在上层做了简单的处理缓冲后,批量写入 Deep Storage。
+
+Real-time 节点主要接受实时产生的数据,例如 Kafka 中的数据。数据会在实时节点的内存中进行缓存处理,构建 memtable,然后定时生成 Segment 写入 Deep Storage。写入 Deep Storage 的数据会在 MySQL 生成 meta 索引。
+
+Deep Storage 一般是 HDFS 或者是 NFS,我们在查询的时候,数据来源于 Deep Storage 或者是 Real-time 节点里面的数据。
+
+协调节点主要是用于将 Segment 数据在 Historical 节点上分配,Historical 节点会自行动态从 Deep Storage 下载 Segment 至磁盘,并加载到内存查询提供结果。
+
+Broker Nodes 只提供对外的查询,它不保存任何数据,只会对部分热点数据做缓存。它会从 Realtime 节点中查询到还在内存未写入 Deep Storage 的数据,并从 Historical 节点插入已经写入 Deep Storage 的数据,然后聚合合并返回给用户。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide12.jpeg)
+
+所以,我们可以看到数据写入和查询遵循上面的数据流图,这里我们没有把协调节点画出。
+
+数据在 Druid 上的物理存储单位为 Segment,他是基于 LSM-Tree 模型存储的磁盘最小文件单位,按照时间范围划分,连续存储在磁盘上。
+在逻辑上,数据按照 DataSource 为基本存储单元,分为三类数据:
+
+1. Timestamp:时间戳,每条数据都必须有时间。
+2. Dimension:维度数据,也就是这条数据的一些元信息。
+3. Metric:指标数据,这类数据将在 Druid 上进行聚合和计算,并会按照一定的维度聚合存储到实际文件中。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide13.jpeg)
+
+除了上述说的查询方式 OLAP 的数据其实有几大特性很关键:
+
+1. 不可变,数据一旦产生,基本上就不会变化。换言之,我们不需要去做UPDATE操作。
+2. 数据不需要单独的删除操作。
+3. 数据基于时间,每条数据都有对应的时间戳,且每天的数据量极高
+
+所以,对于一个 OLAP 系统的数据库,它需要解决的问题也就两个维度:写入 和 查询。
+
+对于 Druid 而言,它支持的查询有且不仅有上面的四种方式。但是,我们进行梳理后发现,OneAPM的所有业务查询场景,都可以基于上述四种查询方式组合出来。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide14.jpeg)
+
+于是在基于 Druid 开发的时候我们遇到的第一个问题就是 Druid 的查询方式是 HTTP,返回结果基本是 JSON。我们用 Druid 比较早,那个时候的 Druid 还不像现在这样子,支持 SQL 插件。
+
+我们需要做的第一个事情,就是如何简化这块集成开发的难度。我们第一时间想到的就是,在这上面开发一套 SQL 查询语法。我们使用 Antlr4 造了一套 Druid SQL,基于它可以解析为直接查询 Druid 的 JSON。
+
+并基于这套 DSL 模型,我们开发了对应的 jdbc 驱动,轻松和 MyBatis 集成在一起。最近这两周,我也尝试在 ES 上开发了类似的工具,SQL 模型与解析基本写完了:[https://github.com/syhily/elasticsearch-jdbc](https://github.com/syhily/elasticsearch-jdbc)
+
+当然这种实现不是没有代价的,我的压测的同事和我抱怨过,这种方式相比纯 JSON 的方式,性能下降了 50%。我觉得,这里我们当时这么设计的首要考虑,是在于简化开发难度,SQL对每个程序员都是最熟悉的,其次,我们还有一层考虑就是未来更容易适配别的存储平台,比如 ES(当时其实在15年中旬的时候也列入我们的技术选型)。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide15.jpeg)
+
+Druid 另一个比较大的问题就是,它实在是太吃硬件了。记得之前和今日头条的广告部门研发聊天,聊到的第一个问题就是 Druid 的部署需要 SSD。
+
+我们在前面的架构分析当中很容易发现,Druid 本质上还是属于 Hadoop 体系里面的,它的数据存储还是需要 HDFS,只是它的数据模型基于 LSM-Tree 做了一些优化。换言之,它还是很吃磁盘 IO。每个 Historical 节点去查询的时候,都有数据从 Deep Storage 同步的过程,都需要加载到内存去检索数据。虽然数据的存储上有一定的连续性,但是内存的大小直接决定了查询的快慢,磁盘的 IO 决定了 Druid 的最终吞吐量。
+
+另外一个问题就是,查询代价问题。Druid 上所有的数据都是要制定聚合粒度的,小聚合粒度的数据支持比它更大粒度的聚合数据的查询。
+
+比如说,数据是按照1分钟为聚合粒度存储的化,我们可以按照比1分钟还要长的粒度去查询,比如按照5分钟一条数据的方式查询结果。但是,查询的时间聚合单位越大,在分钟的聚合表上的代价也就越高,性能损失是指数级的。
+
+针对上面两个问题,我们的最终解决方案,就是数据不是写一份。而是写了多份,我们按照业务的查询间隔设置了3~4种不同的聚合表(SaaS和企业级的不同)。查询的时候按照间隔路由到不同的 Druid 数据表查询。某种程度上规避了磁盘 IO 瓶颈和查询瓶颈。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide16.jpeg)
+
+在充分调研和实践后,有了上面的新架构图。3.0 到 4.0 的变化主要在HBase存储的替换,数据流向的梳理。
+
+我们将探针的数据分为三大类,针对每类的数据,都有不同的存储方式和处理方式。
+
+探针上传的数据,分为三大类,Trace、Metrics、Analytic Event。Trace 就是一次完整的调用链记录,Metrics 就是系统和应用的一些指标数据。Analytic 数据使我们在探针中对于一些慢 Trace 数据的详细信息抓取。最终所有的 Metrics 数据都写入 Druid,因为我们要按照不同的查询间隔和时间点去分析展示图表。Traces 和事物类信息直接存储 MySQL,它对应的详细信息还需要从 Druid 查询。对于慢 Trace 一类的分析数据,因为比较大,切实时变化,我们存入到 Redis 内。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide17.jpeg)
+
+但是,Druid 一类的东西从来都不是一个开箱即用的产品。我们前面在进行数据多写入优化,还有一些类似 SelectOne 查询的时候,越来越发现,为了兼容 Druid 的数据结构,我们的研发需要定制很多非业务类的代码。
+
+比如,最简单的一个例子,Druid 中查到一个 Metric 指标数据为 0,到底是这个数据没有上传不存在,还是真的为 0,这是需要商榷的。我们有些基于 Druid 进行的基线数据计算,想要在 Druid 中存储,就会遇到 Druid 无法更新的弊端。换句话说,Druid 解决了我们数据写入这个直接问题,查询上适用业务,但是有些难用。
+
+针对上述这些问题,我们在16年初开始调研开发了现有的金字塔存储模块。它主要由金字塔聚合模块 Metric Store 和金字塔读取模块 Analytic Store 两部分组成。
+
+因为架构有一定的传承性。所以它和 Druid 类似,我们只支持 Kafka 的方式写入 Metric 数据,HTTP JSON 的方式暴露查询接口。基于它我们改造 Druid SQL,适配了现有的存储。它的诞生,第一点,解决了我们之前对于数据双写甚至多写的查询问题。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide18.jpeg)
+
+我们在要求业务接入金子塔的时候,需要它提供上述的数据格式定义。然后我们会按照前面定义的聚合粒度表,自动在 Backend 数据库创建不同的粒度表。
+
+金字塔存储引擎的诞生,其实主要是为了 ClickHouse 服务的,接下来,请允许我先介绍一下 ClickHouse。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide19.jpeg)
+
+从某种角度而言,Druid 的架构,查询特性,性能等各项指标都十分满足我们的需求。无论是 SaaS,还是在 PICC 的部署实施结果都十分让人满意。
+
+但是,我们还是遇到了很多问题。
+
+1. 就是 Druid 的丢数据问题,因为它的数据对于时间十分敏感,超过一个指定阈值的旧数据,Druid 会直接丢弃,因为它无法更新已经持久化写入磁盘的数据。
+2. 和第一点类似,就是 Druid 无法删除和更新数据,遇到脏数据就会很麻烦。
+3. Druid 的部署太麻烦,每次企业级的交付,实施人员基本无法在现场独立完成部署。(可以结合我们前面看到的架构图,它要MySQL去存meta,用 zk 去做协调,还有多个部署单元,不是一个简单到能傻瓜安装的程序。这也是 OneAPM 架构中逐渐淘汰一些组件的主要原因,包括我们后面谈到的告警系统。)
+4. Druid 对于 null 的处理,查询出来的 6个时间点的数据都是0,是没数据,还是0,我们判断不了。
+
+所以,我们需要在企业级的交付架构中,采取更简单更实用的存储架构,能在机器不变或者更小的情况下,实现部署,这个时候 ClickHouse 便进入我们的技术选型中。
+
+https://yufan.me/evolution-of-data-structures-in-yandexmetrica/
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide20.jpeg)
+
+在介绍 ClickHouse 之前,我觉得有必要分享一下常见的两种数据存储结构。
+
+第一种是 B+ Tree或者是基于它的扩展结构,它常见于关系型数据的索引数据结构。我们以 MySQL 的 MyISAM 引擎为例,数据在其上存储的时候分为两部分,按照插入顺序写入的数据文件和 B+ Tree 的索引。叶子节点存储数据文件的位移。当我们读取一个索引中的范围数据时,首先从索引中查出一组满足查询条件的数据文件位移,然后按照查出来的位移依次去从数据文件中查找出实际的数据。
+
+所以,我们很容易发现,我们想要检索的数据,往往在数据库上不是连续的,上图显示常见的数据库磁盘中的文件分布情况。当然我们可以换用 InnoDB,它会基于主机定义的索引,写入顺序更加连续。但是,这势必会导入写入性能十分难看。事实上,如果拿关系型数据库存储我们这种类似日志、探针指标类海量数据,势必会遇到的问题就是写入快,查询慢;查询快,写入慢的死循环。而且,扩容等操作基本不可能,分库分表等操作还会增加代码复杂度。
+
+所以,在非关系型数据库里面,常见的存储结构是 LSM-Tree(Log-Structured Merge-Tree)。首先,对于磁盘而言,顺序写入的性能是最理想的。所以常见的 NoSQL 都是将磁盘看做一个大的日志,每次直接在后端批量增加新的数据以达到连续写入的目的。但就和 MyISAM 一样,会遇到查询时的问题。所以 LSM-Tree 就应运而生。
+
+它在内存中和磁盘中分别使用两种不同的树结构存储数据,并同时对外提供查询能力。如 Druid 为例,在内存中的数据,会按照时间范围去聚合排序。然后定时写入磁盘,所以在磁盘中的文件写入的时候已经是排好序的。这也是为何 Druid 的查询一定要提供时间范围,只有这样,才能选取出需要的数据块去查询。
+
+当然,聪明的你一定会问,如果内存中的数据,没有写入磁盘,数据库崩溃了怎么办。其实所有的数据,会先以日志的形式写入文件,所以基本不会丢数据。
+
+这种结构,从某种角度,存储十分快,查询上通过各种方式的优化,也是可观的。我记得在研究 Cassandra 代码的时候印象最深的就是它会按照数据结构计算位移大小,写入的时候,不足都要对齐数据,使得检索上有近似 O(1) 的效果。
+
+昨天汤总说道 Schema On Read,觉得很好,我当时回复说,要在 HDFS 上动手脚。其实本质上就可以基于 LSM-Tree 以类似 Druid 的方式做。但是还是得有时间这个指标,查询得有时间的范畴,基于这几个特点才有可能实现无 Schema 写入。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide21.jpeg)
+
+Druid 的特点是数据需要预聚合,然后按照聚合粒度去查询。而 ClickHouse 属于一种列式存储数据库,在查询 SQL 上,他和传统的关系型数据库十分类似(SQL引擎直接是基于MySQL的静态库编译的)它对数据的存储索引进行优化,按照 MergeEngine 的定义去写入,所以你会发现它的查询,就和上面的图一样,是连续的数据。
+
+因为 ClickHouse 的文档十分少,大部分是俄文,当时我在开发的时候,十分好奇去看过源码。他们的数据结构本质上还是树,类似 LSM tree。印象深刻的是磁盘操作部分的源码,是大段大段的汇编语句,甚至考虑到4K对齐等操作。在查询的时候也有类似经验性质的位移指数,他们的注释就是基于这种位移,最容易命中数据。
+
+对于 ClickHouse,OneAPM 乃至国内,最多只实现用起来,但是真正意义上的开发扩展,暂时没有。因为 ClickHouse 无法实现我们的聚合需求,金字塔也为此扩展了聚合功能。和 Druid 一样,在 ClickHouse 上创建多种粒度聚合库,然后存储。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide22.jpeg)
+
+这个阶段的架构,就已经实现了我们最初的目标,将所有的中间件解耦,我们没有直接使用 Kafka 原生的 High Level API,而是基于 Low Level API开发了 Doko MQ。目的是为了实现不同版本 Kafka 的兼容,因为我们现在还有用户在使用 0.8 的 Kafka 版本。Doko MQ 只是一层外部的封装,Backend 不一定是 Kafka,考虑到有对外去做 POC 需求,我们还原生支持 Redis 做MQ,这些都在 Doko 上实现。
+
+存储部分,除了特定的数据还需要专门去操作 MySQL,大部分直接操作我们开发的金字塔存储,它的底层可以适配 Druid 和 ClickHouse,来应对 SaaS 和企业级不同数据量部署的需要。对外去做 POC 的时候,还支持 MySQL InnoDB 的方式,但是聚合一类的查询,需要耗费大量的资源。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide23.jpeg)
+
+部署与交付是周一按照汤总的要求临时加的,可能 PPT 准备的不是很充分,还请大家多多包涵。
+
+Java 应用部署于应用容器中,其实是受到 J2EE 的影响,也算是 Java Web 有别于其他 Web 快速开发语言的一大特色。一个大大的 war 压缩包,包含了全部的依赖,代码,静态资源,模板。
+
+在虚拟化流行之前,应用都是部署在物理机上的,为了节约成本,多 war 包部署在一个 Servlet 容器内。
+
+但是为了部署方便,如使用的框架有漏洞、项目 jar包的升级,我们会以解压 war 包的方式去部署。或者是打一个不包含依赖的空 war 包,指定容器的加载某个目录,这样所有的war项目公用一套公共依赖,减少内存。当然缺点很明显,容易造成容器污染。
+
+避免容器污染,多 war 部署变为多虚拟机单 war、单容器。
+
+DevOps 流行,应用和容器不再分离,embedded servlet containers开始流行 Spring Boot 在这个阶段应运而生。于是项目部署变为 fat jar + 虚拟机
+
+Docker的流行,开始推行不可变基础设施思想,实例(包括服务器、容器等各种软硬件)一旦创建之后便成为一种只读状态,不可对其进行任何更改。如果需要修改或升级某些实例,唯一的方式就是创建一批新的实例以替换。
+
+基于此,我们将配置文件外置剥离,由专门的配置中心下发配置文件。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide24.jpeg)
+
+最初的时候,Docker 只属于我们的预研项目,当时 Docker 由刘斌(他也是很多中文 Docker 书的译者)引入,公司所有的应用都实现了容器化。这一阶段,我们所有的应用都单独维护了一套独立的 Docker 配置文件,通过 Maven 打包的方式指定 Profile 的方式,然后部署到专门的测试环境。换句话说,Docker 只是作为我们当时的一种测试手段,本身可有可无。
+
+2015年上半年,红帽的姜宁老师加入 OneAPM,他带来了 Camel 和 AcmeAir。AcmeAir 本来是 IBM 对外吹牛逼卖他的产品的演示项目,Netflix 公司合作之后觉得不好,自己开发了一套微服务架构,并把 AcmeAir 重写改造成它组件的演示项目,后面 Netflix 全家桶编程了现在很多北京企业在尝试的 Spring Cloud。而 AcmeAir 在 PPT 中的 Docker 部署拓扑也成了我们主要的学习方式。
+
+那个时候还没有 docker-compose、docker-swarm,我们将单独维护的配置文件,写死的配置地址,全部变为动态的 Hosts,本质上还是脚本的方式,但是已经部分实现服务编排的东西。
+
+然后我们开始调研最后选型了 Mesos 作为我们主要的程序部署平台,使用 Mesos 管理部署 Docker 应用。在上层基于 Marthon 的管理 API 增加了配置中心,原有脚本修改或者单独打包的配置文件变为配置中心下发的方式。最后,Mesos 平台只上线了 SaaS 并部署 Pinpoint 作为演示项目,并未投产。
+
+后面,在告警系统的立项开发过程中,因为要和各个系统的集成测试需要,我们慢慢改写出 docker-compose 的方式,废弃掉额外的 SkyDNS。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide25.jpeg)
+
+Mesos 计划的夭折,主要原因是我们当时应用还没有准备好,我们的应用主要还都是单体应用各个系统间没有打通。于是在 16年我们解决主要的存储问题之后,就开始着力考虑应用集成的问题。
+
+应用服务化是我们的内部尝试,是在一次次测试部署和对外企业交付中的血泪总结。当时我们考虑过 Spring Integration,但是它和 camel 基本如出一辙,也调研过 Nexflix 全家桶,最后我们只选用了里面的 zuul 做服务网关。
+
+在应用层面,我们按照上图所示,将所有的应用进行服务化拆分,分成不同的组件开发维护,并开发了注册中心等组件。RPC 这边,我们没有使用 HTTP,而是和很多公司一样包装了 Thrift。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide26.jpeg)
+
+我们基于前面的服务拆分,每个应用在开发的时候,都是上述5大模块。中间核心的中间件组件,业务系统均无需操心。在交付的时候,也属于类似公共资源,按照用户的数据量业务特点弹性选择。
+
+最小化部署主要是为了给单独购买我们的某一产品的用户部署所采用的。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide27.jpeg)
+
+但是我们已经受够了一个项目维护多套代码的苦楚,我们希望一套代码能兼容 SaaS、企业级,减少开发中的分支管理。于是我们拆分后的另一大好处就体现了,它很容易结合投产未使用的 Mesos 在 SaaS 上实现部署。
+
+为了打通各个产品,我们在原有的前后端分离的基础上,还将展示层也做了合并,最后实现一体化访问。后端因为实现了服务化,所有的应用都是动态 Mesos 扩容。CEP 等核心计算组件也能真正意义上和各个产品打通,而不是各做各的。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide28.jpeg)
+
+到了这里,我的第一阶段就算是讲完了,大家有问题么?
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide29.jpeg)
+
+告警系统的开发,我们和 Ai 一样,经历了几个阶段,版本迭代的时间点也基本一致。整个开发过程中,我们最核心的问题其实不在于告警功能本身,而是其衍生的产品设计和开发设计。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide30.jpeg)
+
+和 Ai 一样,初期的告警实现特别简单。当时来自 IBM 研究院的吴海珊加入 OneAPM 团队,带来了 Cassandra 存储,我们当时用的比较早,是 2014 年 2.0 版本的 Cassandra,我们在充分压测之后,对它的数据存储和读写性能十分满意,基于它开发了初版告警(草案)。
+
+初版告警的实现原理极其简单,我们从 Kafka 接收要计算的告警指标数据,每接收到一条指标数据,都会按照配置的规则从 Cassandra 中查询对应时间窗口的历史指标数据,然后进行计算,产生警告严重或者是严重事件。然后将执行的告警指标写入 Cassandra,将告警事件写入 Kafka。(看下一页)
+
+所以你会发现初版的告警,从设计上就存在严重的 Cassandra 读写压力和高可用问题。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide31.jpeg)
+
+你会发现,每从业务线推送一条指标数据,我们至少要读写两次 Cassandra。和同时期的 Ai 架构相比,Ai 对 HBase 只有写入瓶颈,但读取,因为量不高,反而没有瓶颈。(回上页)
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide32.jpeg)
+
+这里是我们和 Ai HBase的对比总结。我们初版的设计和 Ai 一样都需要全量地存储指标数据,而且 Cassandra 的存储分片本身是基于 Partition Key 的方式,数据必须基于 Partition Key 去查询,我们对于计算指标,按照 业务系统、应用 ID、时间 作为 Partition Key 去存储。很意外的是几乎和 HBase 同时出现了读写瓶颈。而且比较尴尬的地方也和 Ai 类似,因为 Partition Key 的定义,完全无法解决写入热点问题。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide33.jpeg)
+
+所以我们首先想到的是,对于当前的告警架构进行优化,我们有了上述的新架构设计。但是在评审的时候,我们发现,我们做的正是一个典型的分布式流式处理框架都会做的事情,这些与业务逻辑关系不大的完全可以借助现有技术实现。
+
+由于这个时期(15年)公司整体投产大数据,我们自然把眼光也投入了当时流行的大数据计算平台。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide34.jpeg)
+
+首先,对于初版的架构,我们需要保留的是原有的计算数据结构和 Kafka 的写入方式,对于核心的告警计算应用需要去改造。
+
+我们需要实现的是基于**单条数据**的实时流式计算。需要能分布式水平扩展。能按照规则分组路由,避免热点问题。需要有比较好的编程接口。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide35.jpeg)
+
+首先我们考察的便是 Spark,Spark 最大的问题是需要我们人为指定计算的时间窗口,计算的数据也是批量的那种而非单条,这和告警的业务需求本身就不匹配。
+
+因为当时我们想设计的告警计算是实时的,而非定时。Spark Streaming 在后面还因为执行模式进一步被我们淘汰。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide36.jpeg)
+
+Strom 各方面其实都蛮符合我们需求的,它也能实现所谓的单条实时计算。但是,它的计算节点不持有计算状态,某些时候的窗口数据,是需要有类似 Redis 一类的外部存储的。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide37.jpeg)
+
+**Flink优势:**
+
+Spark 有的功能 Flink 基本都有,流式计算比 Spark 支持要好。
+
+1. Spark是基于数据片集合(RDD)进行小批量处理,所以Spark在流式处理方面,不可避免增加一些延时。
+2. 而 Flink 的流式计算跟 Storm 性能差不多,支持毫秒级计算,而 Spark 则只能支持秒级计算。
+3. Flink 有自动优化迭代的功能,如有增量迭代。它与 Hadoop 兼容性很好,还有 pipeline 模式增加计算性能。
+
+这里,我需要重点说一下 pipeline 模式。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide38.jpeg)
+
+Staged execution 就如它的名字一样,数据处理分为不同的阶段,只有一批数据一个阶段完全处理完了,才会去执行下一个阶段。典型例子就是 Spark Streaming
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide39.jpeg)
+
+Pipeline 则是把执行串行在了一起,只有有计算资源空闲,就会去执行下一个的操作。在外部表象是只有一个阶段。
+
+上面的不好理解,我们思考一个更形象的例子:
+
+某生产线生产某钟玩具需要A,B,C三个步骤,分别需要花费10分钟,40分钟,10分钟,请问连续生产n个玩具大概需要多少分钟?
+
+**总结:**
+
+stage的弊端是不能提前计算,必须等数据都来了才能开始计算(operateor等数据,空耗时间)。pipeline的优势是数据等着下一个operateor有空闲就立马开始计算(数据等operateor ,不让operateor闲着,时间是有重叠的)
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide40.jpeg)
+
+综合前面的调研分析,我们有了上面这张表格。对于我们而言,其实在前面的分析中 Flink 就已经被我们考虑了,尤其是它还有能与 Hadoop 体系很好地整合这种加分项。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide41.jpeg)
+
+综合前面的分析,我们最终选择 Flink 来计算告警,因为:
+
+1. 高效的基于 Pipeline 的流式处理引擎
+2. 与 Hadoop、Spark 生态体系良好的兼容性
+3. 简单灵活的编程模型
+4. 良好的可扩展性,容错性,可维护性
+
+在架构逻辑上面,我们当时分成了上述五大块。
+
+元数据管理主要指的是告警规则配置数据,数据接入层主要是对接业务系统的数据。
+
+计算层主要是两类计算,异常检测:按照配置的静态阈值进行简单的计算对比、No Event 无事件监测,主要是监控应用的活动性。
+
+缓存区主要是计算数据队列的缓存和应用告警状态的缓存。存储区第一块是从原有架构继承的 Cassandra。离线存储是考虑给别的大数据平台共享数据使用的。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide42.jpeg)
+
+这里画的是 Standalone 的部署方式,也是我们在本地开发测试的架构,在生产上,我们采用了 Flink on YARN 的部署模式。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide43.jpeg)
+
+对于 Flink 的任务调度,我们以左下角的一个简单操作为例,它是一个 source(4) -> map(4) -> reduce(3),其调度在 Flink 中如图所示,会分成几个不同的 TaskManager 来操作,每个 TaskMananger 中有多个执行单元,但呈管道式。将外部网状的处理流程变为独立的线性处理任务。
+
+我们基于 Flink 首先需要开发的,就是异常检测流程。告警的异常检测就相当于 Flink 的一个 Job(Streaming),借助 Flink 简单易用的编程模型,我们可以快速的构建我们的 Flow。
+
+在设计的初期,我们考虑了几个方面的问题:
+
+1. 作为通用的计算引擎,谁可以使用这个 Job。
+2. 如果后面某些产品提出一些变态的需求,我们是否可以快速开发一个针对特殊需求的 Job 提交到同一的平台去运行?
+3. 平台是否可以提供稳定的运行环境、可维护性、可扩展性、可监控性以及简单高效的编程模型,咱们可以把更多的精力放在两个方面:a.业务;b.平台研究(确保稳定性)
+4. 生产上统一到 Yarn 上之后,我们可以在一个集群上公用一份数据,根据不同场景使用不同的计算引擎做他适合做的事情。比如,暴露数据给 Spark 团队使用。
+5. Akka 集群化研究,我们原有的 Akka 开发经验,不能浪费。对于企业交付,还是需要有一个小而美的程序架构。Akka 那个时候是 2.3 版本,提供了 Akka Cluster,重新被我们纳入研究范畴。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide44.jpeg)
+
+我们遇到的第一个问题,就是多数据源,生产上提供计算数据源的可能不仅仅是 Ai 一个产品,还有别的产品。我们研究后发现,Fink 原生支持多数据源。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide45.jpeg)
+
+说到Rule的问题,我们逃不开一个问题:Rule管理模块到底应不应该拆出来。
+
+首先,元数据管理的压力不大,数据量也不会大到哪里去,他的更新也不是频繁的。
+其次,让 Flink 在各个节点上启动一个 Web服务去更新规则是不现实的,也不值当。
+
+所以,把Rule管理模块单独抽取出来是合适的。
+
+抽取出来之后,自然就涉及告警计算的 Job 如何感知 Rule 变更的问题:
+
+完全依赖外部存储,例如 Redis,Job 每次都去查存储获取 Rule(这样完全规避了 Rule 更新问题,但是外部存储能够扛得住是个问题,高并发下 Redis 还是会成为瓶颈)。
+Job内存里自己缓存一份 Rule,并提供更新机制。
+
+无论怎么搞都得依赖外部通知机制来更新 Rule,比如元数据管理模块更新完 Rule 就往 Kafka 发送一个特殊的 Event。算子收到特殊的 Event 就去数据库里把对应的 Rule 查询出来并更新缓存。
+
+有了更新机制,我们要解决的就是如何在需要更新的时候通知所有的算子,难点是一个特殊的Event只能发送给一个算子实例,所以我们上面采用了单实例,存在两个问题。
+
+1. 性能瓶颈
+2. 消息表变大了(key,event)—(key,event,rule),更加消耗资源
+
+其实,我们忽略了一个问题,当Rule有更新的时候我们完全没必要通知所有的算子实例。
+
+虽然我们不是一个 Rule 对应一个算子,但是 Flink 是提供分区机制的,我们已经用 key 做了hash。Rule 的更新不会更新 key,产生的特殊 Event 会分区到固定的算子具体实例,具有相同 key 的 Event 也必然被分区到相同的算子实例。所以我们的担心是多余的,而且借助分区机制,我们对内存的占用会更小,每个算子实例只缓存自己要用的Rule。
+
+所以 Rule 的更新只有三种场景:初始化时不做预加载缓存,第一次使用Rule时查数据库并缓存,收到内置Event时更新缓存。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide46.jpeg)
+
+No Events 检测主要的问题是 Flink 是实时数据计算,他是来一条数据计算一次。无事件本身的的特点就是没有数据推送过来,无法触发计算。
+
+这个问题其实已经非常好解决了,我们在告警计算的流程里已经更新每个Rule对应event的最后达到时间到Redis了。我们可以单起一个批处理job简单运算一次即可,逻辑非简单,我测了一下16000个Rule,5个并发度,可以在5s内计算一次。注:带注释才用了不到120行java代码,稍加改进即可在生产上使用。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide47.jpeg)
+
+最终,我们在解决上述问题之后在阿里云上实现了上述的告警计算平台。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide48.jpeg)
+
+从某种角度而言 Flink 版本是第一个在 SaaS 上投产的系统,然而,它并不完美,有着上述这些问题。
+
+从某种角度而言,Flink 计算告警有些大材小用,我们需要更轻量的架构。(这里中断,展示一下我们的告警系统。)
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide49.jpeg)
+
+在 Flink 版本开发3个月后,我们开始着手开发新的企业级告警平台。因为现有的 Flink 版本,因为很多原因无法对外交付。
+
+我也是从这个时候开始参与 OneAPM 告警的研发,我们做的第一件事情,就是结合之前 DSL 开发的经验,思考如何重新定义告警规则。这是因为 Flink 上定义的告警规则,就和现有的云迹 CTMAM 的告警规则一样,比较死板,不好扩展,且较为复杂。
+
+这期间也参考了 Esper 之类的开源项目,比较后我们惊喜地发现,最好的告警规则定义方式就是 SQL。
+
+我们在定义好规则模板之后,便开始由解析计算引擎 -> 处理队列引擎 -> 分布式管理平台 -> 操作接口的顺序 开发了现有的告警引擎。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide50.jpeg)
+
+首先是基于规则 DSL 的解析计算引擎。之前的 Mock Agent,我们使用的是 Scala 原生提供的语法分析组合子设计的。Druid SQL 使用的是 Antlr4,先解析出基本的 AST 语法树,然后转义为 Druid JSON 查询模型,最后序列化为查询 JSON。
+
+这里的告警规则 SQL,我们用的是类似 Druid SQL 的方式。语法模板定义甚至都是类似的。只是增加了四则混合运算表达式的解析和运算,还有 avg 一类的计算函数的实现。
+
+最终,它的解析处理流程就和 PPT 图示的一样。规则 SQL 语句被 Antlr4 做词法语法分析,将部分非逻辑单元符号化,然后构建出一棵 SQL 语法树。我们按照 Antlr4 提供的 Visitor 模式,以深度优先检索的方式遍历,然后不断的将结果按照定义的算子单元组合。最后对外暴露出两个方法,一个返回布尔值表示是否满足规则运算定义,另一个返回计算中想要获取的指标数据。
+
+我们基于解析出来的规则对象,在 Engine 层对计算的事件队列和当前事件结合起来,就产生了实际想要的计算结果。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide51.jpeg)
+
+Engine 就相当于最小粒度的计算单元,但是,它缺少一些上下文管理。我们需要事件队列管理,规则和计算数据的关联,才能真正意义上调用 Engine 去计算。
+
+基于这个需求,我们开发了 Runtime 模块。它在逻辑上有两大抽象,一个是 RuntimeContext,一个是 EventChannel。
+
+RuntimeContext 就和它的名称一样,表示运行时上下文,每个RuntimeContext 对应一条具体的规则示例,内部会维护对应的 RuleTemplate。我们在设计初期就考虑类似多数据源的情况,一条计算规则可能对应多个探针数据,于是内部定义了 InputStream 的概念。
+
+它相当于实际的一条计算指标数据流,实际存储在 EventChannel 上,EventChannel 为在内存中存储的一个指标数据队列。它有两块数据:一个是一个 Event Queue,一个是当前才来的一条要计算的指标数据。Event Queue 的设计参考了 Guava Cache 里面的队列,因为规则创建时对应的数据窗口大小是确定的,于是这个 Queue 的大小也是确定的。
+
+一个 RuntimeContext 示例可能对应多个 EventChannel,一个 EventChannel 也可能对应多个 RuntimeContext,二者基于一个唯一的 key 关联起来。我们修改规则的时候,需要修改对应的 RuntimeContext。事件来了要计算的时候,是直接 sink 到 EventChannel 中。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide52.jpeg)
+
+Runtime 相当于 Flink 里面最小的计算任务,有着自己的状态,能解析 SQL 并进行运算。
+
+但是对于分布式、集群等部署环境,它还存在着较大的问题。在其之上,我们使用 Akka 开发了核心的运行模块。
+
+我们使用 Akka Cluster 开发了计算集群,Akka Cluster 将 Akka 应用分为 Seed Node 和一般 Node。启动的时候,要先启动 Seed Node,才能启动子 Node。但是启动后如果 Seed Node 挂了,Akka 可以选出一个新的存活节点当做 Seed Node。
+
+我们在 Akka 集群启动后,会使用 Seed Node 创建 Kafka Message Dispatcher Actor 来和 Kafka 消费数据,然后分发到各个子节点上。这么做的话,同一时刻,只有一个线程在从 Kafka 消费数据。使用单线程的考虑有很多,比如避免 Kafka repartition。其次,我们测试后发现,从 Kafka 消费这块使用单线程不存在瓶颈。
+
+每个 Akka 节点都分为 EvenStreamActor、RuleActor 两类核心处理计算单元,EventStreamActor 除了管理 EventChannel 之外,还会将数据分发到别的 Akka 节点,做二次计算。RuleActor 管理 RuntimeContext,其下包含 Persist Actor 将告警事件和应用实时状态持久化到金字塔存储,Alert Actor 将告警数据写入至 Doko MQ 用于接入系统执行告警行为(如短信、邮件、WebHook 等)。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide53.jpeg)
+
+Jetty模块本身用于暴露接口对外提供规则、事件、数据源管理。和 Flink 版本一样,我们遇到了一个问题就是如何在所有的 Akka 集群上更新告警规则。
+
+后面我们的实现策略和 Flink 的版本一样,规则在 Cassandra 上更新完毕后,会以特定的更新消息写入 Kafka 中。这个时期,所有的告警规则配置,使用用户,告警数据源的配置,都保存在 Cassandra 中。因为 Partition Key 的创建不大合理,也给我们在做检索,分页等操作时,尤其是告警事件的筛选,带来了极大的麻烦。这也直接导致我们在 3.0 版本里面将所有的配置数据存于 MySQL,告警事件改为使用金字塔存储。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide54.jpeg)
+
+基于计算引擎,我们抽象出三大逻辑模块,告警计算和管理模块、告警策略管理模块、推送行为管理模块。
+
+1. 计算引擎,也就是前面说的 Runtime 模块那层、它只关心什么规则,基于数据算出一个 true/false 的布尔值表示是否告警,同时返回计算的指标集。
+2. 事件生成引擎,它基于前面的计算结果,还有指标的元数据等组合生成实际的告警事件。2.0 版本只有三种:普通、警告、严重。
+3. 推送行为模块,其实就是配置支持哪些通知用户的方式,在 2.0 里面只有发邮件、执行 Shell,3.0 之后支持 Web Hook 和短信。
+4. 策略模块,就是关联某个规则应该用那些现存的通知配置。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide55.jpeg)
+
+2.0 版本的告警系统主要是 CEP 计算引擎模块,所以在部署上,他是集成在各个业务系统上的。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide56.jpeg)
+
+2.0 的时候,告警系统只产生三类事件,普通事件、警告事件、严重事件。我们调研之后发现,其实用户在意的不是这类事件,而是这三类事件相互转换之后产生的事件。
+
+于是我们重新定义了告警事件。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide57.jpeg)
+
+所以我们将告警引擎产生的事件分为两大类:HealthStatusEvent、HealthRuleVolatation 事件。
+
+前者就是图上的三个圈,也就是前面的正常、警告、严重。(做鼠标指点状)应用状态从“普通”到“严重”会产生“开启严重”事件。应用状态从“警告”到“普通”会产生“关闭警告”事件,应用状态持续在“警告”或者“严重”会产生持续类事件。我们对于告警的触发配置转为这种状态转换的事件。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide58.jpeg)
+
+有了前面的设计之后,我们遇到了第一个问题,如何在现行的 Akka 应用上设计一个告警事件状态机。我们想了很多方式,后面我们发现,自己完全想岔了。
+
+之前开发的 Engine 模块结合 Runtime 模块完全可以解决这个问题,我们只需要按照之前定义的 8 个事件转换状态定义 8条 SQL,配置三个子 RuntimeContext 即可解决这个问题。比如开启警告事件,它的 SQL 定义如上。也就是之前一个告警事件如果为空或者为NORMAL事件,当前这条事件为警告事件,则生成开启告警事件。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide59.jpeg)
+
+我们对于不同时间段应用的期望运行情况可能是不一样的,比如一天当中的几个小时,一星期中的几天或者一年当中的几个月。举个例子来说,淘宝应用在周末两天可能会存在较多的交易从而产生高于平时的吞吐量。一个工资支付应用可能相较于一个月中的其他事件,会在月初和月末产生较大的流量。一个客户管理的应用在周一的营业时间相较于周末来说会有较大的工作负荷压力。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide60.jpeg)
+
+我们在 2.0 的版本开始受制于 Cassandra。
+
+一方面,我们建表的时候,为了某些性能在 Partition Key 内增加了时间戳导致查询的时候必须要提供时间区间。另一方面,沿用的是2年前的 Cassandra 版本,无法像 3.0 之后的版本一样有更丰富的查询方式,比如基于某一列的查询。
+
+其次,在 2.0 之前的版本,每条指标的计算结果,就算是 Normal 都会存入 Cassandra,这是因为 Flink 版本计算的遗留问题。而我们在设计了告警事件的状态变化告警之后,存储 Normal 变为意义不大。
+
+最后,除了告警事件,其他的数据:如规则、策略、行为等配置数据,撑死了也就几十万条,完全没有必要用 Cassandra 来存储。它的使用,反而会增加企业级的部署麻烦。
+
+所以我们进行了变更,用 MySQL 去存储除告警事件之外的数据。告警事件因为有了金字塔模块,所以我们直接写入 Kafka 即可。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide61.jpeg)
+
+为了应对 2.0 版本的接入麻烦,因为构造 SQL、告警通知行为等在 2.0 版本都是外包给业务线自己做的,我们只是打造了一个小而美的 CEP 引擎。所以只有主要的产品 Ai 接入了我们系统。为此,我们把 Ai 中开发的和告警相对于的代码剥离,专门打造了 CEP 上层的告警系统,并要求业务方提供了应用、指标等 API。自行消费处理 Kafka 中的告警事件,触发行为。
+
+其次,做的一个很大改动就是适配了各个业务线的探针数据,直接接受全量数据。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide62.jpeg)
+
+4.0 阶段的告警其实并没有开发,当时主要协作的另一位同事在6月离职,我在8月底完成 3.0 的工作后也离职,但是设计在年初就完成了。
+
+我们在开发金子塔存储的时候,很大的一个问题就是如何流式消费 Kafka 的数据,当时正好 Kafka 提供了 Stream 编程。我们使用了 Akka Stream 去开发了对应的聚合应用 Analytic Store。
+
+同样,我们希望这个单独开发的 CEP 应用,也能变成 Reactive 化。对应的我们将上下行的 Kafka 分别抽象为 Source 和 Sink 层,它们可以使用 Restful API 动态创建,而非现在写死在数据库内。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide63.jpeg)
+
+基于这一思想,我们大概有上述的技术架构(图可能不是很清晰)。
+
+**设计目标:**
+
+增加CEP处理数据的伸缩性(scalability),水平伸缩以及垂直伸缩
+提高CEP引擎的弹性(Resilience),也就是CEP处理引擎的容错能力
+
+**设计思路:**
+
+在数据源对数据进行分流(分治);在Akka集群里,创建Kafka Conumser Group, Conumser个数与Topic的分区数一样,分布到Akka的不同节点上。这样分布到Akka某个节点到event数据就会大大减少。
+
+在数据源区分Command与Event;把Rule相关到Command与采集到metric event打到不同的topic,这样当Event数据很大时,也不会影响Command的消费,减少Rule管理的延迟。
+
+对Rule Command在Akka中采用singleton RuleDispatcher单独消费,在集群中进行分发,并且把注册ruleId分发到集群中每个EventDispatcher里。因为Rule Command流量相对于Event流量太少,也不会出现系统瓶颈。
+
+因为RuleDispatcher在Akka集群是全局唯一的,容易出现单点故障。因为RuleDispathcer会保存注册后的RuleIds,需要对RuleId进行备份,这个可以采用PersitentActor来
+
+**实现**
+
+对于RuleDispatcher down掉重启的这段时间内,因为RuleDispatcher分发过RuleId到各个节点的EventDispatcher,因此各个节点事件分发暂时不会受到影响。
+在Akka集群里每一个Kafka conumser,对于一个EventDipatcher,负责把事件分发对感兴趣对RuleActor(根据每个RuleId对应感兴趣对告警对象)。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide64.jpeg)
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide65.jpeg)
+
+常见的聚类算法有三类:基于空间划分的、基于层次聚类的和基于密度聚类的方法。聚类算法一般要求数据具有多个维度,从而能够满足对海量样本进行距离(相似性)度量,从而将数据划分为多个类别。其中维度特征一般分为CPU利用率、磁盘利用率、I/O使用情况、内存利用率、网络吞吐量等。
+
+1. 相似性度量方法
+
+相似性度量一般采用LP范式,如L0、L1、L2等,其一般作为两个样本间的距离度量;Pearson相关系数度量两个变量的相似性(因为其从标准分布及方差中计算得到,具有线性变换不变性);DTW(动态时间规整算法)用于计算两个时序序列的最优匹配。
+其中基于LP范式的时间复杂度最低O(D)
+
+2. 数据压缩(降维)方法
+
+在数据维度较大的情况下,通过数据压缩方法对时序序列进行降维是聚类算法的必备步骤。其中较为常用的数据降维方法有Discrete Fourier Transform, Singular Value Decomposition, Adaptive Piecewise Constant Approximation, Piecewise Aggregate Approximation, Piecewise Linear Approximation and the Discrete Wavelet Transform。下采样方法也是一类在时序序列中较为常用的技术。
+降维方法的时间复杂度一般在O(nlogn)到O(n^3)不等。
+
+3. 聚类方法
+
+基于空间划分的、基于层次聚类的和基于密度聚类的方法。如 K-means,DBSCAN 等。K-Means 方法是通过对整个数据集计算聚类中心并多次迭代(时间复杂度降为O(n*K*Iterations*attributes)),而Incremental K-Means方法是每加入一个数据项时,更新类别中心,时间复杂度为O(K*n),所以其对初始化中心不敏感,且能很快收敛。
+时间复杂度一般在 O(nlogn) 到 O(n^2)
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide66.jpeg)
+
+之前看 Openresty 的作者章亦春在 QCon 上的分享,他谈到的最有意思的一个观点就是面向 DSL 编程方式。将复杂的业务语义以通用 DSL 方式表达,而非传统的重复编码。诚然,DSL 不是万金油,但是 OneAPM 的告警和 Ai 数据分析,很大程度上受益于各类 DSL 工具的开发。通过抽象出类 SQL 的语法,才有了非常可靠的扩展性。
+
+Akka 和 Scala 函数式编程的使用,很大程度上简化了开发的代码量。我在16年年初的时候,还是拒绝 Scala 的,因为当时我看到的很多代码,用 Java 8 的 Lambda 和函数式都能解决。直到参与了使用 Scala 开发的 Mock Agent 之后才感受到 Scala 语言的灵活好用。函数式语言在写这种分析计算程序时,因为其语言本身的强大表达能力写起来真的很快。这也是为什么目前大数据框架,很多都是 Scala 编写的缘故。
+
+Akka 的使用,我目前还只停留在表面,但是它提供的 Actor 模型,Actor Cluster 等,在分布式平台还是极其便捷的。
+
+Antlr4 的学习,符号化与 SQL 生成。在编写 DSL 的时候,最大的感受就是解析与语言生成,它们正好是两个相反的过程。一个是将语言符号化解析成树,另一个是基于类似的定义生成语言。这一正一反的过程,在我们适配旧的告警规则配置数据的时候,感受颇深,十分奇妙。
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide67.jpeg)
+
+![](https://cat.yufan.me/slide/two-year-in-oneapm/Slide68.jpeg)
+
diff --git a/source/_posts/2017-11-13-1.md b/source/_posts/2017-11-13-1.md
new file mode 100644
index 0000000..d823767
--- /dev/null
+++ b/source/_posts/2017-11-13-1.md
@@ -0,0 +1,84 @@
+---
+title: 我们都是木头人
+author: 雨帆
+tags:
+ - 回忆
+ - 文字
+categories: 文章
+permalink: watashitachi-ha-mokuzaidesu
+featureImage: https://cat.yufan.me/cats/2017-11-13-IMG_1222.JPG
+date: 2017-11-13 09:52:00
+---
+
+“唉,你还真是一个不安分的家伙啊!”电话那头的老妈无可奈何地宠溺道。
+
+此时还是八月初,火辣辣的太阳炙烤着大地,北京西小口软件园东边的花坛边开满了月季等鲜花。池塘里一群鸭子正在那争抢着午休员工投食的馒头,让这本该静谧的大热天增添了一抹生气。
+
+此时的我,才和老妈通完电话,在这短短的30分钟的时间里,做出了对我来说极为重要的决定——离开北京,回南京工作。
+
+
+
+
+
+为何离职?为何离开?很多人问过我,我也给出了不同的回答。对同事,我的说法是回家结婚生子。对朋友,我说北京空气太差,想回南京健康点。对家人,我说新房快交房了,想回来准备装修……
+
+从 14 年 7 月大学毕业到决定离开北京,已经整整北漂 3 年整,北京从来就不是我心里能够长待的地方。当时毕业的同学要么出国,要么保研、考研、公务员,要么就回家乡发展。只有我一个人从为数不多的 Offer 中挑了一份看起来还行的去了北京,同学当时都笑道,雨帆你要住地下室了。然而,我还义无反顾地放弃了父母早就准备好的“前程”,选择从来没有去过的最北边,北京。
+
+在我看来,无论是吃喝穿住都不愁的厦门,十分稳定的济南校企,还是那各种意义上都十分繁华的大上海,都不是我向往的地方。它们要么就是在家边上离家近,要么就是看不到发展的前景。我的骨子里,还是向往冒险,向往诗意和远方。
+
+我渴望离开父母身边,渴望逃离这烦闷无趣的大学生活,渴望拥有自己的收入。这一次,我没有听任何人的劝诫,一个包,一把伞,一个箱子,一个人,坐着最便宜的绿皮车硬座,来到了北京。
+
+朋友,你见过北京早上 5 点钟的太阳么?我见过。
+
+那个时候的我,为了省钱,住在离公司 27 公里外的上地,公司在南三环的万通中心。每天天没亮,我就得早早爬起来和 60 多个人争抢 2 个水龙头洗漱,然后在西二旗那一眼望不到边的地铁排队大军中蹒跚而行。下班到家时,也已经是晚上 9 点。
+
+![](https://cat.yufan.me/cats/2017-11-13-IMG_0356.JPG)
+
+在易宝支付的一年半里,为了攒钱,我基本在公司睡觉不回家。因为这样可以省下一天 5 元的地铁费用,同时还有最高 25 元的晚餐补助。省一点,一天的开销基本为 0。每天在公司加班,就是看当天别人提交的代码,看别人写的设计文档。到了夜里 11 点,关掉一层楼的灯,在前台旁边铺好地铺睡到 8 点保洁阿姨来上班。然后起来洗漱,在工位上趴一会,开始新的一天工作。
+
+![](https://cat.yufan.me/cats/2017-11-13-IMG_0105.JPG)
+
+那个时候的我,基础比别人差得太多太多,什么都不会,代码也没怎么写过。每天对我而言,除了学习看书工作,就是睡觉。工位后的柜子上摆的书越来越多,一本、两本,十本、二十本,一书架……每本书都基本看完。
+
+我记得有一天晚上 2 点我还在看正则,CEO 余晨从我们那排走过,关心地问我,怎么这么晚了,还在加班,而且只有一人。那一瞬间,我突然想哭,在这离家2000多公里的土地上,第一次感受到来自别人的关怀。虽然只是简单的问询,但是,那个时候才接手银行路由,又出了大大小小很多事故,真的很苦闷。
+
+这期间从[柏涛](http://im47.cn/about.md)这位前辈那里学会了很多,他是我至今都十分佩服和嫉妒的前辈,比我早 2 年入职,在各个方面都十分优秀,完美地简直不是人。在公司,加班最狠、最多的就是他,不论是节假日,还是周末,基本都能在公司工位上看到他。晚上还和我争抢监控室的小床,逼我打地铺,哼!
+
+时间很快到了 15 年年底,我所在的部门要拆分,基础架构部基本名存实亡,老大包旺也有意出去单干。当时对我来说,是恐惧的,我那微乎其微的技术能力,真不知道还能干什么,易宝的基础组件也基本看了个遍,没有什么新的好玩的东西。于是,我选择跳槽。
+
+![](https://cat.yufan.me/cats/2017-11-13-IMG_0129.jpg)
+
+去面试 OneAPM 前经常在图灵社区上看到它们的“广告”,Software Design 和 Web DB Press 上也能看到它和知道创宇两个公司的招聘信息。对我而言,它是陌生而又神秘的。去东升科技园面试前一天才下了雪,从永泰庄地铁站走出来,扑面而来的除了冷还是冷,在公司窝了 1 个月没出门的我不禁打了一个寒战。因为地图导航的错误,我得绕整个园区一圈才能到 OneAPM 那,漫行在银装素裹的东升科技园,就好像进入了一个白茫茫的世界,看不到出路,一如我当时迷茫的思路。
+
+到了目的地后发现,OneAPM 真的很小、很小,小到它的面试,只能在前台旁边的茶几上进行。然后,我见到了职业生涯中的另外两位导师,姜宁老师和晓光老师。当时我并不认识姜老师,只是人力说他很厉害云云。姜老师面试我的时候,只是考察了几个简单的尾递归,问问我会不会写 Scala 和一些简单的技术问题。然后,便是晓光的二面。我至今记得和他第一次见面的场景,个子不高,戴着一副粗绿框眼睛,满脸胡子,像是几天没洗漱,风尘仆仆地走过来。屁股一坐,开始审阅我的简历。那一瞬间,我突然有了一种被人看透的恐慌。
+
+很快,我便入职 OneAPM,才入职期间,人员走了很多。部门一大批人去了杭州,回来的只有几个。招进来几个,也很快走了。最后,招我的人力也离职了,当时让我一度十分恐慌,我是不是掉坑里了。唯一能接触的用户系统的代码写得十分可怕,让我甚至对公司的技术研发产生了质疑。虽然每天都是在学习研究姜老师给我安排的新东西,但是心还是揣着的。直到友国入职后,才算是稍微安心下来。
+
+友国当时从搜狐畅游跳槽过来,入职的原因很简单,在这可以写 Scala。在他眼里 Scala 天下第一,Spring 什么的 Akka 秒了。他一入职,便和张健一起写 Mock Agent,将那个我原来就看不大懂的项目,写得更让我看不懂。后面他维护用户系统,用 Play + TS2 强行写了一版管理后台,现在想想都是个坑。
+
+![](https://cat.yufan.me/cats/2017-11-13-IMG_0328.JPG)
+
+OneAPM 很小,甚至说很穷,公司所有的开支大头,就是人员工资,很多硬件条件很差。但还是愿意支出很多钱让海珊姐姐去参加国外大会,将最新的 APM 领域的东西给大家分享。CEO 和大家讲话分享,都是站在凳子上。
+
+易宝支付有一句话叫做“一群人的浪漫”,在这里才真正意义上体会到了其中的种种,无论是姜宁老师给我们扩宽的技术视野,还是晓光那强悍的编码设计能力,抑或是友国天天喊着的 Scala 大法好,殷湘老师教会我如何写测试用好 IntelliJ IDEA。对我来说,都是职业生涯中难得的财富。
+
+在易宝支付的一年半,大都得靠自己,老大包旺(包大人)并不能给我太多的指导,后来的老大锁文强能把通道运维好已经不容易,还要为我背通道事故的锅。来了 OneAPM 之后,太多新的东西,太多挑战,很多技术,一出来你可能就能看到在 OneAPM 里面的应用,让人有学习的动力。
+
+**那么为什么要离职呢?**
+
+![](https://cat.yufan.me/cats/2017-11-13-IMG_0545.jpg)
+>我在延静里租的小房子,一个小餐厅改造的客厅,放了一张桌子和一张床,仅此而已。为了好看,没有拍床。
+
+因为,北京从来没有让我有安定的感觉。无论你是在繁华的三环内,还是充斥互联网公司的海淀,抑或是百度总部的西二旗上班。当你忙完一天,带着浑身疲惫回到家里,北京的恶意就会迎面袭来,让你无所适从。洗到一半热水器坏了没有热水,因为没有钥匙被锁在门外一晚,通勤时间高达 2 小时的路程……这些种种,总让我在北京找不到任何归属感。我只能在工作中麻木自己,让自己像木头人一样,不去想,不去看。
+
+电话里,老妈常说的话就是,你又买了XXX,到时候你是要搬家的,还不是要扔掉!
+
+于是在 2016 年 10 月,纵然房价那么高,我还是做出了人生中第一笔大额消费——买房。交完订金的那晚,我和父母绕着即将建好的小区走了很久很久。谈不上高兴或者激动,只是心突然安定下来,就好象是茫茫大海中有了一座灯塔,你能看到方向,并且知道该往哪里走。
+
+于是在今年 8 月底,即将交房的前夕,我回到了南京开始另一段工作旅程。
+
+昨天看最新一期暴走漫画,王尼玛对那个咨询父母不让考研的小孩说,你要学会自己思考,自己去争取想要的东西来向父母证明他们错了。我想,我就是他口中那个不安定又矛盾的小孩吧,一方面,想趁着年轻出去闯闯;一方面,又对各种琐碎觉得委屈要找人求安慰,容不得半粒沙子。
+
+然而,很多事情,也只有经历过,吃过亏,才知道对错与否,不是么?
+
+**谨以此文纪念我那已逝的三年青葱岁月。**
diff --git a/source/_posts/2017-11-13.md b/source/_posts/2017-11-13.md
new file mode 100644
index 0000000..0fa5241
--- /dev/null
+++ b/source/_posts/2017-11-13.md
@@ -0,0 +1,57 @@
+---
+title: OneAPM 试用期工作小结(2015年)
+author: 雨帆
+tags:
+ - OneAPM
+categories: 学习
+permalink: first-three-month-in-oneapm
+featureImage: https://cat.yufan.me/cats/2016-12-11-60171084_p0.jpg
+date: 2017-11-13 02:52:00
+---
+
+最近整理文档,突然看到这份当年写的试用期述职PPT。当时才加入 OneAPM 什么都不知道,姜宁老师带着我步入微服务的大门,知道了 Gateway,了解了 Openresty。
+
+那个时候是 15 年年底,任何一个东西对我来说都是全新的领域。也借此认识了春哥,认识了今日头条的 Sumory 等人。对我来说这三个月的试用期弥足珍贵,因此我也在此将当时的种种一并分享出来,纪念当时那段年轻时光。
+
+
+
+[PPT 等文件下载](https://cat.yufan.me/work/oneapm-first-three-month-work.zip)
+
+![](https://cat.yufan.me/slide/first-three-month-in-oneapm/oneapm-three-month-work-001.jpeg)
+
+![](https://cat.yufan.me/slide/first-three-month-in-oneapm/oneapm-three-month-work-002.jpeg)
+
+![](https://cat.yufan.me/slide/first-three-month-in-oneapm/oneapm-three-month-work-003.jpeg)
+
+![](https://cat.yufan.me/slide/first-three-month-in-oneapm/oneapm-three-month-work-004.jpeg)
+
+![](https://cat.yufan.me/slide/first-three-month-in-oneapm/oneapm-three-month-work-005.jpeg)
+
+![](https://cat.yufan.me/slide/first-three-month-in-oneapm/oneapm-three-month-work-006.jpeg)
+
+![](https://cat.yufan.me/slide/first-three-month-in-oneapm/oneapm-three-month-work-007.jpeg)
+
+![](https://cat.yufan.me/slide/first-three-month-in-oneapm/oneapm-three-month-work-008.jpeg)
+
+![](https://cat.yufan.me/slide/first-three-month-in-oneapm/oneapm-three-month-work-009.jpeg)
+
+![](https://cat.yufan.me/slide/first-three-month-in-oneapm/oneapm-three-month-work-010.jpeg)
+
+![](https://cat.yufan.me/slide/first-three-month-in-oneapm/oneapm-three-month-work-011.jpeg)
+
+![](https://cat.yufan.me/slide/first-three-month-in-oneapm/oneapm-three-month-work-012.jpeg)
+
+![](https://cat.yufan.me/slide/first-three-month-in-oneapm/oneapm-three-month-work-013.jpeg)
+
+![](https://cat.yufan.me/slide/first-three-month-in-oneapm/oneapm-three-month-work-014.jpeg)
+
+![](https://cat.yufan.me/slide/first-three-month-in-oneapm/oneapm-three-month-work-015.jpeg)
+
+![](https://cat.yufan.me/slide/first-three-month-in-oneapm/oneapm-three-month-work-016.jpeg)
+
+![](https://cat.yufan.me/slide/first-three-month-in-oneapm/oneapm-three-month-work-017.jpeg)
+
+![](https://cat.yufan.me/slide/first-three-month-in-oneapm/oneapm-three-month-work-018.jpeg)
+
+![](https://cat.yufan.me/slide/first-three-month-in-oneapm/oneapm-three-month-work-019.jpeg)
+
diff --git a/source/_posts/2017-12-14.md b/source/_posts/2017-12-14.md
new file mode 100644
index 0000000..98f158a
--- /dev/null
+++ b/source/_posts/2017-12-14.md
@@ -0,0 +1,55 @@
+---
+title: 总得给自己留下点什么
+author: 雨帆
+tags:
+ - 杂思
+categories: 文章
+permalink: leave-some-by-myself
+featureImage: https://cat.yufan.me/cats/2017/12/13/64495434_p0.jpg
+date: 2017-12-14 02:41:00
+---
+
+网易云音乐一直是一个值得吐槽的地方,比如,它常常会认为你懂五国语言,动不动给你日推一些稀奇古怪的歌曲。因为我会日语,所以日推的大部分都是日文歌,还可以接受。但最近网易云音乐开始变本加厉,给我日推俄文歌,这实在是不能接受。
+
+一般我熬夜时,都喜欢开着网易云音乐听歌,不是说我多喜欢音乐,而是为了防困。精力专注的时候,歌曲就像是一种微噪音,你根本感知不到。有时也会听到一些不错的歌曲,下载收藏。
+
+
+
+{% aplayer "PLANET" "ラムシ" "https://media.yufan.me/musics/2017-12-15-01/PLANET.mp3" "https://media.yufan.me/musics/2017-12-15-01/PLANET-cover.jpg" "lrc:https://media.yufan.me/musics/2017-12-15-01/PLANET.lrc" %}
+
+周一时听到一首名为**[「PLANET」](http://music.163.com/#/song?id=812400)**的歌曲,前奏就十分抓耳,当时就立刻点击下载,可惜这歌竟然要付费。生在天朝,仗着自己从事 IT 相关的工作,最大的好处便是能免费搞到一些数字出版物。但我在谷歌、百度上查找甚久,竟找不到此曲的 320 Kbps 版本,不禁有些沮丧。
+
+在网易的「チーズ牛丼」(沙拉牛肉)上找到一篇关于「PLANET」的创作组合**「ラムジ」**的[介绍](http://music.163.com/#/topic?id=17639053)。 22 岁的山下佑树在过生日的时候,只因想要唱点什么东西来到东京,和报复不得施展的井上慎二郎桑如童话般在雨中相遇,并开始了长达 8 年的演艺事业。
+
+>当時、井上慎二郎に初めて出会ったとき、雨に濡れて震える子羊のような容姿だった為、当時の山下のイメージから羊を連想し、アニメの子羊キャラクターからラムジと命名。
+>
+>当时山下佑树遇到井上慎二郎,看到他被雨淋湿的姿态,联想到了动画《ラムヂーちゃん》里“子羊”这一角色,因决定采用ラムジ这一名字为组合名。
+
+一切都是那么巧合、随性,连乐队名都是以上面这么哭笑不得的[缘由][wikipedia-link]命名。然而,不是每个梦想都能瓜熟蒂落,ラムジ在 12 年便[宣布 13 年解散][oricon]。我翻遍他们为数不多的专辑、单曲,喜欢上的,也只有那首「PLANET」。
+
+可我还是不死心,我能感受到歌曲里那种热情和呼唤,那种渴望展露头角被大众所关注认识的心情。因为现在的我和当时的主唱山下佑树年龄相近,我更能感受到山下先生的期盼与绝望,两种矛盾心情交织下的悲伤心境。我翻遍脸书、推特、所有我所知道的社交网络,却没有找到任何关于山下佑树的信息。他随着ラムジ的解散,消失在大众眼里。即使是推特上,也很少有人提起。
+
+可是我还记得,就和他们的歌还在被人听被人唱一样,我还记得这么一个乐队,如流星般存在过。
+
+---
+
+前些天翻推特,看到有人说,大部分代码的存活时间只有 5 年不到。回想自己目前接手过的很多老项目,的确如此,在 OneAPM 上班的时候,兄弟部门的系统,一年重写了 2 次。自己维护的系统,也因个人的审美变化,在一年内留下了 3 种不同风格的代码。
+
+如果说乐队的解散,还能留下当时传唱的歌曲,那么程序的重写,可能就是彻彻底底的消失。那么,作为程序员,我们还能留下什么呢?
+
+**我想,只有编程思想吧。**
+
+记得 4 个月前带小弟写的 [SQL Generator](https://github.com/byWeaponLin/sql-generator)。核心的思想便是对当时业务 DSL 的抽象封装,还有函数式的变换思想。即使后面这部分代码废弃,我想它的定义还是能好好传递给每个维护过它的人吧。这个设计思路再精进,便是在[Language Implementation Patterns](https://pragprog.com/book/tpdsl/language-implementation-patterns) 里面提到的解析与生成的两种形态,虽然SQL Generator 独立于底层的解析器开发,但是最后二者的抽象结构,是惊人的一致的。
+
+同样的说法可以应用于程序设计的很多地方,比如说单元测试。我以前一直不知道什么是测试,怎么写测试。后面有意识地学习模仿后发现,单测无非也就是三大步。构造测试对象、测试数据,调用方法,断言。
+
+测试对象有些可能是 Mock 的接口,但一定不能是 Mock Static 的对象,存在的话说明你的代码抽象存在问题。测试数据,也叫样本,关键在于能命中边界条件。而断言,无非就是各种 `true` `false` `equals` 的判断,hamcrest 之类得无非是简化了判断过程而已,但切记慎用 Mock 里面的 `verify` 做断言。
+
+所以说,测试代码,再怎么变,逃离不了上面的编程方法,即使是别的编程语言,亦是如此。我很费解的是,在苏宁,看到我的同事写测试的时候,写的是一个 `main` 方法,用 `System.out.print` 输出结果人肉判断。因为上线有单测覆盖率要求,竟写出了针对实体 `Getter` `Setter` 方法的测试代码。这种测试代码,有存在的意义么?
+
+有时我觉得,编程就是一种体力活,想好了怎么设计,后面的编码加测试,纯粹是一种[肝][moegirl]的状态。有时候又觉得很多代码纯粹是套路(模板代码),只是因为某些需要不得不这么写。正如标题所言,总得给自己留下点什么。我希望给自己留下的,是那些有意思的设计思路,而不是那些**「垃圾代码」**。
+
+[wikipedia-link]:https://ja.wikipedia.org/wiki/%E3%83%A9%E3%83%A0%E3%82%B8_(%E6%AD%8C%E6%89%8B)
+[oricon]:https://www.oricon.co.jp/news/2020043/full/
+[moegirl]:https://zh.moegirl.org/%E7%88%86%E8%82%9D
+
diff --git a/source/_posts/2017-12-24.md b/source/_posts/2017-12-24.md
new file mode 100644
index 0000000..a3f7fec
--- /dev/null
+++ b/source/_posts/2017-12-24.md
@@ -0,0 +1,254 @@
+---
+title: 晴天娃娃(第一话)
+author: 雨帆
+tags:
+ - 小说
+categories: 小说
+permalink: teruteru-1
+featureImage: https://cat.yufan.me/cats/2017-12-24-01.jpg
+date: 2017-12-24 18:42:00
+---
+
+>送你一个晴天娃娃,你若安好,便是晴天。
+>——题记
+>**本故事纯属虚构,如有雷同,纯属放屁。**
+
+>记忆太散,故事太杂,我无法把那么多细枝末节串成一串,只能略带总结地回想。就好比花间十二声,你看着四季的风云变化,记述着个个回味的故事……
+
+
+
+## 零、缘,起
+
+故事那么长,写到关于你时,却又无话可说了。或许,本就不是会写故事的人。我们,终究什么也不算,对你的喜欢,还是败给了时间。承诺那么长,所有的约定都忘记了,或者与我无关。不管永远有多远,都要好好的幸福。
+
+我想把这些心情写给你,算是我给你的礼物。因为故事写在纸上,总会有结局,而放在心里,等不到结局……
+
+——致小简
+
+## 壹、缘,分
+
+小雨在学校公告栏后面偷偷贴上自己抄来的情诗:“我曾爱过这世上最美的侧脸!青春里的那么多思念,年少时的种种自以为是,可等到遇见你时,早已错过了你说的无爱不欢的年纪。”
+
+小时候,小雨总是喜欢围在妈妈们身边,听一些家长里短。很久之后,听小简分析儿童心理学,小雨才明白,人的性格都是打小养成的。小雨喜欢自己打小就养成的心灵手巧、文静安逸,但多愁善感的性格总感觉要不得。
+
+也许,这就是有那么多父母要注意胎教的起因。教育,不仅仅是要从娃娃抓起的。
+
+书上说的,十岁之前的小孩子没有性别之分,只有童性。有一个笑话讲的是,“医院里两个刚出生的婴儿在摇篮里,其中一个问另一个,‘你是男孩还是女孩?’另一个摇头。于是第一个爬过去看了一阵后回到自己的摇篮里对第二个说,‘我知道了,你是女的,我是男的。’知道为什么吗?因为你穿的是红袜子,我穿的是蓝袜子。”当小雨把这个故事讲给小简听的时候,电话那头的小简不置可否。
+
+传统文学老师说过,喜欢一个人,便要给喜欢的人讲笑话。那样就可以让自己喜欢的人每天都很开心。可是书上说的,所有的青梅竹马,都等不到彼年花开。不是因为彼此之间的不喜欢,只是因为太喜欢。
+
+远处传来清远的笛音,恍恍惚听不清,品不出音调中的喜怒,心中却莫名凄苦。一个人,太寂寞,难免会想什么。小雨想这个时间小简应该会在自习室埋头苦读,两耳不闻窗外事。
+
+想起自己第一个真正喜欢过的女孩,留着及腰的长发,浅浅的微笑。所以已经过了这么久,小雨还是喜欢在人群中留意有长长的头发的女孩。那个名为蓝雪的女生,只因为对小雨说过一声“谢谢”,便被小雨深深地喜欢上了。
+
+那年,小雨六年级。
+
+缘,分。
+
+## 贰、缘,散
+
+有一天,小雨在QQ上对小简说“我喜欢你”。小简问“喜欢什么”时,小雨却一时语塞,想了好久,还是不知道喜欢的是什么。其实,有些时候,连说喜欢你,都是一种奢求。明明可以感觉到的喜欢,却迟迟不愿意说出口。自以为是的结局,只有听到,才会刻骨铭心。
+
+就像小雨曾经骨气勇气给蓝雪写的信,一封又一封,最后有一天,还是忍不住送了出去。那以后的日子,小雨总是怀着忐忑的心情。研究说人在空闲的时候总是会忍不住看时间,那段时间,小雨会以猜中手机上的时间为一种运气。而与蓝雪不期的相遇,被小雨当作了生命里一场又一场永不落寞的电影,背景是泛红的落日,又或是昏暗灯光下黄绿色的法桐。
+
+美术老师说过,生活里不是缺少美,而是缺少发现美的眼睛。但当她面对小雨那抽象得一塌糊涂的大作时,却实在是发现不了什么地方是美的。也许这就和小雨认为所有的与蓝雪的不期而遇,只是因为每天都要在固定的时间去教室,固定的时间去吃饭,仅此而已。
+
+故事里面的那么多的坚持,只是因为彼此喜欢了吧。爱一个人或不爱一个人都不是说说就可以算的,总要给自己一个机会,习惯着放弃和接受。可故事毕竟是故事,所有的主角,只不过是女生,与小雨无关。
+
+在不懂爱的年纪,我们便已爱得死去活来,遍体凌伤,所有的措辞,只是因为第一眼的喜欢。曾经,总是要把喜欢和爱的界线分得那么清,一个天南,一个地北,没有交集,老死不相往来。谁说的,爱是淡淡的喜欢,喜欢是浅浅的爱。小雨总是以为,喜欢了,便要在一起,不喜欢,就算在一起,什么也算不上。可还是会为了那种浅浅的习惯所伤,努力付出了,却只是幻想。
+
+小雨在人群里找了一个又一个长得像蓝雪的女孩,因为知道长得像,所以知道不是她。物是人非,所以可以毫不顾忌地盯着你,可某天终究是不能再骗自己,会遇到一个让自己不好意思面对的女生。
+
+**过了那么多年,小雨依旧还是个害羞的小男生啊!**
+
+## 叁、路人
+
+初中毕业聚会的篝火映红了小雨的脸,因为靠得太近,脸上有种灼热的感觉。彩色的锡纸泛着翠绿的光,有种妖艳的色泽。那些一起有过交集的日子,在初中毕业分开之后,总是忘不掉,却也不能时时被想起。放在心里,落了灰尘。最后要那么努力才可以从新想起。
+
+谁说的,忘记一个人要比记得一个人更容易?小雨以为要用喜欢蓝雪等长的时间来忘记她的。忘记那个夏日,在宿舍门口看见她在水池边晾长长的头发。忘记春日里她在柳树下静谧的笑,洒了阳光,安静而好看的侧脸。忘记……
+
+小雨以为自己都懂的,所以从来都没有说过喜欢,可结局早就已经被预见。每次早操都会偷偷看她的侧脸,每次相遇她总是会低着头。写信告诉她,不喜欢她额前的刘海,不喜欢她戴眼镜的样子。她的回信,看了好多遍,可每次看,都还是那么认真,也从来不曾读懂。
+
+开始和蓝雪的舍友熟悉,没有拘束。小雨偶尔会在信里面问候她们,叫她们姐,偶尔会坐在一起聊天,话题简单,相互之间关心一下,见了面打个招呼,摆摆手。后来,蓝雪搬到学校旁边住,不再坐同一辆班车回家,日子久了,小雨渐渐地忘记是什么时候那么认真地喜欢过。只是,偶尔会在中午吃饭时听见蓝雪班里的人偶尔说起谁喜欢谁,听的人不置可否。那是年少时我们最喜欢玩的把戏,在一起说着谁喜欢谁,其实在意的人是自己而已。
+
+看着火苗燃尽,小雨把那根发丝也一并投到了火里。
+
+蓝雪在信里说,知道头发是别人要了之后给小雨的,可还是给了。那信的最后,为什么还是说:“让我们做最好的朋友?”
+
+有些话不说,我们就可以永远地在一起,算是朋友叫做蓝颜。可是还是说了出来,最后,我们成了路人,天南地北老死不相往来。
+
+## 肆、放手
+
+初中毕业后,小雨与蓝雪去了不同的学校,失去了蓝雪的消息。后来小雨听人说,原本两人都分到了同一所高中,只是蓝雪,转去了别的学校。没有结局,便匆匆放弃了。
+
+小简说:等待,不是要等某个人回来,而是找个理由让自己不离开。可小雨还是满怀期待,两所高中就算不能在一起,可还是会预见。错过便不再遇见,所以遇见便不能错过。
+
+再后来,蓝雪到小雨的学校找原来的同学玩,彼此便又见过几次。蓝雪剪了头发,依旧留着长长的刘海。小雨被人叫了过去见面,而两人之间却什么话也没有,连一句简单的问候都不愿意说出口了……
+
+原来有好多话,都只能写在纸上或者在心里默念。所以小雨会在心里无数次的构想过见到蓝雪之后该说些什么,可真正见面时,却又一句话都说不出口。
+
+总有些感情是要被遗忘掉的。曾经的刻骨铭心、海枯石烂,终究是抵不过时间的流转。一个人的独角戏,谢了幕,连眼泪都欠安。
+
+小简说:小雨,你就像个宝宝一样可爱。这句写在离别赠言上的话,让小雨开心了一夜。
+
+想没想过,喜欢你的和你喜欢的如果不是同一个人,你会选择谁?恋爱本来就是自卑者的游戏,总是小心翼翼地守护着微不足道的幸福。所有爱过的爱错的,终不过是自己的一厢情愿,终究还是自己受不起。
+
+## 伍、过客
+
+小雨注意到小简,是转到三十班后很长一段时间之后的事情了。
+
+那时小雨带着老大的不情愿回到熟悉的一中,就是在这破败的校园里度过初中三年时间。时隔半年,又回到这熟悉的谷底,可伊人不在,唯有相思。原以为刻骨铭心的喜欢,其实,什么也不算。
+
+很久之前就有学长开玩笑说,谈恋爱要趁早,不然好的都被抢走了。小雨想,也好,就用三年的时间来忘记蓝雪,与喜欢等长的时间,刚刚好。那时小雨第一次发现可以在校园里找到那么多熟悉的面孔,原本陌生的感觉也一点点地消逝。
+
+日子仿佛依旧沿着原来的轨迹,不会因为谁的出现或消失发生什么变化。依旧是紧张而繁重的学习,偶尔上课看小说,课间会做懒懒的广播操,会有无所事事的体育课,晚上宿舍里的打闹。
+
+忘记一个人最好的方法便是喜欢上另一个人。而每个人都是有故事的人……
+
+盈盈在打扫卫生时捡到吉祥写的情书,偷偷地看了。吉祥一味的单恋,便在班里天下大白了。不过当吉祥告诉小雨这件事让他帮忙时,小雨还是有些吃惊。帮忙这种事,记忆里好多人都做过,虽然实践告诉我们,最后那么多送花使者,都成了护花使者。
+
+那时,我们的认识是那么的狭隘,一个人,谁先说喜欢便可以占为己有,虽然爱本来就是自私的。
+
+小雨偶尔会跟着吉祥逛街,两个男孩,压过长长的马路,玩着Stand By Side(一部美国铁道电影)。小雨很少自己买东西,在餐厅吃饭时都要犹豫好久才能做出决定。每次吉祥问小雨关于衣服的观点,小雨都只能给出一句不置可否的回答,找不出任何可用的意义。
+
+有次吉祥拉着小雨去看手饰,挑着各种的耳环、戒指,又想起好久之前妈妈说过的送给姥姥娘一副豆瓣坠的事,还被夸很好看。妈妈说当时很高兴,只是早已是物是人非了。小雨早已习惯用忘记来逃脱痛苦了,只要不被提及,便可以安逸地苟活,直到最后便自以为真的忘记了。
+
+盈盈说不许小雨叫自己盈盈,所以那之后在一起的日子里,小雨只叫盈盈猴子。盈盈的名字:侯盈盈。猴子说,连那个谁,都没有允许他叫自己盈盈。
+
+谁说名字只是一个称呼?至少我们会在意某些人对自己的称呼,想让我的手机号在你的电话薄里有最亲昵的名字。
+
+那个谁,指的应该是大婶,小雨的上铺。
+
+高中男女不相往来的怪圈里,小雨以为三十班是个特例,因为他听过那么多女孩的故事。可故事总是故事,不是心事,自以为是。那么多年之后,对着熟悉的群组,却很少有人能出来说一句话。好多人都已忘记了名字,原以为熟悉的人群,只不过有三五个女生。
+
+花了那么长的时间来看忧伤的文字,小雨唯一能想起的只有小四在《夏至未至》里写下的:那个男孩会教会我成长,那个女孩教会我爱。
+
+原来,可以在记忆里留下名字的,只有可数的几个人。
+
+那个喜欢过你的人,永远比陪你说话的人更重要!
+
+## 陆、八卦
+
+每晚还是在宿舍里各种八卦,偶尔小雨会给大家讲蓝雪的事。吉祥跟袁袁的关系不咸不淡,因为大家都不怎么喜欢袁袁。小雨想告诉大婶猴子应该很喜欢他。不过时间、情节都不对,每次都会逗大婶说关于猴子的事情,心满意足地听他喊一声“滚”。
+
+吉祥说,袁袁喜欢班长,老毛。老毛就是宋国庆,据说生在国庆节,不过没人承认。吉祥说袁袁为了毛写了整本周杰伦的歌词。吉祥说他知道袁袁喜欢初中时的班长,毛是高中的班长,所以爱屋及乌地喜欢。喜欢一个人,就会不自觉地留意关于她(他)的一切。可更多的是臆测,越得不到,就越害怕失去。
+
+每晚,说完大婶,便会扯到吉祥的暗恋,可宿舍里的人都不喜欢袁袁。喜欢一个人便注定了会义无反顾,喜欢上所有的优缺点,至死不渝。
+
+小雨和袁袁是初中同学。小雨想起刚转到十三班的时候,袁袁他们那一群老同学便开始七嘴八舌地介绍班里的情况。袁袁介绍到班长时,已经顺带说出老毛已经有喜欢的人。喜欢一个人,连他喜欢谁都已经知道的一清二楚。有好多话,我们没说出口,我们以为别人会懂的,就像喜欢。可有时候却又要假装不懂,永远可以在一起,心与心的距离,不远,不近。
+
+高二开始,分班前的一场课,吉祥在讲台上唱《就是爱你》,同学们都在下面起哄。年少时的那点心思,谁也藏不住。对于谁喜欢谁之类的话,总是会很快就传开。又是用多大的勇气,孤注一掷。
+
+可是喜欢,与浪漫无关。
+
+小雨总是以为,吉祥与赵楠在一起,是不是有一部分原因是要报复袁袁。喜欢一个人,便是用自己所有的好来疼她,可从没想过那是不是她想要的。
+
+后来那么长的日子里,小雨听吉祥说着自己与赵楠的一切,每次碰见他们在食堂里吃饭。冬天,吉祥会去校门口买烤地瓜在教室里等着赵楠,放假时回早起送赵楠坐车回家。小雨相信吉祥喜欢上赵楠了,因为喜欢一个人,才愿意为她做所有的事。
+
+只有被喜欢,才会被接受。
+
+## 柒、换座
+
+雪雪说,调整座位的时候要和小雨一桌。
+
+高中班主任从大一一开学就开始严防死守,争取要把一切早恋扼杀在摇篮里。但却从来没有想过,这就像治水,堵不如疏。就好比大家常说的段子,我十年后连Log(n)是什么都不知道,但照样活得好好的,我们学的和我们工作需要用的知识,从来都不是同一种玩意。
+
+文理分科的前一个月,不知道是不是对于恋爱控制结果的绝望,班主任破罐子破摔,允许大家自主协调座位。
+
+后面小雨上了大学,工作。看了无数部青春电影,听了无数遍同桌的你,却总是忘不了那个要和自己同桌女孩——雪雪。雪雪总是喜欢开小雨的玩笑:小雨,你为什么总喜欢笑,那么开心。每次说完,总会装作大人的样子深沉地叹口气。
+
+那个时候雪雪和文娜一桌,吉祥说要和小雨一桌,但是小雨更喜欢和雪雪一桌。于是最后变为小雨告诉文娜,吉祥要和你一桌。
+
+但是,有了这么多的努力和借口,最终,都没有变为我们在一起同桌的理由。
+
+换座位的努力,最终还是无疾而终。
+
+不知道是不是因为即将分科,即将走向不一样的未来道路,那个时候,整个教室都是人心惶惶的。换座位,需要班长和团支书的同意,那个时候,老毛是班长,袁袁是团支书。小雨想和雪雪一桌,却最终还是没有勇气说出来。所以,就算多年后老毛和雪雪分手了,小雨和雪雪,什么也算不上。
+
+吉祥说,老毛小心眼的很,就像他不能允许赵芳与以前的同学说话一样。
+
+## 捌、路人
+
+星子是小雨的初中同学, 在毕业的同学录里写到:“我们算不算得上是个朋友?”那个傻傻的,说过几次话,在小雨和蓝雪的信中偶尔提及的女孩。自从初中毕业之后,便再也没有了联系。同学录里面的联系方式,又有几个能长久,又有几个被人尝试?
+
+孙超有一次问小雨,为什么会认识他的前女友星子?那个时候,小雨一愣神,又想起蓝雪,那个名字和雪雪相近的女孩……
+
+就算是过了那么久,那么久,某些人,还是会被你记得。
+
+女孩子喜欢让她笑的人,可真正爱的,却是让她哭的那个坏蛋。可是小雨怎么舍得让蓝雪哭呢?所以也只好守着她的微笑,看着她在人人网上晒着的满满幸福。
+
+## 玖、坏蛋
+
+宝很幸运地成为了被小雨带坏的唯一一个坏孩子。那个时候,小雨转到了三十班。周边的同学,除了原来熟悉的初中同学,还多了一个人,便是宝。这让小雨一度有种幻觉,宝是自己的高中校友。
+
+那个时候,小雨迷上了看小说,盗版的网络小说,路边摊买的,很厚的一大本。每买一本回教室分享时,围观的除了所谓的坏孩子,偶尔也会出现宝的影子。一来二去,宝和小雨成了好朋友。宝走读,小雨住校。在忙碌的高中生活里,走读生和住校生的交流玩到一起的,一般很少,很少。
+
+记忆中的高中似乎十分漫长,宝与小雨看了无数本小说,坑了无数把Dota,吃了学校里那么多难吃的馒头,也由此认识了许多许多女生。
+
+这个时候的女生宿舍因为学校扩招,位于校外,很多女生中午都不会回宿舍,而是选择买好饭在教室里吃。小雨跟着宝,在教室蹭过很多女生的菜。后来小雨回想起这段往事,还不得不感谢宝,如果不是他在,小雨在三十班里能说得上话的女生,不会超过五个。
+
+宝后面喜欢上小美,是在文理分科之后。那个时候小雨从来没想过宝会喜欢小美。因为小雨经常看见小美和别的男生在一起打打闹闹。知道宝喜欢小美的,除了小雨,还有一个女孩——宝的同桌小苗子。偶尔小苗子会拿小美的事打趣宝。
+
+他们常常会因为这件事斗嘴,吵闹,甚至一度让小雨产生一种他们在恋爱的错觉。然而,小苗子和宝的关系一直很好,很好很好,却也只是朋友。
+
+宝偶尔会和小雨说一些关于小苗子的事情,偶尔也会说,他一直都喜欢着小美。那个时候,已经高中毕业很久了。
+
+最后一次联系宝,他说,他遇见一个叫小迪的,和小美很像,他要和小迪在一起了。
+
+## 拾、如果当时
+
+吉祥偶尔提起,孙超和石玉好了。小雨一脸茫然,彼年,小雨在石玉和孙超中间,却完全没有发觉。
+
+其实,好多人,好多事情,总是与你无关的。曾想要那么努力地进入其中,最后,终究还是过眼云烟。时间久了,联系少了,关系便越来越淡了。流年里所有喜欢过的人或物,终究还是要搁浅。那时的岁月,如指尖砂轻轻划过,握紧时划痛手心,错过时,才知道喜欢的味道。
+
+就好比学长谈起投资时,拿一见钟情举例,说一见钟情就是那种投资快,见效快。完全不符合社会规律,终究不会有什么好的结果。然而,不管过了多少年,小雨还是为QQ里阳阳的笑所打动。因为,喜欢一个人,不需要什么理由。想起的,总是第一次喜欢的样子,第一次被打动的瞬间。
+
+小雨对阳阳说,“忘记一个人的方法就是喜欢上另一个人。”阳阳说,“那你好好努力,让我喜欢上你忘记他。”
+
+小雨告诉宝,他网恋了。喜欢一个人的时,便想让最亲密的好友知道,得到他们的祝福。就算是不喜欢,有没有一刻,会为某个人感动,想要牵起她的手,天荒地老?
+
+小雨不知道,小雨只记得把《如果当时》的歌词抄给阳阳时,语音里的阳阳笑着说,“好喜欢这首歌,谢谢。”不由想起了以前那个对自己说谢谢的女孩,阳阳说:“自己也留着长长的头发。”
+
+开始喜欢上阳阳,偷偷地给阳阳设置了隐身对其可见,每次看见阳阳的灰色头像跳动,小雨总是觉得两个人之间有些小隔阂。却从未想过自己从来不曾隐身,隐身对其可见形同虚设。
+
+多少年后,小雨在聚餐玩真心话大冒险时,对一个女生说:“我喜欢你,你喜欢我吗?”
+
+那么是什么时候开始,对女生说喜欢也不会脸红了?
+
+很早之前,小雨问阿太:“老和女生打电话都是说些什么?”那个时候,阿太和他妹保持每天两个小时飞信,两个小时电话。小雨说,阿太嫣然成为一个可以顶礼膜拜的对象。
+
+其实,小雨只是厌倦了每晚与阳阳那么长的通话……
+
+## 拾壹、分手快乐
+
+幸福,一直都是自己要找到却又得不到的东西。柏拉图的永恒里面说的,“喜欢一个人,只要能陪着,看着她幸福就可以了。”说的也许就是这样的情形吧。习惯了喜欢,习惯了习惯。谁和谁说好的,相互陪伴,终老一生?
+
+“你说害怕让我看见你白发的样子,最后连你的样子,都没有看见。”错过了,便是错过了。
+
+小雨开始给阳阳打电话,相互沉默。偶尔会发一条短信祝彼此晚安,可那么亲昵的话,无论如何也开不了口。说过一百零一次晚安的人会一辈子在一起,就像是一个一千零一夜的童话传说。
+
+小简在小雨的世界里那么突兀的出现,在小雨就要快忘记蓝雪的时候,突兀到让小雨回想起那么刻骨铭心的喜欢。
+
+小简说:“一个人心里只能放得下一个人的位子,连其他人的影子,都找不到位置来搁置。”那个曾经那么喜欢过的影子,就这么远了。爱情里,多一点点,便已是一场错过。
+
+最后一次和阳阳通话,她哭着对小雨说:“你也曾经喜欢过我吧。”
+
+电话里阳阳哭起来的声音,有点哽,让人有种心酸的感觉。小雨想起阳阳曾经说的,你喜欢的女孩一定有好看的侧脸,因为我喜欢你说的那句“我曾爱过这世上最美的侧脸。”
+
+>“你说让我喜欢上你,真的做好了。”
+>
+>“你给我写的歌词,我好喜欢。”
+>
+>“晚安。”
+>
+>“你有没有,喜欢过我,哪怕一瞬也好?”
+
+时间过了那么久,小雨忘了是哪个混蛋说过,“放手,让彼此好好的过。”一直以为说祝福是最假的东西。就像是阳阳对小雨说,她的前男友又来找她了,他们又在一起了。
+
+原来,说祝福真的很假。尽管,最后还是没有把祝福的话说出口。
+
+>“小孩,我们的幸福,只能是我给的。”
+
+曾经那么多我们爱的人,最后都爱不了。曾经那么多爱我们的人,最后都不爱了。
+
+那个为自己流过泪的女孩,就那么不在了。
diff --git a/source/_posts/2018-01-13.md b/source/_posts/2018-01-13.md
new file mode 100644
index 0000000..149e2c0
--- /dev/null
+++ b/source/_posts/2018-01-13.md
@@ -0,0 +1,174 @@
+---
+title: 晴天娃娃(第二话)
+author: 雨帆
+tags:
+ - 小说
+categories: 小说
+permalink: teruteru-2
+featureImage: https://cat.yufan.me/cats/66312812_p0.jpg
+date: 2018-01-13 19:42:00
+---
+
+## 拾贰、樱花开了——小简
+
+小雨曾在笔记本的扉页上写道:“樱花不及樱桃,相见不如想念。”彼时大明湖畔的春天,似乎在下着一场樱花雪,小雨在电话这头跟小简说,本来想在今天去见你的。而两人相处的十九公里的距离,遥远地像是天各一方。最后,只能是相忘于江湖,老死不相往来。
+
+多年以后,小雨又想起那年春天,有点惆怅,又有些欢喜。错过了一场花雨中漫步的浪漫,换来了一个星期的顺延。
+
+小简说:“小雨,你是我的蓝颜。”
+
+
+
+“失去了你,只是因为你换了手机号,把我从你的好友列表中删去,会不会忘记我比做这些还要容易?”小雨早该习惯忘了小简的。只是,每次在快要忘记的时候,她总是会出现,在快要喜欢上她的时候,再消失……
+
+小雨在与蓝雪分开后曾想写一个故事。关于自己的故事,幸福总是会让人变懒散掉。小雨只相信着痛苦过后的人生感慨,看过一本又一本印着青春文学的书,相同的故事,会遇见不同的影子。
+
+小简说:“小雨你快点写出来,我第一个看。”
+
+可是,我们把那么多的沉默当作默认,那么多的沉默当成喜欢。那么轻易地忘记自己许下的承诺,却又害怕别人忘记对自己的承诺。
+
+谁又在乎得了谁的在乎?
+
+最后连最后也忘记了。
+
+>小简对小雨说:“他要和别的女人结婚了,可是为什么被辜负的是她自己?”
+>
+>小简问:“相不相信这个世界上的存在某种诅咒,能让他立刻死去。”
+>
+>小简说:“小雨,谢谢你陪着我说话,**我们是最好的朋友。**”
+
+小雨看了小简那篇日志,她说:“八十岁之后,'她'死了,我便可以和他在一起了,没有人能挡在我和他之间了。”
+
+宝说过,喜欢一个人便是从看他的日志开始的。
+
+多年以后,你未嫁,我未娶。我们可不可以在一起?
+
+## 拾叁、毕业季
+
+我们轻易说过的永远,永远都抵不过时光。
+
+那年夏天,小雨看着小简说,以后记得照一张照片给我。要侧脸的,还要有满满的阳光。
+
+那年夏天,小雨还是没有和雪雪一桌,就算那以后那么长的日子里。小雨每次见到雪雪还是喜欢拍一下她的头。年少时我们有那么多亲昵的暧昧,不知是无意还是刻意。
+
+那时候老毛已经和文娜在一起,一起吃饭,在不长的校后林荫散步,一起去水房打水。
+
+距离小雨烧掉用一个暑假写的一整本日记的信,已经一整个夏天一整个冬天了。
+
+雪雪高三分班后的教室就在小雨的教室下面,有一次先是雪雪一个班都感冒了,后来了小雨一个班也跟着感冒了。
+
+我们从来不知道,其实,我们每天都呼吸着相同的空气。心和心的距离,为何如此遥远呢?
+
+高三毕业后,娟才告诉小雨她早已不再上学。之前她告诉小雨的所有关于学校的故事,都只是故事而已。
+
+此时正是大学第一年的寒假,吃完年夜饭,窗外是鞭炮的噼里啪啦,屋内是爸爸妈妈的家长里短。小雨抱着手机,耗光一格又一格的电,像是海中即将溺死的鱼。只是谁也没注意到,小雨眼中执意不想落下的泪水。
+
+娟说,她现在也在看春晚,顺便绣一对抱枕。
+
+后来小雨与小简说起娟,说到这段往事,小简在电话那头说她也在绣一对抱枕,她要和“他”结婚了。
+
+你永远猜不出自己有多少勇气做到自己永远做不到的事情。小简说起自己的故事,一个人,一生中第一次坐那么久的火车,去一个从未踏足的陌生地方,去见他的家长。
+
+分开半年,谁也没有忘记谁。只是不管遇到谁,都让小雨伤心。
+
+## 拾肆、忘记
+
+高中三年,小简与娟做了两年同桌,第三年,楼上楼下。
+
+小简说起高三时两个人在一起的过往,而小雨关于她们的记忆,都留在那个夏天,之前之后,早已成了空白。
+
+高一那年,小雨和吉祥注意到娟,吉祥开玩笑说,让娟和他在一起。
+
+但仿佛对某些人,从一开始,便注定了认为不合适。不管怎样,都不认为两个人之间会在一起。所以,两个人在小雨的同学录里,都写下了同样的话:“小雨,下次见面,要记得领一个漂亮媳妇给我们看。”
+
+那些说好的记得的幸福,永远都与我们无关,故事从开始到结尾,都只有你、我这两个称谓,从不曾出现过我们。
+
+记忆里那么亲昵的举动,也不过是只限于课间说会话,偶尔见面会拍一下头。仅此而已,都不算得了什么。
+
+许多时候,那些我们认为一辈子都忘不了的东西,就那样轻易地被忘记了。
+
+记得一个人,恨永远比喜欢来的久些,因为不恨了,所以不爱了。
+
+故事到了最后还是故事,只是到了最后,忘了是什么故事,什么是真实出现过的现实。梦想交织过后的现实,留着你的影子,其他的,都已看不见了。
+
+**Bad End!**
+
+----
+
+> Happy End 线过渡章节
+
+## 拾伍、那年多时
+
+阳光穿过攘攘的人群,透过一幕幕剪影,脑海中映出的一个个面孔,或喜或悲。
+
+喧闹的夜晚,不够晴朗的天空,躁动的空气充满了不安分的因子。人群中那么多的欢闹,只不过是散场的前奏,留下的,记住的,那么多年以后还剩下什么呢?剩下的,只是些对那年那些青春岁月的怀念,还有偶尔会想起的你好看的侧脸。
+
+最后,我和你还是走失在人群中,像极了缘分两个字。却永远都不是,都不可能在一起。
+
+当毕业晚会唱到《老男孩》的时候,小雨想这个时候应该会有很多人哭。坐在会场后排,只听得见音响传来的响动,夹杂着间或响起的掌声以及人群里的私语。
+
+因为有太多的人站在凳子上,挡住了小雨的视线看不清晚会的横幅。但是猜也能猜到,应该有“毕业生”和“晚会”两个词,在昏暗的灯光下若隐若现。台下那么多的喧嚣,让人看不出任何分别与不舍,也许从这里离开时的我们,还有着我们的梦想,我们喜欢的人。
+
+还是,所有的美好,都只是强颜欢笑?
+
+社团换届大会上,小雨猛然发现,不久之后,便要作为学长迎接可爱的学弟学妹们了。
+
+离遇见你,已经过去一年了。
+
+喜欢你,只是一时兴起,等着你爱上我,却是那么地痛苦于甜蜜。偶尔看到一张书签,等待,不是等某个人回来,而是找个理由不离开。
+
+已经要那么努力才能够想起我以前幻想的我们的未来。
+
+搁下笔好久了,写不成想要的故事,总是变成说教的文字。你,会厌烦的吧。
+
+## 拾陆、记忆里的故事
+
+年少的我们路过那个叫做花季的季节,等我想起你的时候,所有的花已经谢了。
+
+驻在过道里上仔细,微风,偶尔有阵大风卷过,吹起桌上的试卷,飘出好远,也不会有人理会。
+
+小雨又想起娟好久之前说过的,已经是大人了,要穿成熟的衣服了。而记忆里,小雨很少看见女生穿裙子的样子,又错过了一场花季里美好的回忆。
+
+妈妈在家翻箱倒柜地倒腾出小时候穿的衣服,准备丢掉。有那么一个瞬间,小雨想要把衣服留着,给自己未来的孩子。
+
+可以那么笃定未来不曾谋面的孩子会长得很可爱。记忆里会想起自己小时候穿着裙子招摇过市的样子。
+
+可放在记忆里那么久了,久到自己都会怀疑记忆里会不会出现问题。
+
+小雨一直都像是女孩子,那么小心眼。——不是故意要把女孩子和小心眼牵扯到一起。
+
+看书的时候不喜欢在书上留下折痕,看到别人弄皱自己的书会心痛。呵呵,现在的书纸张好厚,不用担心了。
+
+相信一切关于美好的传言,就算错过了一场有一场流星雨,还是坚信对着流星许愿会实现。因为小雨自己许下的是:我们永远在一起。
+
+想让自己喜欢的人喜欢上自己的所有,书、电影、笑话……
+
+偶尔会想,会不会在我放弃喜欢你的时候,你喜欢上我?
+
+某年,你问起为何笑得越来越少。我说,总是笑会变老的。我们说过的那么多话,说不清楚了,误会了,又怪谁呢?
+
+亲爱的,你不在我身边,我怎么笑呢?
+
+## 拾柒、幸福的样子
+
+小雨想起那年在同学录上写下的自己想要的礼物是一条手链。很少有见男孩子戴手链的,小时候小雨总是喜欢在手腕上画一个小小的手表。就那样靠在父母怀里撒娇耍小脾气。
+
+一转眼,自己已经长大了。
+
+已经有好久,不再撒娇了。
+
+很久之前编好的那一对手链,还在抽屉里,褪了色,沾了灰尘。洗了很多遍,还是没能洗净。
+
+也许,永远都不会去买一个招财猫送给云儿来补一个生日礼物,也永远会欠她一个晴天娃娃。
+
+好多东西,不是说说就可以算的。
+
+一直都没说过,祝你的幸福,是要由我来给你的。不是一时兴起,心血来潮。
+
+可不可以,某天,让我看见你的幸福是什么样子?
+
+那些与你有关的心情,开心的,不开心的。伤心的,不伤心的,都跟你没有关系。
+
+已经可以不用假装便可以忽略掉。
+
+**Happy End**
diff --git a/source/_posts/2018-01-19.md b/source/_posts/2018-01-19.md
new file mode 100644
index 0000000..e9190c3
--- /dev/null
+++ b/source/_posts/2018-01-19.md
@@ -0,0 +1,28 @@
+---
+title: 編碼三境界
+author: 雨帆
+tags:
+ - 編程
+categories: 学习
+permalink: three-stage-of-programming
+featureImage: https://cat.yufan.me/cats/66764420_p0.png
+date: 2018-01-19 17:20:00
+---
+
+編碼三境界:
+
+```
+由少寫多 (開始懂得寫代碼)
+由多寫少 (有意識地精簡優化邏輯)
+由少寫多 (理解抽象設計)
+```
+
+
+
+很多人停留在第一階段,也就是能寫出來,能用。但是代碼邏輯不精簡,質量一般,同時雜亂無章。典型的特點是寫之前毫無想法,隨想隨寫。
+
+第二階段是指,有意識地去精簡邏輯,簡化思路。但是代碼因為刻意地精簡,反而不好維護。寫出來的很多細節異常考慮均不到位。很多人甚至走上刻意追求簡潔的道路,寫出極其難看的麵條代碼。
+
+第三階段,寫之前需求清晰,考慮到了各種未來擴展可能,適度抽象,邏輯條理。好的代碼,不一定是最簡潔的代碼,但一定是最好維護的代碼,同時也是最好擴展的代碼。
+
+所以,我發現一個特點,好代碼,其編程風格都是相似的。寫代碼關鍵在於思路,在於你想要什麼,要寫什麼。沒想法寫出來的代碼,再好看都沒用。
diff --git a/source/_posts/2018-12-22.md b/source/_posts/2018-12-22.md
new file mode 100644
index 0000000..f12cfcf
--- /dev/null
+++ b/source/_posts/2018-12-22.md
@@ -0,0 +1,42 @@
+---
+title: 烟花散 · 花非花
+author: 雨帆
+tags:
+ - 文字
+categories: 文章
+permalink: hanabi-ga-hana-jyanai
+featureImage: https://cat.yufan.me/cats/2018-12-22-01.jpg
+date: 2018-12-22 21:15:03
+---
+
+花非花,雾非雾。夜半来,天明去,来如春梦几多时,去似朝云无觅处。
+
+最难解的的确是闲愁,才去春花,落红满径,便有月照窗纱,倦理琵琶的愁情。
+
+自古愁情如一江春水流不尽。黛玉惜花、葬花,叹花无觅处。花开花落本自然之理,黛玉却愁上眉头,吟出“侬今葬花笑人痴,他年葬侬知是谁”的凄凉。李清照夫妻相别苦相思,独自一人把酒黄昏后,闲愁甚是撩人,消得人比黄花瘦。
+
+
+
+闲愁似水般剪不断。春去时添一段闲愁,撩人窗前披月;雁过时寄一份闲愁,思念断人肠。一声长叹,倒不如对酒当歌,去了肝肠寸断,换得醉意朦胧,且管他欲说还休的闲愁!
+
+---
+
+
+
+世间的沧海桑田的变化就像那奔马般匆促,谁的生命会永远停在烟花绽放的瞬间?谁又会悄然隐去,竹林深处,留一抹孤寂而洒脱的身影?
+
+杨家女一朝选在君王侧,以一顾倾城,再顾倾国姿色使君王从此不早朝。箫鼓声声,长夜尤梦,似这般恩宠骄奢的生活永无尽日。奈何“渔阳鼙鼓动地来,惊破霓裳羽衣曲”,君王有心无力,终被赐死马嵬坡以塞天下怒!尘埃落定,繁华散尽,阴阳两隔。旧事如流水,过往如烟云,道不出荒凉。
+
+世变无涯,是陆游笔下与唐婉重逢时的悔,是杜牧“十年一觉扬州梦,赢得青楼薄幸名”的自嘲,是张爱玲笔下曼桢14年的生死别离。
+
+一掬清泪,缠绵了亘古的哀怨。
+
+---
+
+岁月的脚步不停地惊扰悠远的长梦。佛说“世人不知有因果,因果何曾饶过谁”。看不透这世间的因果,便尝尽苦楚,换得人蒙尘,心蒙垢。
+
+生命不过是张爱玲所说的一袭华美的袍,盛装而来,如转瞬即逝的烟火,争得刹那辉煌。
+
+既然人生注定如戏,也就没什么可黯然的了。黛玉虽苦,却耗尽宝玉一生的真情。琵琶女虽苦,却有“五陵年少争缠头,一曲红绡不知数”的年少。如花虽怜,还有一低眉,一抬眼的两情相悦。
+
+浮生如梦,却也终有不愿醒的时候,叹的是看戏人,迷的是戏中人,各有烟花尽落的快活。
diff --git a/source/about/index.md b/source/about/index.md
new file mode 100644
index 0000000..71aea30
--- /dev/null
+++ b/source/about/index.md
@@ -0,0 +1,58 @@
+---
+title: 关于我
+date: 2017-05-03 21:27:50
+comments: false
+featureImage: https://cat.yufan.me/cats/20130101180005.jpg
+---
+
+{% aplayer "アイロニ" "暧昧ばんび~な" "https://media.yufan.me/musics/2018-05-06-01/%e3%82%a2%e3%82%a4%e3%83%ad%e3%83%8b.mp3" "https://media.yufan.me/musics/2018-05-06-01/%e3%82%a2%e3%82%a4%e3%83%ad%e3%83%8b.jpg" "lrc:https://media.yufan.me/musics/2018-05-06-01/%e3%82%a2%e3%82%a4%e3%83%ad%e3%83%8b.lrc" %}
+
+2007年,我开始写Blog,第一个Blog名字叫做“雨帆”。
+
+2011年,我开始用Wordpress写博客,起的第一个名字也叫“雨帆”。
+
+“雨帆”在我的字典里并没有特别的意义,它只代表着我真实的名字,我亲爱的父母为我起的乳名。
+
+2012年5月,在间隔了八个月后,我在博客发布了只有一张404的照片。同时,我将那个Blog的简介改成了“暂时离开”。自那之后,便准备放弃更新。
+
+我累了,因为我已不再年轻。
+
+当我抱怨没有人在自己的Blog上留言的时候,并没有想到使自己写作陷入停滞状态的并不是那些不留言的访客们。原因仅仅只是,在我心里,自己已经不再年轻。日复一日地思考,日复一日地剖析着内心的情感,久了,也就累了。做完一天的实验,写完长长的代码串后,便是漫长的发呆,望着空荡荡的后台不知如何下笔。写了、删除,然后重新是一样的动作。
+
+许巍在《那一年》唱道:“这么多年你还在不停奔跑,眼看着明天依然虚无缥缈,在生存面前那纯洁的理想,原来是那么脆弱不堪。”
+
+真是这样吗?对于我而言,情况似乎还没有那么糟糕。
+
+我仍然热爱着写作,热爱着那些相似博主,我也正试图让自己重燃对进步的渴望。
+
+“你曾拥有一些英雄的梦想,好象黑夜里面温暖的灯光;怎能没有了希望的力量,只能够挺胸勇往直前。”
+
+且听书吟是关于雨帆的生活态度,雨帆的故事将在这里书写。
+
+不再有迷茫、无奈,我愿意重新亲近这个自留地,让自己的名字带上我的每一天。
+
+雨帆就是我,一直很年轻的孩子。
+
+——About Me
+
+![](https://cat.yufan.me/cats/2017-05-03-IMG_0679.JPG)
+
+**2017-05-03 更新**
+
+俗话说:“程序员有一条很可怕的鄙视链,基本上是写Haskel的鄙视Lisp,Lisp鄙视Scheme,Scheme鄙视Ruby,Ruby鄙视Python,Python鄙视C,C鄙视C++,C++鄙视Java,最后Java可怜兮兮的看看做.Net的,.Net当然也不甘寂寞,对一旁的美工投去了无限的鄙视。周末美工带着女朋友去公园,一帮在鄙视链顶端的傻逼还在加班。”
+
+而说实话,鄙人就是一个写Java的屌丝程序员,目前就职于北京蓝海讯通科技股份有限公司,主要岗位是初级Java开发工程师。很多人都认为我是女生,认为我是文科生,我表示很无奈。其实我一直都很喜欢的化学和计算机,这也是我大学学习软件工程的原因。由于昔日高中毕业后突然喜欢上文艺,所以此博客早期的文章或多或少都有点那种“意思”。写得多了,也就改不过来了。
+
+可是,鄙人真正想写的东西其实还是和专业有关的技术文章,如果专门写在此博客就有点不伦不类,如果把昔日的博文删了重写技术文又有点舍不得。于是也就有了我的新的博客 [Ameho.Me](https://ameho.me/)
+
+俗话说,人不中二枉少年,小生也曾经一段时间徘徊于二次元世界,至今依旧喜欢看动画。由于受日本文化迫害较深,常常会从嘴里冒出一两句不知所云的日语来卖萌,被基友狠狠吐槽。久而久之,养成抖M性格,很多时候,我会去别的博客以“无知”的留言来卖萌,例:“博主好厉害啊,小菜表示什么都不懂”之类的。而其实,鄙人自认为在与电脑有关的领域掌握颇深,所以对于技术一类的文章如果见到鄙人的留言,基本都是坐等被吐槽的。
+
+写了这么多,我想一定没人当我是女生了吧。好开心~!
+
+![](https://cat.yufan.me/cats/2017-05-03-IMG_0163.JPG)
+
+**博客存活时间**
+
+
+
+本站已运行 ****
\ No newline at end of file
diff --git a/source/favicon.ico b/source/favicon.ico
new file mode 100644
index 0000000..dbc7711
Binary files /dev/null and b/source/favicon.ico differ
diff --git a/source/gallery/index.md b/source/gallery/index.md
new file mode 100644
index 0000000..5e06446
--- /dev/null
+++ b/source/gallery/index.md
@@ -0,0 +1,5 @@
+---
+title: 图库
+date: 2018-05-06 06:38:50
+layout: gallery
+---
\ No newline at end of file
diff --git a/source/links/index.md b/source/links/index.md
new file mode 100644
index 0000000..f6a081c
--- /dev/null
+++ b/source/links/index.md
@@ -0,0 +1,6 @@
+---
+title: 友情链接
+date: 2018-05-06 05:38:50
+layout: links
+description: 这里是 雨帆 的好伙伴们~
+---
\ No newline at end of file
diff --git a/source/search/index.md b/source/search/index.md
new file mode 100644
index 0000000..d89dc1f
--- /dev/null
+++ b/source/search/index.md
@@ -0,0 +1,6 @@
+---
+title: 搜索
+date: 2018-05-06 06:57:50
+layout: search
+description: 在 且听书吟 上搜索
+---
\ No newline at end of file
diff --git a/source/tags/index.md b/source/tags/index.md
new file mode 100644
index 0000000..b451008
--- /dev/null
+++ b/source/tags/index.md
@@ -0,0 +1,7 @@
+---
+title: 标签页
+date: 2017-05-03 20:07:52
+layout: tags
+description: 且听书吟的标签云
+comments: false
+---
diff --git a/themes/spectre/.eslintrc.json b/themes/spectre/.eslintrc.json
new file mode 100644
index 0000000..df0ef6a
--- /dev/null
+++ b/themes/spectre/.eslintrc.json
@@ -0,0 +1,6 @@
+{
+ "extends": "airbnb-base",
+ "plugins": [
+ "import"
+ ]
+}
\ No newline at end of file
diff --git a/themes/spectre/.gitignore b/themes/spectre/.gitignore
new file mode 100644
index 0000000..7bb2317
--- /dev/null
+++ b/themes/spectre/.gitignore
@@ -0,0 +1,5 @@
+.DS_Store
+npm-debug.log
+node_modules
+.idea
+.directory
\ No newline at end of file
diff --git a/themes/spectre/LICENSE b/themes/spectre/LICENSE
new file mode 100644
index 0000000..9cecc1d
--- /dev/null
+++ b/themes/spectre/LICENSE
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ {one line to give the program's name and a brief idea of what it does.}
+ Copyright (C) {year} {name of author}
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ {project} Copyright (C) {year} {fullname}
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+ .
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+.
diff --git a/themes/spectre/README.md b/themes/spectre/README.md
new file mode 100644
index 0000000..c99087f
--- /dev/null
+++ b/themes/spectre/README.md
@@ -0,0 +1,20 @@
+Spectre Theme
+
+
\ No newline at end of file
diff --git a/themes/spectre/layout/_pages/links.ejs b/themes/spectre/layout/_pages/links.ejs
new file mode 100644
index 0000000..32826ea
--- /dev/null
+++ b/themes/spectre/layout/_pages/links.ejs
@@ -0,0 +1,25 @@
+
diff --git a/themes/spectre/layout/_pages/post.ejs b/themes/spectre/layout/_pages/post.ejs
new file mode 100644
index 0000000..0bf94a2
--- /dev/null
+++ b/themes/spectre/layout/_pages/post.ejs
@@ -0,0 +1,50 @@
+
\ No newline at end of file
diff --git a/themes/spectre/layout/_pages/search.ejs b/themes/spectre/layout/_pages/search.ejs
new file mode 100644
index 0000000..eb50845
--- /dev/null
+++ b/themes/spectre/layout/_pages/search.ejs
@@ -0,0 +1,129 @@
+
+
+
\ No newline at end of file
diff --git a/themes/spectre/layout/_pages/tagcloud.ejs b/themes/spectre/layout/_pages/tagcloud.ejs
new file mode 100644
index 0000000..51c8796
--- /dev/null
+++ b/themes/spectre/layout/_pages/tagcloud.ejs
@@ -0,0 +1,38 @@
+
+
+
+ <%- tagcloud({
+ min_font: 16,
+ max_font: 35,
+ amount: 9999,
+ color: true,
+ start_color: '#757575',
+ end_color: '#212121',
+ }) %>
+
\ No newline at end of file
diff --git a/themes/spectre/layout/_pages/timeline.ejs b/themes/spectre/layout/_pages/timeline.ejs
new file mode 100644
index 0000000..a6b66d2
--- /dev/null
+++ b/themes/spectre/layout/_pages/timeline.ejs
@@ -0,0 +1,73 @@
+
diff --git a/themes/spectre/layout/_partial/footer.ejs b/themes/spectre/layout/_partial/footer.ejs
new file mode 100644
index 0000000..8cbf198
--- /dev/null
+++ b/themes/spectre/layout/_partial/footer.ejs
@@ -0,0 +1,21 @@
+
\ No newline at end of file
diff --git a/themes/spectre/layout/_partial/footer/left-sns-list.ejs b/themes/spectre/layout/_partial/footer/left-sns-list.ejs
new file mode 100644
index 0000000..f230327
--- /dev/null
+++ b/themes/spectre/layout/_partial/footer/left-sns-list.ejs
@@ -0,0 +1,77 @@
+
+<% if(theme.footer.sns.twitter) { %>
+
+
+<% } %>
+
+
+<% if(theme.footer.sns.facebook) { %>
+
+
+<% } %>
+
+
+<% if(theme.footer.sns.googleplus) { %>
+
+
+<% } %>
+
+
+<% if(theme.footer.sns.weibo) { %>
+
+
+<% } %>
+
+
+<% if(theme.footer.sns.instagram) { %>
+
+
+<% } %>
+
+
+<% if(theme.footer.sns.tumblr) { %>
+
+
+<% } %>
+
+
+<% if(theme.footer.sns.github) { %>
+
+
+<% } %>
+
+
+<% if(theme.footer.sns.linkedin) { %>
+
+
+<% } %>
+
+
+<% if(theme.footer.sns.zhihu) { %>
+
+
+<% } %>
+
+
+<% if(theme.footer.sns.bilibili) { %>
+
+
+<% } %>
+
+
+<% if(theme.footer.sns.telegram) { %>
+
+
+<% } %>
+
+
+<% if(theme.footer.sns.v2ex) { %>
+
+
+<% } %>
+
+
+<% if(theme.footer.sns.segmentfault) { %>
+
+
+<% } %>
\ No newline at end of file
diff --git a/themes/spectre/layout/_partial/head.ejs b/themes/spectre/layout/_partial/head.ejs
new file mode 100644
index 0000000..8b6d009
--- /dev/null
+++ b/themes/spectre/layout/_partial/head.ejs
@@ -0,0 +1,61 @@
+
+<% } %>
diff --git a/themes/spectre/layout/_partial/index/author_info.ejs b/themes/spectre/layout/_partial/index/author_info.ejs
new file mode 100644
index 0000000..6281921
--- /dev/null
+++ b/themes/spectre/layout/_partial/index/author_info.ejs
@@ -0,0 +1,18 @@
+
\ No newline at end of file
diff --git a/themes/spectre/layout/_partial/index/daily_pic.ejs b/themes/spectre/layout/_partial/index/daily_pic.ejs
new file mode 100644
index 0000000..fc8c053
--- /dev/null
+++ b/themes/spectre/layout/_partial/index/daily_pic.ejs
@@ -0,0 +1,13 @@
+
\ No newline at end of file
diff --git a/themes/spectre/layout/_partial/menu/index-menu.ejs b/themes/spectre/layout/_partial/menu/index-menu.ejs
new file mode 100644
index 0000000..dfae470
--- /dev/null
+++ b/themes/spectre/layout/_partial/menu/index-menu.ejs
@@ -0,0 +1,12 @@
+
\ No newline at end of file
diff --git a/themes/spectre/layout/_partial/menu/index-share.ejs b/themes/spectre/layout/_partial/menu/index-share.ejs
new file mode 100644
index 0000000..0b5640e
--- /dev/null
+++ b/themes/spectre/layout/_partial/menu/index-share.ejs
@@ -0,0 +1,54 @@
+
\ No newline at end of file
diff --git a/themes/spectre/layout/_partial/menu/post-qrcode.ejs b/themes/spectre/layout/_partial/menu/post-qrcode.ejs
new file mode 100644
index 0000000..40de6e5
--- /dev/null
+++ b/themes/spectre/layout/_partial/menu/post-qrcode.ejs
@@ -0,0 +1,14 @@
+
\ No newline at end of file
diff --git a/themes/spectre/layout/_partial/menu/post-share.ejs b/themes/spectre/layout/_partial/menu/post-share.ejs
new file mode 100644
index 0000000..610ae32
--- /dev/null
+++ b/themes/spectre/layout/_partial/menu/post-share.ejs
@@ -0,0 +1,54 @@
+
\ No newline at end of file
diff --git a/themes/spectre/layout/_partial/post-entry.ejs b/themes/spectre/layout/_partial/post-entry.ejs
new file mode 100644
index 0000000..38eb321
--- /dev/null
+++ b/themes/spectre/layout/_partial/post-entry.ejs
@@ -0,0 +1,33 @@
+<% if(post.featureImage) { %>
+
+
+<% } else { %>
+
+<% } %>
+
+
+
+ <% if(post.excerpt) {%>
+ <%- post.excerpt %>
+ <% } else { %>
+ <%- strip_html(truncate(post.content,{length: theme.post.entry_excerpt })) %>
+ <% } %>
+
+
+
+
+
diff --git a/themes/spectre/layout/_partial/post-license.ejs b/themes/spectre/layout/_partial/post-license.ejs
new file mode 100644
index 0000000..12be38a
--- /dev/null
+++ b/themes/spectre/layout/_partial/post-license.ejs
@@ -0,0 +1,16 @@
+<% if (page.hide_license !== true && theme.post.license || page.license) { %>
+
+
+ 本文作者:<%= config.author %>
+
+
+ <% if (page.license) { %>
+ <%- page.license %>
+ <% } else { %>
+ <%- theme.post.license %>
+ <% } %>
+
+ <%- __('post.permalink') %> <%= page.permalink %>
+
+
+<% } %>
\ No newline at end of file
diff --git a/themes/spectre/layout/_partial/post/footer-info.ejs b/themes/spectre/layout/_partial/post/footer-info.ejs
new file mode 100644
index 0000000..4fb210e
--- /dev/null
+++ b/themes/spectre/layout/_partial/post/footer-info.ejs
@@ -0,0 +1,20 @@
+
+
+
+
+
diff --git a/themes/spectre/layout/_partial/post/nav.ejs b/themes/spectre/layout/_partial/post/nav.ejs
new file mode 100644
index 0000000..487060e
--- /dev/null
+++ b/themes/spectre/layout/_partial/post/nav.ejs
@@ -0,0 +1,23 @@
+
+
+
\ No newline at end of file
diff --git a/themes/spectre/layout/_partial/sidebar.ejs b/themes/spectre/layout/_partial/sidebar.ejs
new file mode 100644
index 0000000..4474c45
--- /dev/null
+++ b/themes/spectre/layout/_partial/sidebar.ejs
@@ -0,0 +1,5 @@
+
+<%- partial('_partial/sidebar/header') %>
+<%- partial('_partial/sidebar/navigation') %>
+
+<%- partial('_partial/sidebar/footer') %>
diff --git a/themes/spectre/layout/_partial/sidebar/footer.ejs b/themes/spectre/layout/_partial/sidebar/footer.ejs
new file mode 100644
index 0000000..f7d7100
--- /dev/null
+++ b/themes/spectre/layout/_partial/sidebar/footer.ejs
@@ -0,0 +1,7 @@
+<% for (var i in theme.sidebar.footer) { %>
+
+<% } %>
\ No newline at end of file
diff --git a/themes/spectre/layout/_partial/sidebar/header.ejs b/themes/spectre/layout/_partial/sidebar/header.ejs
new file mode 100644
index 0000000..bbbb445
--- /dev/null
+++ b/themes/spectre/layout/_partial/sidebar/header.ejs
@@ -0,0 +1,6 @@
+
+ arrow_back
+
+
+
<%= config.title %>
+
\ No newline at end of file
diff --git a/themes/spectre/layout/_partial/sidebar/navigation.ejs b/themes/spectre/layout/_partial/sidebar/navigation.ejs
new file mode 100644
index 0000000..4c0b3d0
--- /dev/null
+++ b/themes/spectre/layout/_partial/sidebar/navigation.ejs
@@ -0,0 +1,73 @@
+
+ <% if(theme.sidebar.homepage.use === true) { %>
+
+
+ <% if(theme.sidebar.homepage.icon) { %>
+
+ <% } %>
+ <%= __('sidebar.homepage') %>
+
+
+ <% if(theme.sidebar.homepage.divider === true) { %>
+
+ <% } %>
+ <% } %>
+
+
+ <% if(theme.sidebar.archives.use === true) { %>
+
+
+ <% if(theme.sidebar.archives.icon) { %>
+
+ <% } %>
+ <%= __('sidebar.archive') %>
+
+
+ <% if(theme.sidebar.archives.divider === true) { %>
+
+ <% } %>
+ <% } %>
+
+
+
+
+
+ <% for (var i in theme.sidebar.pages){ %>
+
+
+ <% if(theme.sidebar.pages[i].icon){ %>
+
+ <% } %>
+ <%= i %>
+
+
+ <% if(theme.sidebar.pages[i].divider === true) { %>
+
+ <% } %>
+ <% } %>
+
+
+ <% if(theme.sidebar.article_num.use === true) { %>
+
+
+ <%= __('sidebar.article_num') %>
+
+
+
+
+ <% if(theme.sidebar.article_num.divider === true) { %>
+
+ <% } %>
+ <% } %>
diff --git a/themes/spectre/layout/_partial/toTop.ejs b/themes/spectre/layout/_partial/toTop.ejs
new file mode 100644
index 0000000..005e735
--- /dev/null
+++ b/themes/spectre/layout/_partial/toTop.ejs
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/themes/spectre/layout/_plugin/analytics/baidu.ejs b/themes/spectre/layout/_plugin/analytics/baidu.ejs
new file mode 100644
index 0000000..56a6386
--- /dev/null
+++ b/themes/spectre/layout/_plugin/analytics/baidu.ejs
@@ -0,0 +1,8 @@
+
\ No newline at end of file
diff --git a/themes/spectre/layout/_plugin/analytics/cnzz.ejs b/themes/spectre/layout/_plugin/analytics/cnzz.ejs
new file mode 100644
index 0000000..a82b180
--- /dev/null
+++ b/themes/spectre/layout/_plugin/analytics/cnzz.ejs
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/themes/spectre/layout/_plugin/analytics/google.ejs b/themes/spectre/layout/_plugin/analytics/google.ejs
new file mode 100644
index 0000000..175f52e
--- /dev/null
+++ b/themes/spectre/layout/_plugin/analytics/google.ejs
@@ -0,0 +1,7 @@
+
+
+
\ No newline at end of file
diff --git a/themes/spectre/layout/_plugin/analytics/tencent-analytics.ejs b/themes/spectre/layout/_plugin/analytics/tencent-analytics.ejs
new file mode 100644
index 0000000..64e896a
--- /dev/null
+++ b/themes/spectre/layout/_plugin/analytics/tencent-analytics.ejs
@@ -0,0 +1,8 @@
+
diff --git a/themes/spectre/layout/_plugin/comment/disqus_click/common.ejs b/themes/spectre/layout/_plugin/comment/disqus_click/common.ejs
new file mode 100644
index 0000000..ab22ee8
--- /dev/null
+++ b/themes/spectre/layout/_plugin/comment/disqus_click/common.ejs
@@ -0,0 +1 @@
+
diff --git a/themes/spectre/layout/_plugin/comment/disqus_click/main.ejs b/themes/spectre/layout/_plugin/comment/disqus_click/main.ejs
new file mode 100644
index 0000000..19e9110
--- /dev/null
+++ b/themes/spectre/layout/_plugin/comment/disqus_click/main.ejs
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/themes/spectre/layout/_plugin/highlight/hanabi.ejs b/themes/spectre/layout/_plugin/highlight/hanabi.ejs
new file mode 100644
index 0000000..70f1908
--- /dev/null
+++ b/themes/spectre/layout/_plugin/highlight/hanabi.ejs
@@ -0,0 +1,20 @@
+<% if(theme.vendors.materialcdn) { %>
+ <%- jsLsload({path:(theme.vendors.materialcdn + '/js/hanabi-browser-bundle.js'),key:'hanabi'}) %>
+<% } else { %>
+ <%- jsLsload({path:('js/hanabi-browser-bundle.js'),key:'hanabi'}) %>
+<% } %>
+
\ No newline at end of file
diff --git a/themes/spectre/layout/_plugin/highlight/prettify.ejs b/themes/spectre/layout/_plugin/highlight/prettify.ejs
new file mode 100644
index 0000000..24e34f7
--- /dev/null
+++ b/themes/spectre/layout/_plugin/highlight/prettify.ejs
@@ -0,0 +1,30 @@
+<% if ( (is_post()) ) { %>
+
+
+ <% if(theme.vendors.materialcdn) { %>
+ <%- cssLsload({path:(theme.vendors.materialcdn + '/css/prettify/' + theme.prettify.theme + '.min.css'),key:'prettify_theme'}) %>
+ <% } else { %>
+ <%- cssLsload({path:('css/prettify/' + theme.prettify.theme + '.min.css'),key:'prettify_theme'}) %>
+ <% } %>
+
+
+ <% if(theme.vendors.prettify) { %>
+ <%- jsLsload({path:(theme.vendors.prettify),key:'prettify_js'}) %>
+ <% } else if(theme.vendors.materialcdn) { %>
+ <%- jsLsload({path:(theme.vendors.materialcdn + '/js/prettify.min.js'),key:'prettify_js'}) %>
+ <% } else { %>
+ <%- jsLsload({path:('js/prettify.min.js'),key:'prettify_js'}) %>
+ <% } %>
+
+
+
+<% } %>
diff --git a/themes/spectre/layout/_plugin/mathjax.ejs b/themes/spectre/layout/_plugin/mathjax.ejs
new file mode 100644
index 0000000..ee5a446
--- /dev/null
+++ b/themes/spectre/layout/_plugin/mathjax.ejs
@@ -0,0 +1,22 @@
+
+
+<% if(theme.vendors.mathjax) { %>
+
+<% } else if(theme.vendors.materialcdn) { %>
+
+<% } else { %>
+
+<% } %>
diff --git a/themes/spectre/layout/_source/footer.ejs b/themes/spectre/layout/_source/footer.ejs
new file mode 100644
index 0000000..ded77b9
--- /dev/null
+++ b/themes/spectre/layout/_source/footer.ejs
@@ -0,0 +1,33 @@
+
+
+
+
+<% if(theme.comment.use){ %>
+ <%- partial('_plugin/comment/' + theme.comment.use + '/common') %>
+ <% } %>
+
+
+
diff --git a/themes/spectre/layout/_source/head.ejs b/themes/spectre/layout/_source/head.ejs
new file mode 100644
index 0000000..fccf693
--- /dev/null
+++ b/themes/spectre/layout/_source/head.ejs
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/themes/spectre/layout/_widget/search-json.ejs b/themes/spectre/layout/_widget/search-json.ejs
new file mode 100644
index 0000000..569bc2e
--- /dev/null
+++ b/themes/spectre/layout/_widget/search-json.ejs
@@ -0,0 +1,71 @@
+<% var res = new Array() -%>
+<% var index = 0 -%>
+<% if(posts){ -%>
+ <% posts.each(function(post) { -%>
+ <% var temp_post = new Object() -%>
+ <% if (post.title) { -%>
+ <% temp_post.title = post.title -%>
+ <% } -%>
+ <% if (post.path) { -%>
+ <% temp_post.url = config.root + post.path -%>
+ <% } -%>
+ <% if (post._content) { -%>
+ <% temp_post.content = post.content.replace(new RegExp('
','gs'),'').replace(new RegExp('<[^>]*>','g'),'').replace(new RegExp('\n','g'),'').replace(new RegExp('<[^>]*>','g'),'') -%>
+ <% } -%>
+ <% if (post.tags && post.tags.length > 0) { -%>
+ <% var tags = new Array() -%>
+ <% var tag_index = 0 -%>
+ <% post.tags.each(function (tag) { -%>
+ <% tags[tag_index] = tag.name; -%>
+ <% tag_index += 1 -%>
+ <% }); -%>
+ <% temp_post.tags = tags -%>
+ <% } -%>
+ <% if (post.categories && post.categories.length > 0) { -%>
+ <% var categories = new Array() -%>
+ <% var cate_index = 0 -%>
+ <% post.categories.each(function (cate) { -%>
+ <% categories[cate_index] = cate.name; -%>
+ <% cate_index += 1 -%>
+ <% }); -%>
+ <% temp_post.categories = categories -%>
+ <% } -%>
+ <% res[index] = temp_post; -%>
+ <% index += 1; -%>
+<% }); -%>
+<% } -%>
+<% if(pages){ -%>
+ <% pages.each(function(page){ -%>
+ <% var temp_page = new Object() -%>
+ <% if (page.title) { -%>
+ <% temp_page.title = page.title -%>
+ <% } -%>
+ <% if (page.path) { -%>
+ <% temp_page.url = config.root + page.path -%>
+ <% } -%>
+ <% if (page._content) { -%>
+ <% temp_page.content = page.content.replace(new RegExp('','gs'),'').replace(new RegExp('<[^>]*>','g'),'').replace(new RegExp('\n','g'),'').replace(new RegExp('<[^>]*>','g'),'') -%>
+ <% } -%>
+ <% if (page.tags && page.tags.length > 0) { -%>
+ <% var tags = new Array() -%>
+ <% var tag_index = 0 -%>
+ <% page.tags.each(function (tag) { -%>
+ <% tags[tag_index] = tag.name; -%>
+ <% tag_index += 1 -%>
+ <% }); -%>
+ <% temp_page.tags = tags -%>
+ <% } -%>
+ <% if (page.categories && page.categories.length > 0) { -%>
+ <% var categories = new Array() -%>
+ <% var cate_index = 0 -%>
+ <% page.categories.each(function (cate) { -%>
+ <% categories[cate_index] = cate.name; -%>
+ <% cate_index += 1 -%>
+ <% }); -%>
+ <% temp_page.categories = categories -%>
+ <% } -%>
+ <% res[index] = temp_page; -%>
+ <% index += 1; -%>
+ <% }); -%>
+<% } -%>
+<%- stringify(res) -%>
\ No newline at end of file
diff --git a/themes/spectre/layout/archive.ejs b/themes/spectre/layout/archive.ejs
new file mode 100644
index 0000000..14600f3
--- /dev/null
+++ b/themes/spectre/layout/archive.ejs
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+
+ 目前共计 <%= site.posts.length %> 篇文章
+
+
+
+
+
+
+ <% var last = 0, year, yearArr = []; %>
+
+ <% page.posts.sort('date', -1).each(function(post){ %>
+ <% year = post.date.year(); %>
+ <% if (last != year){ %>
+ <% if (yearArr.length != 0){ %>
+ <% } %>
+ <% yearArr.push(year); %>
+ <% last = year; %>
+
+
+ <% } else { %>
+
+ <% } %>
+ <% }) %>
+
+
+
+
+
+ <%- partial('_partial/index-nav') %>
+
diff --git a/themes/spectre/layout/category.ejs b/themes/spectre/layout/category.ejs
new file mode 100644
index 0000000..b9d9d6d
--- /dev/null
+++ b/themes/spectre/layout/category.ejs
@@ -0,0 +1,43 @@
+<% if( is_category()){ %>
+
+
+
+
+
+
+
+
+ 分类 <%= page.category %>
+
+
+
+
+
+ <% page.posts.sort('date', -1).each(function(post){ %>
+
+ <% }) %>
+
+
+
+
+
+ <%- partial('_partial/index-nav') %>
+
+
+<% } else { %>
+
+<% } %>
\ No newline at end of file
diff --git a/themes/spectre/layout/index.ejs b/themes/spectre/layout/index.ejs
new file mode 100644
index 0000000..5f50bda
--- /dev/null
+++ b/themes/spectre/layout/index.ejs
@@ -0,0 +1,20 @@
+<% if( (page.current === 1) && (is_home()) ) { %>
+
+<% } %>
+
+
+
+ <% page.posts.each(function(post) { %>
+ <% if(!((typeof hasposttop === 'function') && post.top)) { %>
+ <%- partial('_partial/post-entry', { post: post, index: true, pin: false }) %>
+ <% } %>
+ <% }); %>
+
+
+ <%- partial('_partial/index-nav') %>
+
\ No newline at end of file
diff --git a/themes/spectre/layout/layout.ejs b/themes/spectre/layout/layout.ejs
new file mode 100644
index 0000000..0309692
--- /dev/null
+++ b/themes/spectre/layout/layout.ejs
@@ -0,0 +1,39 @@
+
+
+
+ <%- partial('_partial/head') %>
+
+ <% if(page.layout === 'gallery') { %>
+
+ <%- partial('_pages/gallery') %>
+ <% } else { %>
+
+
+
+ <%- partial('_source/footer') %>
+
+
+ <% } %>
+
+