2010-12
12

轻碰老骨头之后

By xrspook @ 22:26:14 归类于: 烂日记

和台式收录机的连线接口已经没得救,本打算简单地开电脑机箱做个跳线把音频前置了,好方便我直接插耳塞,但就是这么个简单操作,我之前也试过的简单操作却足足耗费了不下2小时。为何?首先,翻出主板说明书,要把我这块板的音频前置只需把插口的5、6及9、10的跳线去掉,这可是轻而易举的事哦。把机箱封好,开机,怎么前端插口怎么没声音呢?于是不得不又翻出说明书看,同时也上网搜原因,未果。

也罢,这台机也有5年了,前端插口长期不用现在歇菜也很正常,我继续用后端的好了。打开机箱,把跳线放回去,再封起来,以为一切都完了。谁知,耳机正确插上却仍旧没声音,不得不再次把机箱打开。然后戴着耳机开机,令人惊讶的是开机的时候是有声音的,但那个开机音乐播到一半就没了,然后开播放器半滴声音都不再有过。怀疑是插口接触不良的问题。换了个更短的耳塞试验,果然!是耳机和主机后端的音频插口接触不良了,囧!拿着个耳机插口很偶然地往蓝色的音频输入口插(音频输出理论上是绿的,MIC是红的),却居然也能有声音,然后我意识到其实这块主板的集成声卡端口应该是智能匹配的,所以也就能解释为什么插错口都有声音,为什么我把当作功放的收录机连线插上后声卡管理软件能显示“有源扬声器”的图标。幸好,耳机插口不好使了,买了不到2年的收录机连线还好使。哎~~~ 便宜没好货,大学店铺里的低档货已经好毁了我好几双耳塞,这次又差点要了我声卡端口的命。

于是,收录机从我桌子上的最远端转移至最近端,显示器也换了个角度,桌子上的东西都来了个乾坤大挪移。一切都该结束了吧,还没完!桌子东西交换位置的时候把电线插头从插座里拔了出来,但插回去的时候发现显示器的那个插口不行了,没电,于是不得不又千辛万苦地从小洞里抽出一直在用的3头插座,换上大学里用的标准5头电脑插座。

就这样,一切才算了结了。之前收录机是连转换线、延长线再连电脑的,杂音较大,但现在少了一条延长线,感觉清静多了。

结论,老电器千万别动它们,一动就会出状况,折腾死人。这也就不难理解为什么新电脑搬来搬去没问题,但老骨头即便轻微的震动也会神经病了。

2010-12
9

持续改进

By xrspook @ 21:24:59 归类于: 烂日记

wp3.0.2升级感觉才一周,wp3.0.3又来了,又是安全问题,不过这个3.0.3只涉及远程发布的安全问题,所以只需更新很少一部分文件(就4个文件)就可以了。

重新启用了tweet.im,感觉我实在miss客户端,我太miss那些能随便t的日子,太miss那些从t上接收的信息。推而广之,我越发miss那些和妈到处吃的日子,更加miss那些可以随便晚睡不用担心身体出状况的青春。死不可怕,半死不活才最折磨人。每时每刻都在想怎么和别人斗牛的日子不好过。

今天早上很成功,7点半扦样的准时出发,7点45告诉我第一个样品到了,8点整,其余3个都送了过来,于是,非常神速地8点20之前搞定了所有,包括收拾东西和搞卫生。今天最后一个样品还卡砻谷机呢,不过幸好卡机之前已经积攒到足够多的糙米进行下一步操作,所以,卡机就卡机呗,大不了拧开几个螺丝找个吸尘器给它两下。感觉那个砻谷机比我手掌心愈合不久的新皮还敏感,每天总得卡那么一次或以上。国人设计的机器就不能“聪明”一点?非常想知道日本的实验砻谷机是怎样的,非常肯定的是质量一定比我们好,不会经常卡机,即便会卡机,打开机盖也会比我们的人性化。昨天下午换了个砻谷机的皮带,足足得拧开不下10个螺丝,而且还必须用到扳手。几周前,手指就是开砻谷机盖的时候被划到的,现在我再也不会赤手空拳去对付那麻烦的东西,必须找个螺丝刀去撬!

砻谷机经常卡机,碾米机出来的米断腰特多,整精米率不堪设想。这些国产货已经到达了一种让人非常厌恶的地步了。真不知道那些老是稻谷检验的人是怎么活过来的。除了认命就什么都不能干了?

很多很多东西都需要改进,就看你有没有持续上进的心的。

2010-11
26

再谈php正则提取图片地址

By xrspook @ 21:46:54 归类于: 烂日记

前天写了小谈php正则提取图片地址,但其实,提取src=里面的图片地址还不足够,因为不能保证那个地址一定是绝对地址,完全的地址,如果那是相对的呢?如果地址诸如:

albums/Candids/thumb_P1050338.jpg
/content/media/touts/5271608/5271654/15320982

那该如何是好?

有时在这些地址前面需要加http://example1.com/,有些甚至要加http://example1.com/example2/…/于是,要写出出一种法则符合所有要求,简直是天方夜谭。只能见机行事对症下药。有时,需要从前面动刀,有时需要从后面砍断。

今天,我惊讶地知道了一个道理,原来http://example.com/http://example.com//////是一样的!

http://img3.douban.com/pics/nav/lg_main_a6.png

http://img3.douban.com////pics////nav///lg_main_a6.png

最终你都能到达

于是,对于一开始提到的两个相对地址如果要强行加入某前缀恢复成绝对地址的话,也不管前面有没有“/”,只管加一个“/”就好,“有杀错,没放过”嘛,多一个显示仍会正常,但少一个“/”,嘿嘿,你就别想成功了。开始的时候我还没意识到这种东西,复制了一大段代码,把一样的东西硬生生弄两份,一份加“./.”,一份不加。我这个火星来的,浪费时间了。

放出2个地址,公测一下网页获取图片的情况:

针对任何网页,需要登入的除外:http://xyark.serw5.com/img.php
针对Coppermine Photo Gallery系统:http://xyark.serw5.com/g.php(如果你认为弹出原图的js页面也需要的话,我只好囧你了)

普页是个对抓取任何图片的尝试,系统专页是为了展示什么叫做具体情况具体分析。试过的童鞋会知道,普页对某些使用Coppermine Photo Gallery系统的网站是行不通的,原因何在?就是那个前缀搞的鬼!但系统专页就能很好地避开了这个问题。

如果大家在测试时发现任何bug,欢迎留言告知。请低调测试,谢谢合作。

注:以上话题纯粹出于就正则谈正则,光技术谈技术,不可作非正当用途。若非正当使用而引发任何杯具、餐具本人概不负责。

2010-11
24

小谈php正则提取图片地址

By xrspook @ 22:34:32 归类于: 烂日记

迷上了正则,不断尝试着新花招,首先感谢TNA的非完全输出RSS,然后再次感谢SH的强迫性学习。没有TNA,我不会去看正则,更不知道世界上有种这么牛的表达式;不是SH的死活说他不懂不知道,我也不会硬着头皮去琢磨,去改进。达到同一个目的,正则的表达方式可以不唯一,没有做不到,只有你没想到。可以这样说吧,正则就是玩设定规律,我大爱这种东西。没有比设定规律筛选东西更让我兴奋、感到awesome的了。

分享一下在php环境下使用正则提取图片地址的一些小心得:

图片网址规范的html代码无非就是

<img style="囧1" title="囧2" src="囧3" alt="囧4" width="囧5" height="囧6" />

囧1和囧2是非必需的,若要通过XHTML认证囧4、囧5、囧6必不可少,囧3是核心内容,当然就不能少了。

就正则谈正则的话,我写出的最短匹配是

(?<=img.+?src=”).*?(?=”)

不过,这条在php里不行,会出现:

Warning: preg_match_all() [function.preg-match-all]: Compilation failed: lookbehind assertion is not fixed length at offset *** in ***

纠结了很久,都不行,原因何在呢?试了很多次,终于发现问题在(?<=img.+?src=”)这个零宽断言里,在php中,零宽断言里不支持类似“*”、“+”这些无限次的东西,于是报错了,把“.+?”改为定长就好。不过,要“img”和“src=”之间定长基本上是不可能的。通常,图片地址的img和src只会相隔一个很简单的空格,但不排除某些情况在src之前,img后有alt、titlte等东西。

所以

(?<=img.src=”).*?(?=”)

(?<=img\ssrc=”).*?(?=”)

可能可以,但不保证100%没问题。

你也许会问,单纯

(?<=src=”).*?(?=”)

不行吗?通常情况,可以,但,搜索过页面的盆友应该知道,除了图片地址用src开头以外,javascript地址也用src开头!而且,太多神通广大的不可预知因素隐含其中,于是这个貌似很简短完美的写法就行不通了。

你又或许会问,聪明简短的不行,我把图片的后缀列出来,总该可以了吧,如

(?<=src=”).*?\.(jpg|jpeg|gif|png|bmp|JPG|JPEG|GIF|PNG|BMP)

的确,这个写法实在是很老实,不过,你见过没有后缀的图片?wwe.com有很多这种例子呢

RAW http://us.wwe.com/content/media/images/Headers/15559182
SmackDown http://us.wwe.com/content/media/images/Headers/15854138
NXT http://us.wwe.com/content/media/images/Headers/15929136
Superstars http://us.wwe.com/content/media/images/Headers/15815850

上面的网址都是图片,但都没有传统后缀,你老实也没用,还是不能获取到它们。

怎么办呢?还可以这样

<img(.*?)src=”(.*?)(?=”)

和上面的表达式不同,这次的结果中array[0]的内容不是我们想要的,我们要的图片地址在array[2]里。为什么呢?因为我们用了2个(.*?),每个“()”的东西会自动存在一个组里,而array[0]代表结果的汇总,array[1]包含了img和src里的所有东西,array[2]才轮到我们想要的图片地址。这种匹配方法,既能匹配有传统后缀的图片,也能匹配一些无后缀的图片文件,同时又不会杀错其它src=文件。个人感觉还是不错的,呵呵。当然了,如果你还有更好的建议,请马上留言,全球人民都会感谢你!

你到底要什么样的图片,是固定格式还是其它?得具体情况具体分析呢。

我的建议是:

如果你要的图片地址的格式是img空格src=的,请使用:(?<=img.src=”).*?(?=”),数组唯一,你懂的。

否则,请使用<img(.*?)src=”(.*?)(?=”),记得留意有用内容所在的数组位置哦!

2010-11
19

略懂正则后

By xrspook @ 23:59:55 归类于: 烂日记

花费了好几个小时学习正则表达式(Regular Expression),简称regex。非常非常强大的一个程序员利器,在此,再次感谢SH童鞋的强迫性学习。在多种程序语言里正则都通用,用简单的符号却能组合出任何你需要的结果。看着那堆“\/#$&*^()_+|{}<>?=.”等实在会把人弄疯掉,再加上26个英文字母的大小写组合,宇宙就能编出来!这让我想起了大学时期老师教的文献检索,在说到英文数据库的时候就是这般*来?去的,但和相比,英文数据库的搜索方法只是个非常非常的简化版的正则,小儿科而已。

简单看了几个正则教程,最终觉得还是要自己打开个正则测试工具(如Windows下的Regex Tester)实操。

经过还不算太辛苦的挣扎,对TNA而言,我要提取的信息可以用以下正则实现:

(?<=href=”).*\.jpg.php

说明:“(?<=囧)”,定位在囧后;“href=””,一个字符串,也就相当于囧;“.*”,别以为“.”是连接符“*”是任意字符,恰恰相反,“.”代表除换行符以外的任意字符,“*”代表前面的东西,也就是除换行符以外的任意字符可以重复零次或更多次;“\.”,其实就代表了“.”,在正则里,“.”必须用“\”转义;“jpg.php”我的原意是一个字符串,但在正则里,看来“.”也不会被看作“.”,而代表一个除换行符以外的任意字符,也无伤大雅,毕竟我希望的“.”也在正则“.”包含的范围内。

除了用上面的“(?<=href=”).*\.jpg.php”以外,还能把正则改写为:

(?<=href=”).*\.jpg\.php /*把“.”全部正确转义,不打擦边球*/
(?<=href=”).*\b.jpg.php\b /*把“.jpg.php”看作一个单词,很自然地把其中的“.”一般字符化了,“\b”用于匹配单词的开始或结束*/

具体在YARK的正则是这般写的

preg_match_all('/(?< =href=").*\.jpg.php/', $data, $log);
囧囧囧囧
for($i=0;$i<count($log[0]);$i++) 
{  	
	<?php echo '囧'.$log[0][$i].'囧' ?>			
}

说明:由于我的正则表达式里只有一个未知数,也就是“.*”折腾出来的内容,所以,正则结果在新建的$log将是一个二维数组,具体内容将在[0][囧]里显示。如果,正则里有多个未知数,未知数就会分别出现在[0][囧0]、[1][囧1]、[2][囧2]等等里面了。得打一套“组合拳”才能把它们拼凑在一起。

正则搞定了,YARK的TNA瓶颈当然就没问题了啦!

******************* YARK专栏 *******************
2010-11-19
update
* 改进TNA功能,不再依赖页面提供的rss而是自编正则表达式,提取页面信息,再分析出图片地址
bug
* 暂无新发现
plan
* 留个门,对付任何规则资源(正则是强大的,就看你怎么用了)
******************* YARK专栏 *******************

自觉通过自学又提升一个矮矮的层次了。

© 2004 - 2024 我的天 | Theme by xrspook | Power by WordPress