18 Dec 2014

是时候放弃 PageRank 了

2014 年 11 月 24 日,Google 官方发言人 John Mueller 再 Video Hangouts 中表示,Google 已经决定放弃 PageRank,同时,也建议各位 SEO 不要再采用 PageRank 作为参考。其实 John Mueller 早在去年,就曾表示今后不太可能更新 PageRank。

John Mueller

16 Dec 2014

GitHub Pages Issue

1. Fork 别人的 Pages 代码库不工作

在 GitHub 上面 Fork 别人的网站代码库后,通过自己账户下的 URL 路径无法访问网站。
这时,必须手动更新一下从人家那里 Fork 来的代码,然后提交一次;之后,一般自己账户下的网站就能正常工作了。

如果还是不行,试试点击 GitHub 仓库的 “Settings” 中的 “GitHub Pages” 条目下的 URL 看,而先不要直接在浏览器地址栏输入网站 URL。

2. Not found “_site” directory destination

“It’s missing, and don’t know why…”

根据 Jekyll 的工作机制,本地运行 Jekyll build,默认将生成的静态网站文件放在根目录下的 _site 目录。而 GitHub Pages 后端以 Jekyll 作为渲染引擎,解析处理网站源文件,那么也要缓存静态文件到某个地方。
现在情况是,博主没有在网站 Repo 里面找到这样的结果目录,那么 GitHub 把生成的静态文件放到哪里了呢?

以前,一直以为一定会放在 Repo 下面,所以当注意到没有这个 _site 目录时,就认为 GitHub 丢失了它;亦或是隐藏起来。

因为想不通原因,所以干脆发 Email 问 GitHub 的员工,这才明白,原来所有的 GitHub Pages 生成的静态文件都被统一起来集中管理,并非在每个 Repo 单设一个 destination。
按照 GitHub Pages 的 URL 说明,同一用户下面所有的项目页面应该位于用户页面的根目录下(路径名即为各个项目页的目录),我想这也是以用户名作为网页域名的原因了。

You should not include the _site directory in your repository. We run a Jekyll build on the contents of your repository and publish the result (usually generated to the _site directory when running locally) to our GitHub Pages infrastructure.”      – From: James Dennes (GitHub Staff)


后记

后来自己琢磨了一会儿,貌似懂了,就没再去多想,但好想遗漏了点东西。
直到某天,偶然看 Git 的教程时,看到 Git hook 这个东西,顿时想起 Jekyll 文档也有这方面的介绍。然后又是好奇地回头看了看 Jekyll,此时联想到了这个问题。

大胆猜测下,GitHub 的后端服务器用到了 “Git post-receive hook” 这样一个 Git 功能,它能够监听来自客户端 Git 操作触发的事件,在服务端执行一些脚本。也就是说,我们每次 Push 代码后,GitHub 服务端监听到了这个事件,然后运行脚本进行 Jekyll 后台编译更新代码库的输出内容,出现问题就发送 Email。
至于,Jekyll 输出到哪里了,正如那位兄弟所说,集中到某个地方统一管理了。

这就是之前“遗漏”的点了,终于想通了。
同时这就是解释了上面第一个问题,Fork 他人代码后,并没有触发事件,GitHub 后台也就不会执行 Jekyll 编译网站,所有这个网站无法访问。

Jekyll 里面关于 Git hook 的说明参考 Automated methods

3. Windows 平台安装 Ruby

15 Dec 2014

Jekyll 中用 Highlight.js

前面试用过语法高亮JS插件 SyntaxHighlighterGoogle-Code-Prettify,感觉要么就是加载太慢点开页面需要等,要么就是太过灵活以至总是会出现奇怪的着色问题。归根结底都没有 Pygments 用起来方便。后来,博主又看到另一个语法高亮工具 - highlight.js,不仅支持的语言远超前2两个,有可配置的参数,而且加载运行快,着色效果又出色,还有官方提供很多主题选择。最重要的是,它非常适应 Markdown 的代码块解析后的结构,不需要另外设置代码块的CSS样式类。这个JS插件可以说是除了Pygments外最出色的了吧。

Version 8.4 特色

Highlight.js 是基于 Javascript 的语法高亮工具,工作于浏览器端和服务器端,并且不依赖任何框架,能够自动探测相当多的语言类型。

  • 112 languages and 49 styles (live demo)
  • automatic language detection
  • multi-language code highlighting
  • available for node.js
  • works with any markup
  • compatible with any js framework
15 Dec 2014

Jekyll 中用 Google Code Prettify

前言

本站博客在搭建过程中,试用过多个JS代码高亮工具,之前讲过的SyntaxHighlighter虽然漂亮,但是加载渲染太慢,果断放弃。
本文中介绍的这个google-code-prettify就不同了,支持的语言数量比较多、比较全,支持自动识别代码语言,不需要手动指定,渲染效果也不错。最重要的是,非常轻巧,加载速度远比SyntaxHighlighter快得多,而且,可以直接使用 Markdown 的语法写代码。
只有一点在Jekyll解析时不方便,就是当需要指定语言时,Markdown 解析出来的HTML代码class样式名称跟google-code-prettify要求的不同。不过博主目前还没有发现,指定语言的参数的有用之处。因为google-code-prettify自动识别语言和指定语言高亮代码的效果基本一样。

在本文中简称 google-code-prettify 的渲染引擎为:Prettyprinter

15 Dec 2014

Jekyll 中用 SyntaxHighlighter

前几天把博客里的代码高亮改成SyntaxHighligher了,感觉好了很多,看着也舒服,复制代码方便许多。下面就来简短介绍下这个工具。

SyntaxHighligher is an open source Java Script client side code syntax highlighter.

将它安装在 “home page, blog, CMS, documentation CD or any other web page",用来美化你的代码。

Installation

  1. 引入基本的文件: shore.js
  2. 添加需要的笔刷JS(如:Javascript代码使用 shBrushJScript.js;可用的笔刷列表见这里
  3. 引入CSS样式:shCore.css、shThemeDefault.css
  4. <pre />或者<script />创建代码块
  5. 执行JS方法:SyntaxHighlighter.all()

在Jekyll的模板页里的head里面,添加如下代码,选自己需要的语言的刷子。

13 Dec 2014

如何高效利用GitHub →

正是Github,让社会化编程成为现实。本文尝试谈谈GitHub的文化、技巧与影响。

  • Q1:GitHub是什么
  • Q2:GitHub风格
  • Q3: 在GitHub,如何跟牛人学习
  • Q4: 享受纯粹的写作与演讲
  • Q5: 代码帮你找工作
  • Q6: GitHub还在影响一些什么
  • Q7: 除了GitHub,还可以选择什么?

Q1:GitHub是什么

A1:一家公司

位于旧金山,由Chris Wanstrath, PJ Hyett 与Tom Preston-Werner三位开发者在2008年4月创办。迄今拥有59名全职员工,主要提供基于git的版本托管服务。