分类 "其它" 的存档.

安装chrome 出现 0x80004002错误的解决办法

家里电脑重装了,想安装chrome,网络不好啊,用online的方式安装,代理都不好设置。
所以最好下载个offline的安装包。
http://www.google.com/chrome/eula.html?system=true&standalone=1
然后开始安装。
安装中遇到了0x80004002的错误提示,使用管理员权限打开又提示 已经有另一个chrome安装中。

解决办法就是 重启电脑,按F8进入安全模式,进行安装,即可安装成功。

chrome-0x80004002

如何在Fiddler script中捕获请求结果并针对返回内容发起一个新请求

有朋友报名东方时尚,理论课选的网上教学,需要看完所有的视频才能算科目一培训完成,在很早之前就有朋友因为这个找过我。当时东方时尚的授课系统还很简单。。每次看完一个视频都会发起一个固定的请求,表示当前视频看完了。所以之前的做法很简单,把那个url在新标签页打开,每开一个视频,刷一下页面,就算看完一段视频了。。所以不用什么复杂操作,很容易就能完成。
不过现在,东方时尚的系统明显升级了,已经不是那么简单的逻辑了,每次请求一个新视频,都会有一个/start的请求,把视频id返回,后边每次心跳和看完视频的请求,都是以该id为参数。不能再像以前那么简单的玩耍了。。本来是想写个chrome的扩展来拦截请求做处理的,突然想到Fiddler的script就可以做这些,而且语法是.NET的,会比较熟:)。
做法也很简单,就是在OnBeforeResponse阶段,获取到body,正则匹配到需要的id,然后再发起一个请求:),多说无益,直接show code.

static function OnBeforeResponse(oSession: Session) {
        
        if (m_Hide304s && oSession.responseCode == 304) {
            oSession["ui-hide"] = "true";
        }
        oSession.utilDecodeResponse();

        var oBody = oSession.GetResponseBodyAsString (); 
        var regex = /{"data":\{"streamId":(\d+)},"/i ;
        if (oBody.match(regex)) {
            var matches = oBody.match(regex);
            //MessageBox.Show(matches );
            var s = "POST http://api.dfsstv.cn/api/v1/Stream/End?streamId=" + matches[1] + " HTTP/1.1\r\nHost: api.dfsstv.cn\r\nConnection: keep-alive\r\nContent-Length: 0\r\nPragma: no-cache\r\nCache-Control: no-cache\r\nDeviceId: 1456634190000\r\nOrigin: http://www.dfsstv.cn\r\nApiKey: 59d71859d3dd491a8ad6accbe7262d94\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36\r\nAuthToken: a54a874bddfb449cbbf4ed698b4e0fc4\r\nAccept: */*\r\nReferer: http://www.dfsstv.cn/?u=11107668&p=06260\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: zh-CN,zh;q=0.8\r\n\r\n";
            try{ 
                FiddlerObject.utilIssueRequest(s); 
            } 
            catch(e){ 
                MessageBox.Show("send failed" + e.ToString()); 
            } 
        }
}

regex正则匹配内容。使用 utilIssueRequest 发起请求。
当然这里的做法简单了些,因为东方时尚的请求header里还使用了authToken认证,每次登录的token都不一样,这里直接写死了。

到这里就简单多了,每次打开视频就相当于播放完了,直接刷新就可以看下一集了。
下边图片就是效果,每次视频一start,就产生一个end的请求:)

fiddler-BeforeOnResponse-send-new-request

fiddler-BeforeOnResponse-send-new-request

当然也没这么简单。。它会把token放在localSotrage里,每次开始播放的时候会清掉,应该是等快结束的时候才放进去。。所以导致每次刷新页面都会需要重新登录,所以又要麻烦点,在浏览器的开发者工具里,每次刷新页面前,都set一下localStorage,就可以拉。。

视频是可以快速跳过了,但是每一章视频看完后都会有一个测验,要把三十道题目都回答正确才行。一看请求,每次请求问题的时候,答案也放在返回结果里了。。所以,很容易想到,答题完成其实也就是一个固定的请求而已。。硬着头皮答完了一次题,抓到了完成题目的请求,是一个 Practice/Finish?lessonId=1 这样的请求,每次只要改lessionId的值就好了, 很简单吧。。:)

只有ie能上网,其他浏览器和软件都不能

只有ie能上网,其他浏览器和软件都不能的解决方法:
以管理员方式打开cmd.exe,运行如下命令:
netsh winsock reset catalog
netsh int ip reset reset.log hit

让被阻止了的svchost.exe进程恢复正常,以解决Windows 7 通信端口初始化失败的问题  

netsh winsock reset catalog

netsh winsock reset catalog

 

Read more…

vim 复制粘贴替换

先用v选中单词,然后按y复制。
再找到要替换的单词开头,按v,再按e,选中单词,这时候按p粘贴,就可以用上边复制的单词替换掉当前选中的单词了。

Supervisor的安装与使用入门

Supervisor是一个进程监控程序。

满足的需求是:我现在有一个进程需要每时每刻不断的跑,但是这个进程又有可能由于各种原因有可能中断。当进程中断的时候我希望能自动重新启动它,此时,我就需要使用到了Supervisor.

先弄懂两个命令:

supervisord : supervisor的服务器端部分,启动supervisor就是运行这个命令

supervisorctl:启动supervisor的命令行窗口。

需求:./open_search 这个进程是运行go的一个服务。我们要求这个服务能在意外停止后自动重启。

安装(Centos):

yum install python-setuptools

easy_install supervisor

测试是否安装成功

echo_supervisord_conf

Read more…

你知道是什么职位么?英文缩写=ui,ue,fe,rd,op,db,pm

ui 是什么职位? ui 就是用户设计

ue 是什么职位? ue用户体验

fe 是什么职位? fe前端研发

rd是什么职位? rd程序员

op是什么职位? op运维

db是什么职位? db数据库

pm是什么职位? pm产品经理

bd是什么职位? bd商务拓展

中文分词和搜索引擎

中文分词的算法

中文分词技术的研究,已经有几十年的历史了,在20世纪80年代,我国就有人开始研究如何用计算机来自动分词。如何让机器去识别语言中最小的语意单位,不是一件很容易的事情。

如何进行分词?对于程序员来说,最容易想到的办法是,用一个大词典,把所有的词都存入词典中,扫描输入的文本,查找所有可能的词,然后看哪个词可以做为输出。例如:
输入文本: 我是学生
词: 我/是/学生

其实这样做了以后,可以解决60%的问题。总结起来,分词的算法分为:
1. 基于字符串匹配的分词方法
2. 基于理解的分词方法
3. 基于统计的分词方法

Read more…

i386和i686有什么区别?各自的具体定义是什么?

i386和i686

现在所有的intel 32位体系(包括AMD等兼容CPU)都叫i386体系,包括P4。、i686仍然属于i386体系,不过对CPU(相对于386)的特性作了指令优化。GNU/Linux分为alpha、PowerPC、Sun等各个不同版本,所有从Intel386-P4都用i386版本,但i386版本中有几个内核(i486,i486,i586,i686),安装时安装程序检测到你得CPU级别后,自动为你安装相应内核。

与cpu的指令集有关.I代表与intel的指令集兼容,后面的数字是指cpu的分类。
因为intel的cpu经过这么久的发展,不断的更新,产生从8086,8088,80286,80386,80486,奔腾(586),奔腾二代(686),奔腾三代(686)…cpu的每次换代,都增加了一些新的指令集,但都向后兼容(就是说后面的CPU都能完全使用前面的CPU的指令集)。而软件包为了能发挥好cpu的全部性能,就加入cpu相对应能指行的指令。因此就产生了各种不同的软件包。所以,i686的软件包能在奔腾二代以上的cpu上执行,但基本不能在此之先的cpu如486上执行。而i386的软件包既可在i386的电脑上执行,也可在后面所有的cpu上执行(如奔三、奔四,但不能发挥cpu的最佳性能。)

i686指的是Pentium Pro以及此后的Intel IA32 CPU,也就是平常我们所说的P6系列处理器。

i386不用说了,泛指80386以后的。

Read more…

什么是流处理器,流处理器有什么用?A卡与N卡流处理器数量比较

中关村卖场中,一位装机技术员侃侃而谈:“ NVIDIA最新的GTX295显卡核心只有2*240个流处理器, ATI的HD5970显卡核心却有3200个流处理器,你要最高性能的显卡,当然要选HD5970显卡。”
AMD-ATI显卡(以下简称A卡)和NVIDIA(以下简称N卡)在流处理器数量上的巨大差异给许多读者造成巨大的困惑。其实,这个情况和不同厂商、相当于CPU的二级缓存数量存在差异情况类似,简单来说就是“不同架构的GPU,流处理器的作用不尽相同,不能直接比较数量。”深入的解释请看下文说明:
早在微软推出的DirectX 7当中就曾经提出过一个概念——T&L(中文名称是坐标转换和光源),它可以看做是流处理器的鼻祖,随着显卡核心芯片技术的发展,在DirectX 8中。由微软首次提出了Shader的概念。并且将Shader分为Vertex Shader(顶点着色器,又称VS单元)和Pixel Shader(像素着色器,又称PS单元)。

Read more…

Firefox必添加的几个扩展组件

1、Firebug

调试利器

2、FireGestures

强大的鼠标手势

3、HTML Regex Data Extractor

正则表达式匹配,抓站神马的最合适了。

4、Tamer Data

截取请求,抓站、改POST参数~~

5、NetVideoHunter

直接下载视频,如优酷、土豆、乐视等。。Youtobe也可以,可惜国内无用。。

Read more…