suprsvn 2014-08-27T11:20:01+00:00 suprsvn@gmail.com Android SDK Manager速度太慢的解决办法 2014-06-09T00:00:00+00:00 suprsvn http://0nly.me/2014/06/09/android-sdk-manager 这两天在TC里面Google的各种服务是根本不能用。昨天又从Win直接转移到Ubuntu,需要重新下载SDK的各种文件,各种API,但是无论是挂着goagent还是VPN,Android SDK Manager就是无速度。突然想到,修改hosts文件这种简单有内涵的方法,没想到收获甚佳,不仅秒fetch,而且下载速度可以撑满带宽。


我是在Ubuntu下,修改hosts文件后直接生效,考虑到平时用Google来提高效率,于是我将下面链接的hosts内容全部append到/etc/hosts中了。

hosts文件的开源链接

若你平时不用Google,只是SDK下载,那就只需将以下两项加入/etc/hosts 中即可。

203.208.46.200  dl-ssl.google.com
203.208.46.200   www.google.com

这里还有我备份的hosts文件,如果上面链接打不开,可以下载这个。

备份hosts下载


OvEr … :-) …


]]>
vim中按tab跳出括号引号 2014-04-25T00:00:00+00:00 suprsvn http://0nly.me/2014/04/25/jump-out-the-brackets-by-tab

#suprsvn: 在vim中,当括号引号补全后,总是需要再次敲出后半部分,光标才能跳出,下面的方法可以在括号引号中直接按tab键,光标跳出括号引号,多层括号引号,可以多按几次,依次跳出。


将下面的配置信息加入到vim的配置文件中,linux下该文件在~/.vimrc

"" Out of the brackets 
func SkipPair()
    if getline('.')[col('.') - 1] == ')' || getline('.')[col('.') - 1] == ']' || getline('.')[col('.') - 1] == '"' || getline('.')[col('.') - 1] == "'" || getline('.')[col('.') - 1] == '}'
        return "\<ESC>la"
    else
        return "\t"
    endif
endfunc
inoremap <TAB> <c-r>=SkipPair()<CR>

看一下效果。

jump-out-the-brackets-by-tab


OvEr … :-) …


]]>
Python IDLE tab completion 2014-03-12T00:00:00+00:00 suprsvn http://0nly.me/2014/03/12/python-idle-tab-completion

#suprsvn: We can let the Python IDLE support 'tab completion'.


1. Put the codes into a file named '.pythonstartup'.

import pdb
# python startup file
import readline
import rlcompleter
import atexit
import os
# tab completion
readline.parse_and_bind('tab: complete')
# history file
histfile = os.path.join(os.environ['HOME'], '.pythonhistory')
try:
    readline.read_history_file(histfile)
except IOError:
    pass
atexit.register(readline.write_history_file, histfile)
del os, histfile, readline, rlcompleter

2. Put the file into your HOME directory.

Linux : ~/.pythonstartup
Windows : C:\Users\USERNAME\.pythonstartup

3. Set the Environment Variables.

In Windows : Just do it like this.

PYTHONSTARTUP

In Linux : Put the line into the file named '.profile'.

export PYTHONSTARTUP=~/.pythonstartup     

Previews:

python_idle_tab_completion.gif


OvEr … :-) …


]]>
vim快捷键壁纸 2014-03-07T00:00:00+00:00 suprsvn http://0nly.me/2014/03/07/vim-shortcuts-wallpaper

#suprsvn: vim绝对是提高编程效率的神器,但快捷键很多很杂,要记住还是多使用它。奉上vim快捷键壁纸一张,设置为壁纸,可以在忘记快捷键的情况下直接查询,避免了打开浏览器“Google一下”的麻烦,让新手也可以体验到vim编程的乐趣。


预览图:

vim-shortcut-wallpaper

可右键在新的选项卡中打开图片浏览大图并保存。


OvEr … :-) …


]]>
windows下gVim配置文件_vimrc 2014-03-06T00:00:00+00:00 suprsvn http://0nly.me/2014/03/06/gvim-vimrc

#suprsvn: 一直在Linux下使用Vim进行python开发,最近换了新电脑,上了windows OS,然后试一下在win下配置gVim。鉴于网上关于gVim for windows的完全配置资料较少,于是分享一下我配置好的gVim的配置文件_vimrc。


预览图:

MyVim1.png
MyVim2.png


使用说明:

1.安装最新版gVim,x86或x64均适用。下载本_vimrc覆盖原文件,并安装下载到的UbuntuMono字体。
2.安装Vundle,windows版本的安装说明请参见:Vundle for Windows
3.打开gVim,COMMAND MODE下输入:BundleInstall并回车即可安装全部插件,请耐心等待安装完毕。
4.开始使用。


另外我把这个配置文件也PUSH到了Github上,可以fork一下。

suprsvn/_vimrc


OvEr … :-) …


]]>
n!末尾有多少个零 2014-03-03T00:00:00+00:00 suprsvn http://0nly.me/2014/03/03/n-factorial

#suprsvn: 今天看到一个经典的算法问题:n的阶乘n!末尾有多少个零?


算法一:

各位用此算法计算一下`987654321!`末尾有多少个零~~  `:-)`
def func1(n):
    ret = 0
    for i in range(1, n + 1):
        j = i
        while(j % 5 == 0):
            ret = ret + 1
            j /= 5
        i = i + 1
    return ret

print func1(987654321)

莫怪,不出意外的话,你的PC死机了。。。

开个玩笑而已,谁让你不分析一下算法就直接复制粘贴呢?

这个算法不能用,效率低到让PC死机。


算法二:

def func2(n):
    count = 0
    while n / 5 > 0:
        count += n / 5
        n = n / 5
    return count

print func2(987654321)

这个算法才是最优的,仔细分析一下吧。


OvEr … :-) …


]]>
深入了解git 2014-02-25T00:00:00+00:00 suprsvn http://0nly.me/2014/02/25/git-manual

#suprsvn:好久没有用markdown写文章了,语法都生疏了。这是2014年博客在换了主题之后的第一篇日志,正好在深入学习git,也有朋友一起在讨论git,于是决定推荐一下git的相关资料,来自Scott Chacon的《Pro Git》,中文的pdf,有关git的方方面面介绍的详细深入。有兴趣的同学可以留言交流。


《Pro Git》中文pdf下载地址:我的云诺网盘

《Pro Git》中文pdf在线阅读:我的云诺网盘


OvEr … :-) …


]]>
HiWifi刷openwrt加入goagent 2013-12-16T00:00:00+00:00 suprsvn http://0nly.me/2013/12/16/hiwifi-openwrt-goagent

#suprsvn: 在入手极路由HiWifi之前的很长一段时间都在了解openwrt配置openvpn来翻蔷,正好遇到HiWifi大酬宾99元“大甩卖”,就入了。关键是看中它可以刷openwrt。昨天试了一下配置openv,结果没有成功,然后想到既然openwrt是linux,肯定能用python吧,那很简单就可以直接将Goagent给加进去,然后设置路由器开机启动项,不就ok了。思路来了,就行动。看步骤


一、首先去openwrt确认路由器能刷openwrt,这是一切的前提。刷机的方法大同小异,HiWifi的是这样:(不同的路由器刷机方法自行Google啊)

1、PC的地址设置为: ip地址:192.168.1.88 子网掩码:255.255.255.0

2、确保openwrt固件已重命名为recovery.bin,并放于tftp32.exe根目录;打开tftp32.exe工具,

3、断开路由器电源,网线链接PC与路由器Lan口,尖锐物顶住路由器RST键不放,给路由加电。

4、这时tftp32开始上传固件到路由器,出现进度条,待进度条完成并自动消失后,松开RST键。

5、路由器进入跑马灯状态,大约需3~5分钟会重启,重启后已刷好;可以ping 192.168.1.1,通了说明路由器启动成功。

6、浏览器进入路由器后台192.168.1.1,首次进入请先设置密码。

7、准备工作就是设置好PPPoE拨号,设置wifi热点,设置语言为简体中文等等,自己摸索吧,毕竟以后都要跟openwrt打交道。


二、开始在路由器中布置goagent。

1、获取最新版的Goagent(3.1.0),需要上传的文件为:

certs文件夹、CA.crt、cacert.pem、proxy.ini、proxy.py、proxy.pac

2、修改proxy.ini,只修改两行行,[listen]中的ip改为ip = 0.0.0.0,[gae]中的appid改为你自己的。

3、修改proxy.pac,批量替换127.0.0.1192.168.1.1

4、将certs文件夹、CA.crt、cacert.pem、proxy.ini、proxy.py(1中的前5个)文件放到一个文件夹中,例如goagent/。

5、下载putty,放入WinSCP根目录,用WinSCP链接路由器,地址为192.168.1.1,用户名为root,密码为设置的后台密码。 按图示打开putty,输入路由器后台密码。

WinScp_Putty

6、已进入openwrt终端了,安装一些依赖。

opkg update
opkg install openssl
opkg install python
opkg install pyopenssl python-openssl
opkg install python-greenlet
opkg install gevent

7、安装完成后,退出Putty,用WinSCP将准备好的goagent目录放入路由器根目录下,将proxy.pac放入www、目录下。如图:

Goagent_Dir Goagent_Wwww

8、将Goagent加入路由器openwrt的启动项中,添加完毕后,记得提交。如图:

openwrt_menu openwrt_goagent

9、重启路由器,由于加入了python,还运行了goagent,启动会稍微慢一点。

10、将IE的代理设置为http://192.168.1.1/proxy.pac。现在明白为什么把proxy.pac放入www目录了吧。

11、也可使用其它浏览器啊,Chrome+switchysharp,firefox+autoproxy,这些是黄金组合。

12、家里其他各终端再也不用个个都安装插件/app了,链接wifi的时候直接填写代理,并导入goagent的CA.crt即可,如图:

android_proxy


OvEr … :-) …


]]>
Sublime Text 3 Licenses 2013-12-14T00:00:00+00:00 suprsvn http://0nly.me/2013/12/14/sublime-text-licenses

#suprsvn: 我一直是一个VIM er,现在也一直是VIM ing,不过要说起码码神器,那最近最火的肯定是Sublime了。有朋友找我要过Licenses,这里就分享几个。


前提是sublime已经被破解了,这些Licenses才能用。

破解很简单,复制一份sublime主程序,再用未破解的sublime打开,搜索3342这串数字,改为3242保存即可,再覆盖原主程序即可。


-----BEGIN LICENSE-----
suprsvn
Unlimited User License
EA7E-22718
CB79F5A637B63D85ACCF8E67B2A0A099
7D7BFC647C99C15E03E4E9F9766B4D36
35A9DA58F07F6F6EABE38A9C3E088D3D
0EDA6AC2878023D7BCBC184286F465F8
8B9C550494BD7EB38CADD9158D633B74
4BBFADA75492812B80A9222E6E165E51
F0E3650ED5D9C3EF5758ADB9D641E2FF
E5FD59EF0860ABA20412463F79236AA2
-----END LICENSE-----


-----BEGIN LICENSE-----
suprsvn
Unlimited User License
EA7E-28099
70A0A17F51E48EEA6B6607A90FF6651C
93D487B076A63484944A95CBB87FDC6F
34C73F6DF89E167D83F8E18A1123D5ED
715CB6E7433127D375F015E2DD136420
8A6F9D56064D375D992DA626EAE44518
7AA5BB87108F660F24FD85B6979B6D61
88F1B12D6C7CAB4BD1D8151951CDBB4B
6F24B4A448EA46BB76597501FC33B51A
-----END LICENSE-----


-----BEGIN LICENSE-----
suprsvn
Unlimited User License
EA7E-1093
5C2F008D05242FF3793261860D577FF0
5814F4E0DC826F4952EBF33C245F28FB
ED915818BFE3B730CCD75A45A444FABB
943BBB4793A91B9C3B315F0A28727C9C
863D38FCAE91FAF8495506CE718427F2
41194422370A1FE10C3D9B6ECB46B9C2
EF3A66D6FCA752B8729BB215B1D71A66
73EEB3E7BBEC753F729F6845CEAA07F3
-----END LICENSE-----


-----BEGIN LICENSE-----
suprsvn
Unlimited User License
EA7E-2607
A2A71948FE21B4BCC25AAFF5CB2B0457
2084D8D406DC1E3AA0743E2CEDFDB37A
05F293E25503A80E8832746147E36BBF
BF6ECF353C49460DEA04146B8999C823
87533834540210D9B7126FFFCA49E876
B760613164A77B706B1845A5D5F09FBC
E0F619E3268F5148201DBB8EBE977D9B
8EAD8DEB8355E337CDB832269FC40F2E
-----END LICENSE-----

OvEr … :-) …


]]>
virtualenv环境下安装MySQL-python报错 2013-12-13T00:00:00+00:00 suprsvn http://0nly.me/2013/12/13/virtualenv-mysql-python-error

#suprsvn: 今天在windows重新配置了django开发环境后,需要链接MySQL数据库,这就需要安装MySQL-python这个组件。


错误原因(有图):

如果是在python的虚拟环境virtualenv下安装的话,直接pip install MySQL-python会出现以下error:

error: Unable to find vcvarsall.bat

分析一下原因,是由于没有安装visual studio 2010 的原因,也就是没有C语言的编译环境。

错误图

解决办法:

1、先将virtualenv添加进环境变量;

2、命令行输入activate进入python的虚拟环境;

3、然后直接easy_install下载好的适用于windows的MySQL-python,即可安装成功。

easy_install MySQL-python-1.2.4.win32-py2.7.exe

4、适用于windows的MySQL-python的下载地址:MySQL-python(win32)


OvEr … :-) …


]]>