Bash 显示 Git 分支

虽然一直都在用git,但是并没有注意到还有这个方便的用法

于是乎赶快学习一下 :-)

上网查了一下资料,都说Ubuntu下如何如何方便,其他的发行版需要先下载一个文件,然后添加source,再如何如何。。

其实查再多都不如实践。以下是窝经过查资料加上对个人bash的配色后写出的配置文件,加入到 ~/.bashrc 中即可(对各个发行版通用的)

1
2
3
4
5
6
function git_branch {
ref=$(git symbolic-ref HEAD 2> /dev/null) || return;
echo "("${ref#refs/heads/}") ";
}

PS1="[\[\e[1;35m\]\u\[\e[1;32m\]\w\[\e[0m\]] \[\e[0m\]\[\e[1;36m\]\$(git_branch)\[\e[0;33m\]\$"

或者

1
2
3
4
5
6
7
8
9
10
11
12

function git-branch-name {
git symbolic-ref HEAD 2>/dev/null | cut -d"/" -f 3
#git rev-parse --abbrev-ref HEAD
}

function git-branch-prompt {
local branch=`git-branch-name`
if [ $branch ]; then printf " [%s]" $branch; fi
}

PS1="\u@\h \[\033[0;36m\]\W\[\033[0m\]\[\033[0;32m\]\$(git-branch-prompt)\[\033[0m\] \$ "

按照惯例,上一张图
屏幕截图

Grub2 rescue 修复

昨天下午的时候想要把分区处理一下,突然发现硬盘里面有一个未使用的102M的分区,很果断的把这些乱七八糟的分区都给干掉了。结果呢,再次开机的时候就坑了(虽然酱紫的事情干过很多次了,这次做个记录吧)开机时提示如下:

1
2
3
4
GRUB loading..
error: unknown filesystem.
Entering rescue mode....
grub rescue>

grub rescue 支持的命令

  • ls 查看硬盘的分区情况,如果你已知自己的grub的安装位置(比如我的在(hd0,msdos9)/boot/grub2),那么就直接进行下一步。
    如果不知道,那就ls每个分区,比如: ls (hd0,msdos2)/,如果正确就会显示里面到内容,直到找到grub

这里一个很关键的地方就是在硬盘位置后应该加入/

  • set 直接输入的话, 可以看到root 和 prefix 的设置。这里需要把这两个选项改成我们已经找到的位置。

窝的设置如下

1
2
3
grub rescue> set
grub rescue> prefix=(hd0,msdos9)/boot/grub2
grub rescue> root=hd0,msdos9
  • insmod 载入模块。这里区别是窝这次记录的关键。
    grub2和grub的一个很重要的区别就是模块的位置。grub2的模块位置在/boot/grub2/i386-pc/normal.mod
    执行命令:
1
grub rescue>insmod (hd0,msdos9)/boot/grub2/i386-pc/normal.mod

执行成功之后,提示符会变成normal

  • normal 进入正常模式,直接输入命令即可
1
grub rescue>normal

这个时候,就可以看到熟悉的引导界面了。

  • grub2-install
    进入系统后执行命令
1
2
$ sudo update-grub
$ sudo grub2-install /dev/sda

如果不执行这样的命令的话,重启之后还会回到之前的界面orz

upyun-for-pelican

这几天写了一个插件,方便把pelican生成静态博客部署到又拍云上。
整体思路就是:

  • 先格式化路径,以/为根目录

    1
    2
    3
    def formatPath(path):
    path = path.replace(os.sep, '/')
    return path
  • 定义两个列表来存储文件和目录

之后就是验证用户,以及bucketname 之类的了。

简介

pelican 是一款基于python的静态博客生成工具,本程序可以方便的把生成的静态博客部署到又拍云上。演示地址:upyun-for-pelican

生成网站

1
2
make html
make serve (进行本地预览)

说明

  • 程序使用了又拍云的官方SDK 需要先安装 upyun

    1
    pip install upyun
  • 可以自定义要上传的文件目录。在最下方的local_dir 中指定即可。Pelican默认的上传目录是 output 目录

使用

  1. 可以在 pelicanconf.py 文件中直接设置 BUCKETNAME, USERNAME, PASSWORD 参数(这些参数的使用大写命名格式也是为了符合pelicanconf.py中的习惯),也可以直接在 upyun-for-pelican.py文件的最下方直接设置。

  2. 执行

    1
    python upyun-for-pelican.py
  3. 程序在 Python 2.7 环境下测试通过。

其他说明

  • 程序执行开始会有上传确认提示,输入Y / y 都可以继续上传。
  • 可以使用项目中的pelicanconf.py作为个人站点的配置文件。

未完待续…

使用Pelican搭建Blog

安装配置Pelican


使用环境:
1
2
系统  :  Linux X86_64
Pelican : 3.3.0

首先说一下安装: 网上有不少建议说使用虚拟环境 virtualenv,以免污染本地的环境。不过,如果不是去更改Python的全局设置的话,也不至于影响本地环境的。我是直接安装的。根据 Pelican 官方的文档,我是使用 pip 安装的,不过pip又是依赖于distribute 安装的。所以,我使用的命令如下:

1
2
3
4
5
6
7
curl -O http://python-distribute.org/distribute_setup.py
sudo python distribute_setup.py

curl -O https://raw.github.com/pypa/pip/master/contrib/get-pip.py
sudo python get-pip.py

sudo pip install pelican

还有,如果要用 Markdown来写文章,也需要执行如下命令:

1
pip install markdown

新建一个目录,用来存放你的博客文件(我直接建立了”blog”文件夹)

1
2
mkdir blog
cd blog

新建博客:

使用如下命令:

1
pelican-quickstart

按照提示一步步即可完成新建, 这些配置之后可以在pelicanconf.py这个文件中修改

1
2
3
4
5
6
7
8
9
10
11
12
13
Where do you want to create your new web site?[.]  (你想在哪里创建你的网站,默认为当前目录)
What will be the title of this web site?(网站的标题是什么)
Who will be the author of this web site?(网站的作者是谁)
What will be the default language of this web site? [en] (网站的默认语言是),这里我们写'zh'中文
Do you want to specify a URL prefix? e.g., http://example.com(Y/n) (是否指定域名),Y
What is your URL prefix?(see above example; no trailing slash)(输入域名,不能包含反斜杠'/'),http://moelove.info
Do you want to enable article pagination?(是否启用文章分页)
Do you want to generate a Makefile to easily manage your website?(是否生成一个Makefile来管理网站(这里我建议生成,因为会比较方便的))
Do you want an auto-reload & simpleHTTP script to assist with theme and site development?(是否想有一个自动加载的小型http脚本用来修改主题和站点开发)
Do you want to upload your website using FTP?
Do you want to upload your website using SSH?
Do you want to upload your website using Dropbox?
Do you want to upload your website using S3?


新建博文:

这个时候就可以写博客了。具体的写作方式可以参考 Pelican的官方文档
我以Markdown 为例说明一下。

在content 目录,新建一个 hello.md文件

1
2
3
4
5
6
7
8
vim content/htllo.md


Date: 2014-04-18 #日期
Title: HelloWorld #标题
Tags: hello #标签
Category: test #分类
Hello World !

之后,执行make html 或者 pelican content即可将 md文件转换成html文件。执行 make serve 即可打开本地浏览器,预览

现在一个使用默认主题的博客就建立好了。


后续

接下来说一下修改主题和使用插件的方法

Pelican 默认提供了很多主题可以 github 上下载,当然也可以自己制作。

1
git clone git://github.com/getpelican/pelican-themes.git

在里面找到你喜欢的主题,使用

1
sudo pelican-theme -i /path/to/your/themes

命令进行主题的安装。

随后可以使用pelican-themes -l -v 查看已经安装好的主题。

1
2
3
/usr/lib/python2.7/site-packages/pelican/themes/simple
/usr/lib/python2.7/site-packages/pelican/themes/notmyidea
/usr/lib/python2.7/site-packages/pelican/themes/bootstrap2

想要开始使用主题的话, 只需要在pelicanconf.py文件中添加 THEME项为主题名,例如:

1
THEME = "bootstrap2"

重新 make html 即可, 这时候声成的页面就是所要使用的主题了。

为博客使用插件

Pelican 也提供了不少的插件来方便使用, 可以从github 上面下载到博客所在目录:

1
git clone git://github.com/getpelican/pelican-plugins.git

现在博客目录就新添了一个 pelican-plugins 目录,接下来在 pelicanconf.py 里面添加配置即可(里面是我最开始使用的三个插件):

1
2
PLUGIN_PATH = u"pelican-plugins"
PLUGINS = ["sitemap", "summary", "neighbors"]

再添加 sitemap 的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
SITEMAP = {
'format': 'xml',
'priorities': {
'articles': 0.5,
'indexes': 0.5,
'pages': 0.5
},
'changefreqs': {
'articles': 'weekly',
'indexes': 'daily',
'pages': 'monthly'
}
}

然后执行 *make html* 即可

添加多说评论

一开始搭建静态博客的时候,使用的disqus 并且Pelican 的主题中默认提供了支持,只要在 pelicanconf.py 的里面加入 disqus 的short_name 即可开始使用了。不过,身在天朝,还是尽量本地化一些吧,使用多说评论插件。
多说注册一个帐号,添加一个站点,获取自己的 short_name ,点击工具一栏–>获取代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!-- 多说评论框 start -->
<div class="ds-thread" data-thread-key="请将此处替换成文章在你的站点中的ID" data-title="请替换成文章的标题" data-url="请替换成文章的网址"></div>
<!-- 多说评论框 end -->
<!-- 多说公共JS代码 start (一个网页只需插入一次) -->
<script type="text/javascript">
var duoshuoQuery = {short_name:"替换成你自己的"};
(function() {
var ds = document.createElement('script');
ds.type = 'text/javascript';ds.async = true;
ds.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '//static.duoshuo.com/embed.js';
ds.charset = 'UTF-8';
(document.getElementsByTagName('head')[0]
|| document.getElementsByTagName('body')[0]).appendChild(ds);
})();
</script>
<!-- 多说公共JS代码 end -->

把这段代码放在你想要显示评论的地方就可以了。建议直接修改放在article.html模板里面。

添加其他功能

这里我还加入了百度分享的功能。直接定制个人想要的代码, 放在你需要出现分享按钮的地方即可,我放在了文章的下面。

1
2
3
<div class="bdsharebuttonbox"><a href="#" class="bds_more" data-cmd="more"></a><a href="#" class="bds_qzone" data-cmd="qzone"></a><a href="#" class="bds_tsina" data-cmd="tsina"></a><a href="#" class="bds_tqq" data-cmd="tqq"></a><a href="#" class="bds_renren" data-cmd="renren"></a><a href="#" class="bds_weixin" data-cmd="weixin"></a></div>

<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdPic":"","bdStyle":"0","bdSize":"16"},"share":{},"image":{"viewList":["qzone","tsina","tqq","renren","weixin"],"viewText":"分享到:","viewSize":"16"},"selectShare":{"bdContainerClass":null,"bdSelectMiniList":["qzone","tsina","tqq","renren","weixin"]}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>

还有加入了 Google Analytics 谷歌站内搜索 以及七牛提供的云存储 等。

Hello World !

几乎所有的程序猿的第一个演示程序都是Hello World .那我也就一样咯, 也写一个同样的吧。
其实我的博客从很早前就已经开始在写了, 换了很多的平台:

从腾讯空间--> 百度空间--> 新浪博客--> 自己搭建的Wordpress博客--> 点点(点点我其实是用来碎碎念的)
--> 博客园(个人感觉体验不是很好的说)--> 静态博客

选择了这么多,我最后决定还是使用 静态博客 来做个人博客。

原因有以下几个:

  1. 使用其他平台提供的博客不是很爽, 可个性化的方面不是很多, 点点相对来说做的还是很不错的
    不仅提供个性化定制而且还支持绑定个人域名之类的。但是其他网站就不是那么人性化了。
  2. 写博客总是需要贴代码的,但是除了WP外,其他的我不是很满意。
  3. 用静态博客方便备份,而且是本地编辑就可以了,在线编辑的,感觉会被束缚很多。
  4. 本人属于折腾党,喜欢可以个人定制的, 直到符合个人满意的程度为止。

接下来说说这次博客的安装:

  1. 选择Pelica是因为我对Python 比较熟悉,之前尝试过用Jekyll 和 Octopress 搭建,都比较方便
    尤其是Jekyll 用户很多,文档什么的都很多了。只不过我更喜欢Python 多一些(虽然我有用ROR开发过WEB应用程序)
    因为如果有什么需要的话,我也可以自己来开发插件或者自己再尝试做一个系统。
  2. Pelican 相对来说配置也很方便, 很简单, 虽然用户不是很多,但是基本上的问题也都可以解决的
  3. Pelican 支持restructuredText和Markdown写文章,配置灵活,扩展性强。我用的是3.3.0。

Linux 安装Android 驱动

在Linux下非常适合做一些对Rom 的定制以及其他的一些操作,甚至是自己制作Rom 或者从源码编译Rom 也是OK的。

不过最开始的应该就是搭建开发环境了,我先从装驱动开始说(只是做个笔记而已)

  • 使用数据线连接手机,打开adb调试模式。(在Linux上搭建开发环境, 以及adb 命令之类的, 就自行搜索吧,如果哪天更新了 我会附上链接的)

  • 输入adb devices 查看设备
    如果有机型的话就说明是已经有驱动了
    如果没有显示的话, 就是说明需要进行驱动安装了。

这个时候, lsusb 查看, 会看到下面这样的信息

1
2
3
4
5
6
7
8
[tao@localhost ~]$ lsusb
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 006: ID 12d1:2229 Huawei Technologies Co., Ltd.
Bus 002 Device 004: ID 04f2:b1c1 Chicony Electronics Co., Ltd
Bus 002 Device 005: ID 062a:4101 Creative Labs

可以在Android Developer , 看到对其他的产品的支持,窝的手机是Huawei的所以就是要输入对应的ID :12d1 然后,再新建一个文件,

1
2
3
4
5
vim /etc/udev/rules.d/50-android.rules

写入内容:

SUBSYSTEM=="usb", ATTR{idVendor}=="12d1", ATTR{idProduct}=="2229", MODE="0600", OWNER="tao",GROUP ="plugdev"

50是说是手机, 其他的命名也有各自的解释

然后我们就可以新建这个文件, 修改权限

1
chmod a+x /etc/udev/rules.d/50-android.rules

这个时候 就成功了,我们使用adb devices 命令就可以看到我们的设备了, 使用adb shell 就可以对手机进行操作了

当然我在这里进行了一次重启,就可以使用了
(话说这篇文章虽然一直在云端编辑,但是一直木有结束,现在才发出来。。一定要提高效率!)

fedora 18 Kernel driver not installed (rc=-1908)处理办法

fedora 18 升级内核之后 使用VirtualBox 可以正常打开软件,但是不能启动虚拟机系统.提示信息如下:

1
Kernel driver not installed (rc=-1908)

经过一系列的看文档还有google 之后,很多地方写着这个问题的处理方法是

  • 第一种
    1
    sudo /etc/init.d/vboxdrv setup

经过实验,对feora 18 不可行

  • 第二种
    1
    2
    sudo apt-get install dkms
    sudo /etc/init.d/vboxdrv setup

但是情况继续

  • 第三种
    1
    2
    3
    sudo aptitude update
    sudo aptitude install dkms
    sudo /etc/init.d/vboxdrv setup

最后正确的解决方法应该是酱紫的

  • 先看看系统的内核

    1
    uname -r
  • 找对应的包

    1
    sudo yum search kmod-VirtualBox
  • 然后安装和你系统内核对应的包

    1
    sudo yum install kmod-VirtualBox-XXXX
  • 运行

    1
    /etc/sysconfig/modules/VirtualBox.modules

一切OK了

Ruby on Rails 环境

就这次的尝试写一下自己的记录

安装ruby 和 ruby-devel(安装ruby-devel是因为后续的工作如果没有ruby-devel的话,会报错)

1
sudo yum install ruby ruby-devel rubygems sqlite -y

需要的环境有了,那么就可以开始正式的工作了

1
sudo gem install rails

找到一个合适的目录来放自己的代码.然后执行

1
2
3
4
5
6
$ rails new mysite
// 这个是建立一个叫mysite 的rails程式 ,在当前目录下面
$ cd mysite
//进入这个目录
$ bundle install
//因为在做测试 所以 也没有必要安装其他的gem

接下来看看它的数据库 配置文件是 config/database.yml 默认的支持是是SQLite3(当然也支持其他的比如mysql之类的)它有三种模式:

  • development environment开发模式,用在你的开发的时候
  • test environment测试模式,用在自动测试时
  • production environment正式上线模式,用在实际的上线运作环境

SQLite配置大致是这样的:

1
2
3
4
5
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000

接下来建立自己的数据库

1
rake db:create

在这里我遇到一个错误

1
2
3
4
rake aborted!
Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes.

(See full trace by running task with --trace)

我的解决办法是

1
sudo yum install nodejs

然后启动服务器

1
rails server

要看结果就打开http://localhost:3000就会看见rails 的默认首页了

利用百度BAE搭建discuz论坛

最近尝试了利用百度云应用管理BAE搭建discuz论坛, 这里做简要记录

创建应用

百度开发者中心 创建一个应用,选择WEB应用下的PC Iframe应用

托管设置

之后进行托管设置, 确定域名XXX.duapp.com

创建一个版本,并上传PHP代码包

(BAE有些函数规则发生改变,所以需要使用为BAE环境做过调整的discuz for BAE 版本)

需要注意的是在上传的代码包里面的 bcs/config.php 中的内容应该修改为

1
2
3
4
5
6
7
<?php

define('BAIDU_BCS_BUCKET', '创建的bucket名称');
define('BAIDU_BCS_AK', getenv('HTTP_BAE_ENV_AK'));
define('BAIDU_BCS_SK', getenv('HTTP_BAE_ENV_SK'));

?>

同时在数据库中设置为UTF-8,

注意开启缓存 cache 最少30M(亲测50M完全是OK的)

安装

之后上线应用,访问http://你的域名.duapp.com/install/index.php

即可完成安装(需要用到创建的数据库名称)