<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>落</title>
	<atom:link href="http://liluo.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://liluo.org</link>
	<description>落就是一道风景线……</description>
	<lastBuildDate>Wed, 09 May 2012 14:56:26 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Ade, Dale</title>
		<link>http://liluo.org/2012/05/ade-dale/</link>
		<comments>http://liluo.org/2012/05/ade-dale/#comments</comments>
		<pubDate>Wed, 09 May 2012 14:55:38 +0000</pubDate>
		<dc:creator>落</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[豆瓣]]></category>

		<guid isPermaLink="false">http://liluo.org/?p=736</guid>
		<description><![CDATA[今天正式开始交接Dale项目，感谢Dale项目的所有经历并祝福Dale。
简短记录
命名
Dale是由洪教授(@hongqn)按照豆瓣项目命名的传统(《豆瓣技术团队的指环王文化》)取自《指环王》中的地名，中文译为“河谷镇 人类的聚落之一”。
框架 
和阿尔法城(Alphatown)一样，Dale使用的web framework是由豆瓣主站基于quixote长期积累改进的shire框架的精简版(更确切的说，精简版shire框架阿尔法城同事@Ryutlis提供的）。
版本控制 
Git  (2012.3~)
Hg  (2011.9~2012.3)
]]></description>
		<wfw:commentRss>http://liluo.org/2012/05/ade-dale/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用python\ruby\bash 脚本post文件(二进制流数据)</title>
		<link>http://liluo.org/2012/05/%e4%bd%bf%e7%94%a8python-bash-ruby-%e8%84%9a%e6%9c%acpost%e4%ba%8c%e8%bf%9b%e5%88%b6%e6%b5%81%e6%95%b0%e6%8d%ae/</link>
		<comments>http://liluo.org/2012/05/%e4%bd%bf%e7%94%a8python-bash-ruby-%e8%84%9a%e6%9c%acpost%e4%ba%8c%e8%bf%9b%e5%88%b6%e6%b5%81%e6%95%b0%e6%8d%ae/#comments</comments>
		<pubDate>Fri, 04 May 2012 09:49:25 +0000</pubDate>
		<dc:creator>落</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[ror]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://liluo.org/?p=715</guid>
		<description><![CDATA[之前经常使用python的urllib, urllib2两个库写爬虫或者是向第三方接口post数据，很是清爽。今天有需求要把图片文件post到第三方接口，当我又祭出urllib+urllib2两大法宝时，结果很不意外的被洗刷刷了……

被洗刷的感觉很不爽，需求是流氓，你弱它就强，所以一定要搞定它 XD
各种搜罗之后，得到了python\ruby\bash几个版本:
Pyhton版1
使用第三方库poster, 安装：
easy_install poster
代码:

from poster.encode import multipart_encode
from poster.streaminghttp import register_openers
import urllib2

register_openers()

datagen, headers = multipart_encode({
                     'image': open('/Users/luo/img1.jpg', 'rb')
                  [...]]]></description>
		<wfw:commentRss>http://liluo.org/2012/05/%e4%bd%bf%e7%94%a8python-bash-ruby-%e8%84%9a%e6%9c%acpost%e4%ba%8c%e8%bf%9b%e5%88%b6%e6%b5%81%e6%95%b0%e6%8d%ae/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>单元测试二三事</title>
		<link>http://liluo.org/2012/03/%e5%8d%95%e5%85%83%e6%b5%8b%e8%af%95%e4%ba%8c%e4%b8%89%e4%ba%8b/</link>
		<comments>http://liluo.org/2012/03/%e5%8d%95%e5%85%83%e6%b5%8b%e8%af%95%e4%ba%8c%e4%b8%89%e4%ba%8b/#comments</comments>
		<pubDate>Wed, 14 Mar 2012 08:36:14 +0000</pubDate>
		<dc:creator>落</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[douban]]></category>
		<category><![CDATA[unittest]]></category>
		<category><![CDATA[豆瓣]]></category>

		<guid isPermaLink="false">http://liluo.org/?p=709</guid>
		<description><![CDATA[单元测试是在第一次面豆瓣时候被拒之后才开始接触的，那时候去网上g了此资料，感觉对各种“不可能出错的事情”测试是无聊到极致而又闲着蛋疼的人才会做的。自然，之后也没有多少实践，大多DDT是应付下形式。今天，在豆瓣的happyday现场，来记录一下自己和unittest之间不得不说的几件事。
转变
在豆瓣入职之后很长一段时间里，@cnborn 和 @zchi 对unittest各种赞扬，也会刻意把一些需要unittest的事情给我来做，让我看各种TDD的书。但是这些都经历了以后，我依然对unittest不屑一顾。
事情的转机在是一个即将下班的6点，那天的状态实在是不好，代码也写的心不在焉，unittest也很给面子的报N多fail。我觉得有必要认真看下是什么情况，结果看到import error，查了下代码发现是自己把方法名给写错了，那种懊悔的心情真的很难形容……对，就是这样一个很低级的错误让我认识到了unittest真正的意义，于是也有意识的会把原来的DDT向TDD 转换。当然之后还会很多小例子让我更加乐意去实践unittest，比如看下面～
重构
2012年初我做了一件特别有意义的开发任务——重构。其实就算是2个月后的现在，内心还是有些感慨。简单来说，这次重构的目的是为了摘掉ORM（关于ORM的坑，谁进去过谁知道……），改进代码质量，统一代码命名、风格等等。说来这是我第1次对项目整体性、系统性的重构，感谢cnborn~
重构的过程会让人成长很多，像一面放大镜，可以学到同事特别棒的代码写法，也会发现一些逻辑及各种xxoo的问题……当然，这些不是重点～重构过程中最怕的是没有unittest！！！在错综而又混乱的命名中实在理解不能，看到那些没有unittest的的实现，根本就是无从下手，各种想痛苦纠结……然后，怎样呢？补unittest的case，有几天时间我就是在疯狂的补写case（最后的case比重构前多了一倍，这都是后话了）。没有unittest的代码真的会让重构或者维护的同事发疯的，没有unittest是对自己的代码对同事不负责任，只写实现不写unittest的人就是流氓兔！！
Happyday
首先解释下，happyday是豆瓣工程师的盛大节日，绝对远超三八节于女同胞们、六一儿童节于宝宝们的意义。这里提到happyday，是因为今天的happyday的主题就是unittest。将电脑投放到大屏幕，各位coder轮流上去写代码，鸭梨很大有木有……我和zchi是我比赛小分队里第1组上场的，zchi写unittest我写实现。不知道zchi是怎样的状态，我上场整个过程中手都是在抖着，阿门。看来以后有机会应该多练习这种众人注目的鸭梨下写代码的能力 : )
落@豆瓣 HappyDay 现场
]]></description>
		<wfw:commentRss>http://liluo.org/2012/03/%e5%8d%95%e5%85%83%e6%b5%8b%e8%af%95%e4%ba%8c%e4%b8%89%e4%ba%8b/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>使用PIL给图片添加水印</title>
		<link>http://liluo.org/2011/08/%e4%bd%bf%e7%94%a8pil%e7%bb%99%e5%9b%be%e7%89%87%e6%b7%bb%e5%8a%a0%e6%b0%b4%e5%8d%b0/</link>
		<comments>http://liluo.org/2011/08/%e4%bd%bf%e7%94%a8pil%e7%bb%99%e5%9b%be%e7%89%87%e6%b7%bb%e5%8a%a0%e6%b0%b4%e5%8d%b0/#comments</comments>
		<pubDate>Tue, 09 Aug 2011 11:19:31 +0000</pubDate>
		<dc:creator>落</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[PIL]]></category>

		<guid isPermaLink="false">http://liluo.org/?p=700</guid>
		<description><![CDATA[前几天在做一个给指定相册添加水印的功能，使用的是PIL(Python Image Library)。
先去看一下网上，找到这篇：Watermark with PIL (Python recipe) 于是，处理水印的核心代码就差不多有了～

当然，问题也接着来了，首先就是拿到的图片文件和水印文件。我这边得到上传图片文件基本上会是文件二进制数据流或者由Flash post过来的application/octet-stream类型的二进制数据流，并不能像参考中的代码使用指定路径拿到文件，所以数据流进行处理：
import Image, ImageEnhance
from cStringIO import StringIO
img = Image.open(StringIO(img_data)) # img_data 是post过来的数据流
这样就可以拿到一个Image对象了。再使用类似参考代码对它进行水印处理。
然后在上传图片的时候，依然使用原来的机制，这里再把加过水印的数据流丢出去：
new_img = StringIO()
img.save(new_img, img_format, quality=100) # quality来指定生成图片的质量，范围是0～100
reutrn new_img.getvalue()
代码上线不久之后，就有同事反映说有png图片上传之后会原图会变掉，我拿png去上传之后效果正常，于是把他那张图拿过来测试，果然报错。后来发现他那张png使用的模式是'RGBA', 而我们一般情况下的png或者gif模式是'P'，会不会是因为图片模式问题呢？
测试：
img = Image.open('/Users/luo/p.png')
img.show()
在这个时候图片就已经被奇怪的变化了 ＃＃
后来多次尝试发现在 img.save() 时指定format='PNG'时效果正常，于是另加上了mode判断：
if img.mode != 'RGBA':
img_format = 'JPEG'
else:
img_format = 'PNG'
然后在保存时
img.save(new_img, img_format, quality=100)
本地环境测试ok，然后代码提交～
完整代码：
from cStringIO import StringIO
import Image, ImageEnhance
LEFT_TOP     = 'lt'
LEFT_BOTTOM  = 'lb'
RIGHT_TOP    = 'rt'
RIGHT_BOTTOM = 'rb'
WIDTH_GRID = [...]]]></description>
		<wfw:commentRss>http://liluo.org/2011/08/%e4%bd%bf%e7%94%a8pil%e7%bb%99%e5%9b%be%e7%89%87%e6%b7%bb%e5%8a%a0%e6%b0%b4%e5%8d%b0/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Debian 6 安装小记</title>
		<link>http://liluo.org/2011/07/%e5%b0%8f%e8%ae%b0-debian-6-%e5%ae%89%e8%a3%85/</link>
		<comments>http://liluo.org/2011/07/%e5%b0%8f%e8%ae%b0-debian-6-%e5%ae%89%e8%a3%85/#comments</comments>
		<pubDate>Sun, 31 Jul 2011 09:51:28 +0000</pubDate>
		<dc:creator>落</dc:creator>
				<category><![CDATA[LAMP]]></category>
		<category><![CDATA[Debian]]></category>

		<guid isPermaLink="false">http://liluo.org/?p=692</guid>
		<description><![CDATA[上个月入手了mac，就把thinkpadr400冷落了蛮久。想着太浪费了，于是想着开始折腾系统。最开始是考虑unix中的freebsd, openbsd, netbsd，后来觉得还是回归linux吧，ubuntu太大众而且特别是那个紫色调太不喜欢，opensuse有用过，centos也在服务器上用过，思来想去了最后决定尝试下Debian。



下载时选择的是stable版本的debian-6.0.2.1-i386-CD-1.iso，然后刻盘安装。哈哈，我另外还有一台老旧的安装xp系统的thinkpadr60，用它安装刻录软件，加配3个月前买的外置刻录机，各种cd, dvd盘，装备齐全的连自个儿都感动了～
安装
其实Debian6的安装还是很方便的，甚至有点类似装win。另外还可以参考Debian GNU/Linux 安装手册 
开始使用
安装完成重启打开时，第一感觉就是简洁，经过opensuse的华丽，看到Debian真是别有一番味道。第二感觉还是简洁，它没有像Ubuntu硬塞进来很多用得到用不到的各种软件各种工具。整体看起来让人很舒服。
添加源
Debian中源列表文件在 /etc/apt/sources.list，因为默认是没有sudo的，所以暂时需要先su root, 没有vim暂时先用vi。
首先要把带有类似"deb cdrom"字眼的行给注释掉，不然系统会先找cd，因为没注意到这里让我纠结了很久。然后就是添加源，国内的话用网易的源还是不错的选择，将以下文字添加到/etc/apt/sources.list

deb http://mirrors.163.com/debian squeeze main non-free contrib
deb http://mirrors.163.com/debian squeeze-proposed-updates main contrib non-free
deb http://mirrors.163.com/debian-security squeeze/updates main contrib non-free
deb-src http://mirrors.163.com/debian squeeze main non-free contrib
deb-src http://mirrors.163.com/debian squeeze-proposed-updates main contrib non-free
deb-src http://mirrors.163.com/debian-security squeeze/updates main contrib non-free

完成之后，更新源并安装sudo：

apt-get update
apt-get install sudo
#要使用sudo,需要给相应的用户加上sudo权限
#添加写入权限
chmod u+w /etc/sudoers
vi /etc/sudoers
#在root ALL=(ALL) ALL下面添加
luo ALL=(ALL) ALL # luo是我的用户名
#保存退出，然后去除可写入权限
chmod u-w /etc/sudoers
#然后退出root
exit

安装中文支持

sudo [...]]]></description>
		<wfw:commentRss>http://liluo.org/2011/07/%e5%b0%8f%e8%ae%b0-debian-6-%e5%ae%89%e8%a3%85/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>bash快捷键(ctrl、alt)</title>
		<link>http://liluo.org/2011/06/bash%e5%bf%ab%e6%8d%b7%e9%94%aectrl%e3%80%81alt/</link>
		<comments>http://liluo.org/2011/06/bash%e5%bf%ab%e6%8d%b7%e9%94%aectrl%e3%80%81alt/#comments</comments>
		<pubDate>Thu, 02 Jun 2011 17:37:41 +0000</pubDate>
		<dc:creator>落</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[bash]]></category>

		<guid isPermaLink="false">http://liluo.org/?p=682</guid>
		<description><![CDATA[翻一下bash中的快捷键~
Ctrl
ctrl-a/ctrl-e
移动光标到行首/行尾,同Home/End 键
ctrl-b/ctrl-f
后移/前移 一个字符。
ctrl-c
杀死当前进程。
ctrl-d
杀死当前 Shell。
ctrl-h
删除左边一个字符, 同 Backspace 键
ctrl-l
清屏, 同 clear
ctrl-r/ctrl-R
从之前键入过的历史命令中搜索
ctrl-u/ctrl-k
删除光标前/光标后的所有字符
ctrl-xx
让光标在当前位置和行尾切换
ctrl-y
撤消前一次删除
ctrl-z
挂起当前进程,之后可以使用 fg 命令唤醒
Alt
Alt-&#60; Alt-&#62;
在输入历史中的 最头/最尾 命令。
Alt-?
显示当前的补全列表。
Alt-*
插入所有可能的补全。
Alt-/
(无用)
Alt-。
把前面的命令行参数插入到当前位置。
Alt-b /Alt-f
后移/前移 一个单词
Alt-c
把当前字符改成首字母大写, 同时光标移到词尾
Alt-d
删除当前位置到词尾的字符
Alt-l/Alt-u
把当前单词变成全 小写/大写, 同时光标移到词尾。
Alt-n /Alt-p
在搜索历史中搜索
Alt-r
删除全部键入的内容。
Alt-t
光标前两个单词的位置互换, 并将光标移到词尾
Alt-Backspace
删除光标前一个单词, 同 Ctrl-w 一样
]]></description>
		<wfw:commentRss>http://liluo.org/2011/06/bash%e5%bf%ab%e6%8d%b7%e9%94%aectrl%e3%80%81alt/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>curl 简单作弊条</title>
		<link>http://liluo.org/2011/05/curl-%e7%ae%80%e5%8d%95%e4%bd%9c%e5%bc%8a%e6%9d%a1/</link>
		<comments>http://liluo.org/2011/05/curl-%e7%ae%80%e5%8d%95%e4%bd%9c%e5%bc%8a%e6%9d%a1/#comments</comments>
		<pubDate>Thu, 26 May 2011 14:41:09 +0000</pubDate>
		<dc:creator>落</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://liluo.org/?p=679</guid>
		<description><![CDATA[1  curl是什么？
curl 是一款命令行多协议支持的服务器访问工具,可以用它来访问HTTP服务器，就像浏览器一样。当然了，它也是可以通过FTP下载或上传文件，下次再说这块。
2 基本应用
curl http://www.douban.com
上面的命令会在屏幕上输出服务器的响应信息，需要headers信息加 -i/--include 参数，只需要headers信息可以使用 -I/--head。
重定向输出：
curl http://www.douban.com &#62; response.html
curl http://www.douban.com &#124; grep 'douban.com'
如果使用管道，默认会有一个进程信息显示出来，可以使用 -s/--silent 来不显示它们：
curl -s http://www.douban.com &#124; grep 'douban.com'
如果想保存服务器返回的内容的话，除了使用 &#62; 重定向到一个文件外，还可以使用 -o/--output 参数指定需要保存到的文件：
curl http://www.douban.com -o response.html
非文本文件也能这样保存：
curl http://img3.douban.com/pics/nav/lg_main_a7.png -o logo.png
原名保存使用 -O/--remote-name 选项：
curl http://img3.douban.com/pics/nav/lg_main_a7.png -O
不过豆瓣的图片有简单的防盗链，所以可能下载不成功 : ( 继续往下看
3   发送数据
GET 方法的请求没什么特殊的，直接在 url 中放上数据就可以了：
curl http://www.douban.com/?name=luo
curl http://www.douban.com/?name=小落
POST 方法的话就需要使用 -d/--data 参数，只要有这个参数，即使值是空字符串，那么出去的就是 POST 方法的访问：
curl -d 'name=luoluo&#38;passwd=*****' http://www.douban.com
4 [...]]]></description>
		<wfw:commentRss>http://liluo.org/2011/05/curl-%e7%ae%80%e5%8d%95%e4%bd%9c%e5%bc%8a%e6%9d%a1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>设置 SSH 自动登陆（免密码，用户名）</title>
		<link>http://liluo.org/2011/05/%e8%ae%be%e7%bd%ae-ssh-%e8%87%aa%e5%8a%a8%e7%99%bb%e9%99%86%ef%bc%88%e5%85%8d%e5%af%86%e7%a0%81%ef%bc%8c%e7%94%a8%e6%88%b7%e5%90%8d%ef%bc%89/</link>
		<comments>http://liluo.org/2011/05/%e8%ae%be%e7%bd%ae-ssh-%e8%87%aa%e5%8a%a8%e7%99%bb%e9%99%86%ef%bc%88%e5%85%8d%e5%af%86%e7%a0%81%ef%bc%8c%e7%94%a8%e6%88%b7%e5%90%8d%ef%bc%89/#comments</comments>
		<pubDate>Mon, 09 May 2011 10:23:11 +0000</pubDate>
		<dc:creator>落</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[SSH]]></category>

		<guid isPermaLink="false">http://liluo.org/?p=667</guid>
		<description><![CDATA[其实我觉得每次使用SSH时输入用户名和密码也没什么不好，但是却被同事各种无情的鄙视。 T T
1、创建公钥、公钥

ssh-keygen -t rsa

无视它出来的任何提示，欢快的一路回车到底吧。
2、把公钥id_rsa.pub复制到远程机器的 /home/username/.ssh目录并命名为authorized_keys

方法1:
ssh-copy-id user@host
方法2:
cat ~/.ssh/id_rsa.pub &#124; ssh user@host “mkdir ~/.ssh; cat &#62;&#62; ~/.ssh/authorized_keys”

各种手段，随你开心，反正复制过去就成～多台远程主机就多次复制～ 如果你本机登陆用户和远程登陆用户一致的话，就可以直接 ssh hostname直接登陆，下面就不用看了。
3、解决本地登陆用户与远程登陆用户不一致
好吧，这事很纠结，虽然不用输入密码了，但是还得 ssh username@hostname 来登陆，很不爽，你懂的。 其实解决也很简单（but是同事告诉我的，老脸一红），修改本地登陆用户的 ~/.ssh/config 文件，如果木有的话就自个儿建一个吧，内容如下：

Host hostname
    user username
Host hostname2
    user username2

这样，本地和远程登陆用户名不一致也可以 ssh hostname 登陆了。
另外，第1、2步也可以使用：

ssh-keygen; ssh-copy-id user@host; ssh user@host


]]></description>
		<wfw:commentRss>http://liluo.org/2011/05/%e8%ae%be%e7%bd%ae-ssh-%e8%87%aa%e5%8a%a8%e7%99%bb%e9%99%86%ef%bc%88%e5%85%8d%e5%af%86%e7%a0%81%ef%bc%8c%e7%94%a8%e6%88%b7%e5%90%8d%ef%bc%89/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Linux中安装MongoDB及简单入门</title>
		<link>http://liluo.org/2011/03/linux%e4%b8%ad%e5%ae%89%e8%a3%85mongodb%e5%8f%8a%e7%ae%80%e5%8d%95%e5%85%a5%e9%97%a8/</link>
		<comments>http://liluo.org/2011/03/linux%e4%b8%ad%e5%ae%89%e8%a3%85mongodb%e5%8f%8a%e7%ae%80%e5%8d%95%e5%85%a5%e9%97%a8/#comments</comments>
		<pubDate>Tue, 29 Mar 2011 06:57:21 +0000</pubDate>
		<dc:creator>落</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MongoDB]]></category>

		<guid isPermaLink="false">http://liluo.org/?p=659</guid>
		<description><![CDATA[MongoDB是一个使用由C++编写的基于分布式文件存储的数据库开源项目，旨在为WEB应用提供可护展的高性能数据存储解决方案。下面说下安装方法以及简单入门知识。
1、下载
到官网 http://mongodb.org 去下载最新的稳定版本，目前是 mongodb-linux-i686-1.8.0.tgz
2、解压


mv mongodb-linux-i686-1.8.0.tgz /usr/local/
cd /usr/local
tar xvf mongodb-linux-i686-1.8.0.tgz
mv mongodb-linux-i686-1.8.0 mondodb
rm -y mongodb-linux-i686-1.8.0.tgz



3、运行
需要创建一个存放数据的目录(默认是/data/db/)，创建目录并启动：


mkdir -p /data/db/
/usr/local/mongodb/bin/mongod


如果想使用自己指定的目录来存储数据，加上--dbpath选项：

/usr/local/mongodb/bin/mongod --dbpath /path/to/data/dir

4、使用JavaScript Shell工具简单入门
默认链接的是test数据库

/usr/local/mongodb/bin/mongo
MongoDB shell version: 1.8.0
connecting to: test
&#62;

MongoDB简单入门
内容引用鱼哥博客



插入数据到集合


下面我们来建立一个test的集合并写入一些数据. 建立两个对象, j 和 t , 并保存到集合中去.
在例子里 ‘&#62;’ 来表示是 shell 输入提示符


&#62; j = { name : "mongo" };
{"name" : "mongo"}
&#62; t = { x : 3 };
{ "x" : 3  }
&#62; db.things.save(j);
&#62; db.things.save(t);
&#62; [...]]]></description>
		<wfw:commentRss>http://liluo.org/2011/03/linux%e4%b8%ad%e5%ae%89%e8%a3%85mongodb%e5%8f%8a%e7%ae%80%e5%8d%95%e5%85%a5%e9%97%a8/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Memcached 安装、使用（Python操作）以及常用方法</title>
		<link>http://liluo.org/2011/03/memcached-install-python-use/</link>
		<comments>http://liluo.org/2011/03/memcached-install-python-use/#comments</comments>
		<pubDate>Mon, 14 Mar 2011 11:03:12 +0000</pubDate>
		<dc:creator>落</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Memcached]]></category>

		<guid isPermaLink="false">http://liluo.org/?p=644</guid>
		<description><![CDATA[Memcached官网 memcached.org
简单介绍：memcached很强大，它可以支持分布式的共享内存缓存，大型站点都用它。对小站点来说，有足够内存的话，使用它也可以得到超赞的效果。
使用目的：由前面的介绍看到，大家使用它都是为了速度，不过我却是为了解决Session在不同浏览器中偶尔丢失的数据。其实也不能怪浏览器啦，主要是我需要一个dict类型的session，哈哈。
安装
Linux
安装包
对于大多数Linux发行版本来说，可以使用官方推荐的方法：
Debian/Ubuntu
apt-get install memcached
Redhat/Fedora/CentOS
yum install memcached
源码安装(CentOS 5.5)
1、下载libevent（依赖） 和memcached
分别到以下引用地址下载最新版本：
引用地址 http://www.monkey.org/~provos/libevent/ 
引用地址:http://code.google.com/p/memcached/downloads/list
2、安装ibevent（依赖） 和memcached
libevent(目前最新是libevent-2.0.10-stable.tar.gz，请注意版本号)
tar xvf libevent-2.0.10-stable.tar.gz
cd libevent-2.0.10-stable
./configure --prefix=/usr/local/libevent/
make
make install
接着，ls /usr/local/libevent/lib，将查看到的第一个类似libevent-X.X.so.X
ln -s /usr/local/libevent/lib/libevent-2.0.so.5  /lib/libevent-2.0.so.5
memcached (目前最新是1.4.5，请注意版本号)
tar zxvf  memcached-1.4.5.tar.gz
cd memcached-1.4.5
./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent/
make 
make install
3、启动memcached
启动参数说明(这是我是复制粘贴的，如有错误请指正)：
-d 选项是启动一个守护进程
-m 是分配给Memcache使用的内存数量，单位是MB，默认64MB
-M return error on memory exhausted (rather than removing items)
-u 是运行Memcache的用户，如果当前为root 的话，需要使用此参数指定用户
-l 是监听的服务器IP地址，默认为所有网卡
-p 是设置Memcache的TCP监听的端口，最好是1024以上的端口
-c 选项是最大运行的并发连接数，默认是1024
-P 是设置保存Memcache的pid文件
-f chunk size growth factor (default: 1.25)
-I Override the size of [...]]]></description>
		<wfw:commentRss>http://liluo.org/2011/03/memcached-install-python-use/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

