Skip to content

Commit

Permalink
fix and on the way
Browse files Browse the repository at this point in the history
  • Loading branch information
hackrole committed Jan 8, 2016
1 parent 4a9ab47 commit 2360997
Show file tree
Hide file tree
Showing 12 changed files with 445 additions and 18 deletions.
124 changes: 124 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
PY?=python
PELICAN?=pelican
PELICANOPTS=

BASEDIR=$(CURDIR)
INPUTDIR=$(BASEDIR)/content
OUTPUTDIR=$(BASEDIR)/output
CONFFILE=$(BASEDIR)/pelicanconf.py
PUBLISHCONF=$(BASEDIR)/publishconf.py

FTP_HOST=localhost
FTP_USER=anonymous
FTP_TARGET_DIR=/

SSH_HOST=note.hackrole.com
SSH_PORT=22
SSH_USER=daipeng
SSH_TARGET_DIR=/var/www

S3_BUCKET=my_s3_bucket

CLOUDFILES_USERNAME=my_rackspace_username
CLOUDFILES_API_KEY=my_rackspace_api_key
CLOUDFILES_CONTAINER=my_cloudfiles_container

DROPBOX_DIR=~/Dropbox/Public/

GITHUB_PAGES_BRANCH=gh-pages

DEBUG ?= 0
ifeq ($(DEBUG), 1)
PELICANOPTS += -D
endif

RELATIVE ?= 0
ifeq ($(RELATIVE), 1)
PELICANOPTS += --relative-urls
endif

help:
@echo 'Makefile for a pelican Web site '
@echo ' '
@echo 'Usage: '
@echo ' make html (re)generate the web site '
@echo ' make clean remove the generated files '
@echo ' make regenerate regenerate files upon modification '
@echo ' make publish generate using production settings '
@echo ' make serve [PORT=8000] serve site at http://localhost:8000'
@echo ' make serve-global [SERVER=0.0.0.0] serve (as root) to $(SERVER):80 '
@echo ' make devserver [PORT=8000] start/restart develop_server.sh '
@echo ' make stopserver stop local server '
@echo ' make ssh_upload upload the web site via SSH '
@echo ' make rsync_upload upload the web site via rsync+ssh '
@echo ' make dropbox_upload upload the web site via Dropbox '
@echo ' make ftp_upload upload the web site via FTP '
@echo ' make s3_upload upload the web site via S3 '
@echo ' make cf_upload upload the web site via Cloud Files'
@echo ' make github upload the web site via gh-pages '
@echo ' '
@echo 'Set the DEBUG variable to 1 to enable debugging, e.g. make DEBUG=1 html '
@echo 'Set the RELATIVE variable to 1 to enable relative urls '
@echo ' '

html:
$(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)

clean:
[ ! -d $(OUTPUTDIR) ] || rm -rf $(OUTPUTDIR)

regenerate:
$(PELICAN) -r $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)

serve:
ifdef PORT
cd $(OUTPUTDIR) && $(PY) -m pelican.server $(PORT)
else
cd $(OUTPUTDIR) && $(PY) -m pelican.server
endif

serve-global:
ifdef SERVER
cd $(OUTPUTDIR) && $(PY) -m pelican.server 80 $(SERVER)
else
cd $(OUTPUTDIR) && $(PY) -m pelican.server 80 0.0.0.0
endif


devserver:
ifdef PORT
$(BASEDIR)/develop_server.sh restart $(PORT)
else
$(BASEDIR)/develop_server.sh restart
endif

stopserver:
$(BASEDIR)/develop_server.sh stop
@echo 'Stopped Pelican and SimpleHTTPServer processes running in background.'

publish:
$(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(PUBLISHCONF) $(PELICANOPTS)

ssh_upload: publish
scp -P $(SSH_PORT) -r $(OUTPUTDIR)/* $(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR)

rsync_upload: publish
rsync -e "ssh -p $(SSH_PORT)" -P -rvzc --delete $(OUTPUTDIR)/ $(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR) --cvs-exclude

dropbox_upload: publish
cp -r $(OUTPUTDIR)/* $(DROPBOX_DIR)

ftp_upload: publish
lftp ftp://$(FTP_USER)@$(FTP_HOST) -e "mirror -R $(OUTPUTDIR) $(FTP_TARGET_DIR) ; quit"

s3_upload: publish
s3cmd sync $(OUTPUTDIR)/ s3://$(S3_BUCKET) --acl-public --delete-removed --guess-mime-type

cf_upload: publish
cd $(OUTPUTDIR) && swift -v -A https://auth.api.rackspacecloud.com/v1.0 -U $(CLOUDFILES_USERNAME) -K $(CLOUDFILES_API_KEY) upload -c $(CLOUDFILES_CONTAINER) .

github: publish
ghp-import -m "Generate Pelican site" -b $(GITHUB_PAGES_BRANCH) $(OUTPUTDIR)
git push origin $(GITHUB_PAGES_BRANCH)

.PHONY: html help clean regenerate serve serve-global devserver publish ssh_upload rsync_upload dropbox_upload ftp_upload s3_upload cf_upload github
6 changes: 6 additions & 0 deletions content/python_code_style.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
代码风格统一规范
================

:author: hackrole
:email: [email protected]
:date: 2016-01-08
:tags: python, pep8, code, style


代码建议统一使用pep8规范加上部分最佳实践。

风格指南是关于一致性的。风格一致对一个项目更重要。
Expand Down
6 changes: 4 additions & 2 deletions content/redis_cluster_tutorial.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,13 @@ redis集群教程
:title: redis集群教程整理
:tags: redis,redis-cluster,cluster,high-avaliable
:author: hackrole
:date: 2015/12/30
:date: 2015-12-30

redis集群相关内容, 讲解如何设置集群,对集群做测试和常规操作。
不涵盖redis集群的细节,只从用户的角度讲如何使用redis集群, 以及redis的高可用性和一致性相关内容。
更具体内容参见 `http://redis.io/topics/cluster-spec`_
更具体内容参见::

http://redis.io/topics/cluster-spec

redis集群的作用
---------------
Expand Down
13 changes: 9 additions & 4 deletions content/redis_partition.rst
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,9 @@ redis分片相关

1) 客户端, 直接在客户端选择正确的实例完成操作。部分redis-client库实现这一功能.

2) proxy, 类似mogos. 客户端链接到proxy, 由proxy代为转发到正确的redis实例上. 比如twemproxy
`https://github.com/twitter/twemproxy`_
2) proxy, 类似mogos. 客户端链接到proxy, 由proxy代为转发到正确的redis实例上. 比如twemproxy::

https://github.com/twitter/twemproxy

3) 查询路由. 查询被发到集群中任一台实例上, 由实例来转发到正确的实例上.
redis集群实现了一个混合风格的查询路由,需要配合client端使用(不是由redis来做定位,而是重定向client来实现).
Expand Down Expand Up @@ -70,8 +71,12 @@ redis作为缓存和数据库时,对待分片的策略有所不同.
redis分片
---------

1) redis集群是自动分片和高可用的首选方案. 具体参见 redis_cluster `http://redis.io/topics/cluster-tutorial`_
1) redis集群是自动分片和高可用的首选方案. 具体参见 redis_cluster::

http://redis.io/topics/cluster-tutorial

2) Twemproxy, 更易用,速度很快。 具体参见

2) Twemproxy, 更易用,速度很快。 具体参见 `http://antirez.com/news/44`_
http://antirez.com/news/44

3) 客户端分片库: Redis-rb / Predis.
13 changes: 7 additions & 6 deletions content/redis_sentinel.rst
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
redis sentinel(redis监控)
=========================
author: hackrole
email: [email protected]
date: 2015-12-31
tags: redis,redis-sentinel,high-avaliable
title: redis高可用监控sentinel配置和使用
summary: 如何通过配置sentinel实现redis集群高可用

:author: hackrole
:email: [email protected]
:date: 2015-12-31
:tags: redis,redis-sentinel,high-avaliable
:title: redis高可用监控sentinel配置和使用
:summary: 如何通过配置sentinel实现redis集群高可用

sentinel功能
------------
Expand Down
12 changes: 6 additions & 6 deletions content/ruby_enable_auto_completion.rst
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
ruby下的irb/iruby如何使用补全
=============================

author: hackrole
email: [email protected]
date: 2016-01-08
tags: ruby,irb,iruby,bond,ruby_completion
:date: 2016-01-08 10:20
:author: hackrole
:email: [email protected]
:tags: ruby, irb, iruby, bond, ruby_completion

概述
====
Expand Down Expand Up @@ -34,8 +34,8 @@ bond是一个ruby-gems, 用来增强irb的补全功能.

2) 需要修改~/.irbrc::

require 'bond'
require 'bond/completion'
require 'bond'
require 'bond/completion'

iruby补全
~~~~~~~~~
Expand Down
3 changes: 3 additions & 0 deletions content/why_mongodb_ob_1NF.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ mongodb与第一范式

:tag: mongodb,1NF,SQL,model
:author: hackrole
:email: [email protected]
:date: 2016-01-08



mongodb作为一个弱模型化的nosql数据库,被认为是不需要遵守SQL第一范式.
Expand Down
103 changes: 103 additions & 0 deletions develop_server.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
#!/usr/bin/env bash
##
# This section should match your Makefile
##
PY=${PY:-python}
PELICAN=${PELICAN:-pelican}
PELICANOPTS=

BASEDIR=$(pwd)
INPUTDIR=$BASEDIR/content
OUTPUTDIR=$BASEDIR/output
CONFFILE=$BASEDIR/pelicanconf.py

###
# Don't change stuff below here unless you are sure
###

SRV_PID=$BASEDIR/srv.pid
PELICAN_PID=$BASEDIR/pelican.pid

function usage(){
echo "usage: $0 (stop) (start) (restart) [port]"
echo "This starts Pelican in debug and reload mode and then launches"
echo "an HTTP server to help site development. It doesn't read"
echo "your Pelican settings, so if you edit any paths in your Makefile"
echo "you will need to edit your settings as well."
exit 3
}

function alive() {
kill -0 $1 >/dev/null 2>&1
}

function shut_down(){
PID=$(cat $SRV_PID)
if [[ $? -eq 0 ]]; then
if alive $PID; then
echo "Stopping HTTP server"
kill $PID
else
echo "Stale PID, deleting"
fi
rm $SRV_PID
else
echo "HTTP server PIDFile not found"
fi

PID=$(cat $PELICAN_PID)
if [[ $? -eq 0 ]]; then
if alive $PID; then
echo "Killing Pelican"
kill $PID
else
echo "Stale PID, deleting"
fi
rm $PELICAN_PID
else
echo "Pelican PIDFile not found"
fi
}

function start_up(){
local port=$1
echo "Starting up Pelican and HTTP server"
shift
$PELICAN --debug --autoreload -r $INPUTDIR -o $OUTPUTDIR -s $CONFFILE $PELICANOPTS &
pelican_pid=$!
echo $pelican_pid > $PELICAN_PID
cd $OUTPUTDIR
$PY -m pelican.server $port &
srv_pid=$!
echo $srv_pid > $SRV_PID
cd $BASEDIR
sleep 1
if ! alive $pelican_pid ; then
echo "Pelican didn't start. Is the Pelican package installed?"
return 1
elif ! alive $srv_pid ; then
echo "The HTTP server didn't start. Is there another service using port" $port "?"
return 1
fi
echo 'Pelican and HTTP server processes now running in background.'
}

###
# MAIN
###
[[ ($# -eq 0) || ($# -gt 2) ]] && usage
port=''
[[ $# -eq 2 ]] && port=$2

if [[ $1 == "stop" ]]; then
shut_down
elif [[ $1 == "restart" ]]; then
shut_down
start_up $port
elif [[ $1 == "start" ]]; then
if ! start_up $port; then
shut_down
fi
else
usage
fi
Loading

0 comments on commit 2360997

Please sign in to comment.