PKUWWT

Github建站过程

申请域名

找到一个免费的域名提供商Tk, 注册帐号,然后申请了域名pkuwwt.tk。不太显眼的tk域名都是免费的,免费域名一年之后要续约。

创建Github仓库

注册一个Github帐号pkuwwt,因此,我的github帐号是github.com/pkuwwt

然后,我可以建立任意的github仓库(repository)。使用过git的人应该不会陌生。

Github提供了网页托管服务,但需要注意的是,此托管服务原意是为软件项目提供主页支持,并不是用来免费建站的。因此,它附加了一些限制。

首先,如果你的仓库随便起名的话,称为Project Page。如果你的仓库起名为username.github.com(username.github.io好像也可以)的话,称为User/Orgnaization Page。显然Project Page仓库可以有多个,User/Orgnaization Page仓库只能有一个。

不需要额外的域名,github本身就可以挂网站,比如建一个仓库reposA,在其中新建一个分支gh-pages,在此分支中加一个文件index.html,则your-user-name.github.com/reposA就可以直接访问了。注意,一般的仓库必要用gh-pages分支才能挂网站。对于取名为your-user-name.github.comyour-user-name.github.io的仓库(你只能建一个,github推荐使用github.io),其网页是挂在master分支。

Github的另一个限制条件是,Project仓库只能绑定主域名(domain),而User/Orgnaization仓库既可以绑定主域名,又可以绑定子域名(subdomain)。比如pkuwwt.tk是主域名,www.pkuwwt.tk是子域名。因为每个人只有一个User/Orgnaization仓库,因此只能绑定一个子域名。这意味着,一个帐号可以绑定多个主域名,只能绑定一个子域名。

因此,建站策略可以只用一个主域名,不使用子域名,用目录结构来对内容进行分类。

考虑到www.pkuwwt.tk也是子域名,因此可以使用一个主域名一个子域名。Github支持这种建站方案,这样的子域名和主域名都指向同一个页面。

Github的网络服务设置

Github仓库的网络设置很方便,只需要修改仓库根目录下的CNAME文件即可。CNAME中只有一行文字,即你的域名,Github只允许绑定到一个域名上,如果想多个域名指向同一个仓库,则只能用域名转发了。比如,在我的pkuwwt.github.com仓库下的CNAME中添加一行

www.pkuwwt.tk

这里的www.pkuwwt.tk是我刚申请的域名的子域名。

修改完CNAME之后10分钟才会生效。

域名服务的DNS设置

dot.tk网上修改域名pkuwwt.tk的DNS设置。对于主域名,使用设置

  • A Record
  • hostname: pkuwwt.tk
  • IP Address: 207.97.227.245

对于子域名,使用设置

  • CNAME Record
  • hostname: www.pkuwwt.tk
  • IP Address: pkuwwt.github.io

使用pkuwwt.github.io的好处在于,它会自动更新IP地址。

另外,查看一个域名的DNS可以使用命令

$ dig pkuwwt.tk +nostats +nocomments +nocmd
$ dig www.pkuwwt.tk +nostats +nocomments +nocmd

详细过程参考Github文档

现在,你应该可以访问pkuwwt.tk了。但是如果显示404页面,要么是你没有等10分钟,要么是你没有index.html文件,要么是DNS设置错了。

另外,www.pkuwwt.tkpkuwwt.github.com也应该指向同样的页面。

选择静态网页生成工具

因为Github并不提供主机服务,动态网页是没指望了,服务端编程和数据库更是没影,因此只能使用静态网页。

但是,问题是,谁会愿意去手动编写html文件?

一个较好的解决方案是,用wiki或Markdown之类的类文本格式写文档,然后,用工具生成静态网页。ruby有一个工具是jekyll,而python对应的工具是hyde

jekyll的优点在于,它和Github是有关系的,Github的Page功能就是它提供的。因此,你根本不需要将生成的静态传到Github上去。

jekyll的安装步骤很简单

$ gem install jekyll
$ gem update --system

jekyll的使用步骤也很简单

$ jekyll new my-site
$ cd my-site
$ jekyll serve

然后,你就可以访问http://127.0.0.1:4000了。

jekyll serve命令会调用jekyll build,即在当前目录下生成_site目录。因此,我们可以在本地测试,测试满意了再传到网上去。

我使用Windows8+Cygwin来模拟Linux环境,可能会有一些额外的安装问题。

  • cygwin下gem需要下载rubygems的源码包安装
  • gem install jekyll可能会失败,参考StackOverflow
  • Windows8下面localhost默认是没有的,使用127.0.0.1即可。实在不行,关掉防火墙或增加几条规则。

寻找网站模板

有了方法并不一定能得到好的结果。因为,做成一件事和做好一件事还是有区别的,特别是与艺术相关的东西。要想设计一个好的网页,既需要有技术,也需要有灵感,实在是两难。

最直接的办法是拿来主义,看到好的模板,直接拿来用,最多改改标题,改改人名(这不就是小时候鄙视的坏学生作为吗)。

我发现freepiano这个软件不错,它的主页也不错,于是把其作者的网站给拿下来了。

$ git clone https://tiwb.github.com/tiwb/tiwb.github.com.git tmp
$ cd tmp
$ rm -rf .git

我把它的源码全荡下来,存到了tmp目录中。删掉了git仓库信息。

至于内容,首先我先用jekyll serve测试了一下,发现能用。然后,来了个全局搜索替换,把它的名字改成了我的名字。并且删掉了所有_post子目录中的Markdown文件。

这个模板是博客性质的,只要往_post中放上符合命名规则的Markdown文件,它就能按规则给你显示出一个个条目出来。

至于模板上的标签页,可以在_includes/header.html中找到答案。每个标签页对应着一个类别(category),一个子目录和一个显示名称。在每个子目录下的index.html中用到了类别信息。

你想添加一个新的标签,或者修改已有标签都是很显然的事情。

上传至仓库

将Github上的仓库下载到本地,然后,修改其文件,再上传即可。

在上面的tmp目录所在的目录中

$ git clone https://pkuwwt.github.com/pkuwwt/pkuwwt.github.com.git pkuwwt.github.com
$ cd pkuwwt.github.com
$ cp -r ../tmp/* .
$ git add *
$ git commit -m "initial website"
$ git push origin master

之后,会提示你输用户名和密码。

需要注意的是,小心你的CNAME被覆盖了。另外,有一个.gitignore文件可以防止某些文件和目录被加到git仓库中去。比如一个典型的.gitignore文件是

_site
*.swp
.DS_Store

上传成功之后,我也就拥有了一个装逼的个人网站了。虽然没有备案,随时会被墙掉。另外,不要域名不设置DNS也是可以的,比如pkuwwt.github.com本身就是一个网站了。

Back

python programming visualization GPU scholarship algorithm data linux pdf foxit geometry math OpenGL zip D3 java vim makefile C++ gdb >>>> <<<<


pkg
node.js
bundle
Bunlde node.js app to standalone executable with pkg
2020-04-17 00:00:00 +0000
/programming/2020-04-17-bundle-node-js-app-to-standalone-executable-with-pkg/

	
	
tighervnc
ubuntu
Install tigervnc on Ubuntu18.04
2020-04-06 00:00:00 +0000
/techniques/2020-04-06-install-tigervnc-on-ubuntu-18.04/

	
	
go
qt
Usage of Go binding for Qt
2020-04-05 00:00:00 +0000
/programming/2020-04-05-usage-of-go-binding-for-qt/

	
	
docker
registry
web-UI
Setup a private docker registry v2 with web-ui
2020-04-04 00:00:00 +0000
/techniques/2020-04-04-setup-a-private-docker-registry/

	
	
jenkins
flask
continuous integration testing
docker
python
Continuous Integration Testing For Flask with Jenkins
2020-03-16 00:00:00 +0000
/programming/2020-03-16-jenkins-continuous-integration-testing-for-flask/

	
	
android
python
functional testing
uiautomator
Python-based ui-automator for Android
2020-03-15 00:00:00 +0000
/programming/2020-03-15-android-ui-automator-python/

	
	
sqlite3
linux
How to show Sqlite3 output as Man page table
2020-03-14 00:00:00 +0000
/techniques/2020-03-14-how-to-show-sqlite3-output-as-man-page-table/

	
	
gis
algorithm
Encoded Polyline Algorithm
2020-03-11 00:00:00 +0000
/programming/2020-03-11-encoded-polyline-algorithm/

	
	
你应该了解的所有wget命令
2015-09-26 00:00:00 +0000
/techniques/2015-09-26-all-the-wget-commands-you-should-know/

	
	
linux
gnome
GNOME 3 Usage
2015-02-17 00:00:00 +0000
/techniques/2015-02-17-gnome3-usage/

	
	
visualization
CFD
Usage of OpenFoam
2015-02-10 00:00:00 +0000
/scholarship/2015-02-10-openfoam-usage/

	
	
Script of converting tikz script to pdf file
2014-11-19 00:00:00 +0000
/techniques/2014-11-19-tikz-to-pdf-script/

	
	
linux
gimp
gimp使用笔记
2014-11-16 00:00:00 +0000
/techniques/2014-11-16-gimp-notes/

	
	
visualization
scholarship
draw critical points classification of planar system using tikz
2014-10-31 00:00:00 +0000
/scholarship/2014-10-31-planar-system-critical-points-with-tikz/

	
	
LaTeX
scholarship
Latex中bibtex的命名
2014-10-29 00:00:00 +0000
/scholarship/2014-10-29-latex-bibtex-author-name/

	
	
python
PyQt
programming
PyQt4 signal and slot Example
2014-10-19 00:00:00 +0000
/programming/2014-10-19-pyqt4-signal-slot-example/

	
	
programming
C++
Null Ostream Class in C++
2014-10-18 00:00:00 +0000
/programming/2014-10-18-cpp-null-ostream/

	
	
第一个GeoGebra应用
2014-10-09 00:00:00 +0000
/math/2014-10-09-first-geogebra-program/

	
	
linux
shell
shell用法集锦
2014-10-07 00:00:00 +0000
/techniques/2014-10-07-bash-notes/

	
	
swim
blog
游泳技术动画
2014-09-30 00:00:00 +0000
/blog/2014-09-30-swimming-animation/

	
	
scholarship
zotero
文献管理工具Zotero
2014-09-27 00:00:00 +0000
/scholarship/2014-09-27-Literature-Management-Software-Zotero/

	
	
programming
lisp
clojure
第一个clojure程序
2014-09-18 00:00:00 +0000
/programming/2014-09-18-the-first-clojure-program/

	
	
visualization
OpenGL
OpenGL使用技巧
2014-08-27 00:00:00 +0000
/scholarship/2014-08-27-opengl-utility/

	
	
python
crawler
用python来扒网页
2014-08-23 00:00:00 +0000
/programming/2014-08-23-web-scrap-with-python/

	
	
programming
Unicode
中文转码工具
2014-08-23 00:00:00 +0000
/programming/2014-08-23-unicode-conversion/

	
	
vim使用笔记
2014-08-22 00:00:00 +0000
/techniques/2014-08-22-vim-notes/

	
	
ImageMagick使用笔记
2014-08-21 00:00:00 +0000
/techniques/2014-08-21-ImageMagick-notes/

	
	
programming
C++
C++中打印指针
2014-08-17 00:00:00 +0000
/programming/2014-08-17-std-ostream-output-pointer-in-cplusplus/

	
	
programming
gdb
gdb笔记
2014-08-16 00:00:00 +0000
/programming/2014-08-16-gdb-notes/

	
	
programming
bit操作
2014-08-16 00:00:00 +0000
/programming/2014-08-16-bit-operation/

	
	
programming
C++
C++使用笔记
2014-08-12 00:00:00 +0000
/programming/2014-08-12-cpp-usage/

	
	
geometry
programming
python
平面三角形求交测试(Planar Triangles Intersection)
2014-08-07 00:00:00 +0000
/programming/2014-08-07-triangle-intersect/

	
	
vim
makefile
Makefile模板
2014-08-06 00:00:00 +0000
/techniques/2014-08-06-makefile-template/

	
	
programming
java
Java Usage
2014-08-03 00:00:00 +0000
/programming/2014-08-03-java-usage/

	
	
wxMaxima连不上maxima
2014-08-01 00:00:00 +0000
/techniques/2014-08-01-wxmaxima-not-connected-to-maxima/

	
	
用djvulibre将png图片转化为pdf
2014-07-27 00:00:00 +0000
/techniques/2014-07-27-convert-png-images-to-pdf-with-djvulibre/

	
	
用djvulibre来设置djvu文件的索引
2014-07-26 00:00:00 +0000
/techniques/2014-07-26-djvulibre-reset-outline/

	
	
python
programming
python的profile工具
2014-07-24 00:00:00 +0000
/programming/2014-07-24-python-profile/

	
	
隐函数定理
2014-07-22 00:00:00 +0000
/math/2014-07-22-Implicit-Function-Theorem/

	
	
google-chrome浏览器的标题栏字体渲染问题
2014-07-17 00:00:00 +0000
/techniques/2014-07-17-google-chrome-title-bar-font-rendering/

	
	
linux
备份文件Shell脚本
2014-07-14 00:00:00 +0000
/techniques/2014-07-14-linux-backup-shell-script/

	
	
Linux下将多个图像转换为pdf
2014-06-18 00:00:00 +0000
/techniques/2014-06-18-convert-multi-images-to-pdf/

	
	
D3
visualization
D3.js入门资料集锦
2014-05-24 00:00:00 +0000
/scholarship/2014-05-24-d3-js-tutorials/

	
	
linux
zip
python
Linux下zip文件解压乱码问题
2014-05-21 00:00:00 +0000
/techniques/2014-05-21-unzip-gbk-zip-file-in-linux/

	
	
关于Linux下有线网卡不能连接的问题
2014-05-14 00:00:00 +0000
/techniques/2014-05-14-about-r8169-ethernet-driver/

	
	
Linux下用wvdial为3G上网卡拨号
2014-05-04 00:00:00 +0000
/techniques/2014-05-04-3g-connection-with-wvdial/

	
	
algorithm
geometry
两个平面三角形的相交测试
2014-04-29 00:00:00 +0000
/scholarship/2014-04-29-intersections-between-two-2d-triangles/

	
	
使用另一个版本的glibc
2014-04-25 00:00:00 +0000
/techniques/2014-04-25-use-another-glibc-installation/

	
	
LaTeX使用方法集锦
2014-04-19 00:00:00 +0000
/techniques/2014-04-19-latex-usage/

	
	
scholarship
资源网站集锦
2014-04-16 00:00:00 +0000
/scholarship/2014-04-16-good-resource-website/

	
	
python
programming
Python使用问题集锦
2014-04-15 00:00:00 +0000
/programming/2014-04-15-python-usage/

	
	
修复pdf没有嵌入字体的问题
2014-04-07 00:00:00 +0000
/techniques/2014-04-07-repair-pdf-font-embedding-problem/

	
	
visualization
用VTK生成非结构化网格上的矢量场
2014-04-03 00:00:00 +0000
/scholarship/2014-04-03-use-vtk-create-vector-field-on-unstructured-grid/

	
	
algorithm
visualization
geometry
光线-三角形求交测试算法[译]
2014-04-03 00:00:00 +0000
/scholarship/2014-04-03-ray-triangle-intersection-tests-for-dummies/

	
	
OpenGL
python
programming
Python下写OpenGL代码示例
2014-04-03 00:00:00 +0000
/programming/2014-04-03-python-opengl-sample/

	
	
使用tikz绘制函数
2014-03-30 00:00:00 +0000
/techniques/2014-03-30-use-tikz-to-plot-function/

	
	
使用maxima求解非线性方程组
2014-03-21 00:00:00 +0000
/techniques/2014-03-21-use-maxima-to-solve-non-linear-system/

	
	
linux
在Linux下为笔记本添加两指左右滚动功能
2014-03-11 00:00:00 +0000
/techniques/2014-03-11-add-horizontal-two-finger-scroll/

	
	
Linux下常用工具
2014-03-08 00:00:00 +0000
/techniques/2014-03-08-usual-life-linux-tools/

	
	
Linux下使用github
2014-03-08 00:00:00 +0000
/techniques/2014-03-08-how-to-use-github/

	
	
git使用笔记
2014-03-08 00:00:00 +0000
/techniques/2014-03-08-git-usage/

	
	
LaTeX笔记(texlive)
2014-03-06 00:00:00 +0000
/techniques/2014-03-06-latex-notes/

	
	
geometry
visualization
几种基本几何预测
2014-03-01 00:00:00 +0000
/scholarship/2014-03-01-geometric-predicates/

	
	
math
visualization
geometry
单纯复形(Simplicial Complexes)[译]
2014-02-27 00:00:00 +0000
/scholarship/2014-02-27-simplicial-complexes/

	
	
linux
一个用于寻找文件,并便于打开文件的脚本
2014-02-22 00:00:00 +0000
/techniques/2014-02-22-a-script-for-find-and-open-file/

	
	
linux
清理Linux中的不用内存或缓存
2014-02-21 00:00:00 +0000
/techniques/2014-02-21-free-linux-memory/

	
	
visualization
geometry
形状指数(shape index)
2014-02-20 00:00:00 +0000
/scholarship/2014-02-20-shape-index/

	
	
用wget下载C++的手册
2014-02-10 00:00:00 +0000
/techniques/2014-02-10-download-cplusplus-reference/

	
	
linux
pdf
foxit
在Linux下使用wine+foxit
2014-02-08 00:00:00 +0000
/techniques/2014-02-08-using-foxit-in-linux/

	
	
在Bash的输入循环中使用readline和历史记录
2014-02-06 00:00:00 +0000
/techniques/2014-02-06-completion-and-history-in-bash-read-loop/

	
	
visualization
data
可视化数据集
2014-01-07 00:00:00 +0000
/scholarship/2014-01-07-visualization-dataset-collection/

	
	
关于几种窗口系统的透明效果
2014-01-06 00:00:00 +0000
/techniques/2014-01-06-transparent-window/

	
	
使用淘宝提供的Ruby源
2014-01-06 00:00:00 +0000
/techniques/2014-01-06-taobao-gems/

	
	
函数的临界点上的海森(Hessian)矩阵的含义[译]
2013-12-29 00:00:00 +0000
/math/2013-12-29-Meaning-of-the-Hessian-of-a-function-in-a-critical-point/

	
	
algorithm
visualization
层次集方法讲稿[译]
2013-12-25 00:00:00 +0000
/scholarship/2013-12-25-the-level-set-method-lecture-notes/

	
	
visualization
algorithm
层次集方法(Level Set Method) -- 解释[译]
2013-12-24 00:00:00 +0000
/scholarship/2013-12-24-level-set-method-explanation/

	
	
scholarship
微软的学术搜索引擎还是很好用的
2013-12-17 00:00:00 +0000
/scholarship/2013-12-17-academical-search-with-microsoft-search-engine/

	
	
GNU screen 保存会话
2013-12-12 00:00:00 +0000
/techniques/2013-12-12-gnu-screen-save-session/

	
	
GNU Screen--介绍和初学者指南[译]
2013-12-04 00:00:00 +0000
/techniques/2013-12-04-gnu-screen-an-introduction-and-beginners-tutorial/

	
	
visualization
GPU
GPU Gems - 第39章 基于纹理的体绘制技术[译]
2013-12-04 00:00:00 +0000
/scholarship/2013-12-04-gpugems-ch39-texture-based-volume-rendering/

	
	
MathJax使用示例
2013-12-03 00:00:00 +0000
/techniques/2013-12-03-mathjax-example/

	
	
Jekyll中使用MathJax
2013-12-03 00:00:00 +0000
/techniques/2013-12-03-jekyll-using-mathjax/

	
	
visualization
GPU
GPU Gems - 第17章 环境光遮蔽[译]
2013-12-01 00:00:00 +0000
/scholarship/2013-12-01-gpugems-ch17-ambient-occlusion/

	
	
python
programming
python解释器中的自动补全
2013-11-30 00:00:00 +0000
/programming/2013-11-30-python-interpreter-autocomplete/

	
	
Github建站过程
2013-11-29 00:00:00 +0000
/techniques/2013-11-29-build-a-github-website/

	
	
python
programming
最简单的python服务器
2013-11-29 00:00:00 +0000
/programming/2013-11-29-python-simple-server/