mac下实现tree打印出树形目录的命令

0 条评论

在mac中,默认不带tree这个小工具。当然您可以从网上下载一个或者自己编译一个。

而下面这个命令可以直接达到效果,然后只用到了ls, grep, sed,这个命令来自google。

命令如下:ls -R | grep ":" | sed -e 's/://' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'

效果如下:

|-Cellar

|---autoconf

|-----2.69

|-------bin

|-------share

|---------autoconf

|-----------Autom4te

|-----------autoconf

|-----------autoscan

|-----------autotest

|-----------m4sugar

|---------emacs

|-----------site-lisp

|---------man

|-----------man1

2013年07月20日阅读全文

git push警告:warning: push.de...

0 条评论

升级了git的版本之后,执行git push突然出现了一条警告,内容如下:

warning: push.default is unset; its implicit value is changing in Git 2.0 from 'matching' to 'simple'. To squelch this messageand maintain the current behavior after the default changes, use:

git config --global push.default matching

To squelch this message and adopt the new behavior now, use:

git config --global push.default simple

See 'git help config' and search for 'push.default' for further information.(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode 'current' instead of 'simple' if you sometimes use older versions of Git)

警告的内容是push.default没有设置。

看了一下push.default,可以设置为:nothing, matching, upstream, simple, current这些值。

nothing:不推任何东西(要来做什么用?)。

matching:将两边名字能匹配的分支推上去。

upstream:将当前分支推到它的upstream分支。

simple:将当前分支推到它的upstream分支,但名字不匹配时拒绝。这是最安全的选项并且git 2.0之后会默认为这个。

current:将当前分支推到与它同名的分支上。

折腾啊(zhetenga.com)建议您进行如下设置:git config --global push.default simple。

2013年06月06日阅读全文

用openssl生成自签名网站ssl(https)证书

0 条评论

其实生成一个自签名的ssl证书十分简单,只需要执行:

openssl req -x509 -newkey rsa:1024 -nodes -days 365 -out zhetenga.com.pem -keyout zhetenga.com.key

网上很多教程都是带ca证书一起生成的,其实自用的吧很多时候没必要弄ca,反正都是用得很少并且不受信任的。

2013年05月31日阅读全文

backbone中获取单条model记录

0 条评论

例如有一个user的model,现在需要获取单条model记录,例如获取user.id=1。

var user = Backbone.Model.extend({});

u = new user({id: 1});

u.fetch();

这样做看起来是可行的,但实际上会报错,错误:Error: A 'url' property or function must be specified。

解决办法是定义model的时候加上urlRoot属性。

var user = Backbone.Model.extend({urlRoot: '/user'});

这样再调用上面的代码就不会报错了。

2013年05月14日阅读全文

用DNSPod的D令牌给您的Linode账号加把锁(开...

0 条评论

前段时间,著名的VPS提供商linode被爆出数据库被脱了,网上到处都传linode的用户信息泄漏了。

账号安全的重要性这个问题根本就不用多说了,一旦linode账号被黑客拿下,被拿下的就不仅仅是VPS了。

那么有没有办法就算黑客知道了您的账号和密码也进不了您的账号呢?答案是肯定的,两步验证帮您忙。

linode最近已经支持google的两步验证了,只需要手机上安装支持google两步验证算法的程序就能启用。

您可以登录google play,搜索Google Authenticator然后下载,不过很明显,太麻烦了,还有可能因为墙的问题无法下载。

其实您完全可以用另一个神器:D令牌!

登录linode,点击右上角的"my profile",输入您的密码,把页面往下拉找到Two-Factor Authentication,点击 Enable Two-Factor Authentication。

用DNSPod的D令牌给您的Linode账号加把锁(开通两步验证) 图1

用DNSPod的D令牌给您的Linode账号加把锁(开通两步验证) 图2

然后拿出您的手机,打开D令牌,点击右键找到“扫描二维码”,点击,然后扫描页面上的二维码。扫描成功之后输入D令牌上显示的6位验证,提交,完事。

用DNSPod的D令牌给您的Linode账号加把锁(开通两步验证) 图3

用DNSPod的D令牌给您的Linode账号加把锁(开通两步验证) 图4

然后您再登录的话就要输入验证码了,这时再拿出手机,打开D令牌,输入显示的6位验证码即可。

用DNSPod的D令牌给您的Linode账号加把锁(开通两步验证) 图5

这样一来,您就完全可以将您的linode账号和密码写在您的网站首页,写在QQ个性签名里了。给了别人密码他一样进不去,安全放心您作主!

最后:D令牌是DNSPod推出的保护您DNSPod账号安全的神器,同时他适用于任何使用google两步验证算法的网站,例如您可以拿D令牌去开通gmail账号的两步验证。

这样做的最大好处就是:您只需要一个D令牌就可以秒杀所有的两步验证,完全没有必要这个网站装一个应用,那个装一个。我青春,我折腾,但绝不蛋痛!

2013年05月09日阅读全文

nginx proxy pass到https(ssl)...

0 条评论

使用nginx反向代理https(ssl)的后端,结果出现了错误。

在日志中有类似的内容: [error] 15161#0: *536528230 SSL_do_handshake() failed (SSL: error:1408E0F4:SSL routines:SSL3_GET_MESSAGE:unexpected message) while SSL handshaking to upstream。

从日志上看是说与后端握手失败,至于为什么失败,怎么失败就不得而知了。

解决办法就是加上一条配置:proxy_ssl_session_reuse off;。

这条配置是指将与后端的会话不重用,也就是每次都重新建立会话,这样就不再出现握手失败的问题了。

2013年04月19日阅读全文

python中向名参数**kwargs传入一个字典作为参数

0 条评论

在python中有一个位置参数*args,还有一个命名参数**kwargs,可以很灵活地定义函数的参数。

例如:

def test(*args, **kwargs):

print args

print kwargs

现在有一个需求是,要向这个函数中的命名参数直接传入一个字典,例如:data = {'test': 'me'}

如果简单地使用 test(data) 是不行的,因为对 test 函数的调用使用使用 test(k=v) 形式。

而上面需求的解决办法也很简单,只需要使用 test(**kwargs) 即可。

2013年04月01日阅读全文

windows如何重装TCP/IP协议

0 条评论

一不小心windows xp的tcp/ip协议就让弄坏了,表示为做什么都提示socket error。

在windows中tcp/ip是默认安装的,并且是系统的核心组件,不让删除。

要想删除和重装也是可能的,只不过操作复杂点。

首先,删除注册表中以下两个字段:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock2

接着用记事本打开%winroot%\inf\nettcpip.inf,找到[MS_TCPIP.PrimaryInstall],把下面的 Characteristics = 0xa0 修改为 Characteristics = 0x80,这样再回到 本地连接的TCP/IP属性,点击添加协议,从硬盘安装,再选择刚才修改的文件,然后选择“TCP/IP协议”,安装。

经过这一步之后,返回网络连接的窗口,那个“卸载”按钮已经是可用的了。点这个“卸载”按钮来把TCP/IP协议删除,接着再重装装回去,重启,一切正常。

windows如何重装TCP/IP协议 图1

2013年03月21日阅读全文

backbone中从model get一个object...

0 条评论

假设有backbone model m,m = {'people': {'name': 'xxx', 'age': 18}}。

然后 p = m.get('people'); p['age'] = 19; m.set('people', p);

在上面,people的age肯定得到了改变,model也调用了set,但却不会触发model的change事件。

原因是在m.get的时候得到的p是引用到m的people的,当改变p的时候,其实也同时改了m,这样再set其实是不会再次改变的。

而同时没有调用m.set也不会触发change,所以上面整个修改中值已改,但没有触发change。

解决办法是克隆一份p再修改,再set回去,或者人工trigger change。

2013年03月15日阅读全文

git在合并代码时自动弹出commit信息编辑器

0 条评论

从Git v1.7.10版本起,每次合并代码都会自动产生一个合并commit并弹出编辑器让您编辑提交信息。

这样显得比较麻烦,并且可能并不是必要的,这个特性是新添加的,并且是可以关闭的。

关闭方法:

GIT_MERGE_AUTOEDIT=no

export GIT_MERGE_AUTOEDIT

将以上两行写到shell环境变量中即可,例如写入~/.bashrc。

2013年03月07日阅读全文
  1. «
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7. 6
  8. 7
  9. 8
  10. 9
  11. 10
  12. 11
  13. 12
  14. 13
  15. 14
  16. 15
  17. ...
  18. 17
  19. »