源码编译MongoDB

上周放假正好有时间,编译安装了MongoDB,虽然MongoDB用了挺长时间的,但还是第一次用源码编译。在此做个备忘。因为已经完整编译安装过了,所以写起来的时候,就按照先知视角来写了~ 2333 下载MongoDB源码 MongoDB的官网上是有已经编译好的二进制包的,这里选择clone MongoDB在github上的仓库 git clone https://github.com/mongodb/mongo && cd mongo 在docs/building.md中是编译所需的依赖。 * A modern C++ compiler. One of the following is required. * GCC 4.8.2 or newer * Clang 3.4 (or Apple XCode 5.1.1 Clang) or newer * Visual Studio 2013 Update 2 or newer * Python 2.7 * SCons 2.3 我这台服务器是CentOS 6.5, 上面的gcc版本比较低,这里就先更新gcc咯. gcc --version gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-16) Copyright © 2010 Free Software Foundation, Inc.

重置Ghost博客的密码

在搭建Ghost博客的时候,尚未配置mail服务器时,重置密码的方法做个记录 打开数据库查看用户信息 如果全部默认设置,使用生产环境的话,应该是 sqlite3 content/data/ghost.db 如果是开发环境应该是 sqlite3 content/date/ghost-dev.db 查看用户信息 sqlite>SELECT * FROM users; 更新用户密码 Ghost对用户密码用的是BCrypt加密,可以使用BCrypt Hash Generator之类的工具生成一个想要修改的密码,例如”mypasswd”生成的密码是 $2a$10$QecJeBdw2lONRTnHJ0RoVO6DczdJWf4h4QgaUcgKsYFZlzTe1yeEK 假设之前查看到的用户信息,邮箱是admin@domain.com 那么,使用这样更新密码 UPDATE users SET password="$2a$10$QecJeBdw2lONRTnHJ0RoVO6DczdJWf4h4QgaUcgKsYFZlzTe1yeEK" WHERE email="admin@domain.com" 退出sqlite3 .exit

近况

博客好长时间没有更新了,今天抽空大致来说一下近况吧 工作 用这个标题的话,其实感觉想写的确实好多,但是还是挑一些比较重要的来说吧。现在的公司说实话还确实没有让我失望,工位上配的是一个 22寸的 AOC 显示器和一个24寸的 Dell 显示器, 主机内存 12G (我每天跑个Linux是有点浪费)办公区每天有物业定时打扫神马的,下午的时候有茶歇(茶水间还有一堆零食)。同事们相处感觉都很不错,每天中午一起出去吃饭,各种聊天调侃神马的,只是一开始不太了解项目中的配置神马的,让老大费心了… 这段时间还有很多有趣的事情 比如: 去金海湾度假村团建之类的。 再说一下最近的感受吧。 因为国庆前需要上线,所以放假前就每天都是在忙着开发神马的。不过那两周也是近期感觉最爽的时候 写代码高潮不断 而且也确实感觉工作是蛮有挑战性的,确实是我想要的工作 :-) 。 不过我还记得那周一,一打开邮箱看到中有7份未读的需求邮件, 确实是略惊吓。 在开发的项目,因为改变了设计思路,所以这些天主要都是在写前端。只不过一开始的时候感觉略虐心啊, 写Python时间长了已经是不习惯其他语言那种书写规范了 一堆括号写的好烦躁 但是从这两天的感觉来看,得感谢老大的这种设计思路,这段时间学到的确实很多。 从框架到一些库,一些插件, 还有程序上一些比较巧妙的用法 正在努力消化中 生活 有点后悔加上标题了 其实主要要说的应该都放在这里吧。 从搬家后基本上每天生活都很规律,目前差不多适应了。(找工作和面试神马的我写到碎碎念里面了,具体的等半年或者一年后当回忆录来写 233)值得吐槽的就是电信的客服,用的是电信的网,前几天换了路由器忘记了密码,打客服重置密码,但是一直连接不成功(691错误,明显就是帐号密码的问题嘛)结果本来想到了周末放假的时候再好好处理,结果到了周末打电话却一直没有客服啊用联通号打电信的客服我也是醉了 最后到了周一才让客服又重置才成功。 其实那也是导致我这么久没有更新博客的原因orz 。 * 一个原因是因为电脑重装了系统,环境啥的一直没有配置 * 另一个就是因为网络坑爹,实在有心无力 再者就是帝都的天气让人确实有点无奈,有天早上刚下楼,我还以为我要迈步进入寂静岭了 TAT ,感觉能幸存下来确实是很不容易啊。 最后说一下最近在网络弄好之后,挖了一个坑。打算独立开发一个网站的说, 重复造轮子的原因和大多数人是一样的 ,现有的东西没有我想要的 正好把最近学到的东西都拿来练练手 Try My Best !

正则匹配中文及字符编码问题

匹配中文的正则表达式 窝写了一小段代码(虽然写的不太好,但是基本可以表达意思) -- import re nickname = raw_input('Please input your nickname > ') if not re.search(u'^[\u4e00-\u9fa5a-zA-Z0-9]+$', unicode(nickname,'utf8')): print 'Your nickname format is error, please try again !' else: print 'Hello %s'% nickname 如你所见,上面第5行的代码,就是匹配中文和字母,数字的正则表达式了。里面的\u4e00-\u9fa5 就是中文汉字的unicode编码所在位置。 Python字符串的编码问题 还是以上面那段代码来说。注意看第5行的代码 if not re.search(u'^[\u4e00-\u9fa5a-zA-Z0-9]+$', unicode(nickname,'utf8')): 其实这样的代码并不严谨。因为在Python 中默认是用unicode编码来处理字符串的,因此做编码转换的时候,一般要以unicode作为中间编码,也就是说: 其他编码格式的字符串—>解码(decode)—>unicode—>编码(encode)—>所需要的编码格式。 因此,处理字符串编码的问题的时候,先要明白需要转换的字符串的编码格式是什么。 代码中字符串的默认编码格式与代码文件本身的编码格式是一样的 比如: s = ‘涛’ 在utf8的文件中,那么s就是utf8编码的,但是如果文件是gb2312编码,那么s就是gb2312编码的。此时,如果想要处理s这个字符串就要先decode成unicode编码了。 不过如果是酱紫 s = u’涛’,那么s就是unicode编码了,这个时候s的编码方式不会被文件的编码所影响。 如果一个字符串已经是unicode编码了,再解码就会出错 因此严谨的方式就是先对字符串进行编码格式的判别,最简单的办法就是使用Python 默认提供的isinstance() 方法. 代码可以这样写 isinstance(s, unicode) 如果不是unicode编码就会报错。 窝今天在处理用户昵称的地方,忘记字符串会直接使用文件的编码了,所以对它进行了重新编码orz果断就报错了。。。以后还是要好好注意细节的说。

Bash 显示 Git 分支

虽然一直都在用git,但是并没有注意到还有这个方便的用法 于是乎赶快学习一下 :-) 上网查了一下资料,都说Ubuntu下如何如何方便,其他的发行版需要先下载一个文件,然后添加source,再如何如何。。 其实查再多都不如实践。以下是窝经过查资料加上对个人bash的配色后写出的配置文件,加入到 ~/.bashrc 中即可(对各个发行版通用的) 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\]\$" 或者 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的分区,很果断的把这些乱七八糟的分区都给干掉了。结果呢,再次开机的时候就坑了(虽然酱紫的事情干过很多次了,这次做个记录吧)开机时提示如下: 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 的设置。这里需要把这两个选项改成我们已经找到的位置。 窝的设置如下 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 执行命令: grub rescue>insmod (hd0,msdos9)/boot/grub2/i386-pc/normal.mod 执行成功之后,提示符会变成normal normal 进入正常模式,直接输入命令即可 grub rescue>normal 这个时候,就可以看到熟悉的引导界面了。 grub2-install 进入系统后执行命令 $ sudo update-grub $ sudo grub2-install /dev/sda 如果不执行这样的命令的话,重启之后还会回到之前的界面orz

Linux中Sublime中文输入

这篇只是为了备忘所以把以前写的东西搬这边了 -.- 代码源于网络,感谢分享 这里的关键就是以下的代码和编译 /* sublime-imfix.c Use LD_PRELOAD to interpose some function to fix sublime input method support for linux. By Cjacker Huang <jianzhong.huang at i-soft.com.cn> gcc -shared -o libsublime-imfix.so sublime_imfix.c `pkg-config --libs --cflags gtk+-2.0` -fPIC LD_PRELOAD=./libsublime-imfix.so sublime_text */ #include <gtk/gtk.h> #include <gdk/gdkx.h> typedef GdkSegment GdkRegionBox; struct _GdkRegion { long size; long numRects; GdkRegionBox *rects; GdkRegionBox extents; }; GtkIMContext *local_context; void gdk_region_get_clipbox (const GdkRegion *region, GdkRectangle *rectangle) { g_return_if_fail (region !

upyun-for-pelican

这几天写了一个插件,方便把pelican生成静态博客部署到又拍云上。 整体思路就是: 先格式化路径,以/为根目录 def formatPath(path): path = path.replace(os.sep, '/') return path 定义两个列表来存储文件和目录 之后就是验证用户,以及bucketname 之类的了。 简介 pelican 是一款基于python的静态博客生成工具,本程序可以方便的把生成的静态博客部署到又拍云上。演示地址:upyun-for-pelican 生成网站 make html make serve (进行本地预览) 说明 程序使用了又拍云的官方SDK 需要先安装 upyun pip install upyun 可以自定义要上传的文件目录。在最下方的local_dir 中指定即可。Pelican默认的上传目录是 output 目录 使用 可以在 pelicanconf.py 文件中直接设置 BUCKETNAME, USERNAME, PASSWORD 参数(这些参数的使用大写命名格式也是为了符合*pelicanconf.py*中的习惯),也可以直接在 upyun-for-pelican.py文件的最下方直接设置。 执行 python upyun-for-pelican.py 程序在 Python 2.7 环境下测试通过。 其他说明 程序执行开始会有上传确认提示,输入Y / y 都可以继续上传。 可以使用项目中的pelicanconf.

使用Pelican搭建Blog

安装配置Pelican 使用环境: 系统 : Linux X86_64 Pelican : 3.3.0 首先说一下安装: 网上有不少建议说使用虚拟环境 virtualenv,以免污染本地的环境。不过,如果不是去更改Python的全局设置的话,也不至于影响本地环境的。我是直接安装的。根据 Pelican 官方的文档,我是使用 pip 安装的,不过pip又是依赖于distribute 安装的。所以,我使用的命令如下: 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来写文章,也需要执行如下命令: pip install markdown 新建一个目录,用来存放你的博客文件(我直接建立了”blog”文件夹) mkdir blog cd blog 新建博客: 使用如下命令: pelican-quickstart 按照提示一步步即可完成新建, 这些配置之后可以在pelicanconf.py这个文件中修改 Where do you want to create your new web site?[.] (你想在哪里创建你的网站,默认为当前目录) What will be the title of this web site?