博文

目前显示的是 2013的博文

在华硕RT-N16上安装OpenWRT

图片
这货其实无比好装,虽然之前被绕了很多弯子 简单的说,它有个特性,就是自带了刷不死,无论你怎么刷系统,变砖了也好,只要你拔掉电源,然后按住RESET按钮,再插上电源,它就会自动进入TFTP模式,所以你只管刷,除非它硬件损坏,否则是不会挂的 之前被误导一直是因为官方的OpenWRT的 WIKI 上说它只是被第三方所支持,所以我一直跑去刷哪个 第三方的固件 ,但是经测试,这个第三方固件的r36828版才是可以刷的 也就是 http://openwrt.razvi.ro/barrier_braker_asus_rt-n16_svn_r36828/openwrt-brcm47xx-squashfs.trx 这个固件是可以刷的版本,但是它也有很多问题,比如它的系统版本过低导致无法使用Trunk的仓库,有很多软件会有异常——比如iptables geoip 最后搞得我不得不拆机解决问题 这货拆机非常简单,把四个踮脚卸下来,然后前盖就可以直接取下来了 TTL线的旁边还有标注接口的名称,链接也是毫无问题,只需要注意不要接VCC就可以了 但是倒腾了半天之后我才发现这货在最新版trunk中已经被支持了—— 直接用 这个 固件就好了 刷机的方式也很多样化,你可以曲线救国的方式,先刷DD然后升到OpenWRT 也可以直接TFTP刷机,用第三方的工具,或者华硕自己带的FW修复工具都可以,只需要把自己的IP指定为192.168.1.2,然后向192.168.1.1中灌入固件就可以了 但是现在的固件可以看到的问题有—— WIFI灯不亮,这个据说是无解 不支持802.11n,这个暂时对我来说不妨碍使用

用OpenWRT打造自动翻墙路由器(详解篇)

最初先调整一下bash ,让它符合自己的工作习惯: 到vim /etc/profile,可以在里面设置自己想要的alias 比如我加了一行: alias ll='ls -al' 然后就装图形显示界面再说 首先update一下 opkg update 安装luci opkg install luci 设置luci自动启动 /etc/init.d/uhttpd enable 结果告诉我 /etc/rc.common: line 1: procd_add_reload_trigger: not found 坑爹,搜索了一下发现是因为我的固件版本与软件仓库的版本不符,导致软件与系统组件不搭配所致,后来发现是 新版的OpenWrt更新了而已,于是我升级了一下系统就好了 ,如果你无法升级系统,那么可以按照下述方式解决: 先把安装的那些个用不了的一个个卸载掉 opkg remove luci opkg remove uhttpd-mod-ubus opkg remove uhttpd 修改opkg的配置,修改到以前的仓库 vim /etc/opkg.conf 注释掉原有的仓库地址,改用旧的 #src/gz barrier_breaker http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages src/gz barrier_breaker http://downloads.openwrt.org/attitude_adjustment/12.09/ar71xx/generic/packages 然后在opkg update一下,继续 opkg install luci opkg install luci-i18n-chinese 这次在/etc/init.d/uhttpd start 的时候就不会报错了 然后稳妥的进入luci的Web界面,修改一下时区、界面语言之类的 接下来的工作是 修改防火墙的设置,让远端的HTTP和SSH能够通过 vim /etc/config/firewall config rule                                         optio

解决f.lux在有独立显卡的Windows下无法正常让鼠标指针颜色改变的问题

f.lux是一款保护视力的软件,原理是通过改变色温来减少可见光中对人眼刺激蓝光,反正我用了几天感觉是很明显的 这款软件在没有安装显卡(内置显卡)的Windows下工作一点问题也没有,但是前两天把电脑上安装了Nvidia的显卡之后问题就出现了——鼠标指针的颜色无法被改变,在灰黄的屏幕中就显得格外的显眼 后来翻到这个 网页 ,它提示说打开指针轨迹就可以了,试了一下果然有效,为了不妨碍视线,把轨迹打开到最小就可以了,而且这个Bug还是去年反馈的,估计是不会得到解决了,所以还是就这么凑合着用吧 2014.3.4添加 找到一个更加好的方案,原理同上,但是使用了Windows内部的一个Debug方案 开始-运行-regedit 然后找到 HKEY_CURRENT_USER\Control Panel\Mouse 下面MouseTrails项改为-1 这个的意思是,使用鼠标拖影,但是拖影为0,是Windows的一个Debug选项,这样就没有比较闹心的拖影烦扰了 改变设置后注销当前用户即可生效

给HG255D刷OpenWRT

图片
可能是给自己的AG300H刷OpenWRT宣传得太多了,于是同事也让我刷,东西是很便宜的HG255D,这东西可以说满大街的都是文章介绍怎么给他刷的,也被很多人认为是神器一般的存在,网上也有一大堆的改造版、升级内存了的HG255D,所以导致这个东西反倒有点众说纷纭,虽然都说简单,但是我还是花了接近一晚上的时间才搞定。 以下记录一下怎么给它刷ralink版的u-boot和最新的pandorabox改版的OpenWRT 首先我手头的这台的HG255d是32M内存的版本,我也搞不清楚这个路由器到底原生是多少M内存了,网上满天飞的都是64M的版本,也有地方介绍u-boot是支持16M的,于是这台到底该没改过,我也不知道。 然后参考的网页是这里: http://downloads.openwrt.org.cn/OpenWrt-DreamBox/HG255D/ (主要提供资料和文件下载) http://site.douban.com/148965/widget/notes/7526769/note/228371035/ (也有人说简单一点可以走这个方式,但是我没有成功,到升级的那一步卡住了) http://www.anywlan.com/forum.php?mod=viewthread&tid=182901 (我的最终流程类似这个,但是所用的u-boot和最终OpenWRT版本变化了) http://pan.baidu.com/s/15TFZY (我自己用到的全部工具,包括了一个USB-TTL的转接器在Win8下的驱动) 以下为详细步骤: 要刷u-boot,TTL是少不了的,首先准备好TTL,接线方式如下图 图中从左至右依次RX、VCC、GND、TX 连接TTL的时候注意, 不要接VCC线,否则无法正常工作 ,原理暂不明,我本职工作也不是硬件工程师,也不追究了,具体连接电脑的方式参看我之前的 帖子 拔掉路由器的网线,保证TTL连接好了之后开机,然后不停的按键盘的“4”进入console  去下载一个TFTP32,保证它和你的u-boot在同一个文件夹下,我用的u-boot是u-boot-rom-hg255d_hg256.bin,(其实上面那个链接里也有提供更新的版本,但是可惜的是,我刷上去不能用)  把本地电脑的IP设置

在CentOS上配置Solr全文检索引擎

好记性不如烂Blog……为了以防万一我还是记下来 Solr是一个基于Java、lucene的全文检索引擎,很多大的互联网站点都在使用它,本文主要介绍如何在CentOS6上安装Solr 4.5、配置中文分词引擎mmseg4j以及从MySQL数据库中导入数据。 一、安装Java环境 首先需要卸载系统原本的Java环境 yum list installed | grep jdk 我的结果: java-1.6.0-openjdk.x86_64            1:1.6.0.0-1.62.1.11.11.90.el6_4    @updates java-1.6.0-openjdk-devel.x86_64      1:1.6.0.0-1.62.1.11.11.90.el6_4    @updates jdk.x86_64                           2000:1.7.0_09-fcs                  installed 卸载它们 yum -y remove jdk.x86_64 yum -y remove java-1.6.0-openjdk.x86_64 去Oracle的官网下载最新的JDK http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 解压 tar xvzf jdk-7u40-linux-x64.tar.gz 移动下载的文件到/usr/local/ mv xvzf jdk-7u40-linux-x64 /usr/local/jdk1.7.0_40/ 修改系统的环境变量 vim ~/.bash_profile 在末尾加上 export JAVA_HOME=/usr/local/jdk1.7.0_40 export CLASSPATH=. export PATH=$JAVA_HOME/bin:$PATH 登出、然后再次登入 测试安装结果 java -version 二、安装Tomcat 去网站上下载最新的Tomcat,我选择的是Tomcat8.0rc3,下载地址是 http://tomcat.apache.org/downloa

WZR-HP-AG300H安装OpenWRT和自动翻墙代理

图片
前两天在淘宝入手了一个2手的AG300H,是日产的中古货,比行货便宜了接近一半,比较超值,加上那惊人的128M内存,由衷的打动了我,于是入了一个开始准备折腾OpenWRT 寄过来的时候就刷好了DD-WRT,理论上这个时候去下载一个Factory升级包直接升级就能到OpenWRT了,但是我脑一抽,给升级到 官方的1.78版 了,这下无论选择退回到官方的1.77,还是选择升级到其他的版本的DDWRT,它统统报告说是不合法的Rom了 不得已,我选择使用TFTP来进行升级,这个方法 网上也都有 ,大致的操作流程如下: 修改本地IP到192.168.11.2(必须是这个IP,可以同时添加多个IP地址,Windows、Linux下都可以,不妨碍操作) 添加固定路由,arp -s 192.168.11.1  02:AA:BB:CC:DD:20 (必须是这个硬件地址,后面连接TTL的时候看路由器启动的命令行就明白为什么了,如果是Windows 7或7以上的话,命令有所不同,参看 这里  ——反正就是它禁用了arp命令,必须要改用netsh命令来完成) 下载你要升级的Rom的TFTP版本,DD-WRT的话,下载地址在 这里 ,如果是OpenWRT的话,下载地址在 这里 ,选择带tftp字样的下载链接。 如果是Linux下,首先安装tftp,yum install tftp、apt get install tftp……,然后拔掉路由器的电源,输入 tftp 192.168.11.1 verbose bin put xxxx(这是你下载的rom的名字) 然后你不要回车,开始接通你的路由器电源,盯着它开机,你会看到依次是红灯点亮、然后红灯灭一下然后所有的灯都亮了……这时候立刻回车,等着它提示完成 如果是在Windows下,如果是Win7,首先到控制面板、系统组件中安装TFTP组件,然后到命令行输入tftp -i 192.168.11.1 put xxxx(这是你下载的rom的名字) 然后也是一样的,不要回车,接通你的路由器电源,盯着它开机,你会看到依次是红灯点亮、然后红灯灭一下然后所有的灯都亮了……这时候立刻回车,等着它提示完成 提示上传完毕之后,等待10分钟左右(一定有这么长的时间,文件上传之后,系统会先解包,然后格式化所有扇区、写入操作系统,然后再重启)

为Pycharm安装SCSS、SASS的文件解析插件

呃……其实最新的Pycharm已经自带了有这么一个插件,唯一需要做的就是安装官方的解析器以及弃用这个插件。下面是具体步骤: 下载RubyInstaller  http://rubyinstaller.org/downloads/  ,选择下载2.0版本,我下载的是X64版。 安装它。 打开CMD,运行gem install sass。或者按照此页面提示进行安装  http://sass-lang.com/download.html  ,如果你运行gem install半天没反应,可以考虑按照这个页面的方法重新设置一下: http://ruby.taobao.org/ 打开Pycharm,FIle - Settings - File Watchers 点击旁边的绿色+号,选择类型为SASS或者SCSS 其他均保持不变,只是在Program中选择Ruby安装目录下的对应的scss.bat或者sass.bat即可,(如果你写的Css里面有UTF-8的内容,你可能需要把运行的命令行参数改为以下内容:--no-cache --update  -E utf-8  $FileName$:$FileNameWithoutExtension$.css) 点击OK,保存

在CentOS 6下安装M2Crypto

为了让shadowsocks能够支持更多的加密方式,必须要安装M2Crypto,不得不说,这个东西很麻烦 首先,需要安装依赖包 yum install gcc libgcc swig openssl openssl-devel python-devel 然后开始安装M2Crypto,这个东西也绝对不可以用pip装,基本上都是被坑的节奏 wget https://pypi.python.org/packages/source/M/M2Crypto/M2Crypto-0.21.1.tar.gz --no-check-certificate tar zxvf M2Crypto-0.21.1.tar.gz cd M2Crypto-0.21.1 如果这个时候直接安装 python setup.py build 基本上就会报告那个”This openssl-devel package does not work your architecture?“了 其实它有提供fedora系统的专用安装包的,运行一下 ./fedora_setup.sh build ./fedora_setup.sh install 就可以了

好久没有看过blogger的后台了,今天看到了几个看似很碉堡的模板

于是就套用上了…… 这种满满的G+的既视感啊!! 不过点击的效果感觉很华丽……而且整体上也显得更加极简主义了——连作者介绍神马的都去掉了实在是碉堡了……2333 不过友情链接神马的都去掉了这个倒是有点让我感觉不解……_ (:3 」∠) _ 无论如何,先用用再说吧,我早就已经对blog上面那个诡异的显示不出来的框架非常不满了

通过Proxy连接Github

最近连接Github一直处于半死不活的诡异状态,速度是不快不慢的 于是今天这次要把整个项目都clone下来的时候就是真的卡到半残了…… 平均的下载速度降低到了20K作于的诡异速度……剩余时间成为了不可计算 于是没办法只能想办法走代理服务器 但是我手头只有erlang的一个socket代理,而很明显这个是无法让git支持的,于是先下载一个CCProxy做一个二级代理转发,把本地的Socket代理转换为HTTP代理,注意一下 我的git本身配置过了用ssh登陆,那么我必须要走ssh通道,也就必须要修改ssh通道的代理服务器设置 于是,打开git的Bash,运行 vim ~/.ssh/config 建立一个ssh的config文件,内容为: Host github.com ProxyCommand ~/.ssh/ssh-https-tunnel %h %p Port 443 Hostname ssh.github.com 然后下载:http://zwitterion.org/software/ssh-https-tunnel/ssh-https-tunnel 这个文件保存到 C:\Users\【你的用户名】\.ssh 然后 vim ~/.ssh/ssh-https-tunnel 修改: my $host = "127.0.0.1"; my $port = 【你的HTTP代理端口】; 然后就可以顺利的进行git clone了,通过ccproxy的监视器可以看到 CONNECT github.com:443 HTTP/1.1 HTTPS 就说明已经正确的通过代理了…… 我这边的表现是速度一下子从20K飙升到了250K+

ejabberd安装及与Flash客户端的通讯

首先去Github上把Ejabberd的代码clone下来: git clone git://github.com/processone/ejabberd.git 然后进入src文件夹 cd src 下载与flash通讯的补丁文件 https://support.process-one.net/browse/EJAB-960 下载对应的Diff文件并修改ejabberd_c2s.erl文件,然后编译安装即可 需要修改对应的Crossdomain.xml的内容可以自行修改这个diff文件

Linux下添加Service并自动启动设置

添加服务的主要命令是chkconfig 可以先在系统中庸chkconfig命令列出所有的当前自动启动的项目 添加的方法为(以redis为例): vim /etc/init.d/redis 内容为: #!/bin/sh # # redis        Startup script for redis # # chkconfig: - 85 15 # processname: redis cd "/home/worker/redis-db/" case "$1" in     start)         /usr/local/bin/redis-server redis.conf         ;;     stop)         /usr/local/bin/redis-cli -p 1500 shutdown         ;;     *)         /usr/local/bin/redis-server redis.conf         ;; esac 几个注意的地方: chkconfig: - 85 15 这句 后面的85是启动优先级,15是关闭优先级,我没有在这里设置启动级别,所以打了- 后面的命令是解析参数值,我只增加了对start和stop命令的解析,如果没有参数,那么默认是start,这个其实是没有仔细的去写的,理论上还可以添加restart命令之类的,可以按照格式随意添加。 然后保存此命令文本,设置它为可运行: chmod +x redis 然后设置它为自动启动 chkconfig --level 3 redis on chkconfig --level 4 redis on chkconfig --level 5 redis on 启动等级的解释如下: 0 为停机,机器关闭。 1 为单用户模式,就像Win9x下的安全模式类似。 2 为多用户模式,但是没有NFS支持。 3 为完整的多用户模式,是标准的运行级。 4 一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置。 5 就是X11,进到X Window系统了。 6

Windows上的Erlang命令行快速启动

Erlang程序设计中文版中提到过,如果你把erlang的代码放在一个别的地方,那么你每次启动可能都需要运行 cd("c:/your_code_path")。 每次都需要运行一次,这无疑是很麻烦的一个事情。 于是作者也提出一个好办法,那就是在建立一个名为.erlang文件放在erlang的安装目录: 文件内容如下: io:format("consulting .erlang in ~p~n",           [element(2, file:get_cwd())]). c:cd("E:/WorkSpace/erlang"). io:format("Now in:~p~n", [element(2, file:get_cwd())]). 原书上说的是直接放在erlagn的安装目录就可以了,但是可能是erlang一直伴随着升级而书不可能跟着升级得那么快的缘故,现在把这么个文件放在形如:“D:\Dev\erl5.10.1”这样的安装目录下已经不起作用了。 真正的解决方法是放在安装目录下的/usr/文件夹下,形如:“D:\Dev\erl5.10.1\usr” 至于Windows下无法让你创建形如.erlang这样的文件的问题,直接找个Editplus之类的第三方编辑器然后用另存为的方式就可以了。

在CentOS上安装和启动Erlang

首先保证自己的系统中起码有GCC和GCC-C++吧 yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel 然后到这里去下载最新的源码包吧: http://www.erlang.org/download.html 解包编译安装: wget http://www.erlang.org/download/otp_src_R16B.tar.gz tar -xvf otp_src_R16B.tar.gz cd otp_src_R16B ./configure --prefix=/usr/local/erlang --enable-hipe --enable-threads --enable-smp-support --enable-kernel-poll make && make install 拷贝可执行文件到 /user/bin/ cd /usr/bin/ ln -s /usr/local/erlang/lib/erlang/bin/erl erl ln -s /usr/local/erlang/lib/erlang/bin/erlc erlc 这就完结了.. 启动的时候使用 erl +K true 这样就会打开核心的epoll模式了,否则会大幅度降低性能 没有打开epoll模式时: Erlang R16B (erts-5.10.1) [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] Eshell V5.10.1  (abort with ^G) 打开epoll之后: Erlang R16B (erts-5.10.1) [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:true] Eshell V5.10.1  (abort with ^G) 简单的方法是直接修改~/.bashrc 添加一行: alias erl='erl +K true'

Ternado,同步与异步

图片
总所周知,Ternado是一个非阻塞的Web服务器,很多人因为它的高效性,因为它的短小精悍而选择使用它。同样的理由,我们也选择了使用它。但是在用了它快一年后的今天,我才发现我根本就没有使用到它真正的异步特性。 首先,什么是阻塞?什么是非阻塞?以下两张图就应该能够解释一切了: 阻塞(同步)模型 非阻塞(异步)模型 两个模型从图形上理解起来都很容易。一个是顺序执行,另外一个则是打乱顺序执行。 理论上讲,非阻塞的模型并不一定绝对拥有最佳的效率,但是它在外部调用频繁、涉及到多处IO请求的状况下,它理论上拥有更高的执行效率,因为它在同步处于等待状态下的时间段内它也依然在尽力的压榨着CPU的运算能力。而异步模型最大的问题就是频繁的在多个进程(线程)中调度过程中的CPU消耗。 那么按照Ternado中给出的示例代码的执行结果是什么? 你会惊讶的发现,它官网给出的所有代码执行出来的结果都是同步的。也就是说你根本无法真正的启用它的异步特性。 import time import tornado.ioloop import tornado.web class MainHandler(tornado.web.RequestHandler): def get(self): self.write("Hello, world") class BlockHandler(tornado.web.RequestHandler): def get(self): time.sleep(10) self.write("Final Over") application = tornado.web.Application([ (r"/", MainHandler), (r"/test/", BlockHandler), ]) if __name__ == "__main__": application.listen(8888) tornado.ioloop.IOLoop.instance().start() 做一个简单的试验,运行这个程序,

Python中为什么要用is None来代替== None?

一直以来,我对于Pycharm提示我让我用is None来替代 == None这个判断表达式表示不是很理解。 直到我看到了《Python3程序开发指南》中的一句话: “身份比较的一个好处是速度非常快, 这是因为,并不必须对进行比较的对象本身进行检查,is操作符只需要对对对象所在的内存地址进行比较——同样的地址存储的是同样的对象。” 因为None是一个特殊的内置的空对象,所以所有的为None的对象都是指向的同一个内存地址的。所以用is None的速度也应该超过== None。 简单的试验一下: __author__ = 'Siglud' import time def testIsNone(): now = time.time() a = None i = 0 while i < 100000: if a is None: i += 1 return time.time() - now def testEqualNone(): now = time.time() a = None i = 0 while i < 100000: if a == None: i += 1 return time.time() - now if __name__ == '__main__': totalTime_isNone = 0 totalTime_equalNone = 0 for i in range(10): useTime = testIsNone() print 'TYPE:UseIS TestNum: %s, Time consumed: %s' % (i, useTime) totalTime_isNone += testIsNone() for i in range(10): useTime = testEqualNone() print 'TYPE:UseEqual TestNum: %s, Tim

柴门文:恋爱的法则36

(一)绝对异性缘规则——被同性排斥的,受异性喜欢 大多数人都想有异性缘。 就算是已经结婚了,或有了条件很好的恋人,却还欲无止境地想要“有更多更多的异性为我着迷”。 所以,我这个法则会向大家公开让你绝对迷死异性的秘诀,要是你按法则做了仍不受异性欢迎,我从此断笔(我手劲大,到时三支笔绑在一起断给你看)。 总之,肯定从明天开始,就会有异性为你着迷,迷得不行。我都想着几乎要把这个法则拿去申请专利了。 (越受同性排斥的家伙,越得异性喜欢) 对有异性缘的男性,男人们的评论多半是:“那个光会耍嘴皮子的家伙,怎么女人就愿意被他骗呢?” 而对有异性缘的女性,女人们会恶言以对:“哼,什么呀,那么轻佻”。 也就是说,嘴巴甜的男性和举止轻佻的女性,最有异性缘。 为什么?那是因为:女人喜欢陶醉在男人的甜言蜜语里,男人喜欢让他碰的女人! 我认识的有异性缘男人,就是特别老实和会说。 “象你这样的女性,我还是头一回遇见”。 “我再忙,只要你叫,我从地球的那头也马上赶过来”。 “有你做我的恋人,我要骄傲的走遍全世界”。 那些对普通的男人来说打死也说不出口的话,他们就一边看着女人的眼睛,一边脸不红气不喘的说了出来。这,就是让女人们着迷的男人。 听了这话的女人,虽然心里想着“什么呀,就嘴上说说”,可心里高兴着呢。脑子里虽然想着“这个轻浮的男人”,可身体最深处却是喜悦万分。女人就是这样。明知道他对其他女人也会说同样的话,可是她对自己解释说:他只有对我才是真心这么说的哦。女人就会这样想的。 大多数日本男人都觉得“就算我不说,她也懂的吧”,甜言蜜语是怎么也说不出口。害羞和自尊兼有吧。但那样,是没有异性缘的。 肉麻的表白爱的女人是会被讨厌的,男人会觉得这个女人危险而抽身而去。所以,男人自己也在犹豫要不要对女人说爱。但是,女人绝对不会觉得对她说话肉麻的男人是危险人物。相反,还有点飘飘然呢。这就是男人和女人的心理机能不同。男人讨厌的东西,女人未必也讨厌。 继续说说轻佻女的话题吧。 一般来说,男人都喜欢摸女人;而女人讨厌男人碰她,除了非常喜欢的男人以外,既不想被人碰,也不想碰人。电车里的色鬼几乎百分百都是男人这个事实,也证明了这一点。男人对从没见过的陌生女子,都会有摸的欲望。 听说,夜总会的规矩是:女招待把手放到男客的膝盖上。