设置safari总是显示标签(tab)

在chrome和safari之间换来换去,最近又开始使用safari,但总是被他的跳跃感到恶心,只有一个标签的时候不显示标签栏,多个标签(2个以上)时候显示标签栏,这就造成内容在不断的跳跃。在偏好设置中找来找去,找不到这个的设置,郁闷,后来发现apple原来给了这个“总是显示标签”的设置的,只是没有给界面接口而已,要设置“总是显示标签”,在终端里面执行下面内容:

defaults write com.apple.Safari AlwaysShowTabBar -bool YES

如果你不知道什么是终端,请你点击右上角放大镜的图表,然后输入“终端”(不带引号),回车

Posted in Mac OS X | Tagged , | Leave a comment

yiiframework简单介绍

快速,安全和专业的PHP框架。

Yii是一个高性能的PHP框架,它是专为Web 2.0应用程序而设计的PHP框架。

Yii的自带丰富的功能的MVC,DAO/ActiveRecord,I18N/L10N,缓存,身份验证和基于角色的访问控制,scaffolding,测试等,它可以显着缩短开发时间。

快速

Yii框架只加载你所需要的功能。它具有强大的缓存支持。它的设计种融合了AJAX的功能。

安全

安全是Yii框架基本功能。它包括输入验证,输出过滤,SQL注入和跨站点脚本预防。

专业

Yii框架帮助您开发简单和可重用的代码。它遵循MVC模式,确保清晰的逻辑和页面分离。

Posted in PHP, yiiframework | Leave a comment

Mongo查询语言

Mongo使用JSON(BSON)表示一个查询,这相当于SQL语法的WHERE子句:

db.users.find( { x : 3, y : "abc" } ).sort({x:1});
#select * from users where x=3 and y='abc' order by x asc;

上面语法是被包装过的,实际上下面代码更底层一些(同上面代码执行结果一样),但是我们用上面代码即可:

db.users.find( { $query : { x : 3, y : "abc" }, $orderby : { x : 1 } } );

find参数:

  • $query – 等同于WHERE子句
  • $orderby – 排序结果集
  • $hint – 查询优化,强制使用索引
  • $explain – 如果是true,返回解析查询语句的内容,并非查询结果
  • $snapshot – 如果true,“快照模式”
Posted in Mongodb | Tagged , | Leave a comment

Mac OS X安装Mongodb

系统环境

Mac OS X 10.7.3

下载

直接官网下载Mongodb os x 64bit,目前最新的是2.0.4,官方文档给出的下载地址是:

http://downloads.mongodb.org/osx/mongodb-osx-x86_64-x.y.z.tgz

替换x.y.x为当前稳定版本号之后为:

http://downloads.mongodb.org/osx/mongodb-osx-x86_64-2.0.4.tgz

在Mac OS X中直接双击解压即可得到编译好的二进制文件

安装

既然是下载的二进制文件了,安装就很简单了,按照官方文档写的只需要创建/data/db目录即可,之后运行bin/mongod

为了使用方便,创建/usr/local/mongodb的软链接到你的mongodb目录,再增加/usr/local/mongodb/bin到环境变量

[shell]
# 创建/data/db目录
sudo mkdir -p /data/db
# 设置/data/db目录权限
sudo chown -R 你的系统登录用户名 /data
# 创建/usr/local/mongodb软链接
sudo ln -s ~/Downloads/mongodb-osx-x86_64-2.0.4 /usr/local/mongodb

增加环境变量,修改~/.bash_profile文件,增加下面代码

PATH="/usr/local/mongodb/bin:${PATH}"
export PATH
Posted in Mac OS X, Mongodb | Tagged | Leave a comment

使用gpart给freebsd分区

freebsd 9.0开始默认使用gpart进行磁盘分区,如果你还在使用fdisk,也是应该使用gpart的时候了。

创建磁盘分区

gpart create -s GPT da1

如果你的磁盘已经有分区文件系统,gpart会返回失败

gpart: geom 'da1': File exists

销毁磁盘分区

gpart destroy -F da1

添加一个新的分区

  • -s参数指定分区大小,为指定-s为全部磁盘空间
  • -t参数指定分区类型
  • -l参数指定分区标签
  • -b参数指定开始分区的逻辑卷地址

    gpart add -t freebsd-ufs -l data da1

查看分区方案

gpart show -lp da1
=>        34  1172123501  da1  GPT  (558G)
          34  1172123501    1  freebsd-ufs  (558G)

创建文件系统

newfs da1p1

挂载文件系统,要确保/data目录存在

mount /dev/da1p1 /data
Posted in FreeBSD | Tagged , | Leave a comment

web.py中获取当前url路径

web.ctx.homepath + web.ctx.fullpath

如果只使用web.ctx.fullpath的话,在有subapplications的应用中就不对了,在subapplications中web.ctx.fullpath是相对于当前的subapplications的,不是全部的路径

看看web.py的源代码就清楚了,下面是web.ctx的初始化代码:

ctx.homedomain = ctx.protocol + '://' + env.get('HTTP_HOST', '[unknown]')
ctx.homepath = os.environ.get('REAL_SCRIPT_NAME', env.get('SCRIPT_NAME', ''))
ctx.home = ctx.homedomain + ctx.homepath
ctx.realhome = ctx.home
ctx.ip = env.get('REMOTE_ADDR')
ctx.method = env.get('REQUEST_METHOD')
ctx.path = env.get('PATH_INFO')
# http://trac.lighttpd.net/trac/ticket/406 requires:
if env.get('SERVER_SOFTWARE', '').startswith('lighttpd/'):
    ctx.path = lstrips(env.get('REQUEST_URI').split('?')[0], ctx.homepath)
    # Apache and CherryPy webservers unquote the url but lighttpd doesn't. 
    # unquote explicitly for lighttpd to make ctx.path uniform across all servers.
    ctx.path = urllib.unquote(ctx.path)

if env.get('QUERY_STRING'):
    ctx.query = '?' + env.get('QUERY_STRING', '')
else:
    ctx.query = ''

ctx.fullpath = ctx.path + ctx.query

对于subapplications有下面的代码:

def _delegate_sub_application(self, dir, app):
    """Deletes request to sub application `app` rooted at the directory `dir`.
    The home, homepath, path and fullpath values in web.ctx are updated to mimic request
    to the subapp and are restored after it is handled. 

    Any issues with when used with yield?
    """
    web.ctx._oldctx = web.storage(web.ctx)
    web.ctx.home += dir
    web.ctx.homepath += dir
    web.ctx.path = web.ctx.path[len(dir):]
    web.ctx.fullpath = web.ctx.fullpath[len(dir):]
    return app.handle_with_processors()
Posted in Python | Tagged , | Leave a comment

python requests处理cookie中的一个bug

最近使用pyhton requests库,还不错,很好用,不过在处理cookie的时候有个问题,害我折腾半天

如果一个页面写了2个同名的cookie,但是path是不一样的,python requests只会保留最后一个cookie,也就是说requests不能处理这种同名cookie但path不一样的情况,这是由于requests在保存cookie的时候是使用dict,我想使用cookiejar的话就不会有这种问题了

Posted in Python | Tagged , | Leave a comment

昨天是正是失业的日子,从昨天起就不用上班了,3月21号,休息休息

Posted on by vvpick | 1 Comment

fast, tp-link, 水星, d-link, netgear, linksys, 我选择了netgear

一直用着fast fw54r路由,也挺好,没啥问题,但最近需要频繁的adsl断网再拨号,在这个过程中,这个路由经常宕机,害得我得一会看一下电脑,晚上更是别提了,一早上发现程序终止运行,网络不通,所以决定换一个路由

经过比较fast, tp-link, 水星这3个品牌还真是一家的,出了外观不一样外,其它多是一样一样的,web管理界面也只是换了个logo而已,不过他们的外观做工还是有区别的,fast最次

最后选择了netgear WGR614v10,又是经过比较,在amazon.cn下单,今天收到,做工比之前的fast强多了,换上之后摸索一会,发现软件方面比fast少了个功能,断开后自动连接,fast的软件设置一下,断开之后可以自动连接网络,这个就不行了,必须还的再点连接,这样,我的软件实现断开连接就多了一步,额,改改去

Posted in Internet | Tagged , , | Leave a comment

urllib2.urlopen处理gzip数据

某些网站不管的请求头部带不带

Accept-Encoding:gzip

他都返回gzip压缩过的内容,也就是返回的头部都带有

Content-Encoding:gzip

对于这种网站在使用urllib2.urlopen获取数据时候由于urlopen不会自动处理gzip,得到的都是乱码,让人难以看懂的内容

对付这种情况就需要我们单独处理

f = urllib2.urlopen(url)
headers = f.info()
rawdata = f.read()
if ('Content-Encoding' in headers and headers['Content-Encoding']) or \
    ('content-encoding' in headers and headers['content-encoding']):
    import gzip
    import StringIO
    data = StringIO.StringIO(rawdata)
    gz = gzip.GzipFile(fileobj=data)
    rawdata = gz.read()
    gz.close()
Posted in Python | Tagged | Leave a comment