有朋友报名东方时尚,理论课选的网上教学,需要看完所有的视频才能算科目一培训完成,在很早之前就有朋友因为这个找过我。当时东方时尚的授课系统还很简单。。每次看完一个视频都会发起一个固定的请求,表示当前视频看完了。所以之前的做法很简单,把那个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.cnrnApiKey: 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.
阅读全文

最近开始捡起C语音来看,《c语言实用基础》,一边看一边做例子学习。然后发现,每次写完一个例子后,都要写几个字符,去编译并执行一下,然后就想看看能不能利用vim的map映射,把这种常规性的命令绑定到一个快捷键上去,查了一些资料后,果真是可以实现的。 先摆出来怎么用的。 打开~/.vimrc文件,并在最后以后之后粘贴上一下代码: “映射命令行下的c编译并执行 cmap !gcc % && ./a.out 然后保存并关闭。 再重新打开一个c文件,写好C代码后,进入命令行模式,按下ctrl+r,然后就可以直接编译并执行该c文件了。 下边再解释一下为什么这么写。 cmap,指的是命令行下的映射,这种映射,在vim其它模式下是不生效的,这样也可以避免冲突。用法就是cmap {lhs} {rhs} , 在映射命令作用的模式中把键系列 {lhs} 映射为 {rhs}。并且映射后的 {rhs} 也被进行映射扫描。这个特性可以用来进行映射的嵌套和递归。顺带再说一下其它几种map的用法,nmap表示普通模式下,vmap表示可视模式下,imap表示插入模式下,默认的map,是包括普通模式和可视模式的。 表示ctrl+r键 %在vim命令行模式里表示当前文件 表示模拟回车按下事件 如果你明白原理了,自己去写一些对自己有帮助的映射脚本吧。 参考文章: http://vimcdoc.sourceforge.net/doc/map.html http://www.ibm.com/developerworks/cn/linux/l-vim-script-1/ http://haoxiang.org/2011/09/vim-modes-and-mappin/
阅读全文

编写Shell 脚本时,如果变量的值是一个路径的话,我们可以轻易的解析路径path信息,就像php中的pathinfo一样,来获取当中的路径(dirname) 或档名(basename). 变量 结果 说明 ${path} /usr/local/bin/emacs 原本值 ${path#//} local/bin/emacs 去除第一个资料夹 ${path##//} emacs 只取档名(basname) ${path%/*} /usr/local/bin 只取路径(dirname) ${path:15} emacs 取第15个字元后的所有字元 ${path:10:4} /bin 取第10个字元后的4 个字元 最后两个用法和Java 的subString 相同。
阅读全文

作者的图片

DigDeeply

Technology Stack: PHP/Openresty/GoLang, and so on…

Web Develop Eneigneer

Beijing China